From 1be04037cdba95396eef7728134043ba3ee6fbf4 Mon Sep 17 00:00:00 2001
From: Jef <jef@targetspot.com>
Date: Tue, 24 Sep 2024 19:20:53 +0200
Subject: [PATCH] remove it

---
 Src/Plugins/DSP/sc_serv3/ADTSHeader.cpp       |   225 -
 Src/Plugins/DSP/sc_serv3/ADTSHeader.h         |    62 -
 Src/Plugins/DSP/sc_serv3/FLV.cpp              |   322 -
 Src/Plugins/DSP/sc_serv3/FLV.h                |    23 -
 Src/Plugins/DSP/sc_serv3/GNUmakefile          |   237 -
 Src/Plugins/DSP/sc_serv3/GeoIP/AUTHORS        |     1 -
 Src/Plugins/DSP/sc_serv3/GeoIP/COPYING        |   509 -
 Src/Plugins/DSP/sc_serv3/GeoIP/ChangeLog      |   628 -
 Src/Plugins/DSP/sc_serv3/GeoIP/GeoIP.spec.in  |    80 -
 .../DSP/sc_serv3/GeoIP/GeoIPWinDLL.patch      |   183 -
 Src/Plugins/DSP/sc_serv3/GeoIP/INSTALL        |   365 -
 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.am    |    11 -
 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.in    |   707 -
 .../DSP/sc_serv3/GeoIP/Makefile.netware       |   301 -
 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.vc    |    84 -
 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.win32 |   232 -
 Src/Plugins/DSP/sc_serv3/GeoIP/NEWS           |     0
 Src/Plugins/DSP/sc_serv3/GeoIP/README         |   208 -
 Src/Plugins/DSP/sc_serv3/GeoIP/README.MinGW   |    13 -
 Src/Plugins/DSP/sc_serv3/GeoIP/README.OSX     |    35 -
 .../DSP/sc_serv3/GeoIP/READMEwin32.txt        |    44 -
 .../DSP/sc_serv3/GeoIP/READMEwin32static.txt  |    17 -
 Src/Plugins/DSP/sc_serv3/GeoIP/TODO           |    54 -
 Src/Plugins/DSP/sc_serv3/GeoIP/aclocal.m4     |  8917 --------
 .../DSP/sc_serv3/GeoIP/apps/Makefile.am       |    26 -
 .../DSP/sc_serv3/GeoIP/apps/Makefile.in       |   544 -
 .../DSP/sc_serv3/GeoIP/apps/Makefile.vc       |    25 -
 .../DSP/sc_serv3/GeoIP/apps/geoiplookup.c     |   401 -
 .../DSP/sc_serv3/GeoIP/apps/geoiplookup6.c    |   255 -
 .../GeoIP/apps/geoipupdate-pureperl.pl        |   260 -
 .../DSP/sc_serv3/GeoIP/apps/geoipupdate.c     |   283 -
 Src/Plugins/DSP/sc_serv3/GeoIP/bootstrap      |     8 -
 .../sc_serv3/GeoIP/conf/GeoIP.conf.default    |    19 -
 .../DSP/sc_serv3/GeoIP/conf/Makefile.am       |    16 -
 .../DSP/sc_serv3/GeoIP/conf/Makefile.in       |   414 -
 Src/Plugins/DSP/sc_serv3/GeoIP/config.guess   |  1533 --
 Src/Plugins/DSP/sc_serv3/GeoIP/config.sub     |  1693 --
 Src/Plugins/DSP/sc_serv3/GeoIP/configure      | 13633 -----------
 Src/Plugins/DSP/sc_serv3/GeoIP/configure.in   |    50 -
 Src/Plugins/DSP/sc_serv3/GeoIP/data/GeoIP.dat |   Bin 1348660 -> 0 bytes
 .../DSP/sc_serv3/GeoIP/data/Makefile.am       |    19 -
 .../DSP/sc_serv3/GeoIP/data/Makefile.in       |   437 -
 Src/Plugins/DSP/sc_serv3/GeoIP/depcomp        |   630 -
 Src/Plugins/DSP/sc_serv3/GeoIP/geoip.ico      |   Bin 3062 -> 0 bytes
 Src/Plugins/DSP/sc_serv3/GeoIP/get_ver.awk    |    14 -
 Src/Plugins/DSP/sc_serv3/GeoIP/install-sh     |   520 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.c       |  1965 --
 .../DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.h       |   315 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.c   |   393 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.h   |    78 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.c |   975 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.h |    69 -
 .../sc_serv3/GeoIP/libGeoIP/GeoIP_internal.h  |    18 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/Makefile.am   |    27 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/Makefile.in   |   567 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/Makefile.vc   |    34 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/global.h      |    32 -
 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.c |   326 -
 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.h |    40 -
 .../DSP/sc_serv3/GeoIP/libGeoIP/regionName.c  | 12780 -----------
 .../DSP/sc_serv3/GeoIP/libGeoIP/timeZone.c    |  2077 --
 .../DSP/sc_serv3/GeoIP/libGeoIP/types.h       |   140 -
 Src/Plugins/DSP/sc_serv3/GeoIP/ltmain.sh      |  8413 -------
 .../DSP/sc_serv3/GeoIP/man/Makefile.am        |    29 -
 .../DSP/sc_serv3/GeoIP/man/Makefile.in        |   455 -
 .../DSP/sc_serv3/GeoIP/man/geoiplookup.1.in   |    37 -
 .../DSP/sc_serv3/GeoIP/man/geoiplookup6.1.in  |    42 -
 .../DSP/sc_serv3/GeoIP/man/geoipupdate.1.in   |    68 -
 Src/Plugins/DSP/sc_serv3/GeoIP/missing        |   376 -
 .../DSP/sc_serv3/GeoIP/test/Makefile.am       |    37 -
 .../DSP/sc_serv3/GeoIP/test/Makefile.in       |   657 -
 .../DSP/sc_serv3/GeoIP/test/Makefile.vc       |    29 -
 .../DSP/sc_serv3/GeoIP/test/benchmark.c       |   135 -
 .../DSP/sc_serv3/GeoIP/test/city_test.txt     |     2 -
 .../DSP/sc_serv3/GeoIP/test/country_test.txt  |    69 -
 .../DSP/sc_serv3/GeoIP/test/country_test2.txt |    29 -
 .../sc_serv3/GeoIP/test/country_test_name.txt |     1 -
 .../DSP/sc_serv3/GeoIP/test/region_test.txt   |    24 -
 .../sc_serv3/GeoIP/test/test-geoip-asnum.c    |    63 -
 .../DSP/sc_serv3/GeoIP/test/test-geoip-city.c |    83 -
 .../DSP/sc_serv3/GeoIP/test/test-geoip-isp.c  |    65 -
 .../sc_serv3/GeoIP/test/test-geoip-netspeed.c |    59 -
 .../DSP/sc_serv3/GeoIP/test/test-geoip-org.c  |    71 -
 .../sc_serv3/GeoIP/test/test-geoip-region.c   |   114 -
 .../DSP/sc_serv3/GeoIP/test/test-geoip.c      |   113 -
 Src/Plugins/DSP/sc_serv3/ID3miniParsers.cpp   |   827 -
 Src/Plugins/DSP/sc_serv3/ID3miniParsers.h     |   184 -
 Src/Plugins/DSP/sc_serv3/MP3Header.cpp        |   216 -
 Src/Plugins/DSP/sc_serv3/MP3Header.h          |    34 -
 Src/Plugins/DSP/sc_serv3/MSG00001.bin         |   Bin 32 -> 0 bytes
 Src/Plugins/DSP/sc_serv3/adminList.cpp        |   303 -
 Src/Plugins/DSP/sc_serv3/adminList.h          |    41 -
 Src/Plugins/DSP/sc_serv3/agentList.cpp        |   294 -
 Src/Plugins/DSP/sc_serv3/agentList.h          |    44 -
 Src/Plugins/DSP/sc_serv3/amf.cpp              |   759 -
 Src/Plugins/DSP/sc_serv3/amf.h                |   156 -
 Src/Plugins/DSP/sc_serv3/aolxml/GNUmakefile   |     2 -
 .../DSP/sc_serv3/aolxml/_expat/CMake.README   |    42 -
 .../DSP/sc_serv3/aolxml/_expat/CMakeLists.txt |   111 -
 .../DSP/sc_serv3/aolxml/_expat/COPYING        |    22 -
 .../DSP/sc_serv3/aolxml/_expat/Changes        |   205 -
 .../aolxml/_expat/ConfigureChecks.cmake       |    44 -
 .../DSP/sc_serv3/aolxml/_expat/MANIFEST       |   141 -
 .../DSP/sc_serv3/aolxml/_expat/Makefile.in    |   201 -
 Src/Plugins/DSP/sc_serv3/aolxml/_expat/README |   139 -
 .../DSP/sc_serv3/aolxml/_expat/aclocal.m4     |  8460 -------
 .../DSP/sc_serv3/aolxml/_expat/configure      | 18632 ----------------
 .../DSP/sc_serv3/aolxml/_expat/configure.in   |   155 -
 .../aolxml/_expat/conftools/PrintPath         |   116 -
 .../_expat/conftools/ac_c_bigendian_cross.m4  |    81 -
 .../aolxml/_expat/conftools/config.guess      |  1517 --
 .../aolxml/_expat/conftools/config.sub        |  1760 --
 .../sc_serv3/aolxml/_expat/conftools/expat.m4 |    43 -
 .../aolxml/_expat/conftools/get-version.sh    |    46 -
 .../aolxml/_expat/conftools/install-sh        |   520 -
 .../aolxml/_expat/conftools/ltmain.sh         |  9642 --------
 .../aolxml/_expat/conftools/mkinstalldirs     |    40 -
 .../DSP/sc_serv3/aolxml/_expat/doc/expat.png  |   Bin 1027 -> 0 bytes
 .../sc_serv3/aolxml/_expat/doc/reference.html |  2390 --
 .../DSP/sc_serv3/aolxml/_expat/doc/style.css  |   101 -
 .../aolxml/_expat/doc/valid-xhtml10.png       |   Bin 2368 -> 0 bytes
 .../DSP/sc_serv3/aolxml/_expat/doc/xmlwf.1    |   251 -
 .../DSP/sc_serv3/aolxml/_expat/doc/xmlwf.sgml |   468 -
 .../DSP/sc_serv3/aolxml/_expat/expat.dsw      |   110 -
 .../DSP/sc_serv3/aolxml/_expat/expat.pc.in    |    11 -
 .../aolxml/_expat/expat_config.h.cmake        |    91 -
 .../sc_serv3/aolxml/_expat/expat_config.h.in  |   102 -
 .../sc_serv3/aolxml/_expat/lib/Makefile.MPW   |   206 -
 .../sc_serv3/aolxml/_expat/lib/amigaconfig.h  |    32 -
 .../DSP/sc_serv3/aolxml/_expat/lib/ascii.h    |    92 -
 .../DSP/sc_serv3/aolxml/_expat/lib/asciitab.h |    36 -
 .../DSP/sc_serv3/aolxml/_expat/lib/expat.dsp  |   185 -
 .../DSP/sc_serv3/aolxml/_expat/lib/expat.h    |  1047 -
 .../aolxml/_expat/lib/expat_external.h        |   115 -
 .../aolxml/_expat/lib/expat_static.dsp        |   162 -
 .../aolxml/_expat/lib/expat_static.sln        |    26 -
 .../aolxml/_expat/lib/expat_static.vcproj     |   549 -
 .../DSP/sc_serv3/aolxml/_expat/lib/expatw.dsp |   185 -
 .../aolxml/_expat/lib/expatw_static.dsp       |   162 -
 .../sc_serv3/aolxml/_expat/lib/iasciitab.h    |    37 -
 .../DSP/sc_serv3/aolxml/_expat/lib/internal.h |    73 -
 .../sc_serv3/aolxml/_expat/lib/latin1tab.h    |    36 -
 .../sc_serv3/aolxml/_expat/lib/libexpat.def   |    73 -
 .../sc_serv3/aolxml/_expat/lib/libexpatw.def  |    73 -
 .../sc_serv3/aolxml/_expat/lib/macconfig.h    |    53 -
 .../DSP/sc_serv3/aolxml/_expat/lib/nametab.h  |   150 -
 .../DSP/sc_serv3/aolxml/_expat/lib/utf8tab.h  |    37 -
 .../sc_serv3/aolxml/_expat/lib/winconfig.h    |    30 -
 .../DSP/sc_serv3/aolxml/_expat/lib/xmlparse.c |  6403 ------
 .../DSP/sc_serv3/aolxml/_expat/lib/xmlrole.c  |  1336 --
 .../DSP/sc_serv3/aolxml/_expat/lib/xmlrole.h  |   114 -
 .../DSP/sc_serv3/aolxml/_expat/lib/xmltok.c   |  1651 --
 .../DSP/sc_serv3/aolxml/_expat/lib/xmltok.h   |   316 -
 .../sc_serv3/aolxml/_expat/lib/xmltok_impl.c  |  1783 --
 .../sc_serv3/aolxml/_expat/lib/xmltok_impl.h  |    46 -
 .../sc_serv3/aolxml/_expat/lib/xmltok_ns.c    |   115 -
 .../sc_serv3/aolxml/_expat/xmlwf/codepage.c   |    68 -
 .../sc_serv3/aolxml/_expat/xmlwf/codepage.h   |     6 -
 .../DSP/sc_serv3/aolxml/_expat/xmlwf/ct.c     |   147 -
 .../sc_serv3/aolxml/_expat/xmlwf/filemap.h    |    17 -
 .../aolxml/_expat/xmlwf/readfilemap.c         |   100 -
 .../aolxml/_expat/xmlwf/unixfilemap.c         |    65 -
 .../aolxml/_expat/xmlwf/win32filemap.c        |    96 -
 .../sc_serv3/aolxml/_expat/xmlwf/xmlfile.c    |   244 -
 .../sc_serv3/aolxml/_expat/xmlwf/xmlfile.h    |    20 -
 .../sc_serv3/aolxml/_expat/xmlwf/xmlmime.c    |   163 -
 .../sc_serv3/aolxml/_expat/xmlwf/xmlmime.h    |    19 -
 .../sc_serv3/aolxml/_expat/xmlwf/xmltchar.h   |    36 -
 .../DSP/sc_serv3/aolxml/_expat/xmlwf/xmlurl.h |    13 -
 .../DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.c  |   861 -
 .../sc_serv3/aolxml/_expat/xmlwf/xmlwf.dsp    |   139 -
 .../aolxml/_expat/xmlwf/xmlwin32url.cxx       |   395 -
 Src/Plugins/DSP/sc_serv3/aolxml/aolxml.cpp    |   428 -
 Src/Plugins/DSP/sc_serv3/aolxml/aolxml.h      |   372 -
 .../DSP/sc_serv3/aolxml/aolxmlutils.cpp       |    61 -
 .../DSP/sc_serv3/aolxml/unix_build_expat      |     5 -
 Src/Plugins/DSP/sc_serv3/auth.cpp             |   434 -
 Src/Plugins/DSP/sc_serv3/auth.h               |    69 -
 Src/Plugins/DSP/sc_serv3/banList.cpp          |   431 -
 Src/Plugins/DSP/sc_serv3/banList.h            |    51 -
 Src/Plugins/DSP/sc_serv3/bandwidth.cpp        |   117 -
 Src/Plugins/DSP/sc_serv3/bandwidth.h          |    54 -
 Src/Plugins/DSP/sc_serv3/base64.cpp           |    70 -
 Src/Plugins/DSP/sc_serv3/base64.h             |    54 -
 Src/Plugins/DSP/sc_serv3/cache.cpp            |   104 -
 Src/Plugins/DSP/sc_serv3/cache.h              |    52 -
 Src/Plugins/DSP/sc_serv3/config.cpp           |  2867 ---
 Src/Plugins/DSP/sc_serv3/config.h             |   710 -
 Src/Plugins/DSP/sc_serv3/cpucount.cpp         |    70 -
 Src/Plugins/DSP/sc_serv3/cpucount.h           |     8 -
 .../DSP/sc_serv3/deps/win32/include/sched.h   |   286 -
 Src/Plugins/DSP/sc_serv3/filenameMetadata.cpp |   681 -
 Src/Plugins/DSP/sc_serv3/filenameMetadata.h   |    25 -
 Src/Plugins/DSP/sc_serv3/global.cpp           |  1177 -
 Src/Plugins/DSP/sc_serv3/global.h             |   218 -
 Src/Plugins/DSP/sc_serv3/icy.ico              |   Bin 40585 -> 0 bytes
 Src/Plugins/DSP/sc_serv3/libcurl_building.txt |    43 -
 .../sc_serv3/libs/Aol_XML/ARMv6/libexpat.a    |   Bin 476516 -> 0 bytes
 .../sc_serv3/libs/Aol_XML/ARMv7/libexpat.a    |   Bin 512028 -> 0 bytes
 .../DSP/sc_serv3/libs/Aol_XML/BSD/libexpat.a  |   Bin 396228 -> 0 bytes
 .../sc_serv3/libs/Aol_XML/Darwin/libexpat.a   |   Bin 513008 -> 0 bytes
 .../libs/Aol_XML/Linux_i686/libexpat.a        |   Bin 512592 -> 0 bytes
 .../libs/Aol_XML/Linux_x86_64/libexpat.a      |   Bin 861176 -> 0 bytes
 Src/Plugins/DSP/sc_serv3/main.cpp             |  1213 -
 Src/Plugins/DSP/sc_serv3/manifest.xml         |    19 -
 Src/Plugins/DSP/sc_serv3/manifest64.xml       |    19 -
 Src/Plugins/DSP/sc_serv3/messagefile.h        |    45 -
 Src/Plugins/DSP/sc_serv3/messagefile.mc       |     6 -
 Src/Plugins/DSP/sc_serv3/metadata.cpp         |   459 -
 Src/Plugins/DSP/sc_serv3/metadata.h           |   151 -
 Src/Plugins/DSP/sc_serv3/metrics.cpp          |  1249 --
 Src/Plugins/DSP/sc_serv3/metrics.h            |   101 -
 .../DSP/sc_serv3/nmrCommon/file/fileUtils.cpp |   232 -
 .../DSP/sc_serv3/nmrCommon/file/fileUtils.h   |   117 -
 Src/Plugins/DSP/sc_serv3/nmrCommon/intTypes.h |   117 -
 Src/Plugins/DSP/sc_serv3/nmrCommon/macros.h   |    61 -
 .../DSP/sc_serv3/nmrCommon/memory/refPtr.h    |   181 -
 .../nmrCommon/services/baseOptions.cpp        |    76 -
 .../sc_serv3/nmrCommon/services/baseOptions.h |    32 -
 .../sc_serv3/nmrCommon/services/logger.cpp    |   966 -
 .../DSP/sc_serv3/nmrCommon/services/logger.h  |   461 -
 .../nmrCommon/services/messagefile.mc         |     7 -
 .../nmrCommon/services/serviceMain.cpp        |   876 -
 .../sc_serv3/nmrCommon/services/serviceMain.h |    72 -
 .../nmrCommon/services/stdServiceImpl.cpp     |   164 -
 .../nmrCommon/services/stdServiceImpl.h       |   322 -
 .../nmrCommon/services/test/GNUmakefile       |    78 -
 .../sc_serv3/nmrCommon/services/test/main.cpp |   169 -
 .../nmrCommon/services/test/messagefile.mc    |     7 -
 .../nmrCommon/services/test/resource.h        |    14 -
 .../sc_serv3/nmrCommon/services/test/test.rc  |   101 -
 .../sc_serv3/nmrCommon/services/test/test.sln |    21 -
 .../nmrCommon/services/test/test.vcproj       |   202 -
 .../nmrCommon/stacktrace/StackTrace.cpp       |   868 -
 .../nmrCommon/stacktrace/StackTrace.h         |   135 -
 .../DSP/sc_serv3/nmrCommon/stl/functors.h     |    24 -
 Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stlx.h |   324 -
 .../DSP/sc_serv3/nmrCommon/stl/stringUtils.h  |   383 -
 .../DSP/sc_serv3/nmrCommon/threading/MT_stl.h |   110 -
 .../nmrCommon/threading/messageThread.h       |   184 -
 .../sc_serv3/nmrCommon/threading/thread.cpp   |   375 -
 .../DSP/sc_serv3/nmrCommon/threading/thread.h |   575 -
 .../sc_serv3/nmrCommon/unicode/uniFile.cpp    |    88 -
 .../DSP/sc_serv3/nmrCommon/unicode/uniFile.h  |    29 -
 .../sc_serv3/nmrCommon/unicode/uniString.cpp  |   786 -
 .../sc_serv3/nmrCommon/unicode/uniString.h    |   354 -
 .../DSP/sc_serv3/nmrCommon/win32/rezFuncs.cpp |    37 -
 .../DSP/sc_serv3/nmrCommon/win32/rezFuncs.h   |     9 -
 .../sc_serv3/protocol_FlashPolicyServer.cpp   |    44 -
 .../DSP/sc_serv3/protocol_FlashPolicyServer.h |    33 -
 .../DSP/sc_serv3/protocol_HTTPClient.cpp      |   305 -
 .../DSP/sc_serv3/protocol_HTTPClient.h        |    38 -
 .../DSP/sc_serv3/protocol_HTTPSource.cpp      |   462 -
 .../DSP/sc_serv3/protocol_HTTPSource.h        |    55 -
 .../DSP/sc_serv3/protocol_HTTPStyle.cpp       |  4808 ----
 Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.h |   152 -
 .../DSP/sc_serv3/protocol_RTMPClient.cpp      |  1681 --
 .../DSP/sc_serv3/protocol_RTMPClient.h        |   170 -
 .../DSP/sc_serv3/protocol_admincgi.cpp        |  6390 ------
 Src/Plugins/DSP/sc_serv3/protocol_admincgi.h  |   115 -
 Src/Plugins/DSP/sc_serv3/protocol_backup.cpp  |   538 -
 Src/Plugins/DSP/sc_serv3/protocol_backup.h    |    73 -
 .../DSP/sc_serv3/protocol_flvClient.cpp       |   275 -
 Src/Plugins/DSP/sc_serv3/protocol_flvClient.h |    46 -
 .../DSP/sc_serv3/protocol_m4aClient.cpp       |   674 -
 Src/Plugins/DSP/sc_serv3/protocol_m4aClient.h |    42 -
 Src/Plugins/DSP/sc_serv3/protocol_relay.cpp   |   544 -
 Src/Plugins/DSP/sc_serv3/protocol_relay.h     |    73 -
 .../DSP/sc_serv3/protocol_relay_shoutcast.cpp |   455 -
 .../DSP/sc_serv3/protocol_relay_shoutcast.h   |    57 -
 .../DSP/sc_serv3/protocol_relay_uvox.cpp      |   693 -
 .../DSP/sc_serv3/protocol_relay_uvox.h        |   108 -
 .../sc_serv3/protocol_shoutcast1Client.cpp    |   417 -
 .../DSP/sc_serv3/protocol_shoutcast1Client.h  |    42 -
 .../sc_serv3/protocol_shoutcast2Client.cpp    |   568 -
 .../DSP/sc_serv3/protocol_shoutcast2Client.h  |    53 -
 .../DSP/sc_serv3/protocol_shoutcastClient.cpp |  1917 --
 .../DSP/sc_serv3/protocol_shoutcastClient.h   |   209 -
 .../DSP/sc_serv3/protocol_shoutcastSource.cpp |   439 -
 .../DSP/sc_serv3/protocol_shoutcastSource.h   |    58 -
 .../DSP/sc_serv3/protocol_uvox2Source.cpp     |  1010 -
 .../DSP/sc_serv3/protocol_uvox2Source.h       |   129 -
 Src/Plugins/DSP/sc_serv3/readme.txt           |    89 -
 Src/Plugins/DSP/sc_serv3/resource.h           |    16 -
 Src/Plugins/DSP/sc_serv3/ripList.cpp          |   391 -
 Src/Plugins/DSP/sc_serv3/ripList.h            |    46 -
 Src/Plugins/DSP/sc_serv3/sc_serv.rc           |   112 -
 Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj      |   393 -
 .../DSP/sc_serv3/sc_serv.vcxproj.filters      |   478 -
 Src/Plugins/DSP/sc_serv3/stats.cpp            |   862 -
 Src/Plugins/DSP/sc_serv3/stats.h              |   173 -
 Src/Plugins/DSP/sc_serv3/streamData.cpp       |  5666 -----
 Src/Plugins/DSP/sc_serv3/streamData.h         |   906 -
 Src/Plugins/DSP/sc_serv3/threadedRunner.cpp   |  1135 -
 Src/Plugins/DSP/sc_serv3/threadedRunner.h     |   428 -
 Src/Plugins/DSP/sc_serv3/updater.cpp          |   354 -
 Src/Plugins/DSP/sc_serv3/updater.h            |    58 -
 Src/Plugins/DSP/sc_serv3/uvox2Common.cpp      |   201 -
 Src/Plugins/DSP/sc_serv3/uvox2Common.h        |   116 -
 Src/Plugins/DSP/sc_serv3/versions.h           |    52 -
 Src/Plugins/DSP/sc_serv3/w3cLog.cpp           |   319 -
 Src/Plugins/DSP/sc_serv3/w3cLog.h             |    20 -
 Src/Plugins/DSP/sc_serv3/webClient.cpp        |   619 -
 Src/Plugins/DSP/sc_serv3/webClient.h          |   153 -
 Src/Plugins/DSP/sc_serv3/webNet/socketOps.cpp |   716 -
 Src/Plugins/DSP/sc_serv3/webNet/socketOps.h   |   182 -
 Src/Plugins/DSP/sc_serv3/webNet/urlUtils.cpp  |   240 -
 Src/Plugins/DSP/sc_serv3/webNet/urlUtils.h    |   196 -
 Src/Plugins/DSP/sc_serv3/yp2.cpp              |  1233 -
 Src/Plugins/DSP/sc_serv3/yp2.h                |   270 -
 310 files changed, 188961 deletions(-)
 delete mode 100644 Src/Plugins/DSP/sc_serv3/ADTSHeader.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/ADTSHeader.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/FLV.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/FLV.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GNUmakefile
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/AUTHORS
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/COPYING
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/ChangeLog
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/GeoIP.spec.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/GeoIPWinDLL.patch
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/INSTALL
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.am
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.netware
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.vc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.win32
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/NEWS
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/README
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/README.MinGW
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/README.OSX
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/READMEwin32.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/READMEwin32static.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/TODO
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/aclocal.m4
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.am
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.vc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoiplookup.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoiplookup6.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoipupdate-pureperl.pl
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoipupdate.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/bootstrap
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/conf/GeoIP.conf.default
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/conf/Makefile.am
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/conf/Makefile.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/config.guess
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/config.sub
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/configure
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/configure.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/data/GeoIP.dat
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/data/Makefile.am
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/data/Makefile.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/depcomp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/geoip.ico
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/get_ver.awk
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/install-sh
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP_internal.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.am
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.vc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/global.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/regionName.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/timeZone.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/types.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/ltmain.sh
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/man/Makefile.am
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/man/Makefile.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/man/geoiplookup.1.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/man/geoiplookup6.1.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/man/geoipupdate.1.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/missing
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.am
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.vc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/benchmark.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/city_test.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test2.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test_name.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/region_test.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-asnum.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-city.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-isp.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-netspeed.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-org.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-region.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/ID3miniParsers.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/ID3miniParsers.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/MP3Header.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/MP3Header.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/MSG00001.bin
 delete mode 100644 Src/Plugins/DSP/sc_serv3/adminList.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/adminList.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/agentList.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/agentList.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/amf.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/amf.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/GNUmakefile
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/CMake.README
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/CMakeLists.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/COPYING
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/Changes
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/ConfigureChecks.cmake
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/MANIFEST
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/Makefile.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/README
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/aclocal.m4
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/configure
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/configure.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/PrintPath
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/ac_c_bigendian_cross.m4
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/config.guess
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/config.sub
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/expat.m4
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/get-version.sh
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/install-sh
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/ltmain.sh
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/mkinstalldirs
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/expat.png
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/reference.html
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/style.css
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/valid-xhtml10.png
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/xmlwf.1
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/xmlwf.sgml
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat.dsw
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat.pc.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat_config.h.cmake
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat_config.h.in
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/Makefile.MPW
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/amigaconfig.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/ascii.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/asciitab.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat.dsp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_external.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.dsp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.sln
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.vcproj
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expatw.dsp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expatw_static.dsp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/iasciitab.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/internal.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/latin1tab.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/libexpat.def
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/libexpatw.def
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/macconfig.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/nametab.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/utf8tab.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/winconfig.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlparse.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlrole.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlrole.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_impl.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_impl.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_ns.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/codepage.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/codepage.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/ct.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/filemap.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/readfilemap.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/unixfilemap.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/win32filemap.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlfile.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlfile.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlmime.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlmime.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmltchar.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlurl.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.c
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.dsp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwin32url.cxx
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/aolxml.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/aolxml.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/aolxmlutils.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/aolxml/unix_build_expat
 delete mode 100644 Src/Plugins/DSP/sc_serv3/auth.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/auth.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/banList.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/banList.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/bandwidth.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/bandwidth.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/base64.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/base64.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/cache.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/cache.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/config.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/config.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/cpucount.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/cpucount.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/deps/win32/include/sched.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/filenameMetadata.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/filenameMetadata.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/global.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/global.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/icy.ico
 delete mode 100644 Src/Plugins/DSP/sc_serv3/libcurl_building.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/libs/Aol_XML/ARMv6/libexpat.a
 delete mode 100644 Src/Plugins/DSP/sc_serv3/libs/Aol_XML/ARMv7/libexpat.a
 delete mode 100644 Src/Plugins/DSP/sc_serv3/libs/Aol_XML/BSD/libexpat.a
 delete mode 100644 Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Darwin/libexpat.a
 delete mode 100644 Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Linux_i686/libexpat.a
 delete mode 100644 Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Linux_x86_64/libexpat.a
 delete mode 100644 Src/Plugins/DSP/sc_serv3/main.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/manifest.xml
 delete mode 100644 Src/Plugins/DSP/sc_serv3/manifest64.xml
 delete mode 100644 Src/Plugins/DSP/sc_serv3/messagefile.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/messagefile.mc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/metadata.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/metadata.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/metrics.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/metrics.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/file/fileUtils.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/file/fileUtils.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/intTypes.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/macros.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/memory/refPtr.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/baseOptions.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/baseOptions.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/logger.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/logger.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/messagefile.mc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/serviceMain.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/serviceMain.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/stdServiceImpl.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/stdServiceImpl.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/GNUmakefile
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/main.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/messagefile.mc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/resource.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.rc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.sln
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.vcproj
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/stacktrace/StackTrace.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/stacktrace/StackTrace.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/stl/functors.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stlx.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stringUtils.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/threading/MT_stl.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/threading/messageThread.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/threading/thread.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/threading/thread.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniFile.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniFile.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniString.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniString.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/win32/rezFuncs.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/nmrCommon/win32/rezFuncs.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_FlashPolicyServer.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_FlashPolicyServer.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_HTTPClient.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_HTTPClient.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_HTTPSource.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_HTTPSource.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_RTMPClient.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_RTMPClient.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_admincgi.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_admincgi.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_backup.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_backup.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_flvClient.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_flvClient.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_m4aClient.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_m4aClient.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_relay.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_relay.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_relay_shoutcast.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_relay_shoutcast.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_relay_uvox.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_relay_uvox.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_shoutcast1Client.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_shoutcast1Client.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_shoutcast2Client.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_shoutcast2Client.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_shoutcastClient.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_shoutcastClient.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_shoutcastSource.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_shoutcastSource.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_uvox2Source.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/protocol_uvox2Source.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/readme.txt
 delete mode 100644 Src/Plugins/DSP/sc_serv3/resource.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/ripList.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/ripList.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/sc_serv.rc
 delete mode 100644 Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj
 delete mode 100644 Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj.filters
 delete mode 100644 Src/Plugins/DSP/sc_serv3/stats.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/stats.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/streamData.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/streamData.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/threadedRunner.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/threadedRunner.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/updater.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/updater.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/uvox2Common.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/uvox2Common.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/versions.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/w3cLog.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/w3cLog.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/webClient.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/webClient.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/webNet/socketOps.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/webNet/socketOps.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/webNet/urlUtils.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/webNet/urlUtils.h
 delete mode 100644 Src/Plugins/DSP/sc_serv3/yp2.cpp
 delete mode 100644 Src/Plugins/DSP/sc_serv3/yp2.h

diff --git a/Src/Plugins/DSP/sc_serv3/ADTSHeader.cpp b/Src/Plugins/DSP/sc_serv3/ADTSHeader.cpp
deleted file mode 100644
index 36242e07..00000000
--- a/Src/Plugins/DSP/sc_serv3/ADTSHeader.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-#include "ADTSHeader.h"
-#include "nmrCommon/services/stdServiceImpl.h"
-
-
-enum
-{
-	ADTS_NOT_PROTECTED = 1,
-	ADTS_PROTECTED = 0,
-	ADTS_SYNC = 0xFFF,
-	ADTS_MAIN = 0x00,
-	ADTS_LC = 0x01,
-	ADTS_SSR = 0x10,
-	ADTS_LTP = 0x11
-};
-
-const int aac_adts_parse(const aac_adts_header_t header, const __uint8 *buffer)
-{
-	header->syncword = ((buffer[0] << 4) | (buffer[1] >> 4));
-
-	if (header->syncword != ADTS_SYNC)
-	{
-		return NErr_LostSynchronization;
-	}
-
-	header->id = ((buffer[1] >> 3) & 1);
-	header->layer = ((buffer[1] >> 1) & 3);
-	if (header->layer != 0)
-	{
-		return NErr_WrongFormat;
-	}
-
-	header->protection = ((buffer[1]) & 1);
-	header->profile = ((buffer[2] >> 6) & 3);
-	header->sample_rate_index = ((buffer[2] >> 2) & 0xF);
-	if (header->sample_rate_index == 15)
-	{
-		return NErr_UnsupportedFormat; // might actually be OK if we can separately signal the sample rate
-	}
-
-	if (header->sample_rate_index > 13)
-	{
-		return NErr_Reserved;
-	}
-
-	header->private_bit = ((buffer[2] >> 1) & 1);
-	header->channel_configuration = ((buffer[2] & 1) << 2) | ((buffer[3] >> 6) & 3);
-	header->original = ((buffer[3] >> 5) & 1);
-	header->home = ((buffer[3] >> 4) & 1);
-
-	header->frame_length = ((buffer[3] & 3) << 11) | (buffer[4]<<3) | ((buffer[5] >> 5) & 7);
-	header->buffer_fullness = ((buffer[5] & 0x1F) << 6) | (buffer[6] >> 2);
-	header->num_data_blocks = (buffer[6] & 3);
-	return NErr_Success;
-}
-
-static const unsigned int aac_sratetab[] =
-{
-	96000,
-	88200,
-	64000,
-	48000,
-	44100,
-	32000,
-	24000,
-	22050,
-	16000,
-	12000,
-	11025,
-	8000,
-	7350,
-};
-#if 0
-const int aac_adts_match(const aac_adts_header_t header1, const aac_adts_header_t header2)
-{
-	if (header1->id != header2->id)
-	{
-		return NErr_False;
-	}
-
-	if (header1->profile != header2->profile)
-	{
-		return NErr_False;
-	}
-
-	if (header1->sample_rate_index != header2->sample_rate_index)
-	{
-		return NErr_False;
-	}
-
-	if (header1->channel_configuration != header2->channel_configuration)
-	{
-		return NErr_False;
-	}
-
-	return NErr_True;
-}
-#endif
-const int aac_adts_get_channel_count(const aac_adts_header_t header)
-{
-	switch (header->channel_configuration)
-	{
-		case 7:
-		{
-			return 8;
-		}
-		default:
-		{
-			return header->channel_configuration;
-		}
-	}
-}
-
-const __uint16 getADTSFrameInfo(const char *hdr, unsigned int *samplerate, __uint8 *asc_header)
-{
-	ADTSHeader header = {0};
-	if (aac_adts_parse(&header, (const __uint8 *)hdr) == NErr_Success)
-	{
-		*samplerate = aac_sratetab[header.sample_rate_index];
-
-		// we need this when generating flv frames
-		// as it creates the AudioSpecificConfig
-		// from the existing ADTS header details
-		// (is like a mini-ADTS header to create)
-		if (asc_header)
-		{
-			asc_header[0] |= (((header.profile + 1) & 31) << 3) + (header.sample_rate_index >> 1);
-			asc_header[1] |= ((header.sample_rate_index & 0x1) << 7) + (header.channel_configuration << 3);
-		}
-
-		//*bitrate = (int)(((header.frame_length / 1/*frames*/) * (aac_sratetab[header.sample_rate_index] / 1024.0)) + 0.5) * 8;
-		return (__uint16)header.frame_length;
-	}
-	return 0;
-}
-
-const char *AAC_FrameInfo::getVersionName() const
-{
-    if (m_version)
-        return "v2";
-    return "v4";
-}
-
-const char *AAC_FrameInfo::getAOT() const
-{
-    switch (m_aot)
-    {
-        case 2:     return "LC";
-        case 5:     return "SBR";
-        case 29:    return "PS";
-        default:    return "unknown profile";
-    }
-}
-
-
-int getAACFrameLength (const unsigned char *p, unsigned int len)
-{
-    if (len < 6)
-        return -1;
-    return ((p[3] & 0x3) << 11) + (p[4] << 3) + ((p[5] & 0xE0) >> 5);
-}
-
-int getAACFrameInfo (const unsigned char *p, unsigned int len, AAC_FrameInfo &info)
-{
-    if (len < 6)
-        return -1;
-    if ((((long)p[0])<<4 | (p[1]>>4)) != 0xfff)
-        return -1;
-
-    int layer = ((p[1] >> 1) & 3);
-    if (layer != 0)
-        return -1;
-    int sample_rate_index = ((p[2] >> 2) & 0xF);
-
-    if (sample_rate_index > 13)
-        return -1;
-    int samplerate = aac_sratetab [sample_rate_index];
-    if (info.m_samplerate)
-    {
-        if (info.m_samplerate != samplerate)
-            return -1;
-    }
-    else
-        info.m_samplerate = samplerate;
-    info.m_blocks = (p[6] & 0x3) + 1;
-    info.m_pattern = (((unsigned long)(p[0])<<24) | (p[1]<<16) | (p[2]<<8) | p[0]) & info.m_mask;
-
-    return getAACFrameLength (p, len);
-}
-
-
-int AAC_FrameInfo::verifyFrame (const unsigned char *buf, unsigned int len)
-{
-    if (len > 6)
-    {
-        unsigned long v = (unsigned long)(buf[0])<<24 | (buf[1]<<16) | (buf[2]<<8) | buf[0];
-
-        if ((v & m_mask) == m_pattern)
-        {
-            m_blocks = (buf[6] & 0x3) + 1;
-            m_version = (buf[1] >> 3) & 1; // 1 mpeg2, 0 mpeg4
-            m_aot = ((buf[2] >> 6) & 3) + 1;
-            return getAACFrameLength (buf, len);
-        }
-        // DLOG ("AAC failed sync, retry..");
-        return -1;
-    }
-    return 0;
-}
-
-
-AAC_FrameInfo::AAC_FrameInfo (unsigned long value) : parserInfo (0xFFFEFDC0, value)
-{
-    m_description = "AAC";
-    m_blocks = 0;
-    m_aot = 0;
-}
-
-AAC_FrameInfo::AAC_FrameInfo(const unsigned char *p, unsigned int len) : parserInfo()
-{
-    m_mask = 0xFFFEFDC0;
-    m_description = "AAC";
-    m_blocks = 0;
-    getAACFrameInfo (p, len, *this);
-}
-
diff --git a/Src/Plugins/DSP/sc_serv3/ADTSHeader.h b/Src/Plugins/DSP/sc_serv3/ADTSHeader.h
deleted file mode 100644
index ef849f87..00000000
--- a/Src/Plugins/DSP/sc_serv3/ADTSHeader.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#pragma once
-#ifndef _ADTS_HEADER_H
-#define _ADTS_HEADER_H
-
-#include "nmrCommon/intTypes.h"
-#include "global.h"
-#include "uvox2Common.h"
-
-
-typedef struct ADTSHeader
-{
-	unsigned int syncword;
-	unsigned int layer;
-	unsigned int id;
-	unsigned int protection;
-	unsigned int profile;
-	unsigned int sample_rate_index;
-	unsigned int private_bit;
-	unsigned int channel_configuration;
-	unsigned int original;
-	unsigned int home;
-	int frame_length;
-	unsigned int buffer_fullness;
-	unsigned int num_data_blocks;	
-} ADTSHeader, *aac_adts_header_t;
-
-enum
-{
-	NErr_Success = 0,
-	NErr_True = 0,
-	NErr_False = 8,			// returned from a bool-like function to indicate "false" as opposed to "i had an error while figuring it out"
-	NErr_UnsupportedFormat = 13,
-	NErr_LostSynchronization = 17,
-	NErr_WrongFormat = 24,		// data was understood but is indicating a different format than expected.  e.g. an layer 2 header being encountered by a layer 3 parser
-	NErr_Reserved = 25			// typically returned when a parser encounters data with a reserved flag set to true
-};
-
-struct AAC_FrameInfo : public parserInfo
-{
-    int m_blocks;
-    int m_aot;
-
-    int verifyFrame (const unsigned char *buf, unsigned int len);
-    int getUvoxType() { return AAC_LC_DATA; }
-    const char *getVersionName() const;
-    const char *getAOT() const;
-
-    AAC_FrameInfo (unsigned long value = 0);
-    AAC_FrameInfo (const unsigned char *p, unsigned int len);
-};
-
-int getAACFrameInfo (const unsigned char *hdr, unsigned int len, AAC_FrameInfo &info);
-
-/* must be 7 bytes */
-const int aac_adts_parse(const aac_adts_header_t header, const __uint8 *buffer);
-const int aac_adts_get_channel_count(const aac_adts_header_t header);
-#if 0
-const int aac_adts_match(const aac_adts_header_t header1, const aac_adts_header_t header2);
-#endif
-const __uint16 getADTSFrameInfo(const char *hdr, unsigned int *samplerate, __uint8 *asc_header = 0);
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/FLV.cpp b/Src/Plugins/DSP/sc_serv3/FLV.cpp
deleted file mode 100644
index b42063b3..00000000
--- a/Src/Plugins/DSP/sc_serv3/FLV.cpp
+++ /dev/null
@@ -1,322 +0,0 @@
-#include "FLV.h"
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include "streamData.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-/*
-** This is a bit messy but it'll generate
-** FLV tags for the purpose of streaming.
-**
-** Where possible values are hard-coded
-** so we just re-insert into the output.
-*/
-
-#define FLV_SIGNATURE       {'F', 'L', 'V'}
-#define FLV_VERSION         ((__uint8)0x1)
-
-#define FLV_FLAG_VIDEO      ((__uint8)0x1)
-#define FLV_FLAG_AUDIO      ((__uint8)0x4)
-
-#define FLV_HDR_SIZE		((__uint32)0x9000000)	// pre-converted to big-endian
-
-// ensure we've got the structures correctly packed
-#pragma pack(push, 1)
-typedef struct {
-	__uint8		signature[3];	// FLV_SIGNATURE
-    __uint8		version;		// FLV_VERSION
-    __uint8		flags;			// FLV_FLAG_*
-	__uint32	header_size;	// FLV_HDR_SIZE
-	__uint32	prev_size;		// 0 (this is the size of the previous tag including
-								//    its header in bytes i.e. 11 + the 'data_size'
-								//    of the previous tag). we include this in the
-								//    header so that we're always outputting a valid
-								//    start point before the tag structure is added.
-} flv_header;
-#pragma pack(pop)
-
-#pragma pack(push, 1)
-typedef struct {
-	__uint8		type;			// for first packet set to AMF Metadata ???
-	__uint8		data_size[3];	// size of packet data only (24)
-	__uint8		ts_lower[3];	// for first packet set to NULL (24)
-	__uint8		ts_upper;		// extension to create a __uint32 value
-	__uint8		stream_id[3];	// for first stream of same type set to NULL (24)
-	/* data comes after this*/
-} flv_tag;
-#pragma pack(pop)
-
-/*
-__uint32	prev_size;		// for first packet set to NULL otherwise this is the
-							// size of the previous tag including its header in B
-							// and is 11 plus the 'data_size' of the previous tag.
-*/
-
-// these are pre-encoded for the correct endianess
-// though for metadata usage, we convert them back
-#define FLV_MP3_AUDIO		((__uint8)0x20)		// (((__uint8)0x2) << 4)
-#define FLV_AAC_AUDIO		((__uint8)0xA0)		// (((__uint8)0xA) << 4)
-
-#define FLV_SAMPLE_RATE_5	((__uint8)0x0)		// (((__uint8)0x0) << 2)
-#define FLV_SAMPLE_RATE_11	((__uint8)0x4)		// (((__uint8)0x1) << 2)
-#define FLV_SAMPLE_RATE_22	((__uint8)0x8)		// (((__uint8)0x2) << 2)
-#define FLV_SAMPLE_RATE_44	((__uint8)0xC)		// (((__uint8)0x3) << 2)
-
-#define FLV_SAMPLE_SIZE_8	((__uint8)0x0)		// (((__uint8)0x0) << 1)
-#define FLV_SAMPLE_SIZE_16	((__uint8)0x2)		// (((__uint8)0x1) << 1)
-
-#define FLV_MONO_AUDIO		((__uint8)0x0)
-#define FLV_STEREO_AUDIO	((__uint8)0x1)
-
-
-// reads 24 bits from data, converts from big endian, and returns as a 32bit int
-inline __uint32 Read24(__uint8* data)
-{
-	__uint32 returnVal = 0; 
-	__uint8* swap = (__uint8*)&returnVal;
-
-	swap[0] = data[2];
-	swap[1] = data[1];
-	swap[2] = data[0];
-
-	return returnVal;
-}
-
-int dataString(vector<__uint8> &out_data, const char *buf)
-{
-	int amt = (int)strlen(buf);
-	__uint8 bytes[2] = {(__uint8)((amt >> 8) & 0xff), (__uint8)((amt >> 0) & 0xff)};
-	// length of the data string
-	out_data.insert(out_data.end(), (const __uint8*)&bytes, (const __uint8*)&bytes + sizeof(bytes));
-	// body of the data string
-	out_data.insert(out_data.end(), (const __uint8*)buf, (const __uint8*)buf + amt);
-	return amt + 2;
-}
-
-int scriptDataType(vector<__uint8> &out_data, const __uint8 type)
-{
-	out_data.insert(out_data.end(), (const __uint8*)&type, ((const __uint8*)&type) + sizeof(type));
-	return 1;
-}
-
-int scriptDataString(vector<__uint8> &out_data, const char *name, const char *value)
-{
-	return dataString(out_data, name) + scriptDataType(out_data, 0x2) + dataString(out_data, value);
-}
-
-int scriptDataBool(vector<__uint8> &out_data, const char *name, const bool value)
-{
-	return dataString(out_data, name) + scriptDataType(out_data, 0x1) + scriptDataType(out_data, !!value);
-}
-
-int scriptDataDouble(vector<__uint8> &out_data, const char *name, const double value)
-{
-	int amt = dataString(out_data, name) + scriptDataType(out_data, 0x0);
-
-	union
-	{
-		__uint8 dc[8];
-		double dd;
-	} d;
-	d.dd = value;
-
-	unsigned char b[8];
-	b[0] = d.dc[7];
-	b[1] = d.dc[6];
-	b[2] = d.dc[5];
-	b[3] = d.dc[4];
-	b[4] = d.dc[3];
-	b[5] = d.dc[2];
-	b[6] = d.dc[1];
-	b[7] = d.dc[0];
-
-	out_data.insert(out_data.end(), (const __uint8*)b, (const __uint8*)b + sizeof(b));
-
-	return amt + 8;
-}
-
-void createMetadataTag(vector<__uint8> &out_data, const bool mp3,
-					   const bool mono, const int bitrate,
-					   const __uint8 flv_sr, const streamData::streamID_t sid)
-{
-	__uint8 m[] = {'\x12', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'};
-	out_data.insert(out_data.end(), (const __uint8*)m, (const __uint8*)m + sizeof(m));
-
-	__uint32 s = scriptDataType(out_data, 0x2) +
-				 dataString(out_data, "onMetadata") +
-				 // start of the script array data blocks
-				 scriptDataType(out_data, 0x8);
-
-	__uint8 data_size[4] = {'\x00', '\x00', '\x00', '\x0C'/* number of items in the array */};
-	out_data.insert(out_data.end(), (const __uint8*)&data_size, ((const __uint8*)&data_size) + sizeof(data_size));
-	s += 4;
-
-	streamData::streamInfo info;
-	streamData::extraInfo extra;
-	streamData::getStreamInfo(sid, info, extra);
-
-	s += scriptDataString(out_data, "name", (!info.m_streamName.empty() ? info.m_streamName.hideAsString().c_str() : ""));
-	// TODO - as we're not updating as we go at the moment, this will be set to the station name so there's something set
-	s += scriptDataString(out_data, "title", (!info.m_streamName.empty() ? info.m_streamName.hideAsString().c_str() : ""));
-	//s += scriptDataString(out_data, "title", (!info.m_currentSong.empty() ? info.m_currentSong.hideAsString().c_str() : ""));
-	s += scriptDataString(out_data, "genre", (!info.m_streamGenre[0].empty() ? info.m_streamGenre[0].hideAsString().c_str() : ""));
-
-	//s += scriptDataBool(out_data, "hasMetadata", false/* TODO */);
-	s += scriptDataBool(out_data, "hasAudio", true);
-	s += scriptDataBool(out_data, "hasVideo", false);
-	s += scriptDataBool(out_data, "hasKeyframes", false);
-
-	s += scriptDataBool(out_data, "canSeekToEnd", false);
-
-	s += scriptDataBool(out_data, "stereo", !mono);
-
-	s += scriptDataDouble(out_data, "audiodatarate", (double)bitrate);
-	s += scriptDataDouble(out_data, "audiocodecid", (double)((mp3 ? FLV_MP3_AUDIO : FLV_AAC_AUDIO) >> 4));
-	s += scriptDataDouble(out_data, "audiosamplerate", (double)(flv_sr >> 2));
-	s += scriptDataDouble(out_data, "audiosamplesize", (double)(FLV_SAMPLE_SIZE_16 >> 1));
-
-	unsigned char end[] = {'\x00', '\x00', '\x09'};
-	out_data.insert(out_data.end(), (const __uint8*)end, (const __uint8*)end + sizeof(end));
-	s += 3;
-
-	// now we know how much we've got
-	// we can update the tags' length
-	__uint32 s2 = s + 11;
-	out_data[16] = (s & 0xFF);
-	s >>= 8;
-	out_data[15] = (s & 0xFF);
-	s >>= 8;
-	out_data[14] = (s & 0xFF);
-
-	// we set this at the end so if we terminate the stream
-	// then there's more chance of it validating correctly.
-	data_size[3] = (s2 & 0xFF);
-	s2 >>= 8;
-	data_size[2] = (s2 & 0xFF);
-	s2 >>= 8;
-	data_size[1] = (s2 & 0xFF);
-	s2 >>= 8;
-	data_size[0] = (s2 & 0xFF);
-
-	out_data.insert(out_data.end(), (const __uint8*)&data_size, ((const __uint8*)&data_size) + sizeof(data_size));
-}
-
-void createFLVTag(vector<__uint8> &out_data, const char *buf,
-				  const int amt, int &timestamp, const bool mp3,
-				  const bool mono, const unsigned int samplerate,
-				  const int bitrate, const __uint8 *asc_header,
-				  const streamData::streamID_t sid)
-{
-	if (amt > 0)
-	{
-		// we need to generate this early so we've got
-		// it for being provided in createMetadataTag
-		__uint8 flv_sr = FLV_SAMPLE_RATE_44;
-		if (mp3)
-		{
-			// how do we handle the formats not allowed...?
-			switch (samplerate)
-			{
-				case 22050:
-				{
-					flv_sr = FLV_SAMPLE_RATE_22;
-					break;
-				}
-				case 11025:
-				{
-					flv_sr = FLV_SAMPLE_RATE_11;
-					break;
-				}
-			}
-		}
-
-		const bool first = (timestamp == 0);
-		if (first)
-		{
-			const flv_header hdr = {FLV_SIGNATURE, FLV_VERSION, FLV_FLAG_AUDIO, FLV_HDR_SIZE, 0};
-			out_data.insert(out_data.end(), (const __uint8*)&hdr, ((const __uint8*)&hdr) + sizeof(flv_header));
-
-			createMetadataTag(out_data, mp3, mono, bitrate, flv_sr, sid);
-
-			if (!mp3)
-			{
-				// we send a simple frame at this point just so for AAC the decoder
-				// is able to be setup correctly as needed else it'll fail to play.
-				__uint8 p[] = {'\x08', '\x00', '\x00', '\x04', '\x00', '\x00', '\x00', '\x00',
-							   '\x00', '\x00', '\x00', (__uint8)'\xAF', '\x00', asc_header[0],
-							   asc_header[1], '\x00', '\x00', '\x00', '\x0F'};
-				out_data.insert(out_data.end(), (const __uint8*)p, (const __uint8*)p + sizeof(p));
-			}
-		}
-
-		// if we were to do something else, then we'd need to
-		// change the initial value as needed for it's format
-		flv_tag tag = {((__uint8)0x8), {0}, {0}, 0, {0}};
-		// we need to know the size of things before we output
-		// the actual frame, so we calculate now and adjust it
-		// based on the format of the frame needing to be sent
-		__uint32 v = (first ? (!mp3 ? 2 : 1) : 1 + !mp3) + amt;
-
-		tag.data_size[2] = (v & 0xFF);
-		v >>= 8;
-		tag.data_size[1] = (v & 0xFF);
-		v >>= 8;
-		tag.data_size[0] = (v & 0xFF);
-
-		// this sets the 24-bit time
-		v = timestamp;
-		tag.ts_lower[2] = (v & 0xFF);
-		v >>= 8;
-		tag.ts_lower[1] = (v & 0xFF);
-		v >>= 8;
-		tag.ts_lower[0] = (v & 0xFF);
-		// this sets the extended time
-		// so we provide a 32-bit time
-		v >>= 8;
-		tag.ts_upper = (v & 0xFF);
-
-		// depending on the format, we adjust timestamp
-		// for MP3, we're looking at 26ms / frame
-		// for AAC, we're looking at 1024 samples / frame
-		timestamp += (mp3 ? 26 : (1024000 / samplerate));
-
-		out_data.insert(out_data.end(), (const __uint8*)&tag, ((const __uint8*)&tag) + sizeof(flv_tag));
-
-		// for AAC data, the default has to be set as 16-bit 44kHZ stereo
-		// though the decoder will actuall figure things out as required.
-		// for MP3 data, we fill in things based on the frame data found
-		__uint8 flv_audio_data_tag = ((mp3 ? FLV_MP3_AUDIO : FLV_AAC_AUDIO) | flv_sr | FLV_SAMPLE_SIZE_16 | (!mono ? FLV_STEREO_AUDIO : FLV_MONO_AUDIO));
-		out_data.insert(out_data.end(), (const __uint8*)&flv_audio_data_tag, ((const __uint8*)&flv_audio_data_tag) + sizeof(flv_audio_data_tag));
-
-		if (!mp3)
-		{
-			// this is done so we now distinguish the actual
-			// raw AAC data sans ADTS header vs the required
-			// AAC sequence header which is sent before the
-			// first AAC data frame is sent
-			__uint8 packet_type = 0x1;
-			out_data.insert(out_data.end(), (const __uint8*)&packet_type, ((const __uint8*)&packet_type) + sizeof(packet_type));
-		}
-
-		// body of the data
-		out_data.insert(out_data.end(), (const __uint8*)buf, ((const __uint8*)buf) + amt);
-
-		// we set this at the end so if we terminate the stream
-		// then there's more chance of it validating correctly.
-		v = (11 + Read24(tag.data_size));
-		__uint8 data_size[4] = {0};
-		data_size[3] = (v & 0xFF);
-		v >>= 8;
-		data_size[2] = (v & 0xFF);
-		v >>= 8;
-		data_size[1] = (v & 0xFF);
-		v >>= 8;
-		data_size[0] = (v & 0xFF);
-
-		out_data.insert(out_data.end(), (const __uint8*)&data_size, ((const __uint8*)&data_size) + sizeof(data_size));
-	}
-}
diff --git a/Src/Plugins/DSP/sc_serv3/FLV.h b/Src/Plugins/DSP/sc_serv3/FLV.h
deleted file mode 100644
index 182e65ef..00000000
--- a/Src/Plugins/DSP/sc_serv3/FLV.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-#ifndef _FLV_HEADER_H
-#define _FLV_HEADER_H
-
-#include <stdio.h>
-#include <vector>
-#include "nmrCommon/intTypes.h"
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include "streamData.h"
-
-void createFLVTag(std::vector<__uint8> &out_data, const char *buf,
-				  const int amt, int &timestamp, const bool mp3,
-				  const bool mono, const unsigned int samplerate,
-				  const int bitrate, const __uint8 *asc_header,
-				  const streamData::streamID_t sid);
-
-void createMetadataTag(std::vector<__uint8> &out_data, const bool mp3,
-					   const bool mono, const int bitrate,
-					   const __uint8 flv_sr, const streamData::streamID_t sid);
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/GNUmakefile b/Src/Plugins/DSP/sc_serv3/GNUmakefile
deleted file mode 100644
index eebf3052..00000000
--- a/Src/Plugins/DSP/sc_serv3/GNUmakefile
+++ /dev/null
@@ -1,237 +0,0 @@
-SHELL = /bin/sh
-
-.SUFFIXES:
-.SUFFIXES: .cpp .o .d .h
-
-OS := $(shell uname | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/')
-x64 := $(shell uname -m)
-ENDIAN := $(shell uname -m)
-ENDIAN := $(patsubst i%86,LITTLE_ENDIAN,$(ENDIAN))
-ENDIAN := $(patsubst x86_64,LITTLE_ENDIAN,$(ENDIAN))
-ENDIAN := $(patsubst Power Macintosh,BIG_ENDIAN,$(ENDIAN))
-CXX=g++ -std=c++11 -Wno-deprecated
-
-##########################################################
-########### Platform specific stuff #####################
-##########################################################
-
-ifeq ($(OS),LINUX)
-
-	### Raspbian is reported as a Linux OS
-	### and reports 'armv6l' via uname -m
-	### so we check -m to detect it properly
-	ifeq ($(x64),armv6l)
-
-		#PLATFORM_DEFINES=-DPLATFORM_ARMv6
-		# this is for GCC 4.6.x to make a legacy compatible compile ??
-		PLATFORM_DEFINES=-DPLATFORM_ARMv6 -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections
-
-		PLATFORM_LIBS=\
-			libs/Aol_XML/ARMv6/libexpat.a\
-			libs/libcurl/ARMv6/libcurl.a\
-			libs/libcurl/ARMv6/libssl.a\
-			libs/libcurl/ARMv6/libcrypto.a\
-			libs/zlib/ARMv6/libz.a\
-			-lrt\
-			-lpthread\
-			-ldl
-	### the RPi2 is reported as a Linux OS
-	### and reports 'armv7l' via uname -m
-	### so we check -m to detect it properly
-	else ifeq ($(x64),armv7l)
-		# https://www.raspberrypi.org/forums/viewtopic.php?p=684549#p684549
-		# this is for GCC 4.6.x
-		#PLATFORM_DEFINES=-DPLATFORM_ARMv7 -march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard
-		# this is for GCC 4.8.x (default is 4.6.x on Raspbian)
-		PLATFORM_DEFINES=-DPLATFORM_ARMv7 -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -Wno-unused-result -Wno-ignored-qualifiers -Wno-long-long -Wno-missing-field-initializers -ffunction-sections -fdata-sections -Wl,--gc-sections
-		# this is for GCC 4.6.x to make a legacy compatible compile ??
-		#PLATFORM_DEFINES=-DPLATFORM_ARMv6 -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
-
-		PLATFORM_LIBS=\
-			libs/Aol_XML/ARMv7/libexpat.a\
-			libs/libcurl/ARMv7/libcurl.a\
-			libs/libcurl/ARMv7/libssl.a\
-			libs/libcurl/ARMv7/libcrypto.a\
-			libs/zlib/ARMv7/libz.a\
-			-lrt\
-			-lpthread\
-			-ldl
-	else
-		PLATFORM_DEFINES=-DPLATFORM_LINUX -Wno-unused-result -Wno-ignored-qualifiers -Wno-long-long -Wno-missing-field-initializers -ffunction-sections -fdata-sections -Wl,--gc-sections
-
-		### Linux platform specific includes
-		### with 32-bit and 64-bit handling
-		ifeq ($(x64),x86_64)
-			INCLUDES=-Ideps/x86_64/include
-			PLATFORM_LIBS=\
-				-Ldeps/x86_64/lib -lexpat -lcurl -lssl -lcrypto -lpthread -lz -lrt -ldl
-		else
-			CXX += -m32
-			INCLUDES=-Ideps/i686/include
-			PLATFORM_LIBS=\
-				-Ldeps/i686/lib -lexpat -lcurl -lssl -lcrypto -lpthread -lz -lrt -ldl
-		endif
-	endif
-
-###################################
-
-else 
-	ifeq ($(OS),FREEBSD)
-#		CXX=g++44
-		PLATFORM_DEFINES=-DPLATFORM_BSD -Wno-long-long -Wno-missing-field-initializers
-
-		PLATFORM_LIBS=\
-			libs/Aol_XML/BSD/libexpat.a\
-			libs/libcurl/BSD/libcurl.a\
-			libs/libcurl/BSD/libssl.a\
-			libs/libcurl/BSD/libcrypto.a\
-			libs/zlib/BSD/libz.a\
-			-lpthread\
-#			-R /usr/local/lib/gcc44
-
-	else 
-		ifeq ($(OS),DARWIN)
-			PLATFORM_DEFINES=-DPLATFORM_MAC -Wno-long-long -Wno-missing-field-initializers
-
-			PLATFORM_LIBS=\
-				libs/Aol_XML/Darwin/libexpat.a\
-				libs/libcurl/Darwin/libcurl.a\
-				libs/libcurl/Darwin/libssl.a\
-				libs/libcurl/Darwin/libcrypto.a\
-				libs/zlib/Darwin/libz.a\
-				-lpthread
-		else
-			ERR = $(error Unknown operating system $(OS))
-		endif
-	endif
-endif
-
-ifneq ($(ENDIAN),LITTLE_ENDIAN)
-	ifneq ($(ENDIAN),BIG_ENDIAN)
-		ERR = $(error Unknown endian $(ENDIAN))
-	endif
-endif
-
-##########################################################
-##########################################################
-##########################################################
-##########################################################
-##########################################################
-
-INCLUDES += -I. -InmrCommon
-#INCLUDES=-I. -InmrCommon -Izlib -Ilibcurl/include -IGeoIP/libGeoIP
-
-LIBS=$(PLATFORM_LIBS)
-
-CPPFLAGS=$(PLATFORM_DEFINES) -MMD -MP -D_REENTRANT -DCURL_STATICLIB -Wno-unused-function -Wno-sign-compare -Wno-unknown-pragmas -Wall -Wextra -pedantic
-
-CFLAGS_RELEASE=-O2 -static-libgcc -static-libstdc++ -rdynamic
-CPPFLAGS_RELEASE=$(CPPFLAGS) -O2 -DNDEBUG -g
-
-CFLAGS_DEBUG=-static-libgcc -static-libstdc++ -rdynamic
-CPPFLAGS_DEBUG=$(CPPFLAGS) -ggdb -DDEBUG
-
-VPATH=nmrCommon/threading nmrCommon/stacktrace nmrCommon/services nmrCommon/file nmrCommon/unicode webNet aolxml
-#VPATH=nmrCommon/threading nmrCommon/stacktrace nmrCommon/services nmrCommon/file nmrCommon/unicode webNet aolxml GeoIP/libGeoIP
-
-C_SOURCES=\
-	$(wildcard *.c)
-
-#C_SOURCES=\
-#	$(wildcard *.c)\
-#	$(wildcard GeoIP/libGeoIP/*.c)
-
-CXX_SOURCES=\
-	$(wildcard *.cpp)\
-	$(wildcard nmrCommon/threading/thread.cpp)\
-	$(wildcard nmrCommon/stacktrace/StackTrace.cpp)\
-	$(wildcard nmrCommon/services/logger.cpp)\
-	$(wildcard nmrCommon/services/serviceMain.cpp)\
-	$(wildcard nmrCommon/services/stdServiceImpl.cpp)\
-	$(wildcard nmrCommon/file/fileUtils.cpp)\
-	$(wildcard nmrCommon/unicode/*.cpp)\
-	$(wildcard webNet/*.cpp)\
-	$(wildcard aolxml/*.cpp)
-
-SOURCE_FILES=$(C_SOURCES) $(CXX_SOURCES)
-
-OBJECT_FILES=$(addsuffix .o,$(basename $(notdir $(SOURCE_FILES))))
-DEBUG_OBJECTS=$(addprefix debug/,$(OBJECT_FILES))
-RELEASE_OBJECTS=$(addprefix release/,$(OBJECT_FILES))
-
-.PHONY:	default
-default: release
-
-release/config.o debug/config.o: unixversion.h
-release/serviceMain.o debug/serviceMain.o: unixversion.h
-
-##############################################################
-### Create unix version header from Win32 resource file
-unixversion.h: sc_serv.rc
-	@grep --text 'PRODUCTVERSION' sc_serv.rc | sed 's/PRODUCTVERSION/static int & \[VENT\]=\{/' | sed 's/[0-9]*,[0-9]*,[0-9]*,[0-9]*/&\};/' > unixversion_tmp.h
-	@echo '#define VENT 4' | cat - unixversion_tmp.h > unixversion.h
-	@rm -f unixversion_tmp.h
-
-################# File rules #########################3
-
-debug/%.o: %.cpp
-	$(CXX) $(CPPFLAGS_DEBUG) $(INCLUDES) -c $< -o $@
-
-debug/%.o: %.c
-	$(CXX) $(CPPFLAGS_DEBUG) $(INCLUDES) -c $< -o $@
-
-release/%.o: %.cpp
-	$(CXX) $(CPPFLAGS_RELEASE) $(INCLUDES) -c $< -o $@
-
-release/%.o: %.c
-	$(CXX) $(CPPFLAGS_RELEASE) $(INCLUDES) -c $< -o $@
-
-#release/%.o: GeoIP/libGeoIP/%.c
-#	$(CXX) $(CPPFLAGS_RELEASE) $(INCLUDES) -c $< -o $@
-
-############################################################
-
-sc_serv_debug: $(DEBUG_OBJECTS)
-	$(CXX) -o sc_serv_debug $(CFLAGS_DEBUG) $(DEBUG_OBJECTS) $(LIBS)
-	@./sc_serv_debug -v
-	@echo
-
-sc_serv: sc_serv_notstripped
-	strip -o sc_serv sc_serv_notstripped
-	@echo
-
-sc_serv_notstripped: $(RELEASE_OBJECTS)
-	$(CXX) -o sc_serv_notstripped $(CFLAGS_RELEASE) $(RELEASE_OBJECTS) $(LIBS)
-	@./sc_serv_notstripped -v
-
-releasedir:
-	@mkdir -p release
-
-debugdir:
-	@mkdir -p debug
-
-.PHONY: clean
-.PHONY: release
-.PHONY: debug
-
-release: releasedir sc_serv
-release_nostrip: releasedir sc_serv_notstripped
-debug: debugdir sc_serv_debug
-
-clean:
-	@rm -rf debug
-	@rm -rf release
-	@rm -f unixversion.h
-
-.PHONY:	err
-err: ; $(ERR)
-
-##################################################3
-
-ifeq ($(MAKECMDGOALS),release)
--include $(RELEASE_OBJECTS:.o=.d)
-else
-ifneq ($(MAKECMDGOALS),clean)
--include $(DEBUG_OBJECTS:.o=.d)
-endif
-endif
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/AUTHORS b/Src/Plugins/DSP/sc_serv3/GeoIP/AUTHORS
deleted file mode 100644
index b1295b9b..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-T.J. Mather <tjmather@maxmind.com>
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/COPYING b/Src/Plugins/DSP/sc_serv3/GeoIP/COPYING
deleted file mode 100644
index 45574c3c..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/COPYING
+++ /dev/null
@@ -1,509 +0,0 @@
-[ Note that while the core GeoIP library is licensed under the
-LGPL, the libGeoIPUpdate library depends on md5.c and types.h
-which are licensed under the GPL. ]
-
-
-		  GNU LESSER GENERAL PUBLIC LICENSE
-		       Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-		  GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-			    NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/ChangeLog b/Src/Plugins/DSP/sc_serv3/GeoIP/ChangeLog
deleted file mode 100644
index 572960f0..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/ChangeLog
+++ /dev/null
@@ -1,628 +0,0 @@
-1.4.8
-	* Fix GEOIP_DOMAIN_EDITION_V6 ( Boris Zentner )
-	* Add new Datatypes GEOIP_NETSPEED_EDITION_REV1_V6 and
-	    GEOIP_NETSPEED_EDITION_REV1 ( Boris Zentner )
-	* Fix possible directory traversal weakness in geoipupdate-pureperl.pl with
-	    malicious update server ( Boris Zentner )
-	* Fix GEOIP_ORG_EDITION_V6 and GEOIP_ISP_EDITION_V6 ( Boris Zentner )
-1.4.7
-	* Upd timezone.c Add SX, BQ and CW remove AN and FX ( Boris Zentner )
-	* Add support for the new types in geoiplookup6 ( Boris Zentner )
-	* Add new database types GEOIP_CITY_EDITION_REV0_V6, 
-	    GEOIP_CITY_EDITION_REV1_V6, GEOIP_DOMAIN_EDITION_V6, 
-	    GEOIP_ORG_EDITION_V6 and GEOIP_ISP_EDITION_V6 ( Boris Zentner )
-	* Remove AN and FX. Add SX, BQ and CW ( Boris Zentner )
-	* Fix possible segfault in geoipupdate if the connection disappear
-	    unexpected. ( Boris Zentner )
-	* Add sanity check for geoipupdate-pureperl.pl ( Boris Zentner )
-	* Add GEOIP_USERTYPE_EDITION and GEOIP_USERTYPE_EDITION_V6
-	    datatypes ( Boris Zentner )
-	* Add new functions GeoIP_is_private_ipnum_v4 and GeoIP_is_private_v4
-	    ( Boris Zentner )
-	* Add new functions GeoIP_teredo and GeoIP_enable_teredo.
-	    teredo is enabled by default ( Boris Zentner )
-	* Fix output of geoiplookup for unknown or private regions.
-	    ( Boris Zentner )
-	* Fix geoipupdate-pureperl.pl to accept more product codes.
-	    ( Boris Zentner )
-	* Fix minor output issue in geoipupdate -v ( Boris Zentner )
-	* Add support for various databases. ( Boris Zentner )
-	* Add experimental teredo support ( Boris Zentner )
-	* Fix possible buffer overflow in conjunction with
-	    http_proxies ( Elso Andras )
-	* Remove memcpy/bcopy macro for BSD ( Boris Zentner )
-	* Add GeoIP_lib_version and GeoIP_cleanup ( Ladar Levison )
-	* Upd Makefile.vc ( Thomas Winzig )
-	* Fix typo in DK,18,Midtjylland ( Boris Zentner )
-	* Update libGeoIP/regionName.c with FIPS codes 20100810 ( Boris Zentner )
-	* Fix continent codes ( Boris Zentner )
-	* Fix 3letter country codes for ATA, BVT, IOT, CXR, CCK, ATF, HMD,
-	    MYT, SGS and UMI ( Boris Zentner )
-	* Fix typo/segfault in GeoIP_id_by_name_v6 ( Boris Zentner )
-	* Update libGeoIP/regionName.c with FIPS codes 20100529 ( Boris Zentner )
-	* Remove buffered IO functions, to fix issues with dup'ed file
-            descriptors ( Boris Zentner )
-	* Fix very minor memleak in geoipupdate ( Boris Zentner )
-	* Add GEOIP_CITYCONFIDENCEDIST_EDITION, GEOIP_LARGE_COUNTRY_EDITION
-	    and GEOIP_LARGE_COUNTRY_EDITION_V6 database types ( Boris Zentner )
-	* Update libGeoIP/regionName.c with FIPS codes 20100422 ( Boris Zentner )
-	* Update libGeoIP/regionName.c with FIPS codes 20100420 ( Boris Zentner )
-	* Update libGeoIP/regionName.c with FIPS codes 20100221 ( Boris Zentner )
-	* Add missing timezones ( Boris Zentner )
-	* Add missing include for Windows 2000 ( Jaap Keute )
-	* 'GeoIP Database up to date' and 'Updated database' prints to stdout
-	    instead of stderr ( Boris Zentner )
-	* Add missing GeoIPRecord_delete to geoiplookup.c ( Piotr Kaczuba )
-	* Add some IPv4 helper functions
-	    unsigned long GeoIP_addr_to_num(const char *addr);
-	    char *        GeoIP_num_to_addr(unsigned long ipnum); ( Boris Zentner )
-	* Fix default name for the accuracy radius database to GeoIPDistance.dat ( Boris Zentner )
-	* Add GEOIP_CITYCONFIDENCE_EDITION database type. ( Boris Zentner )
-	* geoiplookup use GeoIPDistance.dat files if avail ( Boris Zentner )
-	* Fix geoiplookup/geoiplookup6 output, when the databaseinfo string is
-	    not avail. ( Boris Zentner )
-	* Change continent code for RU from AS to EU ( Boris Zentner )
-	* Add GEOIP_ACCURACYRADIUS_EDITION database type. ( Boris Zentner )
-	* Add GEOIP_LOCATIONA_EDITION the database to map back from binary to
-	    the csv database ( Boris Zentner )
-	* Change Turkey's continent code from Asia to Europe ( Boris Zentner )
-	* Rename _iso_8859_1__utf8 to _GeoIP_iso_8859_1__utf8 ( Boris Zentner )
-	* GEOIP_ORG_EDITION, GEOIP_ISP_EDITION, GEOIP_DOMAIN_EDITION and
-	    GEOIP_ASNUM_EDITION databases return UTF8 results, if gi->charset is set
-	    to GEOIP_CHARSET_UTF8 ( Boris Zentner )
-	* Avoid unnecesary call to gettimeofday when GEOIP_CHECK_CACHE is not set ( John Douglass )
-	* Delayed loading of changed database files for 60 seconds. To avoid
-	  reading halve written databases ( Boris Zentner )
-	* Update README.OSX for Leopard  and Snow Leopard ( Boris Zentner )
-	* Add more IPv6 functions ( Boris Zentner )
-	    const char *GeoIP_country_code_by_addr_v6 (GeoIP* gi, const char *addr);
-	    const char *GeoIP_country_code_by_name_v6 (GeoIP* gi, const char *host);
-	    const char *GeoIP_country_code3_by_addr_v6 (GeoIP* gi, const char *addr);
-	    const char *GeoIP_country_code3_by_name_v6 (GeoIP* gi, const char *host);
-	    const char *GeoIP_country_name_by_addr_v6 (GeoIP* gi, const char *addr);
-	    const char *GeoIP_country_name_by_name_v6 (GeoIP* gi, const char *host);
-	* Make sure that GeoIP_*_v6 functions refuse GEOIP_PROXY_EDITION and
-	    GEOIP_NETSPEED_EDITION databases ( Boris Zentner ) 
-	* Update libGeoIP/regionName.c with FIPS codes from 20090723 ( Boris Zentner )
-	* Fix geoipupdate's -v option to not change the license filename ( Thom May )
-	* Fix geoipupdate's exit code ( Thom May )
-	* Add support for ASNUM_EDITION ( Boris Zentner )
-	* Fix -i output for larger values, sign issue ( Boris Zentner )
-	* Add -i flag for more information on netmask, range_by_ip and the current network range ( Boris Zentner )
-	* Add support for DOMAIN_EDITION database type ( Boris Zentner )
-	* Fix apps/geoipupdate-pureperl.pl output layer on W32 ( Boris Zentner )
-1.4.6	2009-02-25
-	* Fix geoipupdate's my_printf function ( Boris Zentner )
-	* Fix typo in apps/geoipupdate-pureperl.pl replace PerlIO::Gzip with PerlIO::gzip ( Boris Zentner ) 
-	* Update region codes in libGeoIP/regionName.c ( Boris Zentner )
-	* Fix regioncode/generate_regionName.pl to handle regioncodes with ',' correct ( Boris Zentner )
-	* Update fips codes 20090201 ( Boris Zentner )
-	* Fix unicode builds on WIN32 and eliminate some warnings ( Stu Redman )
-	* Fix sign error in _iso_8859_1__utf8 for PPC64 ( Boris Zentner )
-	* Change WIN32 to _WIN32, since _WIN32 is defined by default. _WIN32 is also defined for WIN64 machines ( Boris Zentner )
-	! Remove the WSAStartup call from GeoIP_open. All Applications need to call WSAStartup and WSACleanup to initialize the Windows Socket library. Before they use any of the GeoIP_*_by_name functions. ( Boris Zentner )
-	* geoiplookup and test-geoip-* output N/A instead of (null) ( Boris Zentner )
-	* Silence various warnings. ( Boris Zentner )
-	* Add more timezone region's for Australia
-	* Fix possible segfault in apps/geoiplookup with null pointers in non gnu printf implementations for example solaris ( Boris Zentner )
-	* Add README.OSX to build fat binaries easy ( Boris Zentner )
-	* Silence vasprintf warning via AC_GNU_SOURCE ( Boris Zentner )
-	* Add several Makefiles to build a static GeoIP.lib for w32 ( Stanislaw Pusep and Randy Kobes )
-	* Silence signedness warnings ( Peter Volkov )
-	* Remove --with-city configure option. ( Boris Zentner )
-	* Remove configure's --with-dbdir option. Use the similar --datadir instead ( Peter Volkov )
-	* Various autotools improvements and cleanups. Including parallel
-	build fix ( Peter Volkov )
-	* Fix libGeoIP/timeZone.c ( Martin Haller )
-	* Fix timezone/generate_timeZone.pl ( Boris Zenter )
-	* Sync FIPS codes again Jan 14th, 2009 ( Boris Zentner )
-	* Fix CA,NL regioncode. ( Boris Zentner )
-	* Change logic in generate_regionName.pl and GeoIP_region_name_by_code to handle any mixture of two letter fips codes matching [A-Z0-9]{2} the change allow GZ and WE region codes ( Boris Zentner )
-	* Sync regionName.c with http://www.maxmind.com/app/fips10_4 from Dec 17th, 2008 ( Boris Zentner )
-	* Fix _GeoIP_lookupaddress for 64bit big endian systems like ppc64 ( Peter Volkov )
-	* Add proper WIN32/64 support ( Gerald Combs ) 
-	* Escape - in all manpages ( Patrick Matthaei )
-	* Add manpage for geoiplookup6 ( Boris Zentner )
-	* Fix -d command line option ( Klaus Heinz )
-	* GeoIPUpdate.c use vasprintf if avail, otherwise try vsnprintf and sprintf ( Boris Zentner )
-	* avoid pre/postincrement and assignment on the same variable ( Boris Zentner )
-1.4.5	2008-09-16
-	* metro_code replace the depreciated dma_code field ( Boris Zentner )
-	* Add new function GeoIP_range_by_ip_delete
-		r = GeoIP_range_by_ip(gi, '24.24.24.24');
-		...
-		GeoIP_range_by_ip_delete(r); ( Boris Zentner )
-	* Fix small memoryleak and wrap around in GeoIP_range_by_ip ( Boris Zentner )
-	* CHECK_CACHE stat the database file not faster than once a second anymore ( Patrick McManus )
-	* Fixed a typo in the geoipupdate(1) manpage and also an non-existent path on Debian (Patrick Matth�i)
-	* Fixes two little format errors (hyphen used as minus sign) in both manpages (Patrick Matth�i)
-	* Sync regionName.c with a recent fips code list ( Boris Zentner )
-	* Fix segfault when open failed for a custom file (-f) ( Boris Zentner )
-	* Fix sync geoiplookup's man page with the code ( Klaus Heinz ) 
-	* remove unused code from GeoIP_country_name_by_addr and GeoIP_country_code3_by_addr ( Boris Zentner )
-	* Fix geoiplookup and geoiplookup6 to distinguish between failed namelookups and unknown ips ( Boris Zentner )
-	* add geoiplookup6 that can handle the new database type GEOIP_COUNTRY_EDITION_V6 ( Boris Zentner )
-	* add new functions to handle ipv6
-
-		GEOIP_API const char *GeoIP_country_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-		GEOIP_API const char *GeoIP_country_code_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-		GEOIP_API const char *GeoIP_country_code3_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-		GEOIP_API char *GeoIP_org_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-		GEOIP_API char *GeoIP_org_by_addr_v6 (GeoIP* gi, const char *addr);
-		GEOIP_API char *GeoIP_org_by_name_v6 (GeoIP* gi, const char *name);
-		GEOIP_API int GeoIP_id_by_addr_v6 (GeoIP* gi, const char *addr);
-		GEOIP_API int GeoIP_id_by_name_v6 (GeoIP* gi, const char *host);
-		GEOIP_API int GeoIP_id_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-		GEOIP_API GeoIPRegion * GeoIP_region_by_addr_v6 (GeoIP* gi, const char *addr);
-		GEOIP_API GeoIPRegion * GeoIP_region_by_name_v6 (GeoIP* gi, const char *host);
-		GEOIP_API GeoIPRegion * GeoIP_region_by_ipnum_v6 (GeoIP *gi, geoipv6_t ipnum);
-		GEOIP_API void GeoIP_assign_region_by_inetaddr_v6(GeoIP* gi, geoipv6_t inetaddr, GeoIPRegion *gir);
-		GEOIP_API char *GeoIP_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-		GEOIP_API char *GeoIP_name_by_addr_v6 (GeoIP* gi, const char *addr);
-		GEOIP_API char *GeoIP_name_by_name_v6 (GeoIP* gi, const char *name);
-
-		# allowed input for addr
-		2001:4860:0:1001::68
-		::85.8.93.71
-		::1
-		::5508::5d47
-		::ffff:5508::5d47
-
-		# allowed input for host
-		ipv6.google.com
-		2001:4860:0:1001::68
-		::85.8.93.71
-		::1
-		::5508::5d47
-		::ffff:5508::5d47
-         ( Boris Zentner )
-	* Fix geoiplookup usage string ( add -d -f ) ( Boris Zentner )
-	* Added GeoIP_range_by_ip, returns the start and end IP address for the range containing the IP address.
-		This range has a constant value in the GeoIP database.
-	* Add geoipupdate-pureperl.pl a alternative geoipupdate version. with Proxy Server support via via the "http_proxy" environment variable. Easy to customize. ( Boris Zentner ) 
-	* Add WIN64 since WIN32 is not defined on WIN64 Systems ( Boris Zentner )
-	* Fix WIN32 compilation by encircle all MMAP functions with #ifdef WIN32 #endif pairs. MMAP is not avail in W32 ( Boris Zentner ) 
-	* Update timezone/generate_timeZone.pl ( Boris Zentner ) 
-	* Update libGeoIP/timeZone.c ( Boris Zentner )
-	* Added GeoIP_printf and GeoIP_fprintf as a experimental feature to
-		libGeoIPUpdate. ( Boris Zentner, Andrew Droffner )
-	* Added cast in _iso_8859_1__utf8 function to fix NetWare/Win32 compilation issue (Guenter Knauf)
-	* Add HTTP Proxy Server support for geoipupdate via the "http_proxy" 
-		environment variable.
-		ie: export http_proxy="http://proxy-hostname:port" 
-		( Andrew Droffner, Derek Nicol )
-	* Notice, that __YOU__ need to free the results of
-
-			GeoIP_database_info
-			GeoIP_name_by_ipnum
-			GeoIP_name_by_addr
-			GeoIP_name_by_name
-			GeoIP_org_by_ipnum
-			GeoIP_org_by_addr
-			GeoIP_org_by_name
-
-		not libgeoip
-		( Boris Zentner, Andrew Cheung )
-	* Fixed segfault with geoiplookup, if used with a custom_file database, that 
-		could not be opened. ( Boris Zentner )
-	* Add Usage info for options -f and -d in geoipupdate ( Boris Zentner )
-	* Fixed segfault with geoipupdate when called with a illformed license file
-		( Boris Zentner )
-	* Update add more timezones to GeoIP_time_zone_by_country_and_region
-		( Boris Zentner )
-	* Add array access functions so programs can avoid accessing the
-		arrays directly which whould break binary compatability (Ludwig Nussel at SUSE)
-	* Updated README to state API is only thread-safe if GEOIP_CHECK_CACHE is not used
-
-1.4.4	2008-1-21
-	* Updated original geoipupdate to return "Invalid product ID or subscription expired"
-	* Added BL/Saint Barthelemy, MF/Saint Martin (ISO-3166-1 additions)
-	* Check for illegal IP strings, return 0 if IP is not well formed IPv4 e.g. 1.2.3.4.5 and 1.2.3
-	* Clarified that while core GeoIP library is LGPL, libGeoIPUpdate depends on md5.c and types.h which are GPL.
-	* speedup the conversion from ipstring to ipnum in _GeoIP_addr_to_num. Doubles the speed of GEOIP_MEMORY_CACHE and GEOIP_MMAP_CACHE
-	* Added new mmap shared memory caching option, GEOIP_MMAP_CACHE (Peter Shipley, LookSmart)
-		- mmaps: our maps are shared, but we need only private readonly pages
-
-1.4.3	2007-8-30
-	! CHANGE with geoiplookup facility: -v flag now returns database info for all databases, not just GeoIP Country
-	* Added ability to get netmask of network block from last lookup using GeoIP_last_netmask
-	* Fixed GeoIP_database_info bug with GeoLite City
-	* Replaced 4 with sizeof(char*) to fix issues with geoipupdate on 64 Bit machines
-	* Added GeoIP_set_charset function - enables UTF8 output of city name if GEOIP_CHARSET_UTF8 flag is passed
-		to GeoIP_set_charset
-	* Fixed segfault issue if calling GeoIP_db_avail before opening a database
-	* Added continent_code to GeoIP City's record struct (Frank Mather)
-
-1.4.2	2007-2-8
-	* Added -d flag to enable custom path for geoipupdate utility program (Frank Mather)
-	* Replaced _WIN32 with WIN32 since WIN32 is already set by compilers
-	* Moved var definitions to top of code, defined size_t (Guenter Knauf)
-	* Added Makefile.win32, Makefile.netware, get_ver.awk, geoip.ico to EXTRA_DIST in Makefile.am (Guenter Knauf)
-
-1.4.1	2007-1-2
-	* Replaced CS/Serbia and Montenegro with RS/Serbia, removed ZR/Zaire, added ME/Montenegro
-	* Added AX/Aland Islands, GG/Guernsey, IM/Isle of Man, JE/Jersey (ISO-3166-1 changes)
-	* Added GeoIP_time_zone_by_country_and_region, to lookup zoneinfo timezone by country and region (Frank Mather)
-	* Added GeoIP_region_name_by_code, to lookup region name from region code (Frank Mather)
-	* added -f and -d flags to enable custom paths for geoiplookup utility program (Frank Mather)
-	* Added benchmarks for GeoIP Region and City in test/benchmark.c (Frank Mather)
-	* Fixed build issue when using --as-needed flag (Diego 'Flameeyes' Petten�)
-	* Add sanity checking for filename returned by MaxMind.com server for geoipupdate filename
-		(Dean Gaudet, arctic.org)
-	* Fixed memory leaks under error conditions, buffer overflow using sprintf,
-		and issue where a corrupted cache file could core dump the file
-		(Nick Galbreath, Right Media Inc)
-
-1.4.0	2006-8-7
-	* Changed license from GPL to LGPL, so that PHP Extension can be included in PECL (Olivier Hill)
-	* Rewrote GEOIP_CHECK_CACHE code, fixed numerous bugs
-		- CheckCache now works if GeoIP file is overwriten by mv command
-		- Fixed bug where CheckCache kept reloading in GEOIP_STANDARD_MODE
-		- Fixed segfault issue in GEOIP_MEMORY_CACHE mode
-		- Fixed garbage data appearing in GEOIP_INDEX_CACHE mode
-		- Fixed realloc in case realloc returns new memory block (Andre Morozov of Stone Steps)
-	* Updated geoipupdate to print status messages for each database instead of just last database
-	* Check that gi is not null before running code in GeoIP_delete
-	* Fixed alpha-3 codes ordering, replaced TLS,TKM,TUN,TON with TKM,TUN,TON,TLS
-	* TP/East Timor changed to TL/Timor-Leste, reflecting changes in ISO-3166
-	* Added Netware and Windows makefiles (Guenter Knauf)
-	* Fixed NetWare compiler issue with char block[block_size] declaration (Guenter Knauf)
-	* Updated geoipupdate example to run weekly
-
-1.3.17	2006-5-14
-	* Fixed headers for Windows/Netware compilation (Guenter Knauf)
-	* Fixed Received Error -21 (Sanity check database_info string failed)
-		when running geoipupdate with GeoIP Country when UserId and
-		productIds were not specified.  Bug was introduced in 1.3.15.
-
-1.3.16	2006-4-17
-	* Fixed compliation error in GeoIPUpdate.c
-
-1.3.15  2006-4-14
-	* Updated README documentation
-	* Updated geoipupdate so that it writes file as it is uncompressed instead
-		of storing entire GeoIP.dat file in memory (Frank Mather)
-	* Updated geoiplookup so that it returns GeoIP Domain Name if available
-		(Frank Mather)
-	* Updated geoipupdate so that it reports whether databases are updated
-		in non-verbose mode (Frank Mather)
-
-1.3.14	2005-9-7
-	* Check if byte, ushort, ulong, u16, u32 are defined in configure
-	  script.  Fixes compilation issue on FreeBSD systems.
-	* Check for Big Endian byte order (needed for MD5 code in geoipupdate
-	  to work properly on Mac OS X and other Big Endian processors)
-	* Fixed GEOIP_CHECK_CACHE mode when used with GEOIP_STANDARD to
-	  only refresh upon file change
-	* Fixed memory leak when refreshing file in GEOIP_CHECK_CACHE mode
-	* Updated ltmain.sh to support Debian GNU/k*BSD bug #315425 (Marek Habersack)
-	* Added lookup functions using IP numeric representation as input (Frank Mather)
-	* Removed geoipexport
-	* Replaced Yugoslavia with Serbia and Montenegro
-	* Updated geoiplookup to only perform country lookup once instead of twice by using GeoIP_id_by_name
-
-1.3.13	2005-8-1
-	* Fixed autoconf weirdness that resulted in libraries being
-		installed without .so suffix
-
-1.3.12	2005-7-19
-	* Removed -lGeoIP from libGeoIPUpdate_la_LIBADD - fixes compilation error
-		if GeoIP isn't already installed (Thomas Steudten)
-
-1.3.11	2005-7-7
-	* Fixed gcc warnings and bug.  Use int 
-		instead of char for checking the return value of getopt in geoipupdate.c.
-		Moved the internal functions to GeoIP_internal.h to get rid 
-		of those 'implicit declaration' warnings. (Ludwig Nussel/SUSE)
-	* Cleaned up name space by prefixing internal functions with
-		_GeoIP* (Ludwig Nussel/SUSE)
-	* Memory Leak fix for GeoIP City if fread error
-	* Added more verbose error messages for geoipupdate (Frank Mather)
-	* Added check for zlib.h to configure.in
-
-1.3.10	2005-4-17
-	* Added types.h to Makefile.am - fixes compilation error
-
-1.3.9	2005-4-14
-	* fixed bug with GEOIP_INDEX_CACHE (Frank Mather)
-	* fixed segfault issue if GeoIP.dat not found (Frank Mather)
-	* Updated MD5 checksum code to use GnuPG code which works
-		on 64bit machines (Frank Mather)
-	* Fixed memory leak in test-geoip-isp.c and test-geoip-org.c
-	* Added support for GeoIP Domain Names in geoipupdate
-
-1.3.8	2004-11-7
-	* Updated geoipupdate to report invalid userID and productID errors
-	* Check if gethostbyname_r is version that returns int or is other version
-		- should fix compile errors on Solaris and FreeBSD
-	* Updated URL to get license key, userId, and product Ids in conf/GeoIP.conf.default
-	* Updated test case, removed www.asahi.com
-	* Added support for GEOIP_INDEX_CACHE - which just caches
-	the most frequently access index portion of the database, resulting
-	in faster lookups than GEOIP_STANDARD, but less memory usage than
-	GEOIP_MEMORY_CACHE (Frank Mather)
-
-1.3.7	2004-10-5
-	* Updated test case, removed www.bundesregierung.de added www.asahi.com
-
-1.3.6	2004-8-8
-	* Check for gethostbyname_r support in configure (Mac OS X doesn't support gethostbyname_r)
-	* Made GeoIP City code thread safe
-	* Fixed bug with geoipupdate reading in product ids
-	* Added support for GeoIP Netspeed geoipupdate
-	* Fix memleak in lookupaddress (Ludwig Nussel/SUSE)
-	* Add prototype for _full_path_to to make 64bit clean
-		(Ludwig Nussel/SUSE)
-	* Add return values to test programs (Ludwig Nussel/SUSE)
-
-1.3.5	2004-7-5
-	* Added more documentation to README file
-	* Made GEOIP_CHECK_CACHE work with GEOIP_STANDARD mode - reloads filehandle
-		in case file changes.
-	* Added GeoIP_country_code_by_ipnum and GeoIP_id_by_ipnum to use
-	existing ulong IP Address in numeric form instead of having to
-	convert it to string (Boris Hajduk)
-	* Made code thread safe by replacing gethostbyname with gethostbyname_r
-
-1.3.4	2004-6-4
-	* Fixed bug where *.gz file(s) didn't get removed after geoipupdate
-
-1.3.3	2004-6-2
-	* Added support for NetSpeed lookup to geoiplookup
-	* inet_addr patch for 64 bit systems (Thomas Steudten)
-	* Added Support for automated downloads of GeoIP Region, City, ISP and Organization databases (Frank Mather)
-	* INADDR_NONE Patch for Solaris 9 (John Young)
-
-1.3.2	2004-4-20
-	* Added support for Maxmind NetSpeed
-
-MinGW patch from Stanislaw Pusep
-
-I was re-compiling Geolizer (http://sysd.org/log.php#glzr) on Win32 so I firstly needed to put up-to-date Win32 compatibility of libGeoIP itself. Fortunately MinGW plataform evolved a lot since last time I used it to compile libGeoIP. I'm sending you the patch with changes required for libGeoIP to work on both Win32 and UN*X. UN*X behavior is unaffected. Now, detailed explanation of what I did at all:
-1) Made correct header imports for both Win32 and UN*X. UN*X imports netdb.h & netinet/in.h and Win32 imports windows.h & winsock.h
-2) Win32 gethostbyname() is only able to resolve hostnames, it can't convert "127.0.0.1" string to 32-bit IP address. Thus I added lookupaddress() function that safely resolves any string to IP address and replaced all gethostbyname() calls by it.
-3) Database files were referenced by pre-compiled static strings. I malloc()ed buffers for file names so they can be changed "on fly". Thus, on Win32 version GeoIP.dat & other files are being seeked in the same directory as executable file or library.
-4) Added README.MinGW file with brief explanation on how to get GeoIP working under MinGW system.
-
-1.3.1	2003-11-11
-	* Check for stdint.h in autoconf (Sean Chittenden)
-	* prevent the geoipupdate man page from trying to install itself directly in the system directory (Gyepi Sam)
-
-1.3.0	2003-09-29
-	* Fixed includes to compile on Windows (Fabrice Colin)
-	* Removed the _addr_to_num() calls from GeoIP_*_by_name()
-	* _seek_record() optimizations (Maurice Cinquini)
-		�1) Use a single buf ptr inside the loops.
-		��� Set to the stack buffer or the cached memory the start of the function.
-		�2) Unroll the i=0,1 loop to allow constant folding.
-		�3) Unroll the j loop for the common case of j = STANDARD_RECORD_LENGTH
-		��� (I've already done the above changes see attached function.)
-		��� With gcc -O2 calculating x[0] and x[1] for STANDARD_RECORD_LENGTH now
-		��� only takes 15 (was > 100) i80x86 instructions with 6 byte accesses of RAM.                 4) only calculate x[0], x[1] when needed, may be a bigger win
-		    than the above since all the other optimizations above only reduced
-                    CPU instructions operating on CPU cached RAM.
-	! IMPORTANT API Change: Changed GeoIPRegion to have region in structure. Saves space and a malloc.
-	  Since GeoIPRegion.region is no longer a pointer but an in-structure
-	  array so test the first byte of region == 0 rather testing if the region
-	  pointer is NULL. (Maurice Cinquini)
-	* Added GeoIP_assign_region_by_inetaddr which doesn't do any mallocs and made all other region APIs go thru it (Maurice Cinquini)
-	* Replaced _h_addr_to_num() with ntohl() and removed _h_addr_to_num() (Maurice Cinquini)
-	* Fixed bug when IP address not found in region rev1 database (Jason Linhart)
-	* Added added extern "C" to GeoIPCity.h fixes problems when included in C++ library
-
-1.2.2	2003-08-10
-	* Added support for GeoIP ISP Edition identifier
-	* Fixed bug in GeoIP_database_info (Jason Linhart)
-	* Added support for GeoIP AS Number Edition
-	! renamed GeoIP_org_by_* functions to GeoIP_name_by_* to reduce confusion
-		since these functions are used by GeoIP ISP and GeoIP ASNum as well
-		as GeoIP Organization
-	* Added support for GeoIP Proxy Edition
-	! renamed GeoIP_country_id_by_* functions to GeoIP_id_by_*
-
-1.2.1	2003-07-12
-	* Added GeoIP_record_id_by_addr and GeoIP_next_record functions
-	* Added support for new GeoIP Region format, including Canadian Provinces
-
-1.2.0	2003-04-26
-	* Added support for GeoIP City format revision 1, including dma code and area code
-	* geoiplookup returns results from GeoIP Region, City, ISP and Organization databases
-	* Standardized location for GeoIP Region, City, ISP and Organization databases
-	* Added GeoIP_open_type to open database from default location for other dbs besides country
-	* Added check to make sure that the appropriate database is loaded for each lookup method
-	* Updated update code to check for first 12 characters of license key
-	* Added GeoIP_country_continent array to lookup continent by country ID
-
-1.1.9	2003-03-10
-	* merged windows patch into main code base (Kenneth R. Robinette)
-	* Changed const int to #define for windows compatibility
-
-1.1.8	2003-03-04
-	* Fixed bug with city database introduced in 1.1.6
-
-1.1.7	2003-03-04
-	* Fixed bug introduced in 1.1.6 when run in GEOIP_STANDARD mode
-	* Added test to test GEOIP_STANDARD
-
-1.1.6	2003-03-03
-	* Added spec for building RPMs (Ryan Weaver)
-	* Added support for 4byte records for Organization database
-	* Changed Taiwan, Province of China to Taiwan
-
-1.1.5	2003-02-10
-	* Added support for GeoIP Organization database
-
-1.1.4	2002-12-30
-	* Cast number to int in _num_to_addr in geoipexport (Ralf S. Engelschall)
-	* Removed printf debug statements from geoipexport
-	* correct library build ordering (Ralf S. Engelschall)
-	* ulong -> unsigned long (Sean Chittenden)
-
-1.1.3	2002-12-24
-	* Added GeoIPUpdate.h to EXTRA_DISTS
-	* Compile fixes for Solaris, FreeBSD (Michael McClennen, Corris Randall)
-	* Handle NULL in printf in test-geoip-region
-
-1.1.2	2002-12-16
-	* Added support for postal codes
-	* Added geoipexport, program to export bit binary file to
-		binary tree format and csv format
-	* Split update code into separate library, GeoIPUpdate.la
-	* Allow passing NULL callback to GeoIP_update_database function
-		(Sean Chittenden)
-	* Added geoipexport program, exports to CSV file
-	* Added GeoIP_database_edition method
-	* Changed DATADIR to GEOIPDATADIR
-
-1.1.1	2002-11-07
-	* Fixed segfault issue with GeoIPRegion_delete
-	* Handle test failures where lookup returns NULL more gracefully
-
-1.1.0	2002-11-06
-	* Perform sanity checking before installing datebase using geoipupdate
-	* Removed file locking, since we install file by renaming instead of writing to it.
-	* Fixed geoipupdate to check for NULL return value
-	* Added constants for different editions
-	* Added O1 code for "Other country", used in per-country city editions
-	* fixed multi-line string literals warning in test-geoip.c
-	* Use enum constants for GeoIP_update_database values
-	* Added GEOIP_CHECK_CACHE option (not working yet)
-
-1.0.10  2002-10-28
-	* IMPORTANT API Change - Return NULL instead of '--' and 'N/A'
-	Be sure to check the return value for NULL to avoid segmentation faults!!!!
-	* Added callback to print messages from GeoIP_update_database
-	* Moved GeoIPConfFile to geoipupdate.c
-	* Changed databaseSegments to unsigned int (Chris Gibbs)
-	* Fixed compiler warnings (Chris Gibbs)
-	* API Change - GeoIPRegion region member set to NULL when no region available
-	* Change short int to int (Chris Gibbs)
-	* Added write/read file locking for GeoIPUpdate.c/GeoIP.c
-
-1.0.9	2002-10-16
-	* removed -ansi from Makefile.am to avoid compile error on Solaris 8
-	* Compile fix for FreeBSD Stable (Kimura Fuyuki)
-
-1.0.8	2002-10-05
-	* Included header required for *BSD (Akinori Musha)
-
-1.0.7	2002-10-05
-	* Fixed compilation error with GeoIPUpdate.c
-
-1.0.6	2002-10-04
-	* Moved update code into separate file
-	* Added md5 checksums to update code
-	* Fixed memory leak when running geoiplookup -v
-	* Moved const RECORD_LENGTH to #define RECORD_LENGTH for Windows compatibility
-	(Randy Kobes)
-	* Cleaned up GeoIP_new code
-
-1.0.5	2002-09-23
-	* Supports GeoIP Regional Edition
-	* Macau is now "Macao" per ISO 3166-1 change
-	* Romania "ROM" is now "ROU" per ISO 3166-1 change
-	* Added #define for memcpy -> BSD's bcopy (Chris Gibbs)
-	* Removed "private" functions from GeoIP.h
-
-1.0.4	2002-08-27
-	* rewrote _seek_country to use loop instead of recursion for faster performance
-	* Removed "orphan" nodes from demo database resulting in smaller size (Jason Linhart)
-	* Moved changes for building windows DLL into separate patch
-	* Fixed segfaults when passed malformed IP addresses
-
-1.0.3	2002-08-26
-	* Added more changes for windows compatibility
-	  (Stanislaw Pusep)
-	* Added benchmark program
-
-1.0.2	2002-08-21
-	* Open database using "rb" for windows compatibility
-	  (Stanislaw Pusep)
-	* Removed superfluous inet_ntop command (Stanislaw Pusep)
-
-1.0.1	2002-08-20
-	* Fixed bug with resolving hostnames
-	* More fixes for compiler warnings (Chris Gibbs)
-	* Changed int to unsigned int in _is_ipaddr (Chris Gibbs)
-
-1.0.0	2002-08-12
-	* Changed license to GPL
-	* Don't perform Reverse DNS lookups on IP addresses
-	* Only include getopt.h on Linux (OpenPKG patch)
-	* Avoid the_license_key_str warning (OpenPKG patch)
-	* Added license for March 2002 database
-
-0.3.0	2002-08-04
-	* Added support for 'A2', Satellite Providers
-
-0.2.8	2002-07-30
-	* Handle malformed input gracefully
-	* Added section to README on Solaris workarounds
-	* Added geoipupdate man page
-
-0.2.7	2002-07-27
-	* Added section to README on automatic updates
-	* link to socket library on solaris
-
-0.2.6	2002-07-25
-	* optimized GeoIP_open (Chris Gibbs)
-	* check for partial file read in GeoIP_open (Chris Gibbs)
-	* optimized _addr_to_num() (Chris Gibbs)
-	* changed write and read to send and recv for sockets
-	* Only install GeoIP.conf and GeoIP.dat if not already installed
-
-0.2.5	2002-07-22
-	* Added verbose option to GeoIP_update_database
-
-0.2.4	2002-07-22
-	* Fix for GeoIP_update_database
-
-0.2.3	2002-07-22
-	* Fixes for FreeBSD
-	* All calls to malloc are checked for NULL pointer (Chris Gibbs)
-	* Fixed spelling of "Kazakhstan" (Chris Gibbs)
-	* Initialize cache_buf to NULL (Chris Gibbs)
-	* More memory leak fixes (Chris Gibbs)
-
-0.2.2	2002-07-18
-	* Added update database function
-	* Fixed memory leak in GeoIP_new (Chris Gibbs)
-
-0.2.1	2002-07-03
-	* Added support for anonymous proxies
-
-0.2.0	2002-06-23
-	* Added new memory caching option for improved performance
-
-0.1.7	2002-05-29
-	* Only add -lnsl for systems that support libnsl
-	* Added decl for 3 letter country code array to GeoIP.h
-
-0.1.6	2002-05-25
-	* Added 3 letter country code
-
-0.1.5   2002-05-23
-	* Added -lnsl fixed compile errors
-
-0.1.4	2002-05-11
-	* Fixed bugs in demo March 2002 database
-
-0.1.3	2002-04-21
-	* Fixed bug related to signed int (Brian Grossman)
-	* Better error handling when hostname not found
-	* Fixed bug when netmask=32 for netblock
-
-0.1.2	2002-04-20
-	* Added two new functions, GeoIP_country_id_by_addr
-	  and GeoIP_country_id_by_name.
-	* Made GeoIP_country_code and GeoIP_country_name
-	  viewable outside of library, to be with with
-	  GeoIP_country_id_by_* functions.
-
-0.1.1	2002-04-07
-	* GeoIP.h is now installed to includedir
-	* constructor and destructor are now provided by
-	    GeoIP_new, GeoIP_open, and GeoIP_delete
-
-0.1.0	2002-04-07
-	* Initial release
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/GeoIP.spec.in b/Src/Plugins/DSP/sc_serv3/GeoIP/GeoIP.spec.in
deleted file mode 100644
index 072cd1f5..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/GeoIP.spec.in
+++ /dev/null
@@ -1,80 +0,0 @@
-Name:	    @PACKAGE@
-Version:    @VERSION@
-Summary:    GeoIP is a C library finds the location of an IP address.
-Release:    1
-Group:	    System Environment/Libraries
-URL:	    http://www.maxmind.com/app/c
-Vendor:	    MaxMind LLC
-Source0:    http://www.maxmind.com/download/geoip/api/c/GeoIP-%{version}.tar.gz
-License:    GPL
-BuildRoot:  %{_tmppath}/%{name}-%{version}-root
-
-%description
-GeoIP is a C library that enables the user to find geographical and
-network information of an IP address.
-Included is a free GeoLite Country database
-that is updated at the beginning of every month.
-To download the latest free GeoLite Country database, go to:
-http://www.maxmind.com/app/geoip_country
-
-There is also a free city-level geolocation database, GeoLite City,
-available from:
-http://www.maxmind.com/app/geolitecity
-
-%package devel
-Summary: GeoIP headers, libraries
-Group: Development/Libraries
-Requires: %name = %{version}
-
-%description devel
-This package contain the devel files for GeoIP.
-
-%prep
-%setup -q
-
-%build
-%configure
-make
-make check
-
-%install
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
-%makeinstall
-# Fixup permissions on shared libraries so that findreqs will work right.
-chmod 755 $RPM_BUILD_ROOT/%{_libdir}/*
-
-%clean
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root)
-%doc AUTHORS COPYING ChangeLog README TODO
-%attr(0755,root,root) %{_libdir}/*.so.*.*
-%{_bindir}/*
-%{_sysconfdir}/*
-%dir %{_datadir}/GeoIP
-%{_datadir}/GeoIP/*
-%{_libdir}/*.so
-%{_mandir}/*/*
-
-%files devel
-%{_includedir}/*
-%{_libdir}/*.a
-%{_libdir}/*.la
-
-%changelog
-* Fri Apr 14 2006 Thomas Mather <tjmather@maxmind.com>
-- Updated description to reference free GeoLite City database
-
-* Thu Jul  7 2005 Thomas Mather <tjmather@maxmind.com>
-- Updated description to reflect monthly updates for free country database.
-
-* Mon Sep  8 2003 Dr. Peter Bieringer
-- Fix for RHL 9, created a new devel package definition.
-
-* Thu Feb 27 2003 Ryan Weaver <ryanw@falsehope.com>
-- Initial RPM Build
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/GeoIPWinDLL.patch b/Src/Plugins/DSP/sc_serv3/GeoIP/GeoIPWinDLL.patch
deleted file mode 100644
index 98119fc2..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/GeoIPWinDLL.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-Index: GeoIP.c
-===================================================================
-RCS file: /home/maxmind/geoip/c/libGeoIP/GeoIP.c,v
-retrieving revision 1.32
-retrieving revision 1.33
-diff -u -r1.32 -r1.33
---- GeoIP.c	25 Aug 2002 22:42:48 -0000	1.32
-+++ GeoIP.c	27 Aug 2002 06:50:02 -0000	1.33
-@@ -23,16 +23,24 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#ifndef _WIN32
- #include <netdb.h>
-+#endif	/* _WIN32 */
- #include <assert.h>
- #include <sys/types.h> /* for fstat */
- #include <sys/stat.h>	/* for fstat */
- #include "zlib.h"
- #include "time.h"
- 
-+#ifndef _WIN32
-+#include <unistd.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <sys/socket.h>
-+#else
-+#include <io.h>
-+#include <windows.h>
-+#endif	/* _WIN32 */
- 
- #define COUNTRY_BEGIN 16776960;
- const int RECORD_LENGTH = 3;
-@@ -57,9 +65,66 @@
- const char *GeoIPUpdateHost = "updates.maxmind.com";
- const char *GeoIPHTTPRequest = "GET /app/update?license_key=%s HTTP/1.0\nHost: updates.maxmind.com\n\n";
- 
-+#ifdef _WIN32
-+char * _dat_in_module_path () {
-+	HMODULE GeoIPdll;
-+	struct _stat st;
-+	int i;
-+	char * buf;
-+
-+	buf			= (char *) malloc(MAX_PATH);
-+
-+	GeoIPdll = GetModuleHandle("GeoIP.dll");
-+	if (!GeoIPdll)
-+	{
-+		GeoIPdll = GetModuleHandle(NULL);
-+		if (!GeoIPdll)
-+			return NULL;
-+	}
-+	GetModuleFileName(GeoIPdll, buf, MAX_PATH);
-+	for (i = strlen(buf); (i >= 0) && (buf[i] != '\\'); i--);
-+	if (i)
-+	{
-+		buf[i] = '\0';
-+		strcat(buf, "\\");
-+		strcat(buf, GeoIPDBFileName);
-+		if (_stat(buf, &st) == 0)
-+			return buf;
-+	}
-+
-+	free(buf);
-+	return NULL;
-+}
-+
-+char * _dat_path_in_regkey () {
-+	DWORD lpdwDisposition, type, size = MAX_PATH;
-+	HKEY hkGeoIP;
-+	char * buf, * filename;
-+
-+	buf			= (char *) malloc(MAX_PATH);
-+	filename	= (char *) malloc(MAX_PATH);
-+
-+	if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\MaxMind\\GeoIP", 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hkGeoIP, &lpdwDisposition) != ERROR_SUCCESS)
-+		return NULL;
-+	if (RegQueryValueEx(hkGeoIP, "DATADIR", 0, &type, buf, &size) != ERROR_SUCCESS)
-+		strcpy(buf, "%SystemRoot%\\SYSTEM32");
-+	if (RegSetValueEx(hkGeoIP, "DATADIR", 0, REG_EXPAND_SZ, buf, strlen(buf)) != ERROR_SUCCESS)
-+		return NULL;
-+	ExpandEnvironmentStrings(buf, filename, MAX_PATH);
-+
-+	free(buf);
-+	strcat(filename, "\\");
-+	strcat(filename, GeoIPDBFileName);
-+
-+	return filename;
-+}
-+#endif	/* _WIN32 */
-+
- GeoIP* GeoIP_new (int flags) {
- 	char * filename;
- 	GeoIP * gi;
-+
-+#ifndef _WIN32
- 	filename = malloc(sizeof(char) * (strlen(DATADIR)+strlen(GeoIPDBFileName)+2));
- 	if (filename == NULL)
- 		return NULL;
-@@ -67,6 +132,17 @@
- 	strcat(filename, DATADIR);
- 	strcat(filename, "/");
- 	strcat(filename, GeoIPDBFileName);
-+#else
-+	filename = _dat_in_module_path();
-+	if (filename == NULL)
-+		filename = _dat_path_in_regkey();
-+	if (filename == NULL)
-+	{
-+		fprintf(stderr,"Unable to query registry for database location\n");
-+		return NULL;
-+	}
-+#endif	/* _WIN32 */
-+
- 	gi = GeoIP_open (filename, flags);
- 	free(filename);
- 	return gi;
-@@ -96,7 +172,7 @@
- 			}
- 			gi->cache = (unsigned char *) malloc(sizeof(unsigned char) * buf.st_size);
- 			if (gi->cache != NULL) {
--				if (fread(gi->cache, sizeof(unsigned char), buf.st_size, gi->GeoIPDatabase) != buf.st_size) {
-+				if (fread(gi->cache, sizeof(unsigned char), buf.st_size, gi->GeoIPDatabase) != (unsigned) buf.st_size) {
- 					fprintf(stderr,"Error reading file %s\n",filename);
- 					free(gi->cache);
- 					free(gi);
-Index: GeoIP.h
-===================================================================
-RCS file: /home/maxmind/geoip/c/libGeoIP/GeoIP.h,v
-retrieving revision 1.19
-retrieving revision 1.20
-diff -u -r1.19 -r1.20
---- GeoIP.h	20 Aug 2002 00:52:00 -0000	1.19
-+++ GeoIP.h	27 Aug 2002 06:50:02 -0000	1.20
-@@ -45,25 +45,31 @@
- extern const char * GeoIP_country_name[246];
- extern const char * GeoIPConfFile;
- 
--GeoIP* GeoIP_new(int flags);
--GeoIP* GeoIP_open(char * filename, int flags);
--void GeoIP_delete(GeoIP* gi);
--const char *GeoIP_country_code_by_addr (GeoIP* gi, const char *addr);
--const char *GeoIP_country_code_by_name (GeoIP* gi, const char *host);
--const char *GeoIP_country_code3_by_addr (GeoIP* gi, const char *addr);
--const char *GeoIP_country_code3_by_name (GeoIP* gi, const char *host);
--const char *GeoIP_country_name_by_addr (GeoIP* gi, const char *addr);
--const char *GeoIP_country_name_by_name (GeoIP* gi, const char *host);
--short int GeoIP_country_id_by_addr (GeoIP* gi, const char *addr);
--short int GeoIP_country_id_by_name (GeoIP* gi, const char *host);
-+#ifdef _WIN32
-+#define GEOIP_API __declspec(dllexport)
-+#else
-+#define GEOIP_API
-+#endif	/* _WIN32 */
- 
--char *GeoIP_database_info (GeoIP* gi);
--short int GeoIP_update_database (GeoIP* gi, char * license_key, int verbose);
-+GEOIP_API GeoIP* GeoIP_new(int flags);
-+GEOIP_API GeoIP* GeoIP_open(char * filename, int flags);
-+GEOIP_API void GeoIP_delete(GeoIP* gi);
-+GEOIP_API const char *GeoIP_country_code_by_addr (GeoIP* gi, const char *addr);
-+GEOIP_API const char *GeoIP_country_code_by_name (GeoIP* gi, const char *host);
-+GEOIP_API const char *GeoIP_country_code3_by_addr (GeoIP* gi, const char *addr);
-+GEOIP_API const char *GeoIP_country_code3_by_name (GeoIP* gi, const char *host);
-+GEOIP_API const char *GeoIP_country_name_by_addr (GeoIP* gi, const char *addr);
-+GEOIP_API const char *GeoIP_country_name_by_name (GeoIP* gi, const char *host);
-+GEOIP_API short int GeoIP_country_id_by_addr (GeoIP* gi, const char *addr);
-+GEOIP_API short int GeoIP_country_id_by_name (GeoIP* gi, const char *host);
- 
--int _seek_country (GeoIP* gi, const int offset, unsigned long ipnum, int depth);
--unsigned long _addr_to_num (const char *addr);
--unsigned long _h_addr_to_num (unsigned char *addr);
--short int _is_ipaddr (const char *name);
-+GEOIP_API char *GeoIP_database_info (GeoIP* gi);
-+GEOIP_API short int GeoIP_update_database (GeoIP* gi, char * license_key, int verbose);
-+
-+GEOIP_API int _seek_country (GeoIP* gi, const int offset, unsigned long ipnum, int depth);
-+GEOIP_API unsigned long _addr_to_num (const char *addr);
-+GEOIP_API unsigned long _h_addr_to_num (unsigned char *addr);
- 
- #ifdef __cplusplus
- }
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/INSTALL b/Src/Plugins/DSP/sc_serv3/GeoIP/INSTALL
deleted file mode 100644
index 7d1c323b..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/INSTALL
+++ /dev/null
@@ -1,365 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-
-   Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved.  This file is offered as-is,
-without warranty of any kind.
-
-Basic Installation
-==================
-
-   Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package.  The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.  Some packages provide this
-`INSTALL' file but do not implement all of the features documented
-below.  The lack of an optional feature in a given package is not
-necessarily a bug.  More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
-   It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
-   The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
-   The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.
-
-     Running `configure' might take a while.  While running, it prints
-     some messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package, generally using the just-built uninstalled binaries.
-
-  4. Type `make install' to install the programs and any data files and
-     documentation.  When installing into a prefix owned by root, it is
-     recommended that the package be configured and built as a regular
-     user, and only the `make install' phase executed with root
-     privileges.
-
-  5. Optionally, type `make installcheck' to repeat any self-tests, but
-     this time using the binaries in their final installed location.
-     This target does not install anything.  Running this target as a
-     regular user, particularly if the prior `make install' required
-     root privileges, verifies that the installation completed
-     correctly.
-
-  6. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
-     for the package's developers.  If you use it, you may have to get
-     all sorts of other programs in order to regenerate files that came
-     with the distribution.
-
-  7. Often, you can also type `make uninstall' to remove the installed
-     files again.  In practice, not all packages have tested that
-     uninstallation works correctly, even though it is required by the
-     GNU Coding Standards.
-
-  8. Some packages, particularly those that use Automake, provide `make
-     distcheck', which can by used by developers to test that all other
-     targets like `make install' and `make uninstall' work correctly.
-     This target is generally not run by end users.
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  Run `./configure --help'
-for details on some of the pertinent environment variables.
-
-   You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment.  Here
-is an example:
-
-     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
-   *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you can use GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.  This
-is known as a "VPATH" build.
-
-   With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory.  After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-   On MacOS X 10.5 and later systems, you can create libraries and
-executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple `-arch' options to the
-compiler but only a single `-arch' option to the preprocessor.  Like
-this:
-
-     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CPP="gcc -E" CXXCPP="g++ -E"
-
-   This is not guaranteed to produce working output in all cases, you
-may have to build one architecture at a time and combine the results
-using the `lipo' tool if you have problems.
-
-Installation Names
-==================
-
-   By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc.  You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX', where PREFIX must be an
-absolute file name.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
-   In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.  In general, the
-default for these options is expressed in terms of `${prefix}', so that
-specifying just `--prefix' will affect all of the other directory
-specifications that were not explicitly provided.
-
-   The most portable way to affect installation locations is to pass the
-correct locations to `configure'; however, many packages provide one or
-both of the following shortcuts of passing variable assignments to the
-`make install' command line to change installation locations without
-having to reconfigure or recompile.
-
-   The first method involves providing an override variable for each
-affected directory.  For example, `make install
-prefix=/alternate/directory' will choose an alternate location for all
-directory configuration variables that were expressed in terms of
-`${prefix}'.  Any directories that were specified during `configure',
-but not in terms of `${prefix}', must each be overridden at install
-time for the entire installation to be relocated.  The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
-
-   The second method involves providing the `DESTDIR' variable.  For
-example, `make install DESTDIR=/alternate/directory' will prepend
-`/alternate/directory' before all installation names.  The approach of
-`DESTDIR' overrides is not required by the GNU Coding Standards, and
-does not work on platforms that have drive letters.  On the other hand,
-it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of `${prefix}'
-at `configure' time.
-
-Optional Features
-=================
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-   Some packages offer the ability to configure how verbose the
-execution of `make' will be.  For these packages, running `./configure
---enable-silent-rules' sets the default to minimal output, which can be
-overridden with `make V=1'; while running `./configure
---disable-silent-rules' sets the default to verbose, which can be
-overridden with `make V=0'.
-
-Particular systems
-==================
-
-   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
-CC is not installed, it is recommended to use the following options in
-order to use an ANSI C compiler:
-
-     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-
-   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
-a workaround.  If GNU CC is not installed, it is therefore recommended
-to try
-
-     ./configure CC="cc"
-
-and if that doesn't work, try
-
-     ./configure CC="cc -nodtk"
-
-   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
-directory contains several dysfunctional programs; working variants of
-these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
-in your `PATH', put it _after_ `/usr/bin'.
-
-   On Haiku, software installed for all users goes in `/boot/common',
-not `/usr/local'.  It is recommended to use the following options:
-
-     ./configure --prefix=/boot/common
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
-     CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
-     OS
-     KERNEL-OS
-
-   See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
-   If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
-   If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-   Variables not defined in a site shell script can be set in the
-environment passed to `configure'.  However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost.  In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'.  For example:
-
-     ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug.  Until the bug is fixed you can use this workaround:
-
-     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
-     Print a summary of all of the options to `configure', and exit.
-
-`--help=short'
-`--help=recursive'
-     Print a summary of the options unique to this package's
-     `configure', and exit.  The `short' variant lists options used
-     only in the top level, while the `recursive' variant lists options
-     also present in any nested packages.
-
-`--version'
-`-V'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`--cache-file=FILE'
-     Enable the cache: use and save the results of the tests in FILE,
-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
-     disable caching.
-
-`--config-cache'
-`-C'
-     Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
-     messages will still be shown).
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`--prefix=DIR'
-     Use DIR as the installation prefix.  *note Installation Names::
-     for more details, including other options available for fine-tuning
-     the installation locations.
-
-`--no-create'
-`-n'
-     Run the configure checks, but stop before creating any output
-     files.
-
-`configure' also accepts some other, not widely useful, options.  Run
-`configure --help' for more details.
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.am b/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.am
deleted file mode 100644
index bd4da3a3..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-INCLUDES = -Wall -ansi
-
-SUBDIRS =		\
-	libGeoIP	\
-	apps		\
-	conf		\
-	data		\
-	test		\
-	man
-
-EXTRA_DIST = README.OSX READMEwin32static.txt README.MinGW READMEwin32.txt GeoIPWinDLL.patch TODO bootstrap GeoIP.spec GeoIP.spec.in Makefile.netware Makefile.vc Makefile.win32 get_ver.awk geoip.ico
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.in b/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.in
deleted file mode 100644
index c2a5d3f5..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.in
+++ /dev/null
@@ -1,707 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/GeoIP.spec.in \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
-	TODO config.guess config.sub depcomp install-sh ltmain.sh \
-	missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES = GeoIP.spec
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir dist dist-all distcheck
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GEOIP_VERSION_INFO = @GEOIP_VERSION_INFO@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-INCLUDES = -Wall -ansi
-SUBDIRS = \
-	libGeoIP	\
-	apps		\
-	conf		\
-	data		\
-	test		\
-	man
-
-EXTRA_DIST = README.OSX READMEwin32static.txt README.MinGW READMEwin32.txt GeoIPWinDLL.patch TODO bootstrap GeoIP.spec GeoIP.spec.in Makefile.netware Makefile.vc Makefile.win32 get_ver.awk geoip.ico
-all: all-recursive
-
-.SUFFIXES:
-am--refresh:
-	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    echo ' $(SHELL) ./config.status'; \
-	    $(SHELL) ./config.status;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	$(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	$(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-GeoIP.spec: $(top_builddir)/config.status $(srcdir)/GeoIP.spec.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool config.lt
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	$(am__remove_distdir)
-	test -d "$(distdir)" || mkdir "$(distdir)"
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-	-test -n "$(am__skip_mode_fix)" \
-	|| find "$(distdir)" -type d ! -perm -755 \
-		-exec chmod u+rwx,go+rx {} \; -o \
-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
-
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
-
-dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
-
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lzma*) \
-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
-	*.tar.xz*) \
-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(distdir)/_inst
-	chmod a-w $(distdir)
-	test -d $(distdir)/_build || exit 0; \
-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && am__cwd=`pwd` \
-	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
-	  && $(MAKE) $(AM_MAKEFLAGS) check \
-	  && $(MAKE) $(AM_MAKEFLAGS) install \
-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-	        distuninstallcheck \
-	  && chmod -R a-w "$$dc_install_base" \
-	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
-	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-	  && cd "$$am__cwd" \
-	  || exit 1
-	$(am__remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-	   || { echo "ERROR: files left after uninstall:" ; \
-	        if test -n "$(DESTDIR)"; then \
-	          echo "  (check DESTDIR support)"; \
-	        fi ; \
-	        $(distuninstallcheck_listfiles) ; \
-	        exit 1; } >&2
-distcleancheck: distclean
-	@if test '$(srcdir)' = . ; then \
-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-	  exit 1 ; \
-	fi
-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-	  || { echo "ERROR: files left in build directory after distclean:" ; \
-	       $(distcleancheck_listfiles) ; \
-	       exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -rf $(top_srcdir)/autom4te.cache
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am am--refresh check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-	dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
-	distcheck distclean distclean-generic distclean-libtool \
-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.netware b/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.netware
deleted file mode 100644
index 44a569de..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.netware
+++ /dev/null
@@ -1,301 +0,0 @@
-###################################################################
-#
-## Makefile for building GeoIP stuff (NetWare version - gnu make)
-## To build the binaries you need awk, GNU make and gcc / nlmconv
-## or Metrowerks CodeWarrior CommandlineTools.  
-## Usage: make -f Makefile.netware [all|dist|clean|distclean]
-##
-## hacked by: Guenter Knauf
-#
-###################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE	= c:/novell
-endif
-
-# Edit the path below to point to your zlib sources and libs.
-ifndef ZLIBSDK
-ZLIBSDK = d:/projects/cw/zlib-1.2.3
-endif
-
-ifndef DISTDIR
-DISTDIR	= GeoIP-$(GEOIP_VERSION_STR)-bin-nw
-endif
-ARCHIVE	= $(DISTDIR).zip
-
-# Edit the vars below to change NLM target settings.
-TARGETS	:= $(patsubst apps/%.c,%.nlm,$(wildcard apps/*.c))
-DESCR	= $(subst .def,,$(notdir $@)) $(GEOIP_VERSION_STR)
-COMPANY	= MaxMind LLC
-COPYR	= Copyright (C) 2003-2006 MaxMind LLC  All Rights Reserved.
-WWWURL	= http://www.maxmind.com/app/c
-MTSAFE	= YES
-STACK	= 64000
-#SCREEN	= none
-DATADIR	= sys:/etc/GeoIP
-CONFDIR	= sys:/etc
-
-# Comment the line below if you dont want to link with the static libz.lib.
-LSTATIC = 1
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to DEBUG or NDEBUG
-DB	= NDEBUG
-# DB	= DEBUG
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
-	OPT	= -O2
-	OBJDIR	= release
-else
-	OPT	= -g
-	OBJDIR	= debug
-endif
-OBJLIB	= lib-$(OBJDIR)
-
-# Include the version info retrieved from header.
--include $(OBJDIR)/version.inc
-
-# Global tools and toolflags used with all compilers.
-ZIP	= zip -qzR9
-CP	= cp -afv
-MV	= mv -fv
-# RM	= rm -f
-# if you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.com/development/prgtools/mkxdc.zip
-MPKXDC	= mkxdc
-
-# The following line defines your compiler.
-ifdef METROWERKS
-	CC = mwccnlm
-else
-	CC = gcc
-endif
-
-# Global flags for all compilers
-CFLAGS	= $(OPT) -D$(DB) -DNETWARE -nostdinc
-CFLAGS	+= -DGEOIPDATADIR=\"$(DATADIR)\"
-CFLAGS	+= -DSYSCONFDIR=\"$(CONFDIR)\"
-
-ifeq ($(CC),mwccnlm)
-LD	= mwldnlm
-LDFLAGS	= -nostdlib $(PRELUDE) $(LDLIBS) $(LIBOBJS) $(OBJDIR)/$(basename $@).o -o $@ -commandfile
-AR	= mwldnlm
-ARFLAGS	= -type library -w nocmdline $(OBJDIR)/*.o -o
-LIBEXT	= lib
-CFLAGS	+= -msgstyle gcc -gccinc -opt nointrinsics -proc 586
-CFLAGS	+= -relax_pointers
-#CFLAGS	+= -w on
-ifeq ($(LIBARCH),LIBC)
-	PRELUDE = $(SDK_LIBC)/imports/libcpre.o
-	CFLAGS += -align 4
-else
-	PRELUDE = "$(METROWERKS)/Novell Support/Libraries/runtime/prelude.obj"
-#	CFLAGS += -include "$(METROWERKS)/Novell Support/Headers/nlm_prefix.h"
-	CFLAGS += -align 1
-endif
-else
-LD	= nlmconv
-LDFLAGS	= -T
-AR	= ar
-ARFLAGS	= -cq
-LIBEXT	= lib
-CFLAGS	+= -fno-builtin -fpack-struct -fpcc-struct-return -fno-strict-aliasing
-CFLAGS	+= -Wall -Wno-unused #-Wno-format # -pedantic
-ifeq ($(LIBARCH),LIBC)
-	PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
-else
-	PRELUDE = $(SDK_CLIB)/imports/clibpre.gcc.o
-	CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
-endif
-endif
-DESCR += ($(LIBARCH)) - $(CC) build
-
-NDK_ROOT = $(NDKBASE)/ndk
-SDK_CLIB = $(NDK_ROOT)/nwsdk
-SDK_LIBC = $(NDK_ROOT)/libc
-
-ifeq ($(LIBARCH),LIBC)
-	INCLUDES += -I$(SDK_LIBC)/include -I$(SDK_LIBC)/include/nks
-	# INCLUDES += -I$(SDK_LIBC)/include/winsock
-	CFLAGS += -D_POSIX_SOURCE
-	# CFLAGS += -D__ANSIC__
-else
-	INCLUDES += -I$(SDK_CLIB)/include/nlm -I$(SDK_CLIB)/include
-	# INCLUDES += -I$(SDK_CLIB)/include/nlm/obsolete
-	CFLAGS += -DNETDB_USE_INTERNET
-endif
-
-INCLUDES += -I./libGeoIP
-INCLUDES += -I$(ZLIBSDK)
-CFLAGS	+= $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
-	XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
-	XDCOPT = -u
-endif
-
-LIBPATH	+= -L$(ZLIBSDK)/nw/release
-ifdef LSTATIC
-	LDLIBS	+= $(ZLIBSDK)/nw/release/libz.$(LIBEXT)
-else
-	IMPORTS	+= @$(ZLIBSDK)/nw/release/libz.imp
-	MODULES	+= libz
-endif
-
-ifeq ($(findstring linux,$(OSTYPE)),linux)
-DL	= '
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-endif
-
-vpath %.c ./apps ./libGeoIP
-
-LIBOBJS	= $(OBJLIB)/GeoIP.o $(OBJLIB)/GeoIPCity.o
-UPDOBJS	= $(OBJLIB)/GeoIPUpdate.o $(OBJLIB)/md5.o
-LIBOBJS += $(UPDOBJS)
-
-.PRECIOUS: $(OBJLIB)/%.o $(OBJDIR)/%.o $(OBJDIR)/%.def
-
-
-all: prebuild $(TARGETS)
-
-prebuild: $(OBJLIB) $(OBJDIR) $(OBJDIR)/version.inc
-
-dist: $(DISTDIR) all $(DISTDIR)/readme_bin.txt
-	@$(CP) *.nlm $(DISTDIR)
-	@$(CP) Changelog $(DISTDIR)
-	@$(CP) README $(DISTDIR)
-	@$(CP) conf/GeoIP.conf.default $(DISTDIR)
-	@$(CP) data/GeoIP.dat $(DISTDIR)
-	@echo Creating $(ARCHIVE)
-	@$(ZIP) $(ARCHIVE) $(DISTDIR)/* < $(DISTDIR)/readme_bin.txt
-
-clean:
-	-$(RM) -r $(OBJDIR) $(OBJLIB)
-	-$(RM) $(TARGETS)
-
-distclean:
-	-$(RM) -r $(DISTDIR)
-	-$(RM) $(ARCHIVE)
-
-%.nlm: $(OBJDIR)/%.def $(LIBOBJS) $(OBJDIR)/%.o $(OBJDIR)/%.xdc
-	@echo Linking $@
-	@-$(RM) $@
-	@$(LD) $(LDFLAGS) $<
-
-$(DISTDIR):
-	@mkdir $@
-
-$(OBJDIR):
-	@mkdir $@
-
-$(OBJLIB):
-	@mkdir $@
-
-$(OBJDIR)/%.o: %.c
-#	@echo Compiling $<
-	$(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJLIB)/%.o: %.c
-#	@echo Compiling $<
-	$(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: configure.in $(OBJDIR)
-	@echo Creating $@
-	@awk -f get_ver.awk $< > $@
-
-$(OBJDIR)/%.xdc: Makefile.netware
-	@echo Creating $@
-	@$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
-	@echo Creating $@
-	@echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
-	@echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
-	@echo $(DL)# All your changes will be lost!!$(DL) >> $@
-	@echo $(DL)#$(DL) >> $@
-	@echo $(DL)copyright "$(COPYR)"$(DL) >> $@
-	@echo $(DL)description "$(DESCR)"$(DL) >> $@
-	@echo $(DL)version $(GEOIP_VERSION)$(DL) >> $@
-ifdef NLMTYPE
-	@echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
-	@echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
-	@echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
-else
-	@echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifeq ($(DB),DEBUG)
-	@echo $(DL)debug$(DL) >> $@
-endif
-	@echo $(DL)threadname "$(subst .def,,$(notdir $@))"$(DL) >> $@
-ifdef XDCOPT
-	@echo $(DL)xdcdata $(@:.def=.xdc)$(DL) >> $@
-endif
-ifeq ($(LDRING),0)
-	@echo $(DL)flag_on 16$(DL) >> $@
-endif
-ifeq ($(LDRING),3)
-	@echo $(DL)flag_on 512$(DL) >> $@
-endif
-ifeq ($(LIBARCH),CLIB)
-	@echo $(DL)start _Prelude$(DL) >> $@
-	@echo $(DL)exit _Stop$(DL) >> $@
-	@echo $(DL)import @$(SDK_CLIB)/imports/clib.imp$(DL) >> $@
-	@echo $(DL)import @$(SDK_CLIB)/imports/threads.imp$(DL) >> $@
-	@echo $(DL)import @$(SDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
-	@echo $(DL)module clib$(DL) >> $@
-else
-	@echo $(DL)flag_on 64$(DL) >> $@
-	@echo $(DL)pseudopreemption$(DL) >> $@
-	@echo $(DL)start _LibCPrelude$(DL) >> $@
-	@echo $(DL)exit _LibCPostlude$(DL) >> $@
-	@echo $(DL)check _LibCCheckUnload$(DL) >> $@
-	@echo $(DL)import @$(SDK_LIBC)/imports/libc.imp$(DL) >> $@
-	@echo $(DL)import @$(SDK_LIBC)/imports/netware.imp$(DL) >> $@
-	@echo $(DL)module libc$(DL) >> $@
-endif
-ifdef MODULES
-	@echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
-	@echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
-	@echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(LD),nlmconv)
-ifdef LDLIBS
-	@echo $(DL)input $(LDLIBS)$(DL) >> $@
-endif
-	@echo $(DL)input $(PRELUDE)$(DL) >> $@
-	@echo $(DL)input $(LIBOBJS)$(DL) >> $@
-	@echo $(DL)input $(@:.def=.o)$(DL) >> $@
-	@echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
-endif
-
-$(DISTDIR)/readme_bin.txt: Makefile.netware
-	@echo Creating $@
-	@echo $(DL)This is a binary distribution for NetWare platform.$(DL) > $@
-	@echo $(DL)GeoIP version $(GEOIP_VERSION_STR)$(DL) >> $@
-ifndef LSTATIC
-	@echo $(DL)These binaries depend on libz.nlm in the search path!$(DL) >> $@
-endif
-	@echo $(DL)Please download the complete GeoIP package for$(DL) >> $@
-	@echo $(DL)any further documentation:$(DL) >> $@
-	@echo $(DL)$(WWWURL)$(DL) >> $@
-
-info:
-	@echo Targets to build: $(TARGETS)
-
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.vc b/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.vc
deleted file mode 100644
index bd575955..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.vc
+++ /dev/null
@@ -1,84 +0,0 @@
-#NMAKE makefile for Windows developers. 
-#Produces a static library (GeoIP.lib). 
- 
-################################################################# 
-# configuration section 
-################################################################ 
- 
-# place to put the GeoIP.dat database file 
-# !!! Please keep the 2 \\ as directory separators !!! 
-# 
-GEOIPDATADIR="C:\\Windows\\SYSTEM32" 
-# 
-# System inc, lib, and bin directories 
-!ifndef INSTDIR 
-INSTDIR="C:\GeoIP-1.4.5" 
-!endif 
- 
-# Location where GeoIP.lib should be installed my "make install" 
-INSTALL_LIB=$(INSTDIR)\Lib 
- 
-#Location where .h files should be installed by "make install". 
-INSTALL_INC=$(INSTDIR)\Include 
- 
-#Location where programs should be installed by "make install". 
-INSTALL_BIN=$(INSTDIR)\Bin 
- 
-################################################################ 
-# end configuration section 
-################################################################ 
- 
-DATA_DIR=data 
- 
-DATA_FILE=GeoIP.dat 
- 
-LIB_DIR = libGeoIP 
- 
-TEST_DIR=test 
- 
-APP_DIR=apps 
- 
-GEOIP_LIB = GeoIP.lib 
- 
-APP_PROGRAMS = geoiplookup.exe 
- 
-TEST_PROGRAMS = benchmark.exe test-geoip.exe 
- 
-all: GeoIP.lib test_progs app_progs 
- 
-$(GEOIP_LIB): 
-   cd $(LIB_DIR) 
-   $(MAKE) -nologo -f Makefile.vc GEOIPDATADIR=$(GEOIPDATADIR) 
-   cd .. 
- 
-test_progs: 
-   cd $(TEST_DIR) 
-   $(MAKE) -nologo -f Makefile.vc 
-   cd .. 
- 
-app_progs: 
-   cd $(APP_DIR) 
-   $(MAKE) -nologo -f Makefile.vc 
-   cd .. 
- 
-test:   $(GEOIP_LIB) test_progs 
-   cd $(TEST_DIR) 
-   benchmark.exe 
-   test-geoip.exe 
-   cd .. 
- 
-install: $(GEOIP_LIB) app_progs 
-   cd $(LIB_DIR) 
-   copy $(GEOIP_LIB) $(INSTALL_LIB) 
-   copy *.h $(INSTALL_INC) 
-   cd ..\$(APP_DIR) 
-   copy $(APP_PROGRAMS) $(INSTALL_BIN) 
-   cd ..\$(DATA_DIR) 
-   copy $(DATA_FILE) $(GEOIPDATADIR) 
-   cd .. 
- 
-clean: 
-   del $(LIB_DIR)\*.obj $(LIB_DIR)\*.lib \ 
-   $(APP_DIR)\*.obj $(APP_DIR)\*.exe \ 
-   $(TEST_DIR)\*.obj $(TEST_DIR)\*.exe 
- 
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.win32 b/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.win32
deleted file mode 100644
index a8902d67..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/Makefile.win32
+++ /dev/null
@@ -1,232 +0,0 @@
-###################################################################
-#
-## Makefile for building GeoIP stuff (Win32 version - gnu make)
-## To build the binaries you need awk, GNU make and MingW32 gcc
-## or Metrowerks CodeWarrior CommandlineTools.  
-## Usage: make -f Makefile.win32 [all|dist|clean|distclean]
-##
-## hacked by: Guenter Knauf
-#
-###################################################################
-
-# Edit the path below to point to your zlib sources and libs.
-ifndef ZLIBSDK
-ZLIBSDK = d:/projects/mingw32/zlib-1.2.3
-endif
-
-ifndef DISTDIR
-DISTDIR	= GeoIP-$(GEOIP_VERSION_STR)-bin-w32
-endif
-ARCHIVE	= $(DISTDIR).zip
-
-# Edit the vars below to change EXE target settings.
-TARGETS	:= $(patsubst apps/%.c,%.exe,$(wildcard apps/*.c))
-DESCR	= $(subst .rc,,$(notdir $@)) $(GEOIP_VERSION_STR)
-COMPANY	= MaxMind LLC
-COPYR	= � 2003-2006 MaxMind LLC  All Rights Reserved.
-WWWURL	= http://www.maxmind.com/app/c
-LICENSE	= Licensed under LGPL
-ICON 	= geoip.ico
-DATADIR	= c:/GeoIP
-CONFDIR	= c:/GeoIP
-
-# Comment the line below if you dont want to link with the static libz.lib.
-LSTATIC = 1
-
-# must be equal to DEBUG or NDEBUG
-DB	= NDEBUG
-# DB	= DEBUG
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
-	OPT	= -O2
-	OBJDIR	= release
-else
-	OPT	= -g
-	OBJDIR	= debug
-endif
-OBJLIB	= lib-$(OBJDIR)
-
-# Include the version info retrieved from header.
--include $(OBJDIR)/version.inc
-
-# Global tools and toolflags used with all compilers.
-ZIP	= zip -qzR9
-CP	= cp -afv
-MV	= mv -fv
-# RM	= rm -f
-RE	= reimp -d
-DLLTOOL	= dlltool
-DTFLAGS	= -k
-
-# The following line defines your compiler.
-ifdef METROWERKS
-	CC = mwcc
-else
-	CC = gcc
-endif
-
-# Global flags for all compilers
-CFLAGS	= $(OPT) -D$(DB) -D_WIN32
-# -nostdinc
-CFLAGS	+= -DHAVE_STDINT_H
-CFLAGS	+= -DGEOIPDATADIR=\"$(DATADIR)\"
-CFLAGS	+= -DSYSCONFDIR=\"$(CONFDIR)\"
-
-ifeq ($(CC),mwcc)
-LD	= mwld
-LDFLAGS	= -nostdlib
-LIBPATH	= -lr "$(METROWERKS)/MSL" -lr "$(METROWERKS)/Win32-x86 Support/Libraries"
-CWLIBS	= -lMSL_Runtime_x86.lib -lMSL_C_x86.lib -lMSL_Extras_x86.lib
-LDLIBS	= -lkernel32.lib -luser32.lib $(CWLIBS)
-AR	= mwld
-ARFLAGS	= -type library -w nocmdline $(OBJDIR)/*.o -o
-LIBEXT	= lib
-RC	= mwwinrc
-CFLAGS	+= -nostdinc
-CFLAGS	+= -msgstyle gcc -gccinc -opt nointrinsics -proc 586
-CFLAGS	+= -relax_pointers
-#CFLAGS	+= -w on
-CFLAGS	+= -ir "$(METROWERKS)/MSL" -ir "$(METROWERKS)/Win32-x86 Support/Headers"
-else
-LD	= gcc
-LDFLAGS	= -s
-AR	= ar
-ARFLAGS	= -cq
-LIBEXT	= a
-RC	= windres
-RCFLAGS	= -I rc -O coff -i
-CFLAGS	+= -Wall -Wno-unused # -Wno-format #-pedantic
-endif
-
-INCLUDES += -I./libGeoIP
-INCLUDES += -I$(ZLIBSDK)
-CFLAGS	+= $(INCLUDES)
-
-LDLIBS	+= -lwsock32
-LIBPATH	+= -L$(ZLIBSDK)
-ifdef LSTATIC
-	LDLIBS	+= -lz
-else
-	LDLIBS	+= -lzdll
-endif
-
-ifeq ($(findstring linux,$(OSTYPE)),linux)
-DL	= '
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-endif
-
-vpath %.c ./apps ./libGeoIP
-
-LIBOBJS	= $(OBJLIB)/GeoIP.o $(OBJLIB)/GeoIPCity.o
-UPDOBJS	= $(OBJLIB)/GeoIPUpdate.o $(OBJLIB)/md5.o
-LIBOBJS += $(UPDOBJS)
-
-.PRECIOUS: $(OBJLIB)/%.o $(OBJDIR)/%.o $(OBJDIR)/%.rc
-
-all: prebuild $(TARGETS)
-
-prebuild: $(OBJLIB) $(OBJDIR) $(OBJDIR)/version.inc
-
-dist: $(DISTDIR) all $(DISTDIR)/readme_bin.txt
-	@$(CP) *.exe $(DISTDIR)
-	@$(CP) Changelog $(DISTDIR)
-	@$(CP) README $(DISTDIR)
-	@$(CP) conf/GeoIP.conf.default $(DISTDIR)
-	@$(CP) data/GeoIP.dat $(DISTDIR)
-	@echo Creating $(ARCHIVE)
-	@$(ZIP) $(ARCHIVE) $(DISTDIR)/* < $(DISTDIR)/readme_bin.txt
-
-clean:
-	-$(RM) -r $(OBJDIR) $(OBJLIB)
-	-$(RM) $(TARGETS)
-
-distclean:
-	-$(RM) -r $(DISTDIR)
-	-$(RM) $(ARCHIVE)
-
-%.exe: $(OBJDIR)/%.res $(LIBOBJS) $(OBJDIR)/%.o
-	@echo Linking $@
-	@-$(RM) $@
-	$(LD) $(LDFLAGS) -o $@ $^ $(LIBPATH) $(LDLIBS)
-#	$(LD) $(LDFLAGS) $(LIBPATH) $(LIBFILES) -o $@ $^
-
-$(DISTDIR):
-	@mkdir $@
-
-$(OBJDIR):
-	@mkdir $@
-
-$(OBJLIB):
-	@mkdir $@
-
-$(OBJDIR)/%.o: %.c
-#	@echo Compiling $<
-	$(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJLIB)/%.o: %.c
-#	@echo Compiling $<
-	$(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: configure.in $(OBJDIR)
-	@echo Creating $@
-	@awk -f get_ver.awk $< > $@
-
-$(OBJDIR)/%.res: $(OBJDIR)/%.rc
-	@echo Creating $@
-	@$(RC) $(RCFLAGS) $< -o $@
-
-$(OBJDIR)/%.rc: Makefile.win32
-	@echo 1 VERSIONINFO > $@
-	@echo  FILEVERSION $(GEOIP_VERSION),0 >> $@
-	@echo  PRODUCTVERSION $(GEOIP_VERSION),0 >> $@
-	@echo  FILEFLAGSMASK 0x3fL >> $@
-	@echo  FILEOS 0x40004L >> $@
-	@echo  FILEFLAGS 0x0L >> $@
-	@echo  FILETYPE 0x1L >> $@
-	@echo  FILESUBTYPE 0x0L >> $@
-	@echo BEGIN >> $@
-	@echo   BLOCK "StringFileInfo" >> $@
-	@echo   BEGIN >> $@
-	@echo     BLOCK "040904E4" >> $@
-	@echo     BEGIN >> $@
-	@echo       VALUE "LegalCopyright","$(COPYR)\0" >> $@
-ifdef COMPANY
-	@echo       VALUE "CompanyName","$(COMPANY)\0" >> $@
-endif
-ifdef LICENSE
-	@echo       VALUE "License","$(LICENSE)\0" >> $@
-endif
-	@echo       VALUE "ProductName","$(basename $(notdir $@))\0" >> $@
-	@echo       VALUE "ProductVersion","$(GEOIP_VERSION_STR)\0" >> $@
-	@echo       VALUE "FileDescription","$(DESCR)\0" >> $@
-	@echo       VALUE "FileVersion","$(GEOIP_VERSION_STR)\0" >> $@
-	@echo       VALUE "InternalName","$(basename $(notdir $@))\0" >> $@
-	@echo       VALUE "OriginalFilename","$(basename $(notdir $@)).exe\0" >> $@
-	@echo       VALUE "WWW","$(WWWURL)\0" >> $@
-	@echo     END >> $@
-	@echo   END >> $@
-	@echo   BLOCK "VarFileInfo" >> $@
-	@echo   BEGIN >> $@
-	@echo     VALUE "Translation", 0x409, 1252 >> $@
-	@echo   END >> $@
-	@echo END >> $@
-ifdef ICON
-	@echo 10 ICON DISCARDABLE "$(ICON)" >> $@
-endif
-
-$(DISTDIR)/readme_bin.txt: Makefile.win32
-	@echo Creating $@
-	@echo $(DL)This is a binary distribution for Win32 platform.$(DL) > $@
-	@echo $(DL)GeoIP version $(GEOIP_VERSION_STR)$(DL) >> $@
-ifndef LSTATIC
-	@echo $(DL)These binaries depend on zlib1.dll in the search path!$(DL) >> $@
-endif
-	@echo $(DL)Please download the complete GeoIP package for$(DL) >> $@
-	@echo $(DL)any further documentation:$(DL) >> $@
-	@echo $(DL)$(WWWURL)$(DL) >> $@
-
-info:
-	@echo Targets to build: $(TARGETS)
-
-
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/NEWS b/Src/Plugins/DSP/sc_serv3/GeoIP/NEWS
deleted file mode 100644
index e69de29b..00000000
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/README b/Src/Plugins/DSP/sc_serv3/GeoIP/README
deleted file mode 100644
index a1b67256..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/README
+++ /dev/null
@@ -1,208 +0,0 @@
-				GeoIP 1.4.8
-				-----------
-
-*** Experimental IPv6 notice ***
-
-- the experimental IPv6 part of libGeoIP may change in the future.
-- It is possible, that geoiplookup and geoiplookup6 will merged.
-
-***
-
-The new perl script geoipupdate-pureperl.pl is a drop in replacement for
-geoipupdate. Useful, if you like to customize, pre or postprocess new or
-old databases. To archive the databases or signal apache whatever.
-Another advantage is, that geoipupdate-pureperl.pl is able to handle proxy
-requests even with authentication.
-
-IMPORTANT API Change for 1.3.x and above users for GeoIP Region database
-GeoIPRegion.region is no longer a pointer but an in-structure
-array so test the first byte of region == 0 rather testing if the region
-pointer is NULL.
-
-IMPORTANT API Change for 1.1.x and above users - as of GeoIP 1.1.0 the
-GeoIP_country_xxx_by_xxx functions return NULL if a country can not
-be found (it used to return '--' or 'N/A'.  Be sure to check the
-return value for NULL, to avoid segmentation faults!
-
-GeoIP is a C library that enables the user to find geographical and
-network information of an IP address.
-Included is a free GeoLite Country database
-that is updated at the beginning of every month.
-To download the latest free GeoLite Country database, go to:
-http://www.maxmind.com/app/geoip_country
-
-There is also a free city-level geolocation database, GeoLite City,
-available from:
-http://www.maxmind.com/app/geolitecity
-
-We also offer commercial GeoIP databases with greater accuracy and
-additional network information, for more details, see:
-http://www.maxmind.com/app/products
-
-As of version 1.4.5 geoipupdate can handle updates via  HTTP Proxy Server.
-If the environ variable http_proxy="http://proxy-host:port" is set.
-The username:password (as in FTP URLs) is not supported! 
-Thanks to Andrew Droffner for the patch!
-
-As of version 1.3.6, the GeoIP C library is thread safe, as long as
-GEOIP_CHECK_CACHE is not used.
-
-This module can be used to automatically select the geographically closest
-mirror, to analyze your web server logs to determine the countries of your
-visitors, for credit card fraud detection, and for software export controls. 
-
-If you use GeoIP to block access from high risk countries in order
-to reduce fraud or abuse, you should also block access from known
-proxy servers.  For more details, see:
-http://www.maxmind.com/app/proxy
-
-To install, run:
-
-./configure
-make
-make check
-make install
-
-The GeoIP C library relies on GNU make, not on BSD make
-
-MEMORY CACHING AND OTHER OPTIONS
-
-There are four options available:
-
-GEOIP_STANDARD - read database from filesystem, uses least memory.
-
-GEOIP_MEMORY_CACHE - load database into memory, faster performance
-	but uses more memory
-
-GEOIP_CHECK_CACHE - check for updated database.  If database has been updated,
-	reload filehandle and/or memory cache.
-
-GEOIP_INDEX_CACHE - just cache
-        the most frequently accessed index portion of the database, resulting
-        in faster lookups than GEOIP_STANDARD, but less memory usage than
-        GEOIP_MEMORY_CACHE - useful for larger databases such as
-	GeoIP Organization and GeoIP City.  Note, for GeoIP Country, Region
-	and Netspeed databases, GEOIP_INDEX_CACHE is equivalent to GEOIP_MEMORY_CACHE
-
-GEOIP_MMAP_CACHE - load database into mmap shared memory ( MMAP is not avail for WIN32 )
-
-The options can be combined using bit operators.  For example you can
-use both GEOIP_MEMORY_CACHE and GEOIP_CHECK_CACHE by calling:
-
-    GeoIP_open("/path/to/GeoIP.dat", GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE);
-
-By default, the city name is returned in iso-8859-1 charset.  To obtain the
-city name in utf8 instead, run:
-
-    GeoIP_set_charset(gi, GEOIP_CHARSET_UTF8);
-
-To get the netmask of the netblock of the last lookup, use GeoIP_last_netblock(gi).
-
-EXAMPLES
-
-See
-test/
-     test-geoip.c
-     test-geoip-region.c
-     test-geoip-city.c
-     test-geoip-isp.c
-     test-geoip-org.c
-     test-geoip-netspeed.c
-
-for examples of how to use the API.  The test-geoip.c program works with both the GeoLite and
-GeoIP Country databases.  The test-geoip-city.c program works with both the GeoLite and
-GeoIP City databases.  The other example programs require the paid databases available
-from http://www.maxmind.com/app/products
-
-AUTOMATIC UPDATES
-
-MaxMind offers a service where you can have your database updated
-automically each week.  For more details see:
-
-http://www.maxmind.com/app/license_key
-
-RESOURCES Mailinglists
-
-Please join the very low traffic mailinglists you are interested in.
-
-http://sourceforge.net/mail/?group_id=66844
-
-Preformance Patches.
-
-Patrick McManus provide a patch to enhance the lookupspeed in MEMORY_CACHE mode. If you feel, that the current MEMORY_CACHE mode is to slow try the patch:
-
-http://sourceforge.net/mailarchive/forum.php?forum_name=geoip-c-discuss&max_rows=25&style=nested&viewmonth=200803
-
-TROUBLESHOOTING
-
-If you run into trouble building your application with GeoIP support, try adding -fms-extensions to your CFLAGS. If you use Solaris and there C-Compiler use -features=extensions instead. These options enable unnamed union support and fix problems like: 'improper member use: dma_code' or 'GeoIPRecord' has no member named 'dma_code'.
-
-Note that it is recommended that you use GNU make.  Also, if you are using
-OpenBSD, GeoIP requires OpenBSD 3.1 or greater.
-
-if you get "cannot load shared object file: No such file or directory"
-error, add the directory libGeoIP.so was installed to to /etc/ld.so.conf
-and run ldconfig
-
-On Solaris, if you get a
-ld: fatal: relocations remain against allocatable but non-writable sections
-error, try running
-
-# make clean
-# ./configure --disable-shared
-# make
-
-If you get a "ar : command not found" error, make sure that ar is
-in your path.  On Solaris, ar is typically found in /usr/ccs/bin
-
-If you get a "geoipupdate.c:24: getopt.h: No such file or directory"
-error, run
-
-# export CPPFLAGS="-I/usr/local/include"
-
-(assuming that getopt.h is in /usr/local/include)
-
-If you get a "zlib.h: No such file or directory" error, make sure
-that the zlib development libraries are installed on your server.
-These are typically included in a "zlib-devel" package.
-
-If you get a "bad interpreter: No such file or directory" error
-when running ./configure, make sure that there are no DOS
-returns in the configure script.  To remove DOS returns,
-run perl -pi -e 's!\r!!g' configure.
-
-If gcc fails while consuming a large amount of memory, try
-compiling with CFLAGS=-O1 (or -O0) instead of the default -O2.
-It seems that some
-versions of gcc have a bug and consume 1 GB of memory when optimizing
-certain source files (the other source file where this was reported is
-from XORG X-Server). It happens at least with gcc 3.3.1 and with gcc
-4.2(.0).  Thanks to Kai Sch�tzl for the report.
-
-If GEOIP_MMAP_CACHE doesn't work on a 64bit machine, try adding
-the flag "MAP_32BIT" to the mmap call.
-
-If you get a "passing argument 3 of 'gethostbyname_r' from incompatible pointer type"
-error on AIX, download and/or untar a fresh copy of GeoIP.  ( To avoid cached
-results from a previous ./configure run )
-
-cd ./GeoIP-1.4.6
-then edit the file ./configure
-
-and delete these two lines:
-
-#define HAVE_GETHOSTBYNAME_R 1
-
-#define GETHOSTBYNAME_R_RETURNS_INT 1
-
-then save the configure script
-
-and build it as usual
-
-./configure
-make
-sudo make install
-
-
-
-To submit a patch, please contact support@maxmind.com 
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/README.MinGW b/Src/Plugins/DSP/sc_serv3/GeoIP/README.MinGW
deleted file mode 100644
index 8a192f95..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/README.MinGW
+++ /dev/null
@@ -1,13 +0,0 @@
-# how to build under MinGW/MSYS:
-# (first you need to build & "install" zlib)
-
-export "CFLAGS=-O3 -I/usr/local/include"
-export "LDFLAGS=-L/usr/local/lib -lwsock32"
-./configure
-make
-cp data/GeoIP.dat test/
-make check
-
-# note that GeoIP.dat file should be placed in the
-# same place as GeoIP-enabled executable modules!
-# there's NO DEFAULT PATH concept on Win32 :)
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/README.OSX b/Src/Plugins/DSP/sc_serv3/GeoIP/README.OSX
deleted file mode 100644
index 4dddf08c..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/README.OSX
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-#
-# Building OSX fat binaries is easy.
-#
-# - start in a clean directory.
-# - copy the shell script below to a file and edit the file to your needs.
-#
-# 1.) modify export GEOIP_ARCH='-arch i386 -arch x86_64 -arch ppc -arch ppc64'
-# to include all architectures you need.
-# 2.) add whatever you want to the ./configure line.
-# 3.) execute the script.
-# 4.) do a 'make install'
-#
-#
-# make clean or make distclean before building this
-#
-# tell systems before leopard that we like to build for 10.5 or higher
-# with MACOSX_DEPLOYMENT_TARGET=10.5
-# starting with leopard we have to add -mmacosx-version-min=10.5
-# to the CFLAGS and export MACOSX_DEPLOYMENT_TARGET!?
-
-##  for tiger, leopard and snow leopard you might use this
-## export GEOIP_ARCH='-arch i386 -arch x86_64 -arch ppc -arch ppc64'
-## export MACOSX_DEPLOYMENT_TARGET=10.4
-## export LDFLAGS=$GEOIP_ARCH
-## export CFLAGS="-mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk $GEOIP_ARCH"
-
-# here we go for leopard and snow leopard
-export GEOIP_ARCH='-arch i386 -arch x86_64 -arch ppc'
-export MACOSX_DEPLOYMENT_TARGET=10.5
-export LDFLAGS=$GEOIP_ARCH
-export CFLAGS="-g -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk $GEOIP_ARCH"
-./configure --disable-dependency-tracking
-perl -i.bak -pe'/^archive_cmds=/ and !/\bGEOIP_ARCH\b/ and s/-dynamiclib\b/-dynamiclib \\\$(GEOIP_ARCH)/' ./libtool
-make
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/READMEwin32.txt b/Src/Plugins/DSP/sc_serv3/GeoIP/READMEwin32.txt
deleted file mode 100644
index a81795cf..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/READMEwin32.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-=======================================================
-
-Environmental variables:
-
-1. GeoIPDBFileName is hardcoded to "\\windows\\system32\\GeoIP.dat" on
-windows in GeoIP.c
-2. #ifdef DLL is used to determine whether you want to have a DLL built
-in GeoIP.h
-
-You may want to change these depending on your system configuration
-and compiler.
-
-=======================================================
-Thanks to Chris Gibbs for supplying these instructions.
-
-The GeoIP C library should work under windows.  Note that it requires the zlib
-DLL.
-
-To install zlib with GeoIP:
-
-i) Downloda the zlib prebuilt DLL and static library from
-http://www.winimage.com/zLibDll/ look for "pre-built zlib DLL".
-
-Unzip it to some location on your hard drive, and in Project-->Settings ,
-go to the Link tab, and add the following 3 libraries:
-
-ws2_32.lib
-zlib.lib
-zlibstat.lib
-
-iii) Go to Tools-->Options, then the Directories tab, and add library paths to
-the locations of the zlib static libraries. You will also need to add the
-include path to zlib.h to the include paths.
-
-iv) NOTE: These instructions are for MS VC++ 6.0, but should be similar for
-previous versions, and for VC .NET.
-
-=======================================================
-Building GeoIP as a DLL
-
-Stanislaw Pusep has contributed a patch for building GeoIP as a DLL.
-You can find the patch in GeoIPWinDLL.patch
-
-Note a modified version of this patch is now merged into the main code.
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/READMEwin32static.txt b/Src/Plugins/DSP/sc_serv3/GeoIP/READMEwin32static.txt
deleted file mode 100644
index ba403836..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/READMEwin32static.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-To make a static GeoIP.lib, edit the top level
-Makefile.vc to reflect where the GeoIP.dat database
-file should be placed, as well as the locations
-of the lib, include, and bin directories for installation.
-Then give the command
-   nmake /f Makefile.vc
-This will build the GeoIP.lib library, as well as available
-application and test programs. The command
-   nmake /f Makefile.vc test
-will run available tests in the test/ subdirectory.
-   nmake /f Makefile.vc install
-will then copy the lib and header files to the locations
-specified in the top-level Makefile.vc, as well as
-available application programs in the apps/ subdirectory.
-   nmake /f Makefile.vc clean
-will remove intermediate object and executable files.
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/TODO b/Src/Plugins/DSP/sc_serv3/GeoIP/TODO
deleted file mode 100644
index 32a6c805..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/TODO
+++ /dev/null
@@ -1,54 +0,0 @@
-Rutger Okhuizen 7/31/2006
-
-Implement waiting algorithm for GEOIP_CHECK_CACHE,
-so stat is called on every lookup.
-
------------------------
-
-Maurice Cinquini
-
-*** ifndef WIN32 on netdb.h ? ***
-In GeoIPCity.c you don't "#ifndef WIN32" the netdb.h include,
-but in GeoIP.c you do.� Which one is right?
-
-*** Warnings in GeoIP-1.2.1 before I made changes ***
-GeoIPUpdate.c:73: warning: implicit declaration of function `_setup_dbfilename'
-��� I suggest a GeoIP_private.h file to include prototypes for
-��� _setup_dbfilename and other private functions also used by GeoIPCity.c
-
-*** Drop the GeoIP_*_by_addr API calls ***
-And now that I think of it, why do you need a seperate
-GeoIP_region_by_addr and GeoIP_region_by_name since
-the later does the work of the former just as efficently.
-For backward compatibility you could #define GeoIP_region_by_addr
-to GeoIP_region_by_name
-
-
-
-
-Performance improvements suggested by Jason Linhart
-1. cluster nodes to improve disk performance when using GEOIP_STANDARD
-2. evaluate preformance of replacing binary tree with nodes containing 4 children
-
-Write function to list countries, sorted by name.  Chris Gibbs contributed this which could be
-used:
-
- int GeoIP_country_sorted_index[246] = {
-  0, 5, 8, 61, 14, 3, 11, 7, 12, 6, 13, 9, 17, 1, 16, 15, 18, 32, 25, 21,
- 20,36, 22, 37, 27, 28, 33, 30, 19, 35, 34, 31, 104, 29, 24, 23, 26,
-114, 47, 38, 52,121, 41, 207, 46, 48, 53, 39, 49, 116, 42, 40, 45,
- 50, 44, 97, 51, 54, 55, 58, 57, 59, 60, 216, 62, 64, 203, 87, 66,
- 63, 68, 2, 71, 73, 70, 69, 74, 75, 80, 170,208, 76, 84, 79, 56, 81,
-82, 88, 83, 78, 86, 91, 90, 85, 92, 93, 98, 95, 228, 96,94, 99, 107,
- 103, 100, 106, 105, 101, 102, 108, 109, 111, 110, 122, 112, 115,
- 118,119, 120, 113, 123, 132, 124, 129, 128, 133, 126, 130, 131,
- 143, 139, 137,151,153, 150, 140, 148, 138, 145, 146, 149, 238,
- 152, 72, 136, 135, 142, 147, 134,154, 141, 155, 164, 163, 161,
-10, 156, 166, 160, 157, 159, 165, 158, 144, 162, 167,173, 180,
-178, 168, 171, 181, 169, 172, 176, 174, 179, 177, 182, 183, 184,
-185,186, 193, 117, 125, 175, 229, 236, 198, 202, 187, 199, 189,
-197, 192, 196,194,188, 200, 240, 89, 67, 127, 190, 201, 195, 205,
-191, 43, 204, 220, 211, 221,210,209, 212, 215, 218, 214, 217,
-213,206, 219, 223, 222, 4, 77, 225, 224, 226,227,234, 230, 233,
- 231,232, 235, 65, 237, 239, 242, 241, 243, 244, 245};
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/aclocal.m4 b/Src/Plugins/DSP/sc_serv3/GeoIP/aclocal.m4
deleted file mode 100644
index 91c7b241..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/aclocal.m4
+++ /dev/null
@@ -1,8917 +0,0 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
-[m4_warning([this file was generated for autoconf 2.65.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
-
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 56 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-		   [m4_fatal([Libtool version $1 or higher is required],
-		             63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\	*)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-_LT_PROG_ECHO_BACKSLASH
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-	[m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-	[tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-	   m4_quote(lt_decl_varnames),
-	m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-					   [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-	dnl If the libtool generation code has been placed in $CONFIG_LT,
-	dnl instead of duplicating it all over again into config.status,
-	dnl then we will have config.status run $CONFIG_LT later, so it
-	dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
-  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
-  ;;
-esac
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2008 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-if test "$no_create" != yes; then
-  lt_cl_success=:
-  test "$silent" = yes &&
-    lt_config_lt_args="$lt_config_lt_args --quiet"
-  exec AS_MESSAGE_LOG_FD>/dev/null
-  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-  exec AS_MESSAGE_LOG_FD>>config.log
-  $lt_cl_success || AS_EXIT(1)
-fi
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_XSI_SHELLFNS
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi])
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-	[lt_cv_ld_exported_symbols_list=yes],
-	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-	 [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X[$]1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-[$]*
-_LT_EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "[$]0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(lt_ECHO)
-])
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
-    [An echo program that does not interpret backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line __oline__ "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-	[Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-	[], [
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-       [shlibpath_overrides_runpath=yes])])
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_DECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method == "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-	[Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-const struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
-	else
-	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-AC_MSG_CHECKING([for $compiler option to produce PIC])
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	else
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  xlc* | xlC*)
-	    # IBM XL 8.0 on PPC
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd* | netbsdelf*-gnu)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-	;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-	[Additional compiler flags for building library objects])
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-	[Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-  ;;
-  cygwin* | mingw* | cegcc*)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  linux* | k*bsd*-gnu)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-  ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	_LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[[012]]|aix4.[[012]].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	_LT_TAGVAR(link_all_deplibs, $1)=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-      # FIXME: Should let the user specify the lib program.
-      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	_LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	*)
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        AC_LINK_IFELSE(int foo(void) {},
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-        )
-        LDFLAGS="$save_LDFLAGS"
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-	motorola)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	_LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-        _LT_TAGVAR(allow_undefined_flag, $1)=
-        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-        then
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        else
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-        fi
-        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [fix_srcfile_path], [1],
-    [Fix the shell variable $srcfile for the compiler])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report which library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-        # as there is no search path for DLLs.
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-        _LT_TAGVAR(always_export_symbols, $1)=no
-        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-          # If the export-symbols file already is a .def file (1st line
-          # is EXPORTS), use it as is; otherwise, prepend...
-          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    cp $export_symbols $output_objdir/$soname.def;
-          else
-	    echo EXPORTS > $output_objdir/$soname.def;
-	    cat $export_symbols >> $output_objdir/$soname.def;
-          fi~
-          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-        else
-          _LT_TAGVAR(ld_shlibs, $1)=no
-        fi
-        ;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      freebsd[[12]]*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-	_LT_TAGVAR(hardcode_direct, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
-	      fi
-	    fi
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-	    ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
-	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-		$RANLIB $oldlib'
-	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 will use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  xl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	      _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='echo'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=echo
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-		;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	    case $host_os in
-	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-	    output_verbose_link_cmd='echo'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-	      fi
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-])
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case $p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       else
-	 prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
-	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
-	 fi
-       fi
-       ;;
-
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-	 fi
-       else
-	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  CC=${F77-"f77"}
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  CC=${FC-"f95"}
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC="$lt_save_CC"
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $[*] ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-dnl func_dirname_and_basename
-dnl A portable version of this function is already defined in general.m4sh
-dnl so there is no need for it here.
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[[^=]]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$[@]"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]+=\$[2]"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]=\$$[1]\$[2]"
-}
-
-_LT_EOF
-    ;;
-  esac
-])
-
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-		      [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
-  ])
-])# _LT_SET_OPTIONS
-
-
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [0], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-	[Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-	[Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-	 [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-		 [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-		 [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-		 [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-		 [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-		 [m4_define([_LTDL_TYPE], [convenience])])
-
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-	     [m4_foreach([_Lt_suffix],
-		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-		 [lt_append([$1], [$2], [$3])$4],
-		 [$5])],
-	  [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-	[$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
-
-# ltversion.m4 -- version numbers			-*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# Generated from ltversion.in.
-
-# serial 3017 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.2.6b])
-m4_define([LT_PACKAGE_REVISION], [1.3017])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6b'
-macro_revision='1.3017'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
-
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 4 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.1], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 9
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 10
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 16
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES(CC)],
-		  [define([AC_PROG_CC],
-			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES(CXX)],
-		  [define([AC_PROG_CXX],
-			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES(OBJC)],
-		  [define([AC_PROG_OBJC],
-			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
-
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST(install_sh)])
-
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 5
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
-
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
-
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-  rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.am b/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.am
deleted file mode 100644
index 46cf501f..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-INCLUDES = 	\
-	-I$(top_srcdir)/libGeoIP		\
-	-Wall
-
-AM_CPPFLAGS = -DSYSCONFDIR=\"$(sysconfdir)\" -Wall
-
-DEPS = $(top_builddir)/libGeoIP/libGeoIP.la
-LDADDS = $(top_builddir)/libGeoIP/libGeoIP.la
-
-bin_PROGRAMS = geoiplookup geoiplookup6 geoipupdate
-
-geoiplookup_SOURCES = geoiplookup.c
-geoiplookup_LDFLAGS =
-geoiplookup_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-geoiplookup_LDADD = $(top_builddir)/libGeoIP/libGeoIP.la
-
-geoiplookup6_SOURCES = geoiplookup6.c
-geoiplookup6_LDFLAGS =
-geoiplookup6_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-geoiplookup6_LDADD = $(top_builddir)/libGeoIP/libGeoIP.la
-
-geoipupdate_SOURCES = geoipupdate.c
-geoipupdate_LDFLAGS =
-geoipupdate_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la $(top_builddir)/libGeoIP/libGeoIPUpdate.la
-geoipupdate_LDADD = $(top_builddir)/libGeoIP/libGeoIPUpdate.la $(top_builddir)/libGeoIP/libGeoIP.la
-EXTRA_DIST = geoipupdate-pureperl.pl Makefile.vc
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.in b/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.in
deleted file mode 100644
index 934f6b6a..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.in
+++ /dev/null
@@ -1,544 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-bin_PROGRAMS = geoiplookup$(EXEEXT) geoiplookup6$(EXEEXT) \
-	geoipupdate$(EXEEXT)
-subdir = apps
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
-am_geoiplookup_OBJECTS = geoiplookup.$(OBJEXT)
-geoiplookup_OBJECTS = $(am_geoiplookup_OBJECTS)
-geoiplookup_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(geoiplookup_LDFLAGS) $(LDFLAGS) -o $@
-am_geoiplookup6_OBJECTS = geoiplookup6.$(OBJEXT)
-geoiplookup6_OBJECTS = $(am_geoiplookup6_OBJECTS)
-geoiplookup6_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(geoiplookup6_LDFLAGS) $(LDFLAGS) -o $@
-am_geoipupdate_OBJECTS = geoipupdate.$(OBJEXT)
-geoipupdate_OBJECTS = $(am_geoipupdate_OBJECTS)
-geoipupdate_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(geoipupdate_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = $(geoiplookup_SOURCES) $(geoiplookup6_SOURCES) \
-	$(geoipupdate_SOURCES)
-DIST_SOURCES = $(geoiplookup_SOURCES) $(geoiplookup6_SOURCES) \
-	$(geoipupdate_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GEOIP_VERSION_INFO = @GEOIP_VERSION_INFO@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-INCLUDES = \
-	-I$(top_srcdir)/libGeoIP		\
-	-Wall
-
-AM_CPPFLAGS = -DSYSCONFDIR=\"$(sysconfdir)\" -Wall
-DEPS = $(top_builddir)/libGeoIP/libGeoIP.la
-LDADDS = $(top_builddir)/libGeoIP/libGeoIP.la
-geoiplookup_SOURCES = geoiplookup.c
-geoiplookup_LDFLAGS = 
-geoiplookup_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-geoiplookup_LDADD = $(top_builddir)/libGeoIP/libGeoIP.la
-geoiplookup6_SOURCES = geoiplookup6.c
-geoiplookup6_LDFLAGS = 
-geoiplookup6_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-geoiplookup6_LDADD = $(top_builddir)/libGeoIP/libGeoIP.la
-geoipupdate_SOURCES = geoipupdate.c
-geoipupdate_LDFLAGS = 
-geoipupdate_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la $(top_builddir)/libGeoIP/libGeoIPUpdate.la
-geoipupdate_LDADD = $(top_builddir)/libGeoIP/libGeoIPUpdate.la $(top_builddir)/libGeoIP/libGeoIP.la
-EXTRA_DIST = geoipupdate-pureperl.pl Makefile.vc
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu apps/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu apps/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-binPROGRAMS: $(bin_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	for p in $$list; do echo "$$p $$p"; done | \
-	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-	sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
-	    else { print "f", $$3 "/" $$4, $$1; } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	    test -z "$$files" || { \
-	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-binPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
-	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-geoiplookup$(EXEEXT): $(geoiplookup_OBJECTS) $(geoiplookup_DEPENDENCIES) 
-	@rm -f geoiplookup$(EXEEXT)
-	$(geoiplookup_LINK) $(geoiplookup_OBJECTS) $(geoiplookup_LDADD) $(LIBS)
-geoiplookup6$(EXEEXT): $(geoiplookup6_OBJECTS) $(geoiplookup6_DEPENDENCIES) 
-	@rm -f geoiplookup6$(EXEEXT)
-	$(geoiplookup6_LINK) $(geoiplookup6_OBJECTS) $(geoiplookup6_LDADD) $(LIBS)
-geoipupdate$(EXEEXT): $(geoipupdate_OBJECTS) $(geoipupdate_DEPENDENCIES) 
-	@rm -f geoipupdate$(EXEEXT)
-	$(geoipupdate_LINK) $(geoipupdate_OBJECTS) $(geoipupdate_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geoiplookup.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geoiplookup6.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geoipupdate.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-	for dir in "$(DESTDIR)$(bindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.vc b/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.vc
deleted file mode 100644
index 266a9319..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/Makefile.vc
+++ /dev/null
@@ -1,25 +0,0 @@
-#NMAKE makefile for Windows developers. 
-#Produces a static library (GeoIP.lib). 
- 
-COMPILER=cl 
- 
-LINK = link -nologo 
- 
-CFLAGS=-DWIN32 -MD -nologo 
- 
-GEOIPINC = -I..\libGeoIP 
- 
-CC1 = $(COMPILER) $(CFLAGS) $(GEOIPINC) 
- 
-GEOIPLIB = ..\libGeoIP\GeoIP.lib 
- 
-EXTRA_LIBS= advapi32.lib wsock32.lib 
- 
-AR=lib 
- 
-APPS: geoiplookup.exe 
- 
-geoiplookup.exe: geoiplookup.c 
-   $(CC1) -c geoiplookup.c 
-   $(LINK) geoiplookup.obj $(GEOIPLIB)
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoiplookup.c b/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoiplookup.c
deleted file mode 100644
index bd3c6fca..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoiplookup.c
+++ /dev/null
@@ -1,401 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* geoiplookup.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "GeoIP.h"
-#include "GeoIPCity.h"
-#include "GeoIP_internal.h"
-
-#if defined(_WIN32)
-# ifndef uint32_t 
-typedef unsigned int uint32_t; 
-# endif 
-#endif 
-
-void geoiplookup(GeoIP* gi,char *hostname,int i);
-
-void usage() {
-	fprintf(stderr,"Usage: geoiplookup [-d custom_dir] [-f custom_file] [-v] [-i] <ipaddress|hostname>\n");
-}
-
-/* extra info used in _say_range_ip */
-int info_flag = 0;
-
-int main (int argc, char *argv[]) {
-	char * hostname = NULL;
-	char * db_info;
-	GeoIP * gi;
-	int i;
-	char *custom_directory = NULL;
-	char *custom_file = NULL;
-	int version_flag = 0;
-
-	if (argc < 2) {
-		usage();
-		exit(1);
-	} 
-	i = 1;
-	while (i < argc) {
-		if (strcmp(argv[i],"-v") == 0) {
-			version_flag = 1;
-		} else if (strcmp(argv[i],"-i") == 0) {
-			info_flag = 1;
-                } else if (strcmp(argv[i],"-f") == 0) {
-			if ((i+1) < argc){
-				i++;
-				custom_file = argv[i];
-			}
-		} else if (strcmp(argv[i],"-d") == 0) {
-			if ((i+1) < argc){
-				i++;
-				custom_directory = argv[i];
-			}
-		} else {
-			hostname = argv[i];
-		}
-		i++;
-	}
-	if (hostname == NULL) {
-		usage();
-		exit(1);
-	}
-
-	if (custom_directory != NULL) {
-		GeoIP_setup_custom_directory(custom_directory);
-	}
-	_GeoIP_setup_dbfilename();
-
-	if (custom_file != NULL) {
-		gi = GeoIP_open(custom_file, GEOIP_STANDARD);
-		
-		if (NULL == gi) {
-			printf("%s not available, skipping...\n", custom_file);
-		} else {
-		  i = GeoIP_database_edition(gi);
-			if (version_flag == 1) {
-				db_info = GeoIP_database_info(gi);
-				printf("%s: %s\n",GeoIPDBDescription[i],db_info == NULL ? "": db_info );
-				free(db_info);
-			} else {
-				geoiplookup(gi,hostname,i);
-			}
-		}
-		GeoIP_delete(gi);
-	} else {
-		/* iterate through different database types */
-		for (i = 0; i < NUM_DB_TYPES; ++i) {
-			if (GeoIP_db_avail(i)) {
-				gi = GeoIP_open_type(i, GEOIP_STANDARD);
-				if (NULL == gi) {
-					printf("%s not available, skipping...\n", GeoIPDBDescription[i]);
-				} else {
-					if (version_flag == 1) {
-						db_info = GeoIP_database_info(gi);
-						printf("%s: %s\n",GeoIPDBDescription[i], db_info == NULL ? "" : db_info );
-						free(db_info);
-					} else {
-						geoiplookup(gi,hostname,i);
-					}
-				}
-				GeoIP_delete(gi);
-			}
-		}
-	}
-	return 0;
-}
-
-static const char * _mk_NA( const char * p ){
- return p ? p : "N/A";
-}
-
-static void _mk_conf_str( unsigned char val , char * to, int size){
-  if ( ( val & 0x7f ) == 0x7f ){
-    snprintf(to, 5, "N/A");
-    return;
-  }
-  snprintf(to, 5, "%d", val);
-  return;
-}
-
-static unsigned long
-__addr_to_num(const char *addr)
-{
-	unsigned int    c, octet, t;
-	unsigned long   ipnum;
-	int             i = 3;
-
-	octet = ipnum = 0;
-	while ((c = *addr++)) {
-		if (c == '.') {
-			if (octet > 255)
-				return 0;
-			ipnum <<= 8;
-			ipnum += octet;
-			i--;
-			octet = 0;
-		} else {
-			t = octet;
-			octet <<= 3;
-			octet += t;
-			octet += t;
-			c -= '0';
-			if (c > 9)
-				return 0;
-			octet += c;
-		}
-	}
-	if ((octet > 255) || (i != 0))
-		return 0;
-	ipnum <<= 8;
-	return ipnum + octet;
-}
-
-
-
-/* ptr must be a memory area with at least 16 bytes */
-static char *__num_to_addr_r (unsigned long ipnum, char * ptr) {
-	char *cur_str;
-	int octet[4];
-	int num_chars_written, i;
-
-	cur_str = ptr;
-
-	for (i = 0; i<4; i++) {
-		octet[3 - i] = ipnum % 256;
-		ipnum >>= 8;
-	}
-
-	for (i = 0; i<4; i++) {
-		num_chars_written = sprintf(cur_str, "%d", octet[i]);
-		cur_str += num_chars_written;
-
-		if (i < 3) {
-			cur_str[0] = '.';
-			cur_str++;
-		}
-	}
-
-	return ptr;
-}
-
-void _say_range_by_ip(GeoIP * gi, uint32_t ipnum ) {
-  unsigned long last_nm, mask, low, hi;
-  char ipaddr[16];
-  char tmp[16];
-  char ** range;
-
-  if ( info_flag == 0 )
-    return; /* noop unless extra information is requested */
-
-  range = GeoIP_range_by_ip( gi, __num_to_addr_r( ipnum, ipaddr ) );
-  if ( range == NULL )
-    return;
-
-  printf ( "  ipaddr: %s\n", ipaddr );
-
-  printf( "  range_by_ip:  %s - %s\n", range[0], range[1] );
-  last_nm = GeoIP_last_netmask(gi);
-  mask    = 0xffffffff << ( 32 - last_nm );
-  low     = ipnum & mask;
-  hi      = low + ( 0xffffffff & ~mask );
-  printf( "  network:      %s - %s ::%ld\n",
-    __num_to_addr_r( low, ipaddr ),
-    __num_to_addr_r( hi,  tmp ),
-    last_nm
-  );
-  printf( "  ipnum: %u\n", ipnum );
-  printf( "  range_by_num: %lu - %lu\n", __addr_to_num(range[0]), __addr_to_num(range[1]) );
-  printf( "  network num:  %lu - %lu ::%lu\n", low, hi, last_nm );
-
-  GeoIP_range_by_ip_delete(range);
-}
-
-void
-geoiplookup(GeoIP * gi, char *hostname, int i)
-{
-	const char     *country_code;
-	const char     *country_name;
-	const char     *domain_name;
-        const char     *asnum_name;
-	int             netspeed;
-	int             country_id;
-	GeoIPRegion    *region;
-	GeoIPRecord    *gir;
-	const char     *org;
-	uint32_t        ipnum;
-	
-	ipnum = _GeoIP_lookupaddress(hostname);
-	if (ipnum == 0) {
-		printf("%s: can't resolve hostname ( %s )\n", GeoIPDBDescription[i], hostname);
-
-	}
-	else {
-
-		if (GEOIP_DOMAIN_EDITION == i) {
-			domain_name = GeoIP_name_by_ipnum(gi, ipnum);
-			if (domain_name == NULL) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s\n", GeoIPDBDescription[i], domain_name);
-                                _say_range_by_ip(gi, ipnum);
-			}
-		}
-		else if (GEOIP_LOCATIONA_EDITION == i || GEOIP_ACCURACYRADIUS_EDITION == i || GEOIP_ASNUM_EDITION == i || GEOIP_USERTYPE_EDITION == i || GEOIP_REGISTRAR_EDITION == i || GEOIP_NETSPEED_EDITION_REV1 == i ) {
-			asnum_name = GeoIP_name_by_ipnum(gi, ipnum);
-			if (asnum_name == NULL) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s\n", GeoIPDBDescription[i], asnum_name);
-                                _say_range_by_ip(gi, ipnum);
-			}
-		}
-		else if (GEOIP_COUNTRY_EDITION == i) {
-                        country_id = GeoIP_id_by_ipnum(gi, ipnum);
-			country_code = GeoIP_country_code[country_id];
-			country_name = GeoIP_country_name[country_id];
-			if (country_id == 0) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s, %s\n", GeoIPDBDescription[i], country_code, country_name);
-                                _say_range_by_ip(gi, ipnum);
-			}
-		}
-		else if (GEOIP_REGION_EDITION_REV0 == i || GEOIP_REGION_EDITION_REV1 == i) {
-			region = GeoIP_region_by_ipnum(gi, ipnum);
-			if (NULL == region || region->country_code[0] == '\0' ) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s, %s\n", GeoIPDBDescription[i], region->country_code, region->region);
-                                _say_range_by_ip(gi, ipnum);
-				GeoIPRegion_delete(region);
-			}
-		}
-		else if (GEOIP_CITY_EDITION_REV0 == i) {
-			gir = GeoIP_record_by_ipnum(gi, ipnum);
-			if (NULL == gir) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s, %s, %s, %s, %f, %f\n", GeoIPDBDescription[i], gir->country_code, _mk_NA(gir->region),
-				       _mk_NA(gir->city), _mk_NA(gir->postal_code), gir->latitude, gir->longitude);
-                                _say_range_by_ip(gi, ipnum);
-                                GeoIPRecord_delete(gir);
-			}
-		}
-		else if (GEOIP_CITY_EDITION_REV1 == i) {
-			gir = GeoIP_record_by_ipnum(gi, ipnum);
-			if (NULL == gir) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s, %s, %s, %s, %f, %f, %d, %d\n", GeoIPDBDescription[i], gir->country_code, _mk_NA(gir->region), _mk_NA(gir->city), _mk_NA(gir->postal_code),
-				       gir->latitude, gir->longitude, gir->metro_code, gir->area_code);
-                                _say_range_by_ip(gi, ipnum);
-                                GeoIPRecord_delete(gir);
-			}
-		}
-		else if (GEOIP_CITYCONFIDENCE_EDITION == i) {
-			gir = GeoIP_record_by_ipnum(gi, ipnum);
-			if (NULL == gir) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-                                char country_str[5], region_str[5], city_str[5], postal_str[5];
-                                _mk_conf_str(gir->country_conf, country_str, 5);
-                                _mk_conf_str(gir->region_conf,  region_str,  5);
-                                _mk_conf_str(gir->city_conf,    city_str,    5);
-                                _mk_conf_str(gir->postal_conf,  postal_str,  5);
-
-				printf("%s: %s, %s, %s, %s, %f, %f, %d, %d, %s, %s, %s, %s\n", GeoIPDBDescription[i], gir->country_code, _mk_NA(gir->region), _mk_NA(gir->city), _mk_NA(gir->postal_code),
-				       gir->latitude, gir->longitude, gir->metro_code, gir->area_code,
-                                       country_str, region_str, city_str, postal_str                       
-                                     );
-                                _say_range_by_ip(gi, ipnum);
-                                GeoIPRecord_delete(gir);                                
-			}
-		}
-		else if (GEOIP_CITYCONFIDENCEDIST_EDITION == i) {
-			gir = GeoIP_record_by_ipnum(gi, ipnum);
-			if (NULL == gir) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-                                char country_str[5], region_str[5], city_str[5], postal_str[5], accuracy_radius_str[5];
-                                _mk_conf_str(gir->country_conf, country_str, 5);
-                                _mk_conf_str(gir->region_conf,  region_str,  5);
-                                _mk_conf_str(gir->city_conf,    city_str,    5);
-                                _mk_conf_str(gir->postal_conf,  postal_str,  5);
-                                if (gir->accuracy_radius != 1023){
-                                  sprintf(accuracy_radius_str, "%d", gir->accuracy_radius );
-} else {
-                                strcpy(accuracy_radius_str,"N/A");}
-  
-				printf("%s: %s, %s, %s, %s, %f, %f, %d, %d, %s, %s, %s, %s, %s\n", GeoIPDBDescription[i], gir->country_code, _mk_NA(gir->region), _mk_NA(gir->city), _mk_NA(gir->postal_code),
-				       gir->latitude, gir->longitude, gir->metro_code, gir->area_code,
-                                       country_str, region_str, city_str, postal_str, accuracy_radius_str
-                                     );
-                                _say_range_by_ip(gi, ipnum);
-                                GeoIPRecord_delete(gir);                                
-			}
-		}
-		else if (GEOIP_ORG_EDITION == i || GEOIP_ISP_EDITION == i) {
-			org = GeoIP_org_by_ipnum(gi, ipnum);
-			if (org == NULL) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s\n", GeoIPDBDescription[i], org);
-                                _say_range_by_ip(gi, ipnum);
-			}
-		}
-		else if (GEOIP_NETSPEED_EDITION == i) {
-			netspeed = GeoIP_id_by_ipnum(gi, ipnum);
-			if (netspeed == GEOIP_UNKNOWN_SPEED) {
-				printf("%s: Unknown\n", GeoIPDBDescription[i]);
-			}
-			else if (netspeed == GEOIP_DIALUP_SPEED) {
-				printf("%s: Dialup\n", GeoIPDBDescription[i]);
-			}
-			else if (netspeed == GEOIP_CABLEDSL_SPEED) {
-				printf("%s: Cable/DSL\n", GeoIPDBDescription[i]);
-			}
-			else if (netspeed == GEOIP_CORPORATE_SPEED) {
-				printf("%s: Corporate\n", GeoIPDBDescription[i]);
-			}
-                        _say_range_by_ip(gi, ipnum);
-		}
-		else {
-
-		/*
-		 * Silent ignore IPv6 databases. Otherwise we get annoying 
-		 * messages whenever we have a mixed environment IPv4 and
-		 *  IPv6
-		 */
-		
-		/*
-		 * printf("Can not handle database type -- try geoiplookup6\n");
-		 */
-		;
-		}
-	}
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoiplookup6.c b/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoiplookup6.c
deleted file mode 100644
index dc0ff9ba..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoiplookup6.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* geoiplookup.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include <GeoIP.h>
-#include <GeoIPCity.h>
-#include <GeoIP_internal.h>
-void geoiplookup(GeoIP* gi,char *hostname,int i);
-
-void usage() {
-	fprintf(stderr,"Usage: geoiplookup [-d custom_dir] [-f custom_file] [-v] <ipaddress|hostname>\n");
-}
-
-int main (int argc, char *argv[]) {
-	char * hostname = NULL;
-	char * db_info;
-	GeoIP * gi;
-	int i;
-	char *custom_directory = NULL;
-	char *custom_file = NULL;
-	int version_flag = 0;
-
-	if (argc < 2) {
-		usage();
-		exit(1);
-	} 
-	i = 1;
-	while (i < argc) {
-		if (strcmp(argv[i],"-v") == 0) {
-			version_flag = 1;
-		} else if (strcmp(argv[i],"-f") == 0) {
-			if ((i+1) < argc){
-				i++;
-				custom_file = argv[i];
-			}
-		} else if (strcmp(argv[i],"-d") == 0) {
-			if ((i+1) < argc){
-				i++;
-				custom_directory = argv[i];
-			}
-		} else {
-			hostname = argv[i];
-		}
-		i++;
-	}
-	if (hostname == NULL) {
-		usage();
-		exit(1);
-	}
-
-	if (custom_directory != NULL) {
-		GeoIP_setup_custom_directory(custom_directory);
-	}
-	_GeoIP_setup_dbfilename();
-
-	if (custom_file != NULL) {
-		gi = GeoIP_open(custom_file, GEOIP_STANDARD);
-		if (NULL == gi) {
-			printf("%s not available, skipping...\n", custom_file);
-		} else {
-		  i = GeoIP_database_edition(gi);
-			if (version_flag == 1) {
-				db_info = GeoIP_database_info(gi);
-				printf("%s: %s\n",GeoIPDBDescription[i],db_info == NULL ? "": db_info );
-				free(db_info);
-			} else {
-				geoiplookup(gi,hostname,i);
-			}
-		}
-		GeoIP_delete(gi);
-	} else {
-		/* iterate through different database types */
-		for (i = 0; i < NUM_DB_TYPES; ++i) {
-			if (GeoIP_db_avail(i)) {
-				gi = GeoIP_open_type(i, GEOIP_STANDARD);
-				if (NULL == gi) {
-					printf("%s not available, skipping...\n", GeoIPDBDescription[i]);
-				} else {
-					if (version_flag == 1) {
-						db_info = GeoIP_database_info(gi);
-						printf("%s: %s\n",GeoIPDBDescription[i],db_info);
-						free(db_info);
-					} else {
-						geoiplookup(gi,hostname,i);
-					}
-				}
-				GeoIP_delete(gi);
-			}
-		}
-	}
-	return 0;
-}
-
-static const char * _mk_NA( const char * p ){
- return p ? p : "N/A";
-}
-
-void
-geoiplookup(GeoIP * gi, char *hostname, int i)
-{
-	const char     *country_code;
-	const char     *country_name;
-	const char     *domain_name;
-        const char     *asnum_name;        
-	int             netspeed;
-	int             country_id;
-	GeoIPRegion    *region;
-	GeoIPRecord    *gir;
-	const char     *org;
-
-	geoipv6_t       ipnum;
-	ipnum = _GeoIP_lookupaddress_v6(hostname);
-	if (__GEOIP_V6_IS_NULL(ipnum)) {
-		printf("%s: can't resolve hostname ( %s )\n", GeoIPDBDescription[i], hostname);
-
-	}
-	else {
-
-
-#if 0
-		if (GEOIP_DOMAIN_EDITION_V6 == i) {
-			domain_name = GeoIP_name_by_name_v6(gi, hostname);
-			if (domain_name == NULL) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s\n", GeoIPDBDescription[i], domain_name);
-			}
-		}
-#endif
-
-
-
-		if (GEOIP_LOCATIONA_EDITION_V6 == i || GEOIP_ASNUM_EDITION_V6 == i || GEOIP_USERTYPE_EDITION_V6 == i || GEOIP_REGISTRAR_EDITION_V6 == i || GEOIP_DOMAIN_EDITION_V6 == i || GEOIP_ORG_EDITION_V6 == i || GEOIP_ISP_EDITION_V6 == i || GEOIP_NETSPEED_EDITION_REV1_V6 == i ) {
-			asnum_name = GeoIP_name_by_ipnum_v6(gi, ipnum);
-			if (asnum_name == NULL) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s\n", GeoIPDBDescription[i], asnum_name);
-                              //  _say_range_by_ip(gi, ipnum);
-			}
-		}
-	
-        	else if (GEOIP_CITY_EDITION_REV0_V6 == i) {
-		        gir = GeoIP_record_by_name_v6(gi, hostname);
-      		        if (NULL == gir) {
-			        printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-		        }
-		        else {
-			        printf("%s: %s, %s, %s, %s, %f, %f\n", GeoIPDBDescription[i], gir->country_code, _mk_NA(gir->region),
-				       _mk_NA(gir->city), _mk_NA(gir->postal_code), gir->latitude, gir->longitude);
-		        }
-	        }
-	        else if (GEOIP_CITY_EDITION_REV1_V6 == i) {
-		        gir = GeoIP_record_by_name_v6(gi, hostname);
-		        if (NULL == gir) {
-			        printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-		        }
-		        else {
-		                printf("%s: %s, %s, %s, %s, %f, %f, %d, %d\n", GeoIPDBDescription[i], gir->country_code, _mk_NA(gir->region), _mk_NA(gir->city), _mk_NA(gir->postal_code),
-				       gir->latitude, gir->longitude, gir->metro_code, gir->area_code);
-                        }
-	        }
-	
-		else if (GEOIP_COUNTRY_EDITION_V6 == i) {
-
-			country_id = GeoIP_id_by_ipnum_v6(gi, ipnum);
-			country_code = GeoIP_country_code[country_id];
-			country_name = GeoIP_country_name[country_id];
-			if (country_id == 0) {
-				printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-			}
-			else {
-				printf("%s: %s, %s\n", GeoIPDBDescription[i], country_code, country_name);
-			}
-		}
-	}
-
-#if 0
-
-	else
-	if (GEOIP_REGION_EDITION_REV0 == i || GEOIP_REGION_EDITION_REV1 == i) {
-		region = GeoIP_region_by_name_v6(gi, hostname);
-		if (NULL == region) {
-			printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-		}
-		else {
-			printf("%s: %s, %s\n", GeoIPDBDescription[i], region->country_code, region->region);
-		}
-	}
-	else if (GEOIP_CITY_EDITION_REV0 == i) {
-		gir = GeoIP_record_by_name(gi, hostname);
-		if (NULL == gir) {
-			printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-		}
-		else {
-			printf("%s: %s, %s, %s, %s, %f, %f\n", GeoIPDBDescription[i], gir->country_code, gir->region,
-			       gir->city, gir->postal_code, gir->latitude, gir->longitude);
-		}
-	}
-	else if (GEOIP_CITY_EDITION_REV1 == i) {
-		gir = GeoIP_record_by_name(gi, hostname);
-		if (NULL == gir) {
-			printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-		}
-		else {
-			printf("%s: %s, %s, %s, %s, %f, %f, %d, %d\n", GeoIPDBDescription[i], gir->country_code, gir->region, gir->city, gir->postal_code,
-			       gir->latitude, gir->longitude, gir->metro_code, gir->area_code);
-		}
-	}
-	else if (GEOIP_ORG_EDITION == i || GEOIP_ISP_EDITION == i) {
-		org = GeoIP_org_by_name_v6(gi, hostname);
-		if (org == NULL) {
-			printf("%s: IP Address not found\n", GeoIPDBDescription[i]);
-		}
-		else {
-			printf("%s: %s\n", GeoIPDBDescription[i], org);
-		}
-	}
-	else if (GEOIP_NETSPEED_EDITION == i) {
-		netspeed = GeoIP_id_by_name_v6(gi, hostname);
-		if (netspeed == GEOIP_UNKNOWN_SPEED) {
-			printf("%s: Unknown\n", GeoIPDBDescription[i]);
-		}
-		else if (netspeed == GEOIP_DIALUP_SPEED) {
-			printf("%s: Dialup\n", GeoIPDBDescription[i]);
-		}
-		else if (netspeed == GEOIP_CABLEDSL_SPEED) {
-			printf("%s: Cable/DSL\n", GeoIPDBDescription[i]);
-		}
-		else if (netspeed == GEOIP_CORPORATE_SPEED) {
-			printf("%s: Corporate\n", GeoIPDBDescription[i]);
-		}
-
-	}
-#endif
-
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoipupdate-pureperl.pl b/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoipupdate-pureperl.pl
deleted file mode 100644
index a8f04bee..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoipupdate-pureperl.pl
+++ /dev/null
@@ -1,260 +0,0 @@
-#!/usr/bin/perl
-
-=pod
-
-/*
- *
- * Copyright (C) 2008 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-=cut
-
-=pod
-
-pure perl version of geoipupdate. can handle anything, that 
-
-  GeoIP_update_database
-  GeoIP_update_database_general
-  
-handle. It is a drop in replacement for geoipupdate, as opposide to geoipupdate is the
-pp version able to handle proxy requests even with authentication and can be used with
-https
-
-=cut
-
-use strict;
-use warnings;
-
-our $VERSION = '0.07';
-
-use 5.008;
-use Data::Dumper;
-use Digest::MD5;
-use File::Spec;
-use File::Basename;
-use Getopt::Std;
-use HTTP::Request::Common;
-use LWP::UserAgent;
-use PerlIO::gzip;
-use URI;
-
-my $ua = LWP::UserAgent->new( agent => "pp_geoipupdate/$VERSION" );
-$ua->env_proxy;
-
-## --- for auth proxies use
-## $ua->proxy(['http', 'ftp'] => 'http://username:password@proxy.myorg.com');
-
-my $license_file = 'GeoIP.conf';
-my $update_host  = 'updates.maxmind.com';
-my $proto        = 'http';
-my %opts;
-
-if ( !getopts( 'hvf:d:', \%opts ) or $opts{h} ) {
-  print STDERR
-    "Usage: geoipupdate [-hv] [-f license_file] [-d custom directory]\n";
-  exit @ARGV ? 1 : 0;
-}
-
-my $rootdir = File::Spec->rootdir;
-$opts{d} ||= File::Spec->catfile( $rootdir, qw/ usr local share GeoIP / );
-$opts{f} ||=
-  File::Spec->catfile( $rootdir, qw/ usr local etc /, $license_file );
-
-die "dir $opts{d} does not exist or is not readable or is not a directory\n"
-  unless -d $opts{d};
-die "license_file $opts{f} does not exist, is not readable or is not a file\n"
-  unless -f $opts{f};
-
-#
-# --- parse license file
-#
-open my $fh, '<', $opts{f}
-  or die "Error opening GeoIP Configuration file $opts{f}\n";
-print "Opened License file $opts{f}\n" if $opts{v};
-
-my ( $user_id, $license_key, @product_ids );
-{
-  local $_;
-
-  while (<$fh>) {
-    next if /^\s*#/;    # skip comments
-    /^\s*UserId\s+(\d+)/        and $user_id     = $1, next;
-    /^\s*LicenseKey\s+(\S{12})/ and $license_key = $1, next;
-    /^\s*ProductIds\s+(\d+(?:[a-zA-Z]{2,3})?(?:\s+\d+(?:[a-zA-Z]{2,3})?)*)/    
-      and @product_ids = split( /\s+/, $1 ), next;
-
-  }
-}
-
-if ( $opts{v} ) {
-  print "User id $user_id\n" if $user_id;
-  print "Read in license key $license_key\n";
-  print "Product ids @product_ids\n";
-}
-
-if ($user_id) {
-  for my $product_id (@product_ids) {
-
-    # update the databases using the user id string,
-    # the license key string and the product id for each database
-    eval {
-      GeoIP_update_database_general( $user_id,    $license_key,
-                                     $product_id, $opts{v} );
-    };
-    my $err = $@;
-    die $err if $err and $err !~ /^No new updates available/i;
-    print $err;
-  }
-} else {
-
-  # Old format with just license key for MaxMind GeoIP Country database updates
-  # here for backwards compatibility
-  eval { GeoIP_update_database( $license_key, $opts{v} ); };
-  my $err = $@;
-  die $err if $err and $err !~ /^No new updates available/i;
-  print $err;
-}
-
-exit 0;
-
-sub GeoIP_update_database_general {
-  my ( $user_id, $license_key, $product_id, $verbose, $client_ipaddr ) = @_;
-  my $u = URI->new("$proto://$update_host/app/update_getfilename");
-  $u->query_form( product_id => $product_id );
-
-  print 'Send request ' . $u->as_string, "\n" if ($verbose);
-  my $res = $ua->request( GET $u->as_string, Host => $update_host );
-  die $res->status_line unless ( $res->is_success );
-  # make sure to use only the filename for security reason
-  my $geoip_filename = File::Spec->catfile( $opts{d}, basename($res->content) );
-
-  # /* get MD5 of current GeoIP database file */
-  my $old_md5 = _get_hexdigest($geoip_filename);
-
-  print "MD5 sum of database $geoip_filename is $old_md5\n" if $verbose;
-
-  unless ($client_ipaddr) {
-    print 'Send request ' . $u->as_string, "\n" if ($verbose);
-
-    # /* get client ip address from MaxMind web page */
-    $res = $ua->request( GET "$proto://$update_host/app/update_getipaddr",
-                         Host => $update_host );
-    die $res->status_line unless ( $res->is_success );
-    $client_ipaddr = $res->content;
-  }
-
-  print "client ip address: $client_ipaddr\n" if $verbose;
-  my $hex_digest2 =
-    Digest::MD5->new->add( $license_key, $client_ipaddr )->hexdigest;
-  print "md5sum of ip address and license key is $hex_digest2\n" if $verbose;
-
-  my $mk_db_req_cref = sub {
-
-    $u->path('/app/update_secure');
-    $u->query_form(
-                    db_md5        => shift,
-                    challenge_md5 => $hex_digest2,
-                    user_id       => $user_id,
-                    edition_id    => $product_id
-    );
-    print 'Send request ' . $u->as_string, "\n" if ($verbose);
-    return $ua->request( GET $u->as_string, Host => $update_host );
-  };
-  $res = $mk_db_req_cref->($old_md5);
-  die $res->status_line unless ( $res->is_success );
-
-  # print Dumper($res);
-  print "Downloading gzipped GeoIP Database...\n" if $verbose;
-
-  _gunzip_and_replace(
-    $res->content,
-    $geoip_filename,
-    sub {
-
-      # as sanity check request a update for the new downloaded file
-      # md5 of the new unpacked file
-      my $new_md5 = _get_hexdigest(shift);
-      return $mk_db_req_cref->($new_md5);
-    }
-  );
-  print "Done\n" if $verbose;
-}
-
-sub GeoIP_update_database {
-  my ( $license_key, $verbose ) = @_;
-  my $geoip_filename = File::Spec->catfile( $opts{d}, 'GeoIP.dat' );
-
-  # /* get MD5 of current GeoIP database file */
-  my $hexdigest = _get_hexdigest($geoip_filename);
-
-  print "MD5 sum of database $geoip_filename is $hexdigest\n" if $verbose;
-
-  my $u = URI->new("$proto://$update_host/app/update");
-  $u->query_form( license_key => $license_key, md5 => $hexdigest );
-
-  print 'Send request ' . $u->as_string, "\n" if ($verbose);
-  my $res = $ua->request( GET $u->as_string, Host => $update_host );
-  die $res->status_line unless ( $res->is_success );
-  print "Downloading gzipped GeoIP Database...\n" if $verbose;
-  _gunzip_and_replace( $res->content, $geoip_filename );
-  print "Done\n" if $verbose;
-
-}
-
-# --- hexdigest of the file or 00000000000000000000000000000000
-sub _get_hexdigest {
-  my $md5 = '0' x 32;
-  if ( open my $fh, '<:raw', shift ) {
-    $md5 = Digest::MD5->new->addfile($fh)->hexdigest;
-  }
-  return $md5;
-}
-
-sub _gunzip_and_replace {
-  my ( $content, $geoip_filename, $sanity_check_c ) = @_;
-  my $max_retry = 1;
-
-  my $tmp_fname = $geoip_filename . '.test';
-
-  {
-
-    # --- error if our content does not start with the gzip header
-    die $content || 'Not a gzip file' if substr( $content, 0, 2 ) ne "\x1f\x8b";
-
-    # --- uncompress the gzip data
-    {
-      local $_;
-      open my $gin,  '<:gzip', \$content  or die $!;
-      open my $gout, '>:raw',  $tmp_fname or die $!;
-      print {$gout} $_ while (<$gin>);
-    }
-
-    # --- sanity check
-    if ( defined $sanity_check_c ) {
-      die "Download failed" if $max_retry-- <= 0;
-      my $res = $sanity_check_c->($tmp_fname);
-      die $res->status_line unless ( $res->is_success );
-      $content = $res->content;
-
-      redo if ( $content !~ /^No new updates available/ );
-    }
-  }
-
-  # --- install GeoIP.dat.test -> GeoIP.dat
-  rename( $tmp_fname, $geoip_filename ) or die $!;
-}
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoipupdate.c b/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoipupdate.c
deleted file mode 100644
index b3a553b2..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/apps/geoipupdate.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/* geoipupdate.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "GeoIP.h"
-#include "GeoIPUpdate.h"
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef __linux__
-#include <getopt.h>
-#endif
-#include <ctype.h>
-
-#define PRODUCT_ID_TOKEN "ProductIds"
-#define USER_ID_TOKEN "UserId"
-#define LICENSE_KEY_TOKEN "LicenseKey"
-#define LICENSE_KEY_LENGTH 12
-
-const char *GeoIPConfFile = "GeoIP.conf";
-
-void usage() {
-  fprintf(stderr,"Usage: geoipupdate [-hv] [-f license_file] [-d custom directory]\n");
-}
-
-void my_printf(char * str) {
-	printf("%s", str);
-}
-
-void print_status (int err, char * license_file) {
-	if (err == GEOIP_NO_NEW_UPDATES) {
-		fprintf(stdout,"GeoIP Database up to date\n");
-	} else if (err == GEOIP_LICENSE_KEY_INVALID_ERR) {
-		fprintf(stderr,"Invalid License Key in %s - Please visit http://www.maxmind.com/app/products for a subscription\n",license_file);
-	} else if (err == GEOIP_USER_ID_INVALID_ERR){
-		fprintf(stderr,"Invalid UserID\n");
-	} else if (err == GEOIP_PRODUCT_ID_INVALID_ERR){
-		fprintf(stderr,"Invalid product ID or subscription expired\n");
-	} else if (err < 0) {
-		fprintf(stderr,"Received Error %d (%s) when attempting to update GeoIP Database\n",err, GeoIP_get_error_message(err));
-	} else {
-		fprintf(stdout,"Updated database\n");
-	}
-}
-
-int main (int argc, char *argv[]) {
-  int verbose = 0;
-  char * license_file = NULL;
-	FILE * license_fh;
-	int n = 40;
-	int line_index = 0;
-	unsigned char *lineptr = malloc(sizeof(char) * n);
-	char *a_license_key_str, *a_ptr;
-	char *the_license_key_str = "";
-  char * the_reference_empty_license_key_str = the_license_key_str;
-	char *a_user_id_str = NULL;
-	/* the string that holds the user id */
-	char *the_user_id_str = NULL;
-	/* the integer that holds the length of the string the_user_id_str */
-	int the_user_id_strl = 0;
-	/* the integer that holds the alloc length of the string the_user_id_str */
-	int the_user_id_stral = 0;
-	char *a_product_id_str = NULL;
-	char **the_product_id_str = NULL;
-	int *the_product_id_strl = NULL;
-	int *the_product_id_stral = NULL;
-	int num_product_ids = 0;
-	char * client_ipaddr = NULL;
-	char * custom_directory = NULL;
-	int c;
-	int err = 0;
-	int i;
-
-	opterr = 0;
-
-	while ((c = getopt (argc, argv, "hvf:d:")) != -1)
-    switch (c) {
-		case 'h':
-			usage();
-			exit(0);
-		case 'v':
-			verbose = 1;
-                        break;
-		case 'f':
-			license_file = optarg;
-			break;
-		case 'd':
-			custom_directory = optarg;
-			break;
-		case '?':
-			if (isprint (optopt))
-				fprintf (stderr, "Unknown option `-%c'.\n", optopt);
-			else
-				fprintf (stderr,
-								 "Unknown option character `\\x%x'.\n",
-								 optopt);
-			usage();
-			exit(1);
-		default:
-			abort();
-		}
-
-	if (custom_directory != NULL) {
-		GeoIP_setup_custom_directory(custom_directory);
-	}
-	if (license_file == NULL) {
-		license_file = malloc(sizeof(char) * (strlen(SYSCONFDIR)+strlen(GeoIPConfFile)+2));
-		license_file[0] = '\0';
-		strcat(license_file, SYSCONFDIR);
-		strcat(license_file, "/");
-		strcat(license_file, GeoIPConfFile);
-	}
-
-  license_fh = fopen(license_file,"r");
-	if (license_fh == NULL) {
-		fprintf(stderr,"Error opening GeoIP Configuration file %s\n",license_file);
-		exit(1);
-	}
-
-	if (verbose == 1)
-		printf("Opened License file %s\n", license_file);
-
-	do {
-		c = fgetc(license_fh);
-		if (line_index >= n) {
-			n += 20;
-			lineptr = realloc(lineptr, n);
-		}
-		if (c == 10 || c == EOF) {
-			lineptr[line_index++] = '\0';
-			line_index = 0;
-			if (lineptr[0] == '#')
-				continue;
-			/* get the product ids from the config file */
-			a_product_id_str = strstr((char *)lineptr, PRODUCT_ID_TOKEN);//search for a product id token in the line
-			if (a_product_id_str != NULL) {
-				a_ptr = a_product_id_str;
-				/* set pos at the end of product id token */
-				a_ptr += strlen(PRODUCT_ID_TOKEN) + 1;
-				while (a_ptr[0] == ' ') {
-					/* skip spaces */
-					a_ptr++;
-				}
-				/* alloc the array of product ids */
-				the_product_id_str = (char **) malloc((num_product_ids+1) * sizeof(char*)); /* array of strings */
-				the_product_id_strl = (int *) malloc((num_product_ids+1) * sizeof(char*));  /* array of string lengths */
-				the_product_id_stral = (int *) malloc((num_product_ids+1) * sizeof(char*)); /* array of string alloc lengths */
-				while (a_ptr[0] != '\0') {
-					/* add new product id to the array of product ids */
-					the_product_id_str[num_product_ids] = (char *) malloc(20); /* the string */
-					the_product_id_strl[num_product_ids] = 0;                  /* the length of the string */
-					the_product_id_stral[num_product_ids] = 20;                /* the alloc length of the string */
-					while ((a_ptr[0] != ' ') & (a_ptr[0] != '\0')) {
-						if (the_product_id_strl[num_product_ids] >= the_product_id_stral[num_product_ids]) {
-							/* if the length of the string is equal or more than 
-							 * alloc length of the string then realloc the string and
-							 * increase the alloc length by 20 */
-							the_product_id_stral[num_product_ids] = the_product_id_stral[num_product_ids] + 20;
-							the_product_id_str[num_product_ids] = (char *) realloc(the_product_id_str[num_product_ids],the_product_id_stral[num_product_ids]+4);
-						}
-						/* read the product id from the line in the config file */
-						the_product_id_str[num_product_ids][the_product_id_strl[num_product_ids]] = a_ptr[0];
-						the_product_id_strl[num_product_ids]++;
-						a_ptr++;
-					}
-				        the_product_id_str[num_product_ids][the_product_id_strl[num_product_ids]] = 0;
-					while ((a_ptr[0] == ' ') & (a_ptr[0] != '\0')) {
-						a_ptr++;//skip spaces
-					}
-					/* new product id add, realloc the arrays */
-					num_product_ids = num_product_ids + 1;
-					/* array of string */
-					the_product_id_str = (char **) realloc(the_product_id_str,(num_product_ids+1) * sizeof(char*));
-					/* array of string lengths */
-					the_product_id_strl = (int *) realloc(the_product_id_strl,(num_product_ids+1) * sizeof(char*));
-					/* array of string alloc lengths */
-					the_product_id_stral = (int *) realloc(the_product_id_stral,(num_product_ids+1) * sizeof(char*));
-				}
-			}
-
-			/* get the user id from the config file */
-			a_user_id_str = strstr((char *)lineptr, USER_ID_TOKEN); /* search for a user id token in the line */
-			if (a_user_id_str != NULL) {
-				a_ptr = a_user_id_str;
-				/* set the position at the end of user id token */
-				a_ptr += strlen(USER_ID_TOKEN) + 1;
-				while (a_ptr[0] == ' ') {
-					/* skip spaces */
-					a_ptr++;
-				}
-				/* get the string that has the user id */
-				the_user_id_stral = 20;
-				the_user_id_str = (char *)malloc(the_user_id_stral);
-				/* loop while the chars are numbers */
-				while ((a_ptr[0] >= '0') & (a_ptr[0] <= '9')) {
-					the_user_id_str[the_user_id_strl++] = a_ptr[0];
-					a_ptr++;
-					if (the_user_id_strl >= the_user_id_stral) {
-						/* if the length of user id string is greater or equal to
-						 * the alloc length of user id string then
-						 * add 20 to the alloc length and realloc the user id string */
-						the_user_id_stral += 20;
-						the_user_id_str = realloc(the_user_id_str,the_user_id_stral);
-					}
-				}
-				the_user_id_str[the_user_id_strl] = 0; /* add NUL char */
-			}
-			a_license_key_str = strstr((char *)lineptr, LICENSE_KEY_TOKEN);
-			if (a_license_key_str != NULL) {
-				a_ptr = a_license_key_str;
-				a_ptr += strlen(LICENSE_KEY_TOKEN) + 1;
-				while (a_ptr[0] == ' ') {
-					a_ptr++;
-				}
-				the_license_key_str = malloc(sizeof(char) * (LICENSE_KEY_LENGTH + 1));
-				strncpy(the_license_key_str, a_ptr, LICENSE_KEY_LENGTH);
-				the_license_key_str[LICENSE_KEY_LENGTH] = '\0';
-			}
-		} else {
-			lineptr[line_index++] = c;
-		}
-	} while (c != EOF);
-
-	free(lineptr);
-
-	fclose(license_fh);
-
-	if (verbose == 1) {
-		printf("Read in license key %s\n", the_license_key_str);
-		printf("number of product ids %d \n",num_product_ids);
-	}
-
-	if (the_user_id_str != NULL) {
-		/* update the databases using the user id string, the license key string and the product id for each database */
-		client_ipaddr = NULL;
-		for (i = 0; i < num_product_ids; i++) {
-			err = GeoIP_update_database_general(the_user_id_str, the_license_key_str, the_product_id_str[i], verbose,&client_ipaddr, &my_printf);
-			print_status(err, license_file);
-		}
-	} else {
-		/* Old format with just license key for MaxMind GeoIP Country database updates 
-		 * here for backwards compatibility */
-		err = GeoIP_update_database(the_license_key_str, verbose, &my_printf);
-		print_status(err, license_file);
-	}
-
-	if (the_product_id_str != NULL) {
-		/* free the product ids */
-		for (i = 0; i < num_product_ids; i++ ) {
-			free(the_product_id_str[i]);
-		}
-		free(the_product_id_str);
-		free(the_product_id_strl);
-		free(the_product_id_stral);
-	}
-
-  if ( the_reference_empty_license_key_str != the_license_key_str )
-    free(the_license_key_str);
-
-	if (the_user_id_str)
-		free(the_user_id_str);
-
-	if (client_ipaddr) {
-		free(client_ipaddr);
-	}
-	exit(err);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/bootstrap b/Src/Plugins/DSP/sc_serv3/GeoIP/bootstrap
deleted file mode 100644
index d3a651db..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/bootstrap
+++ /dev/null
@@ -1,8 +0,0 @@
-#! /bin/sh
-
-# disable dependency trackeing for OS X with multiply arch option's
-# automake -i --gnu --add-missing
-
-aclocal \
-&& automake -i --gnu --add-missing \
-&& autoconf
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/conf/GeoIP.conf.default b/Src/Plugins/DSP/sc_serv3/GeoIP/conf/GeoIP.conf.default
deleted file mode 100644
index 33f55265..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/conf/GeoIP.conf.default
+++ /dev/null
@@ -1,19 +0,0 @@
-# If you purchase a subscription to the GeoIP database,
-# then you will obtain a license key which you can
-# use to automatically obtain updates.
-# for more details, please go to
-# http://www.maxmind.com/app/products
-
-# see https://www.maxmind.com/app/license_key_login to obtain License Key,
-# UserId, and available ProductIds
-
-# Enter your license key here
-LicenseKey YOUR_LICENSE_KEY_HERE
-
-# Enter your User ID here
-UserId YOUR_USER_ID_HERE
-
-# Enter the Product ID(s) of the database(s) you would like to update
-# By default 106 (MaxMind GeoIP Country) is listed below
-ProductIds 106
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/conf/Makefile.am b/Src/Plugins/DSP/sc_serv3/GeoIP/conf/Makefile.am
deleted file mode 100644
index c55ec18b..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/conf/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-dist_sysconf_DATA = GeoIP.conf.default
-
-DEFAULT_CONFIG_FILE = $(sysconfdir)/GeoIP.conf
-
-install-exec-hook:
-	@if test -f "$(DESTDIR)$(DEFAULT_CONFIG_FILE)" ; then \
-	        echo "$@ will not overwrite existing $(DESTDIR)$(DEFAULT_CONFIG_FILE)" ; \
-	else \
-	        echo "$(INSTALL_DATA) GeoIP.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE)"; \
-	        $(INSTALL_DATA) "$(srcdir)/GeoIP.conf.default" "$(DESTDIR)$(DEFAULT_CONFIG_FILE)"; \
-	fi
-
-uninstall-hook:
-	@if test -f "$(DESTDIR)$(DEFAULT_CONFIG_FILE)" ; then \
-		rm "$(DESTDIR)$(DEFAULT_CONFIG_FILE)"; \
-fi
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/conf/Makefile.in b/Src/Plugins/DSP/sc_serv3/GeoIP/conf/Makefile.in
deleted file mode 100644
index 2a4ad929..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/conf/Makefile.in
+++ /dev/null
@@ -1,414 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = conf
-DIST_COMMON = $(dist_sysconf_DATA) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(sysconfdir)"
-DATA = $(dist_sysconf_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GEOIP_VERSION_INFO = @GEOIP_VERSION_INFO@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-dist_sysconf_DATA = GeoIP.conf.default
-DEFAULT_CONFIG_FILE = $(sysconfdir)/GeoIP.conf
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu conf/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu conf/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_sysconfDATA: $(dist_sysconf_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)"
-	@list='$(dist_sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \
-	done
-
-uninstall-dist_sysconfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(sysconfdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sysconfdir)" && rm -f $$files
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(sysconfdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-dist_sysconfDATA
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_sysconfDATA
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-.MAKE: install-am install-exec-am install-strip uninstall-am
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dist_sysconfDATA \
-	install-dvi install-dvi-am install-exec install-exec-am \
-	install-exec-hook install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-	uninstall-dist_sysconfDATA uninstall-hook
-
-
-install-exec-hook:
-	@if test -f "$(DESTDIR)$(DEFAULT_CONFIG_FILE)" ; then \
-	        echo "$@ will not overwrite existing $(DESTDIR)$(DEFAULT_CONFIG_FILE)" ; \
-	else \
-	        echo "$(INSTALL_DATA) GeoIP.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE)"; \
-	        $(INSTALL_DATA) "$(srcdir)/GeoIP.conf.default" "$(DESTDIR)$(DEFAULT_CONFIG_FILE)"; \
-	fi
-
-uninstall-hook:
-	@if test -f "$(DESTDIR)$(DEFAULT_CONFIG_FILE)" ; then \
-		rm "$(DESTDIR)$(DEFAULT_CONFIG_FILE)"; \
-fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/config.guess b/Src/Plugins/DSP/sc_serv3/GeoIP/config.guess
deleted file mode 100644
index e3a2116a..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/config.guess
+++ /dev/null
@@ -1,1533 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
-
-timestamp='2009-06-10'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep -q __ELF__
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-	        os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-        echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
-	SUN_ARCH="i386"
-	# If there is a compiler, see if it is configured for 64-bit objects.
-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		SUN_ARCH="x86_64"
-	    fi
-	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
- 	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[456])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
-
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
-
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
-
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep -q __LP64__
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-        exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-        exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-        exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-        exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-        exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
-    5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:[3456]*)
-    	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    EM64T | authenticamd | genuineintel)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
-	else
-	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    cris:Linux:*:*)
-	echo cris-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-    	echo frv-unknown-linux-gnu
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-unknown-linux-gnu
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
-	esac
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
-	exit ;;
-    sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
-	exit ;;
-    x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
-	exit ;;
-    xtensa*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-	;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i586.
-	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
-	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-        exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-	OS_REL='.3'
-	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes@openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
-	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-        exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
-	exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-          "4"
-#else
-	  ""
-#endif
-         ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/config.sub b/Src/Plugins/DSP/sc_serv3/GeoIP/config.sub
deleted file mode 100644
index eb0389a6..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/config.sub
+++ /dev/null
@@ -1,1693 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
-
-timestamp='2009-06-11'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
-		os=
-		basic_machine=$1
-		;;
-        -bluegene*)
-	        os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
- 	-chorusrdb)
- 		os=-chorusrdb
-		basic_machine=$1
- 		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nios | nios2 \
-	| ns16k | ns32k \
-	| or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-	| pyramid \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
-	| v850 | v850e \
-	| we32k \
-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
-		# Motorola 68HC11/12.
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nios-* | nios2-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-	| pyramid-* \
-	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
-	| tron-* \
-	| v850-* | v850e-* | vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-    	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-        cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	mingw32)
-		basic_machine=i386-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc)	basic_machine=powerpc-unknown
-		;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
-	tile*)
-		basic_machine=tile-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-	      | -kopensolaris* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-        -os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-        -tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-kaos*)
-		os=-kaos
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-        score-*)
-		os=-elf
-		;;
-        spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-        c4x-* | tic4x-*)
-        	os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-        mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-    	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-cnk*|-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/configure b/Src/Plugins/DSP/sc_serv3/GeoIP/configure
deleted file mode 100644
index 246e7563..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/configure
+++ /dev/null
@@ -1,13633 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for GeoIP 1.4.8.
-#
-# Report bugs to <support@maxmind.com>.
-#
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: support@maxmind.com about your system, including any
-$0: error possibly output before this message. Then install
-$0: a modern shell, or manually run the script under such a
-$0: shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
-  fi
-  $as_echo "$as_me: error: $1" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-$*
-_LT_EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "$0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-fi
-
-
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='GeoIP'
-PACKAGE_TARNAME='GeoIP'
-PACKAGE_VERSION='1.4.8'
-PACKAGE_STRING='GeoIP 1.4.8'
-PACKAGE_BUGREPORT='support@maxmind.com'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_unique_file="libGeoIP/GeoIP.c"
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-lt_ECHO
-RANLIB
-AR
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-SED
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LIBTOOL
-GEOIP_VERSION_INFO
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-EGREP
-GREP
-CPP
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_dependency_tracking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-enable_libtool_lock
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures GeoIP 1.4.8 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/GeoIP]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of GeoIP 1.4.8:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic              try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <support@maxmind.com>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-GeoIP configure 1.4.8
-generated by GNU Autoconf 2.65
-
-Copyright (C) 2009 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( cat <<\_ASBOX
-## ---------------------------------- ##
-## Report this to support@maxmind.com ##
-## ---------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_func
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_type
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by GeoIP $as_me 1.4.8, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ as_fn_set_status 77
-as_fn_error "C compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = x""yes; then :
-  MINIX=yes
-else
-  MINIX=
-fi
-
-
-  if test "$MINIX" = yes; then
-
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
-
-
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
-
-
-$as_echo "#define _MINIX 1" >>confdefs.h
-
-  fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#	  define __EXTENSIONS__ 1
-	  $ac_includes_default
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_safe_to_define___extensions__=yes
-else
-  ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
-  test $ac_cv_safe_to_define___extensions__ = yes &&
-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
-  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
-  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
-
-
-
-am__api_version='1.11'
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  for ac_t in install-sh install.sh shtool; do
-    if test -f "$ac_dir/$ac_t"; then
-      ac_aux_dir=$ac_dir
-      ac_install_sh="$ac_aux_dir/$ac_t -c"
-      break 2
-    fi
-  done
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" "$LINENO" 5
-   fi
-
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if test "${ac_cv_path_mkdir+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='GeoIP'
- VERSION='1.4.8'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-
-
-GEOIP_VERSION_INFO=`echo $VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'`
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.2.6b'
-macro_revision='1.3017'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if test "${lt_cv_path_LD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if test "${lt_cv_path_NM+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if test "${lt_cv_nm_interface+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5395: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:5398: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:5401: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if test "${lt_cv_deplibs_check_method+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-const struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line 6606 "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if test "${lt_cv_cc_needs_belf+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_NMEDIT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LIPO+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL64+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-  enable_win32_dll=no
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if test "${lt_cv_objdir+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7864: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:7868: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
-$as_echo "$lt_prog_compiler_pic" >&6; }
-
-
-
-
-
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8203: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:8207: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8308: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:8312: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8363: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:8367: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu)
-    link_all_deplibs=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	link_all_deplibs=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec='$convenience'
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec=' '
-      allow_undefined_flag=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_from_new_cmds='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes=yes
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  whole_archive_flag_spec=''
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=echo
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld='+b $libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo(void) {}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-        LDFLAGS="$save_LDFLAGS"
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-      $RM conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl
-	pic_flag=$lt_prog_compiler_pic
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag
-        allow_undefined_flag=
-        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-        then
-	  archive_cmds_need_lc=no
-        else
-	  archive_cmds_need_lc=yes
-        fi
-        allow_undefined_flag=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
-$as_echo "$archive_cmds_need_lc" >&6; }
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # Some binutils ld are patched to set DT_RUNPATH
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = x""yes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = x""yes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line 10747 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self_static+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line 10843 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-ac_fn_c_check_type "$LINENO" "byte" "ac_cv_type_byte" "$ac_includes_default"
-if test "x$ac_cv_type_byte" = x""yes; then :
-  $as_echo "#define HAVE_BYTE_TYPEDEF 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "ushort" "ac_cv_type_ushort" "$ac_includes_default"
-if test "x$ac_cv_type_ushort" = x""yes; then :
-  $as_echo "#define HAVE_USHORT_TYPEDEF 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "ulong" "ac_cv_type_ulong" "$ac_includes_default"
-if test "x$ac_cv_type_ulong" = x""yes; then :
-  $as_echo "#define HAVE_ULONG_TYPEDEF 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "u16" "ac_cv_type_u16" "$ac_includes_default"
-if test "x$ac_cv_type_u16" = x""yes; then :
-  $as_echo "#define HAVE_U16_TYPEDEF 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "u32" "ac_cv_type_u32" "$ac_includes_default"
-if test "x$ac_cv_type_u32" = x""yes; then :
-  $as_echo "#define HAVE_U32_TYPEDEF 1" >>confdefs.h
-
-fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if test "${ac_cv_c_bigendian+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_c_bigendian=unknown
-    # See if we're dealing with a universal compiler.
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __APPLE_CC__
-	       not a universal capable compiler
-	     #endif
-	     typedef int dummy;
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-	# Check for potential -arch flags.  It is not universal unless
-	# there are at least two -arch flags with different values.
-	ac_arch=
-	ac_prev=
-	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
-	 if test -n "$ac_prev"; then
-	   case $ac_word in
-	     i?86 | x86_64 | ppc | ppc64)
-	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
-		 ac_arch=$ac_word
-	       else
-		 ac_cv_c_bigendian=universal
-		 break
-	       fi
-	       ;;
-	   esac
-	   ac_prev=
-	 elif test "x$ac_word" = "x-arch"; then
-	   ac_prev=arch
-	 fi
-       done
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    if test $ac_cv_c_bigendian = unknown; then
-      # See if sys/param.h defines the BYTE_ORDER macro.
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-	     #include <sys/param.h>
-
-int
-main ()
-{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
-		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
-		     && LITTLE_ENDIAN)
-	      bogus endian macros
-	     #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to BIG_ENDIAN or not.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-		#include <sys/param.h>
-
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
-		 not big endian
-		#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
-else
-  ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    fi
-    if test $ac_cv_c_bigendian = unknown; then
-      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-
-int
-main ()
-{
-#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
-	      bogus endian macros
-	     #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to _BIG_ENDIAN or not.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-
-int
-main ()
-{
-#ifndef _BIG_ENDIAN
-		 not big endian
-		#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
-else
-  ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    fi
-    if test $ac_cv_c_bigendian = unknown; then
-      # Compile a test program.
-      if test "$cross_compiling" = yes; then :
-  # Try to guess by grepping values from an object file.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-short int ascii_mm[] =
-		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-		short int ascii_ii[] =
-		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
-		int use_ascii (int i) {
-		  return ascii_mm[i] + ascii_ii[i];
-		}
-		short int ebcdic_ii[] =
-		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-		short int ebcdic_mm[] =
-		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-		int use_ebcdic (int i) {
-		  return ebcdic_mm[i] + ebcdic_ii[i];
-		}
-		extern int foo;
-
-int
-main ()
-{
-return use_ascii (foo) == use_ebcdic (foo);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
-	      ac_cv_c_bigendian=yes
-	    fi
-	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
-	      if test "$ac_cv_c_bigendian" = unknown; then
-		ac_cv_c_bigendian=no
-	      else
-		# finding both strings is unlikely to happen, but who knows?
-		ac_cv_c_bigendian=unknown
-	      fi
-	    fi
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-	     /* Are we little or big endian?  From Harbison&Steele.  */
-	     union
-	     {
-	       long int l;
-	       char c[sizeof (long int)];
-	     } u;
-	     u.l = 1;
-	     return u.c[sizeof (long int) - 1] == 1;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_bigendian=no
-else
-  ac_cv_c_bigendian=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-    fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
- case $ac_cv_c_bigendian in #(
-   yes)
-     $as_echo "#define BIG_ENDIAN_HOST 1" >>confdefs.h
-;; #(
-   no)
-     $as_echo "#define LITTLE_ENDIAN_HOST 1" >>confdefs.h
- ;; #(
-   universal)
-
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
-
-     ;; #(
-   *)
-     as_fn_error "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
- esac
-
-
-for ac_header in stdint.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdint_h" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H 1
-_ACEOF
-
-fi
-
-done
-
-for ac_header in zlib.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF
-
-else
-  as_fn_error "Zlib header (zlib.h) not found. Tor requires zlib to build. You may need to install a zlib development package." "$LINENO" 5
-fi
-
-done
-
-
-ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
-if test "x$ac_cv_func_gettimeofday" = x""yes; then :
-  $as_echo "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf"
-if test "x$ac_cv_func_vasprintf" = x""yes; then :
-  $as_echo "#define HAVE_VASPRINTF 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
-if test "x$ac_cv_func_vsnprintf" = x""yes; then :
-  $as_echo "#define HAVE_VSNPRINTF 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_func "$LINENO" "vsprintf" "ac_cv_func_vsprintf"
-if test "x$ac_cv_func_vsprintf" = x""yes; then :
-  $as_echo "#define HAVE_VSPRINTF 1" >>confdefs.h
-
-fi
-
-
-ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
-if test "x$ac_cv_func_gethostbyname" = x""yes; then :
-  $as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
-$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_nsl_gethostbyname=yes
-else
-  ac_cv_lib_nsl_gethostbyname=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
-$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then :
-  $as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h
-
-	LIBS="${LIBS} -lsocket -lnsl"
-fi
-
-fi
-
-
-ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r"
-if test "x$ac_cv_func_gethostbyname_r" = x""yes; then :
-
-	$as_echo "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h
-
-	# We look for the one that returns `int'.
-	# Hopefully this check is robust enough.
-	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <netdb.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "int.*gethostbyname_r" >/dev/null 2>&1; then :
-
-		$as_echo "#define GETHOSTBYNAME_R_RETURNS_INT 1" >>confdefs.h
-
-fi
-rm -f conftest*
-
-
-fi
-
-
-ac_config_files="$ac_config_files Makefile GeoIP.spec libGeoIP/Makefile apps/Makefile conf/Makefile data/Makefile man/Makefile test/Makefile"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then branch to the quote section.  Otherwise,
-# look for a macro that doesn't take arguments.
-ac_script='
-:mline
-/\\$/{
- N
- s,\\\n,,
- b mline
-}
-t clear
-:clear
-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
-t quote
-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
-t quote
-b any
-:quote
-s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
-s/\[/\\&/g
-s/\]/\\&/g
-s/\$/$$/g
-H
-:any
-${
-	g
-	s/^\n//
-	s/\n/ /g
-	p
-}
-'
-DEFS=`sed -n "$ac_script" confdefs.h`
-
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-
-
-: ${CONFIG_STATUS=./config.status}
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
-  fi
-  $as_echo "$as_me: error: $1" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by GeoIP $as_me 1.4.8, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Configuration commands:
-$config_commands
-
-Report bugs to <support@maxmind.com>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-GeoIP config.status 1.4.8
-configured by $0, generated by GNU Autoconf 2.65,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2009 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h |  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
-enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
-host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
-host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
-host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
-build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
-build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
-build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
-SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
-Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
-GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
-EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
-FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
-LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
-NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
-LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
-exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
-AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
-GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
-SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
-ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
-need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
-LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
-libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
-version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
-striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# Quote evaled strings.
-for var in SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-AR \
-AR_FLAGS \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-SHELL \
-ECHO \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_wl \
-lt_prog_compiler_pic \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
-hardcode_libdir_separator \
-fix_srcfile_path \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-finish_eval \
-old_striplib \
-striplib; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
-  ;;
-esac
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "GeoIP.spec") CONFIG_FILES="$CONFIG_FILES GeoIP.spec" ;;
-    "libGeoIP/Makefile") CONFIG_FILES="$CONFIG_FILES libGeoIP/Makefile" ;;
-    "apps/Makefile") CONFIG_FILES="$CONFIG_FILES apps/Makefile" ;;
-    "conf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/Makefile" ;;
-    "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
-    "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
-    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
-
-  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp=
-  trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || as_fn_error "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
-s/:*$//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-
-eval set X "  :F $CONFIG_FILES      :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
-
-  rm -f "$tmp/stdin"
-  case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
- ;;
-
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008 Free Software Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags=""
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that does not interpret backslashes.
-ECHO=$lt_ECHO
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $* ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[^=]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$@"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$1+=\$2"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$1=\$$1\$2"
-}
-
-_LT_EOF
-    ;;
-  esac
-
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit $?
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/configure.in b/Src/Plugins/DSP/sc_serv3/GeoIP/configure.in
deleted file mode 100644
index 77309b18..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/configure.in
+++ /dev/null
@@ -1,50 +0,0 @@
-dnl AM_CONFIG_HEADER(config.h)
-
-AC_INIT([GeoIP], [1.4.8],[support@maxmind.com],[GeoIP])
-AC_GNU_SOURCE
-AM_INIT_AUTOMAKE
-AC_CONFIG_SRCDIR([libGeoIP/GeoIP.c])
-GEOIP_VERSION_INFO=`echo $VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'`
-AC_SUBST(GEOIP_VERSION_INFO)
-
-AC_PROG_CC
-AC_PROG_LIBTOOL
-
-AC_CHECK_TYPE(byte,[AC_DEFINE(HAVE_BYTE_TYPEDEF)],[])
-AC_CHECK_TYPE(ushort,[AC_DEFINE(HAVE_USHORT_TYPEDEF)],[])
-AC_CHECK_TYPE(ulong,[AC_DEFINE(HAVE_ULONG_TYPEDEF)],[])
-AC_CHECK_TYPE(u16,[AC_DEFINE(HAVE_U16_TYPEDEF)],[])
-AC_CHECK_TYPE(u32,[AC_DEFINE(HAVE_U32_TYPEDEF)],[])
-
-AC_C_BIGENDIAN([AC_DEFINE(BIG_ENDIAN_HOST,1)],[AC_DEFINE(LITTLE_ENDIAN_HOST,1)])
-
-AC_CHECK_HEADERS(stdint.h)
-AC_CHECK_HEADERS(zlib.h, , AC_MSG_ERROR(Zlib header (zlib.h) not found. Tor requires zlib to build. You may need to install a zlib development package.))
-
-AC_CHECK_FUNC(gettimeofday, AC_DEFINE(HAVE_GETTIMEOFDAY))
-AC_CHECK_FUNC(vasprintf, AC_DEFINE(HAVE_VASPRINTF))
-AC_CHECK_FUNC(vsnprintf, AC_DEFINE(HAVE_VSNPRINTF))
-AC_CHECK_FUNC(vsprintf, AC_DEFINE(HAVE_VSPRINTF))
-
-AC_CHECK_FUNC(gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME),
-	AC_CHECK_LIB(nsl, gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME)
-	LIBS="${LIBS} -lsocket -lnsl"))
-
-AC_CHECK_FUNC(gethostbyname_r, [
-	AC_DEFINE(HAVE_GETHOSTBYNAME_R)
-	# We look for the one that returns `int'.
-	# Hopefully this check is robust enough.
-	AC_EGREP_HEADER(int.*gethostbyname_r, netdb.h, [
-		AC_DEFINE(GETHOSTBYNAME_R_RETURNS_INT)])
-	])
-
-AC_OUTPUT([
-Makefile
-GeoIP.spec
-libGeoIP/Makefile
-apps/Makefile
-conf/Makefile
-data/Makefile
-man/Makefile
-test/Makefile
-])
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/data/GeoIP.dat b/Src/Plugins/DSP/sc_serv3/GeoIP/data/GeoIP.dat
deleted file mode 100644
index f92f58115ec131d70d8e06cb00ada1b0c78087e5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1348660
zcmZsE3H(ge8~!tM@9Z;oo%!0=P*g-B6ta~Tgpi`FiAW(*2!$wGge-}QBrO!J3hikV
zl}c%ktnK^!pZiSL-|zGPe?Ir~e4g{3_q^vl?|IL;%go$~08zjIOknK%$hi5D7!U_m
zjln}>kN}dvj6816BL$>^&1q~&BLifCTnttWIlux=iJ(aYHsAoGfiZv!pja#e%87VF
zUzi69B2=)8#qvM};8LI;P!XsE^ad^hDg#x3F2MOfRiGMh9&l2zSRJSVv=y%j90Rlf
zE-Mym0kwg~lGg#Y6^kbdj|HwQ7LSv>u6RB1<LPa&c!D?yE!S6V14&L2HWW4zo?Ma_
zi&Q>EmYYb@RCubenXtK#2HE5^**snPEhTRyY%M%P*hX0Lq#e*+#k-5e4xE%?@l3Tn
zOTv!AvxT&O4sdSB*__IqfX<2rhtE-W1-bzjN~b$;fri`*=mC6MEcTRUUuhB_Ry5d<
zmiH8k7poO*_67QA6l}$+OJsz`$(>@cKQI&+CW8ZjfxsYOurx0ZEnKE1Lxd&!oUbe7
zFzt_&+Hhcm$dy96$0{CIN$qOkC?Pw&hJ;xW!578iIN(}Zj=+szJa8S8HiA?HXBUgt
z16LG_e*zPjJjLQfU=nZxFd29hcnp{VOa)c|D}ft<n}B<OrNA^`I&d3sJM*7wq*%N~
zc(ZV(kiuCarxuI1ip&n>bAT5(z+&+Z;7(vMK+U<ToewMk?g};M0c=iFJnjY-N={|U
z7lk^#RJ%k)3hxc&_W{d7zFb|D?A$Nm145d5P~;(CwaBW_^1~{!$s@p;kke;M*y?d$
zE$|7a6<7y60lWdc2|OvyXMksc^}q(;sj%(SN7<nT+Idd+itu@0Bf|o`2y6mg3R`Vf
z1h%NyRvQ9m>SYNT8A@p9Rp7Ny|8)`C-wM1XzD>%U?ze$=BzYI$#<EOp-xDv%-&gH+
zU<dF4qgO0`h#*gP3O|x2JEi1fX;NVq@EP#Cik}0!fp35xfG>bAC8W1s0bh%MD=g{I
zZC26Lcfj{L_NW)idF+*DnH2T``+)<%LEsSZEASg|82AzRS!y)GbYiQYxbKPlB024s
z#>gI7OUH<R2$?5;0e^F2FBS(Ei~j&m7mNRLEX86GKqMfM2;w49Atgoxrg+n0F%|)l
z!h|GjPM(e+6M@C8J_5QlzF5pgkc(hlvB)fawpgSZy=t!HC-EZiBd8ET#R&2d6e2;k
z59N6w5)7nV1mz>3GVM^fT+_`AtQ0}zNU(CN2-$=Otr6Mj7sX;VE&S>c)DWpDr2H6>
zTEf~9)DbyWc$~1Vkec-(I9~h&;fccf!UjU>oD@Mr@kXKK<OmvvoO9Qd!%^{16U{_M
zMsZaX%_C?L!D$hk9>LB~zhwlABUlnaD@j^Ma7F}e7>5X^MsTBq?IP$AK~M4a5p)na
zQ+SrJBeyk?bA(-l=L*k@pp!^vA^oqTSe>t8*9f|abQfMAEGhI7r~bGIE{veJiWf2R
z5e$#uVio&D&^Llh#0Lv674{SM7t+Fj2nLD|3MC7Q#mmHpgp$i67%DzYSn_s+_(<WE
z!jgrn#A*5J2u6vI7LE~K6V{H6pfsXuL&^9Et`omrI3bizj9^m8Z-`*B_>@pWBR7To
zwg{$$e0l^k#BUBIGb5NKeoH91HG<jVbA(4`;r0mbkmOF`T;W~9dBXX^1wxMW?g$o!
ze31xE-4nr5@wbKdMzBg`nUJlPM{u9`{lW)?D}*bB4+@WX^-u(>BY0TCH4!`|LOYK{
z@My>%i{NqbwZe6w{0WgKh3kbIA}CpYI)Y~;c~<yR1kZ`k^79dF6n{bZqHt4KyIEw5
zur!q~NAQY@uZB9WMew@#8^Sk*TZL~4*-PbO@tu&rEAn0h+d|3vBHM*KgdYe$jNl^?
zTKJipzxXE+d@8a_cu^FeiF_WxZW3|o8&P~2!B-J{9ZHHK-$d|j1mB5&AHlC-?H-Z6
z!XF~oC$c|+0}&hyb$${#Bs?6!k0RXt*j?bEioXb1^_vLgzen(g_@BbRgntYF5&kQr
zX2}#U{Ug!f3W`TG8eAZen3BYVabY5gq(~}?T2a)FBCTR3ifk0Quwm6GtSD?1ohZtp
zC@1bl;YHz#=Y@qRO5K&PyoBt%QWO=$D+)`smBp(ZC8?&~>1uV68d1~?CC7-A!c`}V
zlcQ)X$+1x!CsH?xdLqXQ8$@w}$ce)G!cvq@5^pGMBrHYglqj00*glG;p}ct%r;0ZV
zB{b4P{In=e7ik&A86vGhoz_ttnUOY8v<>C$qQR93yXz3enG&AG;YZOaijFFt9crEv
z#knD8xY(p~6g@<`L~*`I*C@J+bQ4mC@wwnA-ZSLAqPS4JcPJ^jaj}YhqUamNCE}L~
zheXj&q`z>0aG-FIkbMmnxh(qM{y@p)k_?SvSg3PF6vM?wgpw;oxTRbj#VF3B8Qe>b
zj$%v{UmN(wz%@~fjpD;7K8j*o6xT-aWEAV87|)3)7UxFsRIzwn6xT<wwOE`G#Vyg`
z`e&kQCq;1s*K)BqS;d>9m=eWQ#=ls+QEI&GxhaZiQB3Dt7mGY*uoqq4kdG)9XGSqA
zisLz!Vv)!mZ&i=8qnH!LZ8CC)GM3jcw~Np?gL!8ZJ9UwBR}}N2m@fyGMscs2EQsRn
zC>GM~VsViqON5Jszv$xXo+#Mq09uP;c@%48@IH01B8rvK;KJ$tC?1gI&hqU+@rR;V
z9mOhX@_LfXjUlDy4|92HAe1~3#iLO?7RBRHJP{2pz<60s`PwMfskl~6dWDyH4Cw|r
z@D_(pCmG3Nab>aiOcc*X!7IAwqIj8G0XP3BHb(J66bE&sw>gRzqu3M$FHLEmZZPIs
zqIgN}@fwd3hU=9mUgcg<EWV~_zZu2rQM@5fI0W|IUbt0#F|cn(gUj7_WcJ-C-iu<J
z#?D@7@ck&ZN3lb}{6HNsj2t8VWbMu<K91rJ19uwuB#KX?xY$4+1G|_i3~aIZR}`P~
z(vH{jQGBnCb~8&=^<@-aF*6mkZ=(1%it@$cW|^JAn<)`q;_gw`hojgV#ShB2ee(QZ
z6#Jt%5Cy|aSDBggilI0ZMJpyP7i<(isqN2E{H_uG62-4k{8=piroDm@W4IWQKPZd_
zi-r02l<@B;{*kvF?7vYIS!*C-pu2$!3`7kWMsNqz!GLKXCf>k6+(5!WbrqAs@<M8+
z45UMz5y=|J8L$l4D(1slN5nPY8SurqSa{G#A=D`|P)__2$t#5NiUul)R}Ljr3{(}b
zCgcEVr-pb<1ILKe64o<NTZ9UA3>+Ks<3#ETIpeH7Ui<{%iNg9q8b8TELj#QroNV9>
z2^$O9s=0wv#G8bYrUp(GZzklODb;wiQ1LVar;D@{wldJ#0NtPuCCxUHw-vS%winVu
zDQ;(~c$TnZsmj1PBIg=7Po$IZd;^_Dx(G{yrJb$@x=BJ#VZUOrhk;%OE;P{70B<Lm
zJWQe91}>5sw-L?=g$xDdeGOb<V1)7C_Qlk?ltzr8ReuAQ85m+<fPsMq1{uNL%RP!W
zgM*D=!Il;{?+|^;4GdK)I>2lnX5b0~!;RohlQ~ao#48PqG;o!Hs|`#yFvGwo1EURG
zZ(xFfG2HwOj5Bbp>~M1!E5c2T&Bx2b>x^J?UM|nMj(C!tXke0osRnK|aD#Lv8<@ga
z>0XsFVOuUDE;ssl6GK`oPGdgvjG#@1#hca3t-_fGW*Oi!3d(uhB7F{Fwt+c}Qn7fO
z5u8nKmz-{JqPeBBm$?R(8o1ZMT@1c<o_Pl58^Lz5z`)%G7BW7vx!AxW^+h|hyu`pg
zT%lS%+#l%eG6TyEyhJw)+-Kl^BRHc`^8o`Z46HNogn^Ze9(Q<U+JgpGv7-ncGO*eJ
z&r0-)O$NxZH3l9r@Td{&Z)>Ihn0n{v9_KEhNu($A?MVacsaz~>G_ZklZQwa2%+m&*
zF~EKGS<V!n+9~*KLW4B&yh6e5xc|Rk;6($Q3~V;Q?Q4s=<9u;+rCDIU(f%t2J~Z%=
zfmaQ@#zZpkhBUVscvIHiHt>#ttp?s=7O5?p(?dUkcNNn2q|bB2Ao=jVf$bVNgRq0H
zDoNOc5nzvu2Ki0{A9MdV!0q}orgX9Rsj_7kuR8d6Q1(AJuv<y{g@G>(d?jbtHl^&P
z9XkK5f$tbM^S{~r-oU}o$vp=48u&q7?30HF4D2_+=B0CPX)zv>K0|ld0GHB_27WT|
zGncA?U)8F}=o$E3nfAAVKMee-rT3Q+Ts^WOqs`!R3K)TZ4E!rU87Rh?NCiIhkC<R^
zn4(Nh!-Q!Dk&KzBVg{YYO(aYt&0v{(W{?}4k(7zFiHwP?iJXaAd}L<^xx`BgOV?@p
zW!y30nt>;!zIa~qP2^1!Oq7|ZU<RjtR+TeR-V9EBoH%B0IXPL;L?tuWh&WB$h$@@d
zESptLR5MZC3{pL+6I=}wHBB5tH%!zsalDDzs;y(<SToqHt}t+%iMl3u{X=Kiidz!{
z!hAb{UGtg0i3TQ4G=po8t;z)M3@4drXrhrB<T*D1He^1~VHO*kIK@O06HQHQGx0vh
zuJ~MLVu(mH2FgSWjr}we=a@Lx#OWqlnrJ0qdlMZ@v^H^ui8dzMnrNr6b9<zH&I_YK
z_edx?(**aWjwa4BgWZPv6_I=0*(wJ5COR=zW^l&oY@&-&u9u1PO>{NU-NXeZx|zXp
zV<xa6FUDwr4SSgA$q4XKxfTeUb8TK|20`d;qPG$BOMbB|_Yw9LULvIar6&4?yuXP7
z;sb?)Liu1C)Y<TII%Z<2iF-{9Q^HI&aU%zAVz`MBCayFw&cwAQMw+<F#3(b^AsL6O
z&EQ&;8A#447;R#ViEB)ZRnVB&%p5wy(Q#bV8E;~uCW8Dr6W5!Vz{F5?QIjb*$;1tE
zV6urRB3-ov*aeN;WMZ0$MG7wsPB(G0iJ2y5aDZVKvrOD#;x-evo48fRIa9MWkL-vE
zHpj$NEx<cW+-YKgiMvhAHF1}T`HBpaiW9*e=V^4M8R1G~*qPg0O$)>BShd*15~aaC
z@`^*?&bG`9&a>;-+{AJd_nE=D?0ypun^<Gw0TU|}pOtE|%EW_au#I!xImU-ftY+|)
zV6?^!ff@dY7S3bRf0U!s_Q>8J=knCh$a#Kbr%#%AhWmqw_40wj4J7LBX=OMyH}m4(
z#PcS$aAldn^WlvO^@|*cW{3T91~+kOYZv0D0NhSFk1v~eg^Pl@XW~^8uc_6WCSK>D
zc=2xrrx-?$3iO!~V+@%dZ<%=84EDfxOuTF2J&l5$(vtyF-dQYeH?hOSA?;Bggg$(v
z_41(^T;X$QJ579S;u9@=#%hm=PfhG%WHh=jOnj+^pPSgNF1Tdq##bi3Hu0TWF#*0&
z)wdco9pIp7s#mf2y^K(QuLkvliG3pbO&pZj17`4Cosr?_h&(wSmbY~NM-xAZ|E!7r
z#l){BelzhqM=d#*HUsD|+QlMo4R{Oiml-?|_*+QwkI28mBAdj5T7KM1<PnX*2)P+U
zOgtV+5-}u0o)SsNkP*p-ayo3s;KVQ`hN&^QF?g}S4I1~QbDc0REW}V2L%A5r$1qZo
z3NciS;oKO`Q?XJE^<!utURhWrhN>}C6R$3;9YYO~n!;m*wS;_hz<%q*aIA{Q36GDV
zu1Gy075Jp_gpi*Y`|lYt<tN2(MhtCYXsFso!jpxKg{KIc2&vyx<kT3Ng_7nXErh2D
zPmiIcNGl;*wJz0ix<$?wwiC7&Ql~=<XNsQ{N;<~=@3YEtBpk#i|1orqVPFh{B<T{v
z#Ukg2t-8k0O}smY8AA{83xz#nsKfjeFFkr?zr9tw=%|?ViJ`BAmk6nIX$<{h=+CYd
z?E#XP_~1}ySPYkm4-sB294ahnULj6v!$n5KaAhc=GgpaUEgTifM~jS!;Tn;#!f|2k
zwK0qrFWJ9dd_q_|F@{MYzafUn;@lYNz>P876hnnHDyA_lhUr`p=|DashMQyfH;!T)
zGh>()!&`B@9mg#(+#17aahx8<>=@?6@M#RYWbn2ao{r&}7;abbju`HYVQvg}#jrZ;
zeO?UrhJ3!r0^!{;EDYs~L>9-eB$V6}!_ttKCTp3B%Z2yFaDQ0)KnyEFzA}af#aD%r
zheRIN@_aakH7Y(5);=ooSPYMgtc_t^3{Qw}5I!knaMp*jPyUpI4EwWT?K?3%C;og4
z8)JAu{PnQ*#TYh;Zx(J5z9f8E_=@mV;cLS0<uLntL&Z0RTR9^lZwpI<dRLs9?}==S
z;eC<qp?rtP2f`1zrbKoMKNfx>qy?J&EQZgyS;bKyj@^`Vhl~fg@nxv<eGFfTe;rD`
ziQ(Ije-}f^H#XTL;oca25ZM>Q{umC3|0_HwJQTxWkso9DHHP2Be-i#I{6)xl{9WWP
z;U7Zw@@EXJ;_<g6{|H%RRZ+-q`H=I7#1R!Ygr=~h8IL2OVlob2g!(CwbR3ybl8qxL
zZV7Fn6V|$Mcp+yH^5O+yStu_j!cHrSG!Rw_Yb(c5MZBu8S{&6yY6$DbQ8SKX;;5x!
z$#eQyTg5tY94m61kaDI_J@Mm(CkRgrYwL?p`J_<NFpfszCkq>g@>Aky67r^ToEq|G
zaWofiAuR1eE#qhv$0Kn(8b|9m&WPihP`{1H<-)dcw2PyC9352bB0N(_&(DgZqxjjO
z<Q$Q6h3Cc5DU^2>VYJT=C0*m_7V_?KTo6Z(IC{px#nLB^zVRScdc|>J9KEG>k?>+6
zmtJZ0T@uHoaSWD_A?g=L|2PK3|Er~k1LGJJ7TJUjP>siBaSTx_2A}ew;?y4&#}(qk
zg(HMl3P%d5bCt-|!clRI4&`G+7~ZjQj1#{$jwNy2BR)Qk>qM>>P7qEMPKx6O4SaGO
zv$&0mPl;n{95=>slXRxXF(Zy?;-#_QEY7jajDw>fDamhD^Sgz!<Cr70+v2!0j=6E%
z9>*PuK&c6bLvmLf^WvB<I}FhR5hCY;wL~5Z<5(1Sv{+T8?v`?<)Wy9*8eAr_JdXQ9
z$^9Y^2v-PK3LlJPl}KrgtQMz*hvQfyPG?wrER=6#zv62{$+|e65Pve1tdC=Z_*25C
zh0lbw&x$-3$MYg3`|RQc6<-u?ies|~<y%BvisNOGS3>!#jJEje!Z$+sn<86<%!GGD
z4hY{B(&l?{Y>VUlIJQf&Teu^v{XpbH;YV@o4CNok@kz)(jbm5HKa1mY@gw`p7jb+k
z$ycGy*COA<@vX>rq5S(e_K5F|;|Gy_aqJgiWH{+Z;&V{KL&C$tAB8^&e~#l9kza+s
z2|3c=<M<=wf5!1w$p04kM@YB%wa!QapC+*@iD&{w0xu@8DFHKqSOS9*7@R;nfkXo5
zC4ziNCXh;?t~iV71geBQBa%%Zmw=Uk9m)#{I3agMJfWXJUZnI9Ev=O$P%hLgFH%8R
zF@Z`VmBU&-#jP6hY6(;id5r{WiXS7a70PQTP$%TaiX4~t?+U+O0>>wCLINjB-X?+i
zBBzG>4H7sh<P8&O6!Mcr8VgTJph+liDpFdZ&BU80&_d)i;pxJb!d60#y>$X-gq%~~
zHstL@+6y}*aHhyv!j3|=Jv)JO#LpET$(&9qc21y+$oUC$O`x0j#lr4FTDU-@M*=-V
zNiUHL6X-2+k?=^K_ffHL0+)zfD(olhFB~8oC@lGNSpq{6n3}+i30yAuRS8_3z)<mF
zLV9vV0>eW-B7rMIK2oHru2M#cUnd-$z!;Hhgky!YGcJK^Lq0z7f3LW%PhdhQpP0ZT
z@f(DbL-~|M@W7KsZj$7#P(Dp$x^PAUH;3|>BC~|IByg+9Y~h>)ZWFm(c&G3VA;U6P
zgi$4*m%w}#7YLtB;BFDRu~1}D0*ez^B7RQ-D-(E7d}#vrCa^4l<tjcPyia()kQR7`
zS|MIa%T?l!2_H&ebs{(~Q;o;N39L!r5mnKvM@9ZS86~hb)LbX|6T*`H_2L^s$x{hD
z9r9-w&yYVS^1N`P@C70J+MK|a1g=P8crtM2r3AiC;F|<qmclE-R}*+m<n;vJ7op}G
zB5w+}Ch(TX+hOfH3A`)*o^V?zFAaISiaQecAb}4P_(;Xiggb>F3)#yjBA+I(E0l2J
zJ`efs5=r38Q1X>XX~}#m{#ydyiF_aG>`7p6$bS&om%#o|azNyu@R0DZ@JHcK3H&Vb
zi;y1vN{J@%_XPe(;Lim9N}ziZ7bNj_s1r}(AMt-fNl}Df?x%$a&jKQbkP<VASjbCb
zNhFa>B9%m1@>)sMP6j8eOcL27auQle_(|lG!PSwSgd+tv2~V|*JoAu8LGtoRR1hgk
zqFnO7t3-BPF^Nh^R868<*s5|8RisdAPMzvW)JURc632u(6w*G^iKLY6b&@z%p0s7#
zB<f1Dc@p*1X@ewAQtk0coFK`GNz|8w&FMcc#u}<fgN>7Dq~<3}!j7nLN)k<yXqv>S
zNi>rMu9_nr9&w{Z5~n3`dJ-*@XeA?Ugsp{VB!g=|D)T524xwEV?UU$`#F<HSk{WBz
z5;;fMF^RK7IeR=e<mV*=2k2X8NxCF)eiB{f8!dDTYspKiphpt@!?rz>=oRt{ljtpe
zk?`VB-Y1E^NnE1hrAhP)<)y8RW_b)qVqhpAl*C~1%Y;Kh`Q=Fr6(1%n&Dw}0u1sQC
z63deqDfwLCRY_c(#Hb`jt9Y|;OcIks*yA-KW0M#cO0G>}y!dsY<oYBgh))b9^!bL6
zPZpVy#MDr7V-h!oe45B~;f!Q(msA?*%p_(>c#H5>A**I5F(>4=iQJyV9iimT(867z
zWL^^U#TSH<yG0fzu_%-*PGX7pJ)vZ&$h|@a@V+GO7vCm)fRmoYTJaT0tQ4Vd4~nc3
zK9t02k%xtAgw%N?iAO{Jm`G`Y)+O;uD1Soa$t2b%u|fQ)Bwi4CTKJ6cSs`scm&EfS
z-xx-K@)srCl*Hz+c8kbMNxU3NO1;0T;%iB~9?IWH;!W|bq2w)*w}tN{@op0Dl_W=9
zTE8#JcHxdBJ`nj(NPj*`VrR%dPT~`Bt|?Z1mc-{t+?fjaZpxXiDU3|v%Ot)^qL4ya
z3SUeAZ{at>Z-w7+-w@d&+%McK{6WiepEy(NfC#%dn8cxwA5P-OBz{uy=Oq3R`6Y>8
zllU#v`CWt-O8NPxihl`90sJS4f0HOmlG7;ogD!T&BO($_!AQXrkEMdWJ)Zi{8n={0
zD%e<(DWp<Jr;w2vBU9Q*vZ?>}UQ2R2704ZNSLg|SVP07Bvz&OX6l$kXUc7>^qL98-
z5~(b#l0sFHYQpM5>eLXanZhxlghQ?)K2Uh9@Hk;zVLc(+9-qPqDV&%>{S+FcaCQpk
zq;OIS4O3{FLc0_irEqczr=@Uu3XM}ZC52`RPLmXxDki52xqEX&3=s)W1kF=u5y~l~
zq-6@NQfQ;Ll(bF-JO3F96pQqvG<OU;kM>eKGldQ!Y);`>;v^jvZIW|SI4>1+*HcxU
zQs|sQ7jZ`5{1m#%haSRiDRfWa0`<tYY{h;{Ggz9$UMXCdLhlqVO5u_eE=}QLMX65;
zebpm9q*=Btk$y^#{wWNQO;*unX|a$G3L`vN<TBw9;pHg|4Qq#qTp=8u!iZ4bjz6Oi
zze#wta8y`3I)yPIzb1vTAs?5*wJD5G;W|ks3$NGkCx}l>VNwb=h?iU~jeUwFQ-wDk
zRm*vqrs8zrj1+Dbp?qcvvqFB0$gRTJDa;YMEv&sgg*(I<H#VG`!d)uPOJP|G%f;t2
zA4KjJQf*-hi^LZTmxS_rQdk=Ddqo)S`$V2i;W?4}Q+ObS72+$I4<fYrpvWrWLn*8l
zd04nc_=u32kEZZg$V+aoO<|oRPY9nBt`}|)vei=}Pp9yVNU7oTDQr}6cM310@L~!(
zLj6rCyczP%DQpS(ODVh@@>fJ&P2n|>*M)BgIdFE$V`~a;l_Ww+-Vu2>h4)0Z3EvNE
zw}<-`H9tt<!%+T_$j%f#7WqW@sc@I@Ga*}j9`21_@Dz~3SCSu0;SkRPq0ToV-=^?g
zDEU5xJ>q*)_#uUTq5Oczeqm{Gv5Uhh{u%20n8HsX|2c(ULjJ4BZz=p9O8z)%bbm?s
zx9}g~zbO<$P5z*l9YusuA$vDPVnWu&(@2OXg(+b=tj(m670(H+P;RH;h`XW0OT!n>
z3k$-su(n(p<wMS|=u}FhvWi2~sFFt2G}@%mHjQfO;3uv;PEMnGI`}PWjdbwa-kOph
zlSZvHYNt_$z3Vrv$EMMjn|vB~^P*Qeb%piP*rT7XUILtu#))avPh&-~$b%nPH=yM-
z8p?7bAv<C(v`K4?)$b`n{)n|n8cowUHH{ag(=3!XPoqT|r=@XvI`|Nr&Cf`qWg4wy
znWpGc>of++4cejQcJiu+u)XYbNaM^j&Ps!Ro}UhW<J?j5vo(rygy+h`^EBj6;+@mz
zBEsQpD;DqLmp{|!rciWO6WXBz7pMs%)>AfnrEy^zz0<fz@*!zltR6Xb`qoDV`_hv%
zE={8!s}xlZtv^ShT8?pm2)!MojyT4_X{^>5*QirkyIfUtjM+6TjVsa^p2i3^Ok<5E
zePkL}r7=5=IcZ!i$#r3Fj1n0w9FxX1p?s{!IN`Nvj2AhQQP-<DK{zpuNom}W#^f}n
zNOE%;Q$?l;>D7&C+$4U)!t^v|{I6uDinG$VMdVf?+w%J!w~5~qN^TdqLwIKzb4Bh-
zW1h(TG!}`l?E;2Wd|@bwC`yadSn|K}r7GSlTqaze#(inrpT+|!t`gGbiZoV=KNw0l
z`;<S#d6DGdP|lQiMEucE@|eiu!nJ9vOXCUgC)0R3jc3wWA8Kw$<0<jdr(Ms6@{J<T
zrSbexwe0-`t`|u*g__m)@F$Izxn#09J&RY;c$FELL7z;pN4+Ms#u>aW@<tkOifm2e
zv(Um@B5$Yhj>x;A{5_Fv!uN&Sg*(#tK!o-`6!}QFGmVc!`6p?78uDGtRfX>JG<H*%
z#+PZ-m3v>M@wL?cNC#i1{3eb4Dw2Pj#&_xez9;;>$euLziu@qlCoFx#mfsXQkj6o^
zJ(R{_RsER8&uRQ3{*$Ws?Vw*pei!~03ONuyBtMlO{-*Jlgnx6N%%DaF|D^G68b$6!
z8DuiZW)R6Bnn5~)QtBER#4|`_U}{7(70U$Qvm#l>EB_2qnczEk{2~*-RmJZ(QO;-h
zbUT-Ul|hvZs!~4#Cxh}CRLH>1z{`NXmCL}-AfG`YgR%_TtL<_jzffAT&zyWgykZ8G
zGGM4FpUSUe@dtgGVBaexEqkmc_ZTRCeU3UjYD!WogJVPnOITaHj__FFaYE{|qk7`U
z3r`5;CyLY;Hpt*4k%q!XLbg3wgxlIF88i`ZD(slSsUppU&4tu&k-=%=rwdz#@>UtN
z7C$4Dv=M15Y$t4=L5HyROp&vMjPuzd=Y+NAW^i7}JBf4_b`hR0?3zJ05qi~K<N{$2
zVb2VDiCie`Eu`i}A`EHY3@#COv%%C{n!%wA4rkC$!v4Ym!hsnK5*eJqv<#+m`c!1A
zAsJjQK2$g?gDWx^E<Rp3B7-ZLmQjq%;95zp5?(E&g;5!d79SHzuE}7m__$C~J{?$~
z@^zA2FPtEpD4Zm`K{#1R<tZ6V6~8f*+(b{p9GfBG=Na6b!ORS1WpGOdtC{Wm<yWY`
zB7@oDb27LsgWJXL6y6~$Ews5A+@<2Y4DJz`FI>P$<W+%?WTD8S3>J$l3FZ8y|5EAG
z=X*t#372PZpUC}T?E@mEv|lOyU<Rwg+J{6KsE0FHlffeyJet948W9KeSO(9DKORcf
zimc1v36Up5`T7hth(9HKTKJ6cSs|~BXz+RQjY1Y*$l%3Ha8<S`lx)smi}*{zmxZqg
zUlmfB4PVdTjSSwD<SpS=A*;AWyq&>2D!!{t<3r(l8Eg}IUr5dE(%F&02a?c2X@~hJ
zgPp4SSV-X~s``{Wk|dvnavIsq0A}!I7|*>TUkSe!ev`qs8GI-HeFl3(m{gp&%0iMK
zMD_{yXK+B|ps=L#qc}B9t-GI8{8{)*2EU5@Cj4Fahwx9~U&6nIwD3;`|B4qw318w9
zk=dw_I!5-ty_Y;DVO*HVA}NvzHPa%QEV3dwp(V71wBTe>I$?R);2PM^BA-P;waq1=
zPFWV^vM8TLg|JnVZ18o&irL^%L!~S#XHg}Ks##RaqG700J&O~?YlM=TSsWAcT3OVl
z5fzWkqFyLJPNc4|^xe7Rvp7M;(sfIH@diTrcG6K*jj}j7lsC@el%uMehVoNInh9yY
zML0%|y=4}yB)`i->uj*nX@6D@XJpYPi?&&`%i>TLho#d#ixF8|nMH>z&dlPhEIMY<
zEsO4|Jv)oeB8<{GS)40QYv*OrNxU?cE?JzfBJb(Cij?k`FUX=t7Q-d!nMJQG24pcX
ziwm>pokia)E>Zk1l0u&>F4jcQe#tEH(k%LA(O(K2Bi$f!vYZ&I^DEg|49;TMQLQe^
zVu;i(SCgUiKN92v54OD`8$3EAVe?WKBeS?Fiz!)5RjaFo<FXhfGFnE)2-)hIEXInL
zCiL1Y#%FPzBol=6{Cf3B;}b*4q%3X_pBzdi@UlOPo3gkii(4g}CZyTvS<J}dW))|K
z`m{DnoIY?Mv&9dFwR5t#Ev&s=Zr_o`omtGy;;t;_W$}C#8?%_Ns-;=nE3zPqyG3Yo
zVHS(T7l)E1BKHXC)v{3ju*h=ZeOcU}#RFNaP;phLvoebZLr%|W|Dh~aOHwMX5r0JZ
zXcmug`m$J?#ZzIcby+-_#riCskc1A<2oI7Cp$<(woy9XMKAXjJN6C-qzmUb&Q2wIG
zrYtsRu|@o)EM5z1U*=ta_^ZN_pX~AVEZ&ghO-*ab@>^NFE#W&^?8xE+@ppyq3AYK~
z&tkhs$=Zime5B%D;m#~}bJoN^&f=3SJ{8}U#b;T3F3#@QmPy5f{7VVH&EmT(zRKe3
zEWQcVO7SUm^u2_8vcdOHC_gfmAF|k|Dhl_D91xbepz@F0Lb>zg&^U*mv-l;8`njO@
zU$gj)8)FVtbND@rKe*N85Xs?BW!=A76h;0L{w@4R$fRAS>uTO69OT#jb1-tji1IRP
z=HTSu<`Byvo<kxRc+2jRs%6_$E?DUlrd5>@W`#MSCA4LeYCOCg{IC_<a!|yA43-J0
zQ%?HjRjiOhMUhH5R2DgMMOQ6{>N(WPp|<2Tgfv)F<QO5H3^o?=dO~h2$L4UHIF;*$
zgrhz_hZE%RiMgN^HzE#}M}r(rk{WqKkw!u)oRUM696IK3wj@othv(2nMo!J4Sq{x}
zXrZc>x&OXybXpFlOMyMImsYB6Ev&BY*h^a#&&r`)4(+AfK@vKArU-S&OL$HW=jJd{
z^7C@&l*8a0E@KRH=px~zIh-F(LEjv@${^czQ*C$Q1;QS}o;maqxll;W-Z@+p@{4om
zBfePPULsyPoAk?}zlt2%0Fi+?4AQ_kG|nu29+Jc5s=6YFTsYpLISdP9!nW*jcn%|^
zcBQa1Sjw-;;p!Yl<uE#jF*)3<+G}zcD>7Y1#^rFW2z#V8c0E3a>zFP4wgC74943T(
zqR1r9QL%V~aI$cUaH{Y|;Z4G6LK>kbGeXB^ij+ooOAfc@Fgu4iIb3DoY74jJaC;70
za(F3+JD5nt;?f-M&EZb*xtu9}1vD2tft<%t6pQnfdkb>7JBNiiEaDpE0^!fT)C-@g
zQGZDe_vC^{oxBWwQE%s4CTkDL+H!HWx-W<OWs?v69>`%u4lC8_LE$PPo1dWf{;kg8
zVKrZq3tk4eA%{mq9+kDnxX{vgJcqS8tjh%tD%Z=gCvtd_4doSkp-X%`$T2>Z3*NZ+
zbPmttf@h)65@qMP9G>SY3*Q;IF$a$2g&fwX?It-u&o?Uww8OB_=F2&}lEbSxyvCfd
zU|D!Qhc|NgE{E@Pcr%BsbTx-vIlLtcJJrS8IlPm@yE(k4AbdoZH014aiDus~6^q3k
zIed`Ahbl7Q(6e7E&=ZD&<YQHRk^@IguRfDOP8Rv+;=2{AFLL-Yhp%$@I)`u6WC&lc
zmkS;{GkV`DCbUNTdve&D!{Ho$lr!w*2YJrP-KQ@0=Wsw44(4!3p=Qw7mZ9eH6ZiHU
z{^D7HnN}?RlEbfRPJdYY8_xnc{GsN&?Yf%JopShF)5N!PMy$ZjKRNuHLs7mlizw;L
zJ7o)og|vl?1=9*<Ibj7k8MDC2Wi;YUX$2=~1!>76Wd-44a~>RK)&hGZ;iTKtv2e15
z#ui))o`qT#YFqFv<So>&P}4#|_Sr=hD+p|vg>n|kTd1HSgH}myR8)8LhkaGHf+fT5
zs9#lMsV1y09Y&i~$EZ2Y&XXr~)Jp^5vBKkobuH9WTiQI{!U+~mw1TJWv|rx>g&bgv
zzd2=J(r+ki6gt4<JjFs23m04HW1*>qQ!TW!(B48bnQbnl8>RTPuyC4%)7cTw(n2c{
z4vLA_+QJ!D@Sy{{W~XheVAZs>f}3J0bWp!tESzuQObcgO=xE_=8SiZ294mOJ&MwZg
zaIU70J9DYWPO?B#EYfUOdESAq`n1r^3Z|*Mg$op6D)i8Jxoqi1FDqEoRJhPWZwnWx
zui0{s{`6&(EDW)5xrIyR8^<_6#`{_5FFR~bO?Exd!XUXZSn|sh*dJ8IC=He6D=iF@
zKUc_qIx}3#BjiRYKSxT!lo(}UwC48~3u7!?BL}$l$I8?+RgDv8hFog}8_{?R*IBsU
z!UP$iWU_^c@@kSa>FNz4+-av+m@0mw@FtC`wECzvUG`^KxLJgz=-x~VvzW}`c5$nP
z*;eqG5yQfzJx3O9vv9kGJ2cB21smRJVXmsU`%#nUlzA5BTUbEHtl+LN?jYe{p@l^j
z7F$?i;ZYlp*|^8TQVVTtw6$@sg=H4Lv+%tY{GNBYg~u(d<$|?vza;z}>jUi6!b%Gd
zT3AD&g;iGY%h1(U@Ro*$EF}15LOt5G_!c;(v0hX2s1-coeoUVD2CC@AkMydoeg(hI
z!V?yrR2Oeqc-z8y3mYsvW#MTHZ(6}Gm!IKoz)ZHViB9s9S^b><ISbEQ*eJ97vf>L|
zdiqr?9oTGPi-lJ$ye1!BvhWJG3%=CC0^gNHuc%XBzYDIbmma(>BX0-?>zB)0tzaOG
z1O0r5*~P_W;Uf$0T6oV2ei6(E&f6@!AFA=0{B{dF<iiI-Izz7}@O1%J@ScHhEPQO?
z6D#;#{4CC<9NQ)Q%);juc8h-{{KCSQ7Ai&lJLvG&lJm7E6h6&;n7f1qyT`&_3x8So
zo8i(g>wmDY&%%EB@S~!7Kvf4V91@wRK^@kl(8y0rIl5}$7d82nqqFd*_;14Bh5V&I
zCy_a@Ui15pg?}wHvT?GFqUNZgjY>9Ob&80Ms2v2^w1eC;?7+UQpB~3-#BC%bXO&|k
zX(MF^uX0M;$ckiyQ}rmG@|+Dz68orHR~9^>FJxBaZ4|`Igyn?gg%yOHHFjFr4n9n&
zW}~`|Ds~Vwz9Fir2<0_w)U<J&9lXO~IN$$c<5)ZRIX~5E*{Cf$b%aY5#<lucJ(cUK
zNj)3Ki%@ccjT6P|hmr;&C)sEy@)TcEt&ldh(aa8#<P<yj^*xU!B25{_P%?wB-LTQZ
z#%VVASwl-3t?b}kE~m?Lesa-T#OC`y6?{(CFujuERDJ|(<02au+riptZ=-`W&$NS|
z&!1(Zqm8p|oWnuc=wt`Kmp|7I-i?sd6tFqpmC@NocN-Vj=wb)&E<0bQx(d4qd+R+I
zTrWNB-~|huzMhH_oA;7G7ux7839WG!`q)7_&9!ltjlMQ6v2m%5em2J17-yrujR91!
zG2F&L&X<iLHZHe=w<Qd=gO|))Mg{#ypCf9e4_}7b!8<*Msf$|joZHI?8&}#GWn;9B
zkv8~hovUnIZDYBzk!|T7w=bF+!~Kw_0EU83Z1ma?es7<v{#qO3ZOmj2+qllg^)@Ej
zn514NFySM?`#t!16Vu}c8<Xjwjhi(=OpGb^e=m`kS~4rV$;LF1>B6e~*hLG9eR1bG
zp0E9}aVy7Y;|?3MZOpN88^faa30xjdC<C~Y`@9jnPJyqfxl<F$;Lo!$-wt+$B{mk=
zxZB1;Rna{v$0EW0yvW948&_#`ruL9~Y%Jye&v~@5%Em(+1^0g&EA3$Ky^kr)S3qdK
z7_kRztk8^;bJC|q@t_?<fYIh^U2S8H9C+Bqe$5NJ=JAMffNwkDU>{fXVh+|a1DR<y
zp0u&k#>Y0++t^^^T^sK)?bZ8629rau@r;dU!?8SX<2jzZ^o|Z1=b(r$+Sp{{H5;#U
zDcRV<>9+9-cN@-;8dAT!wsa2aRmmw~&{%xK#+x?Yw(*XQtv24WgOHY9nn48~3>Qbr
zR;5sHv+=&%`^d(28#`=#s4l3<?mm!lnq?wACHv%*e`4cPhQ-DK8@t$CdDxFv{x){o
z_{zrDOnAMW<_jBNa&J`VrYKjxvGJ{qeKr_a<_V+C<@237{ockN8+*lT^ZH-2!yY+n
zI~DMQS}cFq_|wKA@xwx<{f{<&vhlNuzX*R5{;F+<3cuSRC*eT;vhlZii8%0;KmXYH
zm-|1reJ98|&O&?n#%0CSiaNnrz;IwX!C8;H7L71<nd%Hwl0pYJxq(jFLB_!>2e&xL
zI^ct*eh&IO$T_ea*bW>Ar#NWhz;)m`D05JbJ~+tp!iMjEcK(|z@*_ui2NfI~<Dixk
zq(?;ul^j$S=gd-4#X&U()g4rIf_3_m-sMum38t8#t0~P|@|nuD9n^8qz`;olj&*RH
z6Qm!5T-QN82lbsGk+^C&z##GtPH=*U59B90fm(^PmaQ7fa$^UL9GvU~8$R1|LfH#_
z;I&Ot#?3(|2b~=>bI{yDdj}mHv~X~m+MeOybTw?HVoL>|fu*U|p+N?`jf1uh+DV7T
zS<8dV_Dlz7Il&mub<k1n(Zh2bob3b`dvu0V$>G!0^VF7{E4Pb-^BweZaG`^)4!WtT
zhmaAYh3*b6kTs5i#h$9_srQNX)-+x0ppS!#LYwS}YJDACA_==Lh4E4cUvcx~w(MY_
zgDFmMrWoX4u!GB-V83OnoxIH~7P)qYIKfGcqr04w=wKL?9SnDHjf1fcMmWK%z^-&K
zQe7}tuX1p;gVFMbt+=j7sfsqatSA|yA@CeG&cU?~Zg4P}!*_6<)UKxwQe&FY$q5c7
zI+)}HXEb)ixG_*PMZ&&lja5?}+{n1`Ctw_cJg4z#4yHSp!Ib7J;2g{pA*UJ-l3N|j
zcF@?xDQ+-?ISy`faJy!WC#E}?r4C+E*3sr%2g^Bk4(?JW%yTebQ?|efE@Brt;7i8t
zc7pqB#%d8W)4*ayb%_&P3*93mSt@d`aG4ebh4(vnfQyb7ehyYRSn1$#Zru(Zbg+uk
z!Ebdsc*wzOhFu#nn{boAkq;1@;6i1M@DbsuybExGOABT@IRmv$TLg_i!Bx)_fr9)6
zw~i<_Fq2u-Kwfh2vV&(FJnP^&dCu(R_V~PmjkK&B*z5#9S>ga+RB@A#q2ozv3-<?o
zcF%0&33`C`##gmcUUTregE!>HP6r=5c+<gF2X8reThX2s#XG8f*TH*E@WLy0&10Kt
z-`6tdZ6+n#9qf?s1L23lkA$UGpE&rmlx#}BT@Ls%AFhI_+BQFTu$$H#eCgmHMuV$>
z)5<G<P9JBV>xh^A4!+|sxm5X^Zs7sp9%bNOaaR4{U|-1hi|{RK2OS&=`C$h?hWsbB
zr2-rN;^0@we-r*G{N2GHBFrM{@c2u`znK7P#pEwCLtOZ7@CPjs7f~06i?oZ38!Qde
zMM5Mdj0-8}#VRqWV#*C(Qp93bMLX2ViCC(of}^4v)>4ueujZn<i-L<X7v;j*$}Y;g
zsGwp+VWqGazTk^}@u(tsRUw5nT-0=Nl8VQ;sO6%ri+V0<OLDBRj<Dn{EgTmXj~6+?
z#ff1rtgY{&f#l@0UuxAblr$1KS;*QZZgBSL;08NhQ#Z(sQ(ZK3gH_BEZgY_qE>3fC
zx{H=>u*0->(aOaweEFw~GbG{8*+v$)%D9<uMYMH;O|qSk*N`XkRLJN5F3xh%(Z$&=
zE_Tt!4Yt;ET=bALLwR<Pwewtba?#mE7Z>NdxIn_L!tO%)&`pF(o|(*zkrKXxv8Rh(
zE-sWcULRg0o!)YcnM?;bqP{LJaWO@XUFxEri|brmuVMCgG04SW7Xw@jB-aHGw`&^b
zahZ!DE-qJyXpIt%bf~T+hPlBDY<XNEGTg-o7gx%Sk-}?)R|&6nF-mHqg=2)ADK;mL
zbumtoYeV^X7bP9`I6=KnlJgVY;AMl{_HU5c$wGcJhem=0F2`<kgB_Cl-ZU4}UCeNC
zGo#^SxR03%%LW%uxtJw>i;G)b%yu!y#eFXB=M?ZOpo-z$Zg8Tx-Nha1nqA!KVy=t3
zT+EZg0wFz|e^imDt%WWYx!|762N#Q7EOBv<6z+9{+kvI3DwhcqmdXF+LfU8B2VAUh
zv4%r-!9-o@;vpBST|DSwl^ib9&cM9gs*U|&H@HOS*qL~bx_FH7aj{MYnOc1R^W$8q
zdXwZ6E}nF;-Ua`fWQwj5xtDUfnY~P#r(Hb5Z1>U9$FsEQ250|qI*mT>Vv~!_%8iY5
z-o=X=4)=VHok_lhDb2mehvDO87q9T}@G1`%uhDZ4t315!;tdyfdsyh<O&42TO!P3x
z!&@%i=3INY#=|=<-gVK!!)YGgbFs~Z=^^IfeHYtZ9CUHW#SRxAxcI`wmo7eZ@sW#9
zUF>2eyZD$PisBR2>QOUK7R-Ta%ID9R{3bqkvD*zk5-mNmU7&|}jN4Z(zIL(4#a<WR
zxcJt^cP_ry>KLdq4#UeBa=v&;5Ip&JvCqYR7YAHy(Ib~!v3N+=+uIb(Ui|*QiyvM5
ztAzZ?#m_E&ckzddUtIjkD-9P}KC$PCh96MstTa#G%>2{EUoQUU)VpZSRMEu}=cvAN
z{$ZZwi^U>0e-9B4Q3lX~;RRQ=r}G7#dJa5J502s<5*})KsO=%?A?2aWLpcv=4;c@R
z2iHT^L(YTc!S;ePHJ^p<;gZp{aYk=Jyon$Fdhk8uJrq1_<iikM3NrCl@+pmWAzo3G
z_fWw@RS(rXRP<2ELuC(DIElO}(~AUoA}h~dYVbCeFI?g$dLC+csOjMtFL=}JSNb5E
z33+R=*oc27#r>0?JbF0RLt`&k#m9N5>!H4f1|I5pINrkv9!~Uv+ujHDI`<oOA-9VU
zg80cVr`|(D4~;yW%uFj5EAYc0J-evN$0>aIA#Vfu{KrER4^3&`Lo*M}nP%Gg5A(Z`
z`pSJzK9$mgozp$E^n#2U?V**2)*kwJ=<DGO4{bbj_Rz&cTMz9#bo6kxhxQ&icsSF;
zS<HVr&+T1zB~|#fRb5Ig;w^xOb3L5rp_3PUI>QZT7C%zt6A8V9b~Qgwr>h>idg$q)
zmxpd1x_h|5Lk|x(^D2~2O7+2Le{S#m8X=#J^Rd5&-X1RUaIuHke2~jW6a2i4PaSo;
zG+$TXmw33;!*E5lpNIY)F7q&iv+rS`hd~|&vll+!<LxRhefd?5V(~40mce(hFdsY&
z^)SrC6&yGpEAftuAM>f}#=Pm%2R9=;T<Kw?hpRX)52KiVe9%`cHsgbF-nMWj=f2I0
zNd<&obsp<soSeDd3qDJ_md*LKPx0|W&ORkv*G!=a46ojOeS?R|9&Yh)tA{Bbrh1s}
zVFu&Li(w`qum8md8v&mt3GH0L>whm;`!hKNofgSwNy6IM9_Dzs)5BcGg!@0|lo1fW
zT}T~Dcv0<eraXP@%XP$23t2ms-~X4Ke36I69`5sSzlS9r?(wk9!*UNxnQ2PJj@qv8
zrJVC(2WK1(jSahU|M#%M!%9w~p6_+zlL20u>e1OSe#61TYOZ$=PkVUS!x|53J*@Na
zh=)f#Jm%qX&LdwVuYH5V{8I~Lyms;@JUr=Py@w5)Al*1{^-a_b;8Z2mbf%4mXFa^=
zVUvgFJUq`;@8Jax%m=!<Tnm4#PPOZFle^i&77s6Zc$qHoozL1K4{8tDtcbn9FaLA%
z_wbE}Z#}%hCF$WK4?8_<<>v2U8@G24Z*%ka@GiG~E^wXNn7TXpIj_!frY;h;d)VRO
z0}mg1!7U+||8H7QhE|QOx8r{7;S&$LxnMnf>S33M&pdq24NChJ_i$f(Q9tb%O}QP>
z6t@=xUmrC!oDNPzFFyA1@V$p$JpAfmkB7Y;4thA`;Rg@<xc_)Kz_t0m6EsviC#T>r
zgXZBU4?lbO|4s*|;5QGyd-%u0ztr*Yr-#2h{OtvAcKv^+hEq`V03S6SMEoFgO4GrK
zD23hh5%Y1PA1sr&kA#nEKC1gj`bhc6`zZKG`^flke7HWcK5{-RAGRO-t;0*&tC{4S
zvLjPani0>3?*}nI67Vt~<$P53QN>4j9~FF5^ihc&>1^m}*R7?K=8=F`_5WK43_Igr
zg9Gt#tdHY-9OI*wkJ>)!_`xzcdI=m!?7BYc`8eLk34V~|M<;VBQJJOneKhcKl8=Ty
zn)qnyqmhr3eKhuQijSjn_2_&%)kiZQ%@wz!bF77r(>OGZf|<jpw(^5bhG{v(M{6Hv
z_(9IM@q_0EoSn8l+WBbjql4sJ&S!EsYB-h8|9y017e3DM(c8yGKF*~zA6<QP^U=u<
z&U9UbB%OV57TW6%)Xt|(T~u`Uae<GXp-vA5U%wXNmO_PIJ}y*MsmSIR`{?6ifRBMb
z`ue!UM?WcC>VwLBP{59O&_mkkFIQO{B%Q%NF7rXnk{WAE<Z=y-GdR@8FhAHx83BIM
zH^Rr23|Ahf=P}a9RWed9AB^H^A7y!z%VU&}(HhqnAM@FqU;gwl)(@^l+3z?txz@*c
zAJ_S~-p6cCBDa0vG~q<yB;gIh$-*hZslpqDHwigYv@l(KhVW+LOyMlyEy7!crB-vq
zZxh}wyhC`WaIWw!;XGlf)dC-P`&g)PaX1XuBJssOmN4@f1l|t#c;ClT@q4+1nf#2u
zk2MUhkNbSw@8bapDPQGdh4@P0gF+f%6_1BhT<zmwS)+tikNSAb$0nva*NBg`J~sGx
z%Evk>Q|Cz^PaI{9lJ%j5r+qx*<9Qz&dHo;iKj)*=Z>g6TLivmTE8pVdB_D6elb3zG
z;^TE6Z}@mM)PL=N_1_HTTmM)7wvTswyc^cO_rJ9q;C3HB`uNGm4)yhcj}Lu(<YT9g
z-9EnX@p0I8myb`xKNXfn!SQ~k;^*P0zvQ;&<9i=_e0&|Y{np1f|J&-jP=BwFAAB6(
zhUsHpsK5Vz{X7)P5C5<HXCJ?C2hJmt$FJNpd?1fV9>0hBfBX1D{7>Ou!XuvlqvF59
zV(3paAEXeEcpiqhDU1n^v`wg(6sGe3<xEyZwsrH!iCaQj=m?Kk@Kp4Ld0`>6Q$CLh
z`CunJHjj$=;1NpAJdVkul6d7js^o)HQq_F$+=Kh)0N#}4Q9X|u`QW~zyd*q**UF=|
z?9|Bz4^H_GaQ<7tU|w1ACFK17FKs4NuA2{@(eV?;<MY9d&p2N8=W${l_48<u$4U8M
zTWcX~C~P8Zl*h>;jfK=XMT9>|BX3#~=Fu#V=K0{dj(2<<2&;IW<&|p7d~mZiB9ANc
zXq89nJkH3YO+NS^mce<n%?CSGM-DTOc6qeV2gB@;56-P;>vi#GDgtK-`6%+7JkC|y
zF4WAUlSbV+A8e=GFnO{l?W;U>o*xRk=Fu&W?s;604=(Wf3VR593VR7J%%gW67v*tr
z9({y-)jXZy!B#}dFOlY@bRduZoC2w_md8MOK1d3shSa|-k0Fxx;<Zg4L-QC$uksk4
z4<1Lim$$s^;S7$`$!=sm_~3X<9@i+USLJcFnvc>jN7F<7&jn*UHji;ilF4~oo5y&m
zP0HiCJg%3Kwz}<|kjF$-aZ-3?!c0r@J|Z9dQ48<)IjAXlOw9+6xo*tkraY$QgR7&p
z`iy|W>5AcJO0$`H%;FH5V_0+ClE<wyTL+!$V0IpJ@@QCwMrF8->Bk#{vH))vzax)3
zMdk{Z7jRb|^Tg*1x8<=wgiY?wW1;vW;bP$u;XT5odE846^H{Fp3&Q*ISdqudJnmQV
z0U@om<Hx>vtYYZ$c!mMbV|5-+Xo6V#a2}6_nrlQJ5ppUY6M0;?R=7^cR{RmulX<LH
zNH=g1NzU(VEaN@6o}^LdSqY!d<2exqnGg0ih8C#yVji3F*euD*dAyRx7V(!teSWg=
zY96nt_?GZ>;hVxYgr#4%ZRN7!N0a>hS03-=@vf@q1ABZ=RjlQR-p^yZs&;U_7lPUO
zAde68_=qXQ*)Ie)n;+-#374vBsqkqY|EkHZJU+|g^E`Ivu{Vz&C=7e~TI9<-z6vFc
z^?l}V^7vMg?}XnA_Xv-?{c>L(ha}lAWRC~(I4I5?kHy1z{HWqjdHlw$K98SO{6+Yy
zu=H!kKg9pa2e+ty9wq-<{GX#FG+R`W|H2;8NTWhSSo-a4OgvsdqJX40TX_Yf#M1?2
zM6yD+fSiaWw1tk4VQ0e<Ct)_`73V?$Wd)QIXV{M^puBhmVMSr30xFACDFk=oRO3;V
zTtf2dA~l3Hh19QAsuk8Lah_QUIIe)YD%LCD_)xw;Hcu#^MC!}u2EvmHXeiRCfJp`1
zP{7G5HZI_l0-6-iw1A5WxLCqd3pk^IHU%_Ov3UV43OKD0{I;5#f2#scmz)u3SqO5K
zq_rgERA^g3I~BVZ(7u2U;^!7{X4vZN0?rceSO`uxZ2lsj0)@2{o>xF86+0JjegR#@
zyA*=&lv25yNa>R`N|y0!`33YSpr_<4URXdc`Va-1u*fF83xVe>_9>um0ap|-TveA8
zFt~ur3b?cod}*A{^edo$0RsvcD9IpoO*w0M&=iqE;t=8G1q>}<SmD2aHKhVyO%UP9
zQ4OyWURl7%a0pbmT6|OiqYD@#eyxyI*Ay@|<l_opDCqNeNv<p4`T{0sj2!hu)spa_
z4wuQ~0&Wl6P7#?}z>NjmRKPS9Z!TbF0n^226#n})M`!(nXI25T3z$>DEu3X39Qkzy
z$!$_*7gVN`Jnksq&I0C2epdmD)P(YR1<Ysq6>xU}3k$(7aoCFTQbU?rEX^ea+*82P
z0`BE39Mv5)slz73`$C)d7w~}iiUL*^@L&O}3V1`3hlGy_R|_8&($1O!9ua?3I7Gib
zcwBsK0qY8QLj2hRo-5$V0@fF>K@0O~$)6IhtOw>?t<R{)J^A?pHcH{;0$$);NWMjq
zO$BUL@mmeKzL0-r@sidfU3#T}R||NpfY%G44he-hskJN?-z;Ej0dE!Xb^$*X@N)t0
z6!2~VpBJ#ZfcFa6R=~~zJ}%(>0=8@6d{79kA^F6NxI_6&@?ilVskZcmH$M0KgbPYn
zJD)LQ3)pp3EjL?M1)F36Ul#BU9V_6g0=|}S)$}uMZs0t)fqz%P_XQj*1P=rE6tK5|
zeFf|<Ao#O;{sm+KG5r*mcig-z;d0}uIiSA!@#6p)Jj`WM2(A*#>*)$FcYi71*8<!!
zcxCvlfZu7P4DmAjQNW)C6bnEZ{wm;ab^0&oROkACWNnb11JD_E$0JgPXc>&M;ChUK
zJ;cv{%Yqwuy1^oE(i3G!mLXe)Tp3bjNS6gKb6{03J`2hO{%6X9?@Lg^!zzPQ76ivG
z3tsp@Nqc?VK(dU_&B{<HLs=Q}|A(!!fSTKO*8Z<aiYcURy6d%<?Ol7{GBYzXW6Io=
znVFfHnHf@MW@ct)%J=Bmy!Za^ckelS=8UD$Xf!h#fwgie+!P@h!qpHZq7wQnPFx!I
zJw&b1DkAfouzw0v#jBo5)eP%~4a25kt3=yKS|T&jDKV{)u3>Ii7>Zl3#K0h~i&myH
zKE2@#hBF$@WGH&Y@L5aDR$})Kdvut+#2h8oD6wXVIZG_$%X3yLF;|JXOUzRW8_|oE
zSiHo%r4Z`pbISb27cjn{;X;NB8!lqFsG*8qtjWJ|ohR3$eoK~EN&*;Py2LW2u<gHW
zY25We%Sr8~U%_w#MGqr7!LG6^mqP4a#R9DA^wmn?&mF59N7gK{c8M`<?rpP9iFKu)
zHq*9Quf+N#YGvwWHYl-Si7QH6Sz@CSqe>i83P#+x6t-yOFh`fzMDmo_ti<LeMwi&J
z#1<vC6tQA^iLGQ5y$~s}ZHcXw<-@%f>Mcnrj5wO`Yq6$HF!h=pN?}V!rS!s4bM>9{
zSmNLkJD1p{6jF9Ap>O1=QsKKvE%v%S4EHRtmyx{<tNQ+zk$nyKE3v<k14<m|dezy*
zM?pX`98%)Y5=WLe%C#I;;%PX%6c(iNYBlx<nN=Oo^y;nsQx@`nEh~;Kaa@VxHTf@v
zrKO0qd^oYhDJ4!VaZ)L~U_Due^9HiSKFw8}U*ZBIryHJ8;>;3fmBP_D(VSi49H*aK
z;yfb~<7u~A9pu6i7nQiQ#AT&%M~g2mafutHomed=)vn7+;VXw)4C?5qy0aQ`mHB*9
z;?ojWm$;_HwUVvG-6ifRalH_4bl+U!h7vcLn^JCa!=(+K2)d=jt+J+eeoEXSZnC@n
zJ0`VTOIlJ%ldAfzQh5I>-xyQk-V*QhA4}X{;^h*rlz70BJYM375)YPm$d3<~c+`lR
z|A-OQs8&B_t7%cM^e0O^TjDwAK4ti{;WMSM?=1rTo|kOeE-UeZ5v43Tf|pFDbZvmY
zTH>`5Z<ctg6b?PUZqvLW?{)DH{7O;r?QO~CH`Ho~qV&5Z-YfCG`Fv2~L)+yreF9Q0
zt(PqFd`D?jCqCaP{wugCnw5P%L_<J{A4~jH;!8{QRf(^ymTyXYXXIPEob)FDk+#1t
zg#-CNxb1)F<iFfr;kwMQayaGntKxi#zcmV!_+9bezds$dw7iwlR95hx691N<%y{K+
zT6nBNmJbC<R5fZyIqWcN|5<;skc-N2<CjB^n5@j?WhOAL#|g_!WPIW>lav`=X3}!#
z&N_3Y+$lU*=y3|uOl>&Aa7u}4deOY@J}df>&YH&QN-USdyY<U8#+9j*!&&#Z91NY5
zsaiZ~UO$P~DAO!6s?5e^TIKLbZhg3It}^X1X_>4Xy63cIrYqAahk>bECNBrm6lHp4
z28@q4END-iLdPMLHNE-FTn-L1Lzx-Np}%WLn#t<Y=MmMBXDKslnb}M;dzm@P;me7t
zOFEbJ=d>y$p)@denR&|0D`8|r+kL(=^Osq`DN?oCwP2Zr%3%hgF1c`-Map3#Lg`{C
zc@|SE$}CZ4$ujFJ@RnJs%+h66EwfsgWy&mD4sIs;<;pBy4j#K=nH7X9H2I6P{VB>y
zPFdMdS*sXPrK^`&L-I>M<<N8GX%a(FG%IQ$P-dNS_;%sCW!5W)s3=^1qMyFgx?ve1
z8<j)X)(JgXO=GkUt8e0zoyzQ7W>Xt?GYMH{i!xjKaociethgzBZB-7RnB2O|Hs!EQ
zr+P<e6p#|i>|ndAX``h^EzdPobB!vvj9#FZ*|p4wHdD5Pv34u7SDC%b?C#nn(jG?k
zG*k%PN9xjuldx^VzGe0+vwxWb${Z+vlm7K?*Zp@cwXw`0W$v%=K!rog99HJUh?61?
zmk*SgIbxQGBg-6B=HoJ-lsUT0F=cKkb8DGn%N$qc{4y7mIljyZWlk$|x;T_Msmv*5
zPE|9#@;%we8=fI+`lNY9|L(Oj>~d$7Ia`L-LO@2hInEiRKiAsW!?UdOOe}^Ms%w<F
zs?618E;gkSuPk#(nM=!D<`n6+p;5p^u5gMpIYQ@8JR7{G%(Z21D08D);TyNa;kq){
zn^GM_VrW@$lWV`(UMHhS^CG*g%<ZycnP=1~WHp&d3M_M1nY+u}Q)Y~rXpXm-&vU9s
zAGz1*TJb$l=D{+Lm3h3(Lo$ccA8}o(T7!-%I!sFdnZqNOob8D+Pnk^Io>V7ty56>{
zJ3L$FxiW8-d8^FxWnL)ra+z1kylDED<kdq0y@;=|ZeMl!Yh_+9hdGiM>ZeNIaJuv+
zVx_!Y=DjlSmwBfg8lv=f)j&s&4@{|l&wW(p!$Gkn$%Q^q|7n@e%8VZ|LB!{#{H4sV
zWxgo$Wtp$ad|l>;GC!92rp&h{_|D-%9ORj*`g?UB2R-4c_b1c*tl)18DpB3!w=%z%
z`KQdkW&SAhXPLj<&6WF?>Gemy3kNly4rgo`B8El`ix@8o6Zj!fxT0qt9W6G!rVa9h
zk;6k{b$D#Th>0Q^5zUB+BPNL`MU*3kM@$+qB4Wyj$s#6?f)3Z6B#a<aM8VtT<ieFW
zl^>^$7#W2>ODe0YlS1O@Mu|XE)5ygoXEmY{5l19Zi2tGyy_6t@*UU%s^+DoRL_4C0
z=tZOvSwuG?kLZ}Pzm3^9qJp_v*WW4}h?rLN!<jK+x`^o`W*FqG03to>kB58oWpla|
zqQqGvW{cP`Vxx%JBj$)$EMoD9IV0wZm@i^}wNCfoMO>jFAYz^<ILW-`py5odSRi7-
zh=n5-iN<XsC~=`EL~_X{=X`ib7<U$pSl3IZB_fuLSRrD?h@~Qyj)LzkZ??;*QceCN
zKC`ne7ln-!mF+k7AZ>0$tQ@gc#M%+7M64RIMidA%WnC=_b@iQp^#}z(iLquB=Bwf_
z(}--Hi1jSFveu2l|Mb<a^_?Pu4Wwu9gpZ2YIO33qLnAhc*fe6-h}|MKQ==kAn|_Ok
zEhDy#*e+tLh^?a#XST8Y!o^?CyooE7w{IV@gPW;D$#bF4FzgtyQxtqy!tWfhi#*VB
z%1mnY?h$)L>>qJJ#GVm*MeJ)8?QK5$xQg$sf7PXi?`KwOsT}FRh=WXU@L&-&Q)K;)
zaF~LB#L*GQL`cI&DE>zrWde1Laf<S)K}C)=+vA;koZG0c$w=lCtZfmT9C3;qyFyao
z)QHm}?u)oT;`E3!<TDXhn!}k9XGff4{47J&b#BCY!Xqw<INyole1SO&(TFd2vC}Uz
zykwB((kS#t`QhbGk!9s$S4CVMaa+Xg5!cAL5jRKNBFc#CO?H#v4G}jQdC-QC4=5T-
z7_~*!-Rdko3fBN3#oiHdm(=L=JEJfw5am4)W7JcIgrBxt<{rttCXn~)T<Zf74@P_w
z@omII5f4Ya67g!pBN2~AJQMM3#A6YUyU3Ffiq#sJo>1`7;?bV-RK(L!h+V2nGblAy
z@;n#uV#G@k&qusqi^#!5Ab)$=k3!^xXE?CD7V)|gBR*6IiFng)^KQgj4p47LyyK3u
zmZu70qAoT{(-I8|X7#?IazBdrIO2<lFC#vQ_*8w<j(VB(uYwgj`RC>)-_xz9Us*GX
zv|qc6Ro$ZRBEDCotuRT2AJnfS{*4%`5FPPz#BUM5yT)H4ewFw76Yb*G7wnISKO_E*
z_$Lbb`O8qUDgKB?DRO`jHX;?qs{{iLt%O@Whg3prk!*8~9jg`%t1!M(CNt*=OgW+9
zM3oRmG|L@cVbTgyR+y^7WECc_gzc;;D&g;nV%5KoRQyM{lxF@@R~T8LTp_A3jT1|i
zFs~4ew!$P^KO!lFDy3oqol&e-s8v{^!jev@SD2~7%oQ3HniX0V+7*flJ?EwsvI-sJ
zeF3`0b3=6#O<Xmg3{;r5!VDE=tT0_AIIy<tB>eOh<db)JqN_w1T2V;C%u-?23JX+N
zu)=JW;K_4Vn5)9<mEiVsn7PPQP;l-F^O~nP%v0eRYks~8^PB8^ABNnDP;eo!(r*L{
zS6IZkI)1EDi&nVOtQI#PSyRMIRam;h85Pc~uuO$zE9_cfw+hS2Ocge$uwjK2Dy&#x
zZAn#Or3x#X=js(!F`^(KyR2$_wMv-!s;<Mls#?P~UDFm{s}kl~qFlFvBA8mFj;tx)
zdM>!WMbeaYqY9%cY*As$3L970q{5~ZHXAIWf}=cSY%a3FprM(h`tMd1wyUtcEU5li
zVH>mE)@(IyN+b=zJ6N6_EzjsmxT!#g<aesDb0rMoyI4X|szq|<-7D--;phs-RM@k^
zUS@Tqgc*;$D;#Y8`&8Js!hRL@H|GP*S)++K9AI3P3O~qFsrh$mBS@<NRpjD_S2&^)
z=0b7_)hJ>?_1~jhSD40EIIhCU6;4s7&{u%vgjzee><Okh(NN2!7yI2%=l`91nry03
zX-ZCa)6}yj)5-q|XIHqn!Y!sbr@|!_F0F8`Xeyjv;R10}L-ZFO`-xN`pS;Kok;h)_
zx}@sMDqLRS+6vcIxI#`P@6|mI(x)j^s;j>My9%*VqdxG<_v<U%P~k@PP4zYRf<1g4
ziUgBajPK|t%3CYkQQ=Mn3M~XG+-^S7p+;@}A@r^a_f!~TN$#!$y~&02yVoiAS<f=J
z_{*RVR(MF2#@rb5aD_+IDPk6nd9=b~6~<N|=J5(oRQRUCw-uhO@KlA@D!lGWpRVwH
zg%^xJQ{mYP&l%TnAUQA6KvUtRN|@+MfR`)0QsLD~z@-5}(Hx@P22I!$9xJ?A;o}OQ
zRCuex+ZEmys|xQ_c(=lPW~&&oxxGckQbFM#I`n;{Qc>7tRlRHZ6#e}=nP1`a3SU(C
z%sQ9PtJIhFrLSa^Nl-xOPfEX*Wv!6!T+5FYeyZ@j@gEH5F#Nf~FBSeW{%eKbD*RF5
z&kDa+{{NZPf6k`<R*lwte+Kohl<c|Fcrim_ikM!^(3oK{<(MdD{Fn)1M#M}RGhxg`
zF_Xj$k3)2lr%fD(fmpVFPmR?oAZD_d$(<`}YOE326mf7KHCBV#R54S>A;M1+hu}HV
zlro1p+O^t?io-u3q#1cmB_@t(#<XIRm}*QdrXGhV^uJe;4W~<o?U*#C6Vr|Vdli|*
zfxlLc8Y1)ff2<h?Vy2CmCuZK5>0+jjnKfp%m>JAab<GkpV;ok{GdX4EI1G9HwR3;f
zJbTO>F>}St9sl>LdCqv;s`)?H%kxRY9<LXQnLlQMI4rdk9HhVnC9wOHYFs#Gk(for
zQ|I=F2R&;%S|Vo2m_yZ&n5ANtj@c|`^O$8~mW^3EW}TSjVwR6tC1%x_6=GJ5Sy?Ie
z>Xj_~|F`;EEoSwYHDlI_StI`cSAYMx?prrzy_k(+Mw!q0F&o6FFH10KLlSN%H4gUc
zjbk>EJf0jX9&TzA_q*5@F<Zv$9<xWxRxw-0>=?6C%r-IG#%v$6L(F#apZ~djoXScY
z9fviev@}h`&h{wPyKBrY@{_?8;%*jC&Q{m_KW49({bLS@**j*Rn0;gRGl3khzxNWt
z_290{fwt^HF$YV%-gWt}{gy*qO8$I!%n>oC$D9#!q!Uk!IVt9-n4@EkkpsjWA9F(d
z->dlJV)`q08REaz>?g;ZV$&?|wZ^Ho^=WZf!N~!%zR+6c%$T!cu86rZ=IoerVlIlg
zIOg1#^Q2Nst1f)LRo$O2T_E=uT)~NtOmj)hWtLNqm&W7PZkIbnn%p4bs+g;l9&??X
zVesAbHFB;0xemQP9=8s?DduMN@r20}Zi%@y=2b<2nA>7*k9i{I$(TE0?u>avK|AIy
z`AN+EF%QJt6Eh~}KBeeS8J=3-J1CpHWj{~sA5^z>;=_Yvas~-6<qL{TwtLJ3j~ia7
zS=LCNig`NbxtQnU|6X@L6Z5Q@%xexR{zA-4F)zE|i|(!cb(wgI^DBc+`?_>13n~`H
zyczRWKSss89rI4i$1$J8yc_eL_{4k|kK0pv-^I0?B$4{&P{002tSq@||1{?Fm@i~y
zhd%kkyW0G*F#ox0q~c$@MoIOZoG0eDnBQZ5i1{(*mzZCj`;+0%8Yrzd5vvN771D=)
z#Qdq~oiIVdUon5jkT6~n6nNKA{)ze59LC0B1+A%qLhfO9zaa@jlQ05GLZuH&LJZLs
zoZLx0Yr=$y6DCQRC<${yjd6<n!;_%EN#zw@W!&MnT5_-{5=Mws!n_GnCQOykOBhI)
zI$>l&l2A>8*wZ9L36+GBAC*!z(qGKRmRX5vmjX^Lp`MT?WC@LgW<o2Wo&1k|p8wq8
z=_GVTKb#^7J3M(ZZih#W(!e*9ePdc>CCr#GQxaD9(<fndKSL7cDpHr4rmAO70-P;j
z_JmoC&uXX{j?(8aK9}K~hDy9NVs7K&qsI^Q@;70{gq0HJPgo#fK~<5kRKn5;3nwg+
zu&5fFjJtEYznok=VTmNH@0PSqBHQH*PaU;2r0tz$oW5MbvPSeSL!Ec|gcWSKj%Tp4
z#mWh*By5tfX~L=rtI1>u>n5z8utvh#NtnDz!Zn3>(2;)DN|15o7`k0>l&1X&>nDs#
z*f?Q>gbihg;cO(OxqE6iZ!=GZ#YB$u#IPXqg6?ITC2XFsg;mja)Gd=RaBP)?ttWMD
z&7Zfn@KUw5=(iK+8jTv;C*g62gwY8*ChR08Rkp0MbHXm7Pxvrl*M!{?Zcn%)VfTbR
z5>8JzBVo^ky%LT$hrJW_NjNm&Fzx(1W&eZ&681B$V;-vIK>4#JJS5>@rz=sXZ8e7x
zvXHOAIXvMAXB{gKNjOR#t3TN#f#zsQXd3Blaob48j8*VB$?W$ICnVto@rem1C7hga
zO2VmTr8mynsnD%us_QhTNa0F3GvTa+OA;=1;@Ph2eB<XNoNGk<&r8A^9|>@Qgm<D|
zV@ZaKgb(9lr(CEhXu{<QHzwSaa7DtE3D-I6s)VZ(u1UC7uSNU^3ccYHTV1)<SBu2c
z<MjzQBw<1#+4>5(S^a1zw`mkexYhU&H&eN4rdZvXaF_M@cEa5W_ar>;8pkBuoA7wT
z6ZX&h5*|!=DB*tRs;&oIN*Z`L;gN(#oxWo^+yYm&Fq&yRCi(qGGtobp@Jzz92~Q<F
zEoUx|Ba;~YBgfB~gR~_1Ur2Z{;iZI^<$-1*4zDD<W;MQQQ|ir>x|Le@x*t{1n+b23
zKrI!0#qYu2v7GO!&ngC*)%z0IH!XaW@NvRyRc5d9Ny4WI6IPk1%4Z3mC;Xo9N5U5g
zUnYE)@O{Ep3126Cqrf;6d4fdMPxY#$-&#v*xQzHi!jB0**-~oV&#v^>gx@UHFNShR
zNvLDYIu?G#u;9smCX7v>%3le8C;Vfwf2AuQOXyz&A^xilW4tQEs=;>RFhr8W&}w*3
zCrQSyhKB1mK{a^0nmlopNvhPVG^z}*GHI2mtBkCUyIEqgDw9{4qRNOWQ&yR(8ZIsn
zXR$hcSdeXT<MOU)s+7z;sZy?nwntSe)!<$F8=d}*u1Y0pTn$BpS52(kS~ciI;x((Z
zs`RQ1RB2a9t8`5xIkPIAYUmDXX8&mSM?=X6+fr0R{0w?_%JizV%5-8ilyBX6XRI<)
zm6@x|QVn*|>2x(gelD?RwW9jIs*2{2qN=P_4Si&;Dsxv^w#sr<=BYAol|`y7T4lZ}
z^Sh#j4Hu}gkdX!5YH?NrC1l^n8beu3O*X;ORhBTaWOdxdBm0hIDXXZj(qNh@PYw&>
zEnf|%<yW;ND^yw01y`!FvMeR<vVW@8tGMkdxLTFftE^!%sbWp@QM!7ZY_WEgb*ilE
z+zqR2WMsW6>)Q>as10O3>u{8_HmR~{HT2DmtKlyL;<K40+1$BOmkcK-SNc{}wytt_
zm3yjeBV|^(q{^jLwln3yRSv1LeU%-mjIOd{mA$L%Q)MRw|0=sx+1<75Qe{`u%X`(d
zzSZ_{)}9uu-zg-?UbdGkwQrUEsvO`_YM|yA>Sg;|neyrbr4|=g<dnIUa%h#qs+?Bk
z^eTr}Iikw3RgSB2q&XaIc$8dsXi%4&{1~T582zM&<7JL2CsjGYR-S5TP?ws2a+Oo6
zoLUXFNGegvpo+cf9cNTIQ@(9JXH_}7%DHxR@s~VX>lBcsRVO;H%K23;@S}JtMNmEB
zA~!+A7rQ^I#>F)RnBgr|F0XQh(*1Z<m8*@&@kDb?l^d$uSmjzLURULM8(Lm1w(3VW
zIV`9ZH@jOsH!S?6QT5(h<+dufn^-YNDR&sZv&vmoj)ajF#9>U8d#n6gWo(uEs@z}Y
zy(;fld7#RJ7W-w>KUC!jxnh-vt2|<19<|3lUga@MC5_43HAu+`pHla%^1O>b<9eU1
z@|;Ua5>cv0$Q<f5FF5zbDla)#9YIW_*jK8&TIIDWuRHy%DsR|trO!8QIN5hy-yQmP
zm3JH>-c?8+9=f5-Ck`J}`LN0lRer4UQI(IYd}$7!sLx8PBltq`-%3-|`dkh?EZn~#
z@x)ommxjNp@^zJOOe3kj6(8Npq_aR(zPB^07Fj`N`pH86UgeJ}KO6t0%CA*^vq-vb
zLSl<ptrPO6B7c>?O(u2yV+$&_D@!v3*@YV8)q()i)EH7@XpISLOjKi-;PCM7Mjd4Q
zT2SKzwa{2~VcBuw8k5w*7%^onuo_-tvKo^cpVY*1o+<n|!cc9IrBqN&o~p*wwGdHN
zP$?sYTOL`qRHIxYs!^#C*QmM1#IR~UqL;e#Q`vqinl)NAK5p<ygLaLy#>sU~sgu>{
z)cB#sk2ShA@*1brIK4(uqgP|q8mpP%K#f^z%vNLCT8K_!J6(<Gg}Ze#)|k1*EH!4T
zh53MTrT<3;wKv6h%wA)T8jI9ew8orLV~zQ0%wG#rFHuTqbJv)s#=O?B!jTj%wM(T7
zSW64lSg;n<BF+j0qF=bi6CS=7tFd^Er6pvIC1e_(2Ux1ck}fD`mWf5L-o0#%<!Y>0
zV<l%TUt<N$pLGt+3Rgi*O~rrZ8mqX;5<q3;cvAc7HP)zcV2y)ntXX5N8e7-crpDSe
z)~PY7#>O?)wS*hgLhM?v#`?A3_G*awzL;!SW24%*nU5N%w#Z92sj+E|&0L+#w7EHK
zSz{|PpMot^oh6r4@&`>+RBGEA+tt{k#-5t_*Vv)PE;V+oG1`sVvBpj|fmW|O%YsAE
z)K}93DOo<LFfLZR)!4ljW(DeQ8WE&{y=v@TV}Enlr^dcD_A`Nq`{S&fP)@G4NRtQD
zg2psF9bDs(8pqW*zQ&<74y$o=UvK*JSB)cUEapgigc@jTirY~pkT%5Xm>S2{!dR?a
zT_ASCVA+#voM`+cLrwWae9B<%sqO_5<BS?-3a{}@jk9W;UE|gox79eO#<?}FsBxu>
zoM(8E;rTT#Fd{WxC|7jV7uUF?#-(oiWi>80ff^_wMJ6ak$pNksL5=I3dv%R#YFt|j
zvwcxYv9it$HEy)hZZWHy)I;6Oo85)w$>JjoJf>rx?lKS5c(BGDHSVl&SB<-C+;8Uh
z)EHCa-WvCrzm%i#P6BAPE=STU75TsT^cO)7)k4Z+YOKye$h&Ghs%YTBt{*oZS2wBg
zq=k9P{-9o?;u;O*63^CnuEqzh_xTzx$a8AE;YYddi#1-V@v<LP<W)Q8EAFAXpIIrd
z$yGdi5&ovh-mCFejkjyOBXcCY>wutKb#tjmh<@+8gXr-?Ig%oh3w~bX3#p}s2F*`v
zd{zs=yiYGm4NPCw_@>6UHNL9xwc0yn7#d_jIq-Mp@cp2i(vO5!*`I3sEGMk9c%5Hr
z{92=4r%~s(8ow*F))`snj~ag}hSwRt&R;eDR(#V5|2qE|8Ec-Z<=<M6Ulybugi%+O
zaaF~TdT`*O^{|Q*nH*+<I+NFf=S)~<qB;}TnWWC}I+NBztW#f8seXJDACXN~4{Q}N
zrl>PQeDuFy!>OFEexZtFN;&*Abs}e#>Y*-Cmg_+eipG_C@Q}DpQm1N~T0IO^%38$}
zS`q89S!b3yv({<VY1c^={Oe3tXZkuFmn!P?>U8Vmeq7KaxXKRHg8&L9)7HZjQ7OyV
z31^T#hcc6il{jNPXhyA@+4A%Ug4ycKUT5Aq^VLyfC8sFos57S|biujn%wwdl7U@|{
zp5G~&BQ0!YE>LH|Itv+>s>MNBi_}A4S=3M|;=DwiCF^WbXVW@M)mhr~8;Vt(W$UbM
z%H@<;XXQGp)WgMG;-IoC)LF64O0M+bA)&GTF>cj5tJhhh&T10amByZ9tXXHRdT<rZ
zkrblUYI)r{b=Ix3-k^2FL44LX&kgD!O2}0<sx!(`Z7fwx9u8{C2ed1)S)I-698l-L
zI$PA)vd#{5Mq8g-$;Zq@ezLX2*hY3A5*%+kv)bOdQj1vaSZAj?d&*2s+_}zf_2419
z)Y;W33Kw!7nP&GodpJb_Y6H)v)U>_p>|1BQI{P@QKQiub>uWV9U4`yBjDwsjy&YNS
zVB?3>Ike7UgXxF6n@FA`>><*FqRmltj;?b|onw`2{}hMg>YOmBvEyA_we&lekdwqe
z2~*iq>zpPdHdwB~>2=Pi^J$&W>YQ2UtUAxsdA82kb<U}CL!BGzoLlESiCyRVI_KB9
z!2R?J^{F}+)w#@`An`7)b4i^`U9TqI8q{P;xwJ-4$#%JzS3?}Tvd&d?uC8-Uooj7M
zl~tdW2^3D%v!oL_faVVh(JFY8Xw37WI=9Hp>fBxD9;;Eq=xudwuk(P;|J1p&&RupS
zaT61<m9EsO$JDu3G=uuQ&z0U^9~X91uOje+b`R~j$uS<T^GKaXP5(rlC+j>`=W%Ii
zFzQOB;{22eo;Dw;SB@cq=juG~^bhL1Q0K)u?^r)C)p@zjYjs|)^NNeehvj&$4oam7
ziBjJ1<6DkzZ`P5;#a7<(w#}+>>Roet&+vUiHBegm&;>uT4}V+_v!+k%*y<N5^?98y
z>eL$48+=*kE5+3YQ#AOx&Np@btuwaHw{^Z#3^yNj#_#L=Sm&oYKbWW5t5*N4_^)IC
z3i}r97i&_){qXp^jUrsN|EVFM&fg~Z$2{eD%95xWYiKZDBiMK1216PQZG@OVVS`}}
z#&0lz9(5|l>sHOOG-OLN@+Bos)Cg9SFq1SG-eA&(!@lXId<|8Kt1396!ITZAZZOhW
z;xLsF`IVSV(+CV@=%_)d5n@r<d}I#!Or=5GAZbu-gs7qo1XU;Tga@e_G#kv-VD3if
z`>h7kHkeMUfCj0n$QpDT<i<OV;1beCVPZMSfYW=85a{}2oSHLzgBcpk>MRMS71N9j
zW@<3Ai_1S}ktAN)_ti36gV`I*VVUP_SUfwt<d>-PG?=%+LJbx+!}$ysbd%>dzJN8a
z=BrVvZjnYf`MFqw#U-Q(`hLDdgC!fGJ1pH`DW~^Mpw1#KE#rE%AeBhVH&{WG4K6bM
ziVe1GuvLSV8m!!4l?JOeSf|0d4OVNgdV@91O`J7qtN0pb)t_dpWzDSZ6fG*(Yp{NU
zO-;W+gAE&OY+TLU$jGQh=p$mHpTyo|Fn1}<lN)T_U<)~zcZuZ~q7mG>!8Q$!Zg5P4
zZ5wRYV4nv2HrT$w4h?p1ut$T@4R$oET^j6UJ*yM#tWwsn!jyb$*9N;a!j6;7szpI?
z65apiQhT|G97b*2+g_xs{hW1hgF_nZ-{61-2ilnrQaALBPW?j8Aj(5+_rn?-ZapaR
zhz3VW?2#O$&SIUbI%!YAL6WG*u?@~>aAt$!8XVu?ga#)zIHkd<4Ne-=$;q~kwiHCK
zaq2X=v9?C#z*0*i41(e*hG&`noCfDMINP}B<tpd7xV|Ex$MYLpFxX}ED95<C!6gmu
zY;aeDOYLkoy6j~QE^ly!_&2zw!L?2l{Z&R(>D5BKVRBuA>l@slF6mICR?9j28+XEQ
z(pnpCcBxw$+}hx_2Dkh14of2I%SNJ6w~|ioZg7utUuiI=!MzP0Yw&m@%((7r@IZqH
z8{FRr3o*4?+w~8r7c_XJ!J`fc+DTCDBeZYqUavMvGfy;lvcU@tUTpA`nLp!}D)(tQ
zn>F)ngXbC{3W@FW&XtnIN;EGi%cGL;m(}I9=+oP%2Cp@Ey}=s|J}}QW8@%O$?=^Va
zDep9R*NE6^0M(A4IB4?lzC~4M6rT@GAb<PFu|i7tw83W${%-P5lg}G`A^&NzZIdq>
zd?lkdnXbv#4Zcw*ZZf3Fx90GpBbE4n*Wi2g0?(;_updg`pBnt!;1`9~q5RR{&j!D`
z)Nc)bw==7tB%DmaUsX54f{tcT#Xk-HZ7|k+B(2CaK@}5a^&NO<GZ?Paq}*g!lkuBO
z&}70UlQx;G$wbW%NGEBA^}@tvsDjeN@Mf^M5XJDxn@rJU>ZT3XWXdK}HA6+(&eB{+
zlaQbs52hoVOw$az2U-RyQT;S(QZaG2N!%o9(r%JAsWwB|dXq+znh7L8U;bv3mQxg;
z3+)8Tc_4Gj#crUg?pR=L5$DZNs*s-jU!<Oqfo2#?<?YiqnW4!d(m<0Lo1s_EX+ASG
znYkI30JHdUwq}raRvC0?kV^b#S3z9_Ev0#<Ypy19H<_o&yiQrrrRFnSz;J#!z~F>X
zMHaFq#b;sXYLr||A~jjx=}R<OvdJn<R(0-DO_pu4oH;M8l;*hEet)o7-ZU#US)s{_
z&2fD}Gn2lqR(7t2u+^HZZhS36m0iP#I>?%CorcA=o2=u+b(^ebL=q~%%FpHh8#LLl
z$wo~^HQCa+8#mcRH5%V^kbW~GGQ=kYMd`PNC6@xX8l>6UhzPc8vVD{1nmpfRhbE(&
zT-@Z6CObCSsmUQt4sEitRVO}sH`%4ht}eS<lRXBx?cNN5OXk?K$zIJ6R25tLL%=>w
z_HD9Xll|SsgPR=C<iI8eH9eC0RJ<HmO6U)W>U5e}9oFRVCZ{(!qsb9Xj+84lIibl>
zE_ICSRdbHEYiYT0Y?I@fVaHfPYQIY_B2RQ*IJwCwO-?esOwiZHscz0`%@8xymGsl5
z>zPf?YI6Qyi_UIxZj<wxA)1}jL<=jKKoPqSrMC;*%nO@bBwaaB$aVD%8WCLD<n|_a
zG`XzF<xQ?=a%Ge2o7`aLSGlua+vMsd*9;0KS5X9z60Q@ycK~iwsUh6l<d!Bkxz!@j
z8eC1d)$Vs&Gi;D5fGFk&-r3}?CJ!`u&^+&Ma<7|tkBMcGF=nEQRLgx$?l;+Teuw^0
zlZXBIl;I;y9<#CZX_ZIaIw|4tCQm5W@4O_#lWx8`)YDC#ak|**_pAcZc){~uX!4?&
z{NQ?DGUs=iyxioKCa?POO~cpJ5XS@=;tflyKCb@wmUG`Wlxs~;<=rOlHF>|u2MUQz
zK5O!!9q%Jo)PHyRv7(}SuHQ|Fp`!8UO}?-U-zxq$`AU($$v0-J=BQ~hnc|Gh_k`y*
z-!=JOjrGSDWN78;_hXZvn*6MY)Z|x}{loA#S=L7ReK0a>A4&T8v&mo0U>ePu<d*+7
z8QbK|7H_qn#ds~&Yq5TdAuWcsn5o6gErzuizZI%$x0s;Cge|6MF`~spEhcU;X)72`
zoaM&ygh^VVmf@`+wo)eZqqH=+5eYwKi>X?~Es|Dn@~K;tTSP5JwwR_xsTIZ)wOy>l
zL9;m3t4C2*%t0PiHKJM?Eov?5t-*NWZS!V}mZjBVR`yavO<QCwIxV^`IIZi=Tl89C
zgesgU$B-)yI7@1g4AZrkzQqiKb<Nm9^J>YjNvx`#rNyi*R&23Si`iPt-eL(;&LN&H
z7HqMQG~kqZTFh%??$)?-9rLxAzr_NrFkYy2nydx|4hwe|C^RkHViD6XW?>Yr7j1=|
zK+$MmTHINRX_9cs7E85Q+9}JnSkA~YW~+fuG|RVGp%oT2{djVvPkc#%E4Ns+#cC~9
zaS{2Lw7t6VHCwFJ3hSCRT49l;mP*34TddOxn|uA2Wm+??+X_1>@}dn|Y}n%L7U#6s
zsKuxjd$riR#l|f*X|a=eZrWlqBipywyu}tRw)NwdEw*a0b&G9mbX6qIf|6W_MCy;H
z+x?e)bp)uz=oUM=xGXDmNy435?BWzzXV(_HNnNe5S+PfpJ?#l{KamOcSLOS(*tf;O
zEe>(1{aWnb;sE1)$^&Kh{w|Oc75Aj=Lt7ly;^Y>mv^c!Q5z=#u6IvYE;;0tKneyls
z#~9I~Ku#+)9&2UF&E(8_8KDW!i6%Hn>63?<rv%eaabED$7N@s3Lw?c<lM1D18Fi+b
zKP*J@vs!3MEd6N9RP)SpTb$S8?iTm7IKRaOEv|2Ig9^5|NX?gf59Q((m$bON#T6|s
zZE=}e?RX;2l1)F=q7<oG@#IR`#jpFXZgEX3oFY)~yH-xv3UfkfK%SH6Bi$`-YH^3O
zVVQ4kajT5zdlGIj2l>fuEpE5wHMNtO<al@b@h-PrHHv0Ti+fu<-r|WC_qDjc#Usv@
zY!9?}*p)um;vpyM164|w41G_2R6d~p2s=y6wblP*i>LhfsubJenHJBtc%j9!uJ<`-
zNtpg-h+b;E*y5!YFSmH56?VO39a&r}Zb_>+AgF*N<-FG7^%id^Mhy+apAuEq+vX;D
zCT#PL!a|GpTD;%lhZaA!_@KpyCitesM=d^X@wp#AakP=)B=Dy#K5K<Hs$!z9-M94@
zCi}9*S1rCau{wfGAo#7@`<)5CH|%TUrxriA7^~3T4y=A@@w?cX;8(-n<fwWz0Dt;X
zo#LMsf3^5qUDCHSsCKP$|80$1X)0if&v<QynxXI^?cf#aS;B|48Nba0?O<+cOcQK*
zj?yPG@x+Fcv>85Fc2XmgwV8Y{Wr}u~Ictk)sy0)%LyYRR8QEr<cDQ??sg!o`@JgGw
zO}S0f4qmD+s(k3}f}~BgO~Zfl*9}OuHuZM6<V067NDN)TBB``Rd8f93+O*qY@}IVY
zsGWBBb5qt1S^D2uw;ejTjz{Kg3fCxGsNP5m6TS9zkuBS7WwEChahn<2%+zM)HY=OS
zEbZ{`7#VJ{HnX;wt<CIh=4dmIi%2bVnrv>dYKJ3^(qW%oaem%5^SQnAw^^Xgg0Aj&
z8+sv^TBOaw?QlT1f8z8$?Mk)7`PgDOi?>;#&64eKWydmYmTj|C8~rD4X{V@ls%trk
zp$-2wE2?Sj;9a`FL9JHqO6}lv`mTpGCV5tAvuZos_OM!;HQKD{+E;IfT%FBctIgVN
z)^D?co3Kusb#?iV84A%&FXF6^ovCRXw%Mr77VR*ej*<rSkw<HFV>{0#X1l53W`=uN
z7!~|Zhg8jB>o(i8IkL@BD&kTS;D9#Uwb|ayxkJIf&1m_aOxzB)%Iwo-r#3sc*~L6}
zYqNVhtlf5X)i3FfOYP8M_jK-BwybL0tIghRhRD|X$hDifZ=3yG<Nk8Cq2YRvxjgqi
zu+2eMj`VhLn?u?hYF1L_VQmhV!iRB$Q*Id&?l71C9Bn?AwZqAFl{%))vG$YW+8p2J
zgf=JI?rOqGZBA};W}CCrMqgiZirqj}pW5cMHmCdXwV|9bm_Dg){%Lbgn{(ToXE&4G
z)m~XarOuaK+FaD;0@KS|))~UZ#xH4eX*>LtKxF?3FK=^&yON~6vdvX)%hj@eo15EQ
z)8<+!Pz5z|wYjm)^$K_To1}eA<HZo4-MxEgaPM2%+}7rH8B41G*=uB2Y~ImEu6viX
zA<o7x^8YBu_cz_{X@?292owbFYjb~_byC(%d7#aMZr$=J52@QKKBP>O@<=;GoA=cb
z+C19ku{Mue_!ru|XhT2I=E*is$%t*9Y4dEG=h|TgsA-Hsx8Br0Kj=u(zoOq%+Wcwr
zay#6_{+2nYA+NM~wasgGq}S#4R$w$<_(rFoO#G&Tl5PFAwBb_kT5s<e*U)_Fknl&U
zMRfT?o4?xpZ4Mu``MAv|ru?+c??ygr^Ld*u>;USFzqR?&Oun)Me{J|pJ6sz4t?};+
zzc>8B@W(bkwfWijuZF)E{%i>)tsW=xp7tO1L(OdebQMzjKlW0^z@ce~ivL=qv28_6
z#!Ev`9g>D&S_YL`L_aKL{FDh&CQO+k4N90OW#W|KDU+s5VkZ5Q&oZbOPL?vc6Lk=G
zLI0g!j;dykNSQKas+6hI@V{EcC4I0!qRJ@hSt?jc$x=Eg<ur8jC=GWYi?Wgurz9!W
zlv+wVB~8N%DP2rgPidqf&>f;d#7HX*`(2VmiTdg9Fq*n(rrk}0yUr*1$0JWEQhF%^
zDKn?xU$@hyOqX(#$AaloW=NSa4FiYnvr;6HkPi)ErZo8BHdc$Ioh4<~l-bg71=j2m
zH4Pm^Khex-T(!?-k>*aB$0_p;ri)DNnm=WMlm$~364aG$DNCg+oU({2vI5nW)ZG?K
z!w|f<nCKQb!-M=!tEFv=WmA?DK^i{8Au?G<JJR}S!hzmfQ`}o2WyO@0(x4OReC3o?
zQdUjFvO>e_nklQLA$qGttEa4y23MElS1TT-;U=g}v<gT=>{a@DDeKD?9g+?kq->aS
zM9PsCRerKj%BYl$Q#MK2GYzA|rfG;gTd8=;W@)(4Nenkn*&=02mr~T#DF4Awwy{f$
zmRVIW4ZgRXU>dG~)Bj;*f*ou=72iqzV_|kp!$7=q$}ZyXo4zFBZYjH`;qtDBJh<%P
zTBL2YZm*QRE!93L`=;!dvcGc=OF2L)(ml^MrJUrzl!I)2spViJhge1OhiyFH7^PD{
zX&47(k)!0a`Z7++c_~NB3JU%y$EF--T+Kf<<@l5nQlz32Q%+7fCFP_vOo!AE`MG4%
zM07EK^x?FW)6>x2Gg8h<IXmS{`;6RMmi@>6Df)9P`9Aid^HVNOxh&;^Gz@}rzYC>C
zsam}_<q~%y4eNjV%7x2Qu1I-1<(-r(Q?5#pabHTgI^~*_=Vd$V_FBo1a(#-n+~ri?
zDb5e!2HWLEd&o`lAF0duLsC)7t;TOlxm~7|cqwC2?oGMN>365xqv+v4Dl@4eau31#
zQtnsePkAs65nBZPpJ@7s5`{mK@`U*af7HlhDUaKleS#-bo=SPzS<enqK4U}#&kZ6f
z{zA%&Zsu=8SaWCyfG?-KVqbbyK9=&PyiP7;ht!~{K~OZW=|#*i-m)9Wj#BcwDetLZ
z7J|?FDIZ9a8S7+xnDUV#RYoo2<CITQ#-`ed=F^nVQhrGJG3E1=FH*ir`C69Jon{`O
zzjS9As?X4*e4FxJ%J*rw+h=?oywQq7QP*Fk8LrPP>ikd2&nbVT{3%CD`8DOYl;0Kl
zwDIn4uCZfEjVvDQ<Ys@R{4EWq{F^dTuUtL&mhDs(e`_hx<UeCb#uOPNGKOXh%a}N0
zl8o^)CdimDW1@_|{2$(${$J@R(NNUYlv~?A8IxvAmN9uoTemm+&cKfURGw@4s@cBe
z$(SmmoDpSAoiQ?Fnv7D$fWzi=+IZJmtpB|&f5NPi5oaV>SW3^Lop$~A%9YOU%M9xo
zjg0v+=Fezmv@&MMm{GN7q!~p<FC)w7WOOs~jJe%g=hYD4Pn#{^uO{hlSpyl<W=xkc
zea6Ci{c7Vb=K0kUipe^at$)2`%$zYt#+(_mWXzf|TgL1eOFJ4Y=Pt8?N3oUs?Vh<*
zUB)~a^Jc89$+nJi`D0b9>+Pzx*8P|81u_=QST1AvjD=Kn#u6DzW-OAiXvSh0i)XB@
zxt#7^P~i3Fu{O|rTVYlrsp^bnGM3H4-?BD#l-|^Ho6WVQ;J=2gkg;OMsu`<gtRykA
z@bREkGPYDe_L!?sww?c<zIw(Q8Ea;&m4)j`M|)h}S+}ccMy-gdg{ox8STE!Bj59LU
z&)6ViuZ+DjHq6*4W7~}FBuU1`8C$4|j7>5&&Dbns^DNw+w5J2z-oC(RUw<NMe~FQW
zF>C9LZ88o})b${Ks6wm1FSfme$=D@h*No8_J7(;Zv9nsCP^QB<3cQ+iE7<B~t4`WT
z&WznvSH_+h$LppY1zSzFHOBcvRHteyOtok1n{i~uQ5pMX?4NN+#-XY`<G_rAG7eT7
z6?^sHD_y*xS+^pszj}6_CK4I?SkmDcM`WC@-2ff1(Z6f8weElSADwYb#)%mx$z3y!
zlMERrWMRm=LUU}L>{XEWRb$tBiE(nqDH*3`oR)FDrrG+mx-SU5S&>!~Y2BhA88Xhw
zxIN>JjI%S&$+$A(s*H0p&dazs;}S`dae+cm#zms^aG+Ryr{>;X;M}7<c1f6VnIy@$
zA`4&KyKii`@A?7XOZkvqb||_^wv1~sZp^qT<JyetBvr-@8ISr@=i}N3aMycM$83z;
zoN-IWt+HSi?(Ta=+wA^?-1Gjj+l&5A+?^SBWjvPgc*fls_hdYf@nFUniIH(%#{C&D
z>%5k~$@QvYtY=nlYEG`{R>s2_k4S(l{KNDePaxk@r1f7EKlC^Lp2&DI<GGCIGoF$d
z8P8-qtEj6@Eo~X;vP~Vc_a_Ly)X{ngmhoc7OR6;EYk%$QTVHYfgTkq1P5!Uzs~N9l
zyq@ufqEjct_BS)$%J@Cw4@r{oPR5rRUuC?T@t*3+_$1@~j1Ls~Gd@zZ{J+BWWRfT2
zvy9I(zEF_-ze4m#{p~m78+mxfPZ{54e3$Wk#t)L@{|eWC>Hg1*Uow8p_${NVE7AT}
zSXL<hQ$bsyyTimC{?7PELB7M#4*$xZGw3j0hxGpn*8@^Whw(d1&|$((nA}eHze4mZ
z+V<}-yu%b7Ms%38!(^TCakR-h%=#bUdM=%TSN!iVRfnlNjO>J|?7aUg6fdl1TIXfM
z$gpCluq<0tJJdQX*<q;;^$v{=Gk3x?Y!?45tJ$H|q1_47!k%ts)-cowuNAIS>pFBg
zbUWmoFya@TFx}eAJQww(bU+R4FkOe~JIrVr$*gf%xid&tlZNYdXL7oV>$ccg)W8n2
z>GJ1Jm@>`N318e()*MET&=R1-Tpi}_pzikMkRZbzDf61cd>!WRut0|eJ1pK|i4M;Z
zCfK_VW1$WUOPLym3>TH0oltfg50Oe=x*aAAb9&$SZasEbrNgQnmg%r;2VE6D%)xWH
z4$HgX3X;b%tR#6f`L{B4w&x86MoYC?hc!B(cFDQAbMMdy)d@5IwK}ZbVVw@^cG#%H
zs1ECittTPto15l@8+6#P6SVY;)hG$&CmTyAmVb!C+T?87VKW!pyu;3}Yl{w|-_lUX
zRz|k&u#J&z4YxDgzQYbiMt9iBi0F4zdtIXtJ?_$B*G||a+k7ayS#k}OBQ)qZalS6|
zcSG)89ro_9PltUw?APIh4kwym{|<*65zPTc4(xEyV9LQp4(V{Hk;4ps^;Jkm7(deR
zD8r)-#pjp~#~MFwFy;6TDy82^9Zv4>b%$>{oYLXc4$sN~I-J(w^bWUlxV6I>gQd<l
za;D)~9nLm#j^Vk6=NZ24dmAp0`TTfMhbxUpl8ZZBV*Jt$ml?Ud!xcvQrTXxy4p%$z
z8pG>5Tx;Yy!+v{jFn*)qO@=ocuISotGp-sR>Tr99JLKw4x!3Tn!Q8t$+%t%eF(T&o
z8M)u^fx+AdJM?7}&xboa;`B!cb00JEc!wv9JZbop;nRjH^-O2njTX-jro3+Cg$^$o
zdCBnQ!Q5AjylVKGXhyJrz8BEp%?@ul@smNyw>!LJ{9VKM2Gif~BZeP#_-HWwV<W3u
zQJ)(Bti$IWzUc7fAWc8_D?du5-*)(}L$yn-%lA$k+kq}WbojBuPlKiYHuAIKFY+-X
zzZw2+_=n-2hJP7KGyS^$@#DXSeG`x8o-(4#5F?@-+GSXm@w-gWWx_6#4W{>vK9L_M
z?lOsy;f9kM_N$oOxcE#lm^kHN%2Y<C?lQ8=G+j!5j19|!G*OqzATDP}j7wDg>c*$-
zGM$k|m*ya4t4rH>I+&7m=@{=C=7xn~&v3x-zce#_m)V^%gW-&ZGY!(r++`Nyvks=r
zW<*lWF_<!Em${73J(x02mw5+qwPk@W3wFcJ37d``yHGb=%p!cbE(>?Vt^SL2!?b5n
z<BN5}w0v==Ea4(c8ZKqHwBa&_%Now=Oa2uD#b?DXD|Okc$KE|w?y`zh-3#1S?Xp^z
zUAyeoW%WU+Htw>9@ih(CGF;nm9m91E*E5u^);F?2mko_<WH`!DAA}Ntew+AlQ^U;+
zH}A5Aku43kGThow^xGKO)^NKn+Z)-zaJ1o$hN9fb$j)7MF``|4CGOs3k1hx29Fp_B
zh5&tstIP4-aF54c>PI>+)McM8`*zu{%l=)C>~fUT59o5f=a~m~Imjso8*2G>NS8yq
zXo`4%7e|M6IlRje&cz?pR+i?FV*Z$xB<6Wcmt(t}?RCm<Ek?SWsA0%7Cv`cw%ceP-
z<($&xRMp$%0!w(B;W=GS?{Y?$GcCzk;v*+_S<T+n5Xm{CRwZ4|6Q!2k&QjuqT`ubK
zbeCtkT-@c7F4uRtq06ORF6(ktm#e#o`0_4Sbh*-X^~Kg0I$FM`<%#^zYPrtZP>VG2
zKE_b|Z|rhYm;1Wh-{s~mw{*F)%UxY=?Q&a}+q>M+C2^CV^A5nFnr~P(F}b_TJzd6h
zxwp$~PSgrT{PojPPEdk9(B;7{k9B#x%R^lr?(#^NN4sHms@g}Jn<k~gMX!cG(d9`?
z`;=`Vg7-|OT(#@jF3)u#XS|%}yS&il(=MNNd9lk&UEb;PZkLz4ywc^(E^l>twaaT=
zUhncom$STDKX6d~Q(c|ds%rU+khcw`vG=;X-{qq&AIk~5d}xs*m}n%b_^61qs>e^<
zC?WEe&%1mfkLvPsmoK|~)#ckR-*x%A%Qt2sGBrVM>?`Mcg?%&mu^aXi)J!>m)N+`u
z_Dh#vyZqVZuP(pY{eJKAhg%_Uk)9=kd~bCvoV)zfWvt0$6xAX=|4K{VqEU*FAvr^H
zX3Lp9XIReoIrW@I&ICCV=8VXhGH0TkiE}2+nJh;<#eb5V;riJ>N1L;lPo7g&<j;f5
zYPFgpd8W#lIw#7h<c!RjCZ{B_9M!IMs8*Vy6hq;HYGa&}<WzHNIa0V13*8)O{haG<
zB{6U2v~s4+nJ%ZDljh_(MNXE}$?4{ZiJGQW>I;@lMI=ctM}97`2XfwXx@aW!^f@!+
z%#<^8j+8TFjw~pz=&MV(OgT%=td>WKYL}#%BWF&f<Sd^vSI*oyi{&hyGf&REISb@0
zm@{9_{Ekb4{br7Kdl$-CIA@WZMJ4>8_G0f8DTau0jCTHWmdsfyXX!iyF4e0rC8?G%
zLvdc#dX^fc9Cfi3a#qY)GiR-wm6VmUTF&Y@tK_We7O5e!zL={<i6Mqkg%a1WEtI}?
z&N?|8=4_O+Zq9l+>*s9X>SQLllUgk`s-Swk;HaF9b2iD5|4VrBl%+(bEOms<bGFFY
zJ7=F9Whqo{nX^^S);Zhc?3A;!Id5yYL(X<N+nZ9g$U3s!=$sv$tLh}4*zS_EYtC*t
zyQ{dqqwVe~vORM4%-PGtvW}_~6ZK;C7d3X@oc*N3oCESOE+|(&AqVChl!v}A1&UJ2
zkuv2fhvpoX^S0EIb9l}XW_y9PaisBca*h&>f`862IsJ-`%{eaT_?#1R&UQmi%sDCN
z^qe#7Z}Q%g-9b)K5%ZC3cWIwW4)30*%`1t0rbMzuqy)((Q6-Yn&y`4y;pe&R`8i5d
zD=y5rDCgpwOL8vDx!iL0&2*_GvEF3mD{`*Pxhh9BD)(xcKIfL4TXU{;r@k)d`W(d{
ziE%^DjqXP`xt8h7L{Rp<S+4GZ{<fUka~{iiTq@F7kaK^|137oP(z|l*&bcRNOwPSI
z_qmN~h=L^MBf<12WA&RU_+ZXMIS=PNlJlrTgbXL6NN*}4!6fz*Zu_e_Pv$(8^K{NL
zIWOeAnDcDTbBg?V7?l*4B(1b3wkjp{zLfK_iYWfO*NE)_*6J8H?X{fObKY>!m_O%D
zo3B3{yd`-YPT!RgbEfJsb&vORKFHa$V6%b`b3RgJE10GT4*9XdX~D39Pb})Ed04T2
zX83u|7e>BRR?ZK`zsmVK=NseS=6q*F6C0KK!SF|?Py{|d<@~Hir|9wDoL_Tx@y_jU
zMt(Q^!|+eTzYPC2{KrrQ$C`t@UHEuKaHJvTug8AZkdusGgw8TS!GuNd@QDm3H=MX&
z5+lP6CpFwtqk|D~o5F}njVPGX{FOMBk*N)3p!v1=Q!s16Yz5_lsGw317t{+H1xXR6
zK-Gd;5k?a!R*&kZGTeK9Y!=K=Fk?Z>4BLaXq((Bsj$zj@H!KW$h69Gvsv;xP8%j=j
zi(GD|f|(0uu}$R($5=CEN9NfJ<|tUCV9|m(3+5`AuVDUyxeMkgn70V?G=(pTEotSq
z(zCR>K*54iX~Du0+w&hmX;>XWl`5FX%@!+IykMz<r3;oQSh5HaSlmP)4$=U60a37Q
z!6rqRE-FR*m9<<EV(jt-D-^6)u#z8FDOlCW%7*H^s}-zXAShz})ENcWC|I*#EhnyR
zxPjq11?w7F&v1Q1(QoJ8v0=eRgDIm5Ha6bRlHFfW{4dy|;P8SY3briRs$h?TJqxxj
z*rs5|f}IMsE!eJL`+^;;=R-YAd~c~_>(TZ=`H5P+bHOeJyUIh{f0ZaVkQeP%u)94(
z3Rk^S>0SkU7wl88uSHU#7~XEqQnKXVuVDXz0}2i-IH=&@f<sK%H<>z}Xf&P<&pEW<
z&nY>q2r*OIJF?)Yf-4HHEI7L0n1TxnE-E;-;5a+anFYreoKSFL!AS*TC0`O$@so=%
zt3O5k!Y!2}NvhKdPA|elMFWAH<cxx;i!iJxD#}&PQjvml3eJ^B6<kn+@TD1bn5#>f
z9=X&yxsX(Gals`8ms<>}?oz96Wqa3U;$vND2o`cx!PN!#7d%jKO~JJVw-?+|a9zRm
z1veMmQgB1TjYXKJ-Bg5`k_KPJQgIt&<=k3uTM>e-6eY1`3*`#AQ;I6Mr(jIM-9?z-
ziDp)ZLDAe>aG%n>B9P4DDX&(yda&T3f)5l(3mz_bq~OJZmkJ&&c&y-wf+zLU8o}L4
zv0eHUXO)!<PZd1vQ1gs@*naY?1S@#nN`ApmdS2c?AukuaQt(>A>+V^aR_&MbszsH~
z-za#q;9WJj;H`qUr5`OE6pL(qnQ4p>@zL*n8(JPHwFrJx@NvQ41^+1W7ksL!<p2er
z6?|Usb-_0UU#L51{$KD_5k@GrLO-cOoaMLT`E9{>%JRHgiTWw`$AX^<ek=Ih^8Bno
zUGQrW=8dwx3@QUDbcpy5xog2+3JxB~RE3;&w6mnNe+$McnD>~d2R+8?F|^09-niNL
z5(PtgVJ@Un<M%?tClF01ygyRP{1$cM9+UK#yvGzh%h_Yn9+UL~jWnZJw3-n~HKNCq
zy>YWgIlr1IhnIwU>7y2@r6YU6&(+^cJ<2_z9+e*J^jNn?+#~5RdyhGKRC{4>M8D~J
z)Qs1AVGE_v3m-^o_GtBJJEbs8dtnzPGv4XZ?U5T-k;S}8GL2RNJ-+bX%Yd_{HSFh3
zZ+wPc_-5{m!u_bSGxwOK7fxphpVf)8^~QbnQPs`aW8of)^q9+8a}So9#{$pWV?L+s
zAT{<_U@&(<aTvs})y_{ZT#+roR_U>r(--ftM2{tntFg=XSjxC)mNv3Xk7bQWs^xm&
zZh0Xqc(+H$iq2ZeaOFWgtU8#xn$uVBv4)W~4OMEb9%~!l(CS)GM(nX;kDZ*jf#H^B
zvSE)i^=`VyC?{@gxQXGWhT^takIjv5VJLbf>bF&otzBIBHqP3%$999Iwl}ha;b=pB
z1as%X+}(}r(qmU6yBSJ9Qsy4U_cZM9iS5&4-yTQyII0&mi}verh@4-m20tEPc%b1y
zh6fvpQs+PpHRWN3hZ`PYIPau^!_hsCk(bWH9P@B&kK=kwI6D)~&hb4?P^B}m-%Om?
z<0KWCj`61B<Q}K=c&f+KJx=X$T8~G1JlbPvo&W4{Mi1TLqjxlSYW^=r@;T45dYs+k
zoF3=)IM0c<_Bg-C1wF1Eq`A<@6^0iXUfko7!Q4xGTxR_8!4w_W6!R<nc$MMR>g+~z
zg1TStbv>>hq`#rZjf412J#IFBi=j^0iT<`8xBKyq9`_l!)9^0CyA4HlPmeLi?=|d~
zy?-$GfgTSUe`qk}VIztakM(%G#}hrC?1dM3dP^1g{r+0&cYgPzlxKQ8+Y9fc)}NN=
zdOY7_=K*#Z;01Mx9>oB?0bc6ya*uy|jP3DCk5_wq(&N(}ul0CcM(^>Vpboey9p3Np
zrmO4d-E=Q}6#nfV@AP=L$9sP4L#1C}kyN!_FY4UUM?F4v!S8(9L=t}1<MSSW_V`O-
zr^lB)zUuL{Y3A@5iD^AHebX=13#X*MRb7*W4@rFA3vb`_`=Q5=#(y&W+3=TMI5qdH
z;cte&8~$OaQp){X9Z>(-)IlJ{SgY$@zXN4}@dl_25Dze9fT05n8({o_@cMf%U4mK)
zM;s>@2>%qAa)7A@!rQkA2bgGpi3gZuAbfCVa>L;ROgg}1#`{q9DtC$jM*Poo*>38A
z@Mcq*895Mo&@_hfjnV*R<B_2_C^s3PIzVH9<^XzeSsS1}fX-y9xKt#XgLMpPAn2z(
zz<Iu=PgP8zsnh`30G$E417XW0H;u@I>nCJjfN2N#e`H+;v=l|Ky(AHk_u!F}NHDOw
zGqaO+XEuQfhzV3wqDoQ(6f-Jj1p}BfA|_A_2x36YN>UUB#H<)mPys~@fa%}9%l?n&
zpEKv4>gwuLU0vPN(=&5)0>>nfO2A5B{{#+5z)rwPpp-!O1kwq(3G>x5YL6Q866Tyd
z%k`C8P{}h)AR{_k;Y10<qH_u46DTCi%NIp)%3ms2UB}e9N5YsH)l00=0i**H=$Sz8
z1P-Fw`H8cH`GE^d=V=Yf_fcPve?$TYC(J-#j~t?YIW&R8L>w;cE9@uax0)$-WWqe{
zrJj#Um;u{gz5Gut9Gk#^1Wrg`SONnR7?i+}1coLsn6^<DZe4SXwxte@9LJ%=C%=iE
zKbhqd=LR}?GCYA137nk3m;^>9Fe+hQKe<frm7JI`e_~~ECnYdCfe)&7o|Pprmi6KP
zrW2Uo)EE-QPDvQEKQ)2z37keVlaZX6!0DnHJfp&7?=yH#0u$K4Bo0mD+yu^}{Up&k
ziSrYfm_V~6nkR8V!o2)`Y8_0caVE?Y_KOm@IDtzN#?9U=yflH!L|iVsCV?x|Q<H>~
zg;xr%5?)>A=x3}`lw_*#TH$rV>l3&kfg2NMy5V&bjZ<HP=V#Jc?k$obajS^i61ZKG
zcL?tkP7~fGET^TG?oMC^vr+}_P2i^leoo*%c4Yz&h`EqfA!23%vl4hv^g{_en!sZT
z%vNp>3m*~I*4N|bNNipLPbBcT=()n{8X7B|PqUZsf&`vQ;Azp%&|@eqWy)<V6VE2h
zj}@5edF8M;fh7sNkid%xyrhH_ekFmIMVE6R=T!w?6D|^#Gg(TLOW@rEmL>3d0&gU+
zT-m-Od^3R+B3Rs8Dz}{B+m$-3RO~7tqbRl}f%g(vFV6ck$OP6V@VSB?vM&<&MD6;h
z(z;JYFyUvFOjt2y^+f_-Ca_M-uT<f$X=xQ1%9q7Re4D^`5@4!wqsZKl!1oFKkid@#
zY)oKN0-Gyosg3_lTh3>TqUt40{eKZnVrv4wa-b#fdjfwX@J|B&Dr%eB{$~Q)RVXEQ
zRN6xNFUkB};XrxT7P8!0$(=Q<BTn6Ntn|jTyCqRSiQSWEklfkhRY^1y-AK5Hkdlp)
zJ8gq`R*Tt0*i={}WE)!~jhASdG_Tbx)ETffIt$k(iMB~3lSn1eE{XO@^Daimr14rE
zlI8>vXG}VZJ(J+8-z4@*qEix`ljxGfeo1soqN|G7H;GsHBA9R=A%lFQipamK&?P34
z2JP}k8@T_Ugq<|6J@SMw`A!mrq{%;>gqt*TV$a&}lJJuVls{V+ClQLyR5)1?QPRB0
zMS+}xc_EXN!+eTKl#=M4L=R=#N4S3y2Z%UO*ei*iBKT4Rlk^sSP;%!B4xPH-;G}tt
zvA^CWJd8b+#L-C{lSJPn`XzB>5=SM$qenczO#gpG6618#hkvH#%jx~;Fy)`SbK570
z0Z9x=VklKz7Xy<R#L6d)-{!i7o}8s~ZsIE9pK5eUnCXD8iX5NB2}uk~Vt5iul31F=
zh$KcPaTR+riBU<Mn8evhoRh>!NsLZnOcG<0=EG2Q#oPETIGGlU7?(6PJd3KR#wnDc
z|4*8!me=?sP7{5)@C@OZ!s8{-RW+Qzwj?o;uAc3s^G}+$R%hwQ+?=f0*KGKY)wnQe
z*4TUl_afGlw*X1AP`pG);!>Jog}ywAD@0EcP8KrHE0gABUJ756#FQkSPU4v)rY3Q1
z5_cytgJXwg&;R_gK6P<@(#+0F_(pRQH&R8SZ%X23(YFXE=@o<9WZ1VS&D?Z{ki?xy
zOcQ;VaJsNgwUME^xFonIiF=jsJ{2^V=8?n$Nz9bRK1|z4Vpb9lCh<@bvy*sKrcVBE
znvNfl7-?R#aE@6LbCTw6`f)`~7N4VFUJ_3z?R?>r!l#5ZKb}cjki@e|yq3fw_I`5=
zu7icFl4>=Tvp~`uT6=*i)l%)nBwiBzvhbB8UX`z)N%U@JWN02->eJE|%ivoz!m=b@
zPhwpX-zM=!63dfVOB>+WPvWg4R?s=nZflv(EK}iJDe=(wJ4y3_nt{!*Ql+nwqE;vI
zu81{Bd?bSY<UJAZC-H%Z4~4^;?Ysl}Siw({_*BGaLKeY<UnKD*2Xzu(C(Ucotng<3
zQnSh|<oFBYZ=}O9vd{05Sf9kUB(^89A&Kvk_$7(09CUSXQ8j*$QE@%|V-g#sRqA|G
z5}PaZPa=L6Zb_P(3%2xEjs1Bw=C!-uIJmg}PvQ@aDgM^vh!)0;??~d$B>qX_-z5G@
zn!8J`Gyhh_hU?ro@0iHxriCc8t(`)h6gs4_XBu@=sK?vYG-{`@TMG44I46Y(DeRs?
zgA`h&&^m>NDKtu<NeWF<*dv9;DO9CUoian1E}DHok3oX2gTs&p#$W8!q>O%ArqC>9
ztfG0!xLGQ*Marm@F9iLfaor|`wkf1iuu`TU+og>EPo~gbnR5VkNMX+uI;OB!%6O+v
zDRfSmPg^jGSC^D=lKZ95HHE!X*e7LHT;%iifyBNkBeq%}HtCi^LP4(Z$y}&GYNz0&
z(5@NIR`t>;Y*KPJ1uq3Zg&>7|3I)|UOc|FRi_Wl7A|f%_BJLhAHm4w0+Qk$~DGW+s
za0=a1=#j!vlHWgt16WoHhq5vf?v+AsMfDUiEpt04g)-46g@eT}zuL*epNA>fPe{qb
zl}X=<JUK^*b7Un|{}hfEeT;CR@YoavNR0CQNfXOr<%gs&G=&pWI4OnWBsMIC;VB$1
z`UJ_-ASpSbl6It`%5@u+GT($`hNDwBIfc_xI3tBI5;#>jR!D(yB2J-BWD?^ml|N1V
zvL??IeO4uksaVO8vYB&JI4_0Y9sJ?o{1hgp@T-I099&Tw7o;$`IWA0@&tlLxFG`u)
z&x=#$xcDV0T$;jVjAG9^hI2&<lTx_R!c7(?r*LHo%TstWg{xAyI)#T*cqD~uQkas$
zZ7JNYOfKdwPzu+ka9s-9xztaYsrGu&HwbSOQjD=TEA|%QtwJ&>e@6;;rf^RR_ogr{
zWn9^elsVITm+0w2iruXwj6IIG>fClnndQ(djytX^M3ebI3NtG-V;@v3iHA~{U7;!e
zXbO*|Fh7MSrSmx{b89wGi>t>|<^{~T!g<0cgcNuxg{M<^F@={>c!pNNkxp;G{U6cK
z3Kt5Q6=R=Q><dB$Dfx2BoH1U+(ZtzV^sB<xgcM-x;uMyour!5bDZC-c*E!y~->Vmk
zC{QMt!&@n=;4rtakA=5WcqfIQQuvuY#fJ_le8jPz!m1Qjvwyiz<hN~8Sd+qgDV(pD
zQ$C;%;cEy&az0GqRPl+Qr0^;IRSMsw@EH|FpP#~)5?CwzTuA;`Df9cbZ&Gmi{ZG+k
zlEZ7Ag5<AHVMEGnS#Ofq_jCgE`6>J$f&vWk+NdDKHq$?F@@->qOA5cx$69D?VJi)r
z_MgJPDf~u*PvK8mBVYKU$KWcFHl~EzgbeOTnf+uEL|%U>__vU$V4;?U-7M6%P}?%+
z1M6DmSEO}BQ-B;^^%NwZ*X|Y`;;|nK4MdQ`Ag@LWPUDV{g=!0JEVQ-E&Ttb8%`7yx
z(9|+Nw5<`6Pr8MLIeImwm6$Ds<g~WT+w>%e?JV$_!k!j7irHS+K}h~ymf523Y@v&V
zPNK;qhgVn2yq>wPOw;XK*w4ZM3j-~5vyiaR!@~X+k`_`HLJJuSd+-*(LfV3B!M4m3
z2XY+oN%Qh7v%BtF7}L-YyaI6+=(U}!g`9=Fg~-ANP6|RskuF%~H4R=RF^fV5yHhjb
z6A!R(poPON^tI5F>Y~H9&_@EjguR92A8eVe$U`k$#myhlWRk<{Fa^o)XW<CT%y&mi
z>`3O!Js%54iJ$<3yl$+<F_!t7#IZuklOAMYu!XZMoNZx<g`pNkSvb+caTboZFoMYU
z(JXLj&1<+44ihrS1smrAUL!3-oW#v53!^QZV&PN^Co>;9VauF)9V41qk;7}8g5>iW
zZ{c(cXVB^_^EL-LL|$A`@H*2n8=kYd|6^f-h085m!Oo(jg$pfQWSMubMsXBdm}ubw
z%RC9<RbNaJ7h5=o&quf*q1kf^5R!A5g@X9RNp$`euCXx1!j)8@h3;CuGU^#!S6d)K
z=2QzyYH*!}>n&VMT4KaST=}yyvOv-#Znkg>^=V_Mjax0;X5m*0zgf85!W|agu&|s%
zk3+`7Qx=}KaF>PY79QrHuyD7985SO}Fw??4mU#kopN0N>`YD=5P7bg86(pb6EX&M{
z4_SCn1UU@ynyuhe)|^uSJHo<T3y)c5V{?v>eA4qQ^MMOq^Tm8Z$l#M~h4{p0EG*!l
zv+$aQXVu-$b6`qfq3}5&&EQ4qhn`<DFNr3T9A2+fg5)exXDyZ3V&M`Ydu^F|=XD{2
z?1(olyv0gdSZ84coxg?mEqq|%9SbWtD%BUO)J^QE)k?^&WXG}Bc&!ofo{;_Zp@oku
zthMktM~yn}Qw!g577$GV_8_m%6eOS57c7gWZsAK2<S@wV>oQ-X;9CpdTlhh(_)fT<
zW1rosSmKYCnd>)O_({x-!c9W*f7V$0g>B?4Aeu}L8D3izB>#5{e^}Vp#(p-oS=er&
z#zr$6J1qQZVRsu1Z2V>6Z+dteb!_~jYQTp5Fa4bvq|AiKtCnqo<nyX)oA09RW}}`6
zav0=QzszS8X8{|HZB*H4#8T)jh2)d2wvEH#)l|$TLIz7s%vMix8!c>fu(79&mbSUy
zZ*8NEZK7HUKdeSu+t_(K8;|kLrZ$G=)m}_;I@;LF#_M!?66j=`Ggn<~bQVDY26=T=
zkYfAT=0Wp?I#$umM#4r<8@+5KZKP~uY-DX%)QJt>#;0`qtPejx!Dqfom=-eVQL*9^
zc?AlFLZ*sr#5PJcy4%Rvc$9`}<3+ymCYl1|@G2@uKCd1&exUQWvA+m%802-Jf(<!$
z+c?O^Q8xP9V6cyk!>C&u2irKr#-Z#2Zn)_Vg|Q_1+UAwCpSb3?%}q_eGIIalHtTTm
ziAUS!i%iGb7+{-?mt$<R&Gm3o47Bk9{|ISgux&oE#e1~Nc_*b07}7|NvvItQH8$R}
zae|FuHg2<VyN%&CM%Xyd#`!iz+8AYHyp7XroG2SO*~S<fCy5>{WLC5UUSrjpr`Q-L
zf*f`+uT#r>9$K(*hK;jroTC~(MCWgt{j0NVvxaAoIKei*2BzJfYnz)v{@<K8zszc)
zjSFmCZQ~jn7uvYU#$`4xw{fwJOGr@Xs>2x0M4Ss)Nj3Hg8<W`A)B}$t*gMZhQDYQ7
zU8=iEYGmvb8&hrEWaDNVpYQ~Wjq7dPVB<PkHT{NO$t01~bt5gU(z@MwE6OQ=gR~jy
z=>5~-T>sm+)5bG47TB0(<1QNy*_dr(x{bTpE*lTnm|>e6<P~)L)H(nEC?w}T4O{Z5
zgqb#G(E|0JFM}g=J;)B?&|??dc*Mp$8&A*zIdE(|ZktmOb8K^*hS!-&SSIG$V34tW
zI18{{4e^wXCsh_X%$!PoS{?cZ4_0y5+E`*^sg37sJa6M=8?V@4R4*>%I0|gMWSdtZ
zc-<f-iC3vTjx~CIs*Xhq$ysdUE%AxVILsNev4XkTSgs0ut@n|K>81ELX^N`P+cw^@
zvC7738!Oq5dZ=_Y9dd<uw_<)|vhwe<m+2B6)OGNojgM^nM0a81V|J*G4b%)>fsM~>
zd~M?!8*AyQY<$U~O6N~2;^IL|7us`~_=+~qulVX($G+n<VdGm7WHQKWy@DY>8q8s?
z`fRfCqlk?{@>w@tn`yoJUDOu#JAJ#2?KZZm`BeUIvZ!B$4I1Hh+kDrB{68c>dWVfa
zZS&SY9251IZEhI<vGKPEav0?GuYwe-<(N@ZTgV{kdJcAT(B44@2lXB7?x4m&GY1VE
zG;~nym=`)4Ip+0qUX7J-4<Un9j(NqK1d&%01)B<)s=0#}j+txPI%vsk>HigMC7J@{
z@M@zV#dx)oz=^f6r-P0T_H)q9F}EsvIq2e`tAkD|y0egc)_-ruJo)9dkC^);u&-kd
zWRgQnIOf2T<-is*DNG5;cO3HygR4D(v}iKP;pHjFP7fS}4l)k1jv3uAJBS>_4yHJm
z>LBMJ@8A>%r#dJ&C^|UW!7&a>4!S!y)WKm6dN|nMK`#fr9UP!a9!L%IPED4;CiE1O
z99{=G=I!-^9rO`F4uiZ7QE<6l)j!<95e|-Y&{v(_PspgJbXjaKpZ_}O@8B%a#A6){
za4_7#2nPclJjgvC2SX(=NH|zX{&5^8T=`RDT!DxtlN?^d6eNG7gHaB)(Wy%8L<g(b
z90w<fpa6rsPF9d&V;%Deh;c#&Nso7MnuE*L-KRS^!@&ij&tx?moaf+fo^y6^lfLsX
zK?%<hl5?(u&EgYzov+|TAyZxG;35YXJGhqxDbGtpGm0EumnleNyTZXF$9TNS4z7|U
z`{GLV#XVe&h(qEU2SmzWOJN81Ik?}!^@_dO!7UDM5PhTYCSiHS#U!^nxPt~P=4}pc
zcXrNVe7};@*)%rO!3;6)5>6L((98bs)A>8*WXQcr&LA^<z`;xh3uLjg*pCjLQ0zkv
zW;>Xp%0KLwm)~#aB7~O7xl%~ZV-yyj__%|)3NEAX<&A)2z6HVN&v)=7&B?*j4xVw0
zqZ_Abx``fX-OmMiT|Dbxp$dIYWAjA^&pUX*LAg<ES9xH*<QNyt5%h{``>KQ294vCM
z*umH0EOD@uzQV!#EZxED4pwkrD(YU|D>+#1m<8dR4pwp^5T67u=D8mi;j}Im!B~z*
zF^TWeW9Yr1H5Dd>PvBWZny!Pj4nBAAk+S;4!KV%w^|6p*{K~|)T>LxclN}_;`9hL;
zp8ph+oUa^n0-pr&8^${L*1>lUHqrbXtaq@%!H?>N?^&D<L;g@n!c=eS+US4;gFiX=
zneI!aY;iDwo5>CiQWR-klqm<R^|1mT)Zqh&Z4S0O_}Af~J#$;pxE6MB1Xbftl{=QR
zfMfRO{}%ou<Y%BL`Fu-rV99TSI^6tEqeU7m)2PSI|1=t;(J+nrY3!ahkLqStnX@;o
z^>}DD{eKz<Ho+cgb7+eBv|*uXb1zAQsY;_dZRV6FLK02Ws1e;v*u28$(}z}Rv`(XK
z8tu|(lQy59x~1AYvtXVt@TQ}dc`DRCZJx7`!_qsZu~!;>(l|JcPHA*zHPYy*R(DCG
zYZ`l}%`$kQ{2r5#*e7j_cHcDiOQW0Ugs?{%$uv@;tu!(sC~1puglVBG^n|`J5QajY
zX32_(gv=opkxL^lq980*VoPasuh6e*A+dkjY{4BMT-_Y(zFukcPUE1o`PNETZO$yx
zcOIyLL((`jjSJGaknQEp50#llU+P>-#C}RLByHCGN2GCN8b|SI4&N*jlIWkt(V~wL
z9xLQ5#;Ad!2MGrYTl36=c6)}Vaa<b5r|}BMP8#QmAU!ON;c1LWV`Lhm(l|AZ@oZWe
zC#5kajj?HrCS3<73kNkb$;&uSoKyZE|FkqtPvfjK&Q9YD#h&^9WX=(1!vEtl^YhX;
zzf!k}A|Bv9sdmw6t~@7pi8OOX8k5qvG>yyBxUmi{rzZKOP<=wb0oVU&T*>B#s1xF<
zG_Ix$4|Aq*O&U|u=98*Z)8+shP3v==N4hp`ZkZXpE^Y2)uNU4RJZ5j)oW?C_)C$cY
z`j}mrHaL=px6`;ijXTojS=a+<%uM4>(F{&Y<E}KOr*U^0Gt#&(jr$eF17Lg}eGfV9
zac|n(%k-l6Zf72Y^1mwd!?V(OP?95kJe0=lG~RUamWzkecqEMjTpZ})(KH@QV{00}
zrZFdt$J2Nxjg@K4O=BL1KaX6d@kAQ)+0ry#;-F6BsWcX(@vLHbOoAWlep;nGlLmjw
z&Vy|WIRMk<1jSss6lTT2TWJd){INxRocFRgi_=)beo5oiw0S1@nwX1}mPSZl!Dr}8
zD{1+Ra#`A(<62Q=9tggX#&Swl;Y|swkQ;f6)zg>N->#%$HJHyT1;0sSbsF!cu_lf8
z()cuu&(e5b2|rRjS+@_;=EKMzrp?UAI((eQC#oB7qWPSZZCNW-f1bt{%CnUo1b<1_
zry$LShb6vFn_gg#Fo$(auBh+Q_#urS)8?Df>(ki4YP84q>78HgqwvNwHc4_z8k^Jj
zDUF{izH#?P=C1Zyoz~ztZCKA=s5<@q<hL|_Pot@e8rSgupzC%~&&9ShwzH#aV+XzB
zzdXN!KhyY2y8W9jR0S=CQ9D!dUj}edizdOb@0w=TaZNq>#cb+<&t!LVQQt)q6|uXE
z1}^q+O;kg18Yv0&%%dID9y4TZ8@s4-QB8Z(cho=9549P^+?u&)?xLHEgo_p~S}K#y
zEYUUpd2j2Yoodor{5G!XarS<D7ahdu<eF2Fd%EbTa#`E33-)qNM^oV(1uTV?@8Y7X
zi@ja5gTZ#~>tY|*ctVP?O8Y4-b7oda7bzDRO1iLEu{vnn7M=^+h2tXa!d1D4)HTmB
zIg@hSacKCg7!bG!l`UhLIh)Ve$VJXYUOJ4G_O&`FxG1{lu6l0QKL@G6lB&V|mL4wl
zr-t=E3(n@W{GKj)xwzTIEiQUXA!A&Ob#ai3J}wSswl0o!F+lkr>Y}fUel8AE{xy7{
zPc79p)_8=ABV8OVv7=O6f6=Tw74<|DqaPB-h{?7ObTP=qNEf4A40bWZ#R)Ekxftr=
zIJNY6Ax9Q-V3WBO!(UDeSMm`qF4VxMaq^rDyM~#csHoA@C%;PS8cXIM1WuOyl>Zkt
zP68J&EtxJ(bur$>X)exjF~P;@v=AQqbaAGdM(1{x<j)qe4(wc3hCP0+YwVespYP&4
zwY1#V6D7%(vY8jTxY)%c7n5CFBL1Z=E_02)Vk|G_!wfH1)D=Ri@k&*Gs*7t~T;<|w
z7uTpVQ(WV4XijV_kHJuqy?>pH>s{QSw9NKK)t^84x=GbzmAKUTrv+|xahr=LT+DZI
zyNf$q%y4m!QgL7IP8ZYE1P;=>#AMy3yC&h?t~mk1AdTu?_A=eLi~Fcp$v@!YK^G6X
znCW7cjM-Rw<$r&(CG)V_%ibxs_c7)FxY{_UY|PRFW9KSro|yCoPb&F~>cpp9JniBc
z7Yiiwg78`4BTcc;#d9j1mi)X6w!&Bfhrf=;yyW6#7q3Wok&DG5UKPGZmFh>&%w&m+
zWiDQq@h_D<^NbK{^@b#u3;8=;>Vc-U!o}OHkB0>w-f^*#1Iohz9#*+n?P9x&9WLH=
zu|}zW6u#%;V;7%@e&59hB52Yd(tq;rkgmC-Xa9cc;xlPrgNwB;K6kN>UFqTr7hk&g
z%Ej06a?~dsApb4PRNp8oevFr<%iwnku2&{Jn>44XQ3ze)_u~H`WODY@Mi-l0Y<BUJ
zi>)qxRn*Vw8a8~3i(fd#^;-l6dFbdj3H%}aUD!kCSZHS36r{rcbnzFRs)zO-{-z1J
zXy~Dlhkqqd*F!xI@KDP$|5>Q*p^j&iT>f7J-5Mt~26q#4cMtVN@I)d<I{6Je;|D0S
zhlj=<T6k#bp~^$Ghvt%O;-RUB8V}7pGf0_aT(!|H+soOU6D0}y1ddz|pH@oJ#zSk*
zoN=N;ID*=G+SJwH>fm8d$%Gy{df3ZD(nHEaCl8%H?CoJ6#dZ;P6|zvSQp^<KVLuPu
zJS52H&tB<Os=-;6D&j@g$GTY_Y!99X--F{JtsGp>OiZjHmp7|;3{{>j@Qn8(%~Vtc
zv&wkLlIbD#Q1nppkn@oDP>>|&4t5GNVSA_R=j=?##T#dV?jCx0rum$_I7SZi(9^?t
z9?tjB%R_GugFOsUO%C#Kn1{nf_wjJBC&%UCP|q~5tX}@Qn)>YP;YbfhQJDMx9*$5F
zwvooupQ@{aV?7M;aI}YGJoD>4`W!B+%1Rh0;X$$oR&r%s^QYROo~ilC9>#b$&cpE@
zPVg|y!$=RKJPcO_MkrxfA?!QW=R^-Di8-3KSI0DyYUivpfIs<ahp`^Uc{t0%*&a@j
zmQM9BzT7CDI`DA1hci5!>FxX$F{{U;r_A5{BSsU=IUXiZOL_`$t_otOjMis$`Hkg?
z9xm`O-NW4;F7$AbhwDAu;NfBqmw1@uVX}uymFjZgWx}!>XJfBm-8vXMztY21in><%
zyxPMQ4^zdt#xqj@o!fU!jea-~XtCExSL|_eZj>17e20gdJlyQz77w>lx1KR?DuL5I
z+jScUj=T-q!rr-4sit|jONPOGm;;+U!^1ru9`*2;1n%`P)59#!eD3}}4igU#cxF{;
zmTgrS-NAJ9gUaDy4-a{m?U|v+yD%z;$UGlmSIV~MczE2yldAdLN}ZqZFi)AYUCe5}
z_;j|+|0xY;TG!K_`8yJ8_^gM8bS6G_^UctB&chcTzVz_ChZj7&=;0-LW)CYpyzJo>
z4{vx_?%`GD?_r6DrOJGfDzMnw>2_F8mbJ{o>*XrdHLjlP4Hn14es6ksOZ*iawpx{u
z&+a3>t)60Etn#qh!-s6R>iMpR_vNzIczDk<dN7J@0v;o0st?pCR-Vj{WzuUse4;KU
z=TnvS8Qp^Z2KBiFmaDk0JbdlpM-Lk%^Ns5Bz36owzNJZfSg)pSP%2i8#c^KdQt$_f
zeJgjmN%XI*n1{_Ceqx>5<7XxO#lsejk*PYGzEurmr||mS!yg|0p-cC$jS1^whlf9v
z)pm(76BhTE8q&I!aW#Ld8Z<fhsO6)sx~#Tuv{6S$o8+p71MLQ$%I0Qod(`)_yN}jB
z+W2VTqoI#hlB5kZ^3l{c%G|?8V;@!GGb?sVwT~vg`HL2Vy!dV-y;F^kW<HwxXd%g#
zLi!mxG0M=`cnd~P+tx=rAANir?4!Mp4n9I386SK4=;))HkA#oCe01{B)yLkx@pYZa
z=i=WtS<%TbH%_(t_}Evm`w4kyxy<LNp;*#K%17FV>%)?O?ZffSe<Uf!`IO_7N~RC=
zD(&(s6{d>|eB;wtbe1~wae!|o#Mnp9N6ANbDK_t;;G^i9NsW0@pKK#n>9n*S%4&Zh
z6LNx}0QGjDkDh8pFCV>q9OUo(j}@I8Yr=_xdrgP<IMhdfA4mH*Of^5k$B`s_^!3rt
zHyy{im8Vx`OB>@*Wvh=;aV+H+AIJI_;$x_f0lrzf3{uoU-)xl8N}Fl05BALuIyp@o
z=i_)E!+qnmPLL$CrPwghG$$5E&Iq-dKav>5e0-ebV>HzpzzcA)k1;+T_c7PUSRdnj
zOz|<5RrPVIGP%OXcps<vINQfLQs(JC&Je+d)7d`S1ZVm<%QrMFnZ>aaC-}I)$Av!5
z^>Ln$^DA|m=$lOg%CHlu4Z6^a6m_YOi+x<8OjvD3Q8|~fD}B@5<vVT;&q-8!ZA|uY
zrBbn_Ec7ZLSNpieH@#43X1bgCU+d#KA2TI(y^kAw+~s4sj~m6g#mB88Zt`)n2;L&G
zBbe|uA9t#wZ})MBO8-|c8#0PUHBI&B!t8FPn&IOfjvck=UY5e&zN^>n^Kn15)XLa%
z`R;(N=8&J|<3aBK_?RsPQvP9yG4sdRG#`)p#?x~0DlZ=9s1&YGn9n?#tB*f@{N-c5
zk0*V6=3^~2=HqD}Z~A!4$1^?__;|&~t3ICfvCzj0K3??k9P7jVANI2B;SM=BR_P_>
zPp9{?EQAG>%YDtqA|FeAEc3BgGOWN7->gWvJ5iphUia~akLA)8jgxMWMbHj8by94F
zkGFlS@$sIIci0j7<=HBk@k)9sE%R1O32ghj8nf(5YWRI0ANu&n#|JV7_C6iR$38ys
z@u_M;<(#5lp)nzCkISUbeSG0#qmNBKzVz{xj~{&e=;Ld4mYTd?gK?dYZ+(2nOU>ud
zrloPuiur8t@x3H@n?tp*{$%n-hQ`J!ZT9h#k6-CgnFH{%k6%<1%50I<k)YVtN^^c!
zEHmHc<By6Y3)=2uhxA-t-?AEi`}l{xIzUZ;fB9m3fZYRAbgjUQ_u2vKD9F`p-2nB1
zoqvwoEihxJzM?oOP?_akYY?DefJOoK2vDsY8Vjoe(+b`}@a~T;g$BkVnglzW*(^Zw
z0G$JL3D81$whz!DK+6EF0<;d$CP3Q&?E<42-Yap;mWyN8@TI5awXtV_j)5VVEw8--
zbW%R-IJS|)itX(hVDA9?1?UzS&&m1|_fbRkB~$-aP6S9Qp&b}QO$D$5Gr;MVIXqeI
zi#ZVlNC!K|INbt^^8*9{W(JrQAPkTRFp8}XkPQ$8=pEpo0C9j^fF1$%50F=(MHN&C
zOowu2DVszoK=;5*@$9>^dAk}I>pD=Cp(CY#X0>|;=%refo7N}5!2t#Y7|09*E%gKR
z3vg(F!&C&-bvSDxkH^{`5#Y!G#{@Vwz)=$DAK+-|gj(f0$V4i(tVt@6cVu)Rg8~c=
za9n`n0}Kf;G%${iHRoXDzo;n8R41sOBdCgY7#3hS`^z<5Mos=%2P0J$t3f+FDZpsj
zQh-VH{{hAXI4i)}vaYcKP782)fN|7PVAOJ|5{?&5CqN~zIQm#-#p?{(Mtht|nI@p0
zJSV_}02c+gIKa69&I@osV3vZc0EN#FFtK8FtZ;eWzc4WEWiy%WB~sL70WMXc9DURP
zP4{x~=}spHxH7;k0d5U&Re-Al+!&a@OkNXUN`M<AHZ{Pt0j>*hy)xnItGueG9n$z&
z4O%0aY|Bl7L2_;m%p^|7avQ4`V0wVNmG%y0cvpZs15A@KP?=nN&<t4HrMd&<IGqvT
zo&fg-xQ_<R`JH_vE#>(;A>IP8b88!m>cx})0UiplI>5Wie|CW90z6L*P=*Z&@EA=i
zz|#Td1bAGf&zHH*4KOdj6Eas;fTNxjV9`|FlM-N$P^Hgkyg#eV7l@_|_0MK5<S3KZ
zeIdY$5?B%7r2sDnSQ22VIIjeFO;+@(x|>CCQM4$)Vr9hvOApV<f*M;E;0+FW>P^0d
zk}QS8^G)URmXNL9QnhndeLKKAVy+CZN(3vz3bSHsG-|%4xdwPI!229uT=`4pvj86k
z_(<LKaez+(e5&fPCM=Qp6Pd}{0H3RMUj+Cvz*mytq|D8E=1&=R!8)ogz)t~wX48~8
zC*L0etPiju!1v-%lKn+{qyPUgz(%!tQ-IBirTuURiOAmHBF-NHwgvblz}5i2Y9Ra;
z;CC4$&453uX5FYOn%4FJI|BTpRDTBeE5P5%+$;d(A<Olo4*755f7u-XLNf*MPIjTr
zO40k(4N)(|ZlQU_gO9g}i#XwGN2@`Ih9UNf&?!Qr5PO99Hv}?h9HJ`3dm-KrQ5~X5
zh-M+0hvsQT(-1YG8Mb_^)?LQQJX?fl8Je4~X0^~NMC;Hz+a1Y=$RXN>crC=D5bZ*=
z4{>scF(EpH*fYd|A$o@B$O?q;Liiy%h3Fh25h59)ONg!^_6f0XXtrh8YoE8m-XZ?r
zaVFk#h3LkDnxRcI^LYWDK&#RLyi^D)L^_1aqMMnQzw8iBXinK>q?Q~{T+|rn!+*W4
zt3ePV43P_w50MFx4H1QiL;P5SjWyU*gUvPAQe%F+vb6@k)}Rog7@|jr{X=Z8!Hyb~
zLUa$!3y)LvRQGD$pw*cFj2ytP$22l8$nY6@uMoXM3<@zg#6cnYgg7F^ks%JICPN$+
z;_wiMQcE>hTw_k5FHraOWiK>Cbu;v%u6UGAFIMx2$WbBshZqoIV2Gnb924SLc2F~O
z__nTA6yNCA7*teQKV>}(2{Dv<2r(kWaUqTmaYBe;;ZFVRs*`ftM}`<hTcX*7JM}QH
z22a#rehr>s4QntuM7hahLyRLG;@S|Wgg7<Cg&{5qF+Rj;A<hXgA;jtI#1LnOIE&^~
z*W5r|RtIjid5`IADT*!S_#Mc{g(1!hF)_piA<k#fm0v0G@IW1&1m5LmNf(E>B*f$p
zSBAJW#AP8aXGetQCrW?r^0OrVVq+4E=xPpgcI2`@#ML3L2{9!^qh0=a)NGgk8C@6R
z`Vg~1Jjn0=gt#%p?IG?6aZ`w!L);qTwh(Q);+AmdpE7vPjn>t4m%n4&8Dd(9dqUhB
z;;s<WL);x=Mu-D+o6}PRr?(D%^x;V`ZXt%aKg0teX3`{h20;DTmz#c^`t?JiBY8?T
z#Ox4Hg?Ku|!yz6CF*n4#5RZm<EX14;kB8=+yZ-uY*D*W~rq9n(rGxl{D8zhrI<1jL
z$X%Dp4~d5Hy$?Rh39%r=3n5+%@ob2N9KRu+r>STZkJ6Muzp-6!9-Yi@f`xcF#490Q
z<#5)!c;j^QwSy;q^=1bTKhO&;mM>Z@ToPibh-E^?zAoa85X&o^H$}W9Tp@fr#5<MP
zl_6GD=-OQThgd_U=}lp3Y_5Jx`9X-!+n~suhY%ly_&CHTA=Zc35aQDipN04`#8)BK
zQjC2kH}!h8IRL;3nnzQ3Qe|)*d>!JO5Z{LQF2uSJ<nwxfZ$op_n<sv&%|PR%PvZL!
zKhQ)&Y^KLxo_bq$qliU%1(j~_rw~7f_??a`#Fh}hg!nbYZz`H)eOQgHl3&6FMzuN5
z(2ze^Okf+`ONc*1{1svc4XF+~Hvt8H(jKYJe*uU1M|I=4VC7jimRKu;+8Ml`#Rpl`
z$)Ik=wCk}f>SeH72K!~uEra?Q?4Ci>3~ET%GLE`I2H#hqVaA+EZj`|u^#2*duM(0N
zpc6sW88i{6oQemHnq|;D1O6L@`sZ}eB4eg4R-<JG#8$%A8MMiut>|_cw9lARku*69
zbP&B~1|2ilD}zoM?47|rVs_4;tB5Wc@M03mlOXOZ&i^tQmB=8OK{10;2C0nERk0eD
zgvWA$p<1zGP6lbwZiVBC@G}TRgc)Q+WHZQBWTFgW(cD2|CcN?)6e_V-a1zX*M+Sp3
z7@RRb_NBV^mzEC5;J^%eX3#5x{u#48=$*kq8T8GdUj}_LI5>k}`SMo=zwuYd`i9RT
z8Dr069!B|$IaN!G;>A+vEss#4M@ohh;!%}4Q2yu)j>+KI3<hM(OvJMGp)bvtEmqR4
zWgbIRs|T~@5#G=Yj?3Wq3{J@4s4V(tF)V}O8N5g1$zVhVBQv-?gF7-9mBEP_oR`7*
z8Jv{C=nTeYFiu66-wQrDgE0!0-!i6tPEqj83{I`^$7gVwnsd7F3}N|2;Ik?+XJ>GZ
z_!ETZ?jkcWgA1tJ46c#zg~H1-xTuo$;tVd4{H4Onc1e3hMP^b4lf}PMc-1a4tn(C!
z-I&4Diu|=1Tql|9g*WUXe^W)~<_vBT|5o8`yU5&`!L$q(WbkYTcV#d=gNHMCL<#Q}
zK9IqTN<Q~waIezdC%k``d}dZ;W@Yf8_zwwZ?;^wcKPs^&GI*>aKPQ97B{NqzZx{Lb
z6`3b9cuM@Ih0p9Fvyj%3!Lkfqm+<q#S2K8_lJ><6UXuLF!dG@l`&vb2Q3i{}Um{$(
ziwx`hhQ!{<V0lIU%?#d>%nIS#yU4Gs$gIj>wfOG}*X$zmK?WbvBW2Mdi;pt+ID_9a
z_#=Z)GWaxu4fJx#<TK&d8LX}3`FRFkD4#EdU+t3THx-$68GI}Lcf$3%$gnLxNbKhf
zeyqrE%wUsbHVc2+MSe>~=9dh%ivO$dw_RkmWw4!2JB#{R<92o^39|UJlJ>6*{+9ed
z!hd&3TT4ke9&2+J$Qn0NS6EM29(T-hcZpSH(V!yVFpEZ#*+bZP7y0UnOp`2{ieDpa
zwu?;5ELvp|WD#c3I*T@0?32a5O4wGoR~GFm`LxfXgVOFP?6^xlohmY&v*;pzSK;2f
z$guwVNzBfoTSY#RMN%>;p|y*=Q;|t$;fn7G{as`-^o?2c%%YcsBVj3vxRN%PMPBj+
zVR4tV-77LZve;kz1B3_eBEvfOme^rg98{6-lf}W3IYfBqF7k(0Wcp^&Py8c<NA4nX
zbQZ^Cad{S3WN~a31F|?Ji&L{0n8lzhMr1KEi@{k8$>R7dPEdwJg~utAvePEAZo|YM
z{$Kv6EKbbg<SfQ0_9Wrx|H?4!Sn<dGmp?v>)3P`(i}SNMJ&QB4I6I4TBzdOrtpCb0
zp9$ih`(OUVEH236;w&yv?1jRM{wu?@mx_PcfBBQLn4HC3in=n3tFpK;i<`2zI*V(v
zxHgOH6g5RS^}lJE=k?;>@L&GTS=^Gv?OEKR*jt6S{a1!*?-YO9fBDn1xI2p(S=^Jw
z{aHL9nR|uz{a2DX%oKmtfB6q(F<bnHvv^blB_GLx8|fs<I46t8vzVL3yet-E@oW}P
zWHF!4q!ymcnx!4rNW8eTcq)shvxZ=hN3x%x@oTlPkYZW9k;U>Xp3mZiEMCpxwJcuD
z;-xHJ&f*o?RUNalQLmQyGzXWa%$7g0WD$$9Se(VOEMBK^?u{i`6T38P*3Vpfa7DVF
zH$hFng*R!I`(_qzWw9!Y)s)QQ?JVBOVkOh+d@q;Td~m=Tas^&qpTC>M8nuEsusG)M
z9+$Yaj7(P^`=Rsa6cC|hWDfDR)ROGuEI!HN(=0yAVr>@xX1NiG&$IX<i=VUDlEs%)
zauz>ku`z2N$9&BJ)ehfg@r??iV%JI4be=5YyDZjc&B}_`1`*$9@q-9%u5zbhW3@TM
zzlnX_*|c#p`<gcb^euYW@k<t4v-mxWKgeljUfcXNi{GSquA(W)yNqpFvmg793f)d^
zt06nGW<T&x;a|ePh1^c(!kGI@wIbAx(2$!s5$Z&!8)3Hy^&|7~&w7#B$K#_e>V&!R
zz}4=N**<L$nU3Sl-GMs!yhnt_5vn6JiBJ`pjTau*=SO=e!<`ehw`pYd;cFt(u1TtG
zv&girxsV5nT19BhoFjCI&?Z9L2<;-%alB7yqt)zq*}!>xv8ayOLf<n&NA=V~bsr1r
z9HC2uY=kI6*9dz@up-zIw(t=!dyU6n>+1VI5%!DB=S|q6ZptAMAz9(1#F^3rPK0y>
zFM=OoUQ@Fh<}%pC?98m-n_m$^CW*|B1bdbn8oZZb5!@g9n8*Gj<RZ8+ycqcig$QdR
zycd}_FNzVyMK~owDMI%MJtFKM;g|@=MmQkCfe{Xm&^JQQ2)!a48sV_WoJ;S`DBkt6
zb+l)mG?UT}rm%E-NMt&iH2aHNZM=(N2lb0^M1-Rv^ykIzv(=d1Jd#E0e*EYNHC@aX
zsK}%q$Q;0iM;H-dWQ0Kx21ghYVJNj%Wwu<nZ8*9)j*~HPlYe-G<5lPhLY6*E#I4$t
z_=aCvh;U+r(GgCL@Ms<LOo4;_q{w_8VIq5w4Qysk`i+f@K3Q{G#f97ih%lb*jc`+h
z(;}Q6;k*dv)0`rl8R4u5XGbO<Dujl?9zQ3-gb3$GW;>n!ht|lfYIL_{3W{(+gv*(P
zCc*q8^XWMzzevVF&c)(iBD_?1S%i=DtbzGYig0y=Ya&dRsb8s7Tohf!PSL8VwOquM
z$ZQf$Rnx8&UMIX>$ZFgWnfo;owB(y3+!o<>8g^M-LTcbSe*8JYoe^G&@N$G{5$=jG
zJ;L2=U0t*BwL#mqJg&x(H6y}3%6uW;S(9PhM|+?qBg~92C&J@0j9C#Lu2{%}A|8q`
zTLinKY&nl8_^9x)$aGVgKR3dY5uOr%9*tbYd|_GU=?Kq6cwU?ZLMB`&;@Mrqo)gWd
zw2Xa0^o#To3ceEI)d;UeSR|w3qo1$z_-S!u4EUW0E7?X4Og{LKmijfrG7+x}--xiB
zV}$Qa3EvW~5WX#>JYzW|+0m;sURFnDO*?~IKo#Qs2p@1D#Ap`dLw0?H^$|9xyFaE(
zgcWu0NrX=$d=_DCgfAj|DP#Mbc2(C*og6qc1J;~hjHI1&Kr#4rgm2W?b;56j-wB5{
zHxCoPkMKi;KO_7V;l~IY+1Gl?L)WoM=EPyXIl@m7e&zs_61GS9MZ`AxYCilG{wmII
zqJJ0uAr1woH(tl`%_iOj(7os_p1&jf6Jhrl4PyKo@tg{3$EXwI#%kl_7uP|p*z6QB
z$r(*hH%7hKJkjHTrRkEtTa5bg|E(4p#%L6yI!2Qid&FoQ8)rgau}%JjnN-DQ3T9>4
z1x;h~(dG~9n2#!O<Tj7dB1X#?t;DA{Xs@?;mQ<s4jC70x_ePu8Ocrfpw2RR`Mu!-Q
z7|9rW#%ANFON_2DI>y*5MyJZvIR<wx8Ow{r-ZA!xv7hAkjm;aQWn?VrZsL<*FeTa+
zTEcRyBbr;Ol;M^U9i1N|h%r6J-7&%#nHW7|^kOS&kd2LBielrMI3vd~a`gW(3Na24
zvlyckqkD`Vv9b0coz1xB=>l&3QAPX5I9sPTIf*cb1C@jemEJK9V&!A-1A2X=|FL{_
z8RKBqEjDxLp)vZ!I70Mc!o!7qg?xf`WQ?Ok4~fw~#?dhbDR>Ok6=Oh*fw38(JekSd
z=wVnH&LgCsuY<vo<m|(Tj6-7_r{M81hQ$~z`UD}@5+h=ajBz46ojuEs@^!%|_DdIY
zF)MOL$2eWWC&w5QW30r;A4lWa(<I?_ikPRy7%$1wDw&&##W*v@SrRxW#ssQsm;5Pk
zZj1{gPx?F&=L;ta%SBum<01tw7MAOFX^hKaTpr^Jj)mB)#7=ICNiinJ=6E?Rnf-pH
zy5nQ|{}@-tW+B1rnix}*&s5>H!s~?B3vUoUT4glA<p&=P-%M>Q!&_q98iP6C7UOmi
zoF=~FNzoX0DmYC@fxBWegOHdJ<DMAHV!R&X-Wd1Acs9mD77^ot81rI05o0C?3m@q7
zgkg+XR5G6e$9O2l>=+NTX)zv+&7<%(EzOWWxCI`gCilji7>~#1Lt*UbG~eIRP9Tkt
zi!K_*{21LjV*!<;72T6+)KeVqBG|NNV)IEQ5+ij6?70}v$9N&ei>z=Rv)Jai7!#Qs
z`04uz)p#k!8GK)!4UF+Bl`N|^Ru^LthmwM{K$;@+B!8(mtlk?jmdDr<<Chq3#(0Yz
z5#y5>D`LDIV`Yq0bQ(?Yj_jFlkM1u2%%$?`7*$<%zCHSGj5Qk9?+M=*a)5upSs=zo
z^l7!sBhl9ynj=-8#`rA8x)|TaSW68z!8ft_#As_yE-}7{@g>J{rT$-w;OdKYE+e1f
zeMc|q;%BAhQ;+qM*+5l@_@R>a#~2$$ZxU`6{v@o|$T(6O0R7=s8Ur184h?hoEynLL
z{*Liaj6Y&*i}7cSzhZ2ct#WSKL4C?{XsaZ6+r>T|*WBdxZw%y6KZo6OsFgFf44k~!
zaJH*<4s~*-33Y|_gu4mLCoyOe{0=bJ^K|%)a@Zq>7CE%cp>YmXIW)_mdCnZIpU4bz
zXp%E)@1{B9wE4bpP0qL)Du;Nr93ac()X*x2);U-?*f}$aw8@zhl5JT%JrZh{GYjDM
zIdo7ydkXi?p<@nv<<Ln%=HE4k&N*~ZkVr>LCNC0<+9!v7bJ#D3ZWZ~Yh=h;=sR}`P
zKI*-I9|C12wUEx4NsyDWn=>nLF9%-)>3~V}78Q5SvpMw6;UE@7qs<`}krR@W7g5Ne
zD56y1ch8}R=>3HUu%#k;=Fm$7|EJ94yh!vBhxE}o99*Ff5pk&SFsir0@0&wE(MMD`
zN9J%;h3+q+Uo9LX;@BJph!~i|@QTc!90rRXA{;6_PI$cV1mQ3tvntnfL=Gdx86`YX
zc#?3m@MPf_VL8<)Ih>lq-381jV0;dz<<PT$UInvYJ3WV=WHV>vaApo?<#2WmcjRzq
z4(H@BA!oj+cykWt^3rq0%X2s{hyD$5zM>}50{J;p#a@^*Um?3FXTIHcF^!hfXbzX=
zFiKzMIgO7?L_fqwCz79}94I_Fhbu*2mBZCJT$3}dlEq!0!xTwQ6<*6<z=&Xmyr$_3
zMK|PdW6pdsk=IQsntYaZi!!`bcw5eVDe?9kW~wIB*i7K999HCTR}RyunH*;1%*PU6
z%HbaBM=gCkhkJA8;p~0l+@He(%pr$alvEB6=FHa-KjS_RD<GNKIlRya59iEl%jG}g
zJeo7#$76<%<uF9qk{(iJv^rO9nJ0WgIA8c=4o~IqbPmttut3?aXk?Vk20kloFI25q
zvFCDlUi1sX7loW|7{&Zw&fyi6{;HbxS`LeHSS;PPuQF|1lEcy*mgVp|yPlsn$>9wZ
z*S5+O$F8Kzo9eO$^_?PC<Lw;Y&*6g{-pOI5bh}DLu(;KgmcE<A8qx3N%(stNANJ;l
zIee7EcR8$AXR*_n<l`JZ$>CE9tK+`OVO<Vu>Ch?$KpXfXhc7wMs!R`lmBZJn53^-g
zek*mk4Y9T{rZ+bB$qH}CfvwxjqI38`J<dM*QIZtcs48s|vI3N+CH$N-17S-JzvQqr
zhhOO`3usfoZ#n#~sFU;fL&OnzBe^Yy?F#M?_RZtZ9RAATZ~A$<$2_{`@h@#a!mabD
zl}GJ7nkvZTbwunYtShXS2b~Y2>Q`iT&!d6phQdZdj^#b_#tAgeqe`4=VH06FhnhT^
zDcD@tGLIG_n3nnTYPCzSO&)FYXeUnlJoe0^V;&t8q$HE<CAw1{ohzySHy;+aH!G7z
zm`5g$ee>8a53iE8TOL*(b{>g5l6j<5?Q#u?<xHGB(s{U*oY}5&6bWC<Kv+(d%_GX=
zz&v`28Rt>RqnJldLDn|Ei*PBA9u<D~yeW>E?4QR0VwOuUV=r+I&ZBo82UTMGRMM7<
zK19Jog@@&FxQKF;(UO97TjIz(juPEJkC7r6dvsY?cx)a6D*S;W2IVnW#E=SqXdcIj
zKEA>^LBufOaN&qNey_i?H%EzcVjd^uF<Mqsu2>nz<S|wP<AkT=acUmp^EfS!Z}a#r
zkJH6}UU)_xXXbI1=m&&n=W$LR6GY#b$4z;ho5y*1oG;Erd0d>wMA2;N1$kUpp}RD~
zC3#$$$5j>1Wg;dCFBe{sH{btZ!pRC=DO}RRaIVhdnmne6bDfaPsd-#mq5o)z>nrpP
zBHHV-s5j?vXN7-D9=D3Vt-`ro#2vKx);qN~EswkMm@fX^!h3}?^0-F?%U#(9_ldq=
z$fC*QH8YP{c|0iQLwP(UVz%(%JRTA8Xdd%KQ2sFybA*oz=L&!3DIgJ)nJ?l=VYvsN
z&f}R%?1DU=6}>Qz=kjLCV-g~7B3{Vj#XMe8?1#da^LRzXt9h&t@tTlH7Ui*6^pZT5
ziddG%auKf!-w<w9OWzdzmXK*VYTmBU@8q#Ek5vk;&f`51?^a^hh#1xm?~C|ASl0YU
zqCXaXBK$Ou&+=F+nx%Xt;&b5_!Y}i9SoQh3BJ+)ibwcWDeT83Dzy{IZ=kY@xKjyKK
z?pI44=DdlXJdbU8Y_7=vl*i9`Y{}ynaefnS75-Y08O*PMiY|A`_6q-R5j*JrMf_Fa
z(;NI#q5sVTD!o>v4&{I7)G45D0rd*lt-^08qJ9Cpi)bKxLnDGUZ&bh@70JdTsF3Ok
zr%3@#D|Af(%_?+r5iNu*g{_1fXl)B<S3shGWWmfS?Zw}-fDR(cEoHeK3)riGPLe4z
zI~UMJGF^px3-=LHe%}K2tI*vFc(k4wFDY>>Vc8qo1vm<(3kV7bMY}?;0AB<Xmc4YQ
zfTB2ARU@jz#s%a==PR5-;s1PNseta{_Ym$cJV1D$@Pk&SZoLaQsDRtVVX#jDmlVw1
z*}>u*B0RK!!wNXOB6Dm3eMR@HaE>V8NYO`CIQ<JaTJ$l($(8Rm4^VKRa8Ln*MGPrm
zXaUC+aC`x0iNl(lP{5c9Jxs)K;fMl8R`{btoLIm~B1TvECl|nP3Ne$h;*1lXB0N<%
zUPyt{M4Vp085Pc%1(a)hwm9bqCkW3Ko+mtC$Q&k$xS)UwMO;+jUo3*vpfWF&N-q;$
zF1(_ENg^0KxqvGx^i?9RF5nswQ-o71vDX%Go#^X@HwbU6#NJfE&7yCqaBdZGJB%uB
zSAFgf-YJ|`z+EC3J6*)w=D4STd)ap-98)r>?kiw=5qB4Hf5GgvK2X3+5wi+-SOl35
z7Vwbh*~0SIoF1X^7w}jCb7;Lql!|z~fVl;1Dc~20%~Oe+3V5P``2{>#z*7Zt7yo4e
zPZ#ivWIiciK>^Peuu{Q=LYBBh#B&8aU*WtU;>7}967jO|72&JG*Mv;FsDQ<yxkbR>
z(h7f>h}VU06tG;xo5Ht*D}-+g-w`r7vsxv3weVfxno8_@1-vi%g9_)v0zMM`afS0G
z@Tus}glmPLS7N^q!JV0}3i!H!Zxp;=r|;Gk@NEI#6|la5A1m@33izQye=mYFY`I4^
zDp+Q27Tts!?*;r^*m--!;MM|ur8_DjQ^ap{CIxgWB2mO21#`z#T||>2wiU3wfE^sI
zbjwA9e-`jp0e=_p552cIWd2(~tqKk1rq4>(E}~8mbu0W@d^*gN^F{1d1c~}W-ms8n
z4h<yMP)r8*P_VJEs*(d^n-=wz{vx^*QBy>-BAOS`qKJ;-w=AMn5p9ZSt6*y(3t}n6
zb|N|m$!TAy0HgLSnj1IPWG}^bswAOU*P^+r<^9wIJ_RV6TeE$HB=#+0zY5K?9r?VY
z2)hWUh*S|)(R@zX=2j0k?syMaG-Jvw!Yi7e7m)VF351+>$$3l235#<9-}K2A&5m(Y
zL|jC!XkI9zOumRh(R{9dnLgY{PWK{u6fvrZ6N_dP?_b0LMI2Z(U$JIv&mwvi(XWUj
zis-Gf4iz3$M4uuK7JZ2DX2~-NA8Zj1E8_4X`YLLxzG+G3kwqL;G+Teeis)a&(M1d{
zg4>DXct^uZ>X|YhmK|Hf0G7)q<3bXHL@<XTk{>EOPRQiP7jZ&`rp#~^I--b?MReCw
z{>xRRlh{o~TvNo9B2F%1Oc7@ladr`7C4ahbToI>;IJJoJMVv-^P}+W#)}6%te+ir^
ztSkOGMNBB-N^#CD;=Cd*FXD<K&M#tO5tkHksiLa6_%E7`%?pcWOYkD$#X<&I^UI26
zTW_GYuZQbF51Ae7Vp0*4mBSKkpMEUitBSZ<%z}bbi@3IkJH@%Ki0g~EMKp7`LBvhM
z8-+Ai@^2RXIN$py;x^H@7jcIO#&YN38;MOTnx_nR2~X7Hh8acNQ$$q>)g|0p#C<gK
zBG%IL7tMCf<3-FZ;(;P&7BQ=c2gRIS#6vWsDzoLqUpb$~5mbeTY0Qd!w1_z(rg8nR
zLBU!*q=7T9h$o6zUBtUZ%rBa~i<jBgMLbE9F5+pWda;O?ig>1o1r(D*c(#azRAxgX
z&#a!~oWiF_MZCc7(1si9`CDVNk;R&fuL7&|Y7uX;$N2(m5sQjgESiJ&^&*xOv9xHm
zs_6H4Eu(YeMonY9A(`c>LsymcmN?90g^0I>?+8~4SFwgoOet%W$tP;jdqs4v!uv&h
zP{fBtd{ma#7S_jV5qAi^hNjR@RTh)8VxJfBg@WAG`I3WI8U7*8*F~%^VnY$%D1Yi?
zT@l|(u}u4&@~39LSL}kuranIu@uSji<k&A_i=s9av02`XMgK%2tiq*L_@#)gs@1Q`
zhZ{<Cbj<BH1?%w^fCgU$ZbEJ=VmpV%-q=yZzl!~{(kXux@wYNz!hckAb`VNtAB>z@
zCDbmVPRZn4w}b{F>Iuo&t%Uj&dUp}^Rmp}WG*WO6VdGt*sG=q%bSxSBY+6E%h-M|U
zDH;FVyks0Wqgs@VDq5D%N(AZFC1bR#Qri;RNvwSddn!3~(xHTp8XMDMCN!bFO6XKV
z=MuV<a7YP<me93?y-Vm(!v4x|pAwu(&ijhkPuNYE5GG4ViLivWuxvA|Pg+5@1W$x7
z41|mgMP!6oVI+)&Ibptpf{3E9B<x<MTbSl^U>;CHZ*e%89#}HX@2MvDDw)Zb!Gl;y
zpifEvP3A3tWGH-C$qXebv#)e@xR46uUS+=$_Nc-U%JxX*c9iJ;C1cpk?bs3qlyG==
z^zDv;B@8Oz;u0<?VX(xQ?Qo?UqTtXHjw|8#l9^IZ5NDX^(dB=^10zZpS;8nK8C}B3
zC7dXl`JANMvddWRm=aDY;nWhwDihkkxRTj1ATgdCna7!`AvbkTFX0SvxTAZ6WX>w#
zY-M{6^As^bNEOlksfY7QIA1wW)FPQP>;)xUSfMW}fj9nSURuIsO4zwOE-&GV61JDH
zql8H%OfKPz5?Zvzl_gwN!r~H^NUK+uaCZqaO1P$kDJ4uT;aX~-gu6<(u7vB^c6xZK
zi2lEXo7ChRrK0Opb9OXUacdQBDdE-<ZYzN!_iir!Ra?g1A>vM9sfE$=bkTGsq&x8F
zBb|Q<b4!?4!hI#&ud*I1;eirnmW*qqdU?$%;X$gjgrl`vPMvVWf40UZ$MVA>9uYoT
z8L*U@qp}`n0~;Hk@PwkCRS}Gxuh=JrPnGbrh-ZYX`2rEF^THCIldAcw;dxc*1x3AB
z!b>7vX10}7uV|z*`D+!<B3U~*OG{WL=9?wFUcwvHww?<tS4U98)Ct?dioGTCSfSBD
z6M9>PzEi?VdA3z0tS;f*64sRPaS5N4@Lmb;m+(OeAC}Ot3Ws$=PknvmBej>><C2?q
zI#l?l%(;ZmWs2l)ZDmHyS_OG3#%Y5&nt;AkM}Jkq*Cl*Y!nzW^Rn51R@Li={TS{18
z!Uk4JoK3<XDzQJ7uu(M4l5S_S=$|UFKbJtoQYUQPFaN{Vdq7E1eO=!_0V66B6cA7Z
z6$M2MAR^K^R9EOoM#X>uL=h7rC<<c4ggJ{jVit1%1LmBw{>?dOztj6t^Nj2L)~dDF
zzUS_<&$+j%t9xd8x)uCU*X>W@Kab#-xWiwyd)B0Fjy=2mIfB2`+gb_!7Wroc|7yGJ
z7HW?d60DJ+eWJ-%N;FHfNzgVyy96t1Xgh30Ext;ERTWuHxVq5YA?;b%%GnuNGts>M
z?J>J{f({ARk*2%Q96BcG6!Xp^U4-ij*AsRXb`#o_U|H)Y=%HaxVK1S@H%PFdc<(r}
zQDVg|^-ZvGf=v=^nqVgjCg>;4)`=B=?b=Mk%@g#Ga|eiQA>2|pFu_(LgM@DXt?o7n
zwpGOVb|Qll42dJ#iwsS$LxN%AJ0@1V_81;(>}GDa!9;?jw%xXO{2I-t$W(%Kf=r@$
z_sAxi_pzc<atZPY?Dd14)<S}#^jzR2C~3Ft#QBNlUp$QjTA;mdDJQ5TIAJO$PNkZl
zmSD*k?jA!uLBlj<-YGLO!KegB<d~IXwB7s@yqDnp1Y;A7OK@L;`xA^$Fu|HkH2+?2
zFT(9bvi)?kvvrtY*8~$4xA!*K>~0BmPc+}JyNB>V>n*{g1bb<?xA3*DO@STzB-mFG
z<C8_EB-l@6s&M~!_5hJ-iRMp6CZ3+)AVsR(IXJ-~2@Z{wMyw6f%t$ofUUhh)`JSSg
zw!j3l63zcooRet2&Yx}jW`F+`9woGQ!dT>JdkRP}H^ICFHzv3#!LbSECpas?*@@=w
zi0rpC$0a!4b~VxbsnCv75}cUeBs=U=5bdca!Gc8deKqE0VvC%b;Iss%CpbeXX9^dp
z=w}kN;5iA-O>kL)MF}i;o;)v3aDIXd5?mNpH0O)NEol4_@k@o5sin&kT#?}F1lK5N
zR#zstN}esXj9jbP>tte9*C)6^h1|MKusFfZ3GR~Y7UAte6Wl6tn{A7hV39i%xl`zx
zS)v`gTakN&_X=&J9<UQ_KTp|pZf{MoE5z>M65GB#oM?XGj-AA%36>>zG|~J~`o#n<
zC3q~s<F-Hc7N7*r+5^Y_9Bhv-`}?o(sRU1pR6Db-{S{cXY<7tKeI&v2_VBd7{|fC5
zNXB1IU_Zdxds&yaYm!$qd^N#qBCiYINbqKYx5VETF0!9!`tXkUyFwdU`UeR<OfWph
zPB}i(>i$UZXM&Ft{Ldb?c24aV`w6~DG~W&Nshx{N^M~=zg<lB26k6~rk(caczjo#)
zp>5H33BDKqA&&fL>(c)<|E$O_as1Z=zlr}YY@_$jSd;cyI)B+yK!Sg?^Bt0`ljL7<
zlB|@ZO|p4LR!_2qNLyh$;mX2QlB_CXvelB!cP1NYugF?)e9a_3(u~`&cFa2_>6GO2
zG+(6YoTN*V-Baw5V%;R`CAlEUg-N<5>6XM#5+v!KWc?%qlWdiwN0OdNHcd9Kb~}0{
z>78UF4L3-#VH~&j?AdG|4f`fne2|(2H%>M`FKd%H(ocfTl5C!&f06-7woEo}8e9C=
z#}e&7GAuqQ$<|4BOfo#lHnC<%l5JzYoyg#1^G$=U!|js{jc0dAGEBT>b|(!BNk$||
zBuQ$RO_EEJ61SphwUiNB8)j>m*R1(Ct6~yQk&;7wK1rA)O0rLqeUp@vR5Z1VuqqrW
ztO@H$8Y1Rzo}-eCPBJFR*d!CQUE`9Bm%yqo*C$iC(x%^8aU1R`GBL?+BD*KqGs&bR
zd#HI6*mCUHOS60bcSVzvOi407$#F^cOENXd5lLnx*<a!V<1IZv!)Zb@oSx*MBnKxs
zB*~$65yo-13WqZkJX~niXU27n&rWhwk~v9^RL~-}x}%dEBk{br=v)nL$}RcWIDUMR
z6Et;Bk`qN1BsnF?N#a)h<T&wEk<*i$k>s>^*10W|o0UFOJ)EW4v&CKi=f?W;M9z<|
z-iwl4oa7&S*e1Co$)!o2NU~g-%gi&$bx9T_xm=Mel3X48T$$vmm|G9mh`VO4PjW+&
z`;y$R;EhRcNpfqFo02S6<Yu95h3oCMB)2D7lH~3rcO<zp$z2jSH>Yu8LtEoLN$!mW
zHZ<7-8a|xl5s?Rl55;?84oj0frs1+AkBV5(4l}g$$E7#^WRj<ne3|4cMV?ObT9Vh3
zJd@<vB+n&zKFLc-UQY5tk{ACUA8Y0n1&zF_&3FD*;*BJ4CV4N(`$^uCxdq=z^0rQd
z$t=bCc{e^UA0+uO$)`y^OY%{Yk1d|$lekaIHN73q-^k}lzW8rHHf6`xNxo6mPr`47
z->b@ZajRDM2gQFBTGr1=eo69clHU~hQ~0~^kN;NrE6Lxje5^52tdwHA6oXT=NzpdN
zhADcdn&-M*inUX8NU?H?RZ^^~;OZ&X5LqqNJQr5Iy@qS1SWCn$#7)^s*GbVaMb{MF
zQglku+3xw0nSU1%QyO=;UaDzm!|o~8*K99g4`I)E)@+@A14SI)D8;5J`bpU*Mc)(~
zYu3b@C}_^c&3v;I15#{}V)Ilp(qCwC6Kt7cV2Z6%Y@?K|w8lYkx+~;5+*VnR4@t3o
zigJpIltWV_QY2ICkYZSh9TgldGzY7=Q;HEvx1sY)rAVj9rzl945oT50^tm|KiHj-x
z6hR8l;+nEH++nK-6^WE<de@=Ft0{KYR4qk4MI*(?6k}72Q*cy@(J97=w`5sqOCPUo
zoDer`5fivhc1f|TQYNO@E#7UbWwU#xn3Q6pG=0+Sm11w}C&hIs_DQjCin%G~rI?&z
zN{T~L94eFjgws+?O|gHgP7aW>)jcr9bj1%6TIAqZW<~8dOv58m%n&(TXz`hHFfuE}
zYz2=L&Pj1ptTDHvQyimxGo@Rgkz-Swkz%1_^HUs`;`kINq&P9fsoIm1Qk<M(L5fqP
zafya@n5VNkEyd~T!Ogn(nJF$zaZ!r1Qk<RQoD}EE;R4}#Db5#hV)JQnGk$T3%TrvD
z;*u1Xs*TGeUKC$5Em>ElxLQ+JwQ{>g+%<W9iW^eAlj7YJH>S8L#qtzSO0YP^9VzZi
zadV1W6uC9U?IO3u4%UoaCuVh5iX|zQrFb;O-6`%#abJr2CA&91gKjq-Q1FoyOGO?O
zKBQGVEVSlZFZQt%kEeJ-Q*IxuoGWVhREnqN@QU!66wjx4LHyYi&xyFYFUFUFnZK0c
zWlgzFFu|)SUQ^`t6mO+?JH;C*-c-c&uAK96)!$3;ev02y{2|Q;!Y@;NnBt=pA8YtY
zichVm_;TIoK1=a=iZ2v#YjmE5HvB5Z*D1b9@okEqQ~V;?cf#+5R{966;ztdC(w?|}
ze$}b}O|up;L)Y`4DgLrMd72Js{!a0a-OSUhnr;gIwR?V=wrNPSQhLRM+I3>sF5Nr}
zD@$plrQ6lgtdXXDn$;z6wbqo(vex>q&pK&3YO1TSlfC{=(?#48*A-b$Xt@?~J$Fmf
zJ<a-Qdc<z7de1by;)p3XNV8#@-io+H!@g-YPBS~rk!dzbvuT<jO_-)%n$6N|pJr&9
z&C~QxvrSxgK$<PmY^k9Y8klA)@vY-pgJNaNK5Uz2I|T;|he&Dt+hGgYA<eKf`8aFG
zG->hSX?998B26MqGEGVwXr3<15*@c;CQa7bwwu2aoxre=rkKW4qUn8`mB13+1{y|b
z%4v2>vwNCKnyLij($vz_#Yd%Sh>VPLTl`0-8Ka;@#)>%G@o6S#xO19a)tFV>MQvD<
zrkNO@g+0>jndaa$hoqTgH~%yTC~@yJ`=ptYX1_H1rkN}gtKv>vOY>9H?El{>6HH5U
zV0<p7r#VQ5ElWN$&0&hn63$37Qx4{Nc-)ooBU*8*dsLb^X)aE4Nt&aTczl`@M2<-_
zH_f~>$HqR#rJ3KVE7$Xhikz0_^fV_a@#HiML{1T&s*2X9YxRsY3)7sN<~+@wDLgyP
zSt4!+%=w(S(D`XD(3GWLsI9)JmC|k9rD-lpb4QvxHMJ<sO(K`4xgyP#X|76heVlc*
z$aTVNthYFBR<8ODX>N=!Ef-vz=4Q!mNpowO+r(S+w`=GYcvqSwX_lvXGR@s-?n(1d
znupWeo94bW_osOv&UL%-pf;z)${Kh?f@NtQO|vw1whehK&EpzA5%*?6GjX|3$>$RZ
zo=)>jnrG8Im*$N$Z>D)Z%?sMkmz8T-FG~4R>~AKoq<K}E*MzT2*;3-IG;d4%QJQzs
zyes}en)f7rU+Bb!=4SYzf>!HeS4HS%ZJD2@`AiYl|CedLvO7|i{#m|G^Nl?KGmOpf
zZJO`w{+6M4hVRq-U^ndyt7V#J>c=#{rTIP0PxAR$_)D5!<GL-i{?ODvY5o+k+`mNr
z7Fq-U+Ra~{D`jY#p`Cb}%>UhyR#s${IO3dF&#*>@9-3;OVa*I(#n;L-mv6_q8P?9w
zA;UU~cM)3kjv}4p);ZIBT)0gzvYv8{Sh^{@N!dNa`XUy$U{CR0LK|)ncePQ5J_@EY
z^v$qwhQS$zD6&b0{uu^{Z<?WBhRrf;u3E0Np;g=>!<N!)lVM=o*q{tswNh>^fpucX
zw&K>qc5x5Jw^uNcVQ7XOG7QVGqtZuY7%pO(on&qm-HKXBGDE6WtxSfj+;YNlhJ1!X
zhGGUULtsjaYsz<79h+U5n=QwVNL|^`MJgGp8EP5o8AfFoouQ$uk#R-WhRd}k-Edrn
z@fn`Tusp+r3_E8yEyL+5x=V)X84k*@Ylex6?3Q7#40~tTJ;NS~>?xcibk1hGPlkOn
zOwF)=hRK?ml3~Ai!>zR2ULyx&m?pu2Lbp1%X$}w0Ff+pu84i))&<ux(%*b$fd{V5g
zOPrNqc82*Gj>~XlhNChZlVNU#Iog4vm1tt?(Dh(APhA}wZ;^{1pW%cICudlY;l%h<
zo)mXz8Z$XX)lZE*UC^A*$gnWO%^7aVaAt<HB)B5O*%{6eza+!C8P3aaL52(CJ+Z{|
zW2=iYT&%cxx_%s9n&C2O76~sG+QO|F6I_|$sti|WxF*Am8E&%nGF+G8`V2S3&Q`_5
zEr;9T#af69x{9}ExGTew47X*tUAcEiWBNN|D^uQ`;hqdjGc3z+Z-)CaJe1*K3GNp@
znBf5t`&@D7Y{Yf@NW5^1KPrup$6BrW@t8lE;i(M2WcW41(;1%0@L`6Jl=7_b%?!_F
zcs|1m8D7lrYKGS`yrij@GrSV}SlyPrdOfcAhSp`JT~}{qcss*88Q#tCfi&;Mg7-CS
z*(I~G<6|>d{JRXFh<u*miwvKNe-@|Mwtt!7s|?@R4L`%zaop9lSx21b_qr5+$nc{&
z|H&S4_EkP{8}1DLmf?51>t^YgZEoxz8CDkgGs9mQ{?71EhLy6k$?~sina2L|?bg_W
zZL_q?u6Qi8tZS7lt7cg(%j#LymggE-+Gkla%UT*bWy?;w&O6B5Ia{QYl)bWa&eA2z
zx>?rC(ml)iig(S@E!*5ZJ6yWkfgV|UO3)Iw*$uL6n5DPkeY0$wWuq*8l-{zCO|op7
zrC*lKw49a>-Cns?2V~hI%OhEqX4x{!z$~X^IW@~xSq5b}Fw68TTW8rOOD;=Z<+jZ-
zLS(xvgGGj98JcB>EZb{n?V0(oEIVcyo@J+ahh4?it4L%?W=Tn4@l2L<+^P+;aojpD
zWGQBukY(pAo>j>*GRvqeewH9hB}>&3vqV|S%5rOToj9yzsjIz)cFBS*8)f3r${L$x
zoXD71<7B2BuUsR$WZ5;#zF8(`nV4m_EPG~|q}koG>=Dac1E$|A%ieO^N6sxR*_0hN
zoRVe#EC*!SFU!<8-R;se4UL<diyV~YU<FUea)^jI9F^tJEQe*8k>&6#v$D+AHqKPV
zBjUBViiT!&q;j3@oGeFYIVQ{8Ec3G*mt|g-V<m7M8oK2iFGJUf>*_?wP7<ChTo5N(
ziuHC{mJ737lx_YQ_jFC2k!4|)GqaqP<!nXH%W_VZbL0JK*&-`(z9lN|++694v)r2H
zwk(%qxirgVSr%ovF3a^<E|=jIS+0y%eN~pLvs_~)vA;91DlMzKL0LCtSuAp+&}27@
znDUnYC-?R&cWd?z;hn;}vMh;}&i|e)_hz|Ivkzo>Fw6boZjIK!Ls=fy$!h7!$g(Vt
zX89${uM$6&<<%^&WqCZy6IqsLc{0m$S)SMIQ>yr^_|w8?6mcil3K@Ap@mI3EnB}Eb
z<z9}vb=6;&>{H<zS>DX@R+hK3e5lAfS>Da^zPQ=G7w@pk{XlWYKg#m48)o?=F43~v
zpJn+x%NJR`%<@B)AEo>%%QsoR75_SR{!YX1<<OFDrS14hQ$Gt^rhd!vyWP-o&CB(V
zEPvV!Hb>W7^HKI!mX&j?lH>0z|JeOsi7Vx3qgjO3eB0cLM`b&ixaAnGnq##bYvouw
z$LbQBXZsv$#C-F%%_?hZ==$l9W1SowV`rP~l%sQwF1h9d&@|56;_J53bQ9k=NB11-
z=jf56XO0bX^v=;M#|Fx^6qoA?ZIq*r;(cQu7k5=Q$+4;8{c>!cqkoRgG;}6TIiOW!
zOYwm@w#qRm$JQF|kYk%1+veCV$6!TVqT!Gn+vganpjC8_Q;WO9stn7qqh^g;a72zo
zj)~gdWR6shY>r%xv?9N^Z8}WsOvY^OS0DEOUpWdnMp+4c7D`d1EcAq>9DY0-h=e&J
z5qmG$KPyp*XRA4C;`KPv$T3p<b$#yHXz?+^vBGgV#*0kIv8#x+v2%`H#K&}A(Un!%
zEys&%vwMy`a?SsG*i$$y$0QMp>?N{yj(y_Dz9N%_Q-u5Fm@2Zr@BpFZ+CQfl9;o4T
z;XyeLj%N=MIW)&%ab!l0!(%=(hx3`8<H#JzJgGcK<(QM>$sAARI9g}N-m$Pe$1%C)
zdo$+dn(twlmur5)$+0=+=Qu9cd@sr=IZhQhUU-7=MBzy}P8L}p%<9XJPRnt6j>~gg
zk>iXU3v-n1O*^^f`&iD*ajuA+?z3{7t*LWz&G*LGG1=aHs9EFZD|mtM!W<VVezEYg
zc1^2GjVpbTaAUpi#R^@S<0@N1jyrN(onvfYZpiVoKIQ2erC*zCen8N5!t3p^*|#|~
z!y9wllw)y@ac!EBn{(WfYkp$?t-{-K*eCg0+fIDsz-AA3=D16qOL9Dr<3ZcT9QWk7
zH^+VI+*0mW`szxwCe84n91kn_sB#|>Uz+0vJ>i;QnLRo>GD|6s*&EgD{{nJ6VRxav
z%}-5#S8qrw*&7aZzJ}+U|KIUUj%RZ`muvFpbG(pielyGBp1hdjC3^_xo87*g<CPr$
z<oGwot2tiF@k5RubG)A8jU1ol_+0(Gnd5^TALe)~$J;sHQP37{d-$&Sd&2ki$hBAF
z=KN8v`Lf&|BlbZ4SdS4C|4*_{grDY`U;F6J!WTKdQ_%ML%N$>ce=Yn*_^masa_0QK
zB9?3XCvhXc*a;P1rVs4;HOFr{#Wwt1w?xzYq4xgF@t2f;3#|cL2zge@Ge~>VCQsWu
z1H{|qSvgO)Jl*rGqDbd_^OHqa6<;mS>iK5+8XB&Zr@hFULX%n1we!t2c93ix#XIKd
zly9!x65SqlQGDGz>q)jz-)3T01?{7s))(0@Pw#y5t#m!|^pwnOd*#_6-~4tk)4PRl
zl&5c=jq~(TmhJyid)rT*O=Guyc{Ypr<|5`}w-md0`fF*{(iVBP%rj6;ZY7QRyVGjo
zt>efxak|ZJmuIksLxkH4hYEKP4ioMuG`+2BC-D(^Ms;p}kW@m8>Sk~I$&<;mN0B{?
zWb@=~yNb;VDKEizWfk(xo}cVZF^^{_%lgmb=LzyF?!yg{Fi#Xm%6Td=ujZ+V*M$%3
zLLDhSD%On7GbZL^MaBtDJR#4{d3MROYo6B%&GR@h&u-Rgp;>)*Yd+8Wc|ORqXP!xR
zg7Vy$XRkba=Q+}Dxq0@<v#%C%Xr9R;`{y|z&lGXnpZ!Fp#wU7Oo&)n79M4V{aSwrm
zbb-0c=@99SA0{#*&*6Dy<~btI>^OH;t6V#qE^$ttqw}1f=Yl-P<e8i2^gL(enV09-
zJSQt<exBn*PRw(>$O$TKCf2YWMov=PHpFZf<T)kJsfwHyD^25OO}{YDIeE^_b7r2i
z@|-P=&9-!9<h*!AF41N$w5v4F6?rbob8((a@?2^q@+^uUQ&!r{4c*c#@ya|`<+(1;
z^?9yV6%$-5=WF7j^EYfsyeZG(*z@K*x8zx#=Sk^r&2x92d+Z|2bGtNmXqk7(^Uk<u
zvs$9K+1{JyzC4fQSt^J7^E?=vKOkZ)J(TC+R{gkDEX(tlOl<9s#wm~Ic_Map4L_yf
zOL<<-^K_nP@;sa8IR#%3n(TQs=4=gLjN`8;{&t>s^1N!7be`8WWtuld-iSN29^O)i
zM&8xbdvQx{>n#3Zo{#JnRA7?=ALsd>-6RXFQQ(t2pXT{9&tG{y%k#O4{+j0tJ*<8b
zewpX1JYVPeCeQbIe#rB!;yqX5yO`KR%!XFzM|(`QU2#~%;y+9Ci`^kL{7plP|1R=}
z^fvrk!&UTX{U^`Ac@S?aTuInQ=zJ`tU4fMqF>b+CW4@Xm{uXJkNS6ZZ7Fbh!E#cY)
zIuux^K*s`|;w)!t*jW)bT(3aa0vi<AP{D4(9tFCq#QJd|TX@d`z2ZdoB->lVzQT=!
zeT3Gn6Ih8&3-l|nQ-Ki$Hq)$4ZBt<L0{sgNP-Kv*Y*Ap#0s~`>RoqJ4^=VmK7n(b4
z@ofuiS72~~Aq93+?)Fj+6>q7&LxEwf`XAnkn~513CX|>gkkV{AcE}XSikrrY<_i=G
z6bpC-78SU>K&gOVU`&Cr1p+CnPA`mXX?m}IS)?L7zFo6otw6m%Ly?gMMq44hSREA;
zHyl@Be1T&N%r7vZz|I8@E^tVJT?*`4V4ni}7MNIIw*r%7wR?d*;wo0!O!kcXx4L^3
z*jxVAfK6Fsa)BuY4k$1!uDf4>sWCU%{)MK@t>QpAAEe0iSmS07EpS+Yqg2bpGYTA0
zV3zcU7nu3qmSz_?QV~;Hx*b+%j&hF{9uxOGS7e^hWXD<Q0%sIhSm1;LCl)wWQzsQT
zIWDoFz$xNxfv$w%X;Pjpv?;52W`VN`oL}IA0%sRECw4ILxdqOPhb=xADsoYQi?w#^
z=aK@K7Pu@f*HX)oD+*j$;Qj&+6u7Fu)so#=;F<#07Pv(w*QuYIgx43ip}>v*kK1BJ
zZjL)Q^IOGl6W%VoL+DQHT?LjDxLc8Xgl@g}ir*(R6AM0A;GqI9D)MlFM+z)2@MM9d
ziaah{CVW)*n9#YI!xOEpji=P)bHb+!JR_xPo{g`Q=M{OO)#_eS<YnP2!dHdP|8;wa
z**{z>@@9dz3cOw5odWHP&2#r|f%gi0U*LxV?@MFBj|+TY4@teA{7~d0P1!F5{%21C
z1wPgA^8#Opd}b#?KjVB^;Hv`PDfqR}+-&L_nS9$S;(oXAV}YLvv@5c5k)I3vQm}sq
zZFco*f!_-JS>P`v{$AjZ0?q0=tT9*a?*jkCaTokoL*pySr;V_!&{bTe$g0Jr&l*Km
zD>m1-x@L`7&}`jdJ*=s?k+q7fEoBGcI>L@ZOR>bxMY<GOx5#?-TDM59NY^6WiX`-k
zw|kNGMYa+4D6&D34U6>D(C)6iip`JFHeyHbBAY6{Q9RqHNZ*)mEV7Bv?xOvQY*u9R
zcy@~-{bN4B;(9&2Ws!jjw(rVT@$4Xxt%dgE<hCN)6&YM)NRjO|99C?8z_06SXptQh
zw4vSScZ~V)B0GtXh$GfjGUllw>6m9ktfhRBg80ZH#dtO-;)$1pejGP9s~Bn+3CqGt
zk*dy4Ej~x}A`MMhd#>kEMMf(!MmV;}IFa#1b`hB%H1W>yUK!t2!HL4%gu544d~EWh
zB6}6NuFUmi_AWMmqjFb~C2C-wBKsDZTx3d-{fb;xWKof+MfNXpfnC`4_unGZikwj7
z#3Bb4nO@|`B1aWDNV6uGRpj6zhZH$fk;9A3EOMCmj3SrVn}1@Z@gu~ISmNwhZ+uRX
zql+A?$T4<p*e_e8nXAY=p$S}Yev#u8vBcwxIM0)coUGvaMHUn}Mf@z`sYMn_c3P3s
zi<}YXy2j?%vw$K-%<63QY|iHtIX70GC(>TO2DGUQHN2?E#U>WNG*<rGkN)cX@*-Ch
zSzP4iB3Bl<N`jk;TpcT~5pm65D}G&(>*LuQL~gXRHlTSHzU|k<TZ-JO_?<;=6S+fp
zyU<xVG_n1Y;N3;;u}62A^~&5^<h~-?`fTTOe~}05!CoR?;=v*h6`A0%v&X|l9x<yT
zzZ6+oWSQM<ihNS!(ISr(d9}!EMIJBmL~+Gui7zkmWRVw(yj0{VyA{}N#Qx7qv(FTH
z)-ES~{I~_}R|<yD7kMGhU2B8phmF6i6gO+)SK`^%m1}~Jio8+e%_46VdArDaMc!A+
zJ4N0VF^xI9LLVs0h9AnuO_}+}QkuphpBDKnPW)Wtd*K(#{j$hcMZPZbO_6Vld?z2*
zzok3kem(L-vDyER%KAwTHfxbzi~LsPuOfdJ`8_UVQ-6q?$)8HJ$UjB?wL7gx(gTl`
zJht+hYiZ-r)}x0<PmgvUD|>YG=;X1A$EqIfJ=T<LHILOj*6^C=!s@!!tsow2dvx$v
z$NO(wGN<h9(M3MpJk}Li&!el{tOq;H%FxWad#oSFEoetCj}1IF_2}oZp+|3}_w|}n
z8;SQ3TCN>tva!b|nstUI+stEgX|@#h_ZZ-@#eX#}*Te&*F*3+wYmaR_w)NOi!R<T-
zd+Z=S#AADrp|Ovpv@FEPuy_^2J$90EL>w`tl}mY~J;rL&G9FovvPZ=u=aKg)dHB*7
zJc=Hks<=c~$Q%NX&?Abctf<><xA3Y*O?5}fr|!}47#a6q=_Ym!kM<bT%EbI_YMjS-
zr8~_o9=m#6?{S02M33D(j`ujhV|R}|JPw!bo?6RPkNrI+dF<t}x5qvn`^kJ?kI52D
ziEFuqxJ9{sT>l4nO!GL<W4gy79*24yq)tq8a7;{TLzjD)#|$;#R%G#+9!IFwEa{ID
z&Q{$cg|?_U9!Gl|BiUS!c_OWwIo4yof+jvLo;^|NmuPsB$H^WGJWlaA%j0a1Q$0@e
zI78(u>-4xQx4MNMXDZz_Z+MQ!xgO_xT;Oq@vaA7%8(R8>9v3Niahzpw*P+c`YCU)?
z^0?gNI`wmf$CV=2dR*mkwZ}CYT6NPqXII+!TilKtJ#O-N%HwH|#U3|%+^wuzJZ=?n
z6>n1~cM5M8-l5ewtGg6gA~er?Jnr?l&*OfN#}s_P<3W!{JeJDyAq5{6I)7_ynWn7O
zN8|OHmCZix@q}tE_joc+adl1bjK{McLrTqkd(Pu|k2WRRmUzMAMUPKBKJ|FX<7JPx
zJ>HS?D;}?TyzcR;+}!58;qj(s-x9jgHf6+|-}QLU<0I+cSDznvd?=-9oP)!UJ^m+|
zCE8)Z&pbZ&_}SwZk1ssF^!V1}JLP`m@wLY{vEIZk%U1Wj#}6Jqdi)g6Iybj)hrfFK
z=JB`3KOVn({NeGZ$6vAD^<!DqztdafU%UU8SgEw)LTc^VuEfeEdY0%_VwDoBmgrcb
zQ;F3|tX^s^q(g}{MB0~Fv(#K&(>b;>!P+_tuG~6Oy1Jc9bScrbM7I*_T3l0>?hZ>d
zV#@9%)-TaR&K7KG+h#W?v0;e;CAKKh+XN*xDY0pZKC<dtVq=wdhL&i=9Qu{mti<Le
z`m0GRVTY^bxM{X5F|fooCAKZGRf$0*ww9Ia%Ead847XFQ!LqVh=U}*fiJ>KSC^1Zl
znG!pe7+xY-BBizLRANMlgt%+K*&0tP=vL|sjc4N$g%ZUQ&y;w!gjb?eVs?omOZX*%
z5<8dJr9@aFiuGl6XuZ`-RK%-l$((B{WK)e2BTI}@d~AtvB}SJR6VJLHOg6s61Ua~!
zbRF)hLX%5ODKSwFyOr3z#2zK~EU|ZqeM(G<d)P|?w^GA>mFwIL?bxrxRB4VVv44pJ
zN*t!)v=RrZpF=d9UgDq<2g}ylv&5E-vOW)uo19VN@VMg4xCax@iW5zIl=y-Yr<9me
z;^-2`l$cxM1SQTZajeL3v8ScXkJD`jj@PVJKT+hQ5+}#|=Jw~*5~r1TNVBJxIHSb1
zC9W&6u*8`qE-rCNiL*3o`U^^&UE-V)=PGhuiStF=8ckr$8(tXeFA{OVOG{i{;tDra
zVo|Jdvsae5T9K=SW@tXwh&#dcC2lCOq{Q6{-dN)161RxoBwVbMWm$IITH^K+cPM_F
z(3#vRepjq?C*>XmE$jXg_s0A_?UDr_&}KduZ>eqX!_qubVrhwGB_1vDWQnIrJXYfI
z5>J#^E`L*6x+~%K$9i}=_OU6~(sPP@R^sy#&)ZW#i5E+}RN^DWUoP=ViFd_cE%91>
z?p`nPhJtSk-z@Q#h!r(kL#z0XBCgPT;_nMTDDh$J<CGsO{y*U-LW_SIui^_uelPJy
zi7!ihRpRSd^K*%BN_<=5yIB0AoWC#egEZELYv3mdthZkjx8ScLzX>h=XNkY;zUMdf
zf0y{jZoEF-ef}+hPY0iM{N}n=@>#`aRi8FKZ53%JT-pD>X9p{~n$PM!?S0nN>>5I=
zvSM@mCb2?mtDKA5u%l#FWnH;-^6Bi;MPj#6hRs8=uF}|WeGND8*-)g1u%}Ni5fhky
zZ}Gl98=G4k?<3+`+C;pcaMQS=<!+{kt*F1x0G};19Hi1)`V7=?t5|O`S8i*cZKSb?
z`49FP;uA!K5!?F=^?B6iF`pfLhWU*38RxU3&v2idPhNYnlg|j*TDt8_Lcyd@$|voU
z@yRM;Q&ys-t_=%nDe@`%6vaKCl8<i<_=JkMCLOw5L(8qmvns4fS@&u9jPx1hGumg2
z7G*8DO|vW`hIWkinc#DY&!s*)`|RR#q|Z@4yUJ}3pFMph%5yj2?m|nnHYWM(<ulFa
zK%c#R_VJnGv!Bnt%AMS*sOhcGsXqJr9H9NNq3gjB!|6T;`ONS++~;7QLwpYPIV=`i
zIoGgTh3RMd9N{y|XLhSoW^p@AX)+^oe2(_HP$tLt%=J0d=QN*rKF9i;=yQ_Ke4pcd
zj`ul1Z99J}XX(zw@MNC_nmt9>;_o!4`<&r(j?cM13w_S?Im_qlxGUGTp=->YzVm#}
z_qjkCi@TuHT%;YoxYa&iCfOZ6cls>yx!mUppDTTCR{ScTt9`EXx!&g*pKD`J*PAtO
zwm10P=yQ|LVr_+$a~0hJU1PWS-0E|i&+T$BfhD?h<98|Xo;ZDp&)uy$yjT1_`xTJS
z1L6<)JS_2p8k&!pJmRy|XPM#_aY3tMQ;+*R;gbwWg)H}Z(oS5!F#%8cJZ%q(fJ(qK
zKF|7WA22lFIiKf!wh9;&@Pf~aKEL_=?(>q*%RZm^eD3p#&#OM~`MmG*n$PPxcW?W=
zp#{F_^H!@f?zYQ1dB^A7Ry|vjHuZtehdv)EZVi9z^FN<Yd_IkL+k$Q(E%=4RU;BLH
z^JQ%KRb25~pYMEr^7+~4d(Hmf^P}8a9Nhl=;`6I^tn~>s%^yC0`m7tUUcg^IfBUQ!
zuzJ8hcJsHJd_cPZ0#-7C{qiSRvD<Dr&Uxj4Rf6W~R@JNv8rot0YXr0pSSO%kz?uPT
z1*{#=!HBM8^K>#B+F`>^0iEU3MQFhmfsw8O-2(asY#h)%VEup%0yYfj5zsTBm)dZi
zF3Zr4-e#q#KJs)s(1M!;Y#Pu%V1Q=(1#A|uxwx}3rE6o0fGy=SQ2n>`=B&03*d}1G
z61SCLySN{xbj=J=(D)7k!vfL)nSdPwh6f}9k^wu#f)TBHFuhetX{yC78;}bq1^5B^
zfI>hqz|)yBO-p;OuB8V7p*$m@#alEsTMeiM>=UqWKs}%lFd<;)fRO>C0>%Z54;ZZm
z#srL&LrW)??kcw6E&;m+>=Cf1loJDX3)o%T;@0B2vK_YENdbEW>>YR2(y)=q0aF5|
z1soW#pO&`2dYCG-bgOtkd^wqZdcZ*ehXu@#;NXBm0uGhH)oSVa@PL^CM+M9YI6`8Z
zGR-VinH_MX`my%R)?tgo+<<ujYlO59IW}N^zz+dG1{@b~e8B$#J_$G>;KYEt1MUep
zDd1!)5wIv=LBJ^iX9t`UaB9G50cWcE=>ca1EEI1k>h{xycAORO&$$8T1zZ$xalrWj
z7bxYz|G#c8iQO)ZXU)evFAumP;O2l^0<H|WD&YEn8v?ElxF+D*fa~HdZE3)W%e^t+
zCfP2IHST=5b8&0HZ2@;laJ%r1fIH*r&cu8yWr=3p-rgH<pWT52UJSTD;DLb00v?y(
z!GMPY9ua>i-T`x18n7(j(f>L-w<iLY2Rv=JdSyLn_y4$-TaL+|wVQvy^R3ct%B35=
z6!3Du`^tJH;MIUP1K!f`wSd<H-iQ-T+>-cqz&io&2D~SwTWrg$TlEJ49|nA+t+T0*
z<<p}4G~ly<uL8af_&nf?fG^{Rv!&Z%N;_<;zX|v@;JbkDW#u}zDI+#(hmoHGeh&E8
zZr~xm1pFHCr`_ab_*=m50e`gG7H95G;@@`vS7T=44x3#mq)o^wA*+V84V!JW3t3sj
zm22s6wXk`qtS)SsGX0t+4(S)NS;*QU9YWR*=@GI{NXL*aA?wP`Ds~F#{9otwLb`@@
z3+W#IUrXj`g<3l78PdyUL;8elp!5wxdW$$^3-%4!IAoKMP37iH+}a&C+&rXz$l#D6
zAp=6T2pJTzb;y<>14FioZ7r*%2lL-1WZRJKw03LErtGk|E4_Wl(2yNNhD)$R$gr?^
zzFKQ`3K^l<gwPUO`=moMA=iamACe8pg&Y!cXh=S!5VA|it|7$`FQgvQ2q}g5Ar)B#
zAz?@qQdaY>XiJA~SPiLZ))lqtBSS`oj13tllhML4ac^#2<29TRvh#nP-Km)vvRlZM
zko`h-57{GRuaLb%_LO*1Y-J6Y-tERdA^V0**4c48VCcxyko`jr44EEsfO4k^E!Sz>
ziVg}nSaG*5XMR}7jF3}9P766aWM;@byMc!s5i%>}sE|2InJqk0*xK{xkYhsTD(;r%
zYz^m!92at8$Vr+#UU))$b(x82>^M1OLC7ibx-8=S4Nng_Bjloxi$fNMoEdU%$ax`W
z$?EKobK<%!Zbr@zxgg}i{}yrr!%IRg4Y?xZO3Mvdqz%7Zmz>)!*Oe)+3b{JunviQX
zYY}(2Wg55hazn_CAs>W%7;;m{;*iHfo(Q=)<d%?oL+%T?HRQICyF!+P+#YgA$epd)
zHn)}~8^2rq+!J3jZtDJ!2SOeWc_ie)kcYH1tL}O*jU_G(Sr+nW$YaWNO}cbLr&%8I
zWXP)_uZ27n@^r`xAuonJ6Y^}xb0N>m+2ywQ+tAWq($vc#ue91Lo3b8k_VtiALf#2^
zS4(>{<gJjm<7KwUO#GhOd%x9V-1YWR$jA0DkD9yszmQKtz76><<kOJPLcR$3QVo1A
zv=mqOtB|ilzKIK2u;nn#_aQ&nEz~?Cehm33gou?Qezu!`$e+skRcPYhLw<{Wtl>Z6
zxEcNx^0$Wn2>*?HFqs`~BHBi*8L?JGyNHz|R*P6YVwGsc6~1cppZk^7T0>LqEk#$6
zMa;)=?TB?EI!1Jmz=9^|B;Glqi}WV5prIpOBf3Rw9?@U2?hzYC^p03RqDMr}h+c|s
zppA7^T)Od%BKkyZ60vDSU&+jKV<}rS{S@CUp0&6o+Bq5!u|>po5rZSPj2IZPjWk=S
z$w3iY$K9G|OWkc-`3$jN{zU8;M}|i15Hak(d(~{RFT*2tlB}hxL_{(o6_Ji8L=+=3
z5!r}bL_StJv7vSA8t@`Y5q@0Jrdl-CWE4@3SRV0YL?xoCeK<X$7EzCwsjNoC$cX(S
zrbdiX#LV}M7#%StVr;~?h+QKlYHEDM&JnvrOwh1(Eys6Li9Lk7YvC;$W&N1*q=>yD
z_Kw&mV&90#5mVw_bvt8dGPlF~M;s7wsA^4<=Rx8J3a7^#YbggSa)_{H6Ap`*p~&IN
zb<Rgb%!-&Dab&~-#gB@Z6EQ#HxQL@8j)^!{S#yQ+q-niUxB16MoDgwR#K{pS#{Sl}
z>)dHv)+w4jRcP_k;`N>pu`uGyIQ~S$SrKPPoD*?w#H|sxMVuFLe#Dg#S4CV9aiO&o
zu_)rAh>IgGiMUivwrrgd*MOD2T+UZ$m#nTu99|u9O~efmH%43=ah>|PKHf~HaXvRi
zERMK2;+DAQ784_OnC$k5J0c#8cqrn|h`S>0jkqsjNyOdqyhpjFbSci^egz+hn{U~)
zha(<|cvPJ)jaVi@>qPT;EaLIFTQ_CtMxKgy^7V+P#h(#A8}VGk^Wvs_N#uoy7e#En
z=J|5OD-o~8k=NqJ+-|%P@n*zZ5pPGVT4pu-$n=PJBmRo`JL0{F_anZI_%7muhz}#a
zkk3aEA4hx|@tKDIi}*yu%9*XJ>vrRF#U1}L;;V?S75PT!lrHQ0h#w+;SNz9_pG1DO
z`@hI9Lg(Yqa(`3M(*F?oGd`6T`9~4cv?=qiIQC90`zb)!;?P#Zc4byBvr4Ne6Rcil
zjWS)z&8x1xrq(XgL1fJ`Yqb)uBW~uM%5)TWE9xA_&CMd_)3r>uGKZ8ov`qIh>z6q|
z{x;R4Os-76OwTgC6x=|#ahVOv^tOt+$gRpoW%`uqTVCPmoHr@6X_<aX*}BX&Wi~6b
zd71uY1}Jx+n%SbvmeRN^t7~MdGJ{$Lt<bh*wktEDOrp%-GDFJjP-a+}?Ijzk($2y9
zG5wBZhL_n%C2VN6b{J`0C0Qm_CS4{YlWZ(*u1J@SVL?G7Q_2*}cx6fw@20q4CMXk@
ziOMwWgZ;~tHCriD)f!#hn%b+kidZM3%8V{Eq0G)@#*`UbW?Y%^@gADMEyOuk1G|*j
zwai5MyY}3Q-0F5$KYNtfQ)E(^eMHP;FOj{4mbkCTWTC6FUzw>I?jN61lexOnRPMks
z(?t%F>|k-1dzczNqRcD>X9y23GgHL*%oev!E-G_mnWM_gDRZ=}&Mb3GnYm?7D05<&
zc~V;G`DKokz^(DPGRMb;R@ZD#Ds!^BJ)_KmGN+U|EzUK;sjav<oF3;cj2GydKda2y
zs&bC-T;X|T&KJ3$%!ToF<t_=!GPjG%TvFyz^OWpLnJ*H*TzG}hrI`MzGFMAuk!wV*
z71}BmcjSgLH<!7k%#CGkDzmUd^PAunmz&=-WFMq|wf*teE;;)EtFF9N=C(4om${?N
zon>AwH~&5Jt};u?JXYrMGIy7`r_4iT9=7*?mbtIY17#jmGxxVb%lZOZB9D|=T4q_9
zN6WZ)>sjmBluwjdUgp^{&y{(y%u{8aF7r$)y~&)?a?StwGB1>QvCK=-xQZ?4l&_R|
zwajZ}UN7^8)?&GC%Hf;kW|J12XJ1%g@Bb<Do?TZBj%e_HnGedmU*m%sAC~#Zny>I!
zg^$bp&mIC5CRO;P%%^sXuvg0!KC=g@eg3n#**&2H_W#RY+RoU$w?e``{NL^>D)Duh
zZ_0dI=DRZAOYn<T9Mn|W@q;2iD)LjApEbN&-$d|hx%r<9zbW#2nLo<>S>`Xh&ny17
z;wCUF!++vL<5Vzbi`)NAw5hPnz6D;`uENS97Fngjs^Y7~k<}|Kw>N9qvp|J4E38#%
zu5Q~3+f`V*LWc_LDAKh;w@UL(<{c|^s?fPYmrC;=soXz6S$ti|)>F`i-7BnLVWSFt
z6zO4Dp_jO2Z6GTvWPC&M-b#0FeJgBSVao~wD{P`!Gu*twrsDnL5}S#bNq^-I5N;uj
z^Vv!f%e5+l6yLhiY<L^REof7gKDa`vLR!Hg!tG5gvV(9~g&ivl7f%RxlAEQE5HYKy
z;zrCcQz2WSQDJ0-T!nlEuR^IpL7Jk_b>;Mag`h&MLfxifXY126QH64aN?fI?T(>%x
z>u^+s(bDWu!9K>p630{+tH?Ml*}599;RHGCTw#|uzN;b=g}VuN7h1~CeVSjeWhM5i
zuy=*KY&rJ%Zx!~faB+o8Don00rNVlHnJx2U?Vo?`+OWR@SJ=P80TrfIIHba%6%MR0
zz0!0$xI+8&n%}r|kX>5(s+TeLr#JgI<Q^PW;r(vRtZ;<Lj0%TWu-O@XnrKrFXDMjk
z5p!gv`5huhRhVNJs(txOg_A^%5n5!f$UNb(>TtgBIN|Za6ND!U?Y~7%uCTy5?8+&^
zvz2?QW=|8IE<8iHP<W>BETJV1wKsx_pDR31c)sug;f2DBgr>KTr?9QQw1R#A>}3@e
zRk*yu47*)dnokf{h+iqZN@!EIUDs5&w!(GN+$y|Yc!Tgp;Z4HDLQA>1!Y#H%J=jAx
zSTny(Q@2;RL*!1O^>2bD)`|TWK!tlM+$(OwheYlZ-Y<N>?l~fD^bMpBi$5Y<DzvO+
zBGWqXc!eh_yjbI<8p|s@sq?sZji)L+U7>%C0X3ef@T{HC?rdJ;xeCu~m%gd+f+bdX
ztHRs5I2WwJOBG(O@Jf8GzAEA#8n21JUf~VhBHoN|6z;+Dj@{2Iw6RaMYRkJ7-m{C%
zu1ppBpYTJae`HSqBKCl?6V!YZ=pp&3Jq1+wTuO_7UEvGyFNI$ToziBFd|TnW3g1`w
zp~9(EPOI``g`X;HTV=Z{KUet09x_$BRQa{SZ}w=iU(Q#X_<MzaD^TT+3V&AkOH=0g
zx7{e(H3k1vxLz;q3|Fesrpn4nY+G$U%bTEGb%oN-scBZJvZ@63Nqwt{xb!uuw6C&e
zm9?s@U8RGvtb`pVSf@(IDxIoL?(`1L-^jY=BdaZ{bgj~@%0^ZCROw!2{VKhxY*20P
zUXLn0<BF|K+(I_gRPR{Ox5~y<HmkCE-2W!3zG;<ya&x^|1O1g^!vV3<YMK9*RR&hs
zO0!!FO*|-G!ZtFoh$RlLGNj5LRraj1eU+g$RVAvjLzQ7wl2uYw=GvG4#&w5R*{RA1
zc_w6NCa$O%rmJMC6si;@$X3aTxFwr1uN2dJaWlRIrP$w00!<kySE*DPU1f|k)hdlD
zBgJdBUM;z$^eDxxgj?6xD&wl`Qe{`g#|w9^GC_r`A4@c)5j!TzYIkXNi>tfYNmcf$
za#)oaRrap3PnBs^4wQ0V;eJ&nSD7O2+{}4umHp*&K-{EjY<iW0q&y_nA1vZ(86Fx}
zKfKD!D)XxxSLKK*v#K0j<(Mk7s~lP7s48>hY$+|dR>B&v;oK_osvN78w#>RI(^z}Q
zS2?lDNfMk8S3J4Of-0x{w;#76!_%vrQRUStuT@!C<;*I#SGl9gSyj%ia!Hj-)z3Lq
zE|9~yarN`6od4fFzfgjUgcmEzy1J~&qAJ%}GgU6Haz&LZt6UYY(Hd~)>uOn<{+cS+
zYSzUqa)S&PSGl>$jp8>6n;W8Cx~0l(irgB<Ez1rQ+*#$WDvwurqRNsgcdN?7lHF6~
zzAE=uxmQECjh6C2m4_sIP-ty9H^WD&ELCt>mB*B2!AE0aN;6qr<;f~9Dfm>Cr>i_)
z<%KHGRC!kGdM+;KI&|l;g})fPy&TJ4iOK6#-l+0-m4B+dS>>%NUsU<B%G*`msq#^k
zkE^^Z@%vRisPbNHWhI>dhiblM&;KXEr&T_QOPJD*&#HXhD)Lp8udDoEw|51<sq&r3
zw?cDvXX^Vn<tMxO+r7QYpIYxPx(<K0XMrlewMubqSi0-Y@UQr)__qo*y4L7cW2G8x
zYILZvPK~xT+SORS#u_zNuCYq3d5TvPu3B617;*hLTWhSnX4ev~S!=fHPW0Nf6?M&_
zqjI}wwv&{dg|5SO#n%&>ZTA}M*XUhiBW3ld(W}M=n(Z0)U{yAZ^{$gXwdT!slNy`W
z=&LEyY%F3``l<A0(wN>_a;5E+jJ+-$)T{aZ;9Jz1uUjl@%Nhe~Y*k~BvUaF3tj5;j
zHoHxYZEI|&;b7tR!Xd&5U79;Ew1y))))-!6j~b`9VJ8V}cD%@l8i^Xo8mSuT8Z`wo
zHL|tlcdMB!S0k^WU!zc4@vUlJjiR_2X7oL4B@HblFma8jM!80%MpZ?f#%5de#_Kg2
zHAcpsV`_{NAN^nFu^NsOTGoUbJJ;C7^=aR?(vDqgOw@2U;qEnF=%mi=Hz#e`Q^83>
zYh$l?UHjD7x7K_?KDow$HKx~?qTznRslxq*2h^BmKU~`tsKZhYs&R0QlWLq?Yra}O
zL^wlusQHV0q}N)9i<@Sq$PqPW#gW-Hjubzt#+({Q*Epued`0HQnqx)g34hR!MTW=K
zIKIXS3Z5vm7kF*DHecNh>%xK>r`W4g#jWnCB8zLBW+$S?88sHxn*SMXQ+AxG+3RbZ
zC33d#oEqoWIIqU}b}81lT)_)!TvX#?@e6H-+c3Wqm(;kl#$`1&l$)UiowH3{A+Zgw
zlHf{Z+3@Nb*J$e68rQ`^`;T2a?16AYjT`NZbl|2MKXs*F_vWdbZ!i9pa!c%atH^CN
zZWp<u#+^0ps<EWTBQ=)RxVy$ZH6Ez(pal2UxUa_j;?}$!R?g6M`%tYpd|0#ARaWt3
zx@N5U<24=?e@tlKh-yJQp0F%^2F{a8G^?j-JT3l=@LBs2pvLod6Kl^4X0iisXf5V&
zzx`}t9|2e6b$eXfKmXQvwZ`9Vn;*CMnmttYBg`cG{D)feC)PJ>yjA0ETa?YVZARXy
z@vfR#I=s1r_i8J?2lK-kAJsUs&RKOn)<dReonCeRC;mx|PiuTu<MSGw2GgU?7wYpz
z+iH<7g<sY9TI3s{`F|_&o$!0%4?<i1&ozD#?^Ng48o$|1yH5K$zt{Mq#;Wz^uW|mY
z@mH-$+SHp%GxB$he`;9#U%T^5L#(t}JEnJ_ts?D&7FoH@Dy=lDiLc%&GOsUd*6FCo
zT0+~*wd-`KH+OZNIASt8%+S`=xlWgQa|7+ijdkm+CvL;8_2v&C-Rg9&vwpq#YocpA
zGG31w`wi7G_Q}t6Hmo;4Ch_bZ^sci}z4?2&g?0MW>057p(BH<2%(VCW=|pc*XVW_U
z>TFi$5$mcio7d@I=fFDC>kO!~MV$$CcCNE!oq=_7b@Fwr)>d_fSpRhf)!DkvHudJi
z!H(_fY%761gP3e^9A9deuJ}%MM%3A%&M*yk6qbfEJSJw6kVCpoMkFar3C$;Kn=rIl
z&bSdf3U!Kg8WMOmD-y;sU(Tiv;z(4dT&Gf}TBla0uDEq;w`KEm&Neh>!;y7H)fru9
zjC{s9^MC&xTW^X@Fg|X~_%7mm*V(7eu5~8X*-cqCwP&5(#rF`pB}@|ED~_0KUvcYU
zN}b8#_Ka*po7zw2Q|s(s=KxzmXQnA)zj?4(Gd!ry!F7(UGr!Iubq=+2t)(4SXNHt>
z>Kv}fQE|nYB1hDjC1O6a>l_)+T3y%Y(RGe#6`U*XmT!XN>Kq?OPEes!geTTHsm{r9
z;(}P?Hu=;#r^OK~bh`K%vDhx`=4D*xoI2OnxuMRd9XYqog?cQUSLggX7u1`-+p!0`
z-GA(pGZ*PzeNnx6&%9W8iSSb4Wx_>uE*G&+mbjvh;g!Ox>RcViuc>pb_;qo_3~#hr
zcEL2bX&n~Vo3Di)u?wKi&Eht^rOvH&ZmV;<BKHdKh-dGtb63olh}<o_M>um3_levu
zd_ef1(3~F<d01$_%3fCI(K_84bZ_vOcHqxCf7N-s&J%T(*LkweTXo*9^HiOu>%6KR
zd#28_bzX|^B<@-JxjLKJ9|G#w@C8l1D6}W;mqlI?&ecuH?mw?-_<Ef;>bz;!wmnnZ
zt4h0H*_~fg-`dU4{t8g%y*lsL`M}OvozLogs1hFuU1@Xs*zW(z`b20Ev-(_`uY?x)
zqRyA`?4$NAkmBE%v;C@HFFd|e#qUk8+v$&Weya0xop$Rr@2<Z{|C{hvWm(WZSn_v8
z{t#NjR_O0K|I}HhLB|IF)}g^_4OVY7fB(5sgSHLYHE5%uMNYEYzW6G_miVgia1D{Q
z8kn-Z_?kk?b>g*csKW#nw4;-Y*k(59(qP>N>&1eu@@eXoZYk?G=+U5mg8>bCHk!ZB
z+^Erf#oMdF294&E!iJ6J^Fr@N^ZCM_$L)juOk;vRlJymCEZn5QrXn`mPh>OU<_!k6
zZF+9eV9N$OH5g%$23s}QvBB^LgBonzV21|78f?>OeuVoF+ai6t_qGkTYcROceD*&{
ze{3?cy=I5T8mBaL0yi|7kwk-}_0S;OASJy8(<))ajyEOC+3GZF4*3R!M)Mi7C^U^1
zPx%dkn1>A_+f1dG6|BTlmRoC3Z_sEkvca@Q^ZqkRxVLb0gE1mw8%z`#Cmb)FAlzBF
zi*Q$=nb_&rE#|w6>>=D!IH|#2B9H0AjrS3^tbH3yj`<WL;#1?u{tXU@d9f!4#(a8%
zgTxOO9umh76*){eqru^E{MrG`YB1XtKAOg8j%;w0ZOCZaj%H4SqZ`Z`#q3cW(_pSr
zZdsdo4UV<mMlod+^BWx3;LefUHIm~SoM6|(NQRB%MB8MYh_4!)++ab2B@OOwa7u$y
z8(i1mdd;5J;M@l1H8{P&8Hy}yaF)oKc46xQ?(pme=P2%m=Zjz5;1ZDw8eC}Gs24&P
zDPsImk!ysPHCWW(a`CH$R|u~ZUL|ztb{V)5*TxOp(BS{0>MNk8s@|_Rp@>K$-Hl0y
zv?7Y4gzt3T=@|qR12I6-BBcxjekiC2(x`w4sB||bpePs!iU^4C?Yl4M{rInS*IxVV
z^E}UaPTX_v%-oropNB<xSS+&-rSpPC%LRE@XxgRM5*bkcC=W};ml<WbiAFQ}uE@j6
zJZ#Cs);z4r!>4)pJP%*Ucy%7u<mrkpbnMrPuaiN3o?qr+gY@;rl1*>S!zPpAW}~yk
zZSwtIxIGU$@~|@xyYg@#4+rzGTl!uhgX}S#+Lwp@S7pwsLwWd0X5R|G7Jg&wY2b|B
zchboZ=ix{mj^^QqJe-jDqwpso?T?xGKj-1N$=nIT+FxY$tFie#4=3~RM;=b)p@It)
zT{xYGKl5;jn|2=l%EOsFTvV_Bmg70o%Go^pV>pAK7r&5)e@*7jsQzafq77Uq;6ia1
zO1SKerJxJfxNxltg;b<c*mY&e(YJ^TMP0bwh3iZ$BNQ|I24hJtr=gNAly;$v3`z-U
zUsmKsA*ZaI@nThZ*Ok+uk_(kxXe^s56h#^dtGQ6qg<9g(U8v!*SCP|VZ5QgeP|t<>
z5*e_r0x}ueG?3U(NQDOtsNdwm&C1~x7j9G7TZK-{+r??gViOmdy3owjwiIbDY@rA=
zYvttQpvIxC3+-HZ--Wp@w0EI{?B8~wqYIr}$hpwRh0ZSA$q1^t%Y`m3_+0S2aJLIx
z8OntRRdtUG-CVd&{9d7x*!?baS22I&*}EPt^mHN51(%ZP<w9>49@2m~UbJ!S-Adl$
zf>%Ktoi+}kO~8e)3lSHBG6<QbX%H2+T!^U^Dsd?Z7m^A~cMdXjr_r=(GcwK!X~3$7
zUFhq=7#GI6(9ebbE<ESLU>QH+!V@k$>B6Hf43P4e3y)vrOLwP<fi4Vk;c3}CW!BO&
zE<7uRIq+a}PK(4LE(~*FxC_tAfXYx21{~qSNbdG7yrhOkNq@oA($Wd_vJ0=cF#4*V
z(w7Ho$GI@xh3Rsi;KHjeOm*Qk7bYsmWRw3S6LX4D9QW5<n5L>XTzJ#;g<)CC*55KM
z&XCtk;s1oQgf!!r(DEG@W-AW)9C^K~;(Llon-5f6D6e_Oa=yri!UaMGTqK*t#%77g
zQsFXV^RWw`xbUkBze!mkmz^%GbYYbXpSrMG?QT--XD+Oj!5X2H^Ewwkci{^u>xExl
zRlC6q#YRImyRb#kI5=BnxlPFaZkN78$l$wN*zLj|7xubv)P)~h*r%%R%uwui;eZPV
zT{vVSd@X~oOakACd~1r%2!HRwVHb{QY^gZCAo)?g%<7m3m7iSrS-!_zIAI$7MT+D2
zy9*~>Xyrz0H~w(plnZ6uDCfp$*<9;J5jXyH;V%`>xNu42Zx_xg+CMIwbK$&+d_lGU
zx^U6t_MZq-Vsku5E=z$M1>7j;wpUjnwyr7~6n5hp6`f8IS#_NoCEQo`&!Td<-i=~1
zyTNToE^cbcOG+svEG=Y&GFQdC(Tyq$qN?)33c`wRR5JFJMV!{Fxlz}RdTvx#kQ#2(
z6saYfI&Rc9UXDGnz8eiB-X_b2O7A8&8eNqJQ@z=ZTV!^t&>5xM-Ds?06B##mqp2Is
zi~)nwv4tBgO(;ic<Hj9s_}vJ&(bkQ2ZsfV)a-+Q)9c0Pi9o^`pIKABH?8cqq54drc
z8(rMEPsO{1_qcJd#<{C9XNw%eZc@m3I6b}Jjqb8{GABOhMh_{p?`bmZEk`O3sfxaC
zRZ*dfM<Qc-MSR9M=tjtmgd0iaK;y8yB5p)YkLYfxHs(fL#L2{ttT-%^rxiIPgRIGc
zuLT}<qhUS!JqNxV>+4284h4S&)Qv|(9(ChM5sCxccuf3pqdXzfqK@q{Q2Z(3AmP)(
zXWUp`+BO*M#t=7NblV?5JnzO(H%9U%-)+BmJXzTOG23Bo3}+Yk|1V09kBivjT+V*2
z^n%;YkZ%Pr&P#5*?8Yl@jCSL)8~j1qF>Z|I*~*jDjd5;_cVm+qo86e;wm)y;G1HA#
z-I%E2BsZpuOm<_68&i1#>UH0nZoDS`x*Kn}?I#bZJ2*``A4Gi1=rg1+G7bL6+>HLV
z8}GO=+l@JHeB#CmH{MlS^W2#4#(QqO@5Wp=K9D`#*#yHn&pm$V#sW8%xUtlYg>EcT
z6N_c(q>*pAj6>?iM{ay<+RZm$Oq#K{(v4MWdOdC2SnbAIH`Xa8Yd>>ijcUmq-_PCn
z!i_H_I$1fo6K#VWH>%c2V~hB2!mVy>b7Q+3J5;12)7a_8*KT~{#x6H@yRpZOy~_5G
z8~fbY@3wn=Q0R>R0d_|N;<QWgD-(^Y_ggo9aN|cezH{SyHx9dT#EqjeaPrCbV)2+8
zKRH!u@n<)VyK%x8=l70D{(99s{w{-)QvML05;~E&6#sJLAK8$fapP|{&T66Z^9aT~
z44iZ0yp#)W{3}Z~LHCP>|EGYLgv=8jdsP?kU>yH>O@Fmh*n?|4xZZ<e9{ZfV)`ROj
z_Gcx0-mHkne(H=TOHq&g#tT0X8CnQ8cu?G9pCJ6`t%L_9J-FS2#vc2#q*5MKQDlDp
zQrd$*xc_@lR)oBq2R9mC-h&E;R}`rvtSsdDSk+^{7h27O>K^+!)fyf&6sak!<w0$a
zeX7>+puQCTOnO}p>WP;rWV<vlI(Z}Un}jzDZxP-q<XL~4$9~9=mQ6GW-8^=$`8I4*
z51M(<+=CV#@Xh2-9&{FI=|L-x{g`fR586n%L)c!}R@hGXO?h+>=_q6nzUO(T;dhBJ
zP8X58J@%(gwCU=>J;vr<5noyR4Z!<6xZh*HKipkN@_@*L9`rCuPmx~2-oniV;qt)k
z!CPKT_rl|W*MqDVIWK%3_&xUHk#~9#@F3_xM=v^g(Y+-25m?BBum=&11}CMZ7f}x^
z4`Lp~J$TiFi5?_8NOJZ)7@(m`3Hu1s!i+HMK~BW^_pyh?x!(GE(9iJx9y}uMJe$he
z$2@q#)IRP3-!i56qz3~%c*=u89*kA((;htI!3YmVdho0V&v`I}Z}_N+AHwn&EdEMC
z4E11`2g6Mjqw%2bL>}eA3m%MC?Ta3~<iX1xyrLridx&Nn7RR13sf<w-6&A-CKHh@~
z;uKjm$%DxreBi-6iBmk7;lWJtsUEy0^126ah`h-;5~1TX&WoCxZWLa@|0n*QaFz#e
zd+?5_oh`y7=ZL&3<eS3`^}Yvd3u3MmX2o?rpXZkce|d1mg9Xypd$7TSg&r*OV6g{F
zJXq<$D((QPUGBk0BFjvWk3~N5U<HFKCb3urn=^+`Jy=cMgLPcJvRorGXRK&Iv(G*F
zf^(``rbLkk4IJF)!6pyB_u#Mxn?2a#!5$Cxda%`lZF1S^!FI*m!8s}jXI(k*cX_az
z8(IZB8j-d8JlOBSR~~#V-vb^T^x%+5$!U}+k$mI9w;p^avuj(}3XhMg+xr`jBOV;}
z;1>^mmB9}l{N%yU9{lLRG3`jSWM7;{>3H0O6S8D*r;opR@H=-o4^DY-Qkl~%zvHJp
z_*3>ycj(1Xbo|?cvmTW9qJkIycyP{xB3@kQ#d!}dcyQSRc(07!zaCsvg#XmLOX6MX
zU742xUKI4=8n3;X6!Ko_U11UC;G}V_DKfF5UR>`*NiRxCEG8`O#SJ3)nU~Ox!8}V#
zXWHewC}V8OdhN$`SbL*UI7$`0sN_W*FY0<x*^4S()KqO%uifA3Ui*}+CWXl}u^Qq|
zhHST%inY~iiuJsx@5OCi+%CO=7dJ7E7Y)5=WJZQw&J^Dwn_I66$Ow&9Z0bcbFPeyR
z<mtkrxfd;@IPOjyULaa|?aM@KVH@Ec!nR(t6KOA`O$V?2mue&v%iFtmXGP<Mn7jR5
zUUc!|ZZEoWYIyhV#XTbT3aRjN&`tb4;r+ty!Uw$eZ?-?EXg$3470P}HxttxRmlwUg
zc*u)9Su$tK3zrve?*CE(LRxxx6%h9uh4&TIgI<KZ2zwFn+E+SXdpkb$s27d_Ki!DQ
zB`!>Ok@O-Zo~BoO`-6#$7c_HjSNeGIFhhCqj2C^q=;y^CuYH%!kAeED3r~6R2p1dw
zI!!o0_?Yl<;S<6qg)|%JMWK?mJ#SZ-+ZT=Ov3=HS<1mc|$#Y%|mO?(ni|56M3XkZM
z*5O`^knu>a6E8-4F-k=Sd_m+zFJ2OPS?GNGW{mh`;aK4~A-%?nOc1{6#YCe|5~2GP
zqfFIYzvjj3Qr<B7n<CS^s8+xp^BG>u^xAhj{Ggd%XZW8NvpJIdfS8MlIajgol-|)<
zL&Bk$<HfsPyywOHUM%uru@`f__`r(~y;$JIJTK<+OeuvT1?(>+@xG4FRPd&8q1V3R
zQ)Ce8oaiN9EcIf!7aw`?TSvQUnZ}JxaQ9%5L)x@3HZ;NtFIIZ-T?XH0u*!>1xum1G
zJBroph!>BC@kAJFyjaVVJ&bx`tmC=`uJxga51)JS1y6P_)_YOdhiiP`qd^;J;Klet
zb~iVAvB`_gUTk3#{QpNUwuvx-?Ot@`ji?ttda*;|PA_(Ov0MCr7YDuA<HcSt_DR_<
zqzmKlpm<2i5#d)}eC@?BUIMtnMZTr(#rLYEJ*#-wzS57HTF2m+7stIgp_G2|;%9j|
z?fxSEyB8<D_*MKjrNmk$^M@3MJ>|VJDW|>oQzC2sk`0wJhMeUkz>9O-{JntB{_L1*
z<APSmMKAspp>hoP&+toLTo!j;;TG_L|2A9DheAFSY-n>H{8x*aRqbW=Xa#!>T<1ek
zAKHenvJ$TMp_mUhg>Z8SH~3K8hb?|=^`nFjC4JcD!*(A^`B2)2&OY4fLm3~+`cTP-
z%086y;YOc*>Esqv-gjk3<-Jn{@rpvelyD5H_|VvgCO%a4p_&iXeW>9>eIFY5P}67c
zpLK+_ge=w;VKnl(KGZY1qcl|URv#KMdGVWlxaI%aIF`3byj^)RR8wWu!iSbVG!t(w
zq%nKJqm>WsO`O&~wDI8%j+K;lLUxC7oZua#bTsyzeD<v)Ywz-*ix1EG@SG2K`_R>g
zm=AFu?onG0`H<(sy*_l4<9$9nU?SWv(p|_<5BktUyr&PneCRFC1e{hJbV>C45b(h*
z&ICL@czy7hd>l*aK_4Q<CL|ITGG<i7GDR9El<lKZl0Kw-Nc)iSp|2DgWPRvkc+Rv%
z{b4iO<o$f;&oyakolFM!@R%GQ7Y_2_2_K&HVW5gnnV9)KWt^vdct*N2{)2rO;=|iM
zyd&{>AIADH&WE8s4D(^Q4<medMO7nx7$x$O4=;$kC}d1083ug$DrL0z7^ARuyblw6
zc+-bz5?}S<HIa!vO!8r}_!J+es@II^WayCBO`JE(2)rd_rqQSSFhkt&VpjiCah8xl
zX8SP5hh;u2m-4O;ANVj&{5|fdB6EfL5$5}_SjvY!Ebw8W_#$INvwX`XJ}i~)jK)Vk
zeC)$IZrwh7;=>9bJ~Oo|efU&-m5D=_)uz@7xJJdbX7;~Oaf1&VefZK?t~a%G-^AU<
z=$l0tXRC-aH9LIR$!*7vyZqSY!)_mL@T0gNdwkgI!=FC<r6s!0hwptj?8AQf9`NCy
z4~N9R_Td{JzB0k>;pO{3Dt;%-pD*f1eE8Xi<31eq;Rn_JDE!HXV<NQ4AH5S&e)HjX
zAAT{lznWP-X_QkUf2h~aD4mwVcF*|mH!qZad*?ap!#~`#{r2v0P6q$_a8cyE@PhIB
z&xcDs6p-a*i4b>!I~fuS`mfA#VbxN(M&w#!e4WvY`f<JC#f(=8KT7&>lOH$xQA)Kp
z`cYn_w6Kh@tRLk>^4qQ8M-@M+`cYAOC1GWuGpDqy=0|Nm>iALJj~af|G!bfvI2|F@
z^`oAYhQj*71|~x%S|f@1k#AA4sUNqBu&vufZug_HA5Dy}lWj9Un)}g026y<;){mBc
zv{JFPA8kbPN0m*qlhVPDjw0=aPSeCressP{p<@?6?)Kv)KVJ5us~`9H@uVLE{kYeU
zZhj>ENcwS~ANTvw+mDCj+g;d0_<$b|ia0s+6z_GFlIMrZkB}c>KiqzJ{0OL)z4Q9v
z^TYpt`%B%)Ht4@{1)&o0BPOq?AC?L3n8i&r7E^wt{TLu6BYfD8zJ6rIbAI%>DyHM!
z&yPn`+h3SJl8;`M)nlr9+>a+joOyXlXT)<-1__@QJ|lcq=tLXr#}GfB_hYCZqogy!
zFh52ZK3s(Pj5G@Q3x>aFYG3hVv>$KzG2M?bYMrO#YkrLNW1MWp3nvOE`0=WUlkFrw
zCi^kPC{s=EoI#+?>wdhU+Bc2OG!Yui@MESQtJESb|L4d1e$4e_mLG4+<{dxg`0=hE
zvyF?>sBO%z088XheBj4CKbH8hRLXom7WlDH{6muu?H5T|e3il+mP!1`kB>!`3mNkh
zkrjTdylQ5tJN^39kJWyB=EoYDZ4|Ec<8vDOu}(#fA??2uU+>2T6Ne%X=EG2%RJ&Q|
zh}-<w?nmh$$^@~)kDY#G0>}oi%a7gMivlPez#c#L`tgGwKl-uHwDp}I`~5he;z2*Y
z7C9tjTVIK=iEoVZtx=fg_kJ8!@rbECYO+1%$4`Fz<;NLS{Ve>|kK-aIjQuYn?9p$2
z{O-p|KmL&Nryr+8P8&<wIAiGa_isPW`cX7s56C}$ob%&9KQ8%kUiSYQuL~w0nq4$A
zc-apGP&j~V<X#|vf&ml~cY<Gy*9K4|fa_H2BtUcwt`DGC05_<L@k@vl4_v7&X>{6`
z37~8MZ3Ac*K)C>J44_c}Hw92WfC>TB3ZQlX6$7Xwm+Apj7O5(%B6M10E7eS~hDc4J
zlNf931kgZAU17Zd>Wk3bIU1@+OBQbq;1(5|32zOcv8laH<o3XoF>hk@rlxnz185OI
zOQW|Apq04ON}B-gFuu%<OQn6l#(M+k7C;B_jsbKEptHQX1aNl%cLs2micWWkT}|;G
z(=OvP`TGL6KLB3<{s6kmrbhrh19(9ELE}Z^UIFwDz!iWyfQO{hJ<sGu&Q?6qy{6V_
zf_fl;pv1T^6hI_^XaHdq9WzF-RE(LJbmWl;AQ?bPRq3nj9j{yfeFFF-fE58e96;Xy
zUJT%+0Qv>cKY*bcpGVl`0G^ZYfB+r~;AwHT_;>(M1~5>?CrrE4pOP}jDES#aBmG&U
z4>oaz1n|7LV>!&|!vh!*z(^HG1@MB=X~wRxp_c=AC4kohcq4$(0gREs!~n(`%LxID
z6CW>hyy*C<nMd+T0Za~HN&r)h*J~pAt-Kk)v;f`@U~T|!1u#8;w*z=5fEkXxaHjF4
z*DT}C;5=rl_-+7mMDlZZ&lEohU|s-A0$3Wre2EK%9|o|%*f0(wFA89>$(%)s%Va?E
zQ2@)u9i7U@W}H_BuquG>12`POrva=EU~>Rl0{Be!>xF9qSSzxQULuU}xd;P(X%r{;
zh5$AiWs_-TYXI8<*dM@w0JfXjJpt?pV5f?^0@!VI#>pRty%P5c9r0iQUm43oBDDWH
zfNui$*681vc9|z@j|6Zufb#)d2;heRehlDb0Ds8%SOCWZI3fO%@aL<1f06QA0KbYj
z9sK<&eoCCJoDJY~0DlJXR{&=M`1>jwCkLXF|39iaXIl9;fQ#I^gD4ure*s+Lh99)&
zj>qKy3ItIw2uN{Sr(P(C!cv@o`D1l$5JikHjjtCkVU%J)+z>=@6`fGTk}8%GI&sPd
zQ7(w*f*2gcjX{(TqIwWDf~X*y%0lK)F^EcrJC0R?sA`mI!7DRZGl*J2bP3|_AZiCu
zCx})-v<{+f5cPt%C5T&tsBgR)1<^pfq0k9?lc~Mgh_@M~Nf5V-Hx@dbY8phdAesl!
zB8Zm8GQYpf+zH!8Rh@))1kpB#c0sgPu|p6YMQG_5JJ?wwBit!+m-@)aU4ytMh;R^*
zAnpyKTM!Qgktdt`f_NZ^2ZOj@#qK5oy?PklD~O)r6rDVKo6&Pg4+z~sctpHG_=4~o
z8|LG95rZ-a2^}#SgcZaiK|C5nEQojzxgh!kk&sO)h;$H1V^5cicvhG{R_y-6Qu+z|
z{@>dED$-_v$iN_;3gWRK9#`=R;gdqfcd{C!BI7?J@-)-ae)X);8Er@q&j)cRh_8Ye
z8pN<5)&{XIh~Ytu2;!|ErUx-Hh*3d|4`M<PF9h+T+{XxC3gQ)!mxay@vc=I?joVmN
zjk`*DHHgVUOp!iOILYKTHHg=wycxvnB5w$tQOb`$%|x3K#LOTT1hJ52LCgx`{UGKB
z@wU8X2Qepzcf{Fu$NgOu-%|uC`7u9`K3_P`<ny8NWde(WSRBMhL3}K6iEycqL6!xv
z{3>HM_el^dg7`Fu)rz(<h*eh^FrYIXp9Qf-dcH#ab155x*u*?d?Uy3!gV-SAxNi<(
zOAvdF%~p{eL2NV1b~9ExgV-f;w{VY;nLBaV`aUW9gE$bxLFLRUr}pb0z6qij-{KD8
z+aSIR;!F^K2l0InhlBVzh~q&Vkvrr37{pQWAB6ewkE!^R8QT*<{1U_|iN6Zz`@6_*
zCg+nu{2|2&LOiYFpF#X3lAr(CApQyBQV^GeIH#(Ag^YP#<bsJw<sz>F5*d&Y5JG{F
zeL1);gn}Uy62DehID~6NSW8O>i%4P7QHrW~y%CFtP$Gm{DwY(M3*knQQo_<9lnJ41
z$R1lK0fyyKK7`64RFO@E5GsaHDP%W68`cu5s;at>N;MH0)Ci%bES)&CtQ|s~5b7Gs
z1|ifFuWuB3H8i}DX@%eZW(0pB+!DgAs=ZBkdkBp~Xd>Ricr^{7nRs)f@D~(YinkKB
zHhP;7?l7Fc+1M_G_91i#p<@UihOi)nP9b!r0SBMkeh7DkFd&4-Lg*60-5~@+2!+r!
zgnL4GD1<zj-7CC5gl-~qyf0*boJzu@dk7Cmf6&zS5a}uG6|!G|^fvY`i5{U_nEyRB
zuZq49{347T5Me{%5F#NYLr8@XmB^S@=*l<F$YUYIjh--VF+w_oN0b10Mh4jsaw1gv
zgz&Ix8KG|o{X*!km@M*OyN{}tgvG~0cp`)sLU>W`Ppaw};lL1{3Sp3RcIRmkC&II)
zt>;1*9Kw(go)2NDyhaL#g)m&iu^*x2oiU*@%JlK25MB=9wGdvXBKxr+j1w6h!Wh#u
zJH=zXyrzaQA%s^$m?*Q!j4ZQBSM`w%Iqee3-!R#}X~u9`2ycZjT@hxgmX<SA%VFWc
z=4OTPb_nkn-#H?)P3G^a_@3~6;auSd!g<2^LMPh75Eg}SHiUmdSRBHV5O#&IJA|bn
zEDK?E2%m+pJcN(<fuOSbSiVk2J`rCb-HEnJoH>7L@?pYjB(4u(t;jmz=konR_@&T^
zu)##wD6%Pp%^_?FVXFetW}A$iDcdfa9m1VL8nE>}+{r`uE`+@j_X+pQ@qqB4@R0B;
z;n%`%gbdC&-^=S*2tS2zSp0};j|zX#q_C|Y&D{MQ!f~0M5uOO)v<Pi}3E|feehcCE
z5Kc<u9`%RFDRzy2(#!vWEo)~!ir)y9{+Ezd6#o_{nOzX)#IFsbNEqisxDdj>AzWli
zVcXJ~7n1)%xMaL8i$Dei!f0f^BU4C9Vc|7l``goWyiUdIg++z=F^h$9Lm0)wC=o`<
zFm4Q^ybMYSOJ8MNCTtI2*)Yn5uk2bZRtTe_Y^n(>39AY#hfzhunLek*>S5H7STl@T
zVbm69RenBoj0-=!=0hO$!)OpjLv}EXtg3Db<K{5ZVPwL%C2T+L=n8|6f85Ia`R0EZ
zw};U<j3zR^JB+4bGz;U7FxrOEJd74$`(trFeb+K<e{Z6diX0;H)>7IS1DZLO?ZRju
zMu#vuDrOfMbh^r{a~OAqahFk?XwFmgUBkF1jC)npoft+p@%w~~f4_*`Iv@TCqnDcK
zp-ias6row~Fdi~uo^heh%bz<8PZ-`Xd|~**h==WKB9A~A5yOLAS9}CCj4+42j{O7|
z4Wg>G!iYJI@}Dv5*bmYt!bpaZGQM2ZZR^<2aq;;>J|z+>Yd=wt3)@e(^5`S-a2S0>
z`U(3B9}zw(93Xs5_(~Pq_sK8@hA}*X5fMBU#vo2;1lb6l4&#|H-V58O&$CMGg)m+e
zc}_Suj3FW%pXWt}3Wo`YhcUv`juaVX&VrZ1csY#Dx;dfmD`C7E#>6m2tEXdxW5XCH
zGCqt6W(4?L7Kf`2-}VV(au~CvPYGkHCSqFHegNjRFy08`%`je<$low&ul2)Wr~BNS
z@m3hq!<Zr8w}qU(nPKD@Jd9Z)<lHOXF%ei?ayRC1<?|<i!uGE{GmZDdm>b3iVayA|
z9f2o;`C)t*MzIKPh+sh&3&Z$6jKg6p3S)5?>%-Wfaaa<@CuU@phOx}><su)2@v(^W
zoa%}&R;sv4_<0zghOt`wvoO|*a17Uo6s&-CMp;-2Ul{%+&pX`)Yz$*l82iIG5XR;(
zwuG@$Hd~G54v}rb?Lw5Y&xk7g{+Eio!`KtXUU9Eh;68CSN3(<CUvpp5<1U9({K^=A
zBSN!pMZOdADZwLQ91Y{IFwTVWLl{4X@w>4+Ch|)dKZ*PtzVbNbaTQO5QCR(A%wOqS
z2*0Um7Ma`0F#eF)DdA}@zwni3l4-zx{T;^HFs_Z*ng0{UxiAWepAX}LTna?+Zx|QF
zFNN`+2nUn)Y?^pkXh(A#3!$KhV^G-eYa(!lv51uGj9xT?>&2aD#Um&YLAwarM^G|?
zQW4aSpiTs(WpiT$<weQ}%SKQxVn69;w_XYrBB&TabyZQRBvK`U$|BBMqFz<SYC?L|
z5UDAwC3Kzzts6nT2pUVNA3+0=TZIjUH$~7$#OW#V<_K<);zXcwn~Jv!xjdRg&@_T(
z5j2-_hp<HitwdT1^P{y^u}$R4^TyQMN^u6NLj*lk>=;3(2s%e_X9V|4xhsM$BHbdm
zTZFz{&G?hw6T!Vk=dj!-&eg&y9^F-ZK=@z;PIEnteXj_58~#uPd4{`8o?a>b2m&HL
zp)(*s@u)BqK{$elIL{QWTQ+T}7!$^Y2_dVJBB=<{BF<XMMbIaL{#pYMN6<Hdei8f8
zK0Z45Vs&^5q1H`USi*j|@eyw9d}E)l1S1#_!DA{u?uf!CB6u=_f#Uq3<9U^A`$3KY
zpZ|&A8N;6yc}_T3I7IloaA*X>MCi^qBO@3U!M+IgNAN-fFGjFb`M(sw%Mtu9f>{x~
z62a(*y<JR+pryVZ!b{s2b!2P=<3z>_*|iBGuL>tdFv;kXMfmMA`c94DwTS&SoY#eK
z2w8knWLgAoiA)#HFtsy9_+#v?FJFFJNzN0#Bb+UqBYao*UIg!p%oWn>gUFRHGR%+Q
zLx~F_SR}I0*ziH(#o|kh;@pxgi(q*KA4Tx7^mP$@F7inPD<W7Kx$?W>Y-LphpBmrQ
z5qxI&8j-b;D_?N_Ld6}X_DhlV5o|EZ#t1fvZx(Jb`c{!`5o|Y#^R2_3D(;G4x6$`R
zuvgsqUde$74yt&4)LzVoA~+er9}#>N!PgOdW4w-ud@KAeg71xfSma0qM@4=R{%C4>
z=kt@{KSyxf@DmaH9`Y9ze--{F{5=9*u$TsqQ#|*T68UM>{u#kv5uAzOZxt^H&kFw$
zo)exI(yKmy1y1~;QT`LTB)lx-tpzO$sG)*U6cQ<H+Py~P+9-;MTxay6QTrPNbSxId
z4N(-2qC^x8qi7_9l2KF_DHTO&kup(KGQMR+%0+RbNO_}I5UD71cAm;nR57(xMXCwU
zRYwh@*A%H0MQx+h5vdzRJ)_i*qJg-xXm1j~EsEQtxY^j;62-0J`M==Qn8hgCNNgf(
zDr_cfE^Hxe8AU4*4u~^-cc|Ddinc~~US742qJvR7M$yUe&LVe4ahJ#%O-k1&?up_^
z3`b+QH;QgiOo-vt819SW{wV&9;$jrtqj(@{{}2=J>mH1vM--c)_I+>9D0+#!8%6IZ
z9uglNMP3xHC>~dlX6`7WhI^v$iu;V>7YPW1!cY`pQyUTay9z9km@pniB8sGVCW@>`
zDvGoSTjV(84DTOBAMuBUeTDr@Z9D!1ocN={0Y-mJgzYlg6Hz=F#lR?@iegX{!;Q_;
zQ4A4(#wgE5@tpWzA@3^b&f|F%hek0><QVL*Bg9EYij0cl1(6qpF9}~3(&iPmYod*b
zVr&%Sq8P8*DaK}k$g5FI6q#i7$<Zq>^QT7fS`@DveWu78!Z)LsX7snBm@YoUC>)3X
ziO&+gZS;4dm~HqR5q9mpDBh1^u8OOLA4D-PiuuNJiO7dhED%{JTqIm9WPi5;OQTp8
z#d4#ph~gu|KaS!P!}&^(_A6Cf6~(6_bf@^4_!=RLYol0a_~%i4A^xRsz0o&BvC(iR
z@@5sca15i^7RB}`c0_Sn;!feAD87nfm-ucW+u9?tH;R2m*&oFL!w+(Zlr}BDj^YRD
z-w3}Iekc51NSnhVM}$X(T({JJjN(`nKS}vHir++z3r`4X^Gg)J8cwg@#ZMaLk0?$V
z?!^2vioc|sG5X(8oHhKPD9#yvo;w@A1t2V22>(TKDT<PoEneo1!H2#1bzKXv?Dt^`
z5Jd`ExXwaR3xzFQBjs9Q5#e8Yn{l1+dJ8v5EOu2DLlw8+nDOO#oWK8Rp|oXx7rTsw
z$`-0vC~Kjdg&VCa?=Vzgt>MM_EilXeOD}F^l_Zi^wNTB%lQ9g8p}K_{7IHD$pr(ad
z7GAgThK1S|>R1R_2+OOkg?1L&Tc~HDzJ&%B8d_*-p_zq77H+a|tA*P*6c%n#b4-s1
z+v3|A4!PYzV+&2#g!%8b{MzOgT3Bdf;SLKe)m$qJt<^^wUv1A&PO+`2rP9H|eHQMw
z(9uFC3!N?8X`!oydt`H$g)Uba)BWzNGGy^y3*C$X2Z332xA1_4JPR%h52~t{h29o=
zSm<di=}2R?{*Zb^FCHwqEqG)Tu;8`e6Zac0$HwVJ(1?r^u@F`96$_Syn1v@eK^Ec`
z5*GScc-TVHLP~>^wU9P*nlV9~d>ATc^64w%{uUmw&`+E;OyE%q11vmd;c<ynsPk~L
za*6{jJZ0f|3qvgovhcKG4z}=&g=Z~1r=l}f`R&q?$`DgE%))RBFIafd!Uzi^)z&DJ
z_SJ2@WZ`Aw<z&K8G#G7RjCwcL!UPMiS{SDytHzrdoG4|og()JFj6T&^zNW}dbHq0-
zOyg-7!?iKIWnsF7T^4p*m|<b2h2<7LVxAUeS(s;GzJ<4y_InoIxA2aI*%szVar*wQ
zT5+<SEBynZGbYYRerREVg~b+@D7S^mXOXz$NaLj{F1sqS<NL9NPb{pru))F#3o9+G
zv9Q*{Dhr=lSZ(1mxzIR&F7lgRXW?@TUs(83!SfCB3B5L2*koa=g>ACgY+;K?eh?ay
zZ?~|+!cJ3_U(4~_V_~m_Uo8A;VV{Nl7QVCay@dl74qEuy!Z*tBkcF?z6ti6?VJ8lo
z_}28|u!SQQj#>Cg#z!suVBtsA(wJUEXDaFSvxVapPMEBmR2}@y!tWN&Tex81q=i4Y
ze_A+W;gp5b7XDN~S~_Vs`7rF?7S3Au$HF<qbPSwE*{+lAzZNcXhmWB^4F6fUB+JVt
zf5+GfNcVy<6pEp6%+A@V%8ywjhU;Qz5kt!uipFq#3{_&N8bh%dZit~=3^&G5Jcbf6
zl#Zc{Hs_L5_!lrj#&Pn=CuL(-2B&-s6=J9)7ssaJRh;&fO@wOP{9|Yo!%Z>Nh@oZ-
z^<t>cI5E_Yp-v2S6_Y{Ou9LZgEH+ROl7{LXZJgug7;cH7NeoS6xHX2`Vz@nq#)?B@
z9*!9Y#0k|*xiuHE))86TDu&iE^o*fb3~ge#BZe+9+#N&P7}~|qF@{btv^QZpm^|~7
z>>R_LG2A8H5%V+b8pAy?+#f@C-v7tYO&z(<B;c4inLHrz!5Dg&TBi#PNVDECJQPDH
zhHwmdF}Pyz#^8&=ZL;#1adzze8mK@FL6a?`Ipe@+kr<*eBw|R$V8sxNAue|su$JgF
zO_GWs9YZFDtXWr1woWUKaUUi8u&}SNpN#t}<|8pY8pD7X9#bZa`M7GG2v3->)OkD=
z!}E$TNII3LMV^V_S))7`!(j0tLMMlz@){Py@EAtKFfxW$R69z#(-!fC7+#FwB{Nem
ztJWEr(c)ub7^}3$#V}q9<I~ZJFfnG|cfA?Iv=}DEFqv)D!IT(Yi{bScrpD~=+kVEs
z@40-LZ|*JO7ce<ZdjFqq0lgK&bS@G;ksiYg#hD$$oET<`|4%qe__pvJA)DhrHM|?c
zdolDagk@}(pBnT1e^WbG<OAV6;rtjrG_?z2SZMg77#52!5iT|QVPJU-AI0!-44=fX
zNBW8wR*GziVU@958^foDua4m}!`F!9@fW9K_&kO$ROE=Q7x_}iPe3-rurX$TO2STU
zirF7UZB`Xu)KJ+fzD>AYxI@UQog%x0yM^2M7XYSqpU8d=zEKW}9E#chctUrM`PVUg
zqroTtR^+=FzBkI@82-85o|+$G_%VhB2`o(DSPVbKfH(@o@pBBvWA+D&zr}DOhF@a%
zRcm8&LHnOa2DS!24%@2#AoyKoCu8^{hEwA7`YVRh;*AUAPi|0!?NDbp6cW!0{}cWb
z!#NQeoENze!@n_H<X%+g{~wo(&1I3!ZBQ_dLUGJUfGHJ@<C-|eBrrCCYvU*q$Hh4Q
zi{rXDipJ3^j^1%xA4jn`O2<(qZohoEL0BS=;v!UDf&JD{Nfk>8r${LqM}s&T#!)Vg
z8{@W3`S_L3Z7al4F^)=cRF+aNjw*3fjiXi^wd1H3w?8<p9=Ep_dNF>DIBF{LFM2&f
zh3(dnS=~6kQgc-3RbOWGB5xGOO>wk|<Bm9Pj^h@!)hv!%Wz$$luiN6d-Eb#z6BV19
zY@5f?B94|4TMJtW9b-1cAZ_Dl7f1Iv9*CoT935nEcN`r>XmDp7oeb}+$P{_pC9#Y8
z!eZAr?vZkD9QSL`x~X`d&}oZiBs|zn@(1PHBaWW3cWfStBQK73;+P$WD-L%YgW`BP
z4v%cCIAU>l#TmpGhhIDpM=*|%+KR*xRi0tfH2X_q9wc#z{o?2!M?yRqM=FlA;$-5;
znm*>F^oiqPqcB2W(_g1AkH}`A;yfD10M$Mg#}jgST(wT?Ps)Z~&fq^~;ye?_vvG`z
zV|*OX#W7g=%Q7Ak$EY}7h~xP<hDsS0$M85t$cD*`6mbGN`MfBzmrT3PXxoiSA1xds
z94llH+DwS!)i|cc@md@crB4ykaZ((U#jkGV^*G*86SLxYQ?)aN)8cq5j_Iarj6B1{
zaVGbFDw4l#2%DG_$GdTCj$=z4@5S+c9IN8^G>*A(d=SU7IF`pTPt7?&=Ew1&+!w^L
zIF2Q8EL80xiOy&*y($OC>m${&xfOAIEdGg*wHyTMD~<c=I6hOrFXLEa+NI6fIM&7S
zx$&aQ7vjzs64%GELCVHBHfaGkO%u1qu`P}t;`mVkx5u$RjstP*P;qA*yW-d##~yj@
zGwW@yX^Wk5LXjMd<FNEY+(6>^S`oe#ej}ZU(d;|%?~OwDBXJy6WG7)K;ITM<jpH|&
z{lu$49LM80p=dPV@r$Y$kYRt9`{_9TjN_#AKjJuLvUQUDD~>a9Trlnatx*5S=Bz}<
zJSTGA6d9Svzh+fmk_(e;lECFSkU)V13MOznkq`eTP&k3|2~<en8gBjxlup=r7D?Fi
zSS*1X61Yy5MTK;^K5^yQzv5C#CQwSGgwbi^be0jw%c!=ju$=HlAv;)6ZB<R6S^||M
zRyI{tR7Lmd3Dl5SFM*nBqK=BSgte6?%@~c%)iqvJ>dT-(0u5!;D1n<2xLKT*w<d6l
zxZ_CWHWisUeH+V{RZSCUmO%3aS|spv0?#DSGJ#eJBoau{K7lp~bWh-c1nyANcP4OG
z0&Np$mq7ajIwa89wAfL}cM`HW9*ocC9Nr~?dlI-efxFdoSD}*(4Z6weK9k}7Dmt|f
zCeR~+U;?28dM3~-0apTUx%ZZRUIGtY70nqdPXb=m1`_b8)^GB3Qetk-$b?lJO~4X~
zm>if@?5e)RO-d=5J(|D(k#qu?1hNU_<k&ZXehKtR;9=P_8OC9Y{blUr_K0bM#mB^-
zQtjgjJfY%~8tQ=(ok4JN9wdcnKbydF;xEa5u<VD64@uy8RSgxg^<mPT2qO|0DSecw
zeIbDt#hr$j(#tBolECPzbiZ!nf8bBRB``h#-qKG<;MD{sioYS8BxKcOktxEd3A`rq
zx~cs{f9?Hd0@IB0mdNx3_(OtppP9h_5}1|1+X=j%z}y7hNnmyYa}szrfq8r=x|IFN
z^7QhUUdTR})q4s1wv#_E^8pPKn4iFh3EO5vNn9v|vieD%3$<}yDeSF;MF}iUU{VH?
zGgy+q(gdcbFe8O!2`o<_kVG(vj}rJefyzl#N#c_PRwVFu0%sFgnZT+9zDwZy1U^k*
zbppE+*rO5tEP*c*Sf9We75Ps1+630|+|e5NJYm0o{)MV|!@ogfn{cCWlW=naTSQLr
z{$Hd~p)2=?+Y{K4z|I7mr$=@fGfwed@k2ru_a(4j{D81(0US)&|FCnsuzfOqmB81=
z@*9zF6WG<zepcad0!NhRFPwtQmyZhT-hm$y_>uSjDxMJjB>Y);TuA%#dhDFN`&B`H
zOW=2rlL`DK@`o%>iJum7O#V!Oowe`(IpbCE8y^DU^FIlkOQ2X1HzaXBfeYNjxtS;J
z=cf2@$iE3(OyEB)o68CNL-tE%EsX<^wEI#(STJdKnZ=R?P&jEfbdB&@VUZ-R6JhY8
z#`1b8>`w6{N+eM(i5ru4N+pG5li-I_rNm1M%Ot@e;<}{`<Cjm`GtL$(BvG+|{ko>2
zGNDpQgqc)LqFNHYlXxhJ>Pgf{;+7<CO`@iJ8wzU)YYXcL>k8{7Q9o&a<k27rrpmUu
z=+zTRBNcCAtq7IR+u^n(ZcpNVDI?mTaT2ZA(<GWC?cA7l(<GXyBh8ccrGZC_BwDJL
zYlb7!M!xNmXwUJN4I{Tr+K+ybbV#CO5?zwGJBd!Ryi?ISi!(RcFy>v#nd8${dN<)c
zN!**f@|u(@kTZ4PRbJi2Uu1+N9#qU8LVgO<lg;t>-;x+r-X01zk*Dc%C*hJ8U&2%L
zB;i%NKA~T@xsg3ztPLd*PNH}UB~pka5lv!I5{r|tl87ZSDT&ER#FI!Q@q7|PlSn3!
zQY()qkrwGE%p{Rbf*;>A|6CG%BtA@I{TyOnO*)6MRvq+D;t|zyvwc)~(q%vrkBPU?
z)1*%%@njMMlXyy&gN1{H&nE4c<WDE@jEY~vUgwPPoU^XPha^Fry&IOq@Fd1_nsf;s
zk;IEhyp+U9`O<4t5-%9eZ<@TUnWa9OE=G5@nlVX?<xZ$aIL0OI=V};#g0XouiHS*j
z{nM9CPf22G68}?=UK36izAofScq557llJM%Ak&g~OQ#$8f~uGy8}gYVocdWwyq&~5
zD!!Y<dr8a|pJNPY{C*O1lUOL_1L1t0q#A^II!8EYH2W}#1!{})!j(^jOKwRLOOyCE
ziSLqFmc;TTHYKr{`@fdTXGyF{;$vO{R9un7Dv_1y`{tVVba457Dsi=fQ(3EdUz^0b
zBtBQwdLb>p;Or<va`tXR5*t<3rJlWvsc=HKB(XDzT}f=!v~JV9Y*+9dTK}{;(Ac)z
zoy0+n<Q`d4*_*^Z`f4-ZpTq&R#jT9z9cvFI@l_IE%Xmd0e4}%m3G-6&eG-S0_$!Gs
zNgPSys2ch`i62CMOyXGb$|uM_NjWa$j`y<&KmI<E#4qCSYg_nLP5-8}nFcLS3jYwE
zO5(K0ZH4e>68tqb8vLEa*(8ucffWAX36->;Hsnn4IG@BNWqTosf0MYF#PP!RPn!QH
zagsKfoegnW#e<sqf+>4QuM-v$7Ea+Bp6q4qwaVk#6pEzmcIn9Rp>fd^u9qcwF_9Zm
z_M38C*d<dam4YV)ZwjSTD3d~~6k4ZHHidF2+>)}-h#ONVpF({(a?C5FP(5W|Mk}UJ
zDTT_?tE5mh1r9!^qncXhUrjMS&Dc<l6l%()Rtj}fcHe8KP$y--^TP~3haIg{Vbn|6
zedoKWEH+4?p<Eg<AO8PKN^3G@+q0H$<ld^>ZcE{Ik;W-BOQE@Vla&3uQ&Xm-Q=46A
zA-$#Wp~ChK#<kQ&#jYvblfoS-v`wL13hmWgmlQgr&@p9qhkIJ5l<mSeccsudg*)ZQ
z2pnOa`2X=E`=+>Cj$f9rv%NQkZc4Q`heCvDKaj%x;@vrbCGCzlXV!x$^pG!=o+&$K
zFAWik56M2yL~y0xR!Xc&@@=0K{3(n`VPpz{6oM%XPGM1Lgi;8nFd&7;xc{dRO`$J4
z$R|Hjh$&Q-<E$>EQ}$mNCsIgCPo?a8Fm{<;V-vg|$Z+LoPvEweOQBB+KQytoxQDqU
z^iKr+ln-6{i#(z@kD4SOSHCzQgHm`Rg(umZ=J6>Zo92S#69^nw+B~h8&!q6Ia(hll
zojV@e8j`~EDGZg(FyV0Fu0r;{O@mP>ypRI7n%9Uayd?KYDZHG*D=Ac|fLBu(&7SH}
zhjAifQW&dLc?n>D`NNpwx&C<xNZHd$GEw8kbBe<<Spk{qloY0lbCh_oem#XZ)Xg{9
z5Wp+NG!+@)t<;t0g=TUkr?4xH-D%89;cXhE(I$;|Qkb2>;S`RfFeim~Q`nxujuhTY
z;r$fWr?4S~xhZ^*!fM5wm%@CJ<-!kBSdhX(@u;3-S(L((6qcs2SQ+xRll@wzG?+Py
zJTI6SNA;r=K2G5i`L0M|Rm%PgQR*wXV9MGv@~P=BS3djoSqf`-TFHK$s=lO)ruz$t
z&P>txi-Opg!lo3q$;`P-Z#F0678!3%*{`6vMYAE!?@kU*3WsFB+q8Qyg+1boyf=k?
zDePDAKnllT?{6G`y7S-;L;Na*uVwI!@LS<`Le_q-RC%f%<r?OyPNP^FKQa_|!W1r~
z@KXvur*JZbKT<fJ!U=6_yv_SXgbVdIkzcjBl_`YZRlG}=gHz&vrEn&N)7rJz;-A_y
zxE}sa;jDJHa~x;ANc=~|L;U>>twzoW&!B%(xRk=>6fT-`>OT>GX&`N%l{~HyDUe3N
zw7upF8NG1Yo;zM{u1%wes;(0jP2)LTs%U(KzyF^`@iZEy(I|})X_QQ(QW}-hD3wO(
zv^}Kdgj^?OM9QYG3^h0N8>P^uJlzYSLK+p*_FphCE6!k*G^(aiS2opzHHFpF_Bmc7
zjn3`u7eRFAQ7etw=_{ArI%#`}QmiNY`e}PA8;DcnX2^@hO=;XNo&4rBZeixSdfqB>
zoA5NyIE^N0G)<#f8m%NY7q*mduM}FO!PlW2D7y2a!_SO(O}`_JwrRYS#>;86OQU@n
zu{7dobV#FP8a>nKl}0D#pT<3D`#N<e2cL^g*Q~q5yQJ+<cXMp3qpNJ3FGSy)MmH7j
zli7pf_ovZaW5Q4mq%pIjeIX|Ak-qXZ>fV|-R~qg#9!lH$6*r<h_DC-`n7k(qzXr|A
z&E)cB_Q;pEFHhXW0%-)(2&umj)rQmd&n(l7pIZ^5X;{+9KkJDE<EPO-jYrgIDvg|c
zxmwa%S{Y$hIA0reA9C4nn);^EPYaJ(@nn27jR9#4Q*NBo$I^HzjX`NVZj>iPo=jt)
z2=`S^@zbXE`81wM<5{j)DT6g!jKlRaL<9IwYkTB}s+P-%RXm2LF(QqTX^c`<RElW9
zzaX<0CGzV0N*bfnSeC}}G{&ScHjO!Hyqm_jG{&bfJ&hS@Oi+t#?u|5FO=DsjlhXEQ
zyRWHrlF4aIkwQMzh_8#h+0oAJP0j2yo(l!+W&c*%{=afAwwY;rubU<OpO8gn^)@d7
zY0TE(Q{lH)h&A}Oj}*?r0-h$~bA=yp@#tbVFOB&c`44rb(2^Zrs4nwDzbK8xY5R)5
zL`bq!WH6un<T;zhCY}gse3HhBG}flEE{&BMsMQ()&g`l*J~gwPZH>>QbCs?UaXzs7
zoW6yyF^w;j$(L!YH|N&|Wy0HUhGK5~Pm?XmbEjf*K(^|{+$P*E+>yrM_V!qDE%DN@
zCyl*4oik{f!M-&1r%@n-f*Bl0<6s)!rSU!I0yvb$S89uc&kGIDk+0MEM#{Ho@ZeV$
zS#>y#BWavY<4>h}G>u=B$q&2)=yW)yN%=XApUl}oFV4kr=_iD|==`cwe^Xy*@Ov63
zHT!=EPYL+|0IUAuuA;{Y&ZlukZT+3b*);w!Bgqs0oH$Pb@(XGFtKb(U{wF@DJub<Y
zBY#;sGWHhAeZEizg)^v;LCp-V$>7=y%4Kk4#vbq@85EP*bs789>Y^MszWJZA{}p!@
z|J^K&8!{-KK?&I~T4|Az!cs!#Y3(u@lvR<AG~?Y``3x#&P(`g&$k=POVg{8m_CusR
zSgfkH9Q$gSD`#kR5uUKzY-?puKZ6DeTU&aa4C-d=YZ;rUC;hngnTBfR<_sE%+$3c0
z_|6aU78P&J;5MV*F48yyzC%KrW*Ickz>|SDgBBUI%%DRC9W!X9Cfa4}Ew{Be+ifFq
zhp?@XIkcCJvy*qqpmPSi8R(J0o$R>Ux}Qqs%60i(k-LRmGq}g-9QkgB-)HphbkErP
z!-I-rpALE}qh|)aGWLegjgeySjD0#hB+SdeB|^oW0T%{|F9UxD12T9lgFpts3{n}S
zHJG6cA{j)*!$N-Y&Ovq_fU&qRB*rsHh$Mx)iaC!iXEMlU&_833WG-W0F?sO(>LdQJ
zX1TAhpOC*l&z^DtJd(kqQuy~wR36XZi40!K;N=XS%wS*!Bh}@nghMn4gEDwJV{cZ^
zWbmAP$)A<7t)s0E7H72QRXa3e-*pcYCmEi>2yq&)$k7|6F?=C|7p0%q&ism6<jNVJ
z!Dz$BWH45IoUpFW+zA=Hs^Ua-pDy{UZb}AgR5dk&*D`oLgEunxAcJ{4xum}>r2RCJ
zw}jI(m?1LL)c#LomhfJ^#(zhAb_R1q-W9$lWVH81<_h^PE0y`;ON1W^7YG+-ut;RF
zkd}OXv{Zaq2Fo+}$mlCXJ{Eo=bl%@sDZVO$PemAEbq1e_GZc$!Gg!xw$>56&_DlaV
zgY_Bg$Y7_68-!ak*qFhl3^uDs$1Ng!l|k;{whXpAqE2e+yE52g?054_Y;7CwHOf8_
zM?4^YFoQ!PUkSe!(&d{Bz7^;7m&L;w9N{+A2WR@=Xa+xU$>s1&4nJmaj5|ygH)ZjY
z&i6`Ld&&Kr!SM`EWbjJ{*JV*Oi(gfHo);i~`8Q*K1jF<9_Y6*E@Q0T1DdFE4oEBm2
zpKMY5j8S;GJS+Z>@SJdSO?xZ2pqT$=a501bGPuO;J&S9yxXdORpg<M{vq0AVzW{y(
zj7yy&5As41r}AwdkxK<oBx~!m{8R6KJXzTO&4lZ-D3-PV)oX@!+8eScp1pE6UP7c~
z7NtZ=3(J_=vLfZOxKX6Mu!69n@Qeah&Z0^dRkQYf*dU9BSyU5evAReNVa+UR8NGHE
zb;Ro$rCt{G#S2%l<M1YmTUMjq_O~o=&f23C&mob+Em_=}#cf&Ko<%eVD~HBeG|6If
z7F)7tnnklLUddu~7R|G0kww2O`e)HHi&k0Olf}JRw9eZ5XZtL8OUb>o4TqQizL7;+
z5i0FOctg@bgvoTwqEi-~86gAS3E!E;U0HO=+MKmrv$$KCvzDQ#khmM8TNXXC=*fY~
z+Ut<V{aJfc?arc<2Zhc>tydPkvj}GqQD+~@!mHNvvT$jr-C1}<oGUCZQY1bp{wx9_
zL18FsS2<=xrWDO0l|?!WD~nhbahW9*p9YDn{hE%KLdN8gQ7wyo6elaQT-L6l_^_$%
zE1ma6jQ>a$1G9K4i$}8<KrjBO5nlqZ3%m*lpO7(&PpU{49)q%YQTo$aJd?$<W;BLn
z@tpYJEQW|YpS7>-96*lMP{W63F(QkRDvnYd)-o*3UNAN<W$pWrmxa6uVeObK#%8f1
zi<Mc7%VNCZ&(C5)7O!S8EsM9Zn5byH08J9f)2-d)ET&{JHH+7>c%6MzRsI#~jVzo?
zm4nl>n32W%vSB_m)yg}<{|RSh@wSN5ui4^rWdCj!?`fSdTc<~JrGFrtC!C-+sXokN
zK^6<8u$84*EK(eHd2tp?q?5Dbyf`k)V!4!$vi4sBeVoN7Dw6YHTdPzgS<7>T_w8A%
zmhzd3Ys8)Rb7-@U8D`O|EWXIv=joSOtQXlJvrWQ{N{06yd<j6Ctyyg2W}Cy!Ic(2j
z2luob3goaei(Oe9<0hQNiFVkX#kW~}m&Kke_A1W4EDmIGP?NadOeOnuD2s1oK>n4;
z*Q#X@9u&Wq=zPoRu=tTIj`HN?BcLks8&a(OQ3}b=S^JMB&t-9*tDVWP$jv`%-!7iX
z;<qe*7eAG?U%7J-sGk)7Lpnt&r^Wxw;x9GfSpJ>GS#CI4`%P~;I&UDbio<e&r@Y4h
zUtN8;>MmySUlx~CylmDLR~oAd=1?eyYB@UyJ6Je}>vJfUv)^F3CWmXK7ZF}3kv2th
zS4QK8oV^T6=TIhx;yHVKO31RLu#}KnB6r$Z{QK0L{d%E74&|hi-zZW(XTM5f>lJgT
zB+e=pE9X!phpIX7jRh8+S5nn;sFAZb+nPE1<gKGdYvoW|p=ibtpk7zC^>V16LxUU|
zs@O>AoE@|wxh02NbLb}D+l0+?Xpys5@9io!&Y_7&(;S-RF#qyp2iZ`|99rejPPLq)
z);W73oT+J(!yVGw3TfP?J=*8cA%~7RbmE}p>}lHB!tNLEFgxe$yYxGAxGRS)a$yzk
zGl^YQr13pD+-o=&|9v^!pF?-{C<l-92ZcR^{5+bGd*;wf#ojsOi9Do+7@3DliaTfX
zU^zPhM)0!lIrww-QxJh1f;oh8pw5FzIEVi2ZNg$ioW)qq{*Z;cJ%428O+EdRq;U>?
zbN13r=a9)EmqVW%MisJO!)9}!Sw+1Bcv$1WM^i@V8pqANU(Vhr`U^=O5qVTNAcx09
z9yhg5h&(AAD10i1L8g|M`)6}_E{ExTFryC!=P)FPa34ha;Q1Vea&Y?Cm)c=D49}rX
zAJpxG5jl*^;Si^i+2-&<4oh=bmcxrVyp+ScIlPy{%Q?J~!?YaU%3*X4V{(|Hkz}@G
zS*2HA<D`twVL}eCiceHloD{yvK+8!vOg3Irs87w|H7T!amA)bVrqJ23X)`^CcXF7W
z!wl&&h5yqy&k}!I=(NHeX^x6aiF`sqyr08duHhU$%;5u7%@gtydAjhR<pL97A^WAo
zs4vQ4vC)@^uxfb@ALXzmhpjn$oWmzMtjS@m@mi6?%Kt~zm%wi^{okMVl=gk0l$2<Z
zkXE!vLM2jJD^btBFY`RlOlcQ|LWLAcQFfw`wC|#Q{S_rGvhVtzIrF)F{a>$no!7bN
zzVG|)cV_O)GtWpY8;KiLWjgs-^<wZ7&S*I~SFaTct{I8XMOF$|30JG#STL`IYbCB5
ziS_cfR9EAhxcDo$b0oH?3$~8L7b4uo+-5wm*}qhBy823FyKsjo^DfhUtli#`*vEy@
zhmt<*m-AyI@$E<)5I?Adhm5!X8;QdsafH|ZQoi9LMq`!PyME(R!`$ii_(+@{iSI|^
zJLScaoKTXJD&#3~n$h^oNc=n!zsT$d#r`-FKgpnWIkz?VAmCR8|55C3Bk{X}e~iSR
zQvMo=zopO{8_;u0{;$NdLikY3hvGhW+<FH+m-3;s4>f$K=|dSG%KA`+HeB|7u9HeW
zRQ92ql5kv=_qn6%d><;vhP<NBy&|POC!m)vQ&m;kYD&eZ>I#z7@}ag54Sl%ChdMsD
z;&p{g%T!#Y>v=&RE|C8VeXiI*c&<i`d__-YnVe!1pL?RY(dTa8)#3Y}J~Wk+W<Ff%
zLvtT4W6+0deYjjYQ(fgl3m;ng&`Qdc!q&nogl&YhWWk7S|C8g@%;-O{?G<&s&;4{>
z2k9Ms=p@qFhwDVT2zlu{pq9IwdN)=#NbKrEHy^tD&_i`(Uc3b((&h*s1p9E45AH^{
zkmP2O-ZVDKts=Jx`*>W>^7{F3yU)Ge?k~JUc&85oMDFt8ZV?&`^kI<UgMIkEx|`}A
zDIUMyhX;Ik(&v6}XNV6&eeMnHa36;G+*cI%qml=;wBE+mmGAxXEWokEkAJeS`4?b5
zjP${$R!aDgR5ksodq5cUAtW&@j0mH`m@qD6M{p#tWl~(veHf**X<^2PtZXb{PM8-K
zgtqXUhtWzkN%#oQ0*W0g948zvoFJSiJeT%SA0|tAO!&BPig2p%3882Il(Lv6oGyG?
z_>Ayb;S3?`HB)4k56>Cpd7t|*lu<AGFvo{?h`h4$;U%AYMZ|&hvJbEL@Rkp6`%tkl
z=J_yR?Yu;LS+B|u8*PCP3soxe*ElB6o_*biMN$?E-w?jZ8CM+3dEVFg{Vq0j3HJ%z
zyFR?<!}~sbz<&4PBcHp8@l1E{t+^$f;L2;M4-+_ORl;RH_rDrH_TdwbMjw`QL}@O6
z=EDjf4*GD2D+a6P!)710DC<=|td<QgPPj^}5nt=WIv>{iu)&8-QZ@={;F%FULS?HD
z+kM#K!xuhm^WjTb@`CCsLl#$eudjH}c&87$r0@1&pU55`_8Lq2<kiuB*23rd=i#Md
z!vFK(h!0=O^03d<8T*Zb-}>BCM}0V^ROF0elH-c~&W95|ob=(852vLt%Jb}5@|1DL
zhacpVZoM_Xw)c3{hhKSO3ZPT~zxnXH4`=;A0Dq`|oB466-yI}>`tX+zfBW!{5C8g5
zOCt5N92?^BqnJo>VM#wqctQQwZ7Ffumli1_EbGU4BIQhMd6Dyl6@*;#D~VJVRuNVe
z(pxo=>VDKPN=*?ytE%ls9Y5+S*vOB@BK3sz{kTBnLLvP$5NYVgMIzq+^Ij}|iLi-~
zg`sg%aT0EfH}~T*zuOUi``s^hUG7JFKRSrF5VrKAl^?DBxWe!5Ht@LCk2d003fl^=
z64Jxfeq3XCJ3l5?E=o12GCKOv$&cNB?D3<sA6@(y;m1fnuJhx1KL#+B-`z60!H=6%
zq^^E+WAQkH{O)c~Pd|DnNaaQuc#kX@)yt2Y{pc;RpC4n(;}&t&>sCK*^P`VEFvz2?
za-oykjZJ?)?lAmLKX`jWvw?mL@?)qU!~7WR$K8HB;KvX@?(xIhuOQy5RQCz*7kW|N
z?g5d<gMJM6;~_sD_Parzg?Z47{G74R55FG^{8;Emz>lCGPx&#;kB}c>KOXmEikwG;
zqx^{a5%VMNN5T*9QEAeTlpi@i@_wZK?sHWhSwAx3tPagACHHDqknTuftgTvmsc10T
zk4F?W#*Yc?MDel8Yn&2}7t(T)$Ya7s{h0h8Kg^K^^hy6yrBiuAmK2{fmec)s+K-va
z;u&M+mE>6&&rrUepILr9=g0GYyx_-dKjz7RZeR4{B|l!4lQ|OS3cbqG;1xyD3Hf{z
z^{OeuYks`$$9sOf@5drP7R&fu;Tv8;Ki(AKE$v%=ye-btjdzF3J5bh<H@qMCvBZzH
zeysE3Lq9(9W2G#YvOW3W$&clJEc4@IiJwShLLQ9e@tGf=D{6(%GxKnjl+{97t}#y5
z`>{ddSHg{cY!lh!$7a8KExN^ztx~*?)qEjNoxv}~z1^Gb;w;Gyk)6U_LbljmKlX`#
z@5g>W4v3%h<Dke9Kfd<kkRSi&$6+ZR@(mn1{6@-AA)AYhc1-+R;c?-2ew^U4z@LwC
z-=mz{n5U$ZoEG7R=NXY7{P@w2pG@p;ey}1x`|*pEUybfn>URbI5dP`MUm{-AKYsk{
zcV84-qE~n3^UeQ&`-Vw(^S)E@07?Yh2i$yS#|wkf0h9^g)&On`plkr=1<)qo{t0!t
z0Llm4hZ>g!a6UZ*P$z)80aOg2QUH|$s8+&#E-+S?0oUmYtx5n@1MWIdO-NEbfEwa8
zjZ!Os+J^HD=XwG6nzMPpEgo;u>oe<syOQ&`Fn|W)4UKY<NF!lm;l;ux0bCM5Q}Jd2
zcU`?yoX<_j`C2}U$C|P(mj}>7l_GB`(n{D`cm+#a-mUVL0kjRc|C)VO09UiL0c@-Y
zc6vLNyqla~8*nd%+bg>c!j3}b*eQU{;#~r`P7QT^09^wZ&+TRI|A?^Gd>M?!tZDZE
zddTOELMlB)ZW8ti;N}1>Y=qt>_7)K;eFEqka69q-0Qv=Rd%zup{p+|zWqbAy;En+9
zWPj<an=~5`aCbuP3b<?6Kq1MX00xWSZIpWgxL5o>Vd?s={R7H~PKE?9)bL>eJSaX~
z_)q{32QVUlkpbibC<Nf60eA8PNHFUF0x}B*5D^Il5Dvh5KFGZ(I*$erQxrueBqjq$
z1z<^}K{|k}IAb$`q8%+SZO-USWs8p!IsuFl86ChF5&C&V`7+^HDPCUV#U}{8QgPZo
z8o+`O7KSi6fX4!OJb)<yj1J<FAf^WJL;ybq@KXR!2Jln>8#q(~m=<v7`}_c26`3Bu
z(<09ZpB2s!(rjh`vjTWd!RG^bL1YNWKOee@lf1|Qz)fS}T;WT?mxZqg=LzYM#{za-
z0PhB{(B$%($m_yI!o>l+VPfA5;4Q=77AZXf?*;IF0LvBpK=_exiIBN`C{np5mWnJh
z`o|)l2tO4L<|)9$t`PZLxKg-ExH^C}B5Q@~gv@0<hjB5tJvRlgIe?Q!-x9#?0QLm1
z)hJ(xYzyE^qkJW@J%Ak|JB7QrT&R_9liR%#j|Q+$WWVr000#p&B+jhAAu;@L07ne}
znr&X*E!$(|T;y>~QQrn|+}L~<zzM?xvN@&TY2o+6GXeY{vapov=jQ-^2_O@6`LDeA
z58%=ung{W_Y-$HlCx|}+_%ndNq?8V#jEw&d;GY2gm3UTIOge<Gs*uHlD4}3UA+snI
z#Oo?p*&xmfqPp~Q!fM8*yvX^&3c`xQO2W!PR1u-Ksv@4lRTsNes3E0h5Vb^@9Yr2>
zgSc3{p0K{rFA%v<*dU08M!zVCM&gZyUiZ;Y69q2`qNzwTA@$9ra9I$S2Qe^+K|!<#
zqGb@b260;ut%7JRvzvpsLZoXD-9*|1ab*x~gSbk;&cdsO*9hAQuNAfzb`W+HGT%-?
z)Yqu!BIP=xUmwH`hVzcQyLeAw58;i%2Q@6|=OzVv345x=dIxcff{a~P1APqdFVZ)N
zenz=Hh)u@N9TM*hVt~k9#)gA!a1eJZ7!2Ybk%xr$8k_q>?iW4~#1N68CU#g54;nr^
zSTs)`mNLTVBZKf6?iUFJ-3<p;fk#M6IEaWy)L6!Xh#Q^|NeWZKw6L)nIU9tfU{079
z(sLmQTig+{vZI3FkYLo9AjY!3A>13nxFE&{`GaH>3t>VK6N7k-(;<jSO7%n#Pl`M$
zoE*esB99BF2&W3^mdn&rhR+CMn)r0#(?)+r<XKaanL*5w@>~$F7@OyVctL!&@I~Pq
z6FWDEm&9Kddb41jiJc$BtKticvXFhGk+3L;#X%gRuBbOy29Y;|cuVB%AU+CWX%O!y
z_^y!kdM}9g4gWx7iSR=q3$QGRkHyyn@k!8qjfBT?kxzwZo8mK(6~fPjv{@O%D#KTc
z96x(@tz4}Wt{1Wl8-mzq_$Cpy_7;(?L3|O!HWRyB<V)dK!tKHxLF^RSC8STU>GlM%
z*C_i$_6Ko5<e<<y`_TSy5Z?xIJcuL4{_7yV5kD$CCiKSGcjBjoOnXA)WDuuBywl?M
z;%9>RA&4J?_$i2grTomM2;#ROW^?^lv-H(uVT&E)zrb_x55nPZF7#T?pF#W;#NX^V
z1^<x;zU0G9d7KTpFZ_@c54l(-gt8(fge8TgLMSbgQj+sRC>O#_QpyXfg-~7O{17UL
z&{f3{Dj8lmgeu}yjp8+04FxX<p{7VJVeJs=guvyiZV2^5sHdZA9duUi)ajhZg)(js
zLc<U)5^og3l_HHpxLBk~2$zN2R=OmFrXe&7;nEOVh0r?W4#MUkTpmITanI}_UiODT
zJV$88>+LIK(<X#WPxtPFqSX^^mBm#dTphwS%B6D%T|#IV!nF#v520fSokHO7?jR3~
zl$M<RMJLyVaD50p6m>%gT|?+D&Zur7cqJicVTk*=`6IW?x@X9J22HV72sf)3y+gPy
zgg)Z82yYdxRCDzezeCthc)PHFsA%rrso((NUBZFFLBhd8w)x#6oEP_naDNC-EBHVN
zLqc#u7!|_M5Qc@2mj0kHEF3O;NcgaDgpfW*hTt>YFA@kLXp~S0ubXS9h{UKcCX5Rc
z!lW=2Dmu$#6wC^lixomnJa3dj2)5yDOxlcAaC``l7=26#W5vfAr5?`$;uD3FLU>eU
zvheW`9uuKAZ(2<WVX9G{2;oWbr;IX9WIFrKoQt0c;n@&ogfLT4bA+>u{c|GEhwy^P
zY@@#@a(_K{YRnDcC8NJA@``X?2=k5pstD)cYi!;S{)yn<2o{B~ID~Ft*U1|pyct5R
zFlvYKRtRs0@Oub<gz!!X?<(z2A-pHDE`;?W?}zY#$P(d)A$%mVG=vo*bh|8sj}8As
z<kJwAi+m=Wp^o_6*sKg;mH2Amnh-di*NS`g^tnO7V<Bt|VN(d3L)bzkgu@|hRTOOw
zhVVrQ+d}wK%FYmWh47X5cHs`8*JZoKnQD)Sw^Hp5VV{Egg$IPZP2m0VA!e##GgGGW
z_!051L-<DID9h8reF)CjZ$mg9!gtbX&kK(e;wOctjDA|=`w-3;<%bY{6u;NYjyD2a
zE<*U#jCp$dO$PM&r%6>VjK9SHW=D(sD=emtJ}ZteGV)nmVhLeMVJTs0VHqKFDI3Ol
zhO>RjhjG4w6~d@2QZbB5B3|ox!@EitRm0#tPBkG(b&(oj)D)@C-~RAfZ5VZxwxh6~
zu$i!a7#E0KC~P2Pc^ZmbBy1#X9LB{awu#6kVKg-gZ^te*ym=UxiC->kVf2<^v<jnj
z7*|NS+URXWt`xQvUKPeoT4t{?HtoW=HjMURbTCS184x>3>1^~aBG-j+y~qv1uEK4V
z-Qm<dj2>a!7)DPX5!}Qhj9y_Z596~iZVsb&7?Z+yG>luqxRuQqMo`Ib3*){p?hm6+
z7=5Mm6W%SnJ&gWg+#!Ca@UAchh@4xC28J<63X3r~jBe(d{GKrGHM(c~Ko}288DjLI
zBE!OX&?v)29uj(^Vni4t74!-H|A}Ibp)jm4a$$s}N5Y7P5fhIK*SB=rhetxeWEd%t
zv@j!NY&Hz<?mKUkQDGDew?!NwXU%AlN7!z>3lJYG948zvoFJSi?4xd-%q+rK7{+U1
zJT85PkhxC@V`>;rgz==5XM|4)rx}~+B2Nq1p3jP~Fibu(j9Fnk7sm5p%r*8eh`cDA
zE!<JdHJ%eLx_=>mN&3rSydpwnp2&RRtHK3B?lHbD@_rZ}gt17R_KQW{2;)tWw}fw-
z*muHsSNuJpS6Zf862>xP^I;et8NQVB$gEl)hw+K@Pfct&Zp(-9c^H3(@lO~l!&nu@
z-Z1usu{w-3GTSCx8^(q(Hj1wkt`EDHh|HSDrZBcjB;PEuMd%gp3vu@Bmm*&Yw+m^%
zBaEHmyNt3sj6LGsaNRF{IE*7<91uTfEDw<w?%le6t>ABAd=th|@nd0}4&!_AZ-vK&
z--U5P<fQPFkmd0*J)__cLe}C(k)MP=3u*aF7{7{pNq#r_A0mHp{TJD<>!^RjI2%U&
z2rh{5qbevCahtB9uy_RLiBKsKK}qpaMkyUZ8N<tpuusbwrM$@b!U{sKFqOnB3#$mL
zMo=w+>JijXka^V+sVS@#L2VIla5A=T1oez1r`v@QG>G6jDGejINTi*xQ3TB*xHN*s
z#{S|6nizhGNYjXWt;G{}a|N$3v6qQl9zhF{mcmvhwsquxt6v+5R|?xkaFxi_#`2m-
z(e>xGQra86Lj)bgI~k?3NS6q_$;+BvFXe^^x{7o&mfa)hA%3G#_!y#B1UE<UZUpZ|
z&^v-#BA6J#qzG<h1tSPY5Q(5q1brj$DOJA+ZjWF{1Vba}&q7MPPk3hp_ZZIuBDhO@
zpiu@zFxc?B)p{)Iy;8h8SqATq-~lP;?#_lO_^|Ln;qV9^5}`epf)R#~G%ZHmA3?zA
z!3aX)r_8z$jUX36USdobk04>}lOic$T9^@Lg_bEfb16hHTB0qa;zTe?{M<VBh=OAx
z7;9|CiHsLcFy0=GU~&X6MldIW$BgCEB99BFL@?FpPekyf;ZH>{&G6|We7}n&c}D!%
z2xf@P6wVSd_PGe27k@!G+vr?#=0@<6f^S6dve91^c_o5*BJ+*TCS4FI+T~st!D~i;
zU1X7PvC!KSelvo%jLq8-yd%!(&mz4a!3PoSj9{0<B@uic!O93eH1;2P#=>P0d~Ebj
zL_UpRxlulgV1+oB4vug-Ulqan2sTJu9l;urwZe76b1VNw1-C@7NrY)Pi*N{SHOdzv
z+amZ<<SXHJ6T3siyHwa6!662v?1^A+1pCbB-7oQg@Su=+dBgs21ji!yR^k!i*AaXp
za#ZNem*Ww9r{EvL6T<I>CxxdXI4wfYyd*vo!4C@l7{R&m`BMZxNAQdEUxmL#;C0sT
zCT+9w_*48Z;onB*h0|Fs{!#RZ;l>z>Mct;Z7De?aii?*JQY;xoDe=-qDHBCm@$-yQ
zPNaMk=ZjP@dc`Oz8D2SxD&kd*!Y#)dQPhm$&L{>%Q7ektin=w5I#JY(qIDEkNU0~h
zR9HWX3q)A93q=}4(a<Oti8P9$vB<?nZz6JuuxS*{M1C#f*1Ea)WkLoo7ikeiOQW=k
zq9dPa^0RMJ+C_0~6jzG36<%d5ua4pxaqp72z0tdibP#roqLWBx6Wb+<>%^}Y-eB~u
zBHe_?_(L$G-zd^kcvBR;jDE97?<j5&@oL8!-KJolDEb=9ej>L=(O=|_DBjXdD2?xm
zVqg?MMe%bKgQ6H5MJ|eb6n95)PZWVDf>GQX#eGo>i{e2gzdwoxq8K7RypG$XLs<s?
zBDguc;P5COio!1g#y%Xyh$u!z!BaU8A03*l62@|a@j+cthoT5akuj+vQN*K2L|vcJ
zD0mwcQ`9#8>??|tcv{FCWIEiZQ--%6l8wSrly`Suh{BHIa1=+PaH1F$#iA${M=?5z
zN1~V(#q=n~L@_ps$D^1M#keTOM=>diN28b^KP=}&m4q2_x!}4z+31gnu#jHerz%LB
zC!_8?$P=6+rQ9d%^zfAN@N^W<$ZTE|&qgsLin&p|6va%5v!Zy8eNo(faL-gT%i;Mb
zR<>~4`GqKENAY45#dzf}q)1MimzDMvAr}Ga-c!i=QM?+(f+!Y7@mdtG%Ya2ax5HM|
zY!1H>#hX!Vh+-p$M-*>Iu`G&@W&chTA4IVvig%-UFN*g$NYsN~7UUmB@sTW-s*c+#
zyS>am<zz0*>ys!xWfh`W6~*!>K8s>S6ranUH_<$<Ebs0}vwsiOcI{V3u_lVOQLN*z
zsqNN<s~ml<kGcml<(m=|`CMRA6q}>?GK#OF*dm8t2x+rb#x&!xO(H#S7da5c!6<e_
zu~Wfa(V~0#-BIj`Vs8}tr0+MWn2=7qeHfBM)D^{X%YI?`S+=jGd?)-ycr=P*QG6?Y
zF70szy+!+k_{k_viJTUGFFYgsA&MW>p3KxM!!J?%8b!4js>kqK6u(DtHVVY>hwT4~
z;_oQ_6!&ucN1Vz3<>b{YBj?Z}7K@=o%q7KzBs3@~UMhytB4vaXVkjGPr`UPIazX~n
zi<~cHb`_0YDTd18cLG&ns2T%bC+036lhlyI+QOQ`T0-Vd4|QUw8$&%Q4TSZD7YHvD
zdMj;1ai+RRq>-?33>U}HB!)|3Xd1)SF<cWvGh^8*hD*hp$8cE;m&e=(+&o&agnHOb
z-cn*IJ_wfO6*07l;Yx{D89!}}J<V8vb}?KV!}TV%y-4R6I>bPOj!N4}=;gvBU1GRS
z3OU6al%%V$o3Oi(<)Me3G29fx{1{%9*eixe4AB^Fj-hu9x5RL(^oNAE#c+>EA0hqs
z73n9uJ%;`wcbM2aV;B&_T?!5q4i*lI6}`i7w}RW+xi!64oa8={`(t=OWQfs+iVPDz
zC>$=FtU36w_=p%riqMZQ2ETZ~C_#~sFf44`8nGDSF+3i_lo%2ctr&75NnuKujv*sL
z&)L}jcGvSUJYw{Mh#iAtlu;t1V@0d?7zM`)#|g&^>2pF16U8S99~Dj(J|^@=CM~DN
z@SKz<gii{oKP56vI9>R(@EPH=!Wl8l6ruer5zp=O;xEK7+r+*oGDkR9_)-ini@YM7
zC-jmph+$z2d*g0DzQ(b~Arwa}jzuvnmRZX<-rziq;XK*A6~o(HVHEXF4DZIUJciE{
zd{6js4DXA4AY3A(^ABVANPMYLmc=kw=c7-I@~H^dz!fok9>eh%zKdaH469<;6~pcr
zR>!a=hA)l%T9HjLtTW2`7&aKbQN+8G+8o0c1-HiVg~&D`e?h~tc{X23*&f3Vk)1-u
z^38!g;)jf~S7cud`$Y~251LrlTMUO|IAWAzB45YwjZu!8y3_x+F?cU0oG`IJ#&A;n
zl<>6CzZW?Z!w*LB%KuXgKO5zj7=AUJvA>J|A^g+mf5q^34FAONuawg2*|RYqj$+~^
zg~f#>gxrc}QF)XyVi}RLLa!L*;wZ1+`Ek^Yqn3CDVMSr3I4X-&iKD7WwK%Ga(6hHI
zUL)>a(J@$CdV@F`iqwgtu1Gy&Uti>cI4(4bcOtt;!DewZ5@{^FSlC2(iLhzheS7nS
z^14(CGi@HnW#X3$TL``KFt$}3t>d^Njy7>z8AmAY-Zi(4<El9N#?dd1tK+yPj_cyM
zK8|*ATpM?<^xDVWT_7HualCh6k`8j)F^*31&{@GQ;<TZ`4RLgh<F+{Z#L-R3yT{QZ
z?w*(!%j3p4ZkBydrM-#9O4v&xUr_8V<(4>l^W}eu-WD9wdW9jmJ&yiy+!x3F%p#6E
z<!VqI1LC+#Nd^i%&l{Dm`}Caq|FXPWvG=e~c?uBcmG%R142i=Rhd+*?aSW5rv(<wl
zOv~yFkK>^@9+tvZ9U;Q1k&hH-2?HvBP<3~8<;#1YunZ!`j1CzakK<hxDG^69j#M0J
z1!u>Ri6a}w^f;c5;|o4Sh~tqs#>A0}BOga04m*w)`N20f0(XAccct7rAaaVM<G59X
zSx_7s2e+mt#4%3JxnDhA3S%e6F-gXc#@%P=)5IsU_htFGaEfrM@Co6Q!l#7Hh<={s
zM^w1&6UVc0JRipkam<KgkhaKX#W7Qs+%BUrcMqP6yE_0psIYhq`3gY=yeJ#GniI!d
z!(WQy<v3nZa30rok@<1=KH^p30^vg8YeIT>omuN%W3lYt5WXpVOZc{sPTt`t)urQm
zQr;JSAf%rqaeNrZM{z7Q%I6}>gdfN8iP1leW4ZWe!WEp1Y8Gz)u8d<<9IK7x7jdi+
zUn^WETpz~<k&SU|5n=9|L^cZ-aHosE0*iylcSsn!Esif0^;I0(MRvroON6mIMZDXz
z-Er(u(9gFow0XWSj{R{Qh~r=!hvG;ikW9EfIbZ%ymWSgw635r#4HLL1fp6kC8pp9X
zzK!GWIR1&_xMIJL<4hdi#oc%QPpJJ*#&OED|7j_6ICs>@Kg98eQvDdmPjUP#{%ah+
ziTq-w3`^36@BhS6f$!6*z<<i%FQHe?f8#hyg9IujfCP%E{O2W5T%=?Ir9?^yH}L&`
zk+MR1C?n!6EJrzX6|7qu<wed<fShKP5~xg`K)r;!OjSvsY68^~@JdxZff@<aR+5^+
zTEb#_qUScI#y}m3US9PRXrSN)%HqQRMA4X;Hj;8h0&Nm#EPinUO%k|7yoIo70?iV*
zRGg_UOQ3ne-K_9(yxizsF<K_jD&el-t)+X#xH5sZ3EZE+0|{J}z|{%#riTQskxhpL
zI*POtUMp;$0C!3sil9>hofGJuK#v5vBye2<U1h-4gKOIL3EYryUvFU0JGv?M;R<eR
z+?YVm1a6jcldxB!$czgJQ+X{`iVFoBJb{6-=_9;7f&Oawz6sD<KZ&f)9U@FPAb~p#
zUt7a<b(bt@JSc&|3EXXB?-jYn^y7UBvh}zY4H19XSPo5K7)xlz1APux)I;nM_1B05
zMke4(z@I==Q2`kT69~zF1Fiqz1R_d84=nR%HHvB)OCYXP-iS&ikWSz^DYVQaFg}3^
z31kznB<2!$#Kh(kD2UreaS|9MKH4a()EM!x!f{6T_LL?nI6Z+$2|Sv>WD`3rfyWYf
zJb@`jc}iqz0#6v_NfGZUp*QgOF8$LIpAkMQoFSYkoF!zvcxmyx_zS|>3A`vWNBD|x
zuJ9${%R*jq&l91C`692foLV1VOW^ecCR)WNS;ZD5usDG#rHWN8RqTxf-b~=5U0Avc
zZzb?{0_#7;hEMTM0`De}nT_mhyqCcH34A&Y%ctRk1ePQ);xUYT3?DLK0>2jUTLDWG
zSe8J|G-{>saRQ$t@Iewwl5Qt{n!vFHzD-~`yE}mu34ETwAr_Cbz?62Ch&T0CC$J`g
zwF#_aVG`Jtz-|qU4Z<A>Y)oKN0-F`&7~7V>7A4;*<qIJjoKasIo39esZa8z<DNaJ0
zJ>mz1Otn{JUjq9@Xh89xiDi&AI-J1QT=13Y5iK1Qc^v%@_j>%eY-%L&T>>W(IGMmH
zuEt3eOX9Tg|5pOvCvYZ#AEf*y{89K*0zYeAWxhOqk@&00h05;<{2`J2PZ6(De~bSk
z{8xC^#1>DYL=xvGQ6Y(vNw)=flun|QxYuq}$|zViiSv>umqd95y$)h5%_>T%sxGc1
zURhX0==rIp*y=*2V)B|v)Jmdu5_OVzF^M@z)J>vZ689(ZfXwPAadi^ch+mMzg-J9J
zZ<s{WB$_30k%EnqXq?2w;!T9!_Sz-l?28jMaH-)flV~n}necL93n72cOXF5av`*p*
zDGXjI(nh#N*Ai{TuS)*!ef4%y?o8s^B-$s@A&HJj+?+&j>7A13nnXA8&PjAh;<_ZR
zSMUZQb72#C_lD%%ljv#m9!cD2IBjkc?<MrwpZ2#Taa$67B;HD{GihIws=r9TByJb+
zVwvg=V@W<BiMx^*D1$*s+-uSfPU7yQd-|ZwJxQ#s;gb6l>v0B$B=J}hk0&uSiD5}R
zn8ffTB1uGL_D~XmB!YBee2z$Bq_|J$*9f5>RwpFITcfCi6=Z>9NyL*Flf>905)!jX
zSV{LJo=hUeVX5tfbP^fGdO>=~Dfmbd`6LSBb`nk!qfFn8mPkuBzSsW4wcd`C{;15x
z8=DCt6NQt6UQs8r1+=bCk@&1|Y7$Q*@uc`uLgwOa7*0!Kx|FAd&j`KWhRhJ3DV!yI
zPWZg=1>tOE=jAvziI<Y@<;p9HdRd$q@lK6XY+e%clXz88uL&8oKxAREX#fB9Bo-yH
z*u=gg@`mtD;akGD)lKy^LEcT`J&ErNz2^uYCh<`ce<tx)5=)a<mc+&+Hp$@QB-V+1
zBK%ayk}MbbOt?b$c@is4?5ZSIi?1;wWUUA*yFQ5xiX!*M^X4SBNck;^tx0^5#Bl|;
z37OYHkuQ_@$|&2D*de}CxXb9flh`A^*C_i$_9t;bWT#%cqR&H~f$*^KND^O*eB(v&
zEFf}B_$~XQoco?R(|#xAgz#h%r$kN*8T)+_XT*OH{wVxO__OdA;jcp4+k8{k@IR78
z@9qDc#6L-NPN7T6owolbffR~~pZ(9=FP=h!6dI;bLQy4C?pdHz3Z+vhBVI>XHih#<
z%B4^#g~}<ESMYoxlT=8dV#@7~0kvHZRg7LEg{tD!j8a{MeOJ>cwM1$wIn&lvu%58K
z@B-n5LK-lai&AKmLOYeYv9P)DVqp^@Yki4GQ(?0dE;ahRK5m;_mcr#yS{S{hNUIcD
zr*MUMn-tob*egYNpLmtX)xv9p-mM~iUaMgH6gs5PQM^+MYxQ0qW1E%6brR1{qe2?j
zr*K0GT~p|mLb<eCr0$AcCG3&HjVbg@;ieRv6h@`cD}|d=7@opIDfCX^mK3J)+iUG`
zE1Ql%ZfK;?CxyN#3{K(h6#AubdkS}^Fd*fA7OB7Rj+C2(K^`P`DIxhlqYsjq7kiKR
zy^3O9UaI>fGVKE?3`t?Af)5IZ32EjT)8=8OO(7|Lq=}8B;7h@uLO@E;=(J}oLdq_z
z+R;_i#KuJ8DI`Q_%-EE8I)zLM*%Yi43dTN{LSEb}43W-l6U*eIQ+OnW87a(6VN42R
z74@WWTndv?I9nCtjs1iaCNc{(0`XDllT&ysg~wBvqTmz8fC;BcA@PztrQoy_rl;_<
zJU=6aRiMqYhSPXf3eTnRZVK<E@VxYSDa=pdg%oBh;fpEEk<NrnJ~xGz6nr^_SBySK
z{Y!7Jrm!G|#VNdz!on0@OJR|0yi(D_>+<RPQAyrZ?AylATc$>geaBe7pTY+zd@7qI
z!lgpme3-&V;`Hy8VVQy-r|`-DuP;yGvlLcH{5*w~BJ{w7UcFYQu!eIdg>@+$OX1rT
z)~B!`g|AZBt_iYHxHW}MBAh;(MYagJN_=7TZ6aR^x$^8tVW;?k6m}V#y(#QAe2>;5
zI@~8^zmN&398BR5gDD(N;T!2kgpB(7KW3isQ7J6R@f5yG;qMgwN#TUVpHlcag_9|q
zO5t=0->2}S@pDGx2Q7ErqZ4}Y9R8xH--W*le-koy8vK#Mp9<3cFA<7dF#l!8DOfrU
zXq_n`EGA^y;v&qeq)|$VRMsV58S%1doG0Ryq`deZozCc?Vj7jDR1$jcT~rZgY}GWX
ziB}iaFgjmZshvihG*;%YDu=ph)Jx-r9J=OEKaC60_#=ZqGq_Op4bo_sc6V;+@S-#t
zrSVqA<&D$0IE~F|Y)PX@8keMzOe2*>(=?i;(L0S>DDwLcX<U&;n>3oIaasC*SMQgn
z(Lx3-O{rR?(OR6%NdG*pOrx`G=%;NOSEX^a46aF|eHtCoXs6g~g-k`Wj>f)|h}RLs
zF06u->*e7_);Eo=Y4_CWCG3_)_cVH>-5#eO9@KlLag$Q@65cHPb3SinFpYcCxHpYH
zY4lCwE;;WfyhF%Z+%D4J6IHc4(-@#2v!KC1V>u{|!Qyutg?ktGDeJJZzCVoz6dWS-
zr!h2*VQD;=#_%+jwt_E>hZHp;jge_QEY2+EY4@9z@(NFdB%oM|!8Ah3(W`aD<Q^4?
zr4ctuLWIRmr;$nHxip@alWZCj(wLZrl}1iVK8>*=g*0r_s!kfC*v{PiSJap^9x+k$
zd9LNhr7>Oxo-!$oN0sk0X-pP*B8?~0c+8aQagix$Ocn83^(hm}Hk>9-Z_`Dd{*T$S
z;xmLZg|mchi{XVdW~Z?}jSXqMsPcS}#*#GVq%l{)m(qAOjRoQ_r}0V}^U|1J*R9BW
ziR=Y7HCuHdXH6P!r}0`EuS;B{4rLUN#WH?F_@>aS_&aI5r{KHlTv~ei`x0Ao*-zu6
zG*+bXIStZSCjC?H|A^3@LxKhPM0qvh#lO)%GtItI${Hazv{$KYtA$=(YtvY#<P3Vl
zW}}QZN%R!r)-=B06wBcH47R25C2cZjn!#6TY)_+124yqYk;cw6&ZO}}8oSciEkEC+
zu}9?pgnQH2m&Sf^=6EoT11gNyr-xK*FVn*+z>ze*Hl_7Scr=Y;X?&Z;@ie|Se!ffN
zR2rw#IFZIlQ*!#DThFuCw)DW@k4p7-8vls=l*Z3#{F276Y5bPPUn;{q?)-3_Oyf_}
zl3rR5J)i%kaaJBmX~BfBL<Yq&MMJ%~h*zDG8F$%X!qPJH_<0$W%b;ckwK6C#gUUk2
zo}WPl@roH#$`mbP%$-qHq*s-nYU0&}HH0+q%xWumQ3iD~s4HGi*f4|o8C)QKp^&9&
zAa7n#z2uD)MQ@EoE*3U1Rcn^PrApFK*gS(PMJ^LwE~K{>A}up$CDPjHSBSL96uoEL
zR>7-;R|~HZ(nGrpt`%=@lnx@^W>lvPIxE=4#MZ6t4&xg#7?i=_47z5}EraeRwzo(R
z;f=zc!kdJ>gg2|T*$B5}a4WegetQP}Mf#`(`il1xE@y*haHse{A=3^Jxl73Mu!VWB
zG4Iaco(!JKU|I(EW^i8y<1!eZ!TlLLkU=DaXa++v7@EOIr5z?5p20&IJSgt<4qZK*
z!3ZgyXAgZD_%jGdr%fn>;Qya0Y?8!O*(QAcn?aYlZrKtUBr`~5kj@~NL0*=b3@nkX
z8O$9tz?fY@IuqKNqWe=PgHaMkXD~+oS@%aoyyA^jtXG8z89Z)0Ow3@C{6Ct(<P07&
zx@XC>Q;ae-gC`7s(#(tL%Hrt^o{>WPXET@~abX5CGnkdZ%Ne|q!E+frpTV3A<|_7u
z3}%b4oWIt_i{ebqe5t%-s>~q8dB*b94CagPsO6e1Fgk5s%iwhd7iF;63~zd-*&7+W
zX)LL{E&fgh?`H6x_~s0@WbnTD2N^68`7nc(8LZ0SqYRcxS;kS#J^u_oR`3%c{qs7L
z`f|m7CR`!>T=-i#tTvYGMb>1nR)n=%C$hK$HW-_Y8Eg_?sf*RE8GMn!u?)WD`fqIh
zFM}_63dmqP7k`QSGT14yD}&wYCNDWR;`T`2Ytk;PjQtrL$l#z9Z|C!nI9~zsUWqxJ
z!4YHsbq3#LiuNRrvJ92oCOw|PcNzRHn-dwF%($-*|B}Helj?^IP8<Hc$eB#hldm5$
z_$h;*HDKt98<l+gSAoMoX1@u&VQ_8_`7ic+7O!UUcLx73uME!0?3t`v7-Z2ri_5a$
zhF-BOif2(Gi;`KC%Hkp!lonRWqG}dp#F?tB$az_m%c8va`NE3A3d~NsptP(crLq*Z
zXEg<>*B7ZStRbwKMXfAqi`U7z-#4h6b$_8x!lRy)$~AF;3@#MXPXm#LLT1`Xq_K&;
zSfq*Y5@FLUnwi*3v+e|;lgqPck;TJVjL4#87Ok?lDT`iNw9ev+EUwL>eHLwGd{x$+
zWmn2WTPfad?bTAQ$)a7>?I{+UdaO1&WYIB;u32=GaVMEwmqq6+x`=ZJ$-9fWK8qWq
z&_Aom<lVFG`gWs47P5zk_rvp^S=_5<`Zs6MJBxl<+%EsOWYJe<w<_&zS@g-GL3y{D
z-h)eCK+;uz)<PAzCyP6c|3O&{$l|Un1}cihV0#|br67|G&br%`cW2!XIFsC~RQF|Z
zzgMa%uG<H)7?Q=%EQZN=xS}2urz@s<NQ&2DBeU>jk;@{Vg+Gfx7Ktp9$~u@uIE#pk
zLqZmYwO|&}EMgq1;ta;Kc%hbCJGK~uDGjr<>Ym9WtF#+x!BQiz04#iggDQ(BvUoBJ
zCyP;8jL%|17Ncc6MrrBl5d~T7v004E!fUtPRovd6n8hTOfxW}vqghOr@%Po;GCU?u
z@^}_g)Lc`A^uXMoQtZ>lW?B~0#l70mVM*Q-Ntt16W@a%fi|4X<-Y9cfYr|(}@uJ~#
zIDhrJ$V*aQ7QP~!XKZM&Ad7`r{GP=hS-fWSC0V>KzDT%O_=bsnQ{*k-+roFUc-O?f
zC-Qz49~gz-I`}Y)kFr>r#j-4RXR#-XkF)qBi!WvKsc>x;>#|tRDWl*D;mRyN7hxOn
zR{*QBSj}OkPg_t~qbP6MuFqn#g4`+EAhI!wO(w0^6kD>`D&-5|HsMyC+P)IsF5Ds9
zDcmLWet@<&i+x#~l(JuVSa?9l@*EU7L^KNXJ(9)O3VtK}HjASs_86BModuZoxWw<W
zIALPFw|!1!aXO3dvpAE*4_W-G*dL9}&sqE=&S#Wc>fjfnGwpBUEwumtr?}Tpe{u28
z;-4)3&7wvQHFG$d1uWz(6f6|8P~5^b7TQ_v04`ynvV|(*B`uV)P})Kn3uP^ovryi`
zd5WTC)!Ic*yUv$VQCPu34egT<D;dj4G`3L9LSqXTORR38u7!Fuwop?_En#h|$Y&kP
zeZOV6wg~E5xWGa~8F+L5LJJKP^d33!Cmt7BXe5PI_FnF7V&M`Ctu0((p{b&pTe!?Z
zGYgkm?lUhwIO7CoMJ`ut3kxkR@BwkxI<DBta+j<+XU`7P*FinYHWse5z>2rEaFvCt
zt^e)kdqb3EzScr}7G6F(Sm<b>zlA$2bh6Od!i^SsTIgcoItyJbbd%Zj7H$w>z8pV%
zG%!Fzw7Z2KY7m|#SVwP#xyeE=3w<o~wQ#eA-WF~%X>YM`tK~Kt8~+v^EyTS>`?(hS
zS-9PD-!fuGpYj^GJ?^wHz`_uDxXZ#o3-?&K*TNtRgC*W=xvk_qWTc<DTI!knJ`49-
zc)$X`#6sQ6Vs$^)GmoK4J51>Q@Q00Q;b99SEJQ8DER3|^Q*6kB-$Fn<X#H<(XL~YV
z9$^a+3-ivNJ)}0Fx44Cbg^Y!)QY9^<ETq}UI=eA<zQpJi*pfj`NQXQad!Pzz3yy_N
z7B*WLWnr|17c9)S@Q5rQwJ_Pj81b<d##tC|VS>f?WH9MJC9GAx=xugy5I$z%aSKmd
zc*epM3sWsjlZPjSPg;0N<lLz9<|fNC-2yv~gZ5b&%&;(1ggw5b17=xx&cgGYDLU(M
zOcrHV4li1mW8nh}ODxQ_@REf^78YB0*}^Lp7FbxwcC#>_Jt&9t#_YVF^6)k36kq2^
z)~MhhVUWig7T&h-j#~9inZ2bM!3$2tzH8w<3-4<ld9BL31CM-Y;UfzxEPQTZsfA@0
zKDO|Q1x_V5BTcSPEiC8AQF2y?PpiF3c^+0;SY=_og$))~TUf)gSy-ns@PR&U`pFe%
z%DEn=xY5*wKY80?VXK9|q<mpv8;OO(7QVFbm4&?=a`Ld<!cGgjWVS=-6=1i8Jqn)l
zPqNR#ehUXwk%K1I>%>C}vQ$Sbd~M;3g&!<@W8tWU@3^E`IA-Bn*&J7UdZ~!sO%|Kw
zq=i!!PRoX4{(BKtkO!~Kd13IQg`Xt;Vc};Bzli^4;a3YBhxEV><&+PpUcX!J$A>BY
zDKlP?lK*Yt9}Y7MXStH+P(BCbP%MYiIh4tvcn&3Uu35>P`*!zFS{NTrqm)Fhfs9&o
zEz0I_o)iWv*Ku=X3D3`=LJrlWSInVO4pnlfsvwsvR<m->y_Bt>Z>e$ovpj6i>c$U;
zT&)~x=g>h)9d7>T&@6{b6|5(0$fp1z7YHxRp@9f<AE{;Gq8u9K&{$$q;l(*L5xFE+
zbZh3F7l^!5<Iy~aD{^R)!(}qNJckxJw9KKEf~|8!o>^1gOnEnVS1O81yByl)a8(Xh
zOSwkqJt85tQ*&J_v3;)SeAH3FPC^=V&Y?>V*D<>~xITxU^cOI0tJXlb9J=Q)B!{6n
z^vL1H93D`ro;lnkGEmqnhrT)V6Tew4+&hO`a=2CewjBD1u;tm>>;)3~zg_kW_E+p3
zIoz3ZzlJwJc$biGBvK*Levs@33-1=*BfK|<`$X;+dg}@8>3LWV59aWG4j<$&T(N%P
zL&ArJBZRacDdH3I;dnqKm_tY;ES!`>B!{SYEQd@ES@C!d36Z3b-cmWF4QH(_amOe*
zk$et?9BgrKN%YS6qoj-$K9a*2k+C_9%VE4G#RMtLg^LyE$i!UHiuY&^lNI$?4ln2M
zN)C_bFeQhnIXof##T=f@;VJRwh0}7FAwqA{MV=Nulf$zdmb_PrxHwZH$*dfnGu->|
z!V3z{&J~^M=x0t2b8|&Y;!9@q&XXBq-w>HEd^Lv!IV==^Er-{Q4ePZ?e6i4544L-L
z9Nx;|?Ht}QmhZAb>J;5>yeE<GhOxnEyd;MYrF<m(RJc^QEQgOpJ`sBMOtL(O&!nsn
zQu&<gjFz?4IjqUy@&Z~Eur`NvGPtDRX0)F3U4(pt#_h%&Hs!E6hb=j5&EfexUdZE%
z9JX<g=P@9UFLU@RhYRy)kjM5McI5C^4u9vcGlyL{9M9pq9Cqihhq)-Dy*cd5;h?y8
zMZvuG=TJ6*0}@MXP8~AMemI9CIeeYNH#r>3;aj6K)lse$=5Cr5KdM#hL=Goe@*IAZ
zw^KQs$>E0_PUrA_&b|2Q#qU3KbSul_N7?+$5yJI3=U$z9Gnyya-*Wg}v7ClnPXEZ^
zPX)amq#q{#hYJyx`aH_!-QZan6wd<+QYn_lV%@`*$fKmhQhAgX@qQT2G0$c2ygbU~
zQ6rC<d6duN{5&e>Q6-NGc~q2frM$b^(BZl9!va*zqgo!-O<tXKO7a?k1Bu49@~D$X
z-8^dN|G$rB*UO`R9v9@@=Y}-n!8PCW+%S)e^0+RK>+@)oN8>!M&f}UqF3zJ#9xd`{
zna3r0G|i)V9+$~&vpg<U8R)^w*Q$-nO{u&KZ1zqoDOcptChv~w)}}^R=G`7?o5xi$
zC|=L4saLQrb<s{@$2>aaacv&$m6iq_q@No<Ug0}S>>}ir><xKz&7)@?H%aN1FS;V?
zo<|QUUX$LKck9j~^~&SsJZ@K1?>uf1>7!US(XA|S-W>_vslQ@v^v$DR-W^e1X}uxQ
zpCwd6CgEx5t~>_jF<r`_JO+!5&ExJo?#W|h9=<&8&Evj2hUM{~V(-smh{yv%uaHB%
zsCsUH4Hth{$lybH@Gl5?jvFC`BZ@n~{yYMCr1Qw+5zHf$M=X!HS}&YOB#)>{&g48Q
zYuxe{Cc)0-f-f`bNd@`4a*Ax9Y#vq~b{<Y1IpviXF3@13O~FgfAA;pEI*&1?gpY`@
zB7Dj~w;Qzzjmu+v9uxAIn8#yzJT99_c}y00H1GZx%Ij7p;dMLxPhm~-cruTvX7I37
zJf6y9nzCjV4APS1X_Naic|4oP3<YNjpA*jFEKqsqp95)j9xvwcLmofoF(;3?d92T4
zLmn^X@p2w-=J8e@uNa>T@|Y(+U-+uf`zF9b@z*%mL>6%c$m0!hmW_FNm*szR=Rc2k
z@>rV3GR3}|#}bkEgzpP!{{iQtp6ru<DDk7b`$tHn%H!iaKFMQc9;>8(n#X5(tjJ@z
z2Ca8eW7T*`{J9J`&FO^4Y6aKku|{NgouZq>b!Jp-%wtm?2l6<W$7b0u)mM3J5#P#F
z0GBDfE3%EJ0Ew&}A1=^rdmcOT*qO(!JoYMTxACxt&CAcRY8{)y_kZ%(uPBPVY~VaP
zq~Hn9K99qB91%a7$FV%V&f}Z^tXkR1?%u+;c^uE<yZ;OcmVv+I;$nU>k5fv1I*;!?
zpZaOf8F6+5=j>0M)Ld)}s9L};(o5(J_^bGDdHkNoA9?(l$5}4y1^kuA-+BC#$G>Kp
zaBwn59vACN8f;8XnPLSLFSr+?<XjIK%Zuug1(YhFwEUMBmMNfY0q2RA6MB8*Ehgs|
zP@#Z|1ym}aa-rz5WN`<04!z+-&(#X3r?k}zs3B6bfI1?KttC=h=v`9Q73a!azkmx0
zxX@TOETDnm)9d0Q=B}HaMkZ^wjs-N4jkhjQX{une0xlJ4ZaiF8fcMRumTU)!(E?f*
za76*v6wppen*!R3Tv;f(oc8Xvu9A4Qa1>wr6zN%TXE$?fUqA;o;|O#tpi=>z6-&LF
zNEhLC!s~@M2)hb-OWs|ihww%tGC7Z%3g}h9%?0!>;Fbc07x0h_ZY|*U0{XL%3ic7w
zzHb5j#MkNMdx!Xa1>9f2odpai;4UeH3K%RhP{^jcTZA6&F$(#;1$f_Yd_dw*;SgiV
z9hhN;KWKX7VWR{J7-9HG5nlm*5zi<62Netz5Eh9Dsk87g!{Y@c3P=`^Dj;3J;sV|%
zAX7lLfaeN$z5uI$Tmg?4Fhxo71&l9XLIH&WY$;9wkBE#Cjuv_=1M?bFz*s5d<3zms
zVh$CqR1>94D&SF($->9}W5!fd3wT-z`4b{f7VwnFG~sk1pDfVe8F7+lMP?K*(<rmd
z_<W&&*#*ok;H3gyRO}p~_iT}A%j;3d%LOcw{)%v30rN#(E#Nf~S}qV-DD<v;Ugs#%
z`H`_4y>AxqRsmZJ_@aQf3wWo1&kI;7`*(#O3EvaGU%&?iEGgha1$k!Yi_qSxyR?91
z1@}z%aRHwx_7mZ!Lgux+fOBt6uaL+FSyjO50=5{NH6j~$7a+2(fb}BV>lCdp8x`Ed
zfuz~7SwYV&i?OYMFAF$Cv4F1>wWol+BHM*K3fL*KOUP2~E})}YW1msH8NI)N15yqO
z&z1ae0pAsHqJSd>d|kjdD#^LnqXit3{kOv7LgvC9+LPjE3h;)(sRB+*`QF%YW&T0@
zM^-`W^G^!?%(H;V7*+ZA0{$qV)<o2vh(EdbbL5Z5l=1kxfPV^TG!Bi&;okzz7BFWF
z=8geucht=q<6<!z#ch<ZQPOr7Hy))F%c${VP})Wr8)a>rXXEqHSUDQyY?QZAdKAix
z!ud8T*!aoD&o(OBsAOZ3jYn-%wo%1KHyhn;RJBpf#-%oz+o*1%hK&X`8rrC7qn3?&
zHtH+8+BWKluqnJ373wPZM+vu(7l>b|5_)~Xa$aPkk&R0f)!4?xHkycg2AronNwLv5
zFPhqDX1k|Ro>@4NIn6J#ak-6aY_zk{!bVFQZERd=qm_-;Hm;B#o_To@=$(wbR4hqb
z8&}!5+IC0Cs8;Y!bNnqT-{iU0Mtd7wY+Prf0}bS)lkKh;J?a(hz4MuGXGZB+D!pBA
z;|3dDWx1t}`%XT~%zH6jC-<;%qmAJ<9<tHX#!WT`*tkoUz1R*m`q;SHMsNA&cHAvC
zZnfQgIc^&8;56)Oqo0jCY}{!VU8CM^qrW`x`Pw#(oRT%sqaCW3cfVmZ(8eHI+IYam
zU>kSaxW~r5w)@Sf-&&%B9{PA~cpt}%F4EZ4Lu?GSF^p#N%sY;gm5Lr%@GR#2aO`0l
zBW%QM#BGeU;j<C45w_vC5wH<dLaz-y|Gewu@1!Eq*-BA%O?mfm137&rY$R>uZ4_*z
zWRtd$v5WFzk7sRIHgaq(-4t;BVP$y)`QXEbV`Gesu{K88Skn@tZ9Kv<s5K4?nTvNx
zKhDN@8xxcTzbe2l2~6a8(+WvWGMSBUW37#KHXgSz#l~D4FWH!C;|ZmD-o}$Qp0e?b
zjc094voT#dM=x{XlKV6}sF-{8MQ>DQ*zU^toNQ*=m?bh)QS*f_*qCkOMd`G6v`o!W
zkPn()w(*LM_iVgxW1fxqHeR=}NIq%&s*MG*<j`Gc<2Aa{IN?xP!Ph<&^@fc%ZTx$U
zyDYzD<82%7n!I+`bpO}y9ot2(Jvo*>u(8C(3N8*dKD6<XjZZkE%VVjHWlH$5klQ9l
z`Dp@Oe()WMPi-t`!Ki4&^3f7Ghb{}b(#9$qtJz0t6E5i-%+%M|Ma{C_#s>PdaoEO2
z8=GwGu(4CQY!+^_vBkz#u1n?cg<Z6d&3BE4@%O(rzS4a0M(=jnk2`yImyO*v4%j$o
zV~>r!Hul-r&tlX<@y12l>?{MvUayu#w-1MumiPYD*_%gfd~M^njqhxHW8<ieV>Z6E
zi*}D`<K10yDIn**{Rt&M&BnBGQv4KiEa$#D;+@6L*!Y3Twc-toyGxCi5l71}Hh$$)
za*%NFn~mRXbav3i!5=pMw9(kX#SZ?m@i*6A2h|+>!w%*0?x2)|vo_$ku8IpeTZ=j1
z$4_>jb-#i_y@Z3EwcNjqDea()gYpi}cTiTwj6ILW`hI3P2e#~q6&zG_P}xBh2bE;W
z4VFrrYck*s;JK1lcTmGYeFqmfsOg}VgU#luqqc)O4(cj7+mq9wp5y*yKnZ>Rg@jHn
zba0V_MzU$(pdo85oycQIr=oLW69<<#Xz8GpgQgCe$=+-EOC4P9poN3x4la}4=j>S?
zbncxmymh{{gDdESe_ZRJje{#4v~_Tm<F2lJKFcm(35gsJSIew|#%enU*E(qLpo4=>
za!wC?JGwQ02;jKLJ4znh!MM)B^$s3%Fx<fn4!SzH%|Rar-5hjx(96NiO5Vf4jShM`
zMQ1J+lI!+Oj{A(56Oe`J%_2FtRmLn23(wUr*9U#IL)+IuKL>X^xW~cm4*JV%kb^rM
z-09#h2Lq+>=9C{t8o-kOr-bZZX2)Z&2pi{K2lt6{iN4>#0}h5N$YM+=>3+Or2%A*j
zA!)<8#&%Qkha5cYASlZb!jTSq4&JH=4vgX)?Ggh{(Fuh)(tpT7*g-^5Q3o-O8I2-F
z@j>%HCES^kbdYlJm4odL(hf2XUU#s_LDqrgV7h~+9poJ39gKA_POb_L90#MsZ6QzJ
zqa8frV2pxi%v~@u;*B{o9q(X*gU20Ak-<a<lN>zidC)6rlO1<Ge2iK1H=8>6RiCL2
zo^bG_gQpz#J3{02%9iKzKza8G!ZgkoUj6dQ-@&sE=E>m<2QwYaaWL1xEC<gyc)`JJ
z$NdNPK3X}SmsvI5N^`by@aXvzISJeCB?m7%cttk6bfJImEXF&s`5ZzH7C2bw;58Y{
zF<+SBRw17l^10z+2X8p|*uf_b-ed<k_`tyu8NV%j&%rwm-WB&=YVuxQdS41h$cG{<
z$x;U&iF0gtEA27`IeI^3bsTJTu*tz^4pul=<6y1hj_1!Eta7kge5H`95DyOKbAHx2
zSnpti$?=@dVZYhI7N%0vRv}CB1;@F$Gh+LHDc$SY9bD)foN{p5!7c~89enNJ8wYzF
z?4_B5!!q9IV84R{;yg8T;PE=`po2r~CZ4Z#wB++&=B}lz_oY~&&SLKWkF2i%zoPiR
zK9ooa(g;$5q@+qC-6EkNA&7*8bVx|--P_$4Q4tdiFu-mM6bZ2d)ISQSpn@PK@}52W
z9rX9S&$G{Y&YbzoXJTh&=g!7Gyaq?s;5&9;eFpaXHTYo-j;_Hm%_M9Y?#b}?7w6kW
zwVV|i&&AJcaC{AZ=VZPHC)VJXHTYFopA^#PDaLBM!(Atz<|V+)5ALM&CntZ7CaY-t
z{>?dm4PfES8vG+C-S|g@T7Qna0L3ilX==_Vyf|{QDq*3d<;-kst5TM;pkiB9;A5W_
z%2>F>gGOBcTPSB?vxO~O|68bFVS<H;7A~+*(LyT=tu0itaG{0T7V222Y@v#U>K1CK
zNL7W^sB4YKGIL+IriEG-E>e`cVq{HO26xnxU(DPsG_p|FLOl!hEi|yu&?=fV+_jl|
zFOU7Ov4u-5G_%lL4yjBlfhHE3Qs)c5s%Z-gEiGIo1J;*W(Cl1yYGa|Tg&r1qT4-mX
zy@gH|I$OBh!W9;-w9r8bd0M#ya?^HXt*bjvF44(me)i2mR}0-NbhnCD{yfX>rSmGw
zS(C7KOvq;MWudo);TA?%=wqR;g&`KMww#vlXJLSaffo8RcbzigAj=u}gDrUU&&A|C
z$cL&(^f}DJHR2Q*WDB#_BQ0EOVT^^bJiiu3Sr~2MdYx<9uw!%8!M;t-r9S`Fcbq(o
zw{U~yto*6-;PVx)X!UZVg-I4xT3BV_CJU1-%(gJc!W2`6=@zE4oC@;n@YLKa?#>u9
zEX=epOG>R;$nyLDmV?Y<uEd2F7KzNWFyF!garZjKhhY|5SYlzhg%#|ge9O<mQVYv0
z=Sd;flm{1kJb2U1eIo8QC3p9BR$EwOA;at}SZqTJQN=QA+k)Rhz=GF;Pa<bd_ik*^
zLdZhcLd0^u=|p3<Ro$M$lg`U}%tG8k!a~wQO3B@)t@w+NKljp7NSHQfA#Y*5g}W^j
zbfRy!uucYRh3p$V`*&El)52XGL}mrWs=3RF4HoXPu*t$h7VfohpM?ileGB(n&cAzC
zYvC;C+VF-fKl`IT@0ODyJv?mT5etthBe&0U`Rz`LEZbui9=CAF!eI+fSa{OHdlvRt
z*lJ;$h3ytzxA2sOr`Zk`UX+t(EIh{^tExRKg+2UvDeT^@`HU0ye=NLW;Z=z*3p;Xr
z>2>3K`7406(DmpI3vXI@$HGqedCS5M3vY{`+ZMR87Pi*FyB2m?*ll5t<*a#@ug0K7
zxT=lwX>s<Gy_U0q&%weUR_|N*fF3LywD6&Yk1Tv*;Zyni*z|u^oNK4gEPQTS`wI*E
zEgZ1$C1*K}j-N_8FD!h;36l?`>8vs6t~}X#->9A0yx+<*pJ(7NR=Pc6;XBTa9#r(;
zdka5U_`|}V7LHmtX5nWG$1VJ5(*C5h>{{;mI>B04IBnrK=_h4&N}P9{eq~ynP~z_r
zncd}l@<F5ZFAINLIM0L99-Oi8kA-3$6!+jP=jRoG$5}@5v1Fbgo*iC%sg&@bqz9!u
zMROW=A*Sk~6uLd%gEAhcI^~6BJt!yQc2u{2R`58*=9I`rsN}(g9$f4}T@NaIP{o7V
z9@O!mst46PsO15B2)$MJpoRxE|36ne7Z*un3v<|3Z0Q*Dp#OT($?MahTDXA+4JDpy
zx5ge^>Osnbv<FQ*XzIaK52kt0%!B404Dw*G2Q55k=|N`?x_EGz2dzA~!h<X2r?m%d
zJ!t1a8<Q7jt@h&e*uo;58QfR5SdtDN=j(R7j(7B+lc(rAiabG#>gqu^4|;phhc?>2
z=+3&!Lk|yndeF<`EZW^_(%$W9ePzJlKo9zP(BFdrtdXiukrOq!TiGEVT<yVl4{q>a
zs0Y`0aJ>g(lzf;6BRm)>K3vE)zn167gHaxg_BdC3UWVw<J&9abvnOyW7%O9LJo0z?
zIB|D!nBc)g1t+sf)$%uboGvuUgPWvtgmTW|-rW?Pnprw!H+wMMgB2d!CYu=^%<|wC
z4`wRJ`G*CVEk4(Sd8|S)%rTXn@4*5O7JINn1`9n{B*G*)9VEAUuvFqQ;YQAQ{I?Wc
zl$T2xe)jB24_0{)@gVBKYKa~XY!B9mTgHt4tV)Mo4+0(pJ<isU&x3>9{}-}xLb9Yy
zn9Z)0EoUAsFJsb^!niOYbT{Pr8;40U9%Mau#DhmY$a#?W-~kUF^q?TibspT|!CG+|
z-!Ae`G2H3FUE=o&*L$$R*xW6`YwJBC?pH4F^Wc6D*h_f@=iy$sH@XJGO~T^EogzIf
z&M~#wgDoDstl(oFJTCH_2TyqLqzBI^xYdJg9z5m2(+cuSiCpFW_l)pVKC7tDYM^mV
zJTJ~%Uhv>W4_@*(Z&I+gxC;R4uXymPY+mzVy9oQCJEGrI@KX;y^WZJ<9m2Ogc*ldC
z9=z+p`%>s<mj`<d-z~C7$X`J3iR=@)KZQOJXQ~fHKJwsW4?YohUpV3t?sE^m;Apk6
z-Nt?o4sb-<7-!>455Dr?0vi==e9a^t{Ncf$>>D0@<H0cxew3eYJvbtANO)Mt962t&
z<0U}BA3Qi}^mD(|e)8aFiKjd`?!gIh#xm_MoF$C?xl#732d5?ert$K-IERlrQT*k>
z-<;BIl(ccigMT>ldjQ+<MjID-tz?^%7qd~^c6Qxe=Tu7BC~f0>*`FumBBzXvvNkFx
zSk6Xy+xaohCt<kw`CbPn3eFo$UdhIVHm<bM!A4~pRczF?QO`zI8`W&ov{6e=xVv86
zb|#G)!gIM_WTTD@=&H8u%n7X2#ZuT^Db}~qz(y+@ttB?JajA_aHZHNz$cFoKpt0>d
zN5^qNY-*#KjTSaq+GuWLuK55pqsUn`R^c+1O&cJ@HcV^dayf5jO46Qn(O7m**%i{=
ze$~-NCmVfj^s~{~Mi)i(ve8xKDq%Mp-A!HGTJ*5d({`TrsbqetvueF%+(*cY_qQ>C
zsca0hF;F6H2HO}U?w;!*Hm+9CUCs?<P(MqD+ZbWvdPR-2ajlI}Hb&ddzc5_K{>&;@
zaySWny2aqW#2DGTdk*7m++ZVTBX47Zjfpnq+gM=ZMjMlCOtW#bjBm0rMTCAPi`>d<
zu82DoPq#6H%`Ro8jah038sB1Lwv9O^t=j>*UHb2}X`Wqlzh<G0MK-)Pd^Q%_SYl(P
zja6=5Hdcr%wXsZuyE<GHEw_snNViFJ+sbYE)i&1Huxxk~W!qqZ&s{j&{^qw4P;Amh
z&_>8cT*0s~Vk2r7t<&5KXv}tgfN%&96S8q1F-_S>E10pJU5>2ntdU4~@W*4p##$Q>
z*?5@e#l|`t_u9D6#vMw+CR%UfP8)YASh2eEwTddb_}*<}gN=LsxBuKPvrWPWgb&)-
zXcvuZ4sagskbi^;ZEUr%&BkU^k;jx|3;V6^3o!S`Z9HM)N!wY?va7gjn5S$!ZR2?x
zFUbBGyXY;vXKg$u#cdEy<}ccK$;PYfd%7aOY~vLf&@-Re;6USm;_zo@d)>wxHp+NW
z){8eevDi3f<3}4iY`o2R*v0`H?<nnF8}EtiwDGRUE*rZ=_GlVm9eJUlTjsLQ#)mdO
zV#~|m10i+Z_9A|4<5M<{#7~4A1)m$6FIX=POm<5ee<}SN8{gXaO8jfr(#AoNKKQqZ
z4%s+t<A`Zky5;emjqf>9_~kbnN0r3wX>OnV$;QtT;l**0-)#IYa>B+h90=m4Z2T(1
zBJq-XTD*fQOXUv*&)E1=<S!e4i?}1g{b}%zjk6MI?^dmt7sb6Oq1(YFdCymbv86;f
z#g+EreDQ($^Cm`>^P;>L!@U^cMFlS|@S>>~&Ah1SMI|pT@}jovFZ7~{7gfEetRQcA
z@poA@FRCk8Q^=O7;dNe)V{5x}Q7v!LE#Nv{T<k?7FB*GM*Nb|xZz!zqMFWxlw&5jS
zr=8tOU8>k7LU)#C6iIV0T6odhi#}eoWWHW>@S>v^t-NS0<12)1ylCr1J7%ik*4~Q+
zY;Z-f`s6%FcwFgq#uNvBCoejC(cO!yyy)UZS1-D;HMEV)BK2tIY!TnA*}jMT^z@>a
zx9HBSTMKT5Rp9sEyyz!`tG(#&#Q-k`c`?|FfhKom=kAiZ>m@oLVp@#l8S2F~UJR4*
zxyBjk#kF3{^kSA5*Lg9@i*a6zm(6G|#)w>RlCVRL6?a?g2JxG`nC!&_FDA0gQYNvZ
z)+lNpcEv4fjVWGC^<vt8T;1%&bT4K|;n-vex%Kxbd)FM?;>Bz)mV2?ni#cA*^<t?P
z%e<K9#e6Rod9hfj7I?AH>r50(>(+?dAWIZ=tB_HyXBLBn=QGAEIgM}gVx<>rys%h(
zO+k!Z<#ndt)n2$e2{hv%@_1p(mDdZO7k=-*b0!Vk=_2Sw$cwPdC}zBfh)0DnVO*H-
zA}NycA}vCDcbIcSi99PYC(H{A!nI!9F0xL@YZf;#?)2g=FV;(8+6`XZEnZ*01YOVf
zd2v5at`E2P9RCk^vCWI8WcHvJ8;!S3UOeQ*!wNp)#S<cr3O5V42p{v}ah}IwMO&BL
z$a+#bJ#Y0EiR4eSRh8W{ihb6L=e&5{ix)Vb_)x-!7rl7NivwPK>BY-lyyC?UFW&Y#
z%ehy*c#9oXOS{*+*zU#a^sFd~Z?cyvin*NY!|!;p(~I}K*yqK&vZSBgBD;($Dtn~t
zHLl(_mLGZXf%u2)S2`Uu{@9C8y!h1A?la}fOnH1R<1d8!g>I3)^5U=;N2GksgdzvM
z_{NKG#p(7C`?GFb&RFW4j_<tq-iyDzIOD|+UL5t}S1(R`am<S!z4*n8lV1E}(()@w
zKZ_q1o)Ef?aLU*)$g@MwZjpZT;&)Zy4=?`o;xE&BEC~&G(31QgFW6^_`JDDYD_8J2
zr@)P+SxFyC`Owyfc0QcvLunuC`cTh@^L;4eLnR+B^r5Vh(?bQF`f@&$mlG-t`3X41
zR`eB}J{FRCWgn{fP+d_~e5h(Nbqim^hgv>dq}ZB57OA#8)bZhB5x1s9c11T;eIJ_m
z(A0+pJ~ULSOMGZ7(nv@%$5NcBSd3;qH22{$DGaty`CV@<B{JVu5*gdthc-rJu)PnL
z`*5|CD}1=phh9GP_Mw9h9ewEPLpL8fnY5k%Q^77i?ElX=?e4=>GV9?(Pg4N5UhY}w
z<3oQR2Kdld6=#w9DO0zc1AQ3e!(h`ULyQg0Tmu$$s9S6whWRkuhY<==AL;5k-L!X_
z)Q3?%jP~Jrm1L|B<3z>?`D<dl4>yQU6Hf5qCK0Bc=);YMPx2Mrh?y*9iqWU~oM)f7
z+i<f{ru#6%@R=snY@>L6nB&7-ALjWm-v`U+3q+O+7y7Ws=!->`2yYcG^<kL^ml@pq
zT_Jv(aHVjSkmX<P!y3bRJ@OcCi%{|T;P)ZmLr}{3euR7o`|ynq-}(^oA?m|sAGWZL
zKE!>v+lLK4Bz#Evkn<t0RJ;tOMAAa$n-R%!plQ2_N<qpUKCCr1xBIY8+#TbzxzmTc
zOze6QdcH?wlaSj`_ln%-!~H%y;46BE@j;37u+fKpn${jN%ELZ9!a>cSep1{Qa~|{I
zaUXX1u-k_xq(AS&3nEYYu+@ic;!pYTj1SL>KkX~}7pLbGWM1wj03S?!QOb57UiaZ8
z@t1vg#fMjo<!h!7FctgB8`9quzG-aU@?i(BYkd4hNb-&kI}JajN^uFa$A`T>eCEUF
zO8B1eBOmtp@V*Zp7;oINV_qNnik=lA|5#C<`0%L+mk=!Z7vf(E_X}xxK!p2pU-|I0
zxbx7g$U$Sn_cadraM*{xeK_O85g)$u;ZGm_^5J_QevsKIAC4OPpM5wc{-aTT@)bRi
ze%yx>5`WP+VgY!Zl){tstH@~|eiQj!4Z?0un?KAMA?LKfrP0{p_(x_`iu-X^9Dc``
zM==ric2x=Sl75sDIZs$xNXt*T3*>j^(z1S(^P{{U75u2`M>QE-Agm~?%%6}Z)rEdk
z7O&!W-n}ZNOsh+&Yiw%xQPYoFeq1D_j?ruTi{_S#mDZzGTs_6s7d9}K^xVjg#(sqT
zh_H};H1XpaKZePmsj!*Qo&B2o(L%wNeq829D?eKM(Zi3PezftUtsfoz=tK|2&`xHT
z`_W#6Lys$PHo_HtTq&i4kfOUF@2p^VKe~u?6?PM{4QY0jI6ae7>E%a%DZPzNA3yr~
z(NDS4fCr5SD0ZOQe~=%8{TSlM)qV_>?z);{9tL2N;eL$pW4U5S`f;tu4B>TtOz>l(
zAEOi;ExcaHgkwa;3dae@`*DK^2dP`08x@=;oFu$SIN6UWA~c(7&fU#MnJ(hC(o8>Q
z`EiSs*?ue(nIoJloF}B8`F<=g+&y=T{8((1B_g*9mkO8pi+)wDQ1CY4N<UVKtoFkz
zLeFbNEI&L(u|+s!d`9v65imT+tAOEb@Tea#mLz~B0mS`C`0=`8lYXT9*y6`yex&`#
z_;I%%8#q|F@)zDE%n9>;6hs)iR^)a+)`{F<^gG#C^&|#&EZ4Jhas!jE{rYjQ9}oEP
zpda`7oySwD-|u%`{c|~ykEU#tJ)JYSiDt5VSonzWQQ>AGZTO7q<9<Bh$BTZv<j0d7
z8uIhJ47U2QP0CZkr-jc5pB2*hIT4od1!c`rQGD4Cmi!g952Kh7|HJ)Nme#cAc0V?$
ztH0sLn|{3I#|}Tn2XI3GZ~O6%9~T5rG2nE+oqinl<A@Tz>&GrXcKfl%kG*~z@Z(EA
z-t%LhAD_wKeLp_%<6}QQQSd`QJ~BDF+XDPW_NnPGoCDdxIKV&m;|o9b`<)McoVyD1
z?!Z@WT0ai@@%8`u`NofL{W#<=`t8Ybx~~w@+jo9^@5e8Gob=-dKaTow+@w7w@{=Dw
z8pVCq>*xQB{S)j<U7X{TAHVWReoo*rJ}vy+kKaU&o45A<@Z(QE{_^8*<MWJ&`@saa
zItZYo8k6NLCQ@8jLdd>dDuD9>C>_B00hE_mCV;Xc<pR!XlL^^?E+JM>l>3xLr2sAr
zV5Ah9RSw|t0Imq2N&r;@s1`u=02&5xNdPrub5Q`bMQR36%cSCos3TrCfO-L3Y;=~b
zzTpi5Mc>xr_KQ2KGzy?u0L=qv9KfYAYa(nKDEg(t@^DewB7l|wv<aZCVlNAzRRFC`
zy?DxK#;3FBvz-ju3wghTH}!a{h_P1&&>?^U0SpYFV*s53=ovt-06GWIC4j4BPqVHf
z-G$wR?gO!Wc9gL_q_7!#2hc~nzp$^cU%+|ZjAlI8!tRM16u{sBhO#;V3<==sK+%7z
z(Z;=kyLWYm1u#5-5rLwakg=?b>)~2Czb=4LBBO<4gx3d(UcsjQ*Z{^!BzONAZ9)Ju
zq)Zgv7{H_eZW5nrEGLUh2^5WjX$syfoNjD*W@j2cD}Y-9n62QP02Ua1ZUFNPpD*I9
zwfF?A_#$(rsN5QWCjdKurN(|)0L#T!2yY8ur3h#BRmNs@0Ba1lOf0>50|*)27l2<p
zV3c5>==H|1Q6d3E#bZWc@1mb%01pK5U=XPQ(u&G(Py|sqh-?740P+D80{GRWS{uMm
z;<pE|E`U1%xHEw50lXf-T>-2QU}FHA0=S#KT0bZ64Pb-#Jw{;<xljClqdXA6gNC!s
z9}3`M1z!r_5s@bXc#>x-fXxbS5k982WiF4KA;Yv=1K1Y8GXXp+o2LSJT7+hd<-y#a
zGs=qrJRiUd3R0&Hkv41=@|Od6MNzLB``1j4Zv^mW0AB_0bpUS#up@wvW%IVN+$r*o
z3PxA&2CyrD-2v<g;6p_*qrCy_<FpXKds3Jwvv$kyfl26=>LU~UB!Eu?_$+|W1K6)r
zZjvv=-LwY`|I(C}`u|D%UU*RWO#t7D91<QD9ua;gbhG|JoF0yf925R%41QKmIBxpJ
zi2!~PKWUUx|LOmy1Ncq)?*aS~z@Gv96+pS5)7m`#4xm^N#T7ggz&`<;4FC$VBsAbF
z0Ip>TiKT-mY0{Po;ylA$<MS0PBP<&%n*5o(d=M2RUSRAi22n}eZM`Z%R1G?PfWc}(
zR1acd5Q~DS5k$=(`UcT2h+08h6hx~aS_e@(h&n-B8blK!Z~g{RH;8)j;5w-<y`ivy
zkR`lCIW|&|sTwPIjQ4+oXck2CAX>-+3(OaXE3QDxAWrf&sO;DLXP2f;5N(6#5Jbly
z+6B>G23H6#mrw2w@TOG{UIk30SSl8vlWe*M(K+b+|1UG@BE>CpH>K?!#8pA`2%={Y
zy-ay}D~i92SZp4Bf{uTZ{y_`~Vr&rOf*2UYpdf}aNf2B?4Gtp7R{)IvtK}hVJPhO6
zQPgnZ2q7Jg4B}eDS*lSwiKBzKK8P_Y3~NC%e(ZucK8PEFm>I;ZASMJcF^DN9EzNE;
zd=e`g#N_{N3f6sU5YvLV+33?%Lb{!yguMNCOAxbzm><LfDJ&0D%@Lm)#5@t+v|<uo
zbGiC*n{javOM*xTkqP3~AeIK<3&J17vLKcRVY{h>x2bka<zBK^2C*uL)j_NY!V1D8
z8#<?f>)EZlSNgtrPQE+>3Py#&AVMN6XE=z6xSJ{_PCxM=65>f=%II{J4I&rB9YNd~
zL|*z@b}()MiPK;kZ`=p5PQeq(oeu9Z?RIw%>lMWnwOh6gYTJ7x-W$Yy9CZ8%pdek*
zW@8YWg4h|vyFok@#KS@CkT;h9kszK7Vyl9W3O5I_MdUHz<3T(j!XJI^QhA$#O#4<4
zPX+OG5YI??Mffc3_4mZji99cSLHJ@2FPYevgV>{gUZ$T{gLuvO+#ba1;%^w`O%bm5
zXiwv}jsA`Zn|)UhyMs6w#5Yp*1o5e{*&D=rhVK)3U-&@~9~%85k&lD;#3)6N)(7#q
zncThzV!vV!7@IGH_{#9FT_SXE_kSy1DuhEp92P$k#GgU@6~uQ6ejmgSK^zU@n1a6w
ze+=Td2&?&15I-BvW<MeRi&0LBoZ^I_`;w;>{7v|K5P$Ft>PtTK!}j@Gdht-v41Xqw
zf25oh!sx|9MXMU7Dj~7tf0Xk=C>_H2(#r@dhfr3eoRF!?i&PL^Agm~?B)l->{INC7
zswhZOHH2!0R}U3^fv{Ex7lqI!g0>N7=+!0<p{>m72rmwyu1Gy${SX?6Gz{S~5qiEP
zght|xjdH0-6Jb+fvk;n_*cKtQ6tAgeTPvft=F8Ml+J(?w;`d=(E;2%RMF>}h&>@75
z3Jw%@3Zbt^XCceeMWm~+o3Oj^st|gJ^c40I_7?ULGOhb+e?JBL3kL|-@$*n23=Uz4
zvAjm)YT;0!`x9oE`0&ubzXC>vaBT?Jg)l0F(IE^EV?-F&hcJe%9d`Q3*bv5r@Ja};
zD((0X>=3*m+z`S9DHB7O7Q)TqH-<1t<R;<d5T=NfFNLWh+^ywLnCT(R2w`Cei$a(w
zeU6aX&2r5`n9Wj|d6@d#5axw2U$G0=F|<nIbGCfAad8MsLRhV+TSHhH!fnRevXHY|
zxI)3@LU%PzT&dtH;nn87q%|Q}Qs~xWa`8!tatMUr7Y_(os-Q?HgmB3DY6_Kz6#lY~
zhmZ*2ju7q)A!+QhA*2jXhn%ZSCgk*O)-)$QFD!(xR^;{&)*1U<+(6*n-d4CPg!Lgj
z7Q*8p+#SM(5FRl$_k{3Z2pbi=H-!5_xIcskLU@`tXEowjLYHg`;bD{NA!9>h8t`~j
zWV7@wO3tV!Ozd+ZJQ>1P1-CIaglEK`61tbp2l={zg6=f<d<ZWn_+khzi8v)$fS1K@
z<I=q*UJGG+2**P>5yI;syb;1@A$%Ufn<2av!uuxG4v}5Lw?lZx=sQDrH{?8iz#V%&
z@Uz?KdqUV7!g~ttlL51KZAd-{;X`BjQ3xN0@QH$-vL|S7nQx@dIeYdC*G9PC*dGYt
zOT)j?dHh<PmTnJ*@QtFr4dDloLm?a%ITFJ6I`uUBF68_!<~7>Ao*tFKu@HU?;V1E*
zLryHa2aS2q_!sHL!zdBPNpb3@Lija=(+d8^Z$5<Zm-z3(KZNdJ`8$MvLO2`38Hw&V
zLfCmkkVi2Md5#WuU$<l!rNXEo@w_lfhf!Jl{4mOhR1lU8JKsTaOIR+9@?q!6H@=BO
zydaE<VdweqSGfN#;|qlh@~!78;!Idoq*@r&!_FQHFY(;KsToGCFfIzCb{Ln2(L^?N
z!l)NU{V;}HiHpOi8+Hbf`z7rLVKfY*vCJ+po*OZ(8nFF;p4e%s*vo{?!e|~wi?H)N
zPfIDTC4-mqp{7!36-I06?%qq=FxrLDUdmNr^x#!M{0iZf!VbcYVRRDd97fkLx`}rY
zawg}4rYu-@1<#$|o(lE}qn8L<rgzvGza)L7^b__M4hUml7=ywXtl%}mAv~2~3=KPP
zLb3gMaB#WfYgpL%bg=u{)W|Td4ddQ0?hE6(Fh(hDK{z^$@nPJ+tAK)Ige<^Vk#XUo
zaWNr`iD4`XV{sTahA}COIWoA(*v|}Oau`z-oEpZ>MxQ3aQ#@T{hS1%wn<ajWaCX>v
zB$fH{L=)#qoEOG?5sC}KSSWt(JL*fq@P^?F<JK^iDr#96D@B$IR|s!o)#RD?{#J#t
zTH=~8JR;VAVmTu0aM4)shY<)PEgP067)CgZh=L&@`(f0?Cc=n`$A#|sO^T<&&RC!a
z4vLJi&#D{e!pQ%}ey#ZJVXPCmBaC}Q?iAi7TrZ@zyX9en>Fs-UF}k0fCycLT^I#Yo
z!}u(W&lTJh#^Yf;5ynHt!^0wvgz;z?o5R==cCH$aNp!Cu=dKP<vI=3m8phTzw#ncr
z;R{S6@(d@0FrL#qz)t?WM0Ut?{rp8KFR8RIvj=K^drjh7VeANFyZGy2ydm<Yv2iah
ztnb@l><VMIV&4g4r^v~&csE@1`plj%_J;9M7$1l6UKsmi@PUv^<@ZIV>5XZo`p~3u
z{ePm^PlYT$i}!^%^Zhc6{o)6N?%1SGo3D+{|Alc-{2Sr7!b8HtVH^?p&h)F8-ZT9n
zjH6*33*$%5X%VNx{}jg0oB*}-Js!r1FwToOALC`zFJT~pViBAS;}kjn`Ca&r@U-x^
zFn$+d>>nb3hVhrk-$p+pQnNYEhMj}XYjGi@TuQ18R7ymOqDmR%ycsAR!TAxCiJ)u*
z7er7|Ny<e~L8QEpu9)0)OHxT<wFoX0p;9@5D&kd*!bf4LSC62EQEH0R=3l@lch<dj
z#QB6;od_;=Td7IWb*Ekg^&@B?v7xYW1ed7w8bzFIgnN#NmqyUUcxxI#Gx6ra7Q&V$
z_A-%H!qyS+W;c_!i=cf3_e61T6qiSwuG=+&ZV_BzQe7EA2l0+Z=_Jxw*hSd%JamuX
zst8I&ab6TXBIp^xYY}W$Y_AALL@-jkcLaSz`U?9+oEJ{}M=&6Qfl`JE2SqSAf+6BV
zg)HjTGA?>SHB$8M>Tt#KCKr!uS^fy@2)q%Dl0H9z?=HjW2(FJ{Oax<jq8B^09v8v*
z2&P0ZRc1E`88sn-i4oiw!K4T#8{?Z4>wewEO-?>d;>-wUu_O^pHy&mvm1}m3_*_LX
z)7cTsF=mJP=kIKyYR*C91raQaU{M5%Rp6DvB@rx@{jEaYK%|pp;>(3AgttYUkI%Tb
z7gtGHEnFjH5=+Draqd5ItHBq6KZ2~pK*YKGnGptsycH6PAS@n<ASx1zAQ?d_f_MZ8
zDSSPO3EfWtq~(g-y^Z3&Je7+eA3-64wGliX!4nbO&H<(I{!j$#BDf=hJ0rM@eJ_H0
zBUm57-SWdbM>OLDz#C-m-blJn{DBA_jNpEmv0jYY$d<2wO;SjhkO%dLW&cP7k4CUr
zd`kq6MVw#aZW&xcd@_QqO8!a&+ah=>f|nJ1I)Z0JUQlv6e>Q^WB6waRb9b|&2l5vq
zcu6{gJQ&5})&E$&F8*x<haz|*f;S_0D}o&neB!2x;2n{VBG}2cQY*b1!Nb}YqW@hI
zcSo=%g1r&EC*yq)ye~qt4@5pRX*oY|Ak)vs(&>Tc{nH3OQ}FW$zBc+75$qSIlLHZa
zY4op{S1G3ePGKTADE%8_Nr#8Ue-R!Le#bey6~0&Z_#uL$5ge2Llki6&6S{ro=Ln8V
zIq@HzL-k|?r=<KUJRQMr5&Ry(9}$#@I!*m&1b->&Yy^LcoDsI=%XfSPRQ$EFjwKI7
zQ7nq$QRip1D-ugaouAuOh^6JTLlhmOIA6R>6lF!q39Ce%^>%q-1>pt4io#053x$=1
zZ278DREwgzlD8Gsh@xf`wW7`?sV)n{0z^?eiaJs_|Nqnk7e^iB!D82sqCpf*qiCk&
z4TX(`mqgKsbL<Sq%r(ALdK0;#(p<sIqG%OGizr$eV>by?wT_~VF=mhlquMDId3#<3
z6nlm6N@MBf#oBd>qO**<M6p4nYZTq0=pMyYQTU?>aQ=^?XB5+-xH*bmQS^>tTomJ@
z=o3ZXD27CFbrk)g=&$5lFbohGBxD%|itrh*!6NQP#Ly_NiQ>8_MoAnN#YmCiQH&7b
z9tB?k=H20I6{H_}7;X5ND6SWG-|=DW*l5vPKQ}}%K~a;Vm}u;861h=0NtR5)qkTE2
z<)=uW8ing^dK5FHSW(Q3VpbGOqgW>8mMG>%F;9GU6mvw}U&r&s7e%pH{ue~CPzql}
z;*Y5%;<pOVm6>F@l$BAe5?K+&Z6Yif6S8cpO=+pDF(st#iNcnpHwvGK+pyfJ2r8J2
zA|(=vA}kUSMx%&{#G^=v&>Me9y0u70k%{6?=~)xIHj12h-Y5kTCb``x>!P?roIgwH
z@GkN7!n=i!Y7|%1@5=k6)Q+J}4EKvaAbc>2jZtih;vx3)7)r<Ra1@V3aUzOeTqjYy
z5yhKPY>r|}6pu+{b}vWqcoa`W@njTRqj)xo=c3rA*r$b@Kc8ZM(;Dd+qcHfq_=`gN
zc|nBZ;w584@fGn`+4v&cSwb@-y&gqH^R1h=qWCh3ucFuy#oJN5BjdeMyeG0Vig%;f
z6~%4^>2{BZ>x#H9iua`)h~k4NK8)g%C_a_)Q4}8=V_LdNK8xaWiTgS8l*1Q7y5(=x
z)#^DEc~JRUW`~3f{$CUa4gW^uTOt2%=&;C<D87s0`zU^h;z!P75|2i4OoWZ&IMIEm
zpQVr==Wv#OF7{*;f121+BELp)+9<z8@w@mR!lJK0MDe$RXE@2noLv4<@T?G0iU~Q%
zxMe62LrEzNmWmaf-}9wZF?t!1vN4nsDKD%L!v!K0W4KVHlJH#lD=WwzQdOjyu)45@
zkU7?jp_btni7@%aMj04G-5Bb{P+v;(7+S>8z{EC;;S%vi!p26wG=?VPO@+;j&bKLB
z#&DT}J%p`dXfM***t8L88$&yhaXR}f=jAb65yO=dJH*gkq@%D?44q@>BHm5dRmfD_
zWOMh~$gheOeH*Z+VtW~z-ZAtsyst<<VSnL(SdoW8#%8d{kQlCxVQ383#4s#|8)BFs
zeRvF`jpYcDkuh8=a-DFL(0zI8dU2L*jL2BwIN^BH6DAs)DKXqAK1q0!(I<;=YMN@4
zX(BhrFx@EZ1G8edC5B!}^iE=S409B9Ada~)%!^@h982PuAHxEkkvJ}oV_^)7VyGNP
zl{gm5*c*c{h9%;+8qZ5(SSG$)xFY7PD0ti^vNDEMBCCaKOso}yN8C2brc0gS;Ey3`
zJO^S38Xk%v9CMaE5g|!5hL|{0#buV@xzL?-DybOK5;HMmW5~sjkKvUVUX7s;!&=VC
zF+3uJ+he#_WSx*{?}*_}@w<$&K8Cx+H^guc^Zn0vt7v~8=YM1QKnxEWzA=VP;tvUV
zcY9|mJSx7;*ldnri}+*0$AwP_pNwIv2rK2z`A;eMwD1|>v%=?McwXd%7+w-#sa_P}
zH2boMyZiTA4BKNk#Ws)O^%&lW;e=w}jNz>qzKP*m1$V@-FNXKU-;Uv(7<P)k8^azE
z`rjq8n|0Jq@?Hhs6S^}tZ9Y)&OW}txd=$gS;-AFuc?@5~@M#R6NpYRH3HQfv;Qtfp
z?W-8Rmi~V+95e=Ql0yo9AHxqKhhsS6T5|tiy@CyRG=^g_{A~0eMSjxgcBhDX<#1f$
zxf$b^7*0xY+yAt9$v8^I@tgSXG5it3pE3Lu!`T=R$KNrWiQyl`^7~_M!UN_{{aA})
zaTJfEM7-#0Mcg1|EOlmjUL2+44lftS`66Y7RLaEveJ+uA%*#u!AiO|WQCLZMp^&LO
zrBT)J#&J}Oqq>4M;;3WvnsL-J{GvE&i@Qr}dbl`_x>D*1>l@1kaWpji5|KvqY3Axn
z<7gtWsj!)_xv+(>rSLLgD`9IPb8HhwTk&>A`Gt@D$8lvGlcjVJc8jBX9372KCy~x^
zbcs8&MAx{pW!I&=gIC4TL$PDy=qYlYu$QoR9DU;G8%Mu5MoQ@~94usc28axdV~~jZ
zNF?<kaa<k8&^WF!mLo)l35Um>?_$x6uWu8tmFTW{Mv0FWUN5A<n7A{J*ns1tj2GS@
zoM3Dwirg5-B%|CU!uerJ-05jk<CrGp<~ZgVo9QAm)GRZFv*Nf#gbg)2jyZ<Ul@p5d
zm1KeOuux=?Vp-H%<5(KUo;dc#u`G_|ajcEwcG;{DM&r26q+J=uD)H5Etck;l!xKkX
zifwFsad-{q2B6>YfJiV7zHk(ZJ9~p95sB`wip3FEFcC*Gj#M1G&AKivoh_3Q$qHHc
zTpW4vf>G#do%sE6JRovM9Cw=7yF}K<akt0@qu&$9y@uZ>!cQ>K|AXSpcVpan@sr9X
zDG$Z*a2$__KN`m?BAbP@*%HTNaXcQ!6H=Zr`jc^NjbodFPsNK?FHf`E%QN4KdNz*d
z6#IM}FPT&?#PMR>*-W5k?k&75-Q8QD@@gEfN!cF9>mqN&@s3IRrpQ}y?BIywwv~{n
z_(`RmilX>#9J|DK8-*YJdr$l$;XWZ#y&uO1;vWjn?Hzrr;3qt%BA*FA7c$isBKw7G
z$uHyhDvqxi<gA;(?+K@!52`o*7{@npd@IXC!lTj;$8ki#@7SdLPL7b|2NAaz$2fA;
zTYi$|&%)!v6Kv`@PKr-RU}6HN;`lX=(<}fRB!LbrMjU@|=1kxsmFG_xS5DwBUIOAc
zqhRR-&QIW<IL<1F1WL-7<u8^%@r3iYM<s+*$V(~qJfZvXYU*VYxIju-VY!6!v9Iz8
zxF7qfAd$RcqUa0om84uKtg8vRig?uos)<w=)-WDwDo8)IMVMpD1nMMkaRPOXQeUK=
zkngq8ra=M?6SyRSMl62<&5Y%x3FpRNlZ5kyK$4~jTyyp;36V$h1X{?FoKARLmOv|$
zwsit+#M>s&E`jz5%;d6P%IrlBze1dZ2|J1pPGE>grvy5SbP;w<pj!gn6SyjYK2n&Z
zM*_XXdnUl!wR|*!*joxW9B9xtfqn_}XM=OzmOen7QB(#=Az_fm)d^fDg?uQhY51@N
zh9@vW!I24EE5b&*$9(>Gl$6oJ>xE+y7%MU^f$<{jnVg4j5GUarb))#L2`o)uQUW(A
zI5~mYA}qs{1g083ErFZGrzbE&WM%@lh|Eejo?ZX$EXuTV6g4-2c?rxHUy#5e5ymcL
zPbla77u#YfON0#a`+Lh0Sf0S632aVa1zR<NI~BW97#FTeV08j(60j5u3E7yQ1Z;6{
z0s#@`<rDEIoWG{(!CSxzlJNUxj14OoNg&F`FNT=vLfsw6i3E}fq!LIckVznKd}b5K
z8BR;L)&(hR6S!SuUBY>J`3`Yj;>mxRi@Qv!^$Faazy<~H5k4TiSKZ^j1nyVR?I90}
zZ%klQ0uLp?XQ3aK!g4m|BZzzoR3d|05_l|uHxqa(fya%_vm#FjpG;t@$Ts0q2|P_Q
z7kl{UUs6a8^8eoxcs_v_R2cTpR}*+q{3YSb!dHZDf2PfA3T_v^E__4iR$)g1dlPt1
zS-dTLN4PVAcN5qpzB_?EBLD46`=oqLOyK<lK2Y$(1U^mRGx3jvA1Ck$3w-vh``!D`
zB_0rdA>1$I@|CUhWddJud}&0S>#+wD_(3+`2)|9>Py&Y&PM`Ts3KJd?VMqF2#O*>y
z+4u?kDCHz4_5^<7%&Fk<1a|PeCvZZ99vI|7@~e8<X_+y2t}uTj@TbHpllUuvzs1WZ
zonoI6|3~N+`)tCw7$J#bGN4UykrGLiG)k!?&NIBU$oWZ>F-lpHa>CQ4Q9*>m`2vxO
zNmNSW!XzpuQAJA2B&sG+%{5D+dJ;9n>j-Nmaghj1QcHy8tS!O{QoLBaZW8s9sGmfG
zBpOL+D5Sw9$$y_><+BG=8Yi7^ypZr{l0;Ku*-WIlutl=y%6plKZ6(q=i8e{J6>lfJ
zT-aX7mCO|)^z1%T)j`3I!cIwaPNGW^T@}1a*iA_L?jqdj?O~LjrVM?O=$k|)g=`A_
zlIWjAl$A<ifGlST2PQEniNQ$>N#Z8s;p!yDiw_lEBOE3ip2UbGMkaA>64y&%8Lkr<
zm2__YGC11k+~67`K2|u+=<X%y1_dVwCkk&&Vv@1p%LtPVpOVB>!>1*2v-ou345QCX
zf-lQ6_glCHl*F7Q<|Yv`vGbC+HHoDP&KE97Vxfs$B(hkzM92#$`^hr3q}#)nC$YlV
z-<HJ6BvvW7T1ewHNm$|@p+5;*#4Gd(owh25fOt^oI;S2^A|l1@pYbFTtVPPHQ8I~C
z5~Wf&FNHKuXc9jpaWsi+61gOvOk!&id8NH0i91CK!nH}<F0xKo)9lLLrQkin^-0_<
z!i+YEut@hNabFVmEBJ_seL&<v;YQ)6BpwoZSV#}<s_fAuHXCJ&$YV)7F7kx1j23U(
zl6XqN&ysjrgdSc_I=4ZeN#a>4&n5A^$O~pXzNp|!#-6_vUJ-vaiPuE7C$Te$cawPC
z*t{X~rtmG{4&mELyd%P0FLz^Pmx3P%cMJCj_X^(=?i0SR^0=u!OyVPn9}7PbvM!&B
zaCCp3#24cGllaEO9uWC5iLZ?EHHqN|Mfhh)--;Yc;;@L@VUBRD8O!gJMb~}icueAN
z!XK0PN#tkYaUpF^B=L**Nu!(+`8A2tBA4jw{4V~7vH6o%0mJ_mIg`XcMmd`V)K}@h
zSPI3(OBki32-~W33g@SAeF|ezD3e0j6fR4lRSM-~P(6hjBIQ%4Aaa4QqOg+iLSbbg
z^Qw|URq<*@aeH9R6zZi=KZROGzbJ*;;&p@<8@+C-Xr6B%rIFDarf`Y4`?d)4YMjEQ
zQkoc>rXtOR%~NP$^p+y5Z|fA=q|hf-^k_j_=^cgbQfQwldPV*66t0kXrLcq0{V~!>
zytA;2kR|DwLO1d5!mETmOl;2-dWrWIy7yxG@)D3je`9k^3IhxuC^ASmIE5ibzdD7X
zhSSL~@!`S|!jZyjh1UsLwoxgJ7Uv?9K^|jMm?dRg3gc6_!C2m$!UXY&!W)H?Ozce}
zlZ8`+Q&X5`Vjr4^>EbhtGE;<$F6MZP_-r9BNpnT!r7%B*1t~04FeqFkT$RFN5vE;|
z!mZ*<h0Bb-Tx3NGw;5%n2)oB>ku^rQL_8_jM)9WL6Zab>kScl$i8+Q+2uqI$qr#Xl
zE~HIDBq>Y@)5b$Cg?tJlG8mabfnAipNz)jU##))(p2E5m?nvQIj<qyerEymZ>lIZ$
zjk`tYe{%{O48JFZdkw!Yh5N-H5I!i}Xks^|@DTfU3Xi0m=gfILnksrCo!q@)y(NXm
zQg}RtCsKGah0jy?B89E;@KOpdr?Aa<dn$#e#h)?Cvnf26!t*J-ka8Z&<ndyv=nLoW
zN6uf7<=ZK|Bl2nrubH&lMP5(gjTGKY;Vrcc8)rwVXuVC&xpb$@-WR?r+$Ch2>}Ct6
zus4PGOxk__oAv`^`Ju>1DSVv5Cn<cIa-I<5@foK({Z$z`A3WQi!hsadrhv55OTSdA
zpM+nf@HL6}LE(2Pd?WI03Ww-0<vjAu<4DT+MuE%Sk1Tzk!Vf7NP2m{lQhglb$CUGE
zkjwe}&(A3wm#Y&g{4T=We-SyE!l@K~P2qIP`9437-%`#yUoNkt4c<Re_*2GzrSNwO
zXG|{t{BJJBR4IC{AyPbz5^0naFO^2QG|G#gmqzI{&QGIEy6E|_vgxAd#N6l5=%GRy
zm1TTE8Wq#1ly-JAcwCr<yR$*gHDr}Es-{sb?R?9TNA+~kR~E^63$ms>)DqI?MIyD+
zsFTLUY1B17>;13K1~O}CQeBcpBk{&*Tq@Eejpiavh0TQY{~NyoVR%asxAj`5(aq>>
zMA{15rO{sG@-(gxxl-6UjSeCm)992g`X5z(<Cj@<k=`}!ys*G0*!g^WcPUp1Y0x8$
zo@w+-qjws8(ioD))r#sX94PFUM*lPhh`UQo*ZCkRgVRM{wj8P;eGYdm(-@X6`Y;!}
zAN3K^M+&bMUYB-WyBH-LE##j6*fhqau|JIiX^c<f23dO3m>@zw)6<wJexq=b(Qgu&
zES!?YRHIL$XTv#uXBa*+jag~jlE!Q)ONDdNm@DG`s+yO^d}F^LjfLWigo};7B#m3e
z-KE{KG?pvq)1qhvyN!bT`9}b0tYX#pIEQeJkU=XAkGL%?&cFQT=1&^_Gy-V^m3*5p
zBzz!^un1ctl14O*n1cKjOeHR!NF$j>Dvfj+nKag=afkG*Fqd|oYo&2MjY7I;241Tu
z&cnB-i=G|2laqfM_erPm`ZVq_{O&Y1=#;rPEAN%=-t)RYjrBFa_xeB6qd^a*u`!KJ
zY3HH1htk-ZcJ7HkoW>(c@+iwW!70h+G`1+}F<Cw#{<t_}ndC_+=bo&4io-CCXVQ2!
zjknU+k;Zczaoq3`J}+eOg*09?{G~Kr7JtPk1NfzV!?&mLy7(JLc{A;-lj-E`G~P+$
z6BT%;X@Pwr@20U!WOo{SME0ifp0VM0ahKokOZmX)ABub={8-3q-=`v<30dXO)A+)0
z`uQ@AuQ>2CxH5yUsi#pp<7}ZEOyiq0if2$FgKyI~#8yh<bQ*`1_7~xiG`<u0K8>G6
zeh?lNGOuH4{3!mD@DQBaE63B|jgk|b6ZEJa&3K%Y!Krl7cW<ctmc~C4e^28NmPA|P
ze@bEOUupa;env>Q6wjuCj6;fLiq_KZg^5bZ3@T-CVFsmSaGtQVkkjM&B4sitD^gBa
zUdXf+GPuC-iX!e0*vc8yP_Rk{RYj_0P~BK^{r`GbXGgcDlv){FlyPct?k8RyV|j4~
zb;avtP(OnPMsJfr!wfFTpplf8!p6c&g-tSOnnAM+nk(2s=+33*dI-yZSq7~X)mq3K
zeC#}J#TnZ!gZ74Bo+<i9AN39r`w2T{(8<_z&Y+8USEF>xpu6~08T81YX9m48=$mnR
zcyH-_j3x6uS3Jftm;Q<xARL&%pbQ3QFhs%OCe_s$3>Ck|D8oeP%^kMaW^i2wH)Js(
zi%}Vj&Y*V|eX_VdgE1NWnZaKfjLl$N26-+`GZ;_f4Ax{|$<KrgW*g5FGq^E>Ng3Q^
zl<65v7N262sToW&{ALk%FwPL4nZYcPTmBO@Cxf{e%#*StgIh)B3m0UtP-KyiZL&D?
z?<iQB!3yciOzd(IH^<vDSZVZC8La+Klt(-*w1wUbd>Qz~nM+h8kU`KWp$x*}5uuv}
zEn^DCGe{WAWCkh2-4mKoFe}Vuimn1oyEcQZ8Enho_6*i#a7PAr%I1*_?h?6QxL$a-
zaD(t3;l0B9gzhq)J|D>7K`9%Bn}iPu8T+t^Tlh!CHw(99@R-QsLRvl{@+3QtW{;;b
zcshfRGx$XMGa0;<!Hx``&EPpH&kJA8-~|zScv0k~3|=<MD<ZDL*D}~{^w%?Z!|*r%
zWAk<fdlh^~xHIFd*xxmlyF_+pu*WEGm%@AE`-JZs{R5E?g&$>#M%kwdew)Fe3_i=?
z^9;U_@|BR~-!F0?gD*wSo$;?-gA5LeeB%c7t*yfu9LeB!Dc@!Ay~wEyelRvaiyY11
zn8=U9pG>Tq#c>5sWbli~$^XRuDt_81znQbc(*7ZlKj;6>;7kTJv#6DIX8V6Ks3<~y
zHUnf)EQ{h&$_PscOB$O}S)3<c+9>B|i>}CJjZ#jed=?dqazVDJRhdhrEG{&9<t(a*
zS2aqtEUJsw5W4#wOm$Hfjk0Jgv9_>I78i@u71k5dvVIl~3~!jlCF1TC@KW*1giVZ1
zQ;}xE=2^55X(@DvCw;ccqIDK+vS^z{J4JO9w$GxY$mK#>UXjI>S!ed{AjLgpowDex
zU>75HHTE><ZunIqJ+kO&lwKmV=_@ikixFA$6Yp<q28aw44$5M%$PnSx!lA-zge>7O
z5&lopNTZAsxt8ZqWK<TTIsa!dM!~T{o``ejf{i&|BCF|ctWC^fZWi;hxG{@KS=^Mx
z<SgdMhB;2jVygJL_ME2R%~?!0HZw$KW-&|T7NgJ3{+qAcnDes;Wf7Laf-Dw_ED|nO
z%P+~|R*|JytPxozTrOOZ#cd)hvsf*{TC6gCn4Gy-M)zc4XW=!mzAXHTVnqU31dYxh
z6GpO#su)kP%p!MZu_24Nc*6Khilnkg8zqxPRy>zQK8u3*9m2K3+l9<xopNM$cS^ZS
zxL)X%;U4A1Hh(OOd!>`#m&N^AJfNrtvv|bVY!ulfd?*V({QNM-qkbYW)uUN#&SHyn
z26@onartCPp2*@!@vT{G)99wigT;8-_<tsgXAOT&<oPUKFv^Qrykz*xB78#lwJf%0
zv2h(Xt;6eCyphFgYq5Q;GgG~p#pgMEk;7Xu-jT)IS-g|QP6c1gIX3T#2gG-Y@6KXR
z7JIXJFN=LyG|iz|4)162K^7%*C?(4ev-mTMzq0r!i;uJTB#Te8IHBa92@eZD&*F<L
z_GfV*i?69j{F1Y!`Tp%!Qruy3FpF>5>>=kf6yIcv{t<&EJR}>wGJGV9@3Qz_ZTOSK
zAF?<qa!hCWN7JfI#a8`UQOAXBXZF%x#7_!OW$~-X>8!Jf_q+ISLbmE3BInise`f(z
z{EYN}glC1!h}rQdmP7HJ^Y%A+iJVgrlJjyXokLZnW$^qQDi~fShq5`8%b~ncSVDKe
z((-~FD&|lrhYJ;3#n@ENIa`8l^%vnJw5+D6>N(WNp=J)Xa=0jmON@Q(9O~v!FXzk&
zb#k~^`nmS6uVBNR^U;F_xqrV$vHk4XMv7`Iyj0jk$S7voJckxJ+$^PK4wvOHAcuiD
zw928i#4B@XlS5na%X4Ta;^y04od1|iKUav8xDN(&$f08nopR`$Lzf)-nAom4bkE@`
z1-l9Pjh7xGy=Yb(J;mKGz0g~41>IW-eRJriAb$Y%=Q&c}8<fLfiIZ~}A~M0X$zf;?
z*W@rPhwG&b&tZhfb;6NsOf%lEmBNprj1s9l2cvUE|H;BKjLBha4&!oQi;btxVz?m(
zw+-FiI8mu?%wdwqO{V>M+nuL_9;W0lRZ-;AMEcgobdec3%oLfG!>uB><S;vjIpPb2
zb90y{GCx=JoFV-zkixr%<co4xtRTy?Bv;h;mgcZ5hvhk}$iY_ZZ8@wIStDGPbEfXq
zsu2kfXZ|<IJ+g5Jg;(4sOTSXN-8+~=NKxS&A~{6aIdga{hsSe>=a9%@Qw|U1kjx>K
z!<{+YCF8WPAj}A}!dwn{5!Q$gl&)pR<K~Z1)`{F9bYIX|pTm6$-fe6)<ZzGS_p%#T
zD;m-F=kS2^2ZbAj-A(MnIXoi8trVR<n!{!(3m0IEh}#37$YEO!Pv!7r4qMewY#%q(
z(=ubpU&!GZ@n?n4vBOt$it)UH?6hv-+1f8jc{ztya?Z}ls|wQcHIePY*K>Fyhd0IF
z%3+_#4&mFvcXHS%@@@`$MCf6c$Zp}{vuF1j@*ew%IwWo0m-vD3!yG;m`8bD9a`;qc
zpGl!5{V)~N?w2yOfNKg)jSl4SWe#8E@U`?GayaTH5grtNBm6dpLn4QTOnXG+yBxkZ
z3a98}IsB+rZI{PSB0uMFTn26<pWwWdce4H^hm$#+%Hh`>%H&a2;^`dz&f$#gf6L)_
zkw1+8KSll$(%U~qFRrv_6@+*(;q(e9kw;1KQhAgXIZwy}xOZvK&;PqZE0;(0JZj`o
zK934K^v3rEc~s1!QXUs7VO1e#yvoK;mHfZY<W$Q$-<+iLnt9ZcLDM`g5~-g@gFI@B
z*U97JJnD+q6P~*YuwD)GxFnBDrPEa-k;eIdcLw+-CLb7XBAt%|H4|x`M~ggKnpBsG
zu$=U;p_S7)Tj$Xx?~t}alCFHYHIK{lxPn#4<C8o-&7(se9rFm~5zeDi9-Z?ToyYZg
zbjhP@9{uv@pGUX6GljDM_spX^i^{hEgd{ygSc_gFy^Y>Sq_2q`AP?8%F)WXP5(nim
zSY(KBsPJkbz44&);i?qL$UH_U%AMS(T${&rd5kimTf8xOjLl=E#Bq6y&tqC1H|KGK
zl$+#jLLL)MsvAWn3E6JteVClb6a}ZMz-}>!)AN{-$Gkk|=P^@$X3LBvnU%*ahP%a>
zqu^YYP@7;2@>nQkX&#G2ZZ-Cc^H?H&E+aZzmdA3XU7@Jk{?~xzT%`i6&SOm;Rvw-_
zY}xpQ-aLFFbVawcpR))7Q=OpFvYe4TqIo=($I~*7<#Br+>+;Uu+r{%pNKEFD$|Ide
zCXZYmd6kL|v&O%BItqELmEzXoh%QV^R^pC4?#bicJnmGccNv@YdE6~!gU~JHeR<rU
z$D?^{&f|eR9?aum*>5zdSe;FIJY>3}n>EEpR4Ni4Tk?2P_K)T9xX2Tx%#3x<&elA(
zDT)fSen$MYJhtcYY#z@k_`L9C;R|`ZDDsk!)o-W?`IS6gl|r}l^Lid{DEOW#^=2MB
zMVQN5dF;sJZBtHqc*h+M#qe$(yTo@3_x#7<UfH`%x{tF#9v{fzhk1M~QugfGk4$Uy
zS>T-L&+_=3b3y@^74StK`#C8Ua8UsV^7t~3-}Cq*kFWChTDcsilROTJ9}>EGeIx#@
zDXrUXNAmbCkMHyNL9sszkLK|sr~N#RDd<|#2}{C*&2l`C6Dq3f`4{n%d7R4QSMk$I
z_?x(Uc4+x$9)EF8E}%lenFRjMqqxYKJpM5~?Q9+>pqO;pFqNA{i2_O%9A2t`^K{8`
zOI5mn^A#+^OQDR*7En&yP0j*eP(Z~3s>`gBuu1_{3%F3cve2y;{gW_ZHHi$?FtIg_
zQd^{60rd;0qjFwsN?TWisTvf}uz+T=yu`#_s$io68XJX{%&UolO;tM%x8^cqF<KaJ
ztqN#eK=%T!lF~*79Sdk%K)V9k8*i7JTGQth1zc(L4#rO>qjWByi+ERIH>0yWJ;eJJ
z&|l^0sbDW*Z(*MT`ijtaEnoXmVFt-~peZ?{2Fr#e86xp&1$lyoDfnyw&lNCSd_(~w
z3%HgZ3Roj$l<>v^CKWJRoUL)a$e04g8f9Do;|;%|fC+|AEI9v=&LlS#Fu8zR3YcBM
z6rOP|1B6oxm?m;_0Ymv)m>>P)y9vS>1<Wj9mSR`(wyeZC1<WmAxkOsdD_~&(iwa=!
z`SP$p$S59*3s_RXtum&or3G->TxJ}S^Pt&^0&a7~0#=Kx5;BVAAtzb|cnYu!@D}ih
zYUeA!UqH5iTmgXsf)XPIgiPJTBJSN@V$|p{k$3@#0+I!!jGh+Z*CaAV;Q}UKK%s#9
zjq?AvIt#EVs`vfhbW1malytW=(xqS^DWH<lAP7iFh;+!iy*t}AOLwP$bV$dS?hr(f
z`ag5ed(_|my5_pC&$-WYV$RH*ot>STwGdoXYZ7cpuqP#-!#HR<Wqdd@w8{-P9S>Eb
zda1HGd`XZS8w3JL2+|BCA)<1_s?Ml#WG{-7^&}*curvwFlCYZ2a_UOz3aV5q-@jHV
zmUUl4UQ0cbJ$dfhkc1s7W+Pz}b#oH7D1R$qTN1V_$9&z^P9}FHVRsVt$Uc^Yy-8SZ
zF%IE<N!Xu+))us};I||kNJ0?{-m~Cf5)R1(#S2G=lW-&nx07%u2}fmRrM4toVV%d5
z@Ou(YCE<i>@gzZxm(xi&lZ1;*o|Va;aDi&RWaE4iu5$3@Z;NFRWVyuL%RJ)bF*I?m
z(z!vsmSp^<e?2MrAHya0W)f~OOIXfA?<V1%%)l0;wBUXc9wgyu68>bs!z4T=JW}!U
zFUfx-;R%!JM<xGe^h`E%5?&?YbrPN@;YAYuPQpvZ$W;YdDQU>OAK+9LgWn|KZ4$sy
zN;NWhE$$97K;lJHF)OVFsR`nwu^4Cja)~LOa`I+E1`9GWnaP6e7UZxXvjtf!ct^!#
zCCDD0O*!VHra3LhZ$SYIa#@huf;<-FWk5a|1a(zSIvkW2$<{?dRrXzr@gQm;Cglw_
zawcEcV*H(%bg!rd#Vn{}!3P!;XFxess)Pk4$?scG%7W75G8U9oZJAw?O5~D-Xn6}N
zSWwY|N)}XRaCHl+5UNuDc_&FVCS_-+L8wWsWkGF%`Pi&fC`(-n8d}iEf_luVPi;Vz
zTv@5c<Yv?+)DJCaN|2*cVx(`)nQUP}OH1-SA+6|0u59AA7PPZqmIbpdXm7zs7WB2C
zp9LRV&_PDYg02>HRPmo%@Co@-<$OkvP27p_1+_EP{0iUAg6>TAvY-dyORBkd^(4#A
zDV^zU!B-Z1P3Ie`m{M~evKimsf&mtcvEX|P23qi~1tXX{$b!KZ3?<8#V%gt@kOj=6
zZ<xinJz%&c`Juv*%pGOHcNUB$oBO$_v^ds+aTZLnV6p|{IdA;H80n96bpm;!a-?HZ
z$Ujkkv|uV>8g+&R(+P69Qsy72L7tD0r?F<rXvqEl7UOK+SWOG&THv=JV8J{K=3C&j
zz-7S#mi@(oB^E3sFR~bGCq))pjQK%8mLz7`EU*x))MNa2c*(Uh>7dG9;U<XhwZNlT
zvl#!$o0}K+d~z^yjtW{3VnD)zu!@XZ5FtmE6C+4*T{-3kU24Iy|2Qi+k}?P@Em%cf
zO<hA>t8&*7)?2W_f{o-&GA8oEAM$4E7OI%CY-6reyHi#{<`XM&SdC%XZNU`_u3E6i
zf?qAzYr#GX&Z++FC!CQ_0m1?0AGF|*;=_a^)T0(0BOIrmpq`}uPCZ3EO*KE(&yuAl
z=5y2MnY=)~NWDb8EJ~0_^O(J6!4s~aIM<nV!-AU@+_K=dij=+Xj^eu(+#}zoKA=8S
zxsNP(O#VYTeTU(x1%F!bOgX8o_{)Ol7Q9dntoU2;OAB6+Un}R01#ij!yjLLw$2=u9
z71hj2V?|mk(piz7rmRsGD>5j~NXR5H{gK&<(z4a$TL8_h)NCqJKG}0xk;{q~(lIM?
zTakxZd#%W8MLsLms>u9Syk|vGD+*YRkFbKuFJv`N0N!P?uoXp=FCQGm6pyo_xD_R=
zC@H~Kd}hVx%qnF?B`YdR4^?CtLRo4#E6NipP%BbpO}7t06)UPT+1QF|ggPp>I-!OY
zH3_w-wN<V;-F;w1UFFoXqP`UktY}E55mhEDX~@(jR(wdasTFOlXlF$;CYxK)!itt;
z32sejMU{1LqkOZH_Dpt^p;P|HR&*enJLf0L|J0iNKM|ei^rn7cMQ1`6D|)KPu2ys-
zcUMji!k1L@gS(gFudMjmif^pwW5p0FhFZ~AmHO6-ev12BF+lM^>%VX67({b0)$H&v
zE51{a!>t&hcqC!ee<DX)F^0+Ssbi_;=Yovecq@LeVuBSDt(as*+zQ=_$yQ9U!eNEe
ziXW|*YQ-We7F#imWoJ^Q>~t$;kbhE6Y0k7iTQSRu*)-=+=UXw?ig{$Y>L_LVjllvY
z7gB@rq=UTnft*BLLN#ByVj)|pQr2dLooxQ>?oxip3OCt9)u>)8d{+3a$uDLJS`nZx
z&6%G#(nOd}gevt%2{EelHetn5D^@ePOvRYncexcSl(UksN{%m{qO4KAB-bfkPuM`+
zXvHSNW|h0eimi&bS+U)U9ddZeM}QT(t=L1}Wi@^^5L1?4$<kq2%n#gsR_wRpH!BWU
zanOouR$RB@5bHD#y~E@qoHUMFag1=>iqlq{vEl@iC#f>4{BFf5vXqsiEN88_q;k($
zah`lZITtxKnUR;JA?05oT&2oSgg4lSd(@j$>HjS&Zj<j=aaZQUFO8ifk;_nN{k|0s
zROCY|9w~lo#UF~FSn-tnC-s@~{~|o6R?3f;R=kpZ-i8S_ytd+vOoldevf-^2uo=y@
zrKYeUJ0T@C6;*Om+mMEw)`oO8$m@&K+aR}8Nmd3MGTM;IhFdb*Qw1{HkcBKUlFUlZ
z_8&(I=CC2B4Y^otZW}&SZRN2cuMPQZ$Ztad8*155+lGQR6tbb54drckmrWP7p_mPY
zZ79N|wDR76>X&438%o;nz6~Y*<Cl`o+fc@avRn%ZGka))td}G!*ig}i>MT{shRTF$
zR0*hJLseCwIRa8ve9;;<)Ks03tU3%6zmW|e*ie_rdNwpretlJs#57a|8>`$VbY!4p
zX=+0=`pu~=s4Z=1WkYLn8>+c3W@p-QJlj)0qJB*6K$SW>5<aovQ{{YSOa7iHxnIy6
zU_)m@7iw2(H)?lk4;#KD^t9m{f|TuLLvO`j+3>YubN1+CLti@msQp#0Ie`qc;aeL9
z*)Ul7-`Oxk@le7r8-^=qgbgFfqm*MF@}rp?W5f5#A4?c#!+7OLixU;kw_y@_GIa{|
zM;oTvFipkGAxx*vu;C}=&$QuZ#j|Xft=N2*%UqjrgZ(_4@vd3{8J`6VSV&!D!(zfO
z)Fsp;s>KE?!DfS(V7I|xgVP3=&G`1Wk)Jzm8$32>43IAoGQCTd`E9~ygP(qY@j<fr
zmC6i=*l^E*`wm2Hh}jUgL6^!MoP}&yYQs!Bezs$o4a;pvVMj_kR@ku8hVwRDU~Q{x
z*l5Eh8&)&9hPsw2Yr2lGp1MJ9?BN;CW+s1?-P?vODsn4f8+AK%2X!ZPmkqlKQs*9m
zxs~_XaGJ^eHvDG80TpwcaFBY4df0{|griic=NLiuffLF(N%-A{Qv~xQ>Ws=gYr{Em
zL4M1-Xu~DhvNk-k;WGW}Hrx<U@mFlPO1?(@=PA^iHvB>7mJPRUxTE49+i+L$Jsa*T
zeqh5x@*}GG!|RY?#x|1Wi49Lx<i6a7`4^L~Y<RBx7lgm5FJ&%O&vm}0^F}@e2(TN)
zw+=Nll^v<=XkbS}JJQ&Z){cU96tW|o9qH}J&d3bZEYytDOw`O&sl?ny?=YFwj%>=G
zF%mfx=d>f29l7nuV@FSU^o+i_BKgSqRb&Bz4CA|Y6ed@(qX?mt9i<8HQHxTG*-@NO
zf-3zfNqC=X_HBPflwq<gwH&oPwE|U2RkWj$;>vc&B`-0n(y3-gbwUk0J|NUok+tlo
zt+)<BTC7W`N3E}N<$HP~I~v<D(2j5IXky2Qc6@9{2RoXon6`E_Q{0@;g4&YWirU(a
zHU#OO%slNBw<mmLhdHVp?f8UFUpqb}d|^jtJ3b?SPL&!u5oDI=qMTlYu6A@&PIo(c
zkiS$;PkZtwNN?qQWyjZwzp<ka*&KXnr5}_1?HE8X_q{=O47Ov89pBqA#BTggfh<EA
zaFjdeFgu1bIf6QpDz%Lwd}qgKg51s|=2(?G*^Y7K@yhwZjtS(6%9%uvEi#4hqa9Q2
zkoVF^J=5q+r_P}MM3pR=C}!C)+m65OcxlHRJLcN4){b>{%(G*@9acMRb}V50FRIi+
z!Xi5sD`z9uZV8h~c324JR+Cojb|marYKOxPC$n631XWqL9UjG+9bU4J>Zb-&uFQBL
za+n&SMyWAsoGLBq1i2c#jIc`i%Lyx}E2-voSxsJJhnZZ@<V8C!*|EWnjdpCZW3%Mi
zam<b_c5G$9KI%5=uXb!FNb5W7*r|9IVK;S;{onWe@1<i7(SGu8)B|=LBpjkjZHEa*
z)cz@R;Bh;Cr+I>UQbo$e<WuC+$~j}lS;gn<I8VMnHLpBh7PjLVohwvn@rfN*?YL&g
zb>-Z%<A&m!cHB~Yn{daDy9D#-xKDndVjkM@NbzIBA9lz?^wQ8%CjX@V^Nzv4?08P+
z1y#ai)_rBiYniDWsO!KRJKoxn*?}w$fS>s3s3{ys=|C#7luGMBYH}J!@<T&%c}J#A
z$&w{Kvobi4QN?F+B!9lV<3LsiDmqZffou+BXTbXo<ZvJ-xr76`RH-5k<R<5FAg=@Y
z$c3o+sRgJ7spf^vcgcmR|I8=vIZ%|2^sSf!#mVM8P||_I^4#KJqvxgQm!_6c@nsz-
zM=r0N3XXs8ZmLYPI<*S5DzzHbthNTZCbgCWwFz~o(x^K>>N!x~fwszNKxj#ANNwam
zW0l*)fe#foB{XxOxpG<%%oT6tKx^f<A(#_sI|tf3@R0)_JJ7*_2@XtjprZqyI55zG
zZyos5fzKT1>_8U>e^tqZ&mHLGFuwNc@)dwpnfHjAC+A%q=;nZAb!XOB4)k!~O9y%~
z*~@|6guS`{y@n&dPkrscHxBe+R)1<=2l^2fPENjVAmcMYI>Q-z5VJ-(@SOvL9T>vo
zPzOd3hB+`?Rw_mEKmAF;k@U@ePUN}GXgZQL#)0o080)||2gcL<!SU}iR<68wHqtm%
zp5(w}2NpQ6(19rq{K&{T4or1m8hI8~PG6@JW;pPZ12f6e%FilSSk_l`w!=8rHCJaY
zbLTlQpCGr@$sY|Ya$qr&4(cyds{>02NmQxFB8MsuG+`S}y8{>KIGOzCik8~}j{_P_
zuLA)Gf)4nY^i!n<W9FBRIdF$ggu0p<rN$hH%l363;V}M&c!g|Pd78k1WlRd22mW#g
ze&cQ160?$7t5krrvc`e64y<!vJ?j+bfCC#8Z**W2d9wps9N6l>HYRsdw>yj{(07t|
zP-Pf*5zIB+<G`;>?q%d}<bBlr9CIlyiv%BZ;1K=8)awo$Aslt!m;=WhIN`u$Iwu|Y
z-GOrsoM-YB^|Y*eL1R;%k?D&AewM!MEv7G77wBB1UXr2XmoFpOfh#nHuR3r|v03nj
z12^g1qDnotRa<xIn7_t8aNr@6E*Bm-@YsQsPONg`4+ow&P~M3OPNREI9eCxyYX|;h
z@H6UPRLOnrzzfBH6JAoyuK;gk@^|7L*7H_A1qf0q1tFyqsg#r2i8M~6bs`;|Ov+F1
zL<Yqfoyf_5T*^$x-1()ptWM;RESlMz$gbiW@n`5<PQ33#DVn*R$V15ML_R`(>U&NU
zAQYq)qQ2`yVS+ruT!dh@E-e;ivX~Ra2_>i{sgm1<M`&p#%Q%zIip4MML^%~BXJQqd
zsN}?_PJHG>W%?~tZWTgRC#n&uQ)@U;(}`LtrhyZ+ov6d)2h_SwW6zOYq8^j=spc-x
zkle_L#!fVm;Tnu)bfi}wI?+^d8h&^+XHs^ymV{O+x3v>(6t^X`qqe7h<iy8>4%CiR
zss9tgkMi0FCptOty%S^Ud_nE&L}x-5C%O{4Iq@|?%62F8pnfT9r~F=o-qf$0#&3}l
z{Ef=(LlCo{6aAeS;KV>DM$-J&i9t>bCl96$rAqN3PRMJx1Y{XT(|lNIgfsbkV-(Hr
zsH3T4s1h&ZInIgkPPpm(p!{is3Dk*BOj7=2!W1WdRL)dq@|nPNCuY$6i8`M;(}|x|
z<SfE$>KrHLDt{h9PS_R@7CN!WiN$2Aiur}GgqlRPP|ZsRHnN@SpgO58>gBg@Jp|1O
zuM<9UjOwS#I0T#sl0(V~I}uSFbtYfYmB=_v-H8NYsft<V#B%Zq<;eX%tDRUQ(~%1m
zU0CbHIw#ILan6bLPHbS<AtyExwm7ksu*r$d1oJD8w78AQ{j!w_JE%LUyQsUV61m5T
zU&(uwv(K6Qt@AfJ2dD?B<{@*Ke1s}B9ChND;^R)7AfHsu?}SrMoF<%6zRVlvow(pc
zN*7YOaFPB!C+<6OiG10Nq+T&u=6@%yIdR>I8+2|{Z&Ghj&3W<;S^9QYt;+)^9y;+_
z`Hu)ssgLDTK>1GyvWH9AKgrLW_)FzJcj5*4Z|Y0szmmCv)8HFAZ>ew@m876Hkbhbn
zg4E>fF63|_4Os%x64FuAQ!}`bQRQZGA+rlvTzH30Hsxn^C7%wN>zmVsT+Av#&Fw-V
zLLO>fYCfv8n4eI<g@Oe0r1xDH3Nu;6h4)nC*eS*;6m_8(o#M(ji<ETXeLAJ6rKx48
zWvNoOoD1d2W<M*rP}zlVT^Qs-6&I?y(AI@^45&u^(1q%R8q}K9S}xQk)S)(T;R8Zl
zYCWp7Ro?~k@g?DgG#k0ln9zi3Zlk6uz8Rr8wS@~U39YEDscop{bxWzUy$fCGeB{E%
zE_5J^-;rR>DxZ))rG7^J+=WhrFQ}cVU8vvi{Ja~vy9+&B_>$b0DmC{c^rH5re&xc~
zD)$=~`jBP4<ion3^833mK=D9=xjzqfVU!EsxiCcK4kZku4yTTwj+DKQzebH_@&~H)
zXAI$c>R9SH7sjhxxo$AQg^4aqa$&Ly7UfTI;b+A^x-eDoG{STjW)OZ-{!AClk(otj
zwhMCzb6r?On5QD=6Bf9zkg%0+Ta|t;cHtK~OQ=cz$+eOt#zwHa;2=1aFJt9)!Q+DF
zf>(|*H$Hd6=YrpboNnZDBj7^Ng>x>PXOWN#8(i2(4pSp8L<un$;x6beBxEM1BkeAA
zVHJ6qa+bTWg1nMy9x1EIYyRU%*>y~=SLP<dQR-$Fwh*?u@GC*$x4E!g@eaaH7j_YL
zD}N8cY;>;+`<UEM{Y}LjaN(c}hnPI<!V%@mUS}Rt$LJha{t3cK>hCU`BAlk4p-SJ*
zy0E)M@)^hl7yfeLIkPUhaLI+s!YcBX3s)3hb>SNMI`szirplEHZ@X}Z$-C6YF5FYO
z_X!VNcu07pe7OSihvFwLJXQQB;hF2-U-4eJkkXA*Zll|OyYSM5S1!C(@hRMRBa<i3
zsov6r+ql*$!RF_3Y8K2$6*CPXEj67R=?NMB$sLSL<jl&+LU@Oo)s1Y*&+bMJvdmQS
zn_zA?^0?8^jYe+dbt9h})m3DEH;TJa!i@sTDM%>f#=FWX>_!ptd(@)TVk&o61(Z}=
zf$+W?rIb_JjWXo2)N<7FDpxKvRU}uUR;E@_xmDe$MqXDpd9SF!WKC)<H)^ZMI)o40
zsH>cMZqz3?pqg)Ck`ZpqWLr0ysK^i9XsWmwp}89^2ra3tRBmfR8>;zv*UpXhZhYj%
z$13I%LI-L`H{?^kiriSpq-#2aJE_Po-S|RrXE(Yi?&?N2a(CtQAjn+W(~Vx_-fn#B
z#vt-nZhWmGzj33F;=Y7_)c$S^APl6MC-#HMqum%o7~;lIxAAWIVQvhkGs2CL1oP&!
zQEq(4q}(VXiwveL<~Yb)G0u(gZfsnJP0R3u8x!1E>BlNRCb}`njjmpF^J20aQ{3q8
zK@SgpbYrR;<vb|wF{+y8#tK$0Jl%~MZv5oNOy$gS<7dUv;%qnOFge$aB<0U@W4_`A
zZY)&1$c@G1U#LrzZ}!~chLw)Z4LiX>jk@6^xTw-Aw;LWeG&j6-f^LKeJ~#aG5kNjP
z5)t`EncrBWup1FoR(#Wp(TP)am75?er7m-0x$>olE8SS-#<+Y~P4kQ!Yus4t#yU6F
zyRqMm-{@~}V+UcQ8=KtNOy26oHaE7olW+ExsX(4;m)T%DbN@Mq+3ChEH+H+R$Bkdz
z*z3l={}hoGkwt?4i9g`RVK<Jragg;KqMA1z93>xj<AfW>R4ZoINjH9{BejWh%8k>q
z5&3=73^?n?IXBL`jg#05DpL5O+qhUNr7pQ~S$sFHxN+4Dc#y(_Yi?Y3;}18UFzkjK
zcL_JCx2U(}2$lOk$x@Zv*nH28`))j-^U#e)3^4C6dQ4N|WfAA88-LPysbZeF@fV%v
zZv4&OO4thpX2Dl(yk^WBH{QC9HyBHdS)sgZH>C%uJSgNb>QC)K8V@piki`S}zwERg
zWT2nUgT3XEo`;5nb;@T9OGXbeF;^T(zT-hwCi8oc&0_@Q@*uYd*=gpW=2Y?0dLD9K
z<w(5Llh0#Zhm;*dxB#;XQsp<PcReWVK@kt$6UT#69u#F(F%OCpq=pg%DO-|VHP^9W
z0hFd+R^^sq_asafxhhq`gNlrALajut>Oo~f6;JZVtL*l&-K){8POU+$=|L?*ZE774
zJ|NWfpb?=SRm#>UG@v%5nvWGU_Mjar|4>CXB{ZWp_n?LHTYAvSgVr9jq0>qEZ3*o>
zXixY^`5$}G!Gn%Wej;nF{7*f`MW?uY@s|rhveEf<@(Y#Q*@G^MyAry2lJ7A2(u1BJ
zbk@*CLoW|{djJh7G-G7G@<8*z%lNOU-%$H_(AR^09`yHMfCuwv4)ow#4<>mq*@HoJ
zhI=r=gTdq>)S=X2RH<LC@s1>qQO+pBchu3I<kt>-@4;9)<2?9*FrF&!NH_n!bAksG
z=}4XOb!>{_pXF14Jk^6~9!w|Cq|Q(=KY5bB!O6}h#buertl88#9?T_}SNZ09u)u?b
z9xS5ipf09bsJ~E`P?J>utxVdecB-@@6*|c-<+uqRwOxE3_+|d_;5z+)2m3wvjr)1f
zgAmQI2N4gV9>hG@=D~KFaSt|nu*n0R$pm$&2g^KI?!gL=abNdp4^|SSC#yUt%M}-2
zl56O%rHZr8gZ1PM${8=0I0hjV|Brh!E8pV5R)Q4wRWye2vHbY!!A=i$DSsbfw+DNa
z^Q%ljWV48rGEV~z&^+eBLBb*GVXDL&@!%-=Ex&mkC!g@(B;j}J1?nm4Y3dmd&Jv`C
zbA<C8Nl9L0@)Gs3iuoVmip&^t{YOPg@D2J;Iqlr^;Fbrs$#<xasCPZMN4QUYK$Usv
zAwg!a$AmwW|Ag?Aga4-o&)CFY)aO)b_k{<4lV4I_dGMO>#)G$nl$>oOQXr*<R2mv;
zXrv)E4`lJ{X-K0Xt%h_O(rYM9KZAyh8cL8eX~?XhC^?IUcQj<zkV8XOI@zdFk9?$>
zpQpk(X%^OyOG9pQ9_qUq@@mLO&QC3*p@4>hVsbU5>@IbmybOpWWhtWJJq8O)6U7u4
z*OF(dl62mumQuMAS%zFzIps8z*HA%2Mdei2P>EbwIaM@N)liK|^IghPPYn$<HPoW{
zfr_k6s6&-s2J0&SNk-HsH&BkbB8@fUQ?E76Ce#n9O{vW^G$+V9w$RX$+=?nc2bkl~
zMnhXV?NnrY!bciDR!#>E9m$_iKUMx`gwLs+G<>0ac?71bhHe@@^Wt+ax@+jctcqTI
zsTrS!8NA5oMNgW&H1yW+m4>f11T+LSe50X{29E|!LthR3H2k1pf`<MY251=1RUW9}
zTMZ*LjAU|<hQS(!uyUzi#$>35VXR;HGdjZ=Y4RuyqZ$0&f6Or&zL!3yNFJH78pg2(
z(~)WgCNh4ihG~RJ8YXL)qTxp-Wk}8X`w*tnoJpNQ{YlmTvxZq3W^0(E!J@&cVXlUG
z8Ww3-%*go~7HC+=c(ZA9y`=tM7_dY`5_4q*&2=;bY#QtuT<p0+gOl)2S+j?3nr104
zE0Jm?OB|mDKS#z~k&uS4hG!c7(h$)Q)o@?K0}U}bOf($Ra9o3~A)#TPhW#3rYFMUW
zlZMS2mTOp{VU32h8dhpp#cr>rnw5*nBJHlzuwKIk4IA0CbVE8US)!6_>J|-KHSE-|
zOT#u+vR%UtRhz_^r9^jY*rVZB4SUt9nXQ;rnf#lE0~!u%IHKVoD>=k5kzA=k76CI-
zYCg((1Wsr;so{=>yBdDia7x2f4c9cB)^J9{Sq<kH`A-e!HC&)`S@rXxhD&N4&9?rh
z;fl(YCZv<s*%Px5H#FSTaEk%A=}U~6C6OkGb5FJVkd^<T;faPv8XmKt1ek3-Wl{>7
z$v@R9KPRN}BDEJUH2kgMC7qOBqd%`Syw>oBP6|42$skKrW`+N#KpL;n$+QfR)@4cO
zMS7ZMd?v5)Zk&Q%6!Ido7g?Bm$BV24$uh4tXJZZ7y~sg7Cp8yUTFK4aJYM9blaHF8
zT7W9IHA+?QdW{Yg_o4*j3sZ|w-=h|#7W1MvKN_TmCFw}1_X)BtrP%q>)H2kvUX&x0
zr%Fr(HY8BVi^^V9@uI31t-NT>N~(EL$BPfVsP07#IyI@ayyy?(4|WI1A3=KYz5J0}
zdDLZAGip7mtZ#iU8Ypf^Xyip>FPeCh|25!4noX(Z2TgMo--6K6i){RLRcdSFMO&47
zFa_EvZcq4#`mq-s2py@PP^IjrUgIBZ1!U>uMQ7!IL68CLLXdk`B%r$&JtXPH6`B8K
z+V>*K3kw5!Q72P-d+`<FYw9<$QeN~WkDy9b{bZ~Z5Ab3j`CIBB>R{>+>QFC+5r)fd
z#=CIk<`B8rV<gQ{)bG3)?Zp_f)IV0npKRWzH;z1B<^DjJ;Kf95@@dH=I&zjW#fu-w
zQ@vQ^#bPg}F*)6f8HAs_m_v|OW)gn(VwQ4ddy{9IxyqU6#eDJt>O!h{?EIo)mJnnw
zl{!tedU1lLO~u#=4lkSpmltj?JYHyC?5E@P!so?OFP3@X_afjm-b|igR?v&E*Z7~}
z5R=l1tZ9T!R5>w1+zVYfOWwXUpMhQO#R@Mrd$Glfm0ql3z(y}td$ESR!Hczolqro>
zSVtCE?=}8_K*01jDc`)nvek<{bhasfyB9mW*y+VCI=iU_c#dk;@T-d4OW5aynfn`)
z2dD?Bhp30WIO4@o@^R`hsyY78)Y<PzFMg+giYgsG?Zp}LS?W3EpC?@K;v(Ua@-M6H
ze$|U>a#G|s*7~{^H@w*H!ww&AdT~o85Fgt3aNCPJUZnLIF?U(R-(I}*;vQLcfcsuN
z@ZzBtkGy#7#h<b%z4*h6Co(?MjX$Q5KZxnV3wlqz#+5y}lJl3e#ec4OF7q@0x#k5Y
zF^QC0wqCL3*Q$PLSC%(kyrm-yA5ySCDSb#qNbN%!!hd(mbUvi_L0*8ia56IZkkN-s
zK4kWxE+ey0rMAjGyhF~aoNPX1_aTQ5Iep0GLlGa|V^(fz0csv<UTQuc@)OKGQ0gqm
zWFa5kB^0KLFVk01ABy=<j!tpqm-3;6;*x~-eHfs&cxfNX&@8KBq@MDMEBH`RaV3Iu
zqY9y_@~in!U2zQ`YLaUyr?wAu$R8+2YN$u9ubc*ihCVd%p|KB5e8v&loaTpQS-Yl8
zHls=pTM#6yB?DSfrRKIiwDV!D59@qr@54tv{KCkOedyrB1Ro~)(9wraXbz=*O6}>x
zXFh!HLni^wKiz%!f?1t?#z%h_a#yPKryD_bi5`S6RZ_Bg`Ow>kujurreog&`+J`D(
zeF^=1$-kV6Gr)&|G{2<|@?kJxh%foR6!RFD$YJz{Q%CqP(uYyx?|c|b7)>2R{hlhN
z%&B7>ljEsBP-T555oS^)a<UIo6#qz=N}cAzbmh<R;U~rBq4Bd1vwWEC!yNkasdK6G
z{%_<09~LTSkq?W>=CCjEA;|}e4^|%%^lj7#)$W6X;H3I|a1o@>Zi2@LO*vlQzu&d}
zGy~M24<SNWMN0pp<QO%seBGBkuP&vtO!>=wSV3M%T}53@T|<@r$m*;oZ}nlD4;#2&
zZKShF#cU>Q@fokZl_KUanq_yYn8QBoQoNh6hx)7R6@-1%{ZuLYn-2#RA0!;2O65m<
zIO@YOACCL*z=wxEobchK5BC}HyAP*ie)i#(52t-NBl|!)T;<MxmU_j9b8<|jz<DMw
zP%rv$iKaAtnT{MR|C8e=pK;Vku&6B8e7Nqz4K^efSDTJB{M(GbE0ZT<?)dQM<mC8!
z%rcWQl8;zWns`lk?86^~C)B4Z_fNtzAO2F#bHWSi-_(~rydwNFqrUOsEgkUFDg{;A
zN=ZmXP3=b-LRxA%YI>?fX7DHf`$;B0GW(Imk9Yj&<40dVvigyYVWs`Z?ne$k-dCk^
z`caaci<;YyJbvUQzpG;M`H^370Y3_o3sL25A=0!gh5aZ(=RFl!)Q@81;?xq#AIEre
zH!DTc<T8GgWwM+f<^8BYuI@(-KPr+dQ7cocP^(g_QKb)3Pfb5+`O(skRy4(_?MEHI
zF`a(khrAf7sULOysOLw0KN>Kmu^$a(K-APE^)zBK75mwQF&|P*r<otknUu?4EeKM1
zYd_lf(Z!Fhe&ej5tskE-OOxMC2<`p&$d4)V@_%XvYDcR4${_xyW>wVBshy}_P&-pU
znrs}Q-N;{4yZh0@k1xrR)r-*6Z@iI7lD(PyiYl+eGUwiJ{4h8l`uWkHS+o2YK$uLG
zf&&TP`Z36l!Q>%+jPzp^d8i-5ROE0!MkqEXknfnBNFD9R7(c!zkEQ-V9Y-B6{p6f8
zfk|oiX<kesoBkB?kJPCuW||+<70)32<i||H&&rqLv;COk$6P<=`4Lh6d_R66FQ6_|
z{vtmXE0(Rf#E&FDEPh!12>KE7!{&$GZ`_CPXPCnejo_rp*I}0*ZnB3e>mo0F^D6fF
zlfNqk=*Y_h<&05k3$so+CzN>Uvosy`BgWlNcF4FNy5fW%OUcWWvz)MkD*O3rKi2rM
zJ&GMsto37^9K}K83u3(=8~peofC&L?^kb9kEdlflU^5Hm51>E*Tm0DS$2Ruui62j;
z9@&kV+$sAlPemZtd;Qq$#~wd^^<%FeH~qNf$38#y`_U*3uK4jAiyZUgxE}||2mLtY
z$6-H?_;J*q{OGZHnKaFKq~QK6>wdzIQ+}NG<0MP{P8DCOJ>$n&CNKMO&X4ncTvEB;
z$gjX;IS0PzhnxmW5m^jSF~V2L*OYUeaKn#(?s~n=vJd>Yqhjt7?)h<_AlpTjhvY}p
z$J9SmuG#LNGUW!0K0Nc|FF&69@qz(q1NfUDSzy3RCSUpSn(&7DR>eqL5}AULDXFOf
zNKFtwO~81DT_7Eu^wbR0j4CEm0GY{Ilp}R!4Io<p*#pL0Cwr`D4zfVb0CFkLO~?~K
zUP3<Qo4qQ?3Tp;Xi12Ozg##!Oz<W$q44^2XQ~;#|C>B6*CQAfRQtBbgeN(bX|IM{1
zLsOFF11PJwTma>{DJ#&CNb{NfN&!@+Q$<Bq4WJsix^ij+l24v%(WxCk9l{6Hj{~S1
zKs|DO>W2X|AV?n?2GB@xV?vWa^7oXc0W=Gsc>pcwx23iWpcTP9Mp_5ZMh-4Mu_BHP
zY&+(*H)E*Mikw1s2%uvCpQy3zO!!oKPWYVKN#%Y)kP5pfrz@db0Nn{asB)!CT9o>G
z1u#st)jNQ%6n`DSH{?Fb=}YJrK!3sj<qr(tTg8J2g98{s7^-~p)Ma=8Bj}8zj-q}?
z9Zi+~j3Ina9UH(n<&O^-f59mM69bqOz`g+XGix$+Y5-GI<d15bP77dq05bykNoF(V
z&ZI5~U?Jh>0A>X+n>>d)k2+V?AkEDWB+qG!0$3b?9zY_1Ul``3O3V^M64erbm0+XV
zsSc_{%5mWez#V`m0F7oO0I$jo2H;cdCj_YGRhLizVU;V}H>x;Bh^sy?RsI^nvH+G7
zRw#cZVO0RDl_T}9RlJU{p1L7`fqbv>CMGviw*;`2u#NgFbvt!O06Ph?rn?Bc1K6V+
zIWYH<&Hewk01hyjEr^4J8`MJq945$E9U(|<M*}z(!0`Z1&^Z^t`2bF;+}{bOsHX!s
zqx`dh<a34#bS_gbs@zLz%S!$Kqj@EOt19<e0N2Up;NMjKtpIKZaEHme0lbjuI)Hmj
z-lskY;9&rd0(i{i^8o%JNGpF5o&@leV4k;#|BT7MsAhAba(KR!nLLOzLA(m!bpZ0d
z>o@H4Te1Ymf*?`^c}5yEj*e78V|O(d$xRzXrXVs0k&ZFxsp4k{BBNpnmZ8qVq_E_^
zL(a;oB$+*k9IQNN5V;8E^qxD2JpV~b+5ABikR^<QvIJ2mh;bo|58>S)3J0;7!9}Rj
z)z5=?FNmT+6r)ovi1LKu)DqN^(i1`{YH6yJEkh_vmCjTMqGAvqGg&E!%0aXaqD>H0
zf~Xoqy&&obQB9St6GZi(al>H^IyI@aRBr8{@sGyR#0PZhQf1Y|X`o_S1ko^vMnN>D
z)0Emo<$g#o-*eTB+?;A&!fF{rD<;h`Y)h8P+XvB3HdY>E+ezO(qJNoZ<{ii#sh?0k
zrG7@0vT|f~3gU|(ItS5(<}X2XHDlQGZb5VpqDK&41~DLrfkE_CTmKtEFKX`~zEb|z
z1nH#g0DZ`Psr`cJuVN(k+aLx7F)@fqK@6t<oyr{&#Lysy1u<MXBZC+bG<G(r)6`MS
zl2slZ#F!wyXL7uXA1nKhVu}BOJVEW2;!F-=3e5%7AA^_?#7{v?WpWx-+M3RxkXD3e
z1~EH`IYIo)T&ZLhD>VBvm*zZn(u|+4IxJ-u2C;|%i~lpWOUOx7OAyu|Y(dx=76`&Y
zkg{43PO^*Yrh2GmLte5(`q-jh^(q)dD2Q+nkswwCv65j?>e3)$LBxa5RoMhVDm3eq
zm0A|Wa+NFQD#aUuSRKTgAlA}Zul#j#$Z%pY2V^6C;Z14`Wq;ce#MU6T(b*nE+K{nL
zcLcFBh+RSK4&q`Emx9<6#IJIo1#v2fy+P~?;($!`tZ;u2zp=R4im8X_91Y@F5QiBi
zZ5<(4)s>m!j5!g+NttJObjTM3bA3+-aW;r^a{RK0jHLNMx8$A=;sQri8j?k-y)5+v
z@n;avg18dI)gT_QX34r1#H}E12XURwjUaBSZDH0aF?ZO6RCSjz_ky_37|D{yy+vht
z7{sF>9tZIUW1a-@RQBhwMsLmA*v$F=FBW_i#OolQvy(4WPyQyn3>uH1%3Y>!7%9b5
zgp4NMG8ZA^SA*@jk&<RAYU&Wug#Nv!TE;=*(@A6q8A8YyLZ%Qt3gP1rGKY{Qgo+_l
zV!?MpC?wN$2w6kO7DDzAa)gj4guEf-WPsF@n~;lomTP(_4f3hnf+6G&p+G449p>`1
zz7&x!U!sLWC=$Z^jC_w;LX|2?C`K(V#nsjRlA+|M8%l*xI)pMIlx0i>YPk@k>GI_4
zazhbENg5KfatKvIXv(arAyf<DgAnR6Sv`cBA=C<?29pxsD2>s*+Dz7={#p^{FQ?+y
z3!y;>4e8ep{rgO7BRU_3(3sF9gxVYp>AY+aDcCH8=FDmlLYolUhR`yER%(q}GfRE|
zGRLqTlkG$QUR~dj8y!OE7()LL288el1G<FJmGG$?bRm3B?i9ioA#^7Hb759)43<80
zqxoeBJqg{ZJ*e4dq8H(7X*7i1A$-N8d1JY(LLcdB2>obInP}8zzL#FWe4)p{5QZ^V
zoNoz(LKqyv5E*%1s~JkOyS#OlBQrdN5h08WVU#L0I)v}YJEj};%QA+^??V_HLaI^5
zTMJD8hY+@guq}iMAxvb<q!1z@L_?U&<P@p|{}{s55T=DNU3NA(9z$@1Fe8MYn4B5H
zyb$Jx@H3OMLYPgML!Ha1OiGzk%7PFUhVV-WOPISzjv9W5NWfw`W-^Iv4Z%V%i`!JN
z8RHDW&s-PPP4$GJh2SOosOIb>H3$Ug2nPuvYWP3Z#zKgPpmW6~-dtn^5+N)NVHy49
zA*@g%lWHDThOjDx)gi12VUzOLhOmLWj=G-e<@~vkY+i)fOx{8*$s=?-Sz0_0!VdCI
z>MrVTmAi-VD|Ih*UkLj{#;<0-QO!FU4yyP=gu@{m3E^l6$3i$B!s8JB2;oEsCz*Rq
z=C=?|kuQaCnsA;f{W%lDS@JpMJm5o87nr;l`uFLB%Vt0bR|r=_kURb4;d-g$dI&c{
zxEaE&5bn!-BG>;JbJr{)p8^D#J?;_ACZym4CLf0Ih>(l5J&`q)={JmwVf-1wvk=~f
zfH3}I%q!~i5MB`eroN=gW|c0<O|!3=d_$F1<l*`hVdJPtOHCO@sxVTM#Y{tprh(kM
zD@j?>g^`}7JUk-FOkrdWBR8Ea)Er^sfsS{`S;NQ{#>Mf;WwX<i>%ch)Qao4KxQ=Jm
zoF|OD^z%{kQ_Y#bP#EuqF*BMRSvZVc5#t~#!kG8MC>lnwFp4v|A%YTNlnkRl1O+2_
zKa5ggtPW#M7^TA~6Gqc8n#t(Nn;*ic6-Mna%7sxrj0$1ABVVuN*(l~#45JdEGFAMS
zgHbgMTT4`<Q$36tVZ1Gc_p_oV9r-~=!s?J4%Bm4Q2%|2c9<@GIZij9VhN#3hmaQox
zMwVogFg|3A1W2-Z7%jqB6vpB(T87aojJ{#?3!`-y@=^6!7@vpHCXBWWZWqSKVRQ(i
zJ(E)Wqp<O`mq175d`kF)I$i!Pr6tC-M5i#m;OKoFHfGDtVRQ|nTNquK6h~_49!8Ha
zdWZ2<7+;3blQs0BN`Oc8-vsf^<r{WD0{XCsl<FVGfG{S8F)56JVSF3LcVUbUV~}hn
zx#2U6VPOnrwK4)j2<AWy4`W0aBk62pbEBkkm6Vt<VTdy}jB#OnABMz8u9OlOAI1-1
zOkjl)DT~xBxw1?SV@epa!<ZAsk6}z@g+FuaObcUr7&BBieq#JgW=RcFtqh<Evsg+3
z=7uqk0rMFwG139?1r{)7A$5bi|2d2$VMN1-g^?77C5(MsDXZ*bVR*vO!mz9UJ6X!X
zI%Qk9!f>-rVObGr!W)J!j9?fc`eI6pe)c3FM>J~=vy%RA-$s}#U}nX`(8E|3#&Y@z
zs?@oZAZ^LAA`CglkWXQ0aV6_nMU|v%=(S<23*)lvLSd{AV?!AGWzUh~VQk`h?O;zf
zb8^@o#un+nymOK@Y@^y*8hg9+S(?}xhNz6jt}u2pcMtVf>R#$Tstll%Iv~4HLmUjF
zUVbBaLr&hp#{Dpd!#EPg(J+pMaXO4MVH^+RL>MQ-_+3Vrk<xitPO%=7#h2anY#8Sl
zb197TVO(H^7a1l8lmtlqvIs~iY4l1MSHt)tj3;4Sqa&uQ)O9Hs#?3Hph4GNStlI4`
z?#ia*VBX<TCc*c@xX*wGJW}MzO0%IyG#{H;ye|DzSSG6ovPO)__E{JyB1jp*Utv5C
z<3$*Mhw+B-vU9!+<5d{1xs%9tltuQ920T*UhJlFT$gqn_A5uk-I)Y3QW9!J0CW7=4
zWQZVb1nDA1!1pbak2sSv(lj}9#F$C4(2=sjQf;<~F=^+DAiFA_BZ8b{bBpID=ZPRM
zAzuXf2~wwYQdEYwPz3KrFh7C?5fqM~NCa&nXdA(M5fqJ}Rs^*pD8^EyA}Ad(+AU5k
z5kX0=;QLI<I?8~QiJ)u*RU@cIvmCWNRc4P05mbzzQUsMF#$-|@Vib|%S6HewSwQ+$
zoh{a&_6(yYL3%4IUMGSNBB&cN-q|H{yR3yAYxNjVKY|7kG>o881kEC7E=l<ah#0eO
z6Y@tg|3}c2j=2NKV7A~EX&FH))k^D#u>*@rixMW>E`s(EOpIWXd^kq%aRkF77!g5-
z2s%a}8*X3(pG5F!1YbtbGlI_|_&kCx5p-ppog(PWR;2%5L@<;e_fkq)?-oIKX7%7E
zmViN}jMbF&673a1?+Ct$picx}MKHM%zE=B>tdta&O8Q37FM|FN3}BYT$YOurs6+x}
z5%@NOK@kjQXNFRTP-UpiwuW&nq|uRF_c6>J6@g4*-$gK5c3n;&vUOZC|3@&E<3Eml
z{z0}Q<K>u@8YV=HpR~+x*)q{hX4bq2rf_rr7{OGQofg5&2!4)WdIU2f_=z2m!$)e6
zEi2n}Rs^%T=ggJdu(8p_pF@>hMS3EpIZ6v7SQLR@dK<xF4(~4!EaCAhU*VG?u+a3d
zC)S8DeQj?DTLgCY-$CCUfs^2(O3iZkN6Q&aXc2g6%6EK8`pB}5!3aVTBqCTEL71kl
z%0>v$2x5dd)jTQ}a^o(GU^z`Qxq>Xy*UAW1MX)-8H9Wf4MU0aoX;hZAJlq7<Ggvwx
zEHl7HMsA8=Ghqu={H+meBX3vE4#G~Ve1qN{!JY_yjbLvCCnNZs{yyq&5$q?-%4|$B
z2O`Lp1_$X#@=yea6(1oSr5>Xmr=E}lfxn%dVp2-|#FNa^5uAzOYy{^bI4|=|6h))B
z5W&R=(nOIqic1k(j^J?wf0zX$xGtNFd?kXbglkke<u2yM%?NHWd7pYag1ZE1@eWUA
z1@0+F-jVfy{4jz?a-8zIhXfes@DV(X;O_`t%J4GgIrSO!FRGjvORy|2n3PhlB6uwy
z5L~r4G(mn#mPoTm3YsRTBBzcfzuPTc6zQYL9YvlfGDMM)x!I|isP9CPnIN@gA(-9H
z8bvnci<3if&M0yzmhs7}xKI@N$oZov5Jf?<`6e;5LaG1VC<@arLNz;FEQ;b$)QX~Z
z6eXf4$*ihTyiX__MY$+Sk)?*xQIsM7Q)l@oD$%Jxtw=R%u1uCvRg_tcP+j>o2sNX|
zR}u-U6U7Hnd=W)w`gNmd97U5T>P1mMYFwF-n=u+h(NM7@8%2}fmiA#3O`~WRMf)h4
zMbSKp)={*HqD7Sd{}@Fpf((e168-<6E$bBXqbNR(;*%&ojiLjKNPI_CRyrx&_$-Rg
zqv)h^|67~nc8Q{E6eFS-8AZ1!x<@e}ih)t|h~mpAzLtif=ov+?D0)Znm8#jiMrW?0
zsMOgfioQ|wi=sdKW;QLpnQO*>8^xd~hD0%xBW4yKOqR%Ds)xg)cv{z}Qx;jBQBiys
z#l$EkMKL;xF;R?<;s*wQAH~=x#;IOOsV?#h)J$XRnC(tr<z{V@qnHxKbUHt>$TV(_
zsqC;6G>2MrhU%WwV{Yr8qnH)N>?r0$5sD%l#azZ%qp(FWk1WCS2@9wTqgX^(O#Ou_
zF-r(Z(gDKm5=L+BQ8<`1cT^|$F;~?1*NOM#bCX#fssw8UZxlY|_z3}OFq(Y-NrcIb
z)M(V0USi~U6nYd1@@nc*s?@wJisgz|M6puwD%l4(f3BgkR{84)>!}-}=*a14Qxuz{
z*rH<00o=;uwrKLZop;K}N6}>|x-P};DE370ERMh8_%({XQ9O>}j~Mnvu|JCIQQTnJ
z-=a9F>O4R=7{wvw9FF3M;-iFP)Z^3>)U^HadlaXlIL)N2@8u}YC_Wp-Ir4esTp(Pe
zUZP43|5LeFqPVK~n(X;}cIGCXw^1O5Tjbj+=1vrM$@ikTAH@Tivg8^m^<fl`WUa|h
zsDDr;K(^Xb@}Jaa%C9>O&!cz|#ou&ZEB|E_ugE=k59%A`OFb!KNEt(u7(R?4RSc<P
zs2DT$y)-eTjiGQ1MPf#m(#4P=X6!BLnG_H+V+@&M$Q(nK7~YK;C!+7fkd?))JlwLy
zkSm7VF=S_{9Mqgtb1m|a3sCb?^Tmu;i{xipG4449ReYhCF`iOTDwqA|y%>tdP%4Jf
zF%)A=Now&JO2q!X$|{lX)0aLQEMEbbEFVMJ7|O+vEsybXV_5_ww}J|;6hq}0s>D!L
zR*h!07^=rmJBB(;)`+1dK}yN}y|VhXI0*7Og%4uJ?Y?zmsK=hjYZfF%v_9h{OJW+5
z8^zH0KfRSsHst_*MwJcGEQaRf7L0EhLn}h-7}^u0<~D@3F|<>Td3=4u<i{~|h@oQ)
zpD_6;)!c&Sn0y{Xrx?D7p>qu37$PxriJ@x@V`BI|hHf!*kD;#&J`46RyT=c^FJtH#
zL$4Tmt5x`#F<+@Bz9ICXnu9OB?H|LS7zW2MfW9~bWB8WU3Y#4p62ovhLm4wnMM@<j
zVi>8K8x_NMibr#wks2gstn5WGxMFa}Fg}JKV)!wJsjOsz3X{l*bSA|xnK0%5_F-BK
zvtpPX!}J(t#PAbiX2$R{YmiMNHOL2w+2WiS=Eh)&!5YInMlOh9VGQ&CGhB;eSj?pK
z&>W3lREtYkB#CN{fQ?zs80;}PREzz`7{{ixC^4QGG{&1%dC9>Td@=aR0W~t_R+dsB
z6(5Zu7Q@*X&czUqL66~J42NP!Fko#A>ta|M!?GBb$FL%X)$~_VS5eKi7L}i$*8Im=
zAH#+i_R!fF!=@N^s&(8<a~pLFbt_f6Co8o*h8>JFlj7{+TJPpsNb=Vh_R9RvBGT@D
z8EyXQx$ti+ctCC0!;CpWJ)+`|#&C=*ziJ&<bxPTjG5j9GsTfYP5*bYCz!_Ca_&oUz
zi(H7|BEv3GZ^Up}fLT{!xEjMX21_N^8DOr9sW)ZvXQVVL%Wbty?=tcp3*L|60h15q
zkmS<@vf__aRZn7g8pDt{hQ^H%`%@0gIC{kKEQY@r^IYnT8$0BS82*moWel%kcrT8k
zalDS<O$<5W$Qj4m7!XIsI5NeNB94?Sk~*GzyKE{}F7<~qB264=nUpn37f1TIvENFT
zEE!lT4|hc|GslsI&O3~kRn8hmHgfhjB>2cL#<$u&ayclD+;QZOqd?pkYUynr78J-E
zM?MxYf7h1Wg3KyJvv4N7%Vgm=io}!eaF&{-GsWU49!JAC8pTl}j*@Ydj-w2FD}8&P
zF%njaAk~(Qqa3TM8%HZXOItpU3UO47qf#7|<EX;O>gu=ts;Y-I<ETciPOU*Tn&39A
z#bj-29qI>EX|W!mejE*?^O=lAhF1zUj-yE&AIH%ljt}E#%09P^8}F}Z#_^GEH;<zQ
z`_qytrCJeW@LR_r+J-81N^m=7wU>GbazQ|zmKDDvlhPC6PspFfAuA|JSw4>&*PuGZ
z@kJb+$z2%JjodYEoI*>$-rPvRx3zr9+`)15B=n;8j^nF1z9vhZ{R!X1(MLIb<LIZ@
z?8yKo2gdQO@&^$lS60)E85V~%4qF_<nKgnsGLBJkd>6;)IHt!jBaSij$5Owi%Jm27
z#<)1fGx-B`3UvZ?B6U(6lL->MT7LYEC%+wWD$QwB*?WJAV`dzS<M<_xpX0{$@I|WB
ztT<-Jjc+A$;+RWwUL5n|SU{G~h=t7k=c|M`vPg4F;z*J#)r2_Gkf?D=Dd+!jIO2%L
z5o3Up>ZQ7<?l?RI3D(r!;^Us?ryrmORZK{ZadJdCGRW~bbSAG+6V!8YK;8lx$Few<
z$FU-gm2vEfV|N^@;%Lo3$1#U@bsTHrSR2Q>IM&CpC629eY+xmusT<?iL@?uJ)#Rd(
z@U}R%v(GzZlA$SUA^y()1n(gqiQ}kz3n1@}8^!m<v0wJgI1a>dn8gRbeS0tt(L+>;
zkwubb&Bs_)>OU37an^8xdXoA(RpR9+K21JDJxeuvb)KVofqF5HOL1H#|Bu?4=hagD
zN*q_|2+P=BXS+AzxJmOC^<f;hRm>g2UFtpRed+^hR(9!89FLj&gZhLj^*<&28Hb%=
z&*OLz#~vNO>iC=OLO1pzSzgBRN<ISOctiiK8V%{8<cg+Hktubg(vh0UG}MAR((1<i
zmQF`{LIxdK2^p!Gs1lHwkcIjVRgT|mI<k{<=*UHo$eg<Iua^S3b>z{JmwtYgn~(5@
zlWGCom;`Fei@$WdtD~@vB03i7Sghkc9Yu9~t>YUV#dH+c(MCsG9VK*>)bW9ix>66T
zs-UByj#A{(I?CuMtD~F_xlye=&9t(ga17<UsywVzNk?TJwRF_hQAI~p9W`{+)Q$6v
zYC5Xxcv}K;v(Qa>#T-@q#qxX5cw>zuSMHIJfI2$lR$FoE>8P)xp^io@*nlnWEuY+n
z#yXnlXeom%&vff(%8s?r(Triz&*sdMh9p256_wu<TG4FH7-?EsX-DotZLi}a9UtrH
zpyP8LooIH{@u?0eB2|4tH4A>G!(5RsbabXKofk(=^W@Y{YVN9|n~v@}dg%C4M^7Dt
z)!r^E-iyV1QzckdU-T=g)Za%(U)DKMM?W3?+3hhp2Iv^5V~CESvMJ@xAFj0&lw}ad
zd9ds@Ob*jAoV9(YV+3IobtKgsmKWR#qdB}%gKXCCb&S<9PRDp1KQL16NHn*&Tr;0Q
zr*#EmC?@HctYeCfA9eh!W0sDo?0{rV*D;M9PAfk;=$N77CuT_#GgY0^$=N#Qu($Jc
z%w-=WUItLYWS5w)V*!H~%0AB>Mrs!LMaL2y8<~|P)#_NT`ft?{V7oRQb{!5KP90ty
zJ{>L{n*7`&szWxSo5iI<*<`Y1WuFliQ&cvDpSiNJf;vJv!a5>4mU8Eh>WHxkosGu1
z`J}h9Yf0Gz3(A2Yn`RkVpsbD+I#%jfB}asucvLVp^lII>yt78fS~;3@tk<!D8&pQ%
zk^B(}Ymi_83EsqxZPu}cb#B$MO~-Z}J9O;Sv5Os(Fj-`Hce7(sR;rRF#N4Z6pN@J<
zQGY4+tNE(<Qv9a)fR2MY4(T|o<A|(p0+9rc>NqC5eFAL~IIiP_jx-6RP2i-C-*r6D
z@leMp9jA5NkU`LKM#ouJcumJS9p`miRQ1crkNnfn1sw-?qIF5fWjWB~12iM2S>3qD
z@`{eDj5n{0$?STa$vKR<MZQbDO}#^vO70OP{=RaAAL;l@$8$Q5b^M{@iH@f_{?zeI
z#hVS~WtZd%!wZ@Gb-dE?ngM3+OR`L)Z)8--sS-c}DH2A{QzrgBtCya1WmTyY#-1j*
zT~Z=l0_hVdn?Sh)G9-{Ofr1GXN+44LnG?vFKrYskg_<pacM`}-Uc*N}%<;)iCr1Kz
zSZ(eE@+6R-X5Iwy5u~@$0cliD^+gNNlu?x$-c6uz0woi8pJtH+iV@yRpeVs?MQSLX
zK#Bi288V?1lcf_VLy&E8SG_++nk%0`g#;QU&^UpL2~=WCy#y*JP$hwy3DioUY68^~
zsGdNL1ms5I?HQB*K}L$psG5DQoj{!gK1iUh8c)-g6_MBYWL9@N)lZ;70u2+m$Y%u1
zm?mtrS;DxW`XO0LH6_S@&^J$@MFK5l%sDKrWD`u{F2|8+n?Sn+<|Qycf%ejL0wWR_
znZU;hbV%U;QFRs2S5#kj(+CpMA)tiPASI!I(xFn)h;(;%H`3jWfV|Fm9h9UXCFKVw
zQc|L*DBqcVe;4_$_10ed?0fFHeP`ahnR&e}=wm@E3tC&y*@7+>v|-qG7PPnEa|_y9
zFlJgxG>PAVsU0ooM4}#;l1d)s-FjbG(A9#TO#0G-ZWeU6poazWAgy1P`2;hLc=nMW
zSu&^m3wbZge{Uq{Yr!B323ye2g8mi^V4Q(O$*2bXNhS=TA_F?if}!MU4h$z(JvPdM
z(H2azV7k<w`gjW_kc_op9LdY4V<ys^WPwa(DQL0<Q>e%}hL}@jL*Sg8L2<4H^DLNY
z!7K}A>!F;(B!AkJv7T?i0xDk-7h23sK&>_PV(>+ll=}mhTCmK5%@%C2V7Ub=ELg`Z
zD~YR#tB6t)nM;CeXs#tn%=H#*Am3=gCJVAmzytnQxS9;&ztw_m7Hrr4J4kjCB~|<d
zcUiDoE46cDuLb)o_{V~OrREmwx8R%w=Pj^UV6`A(L6pumqRRri&g-ziNv=wFTi~(4
zYk|*#pamfd{1zA%1hl`n_2o4ydHhzYAs;n-VNP|W#4PyMf}<A1El609WZr`o93nYD
zl%6?Ea)hY1QxWC3aLj_^7M$h~oY0f)lm#d0DMiT8d`B)sCXy&;Xns#TD|MC|&*aSC
zf{PYBr1*mcmn^tNewldHf@>CBA(sd;%0CLH`4jQF1vf0XNiGG6kLsdwqfP#^1@gwB
zy7K4m7TlISkZyM^xJM#=a$go>D*S4}0}ED7G28X>4fCQuqT6E&p2%9W;Hd@AEcjDm
z>f-*;6ID&ZzbyEhNzaKg1TSZcIJ}^k$7)s#R;02bwH0Zsc!Nq>E7Do<I=MKcw<4nz
zuUU~nD{ZDA6M1H>NE>_e1>;$)$ZAD4tJ%-liK;#lN0A)NlGBP@R^*m)xgOJTTgz)j
zJ}dI;n1!q;KweNQZ<0uy!d4Wq;w`NgC3%}zi`$g!B*kf#AihJCI=o9#(uz`6l(wRb
z6=kicL9v__<*lefUcrirB$bKp5i40!u8*nJC(-(5F*~rT71ikQz7^F;q^n={c1<g4
zQB<Q@n_Mk{I^=bU9}zz$*0Z9%6%DLtNV5&G5%Du(V=J1FG$l$Mnz5^!Tk(ljJ|+1k
zKU!#|B}pq{Yir88J3gn`R{ONGqP^xFNaV=X*@`Y!G_#?(4PRK%)r!J4v*BM_(anm3
zRve;dcPmy~v4*^d6+Nx!Wi_X9Z!7v+F@U^}6@5uW?`JjlQXvDGWwI4htQcg)V46d$
z7)v4r4Ygtza}Bp*1jUh7j3ybSePoS{(OgZcaaN4i$^?>$#7V@*Lon5fX;v)JKGUt3
ztN9F)nZ#LE%qE#bl;fIIX&(7}qL>S;SZKvpRxHxWVr$Cpt@2onI4q^UjJRC;tgvFG
z=Br5L3f@{P)>*Mv>+7v47r{1A*{JnRR&3UM3&~dEHY>K1?66`d$u60<BvOstR`cIu
z%g8ODROHl1#C=wLW5s^$;~}vStyb7b>^jw9g_GPxbZcGu-)n`>3O|)3(I5thK`TNe
zVJl)JQglRSto;9rbR9R$IQ0ZkoeYT20h%(Vhpjkb#Z4=IlJkFx7l`6>l;jxkIPruP
zCrM5bzayR|o*_!E@2xmXevWuv>%V6(yXB%4KTx?uyiB~JeXd$@jr>Qg{GarUoc~*K
zgNoXSB+k!PJh$Q>D{g7eU#z%o#T_f|Qh8>@pCtFJxNpU;Ry@$2kF0n|t_~;??J><K
zR{W-Yp2}J#|3fS4RP8UCe-p=#(_d2L5il!WSOMFA@1sb?<($K2zGgGE4QXhmC8i^$
zw;_WK8OgH{U$Y?-NoJclcCXu@&ix+pjel8f$i~#{#5Zh^2a%-mGD!q;+K|hJ+&1K~
zp`Z<K+K|_Vd^QxYnU7+LLw?poxSR@#DIa+TK~R)J^igg_Y<SCtw^>A08>-n*)P`a-
zi`!6%L~@m|;T_H2B`Ik`DXo;Yp^WBbZ763$d72e$sHk<R#(U)T`1n#~a(Sw~iVf+9
zm=$~9hUyeQvY`e^O`_W8Ymt9I6z30ZsI7S&8|sqFs+1)8d`z<*vAzurNE#9)wUG^t
z$(v}UsV(J<^b;FCwV{s<eMPaMh3wTfbfsHM8`^09RyMRIS7Y%xd0QLWk+j!I9Y{J7
zrQA+7bSCdYRPFjwr}iM}W<z)BYCX!5t0(ndHuNSb!>3OA+0fsH)i$iLVSo(-ZJ2Gt
z96AglPOxDx$q<`)qsvemhS@OOh7lCU*)Wo1EO8W3${KCM7;^O{B2oU}<QY%#aVkud
zzksn}GR>Jf*AyG3+Hk%srr9vvh8Z^V^{w*BGt?xx_>;#h&PMrxV6M)!$cA~E&nH<x
zTqtXSMD?v)KVNLa5-Lk=SZ2d=a;e)&8&;63cgU<FS1V{Oxy1%6$vPX>+ps~8vgF-p
z!zLzeCW^AfhOIViqq*IN-6T77>Q0hfMA=2ZwqXzXUK_q4*+-N(atgPfT%F6=$n8Wm
z;^O15!KwXSHn_<>L@&`t^b^J3AldNZMaYJ*4SzZDw-XT?qBi{CH0OLwHU}F%apF^&
z2^+TCQ`SO~c@Gc|+HlB*!!{hT;aeMCvm+DTj>?8$!$}*C(d{@<odBF7ziq=ElJAJ8
zZ8$^ny$xqc&Iyv7x8Z^f7s;;>rFuWua7pvawv@A`t6I5c!;j?ZkRkrpY2F~-wBaWk
zekQ*~{6$AlPpjRv;hyZbcBHlAz74-h|Jd-i4G(PQA56&Su?-KI@sZ6uRW8rP^~8qX
zY<Mc6nDk6~ro7o>f6x>n4_f}IlK9n6l;<>G5dWe7zc#2d8A%0uG8HkkJ>|bG($UOF
z6rc1Y8HnmkUZzB5J6^Y=r5&y8$YMuUJL=d`*N$v<WVfTZ9VO`hh8=H`<gg>B9l6LQ
zW<EP|+mXj^esO*%KmKZ68lIoLfE@+xDf^qe{Y;u!h<af=ijc?}f6I=y?dDlTQ9Fv+
z&Hd+8K16uIQ2gJq<6U~zu%jeNSv$(vQHs2@9c4)5l9$An?=0o*s9;AGJF41Kp3<#o
z$9r~EqFZGtmoLte%Bx@JC5seY&5rl&s7@c%IqIiaajR)J?^&v4#|L(NDBZ$Gj76_)
zM{mA~_ai$#wxc=o)+06})+dT*13Mbp(THYaJDM<~9El`UQ;PB<*L8*xXZd_W@l)bw
zcJl$r7Ivs-Z(G~Z#*T4zjJM-+I&_uJx1%k2J3HEwbg-i%iA0lwdnY?&|Lkl>7uNq?
zHhjTUDO7%3?q)}KJBHaYoMI0<dPxoK=t)y1?XDK+Lq5Qcfp*N6?@e~}Bk3>INCk;=
znKd6ox1n|nwquChe1cn2rF)C<G*#*#^%-HuSh|h0V-$%x<rqyq#-8$xQc4l$33g1h
z<10HBF?Et1Gwhg2KAAYhj;SQmq>Jn+&zq~Wj#(^dE>k7cY&+(V-{SY&d943@I~Le+
zI(y1gSx5)z>cw^}v160YyVQ;~cC58y8I|RBtgvIH9jj=rCQ4(aA1?9+37KQ-blwdl
z>xo(O!6*B_-Mm68*Kp2G!Di}P?AU5IleS4?GnsK@YVELNryaZO*lovIJI>MbYdgH+
zNxp};*N%N8-w^i`rM(ssE74|$oy0+O62-?w;<m%16?M$@+i{4BK@8~BpdBIdFfpR_
zsH`>eI59y?5)Tj$5~ain?EJ$tj}X5l9<}3`_Bl>+!j6+9r-<JXPZQ4&zb8se*}Bi$
zaX}V^0}~v$Nc}fEp4#z)_PIoI*^VnDSM9iF$B)8k-nHX8$t~gy;!WaD#Gi?B%{JRq
z{6c=4c!&7%EcYJG`@~=EctG-y_=xz}jwd84lv#P1w6eoE(9eNqOcJrH!(1tU+VPhi
zf7|igj(=p6q4=*IFX;A;18^Xf16ds@&uFA}Ae{s09Y{k@iIA2=W>f~Pyhf7Ik+M=U
zIgr_5ZVuwSO@9A%APXIYN98Zz9mwv$8xG`f;7tb#IgrzVTn^-QAfE##Ih45_$m2*k
z&zD@eG9$kOKbArP2MRKjxRopc+3qAscwq;MI8e-i;tss!z}pTKbwDyIAIT_Ooqb7_
z)NCxlIC8Xlmn|*nKq&`GJ5a`fst#0hpsWMs9H{8Pdk&PRa|NP`qv~17fyxxCI4~xy
zSz$?4Rg!|<cc8ihwdqj9ftn7~a^M4pxfsPwoM*2wdu&M>v!gzAn9Y&j2kSUcmp%Cr
zdt;9LPA5MB%g2HG4AsDa_9P7*Xyia+2bwt0hDuWhnmO>911%hAPURB^K4l!a;X&0|
zswc&@bf6V`xV6KqfRrMCQXsnQtMX&t=gixd*p4Wo)S&};M`9-jI+Jv9;0qGTE^*`|
z<Q=&X<UltEx;xN=seQChPm*2^^d^xXP1H*{)X8Ljhk39b;lKdxKhS|e<b$;`gk-1#
z!$^h`RrZk%jB;Q!gGijQBx4-rPuOD0XPgY{Xp>KLV3Gr89XRK}WCx}=aL9qf3^kRx
zW|B{HU^>YRqBKnoUbAE<U&m|*<~T6dfq4!%9B?`?-+=`Vtao680}ExK9a!$b3I`T3
z;9^}Xsp=93meO2Cl=&c4l7FKUT<O3XimM!0Eu)zVmRzPTL~t#W)=?L8qXU~9*zLgA
z4s2%976-PHi2pVRwrfvu-r+F+fnt{fJLyo79iocf<G@~uRtNSu@QnleX{uDotBAz`
z&seh>Hl_-(lSo-EtwbGgi<<*pDux3A5}yNpk_Qva2tfxzG$X8Gn7qSWbMi>Em*vJB
zh&zyQAV~+wc+i0Z<jO}-K1cNE2>+J+r~}6wI8M*+i6?Y~lMb9B|BiT?{%44iT~$B|
zI#1=91AmfSAYOFf2L~=WaGB;!2Yzzk3b|yw>cBPGsl=qBhU~gdy+I<&Up#+y;En@#
z9k@mD7vgR0DbFn5bKt%MziH)H2Og0>(8@y+wWuG<TBa%MSLWwa^52Pn5T!)9<S4EC
zi)Kdo!sWno2mW#3U)k`TNX_qAFJ%8G5r4T@t-imcp^}!UzM)8JI-2R7$Uvg5W54D^
zCYqU@c*}{m$zLaCaU!b|*__BuQz8^};teNq(9G#XUajXM$xX~dly1yNlAl<Bs7A`H
zrxS&!6efyN#A&V?aVSdV11COoqL>rKohaeNI~3n{;$7`u)`^mumm(=mEJKtVGRrwp
zp1gt+l}V(OicY-eMBx`NDiK8)ngLaqT9qhC)tIzvkU8Sjov5Mn)+DLrOxgNs(`=|y
z>yXqXenkA(iFzdUi4BMnbIK4j(!8+~O~{)Pn`ynd?hWz(%!xHltaYM=PHjojirCtT
zHcou*L|dKOS-MNU)Hu=Ji4IP5)Osgp%G^*hqzm;goapMrmritZVv-Y+nYX(W1DzP;
zL=Pu=I?eO;UJ`$U8Me0*edyEIiGEJ>Czsn)Bx!)t+-KxzS^0=5pTSOyaAKqrL+Cb?
zDEcsx;nF|yr9+<oa$+=<iB61hqVaSy+IT0%YX5Og^RW&QCpaPBQ`By@R+loxiJ4B!
zqVrTIrs-VMNoF`x-qt?bi8)Rzb7Hv@bD6Z5IM0dsBnzDQ%85lzETlP_@ugAfBc;n{
zi4#ki+L!lDtsoa&UJov~lIAMnY9~%Ji;UnpC-&)4SWmLSiH#(ZYZJ+4;ua^il58VN
z-t8nioY<+AT~6#K|5_`1NcQUSm0aIQk2ztXZYA1?vcBvj4kw&WxSVj)j1xV?0MYA&
zk3^#RoiNDN*S8>fh!`eDh~gO~iE;LdnQ$WM!~rJ`QvZ&4h<J>6n0UmAZ%HJ}Q75YL
zeDb(fPLP}=o+8TXKCM&FIPtv`XK9`zUU1?(iMrB$QF}_|FOgq%;tI)CCw?Wl_HrCa
z{?Cc)BsZM6N%9l%o)bTl$f(^S`NfIbTDjxIU2^GUak&2qf51{65+4zzrH@ITIPsfS
zp2`T4|3Q34{FA75&gV}2BfGR4Z@clY6EB?j*M%1@z=c#UeBnY@7gD>B#%1nZpSzIO
zg>){w>q1E?>4|R;GY~Vn@EVEuXL2F4=C6}vaUm;7HmzrOnOn3t%O{5mIbF!*LT;uO
z);@Vi^16^uEBRe0KwgmeCb1Av_IwqshzoB~5%X=5qAnEEN^uuTkiSDzxk`~&b)gzb
zX&1_nlqE`>awO%66<nyO_4iz;L|&O#g{bc0mR#?<P}hZzC{}l&28rl3U8tq`2P7Z5
zP@AL<@#QZ&AG^?8d)9NIK6wMJG$d(6Y)ouIY)WkA(!T=G{FL|^u?10T($a-inztrt
z<3g6jDLvViN;?<YlXTFY9Z5P7I}^JQRcC%lKGub9E_8RH2Tdt!m<v70dugRNNgo&b
zlJq0?*Qo<s80f+v7Y0+26C3ql!VnjRy39k#Mou1yJe&?Ah$CGXr6Y`XVT|VT4M;r4
zxiH>^2`)^ezQBcrE=+P^GR-Nk%*m-T%JTm&#OW@~pu<e!EaGh99O7K!JmP$!`rrAl
z$fexhTv+77Vi%UUu+#;w3qBW?xv<=Y{q$Ku+@bwfy0FTH)il=-H@UEuWS#a|PqM*<
zjapHM<IOa;xUiLE8*%$9K07tv<-%_AueGwrg}s{ZbKx7!Rb&fIE79hHU8g!+aFV;U
z;wJI9QqB|nE*LIcbm0dV0@^3(LQwM%NthUMA*%J53vu#<R@5oz0T&LsaERhz;tApr
z7rrGqN<2n9PLxrQR-AO<lndWcIZHgPQ_qlmuj_nH>*q->xXi1j65$ffyE^r<3s+pY
zO7j}=Cl`KHsl@BV8%mM4fVxutU+-rsx3vBX$!+2tUDiFC_qETjBoBxWU3jGR$0Sd5
z&7acz-DMs-q}6}WeCEQRB!9W^w+qk7{~-qWi-1D7^`7iTD$P@qq;VrHNjhSBVg{m=
zl9A*!VkTl{H(n>nLKL5@Ze-IuJINbFHKsY;$fZ+rljI@hbt9kF^OF=H79_q&EJQ5q
zMiCPEk|m#_ZWME)L&R)RaW_i1QNut@1Mko$=tszpcgah-&Auw-Mrk+7xKY-Pd0x!-
zqMRG$-5BG+SPv?=QBj=TxbDV#Zd7t(z8eeNsO&}+H#)h|*^R1hRCA+&8x7rf-;L^S
ze8l)Q+^9)XmspGVA@KvE?3}gTsN*)PEwz>X|K;x~Vt(vKJ-XE=iXw;3Ms75Aqm5RY
zxY68=PiQuEqnXxa+Z6v#-Du%PONyTnB|<9_dE-HArRy)hW_&l=y3vk$d+9?rI=apG
zSFho1t5Q96gzDnP7j6u3W2hTl-T2atzRc2%*pt|u*n_B!jJ?QvyU~Y4&cW38$9^>X
zyD@-dpc{kS7)-8uLr{@nZVY#0k{gqmIzq<Cjj?Wwq&dos(Im;-X4~bak#RJIPaqjj
zls=!Rb>UOUXSy-Vjj3)-b7MM{8N`?8D$<{`b*{N?%+aZ;pXbq(L0l+9=|<R%h#QOC
zSnS4rH!N-}abqccw!5*6WVIV>+*nS&!i|;glq+?ssC45JUhBp>H#WPm#f|lDY;a?v
z8=L4LHJ6X7-b=ETN!y4o&n4s={SG&Fy0OcR-EQn-s`Sa%ZtQVmFU?-L%^nj^Iey8w
ze4~A2;H+-g-0*6}PU3OH;fB)<mm6*>Qj?eWxk*1rl_a3g4L?&2H-aPqqDl>stGN+%
zBj(2UZk%-^?nc6mQ%p^|alnml-8kyTK`Mud68sQ}lzW6k#XLrSLi-$dr_|~sm6tXA
zj^=4M&S=kgZk*HniW}$MxF9p1$|d3tI#rg#W%4((nr)QNRhrj`Kgx0_XzDlIxG783
zgC-vQ<i^i#<n|zs2e;h##f?AR_{)vkZrpL>H)g!+#yvM4lS}sdBoEy9l|&8nLpL7L
zRNIAoA9+Gkwf!mi@5Ddcct)ZsBeV2xH=eukng^LY_(x9u-AL~->-mCisXRzc6GWK<
zX*@_vp3al9JH4E2l1n}rJjh4~b<IDs2d{gOlS&p3vXZ<(%tp-a`R~kM-4K<7y823(
zOP7+@gM6~<dQj1W{2mmb&$}KJ^x#boig{3+N+A!5c<>f^VWR4Ux5<loQl4Cpda4y#
zg8Dn!Q$5#E(t}bSl%`nLgK{Kgh^mLnds6Q6RNeTV2bDbdz=IDxs7$x&9@OxliU(Ca
zs76IfeBYBY|Aosho`N-*q?TkY9ly2*bv*dkgL)p+rTCF9PIfT+1oN@b`qUc|B~AnB
z1YXH+q!k&IrXDo&U^JEH9(>|KAM#J78Xk1;prZ#ZJZMR=tp}}i-ZmbzCRZ^(*Lo`6
zLeS2G_F9qo(8+_&9(48KONw1Q_<}@rl+-OS6x}@N?m;h|tA__YHJ5s-0qRX9P{Hh$
zz8>`RpuYzLJQ(W1FeVKo4)$P>&MPl}9-_JWfowR<k;D<i7P&Esq)BcwvKsVp9*p-O
zyBBYGF~Nh09$fa|iU*TCnCyYw1BVAwJecaidJi^uFwKMM9xRlp$WSvpnC-zF@|nb0
zdSvI)l!E4aFi&&o#s!*71r~X**n^cGtny$9_2tB+9xQuhElAI-(7A-KCSOZjqxFoV
z%toz~zU98U(SuDM?3UT$!DbJ(c(7A@ZuMY0`8HNn0!qdmR8*hr(w=Hc@9|)t2j6(G
zm%5sw`?ZhN1B=Ie$&v(7!)IfX47$?;mj}l@IPQVl0}u6s9(X<QktaOxdti7F@*qql
z;6ac?qNyntO^pbZs0T3;DJ8Cb<YzLuu|aNh5&tB`14Px3LmnLV;0Tp(iAVMFQGbmg
zUlmVyaK?l0JviyXDG$D*+i9Z2%+7YHE;{SMMXjIn;JgPH^p5oMNcw{Zm*}IiT=n3Z
z2fumnl;V#b{NllF;WV#%aKnR}viZ}zB@2hgg`a7@>`!U$9S`n$@JQ?TNFEUHd+@8)
zWeq;mTt?(E`4g>3pZre#!UK5mhX>DS{^`NrB!5W{^CVL$|6C3M6#w;@cb=$`l?bW4
zNbNPp`gJeTc#+nN*Jz58jwAyyJyCLH^dblEu~$DYW}=>%D7DQ(l9ebCvU$zNRb<?A
zc#+eKVbpVZk=u(8y{PR)9xw8GQC3dBy~yW9elOn9c?)<^*oz`G3wrUU7lp{BEow!)
z<;B}nihEI1=PKsKx8)(n7xh!4)S-klFtyp_cj;5oi&9>cCNHCNsoACaq`Vguy?D=y
z3QSddT_rCndr^~06)&oiRQIBqR9H5Dnrenfi4vy<6%|mFS~Ne<Zgsq<>%}KteCowV
zUVQ9D6DHLoHY7@}`d&29Tphd`(QNEBkIwRzq^2~R5t|cb-pWGw%!?LYboQc)7cISL
z#iR~iwDzJ6c{?x9B)w=$Q_7MqRkdwTMYxPwN1fV<L>l;o7hS#R<3(RDzVxD-7d^e`
z#b^?wyB9sY<`G}5bg4{luep;bQ+0AbFZz2i$cw>V4AAihdQ+Z{lg?Bp!$Z6ns#7Ik
zZ7$p4R7Q9)(u+~#6TFznAsFq&7%#?pG0uzetb^3&ICnxJ=kl5}e3BPay_m*~lZjKj
z=2VfS>0ZpBGKV<Ri&<XGCRf9%YITLHX|5M)8(HARLNCHTM11(li$yYRe5mBZVlS3>
zanp;RyjbeRGB1K&guGbp#R@N+Ubwti>BTB9wt2DLi`6V>ofqp#))3bcWn4CRvC)ey
zG&d2Y!kbB?fid>XR;^1{@9<)$7kj<fM{$=IUz6-6s`<P}`-}OF7yG@iX~jZfWgp6{
zlSM7X*}ZV+QC54Jn{Ixc%R}NN`nc*PmwXH_0@_C=K-i0j7stIg;YE~s(u)HmF=E_{
zg!Wex@}L(-v~q~#upVED|E(8Cy*TDg`If4(ob=+97Z<(w!He&h<s9*}7iYZqUPn7i
zBDd$Mf0{V2^$R4@Gnc%$EL`hXytqbwmH6`ctRHDgNA;IG@w~V}GiB%Z;+7Yge8}v>
zFJ9dC;%_gW)8UR6zk2b&i@P-M5$_Y_-a^%T550Km#qVA`^5U^>^%MI1#!W!hiySV+
z`45VJdhv{;z}A!qf6<h-{6mt)XX^iY@xlv`rzVP+%4goqE*~}F)B2E(N$H6hi5ZB}
zwAV-^myGG_K4kHsun$Fi$m&BjCgmk&C*~x+;X@7*l`9u{ZXfcH+|6yCz1NhRLVd{Z
zLjmpirVj;uDT6EfNg?WLlqJqvK9r{Nwhu)~iuv%45AXU=+=mjfDmi=A8ZSwQQbf5D
zBH5K*#)q;#l%p<U1s}?5F4-$;E^Do_4^@0v<-=+ps`^mPhqgYn^Wl9Ts{7E)hvq)i
z@S&y;^_i;{v9=F&NIoEbNR&>lOY$*M%Kb>|!t3dpH}Ih$^+rB4@u3&Tx-k{i2~Fu~
z$z?X@6CYaYXrC${A6k&8y;po%`Ow;jHah<2+Fu;n`_RFM@jguOp`#C-eCX>#KOZ{#
z(8Y)DKJ=jT7sM}#U8T4AsIN4qo6kIg$dkW4b<Ex*y_A1J^dT8I&8%vF9|rg^(uYw#
z4D?};4?}$zMu)+~A-<GzCsp&|6h{!%{Omi{j3b}XK8&R<e2i3^`?>IO6lMRM=))u*
z7Rk2k!(<<(_%PdtIZU1E!*m~J_%My;%N0G7<}5w&B$~`m!MQ%n_hA83=Mhz97LtEO
zl&cEjsdSmKOMF;LeVGp{NF;T+FJ+aj)QZfsH9oAR8Sr5p$u=Lh`>>vT1977dn|#<z
zzQu>FB<k=gov#Yr;loZJoIbdiy32<>KI|pmP5hcDCGL|3`e60J=EHu97NUwH^_0%H
zQ*jVQ$(}#u4qG=BpVmDjUZT{*uXTe&0tQJ!T9?RCA7ZkC{AlM#+=qk@dHu-eN79D_
zKK$jw-##4l;gAnEefY_T!#*7G;fxR8`|zy~M}0WOXvc^rbmZflhf>v(RMay0j{LOt
z8J`_zeK_aC6(6qpaNdUtK3vkN7k&7FTpjyV1POSVqRgmk%2Th$A8E?|aNUO+<kGjQ
z4}bRImJg38{^G-JAATjjL%c_n$anQ@zpoXQ{Q=E~M43yEeR$%-Z$3Pw^2~?dwf`R^
z(yJEkY=6>J6XQ8~X1_Tt|MB5pnlF4v>qk02;72MZrS>BYiBw)Z3*<8~JryCZ`H{ho
zjQ*6jrHLXn%*0gHKd<|d#gD91-tZ#_Nj5*Slc<<E$#WBPy`oFBJd%Ya=J%t3A65OR
z=0`z4-lSVaKMMI#*pE_vl=h>DA8+~b4wK#{79$q*ryMDyZpHm5;ZNEBCB9VhUHS+w
z=}$S=EkmU|v8+xlM<P90fke7pvdHH>KPpkFtUarcNQb}gM|D3M`O(;q8h+HI{t>a3
zAGNjr2P7X7r9<jyy)KC==wm<X`B9%r17bse%8FC15Ntxdg&$4*Xy!+Anx9IeNIvnW
z%sn-Q6t-kiD?eKM(S}^&eC|)V7u4jb(B6*@er#cCM?X6GF~N_CesuPuiyy=N7~#hk
zesuMtuOI#B_N5=){pdm7&2QciE1`PQ>`fH27m1oqeaPi#)nBI$_G19~KtBeNNYBeh
zG7h0R)Q@2#>XPHRyk^o!Dr1PF{1{E5E?JBv7oTw?<MosfWs)C@{aE71WIv|(G1ZT0
ze$4h`jvv$MJd-$sIDxZqmP|8_zFJCi{h05^0zc-_M`Ef`TPQQlk3}+F_0dP>Ti>x}
zRhRm)%#T%mtoCC$bFCmA*6#yZNmE`Avc`|Ker(c_*O6@SW4%_?BHBn(#%nW)61V!X
z&5!MV?C`@!eJ62`AA9}SMJ|=uP4YESBJ7jSA$R(*-w%r)cI{~;u@Pm*Q#+wUr;6$F
z!%frUhnGZkh1w1LR19K(D5cAJW7v;~bg6-N4MhEj`ElQmUuFNN&uKr-_>s{5Nk0zw
zanO%LS~=y%Ve%td`PPr4ejM}TIF%DbbvksCTurC%w7-0j{GR-tR?hly&X4ncT+qr-
zeq8k92R|<PQ@)m7W71{f6+f<OPj$lZqnK2#6K@c25(mm(MP$Oy<hT6zh2*v$cS)pA
z?)Xz)lcL@aBZDII?SUT;{m5;kycYWro&P01CO+}wH<G7BiSxT3e`x;9k3Y%(BL1!Q
z=YIS{uGW|2dLjG2fm8-k8|GY<PbLFt$kQ6;HX@ZtXCS?S3<fgF&#7`CAgUxWg-EW<
z23}{bEC#X~$Yvlr&75?8gP4N>#s6jATvQ}`9y;eG<};ArKml?|ddomT@;8Zvh=qwo
zh~gtV!`tLViN%P;i6w~2r=)>W2C7q$I><yVty9YwD9cKgBbFytAW9o6lDtQ(WS}xh
z6=GGQ_*66SzUEK1n0+G8EY~vdfq~D0Xc5GR25KAlI)FU^)G<)kK*InU1@Mu9j}6ob
zm|5x>sLv`@4WI!@3F-|EG&0cGKobLdWL6kxYM_~cNd_hxXl~#W1APqiHSnnv$7*yo
z(1N73fi?zOlD8sC!==LJ*coVNpuK^%)L)KE2b!G>bR-eatsH0}T?~9-peyz626`Cy
z(m*#UlrbfOw4$ehUIu#WyejNV2MN-TNy82FH!#4!Km&se45c`jC|QPZZb&W(C^$^(
zl6{1Mkp@N?7;Rv@fe8l27#M3{9DT$=vP%|)LME~&U)84=m}+3Pfi(uEG1phb=>}$y
z%rr2^z+3~f49sSBiK8OSGce!40s{-#>X-kODdeTkA_I#JEHSXuzzPE^8DSYCFDIAR
z5J~l<X@b(ptJv5*`Aual-K4A?2G$u^PyY=DHW}DVzL6+pZ85Obz%~Qh^~zEKRgWo@
zI6DpOGO%0b9wSSMA}Y^)2EH+H&cJyC`wdtO#0@0qW+nO!*bLYWI1D%qcy--e2HXZb
zELU}l3M;kpv0H?QVi*V*2pR~<ZqK}7VuYx&NOp0KQIW0?Gf5P3+Q0z=2MruDaM-{x
z1IG;<Vd}RAj=oa53L+hN!oW!brwn|@ROx34E~)a7;uJr_4wN4Fp5!c1QZE>|XdrC>
z=>qt{z$F8Z3_Lb)*}xS8w+#Hkrd<_(1J?~)Gw>r7skVG1_zeR$4g6%_XIaRpO;Jh_
z@^X?$HEtWYW8l7lUk%(fa8Hk&>J5bt*v5y<u9_yge4ZHijY<C+cxvEx1AiI#+rS?N
zo*DR)Now3xOC^ht=enc*(L<wp<AnhPkSc)G++@-O%pxR7rK&jTnUpJl+yP_=AY%Zp
z1&}F#tN~;TAaek(2aqLTmLea?u5u~N9>5y`<Om=q9VGRogAi52Jd9s3fHwok8$dpq
zlA1q&0?Z|$RJ1|?6b|6+0Ez}sM7zC3BB5R_w^#thwS!7}ho<<vOHwj`QY57VC=)>0
z0LleWF@X0dmS;ay(50)YR$@}+0ID$cWkXcC)tD;${Q#<y*C5s;%5PG&0{9?+4+AM*
zPsFpf90-P*)vhat0J?olRQE2{Bd<?v5Wsr=b8h1RnglQ@fXM+gWm4+^+62&yTtYPu
z;FAD8m6~g%1#2rw@@W}BE9&YjU7Dbp_IUtpskaNDeE=N-=or9oDxCu896+xCdeiJe
z>_+?|fUYDG`OAR$bXyjd(mjA4)O+ewIoar=`5=<M0rU%?e*gn$4kXG?$*P|6N`%1y
z4528eltW2|5zVp+VnhHVX^tX}3t+TP9TUJ<@|V%Z2QWdWPLye;&(Eg>up)q!?4PLt
zObeJZe|i8jNM;7GFo3TDm=(ZmDsuwn+hP|4Fqft{&m);HQ-}{T$OC=y63#_Bbx8n=
z$<<>Ha^Y?%&1C^B*FH`8CdO3(><FM_daTy<Ttl*!xQ@7<xPiDafK35xCf^dkHWKNX
ztpW3HB6<FCI~6s`JIQwiu$zU-h^y7TH-LRi`cCF#0Q&<tN>dyx0ffn|L|Xv%036I7
zB06>bT_o-RJX-NeFOmDTVgwM-JQy(VtCR}J36fxh@uS2TF&;o7fF!xJ=uiL$G(Sip
z)jLdbMC;#@sAYaEfa4rc34TI)gXNymrHjw$0L}#PeE?_a_Gu93xXhad%{R}SXQ&GS
zT$KGkfJ*^n58{m=E(dTWfENKEXjc1b0QUp<HGpdY{3ux%|5gCM1aLio8v)!5;HLn7
zraqhPm0aEUM+x#AityV3+zH^WtYUf4a;_QkUI6mAiqufvLLmPP@*seR0sI-jUjaM{
z;Bf%I>sCA=c`7{_FdtEor)DIG`bUO8WbrcEGZ|CrcQ)hi0RGW=pUX(iGmDeYzZ9ja
zso1FW#MD7^4N7X7Akqerj-u2`3KB6x5E-ew7DVPCUJoLZc2F_1(9A~6N>mT^NTYHD
zku!)2K~xMPR}i_GS}ce>LF6TWD~Nm~1%fC@lAo9(4c-i*P!L6Es<2XA;h_1Gt`KSC
zgIsu<sbUrlLKOKF52A#KLA)D8X{MIcKBa=#JuRglq{qqxQ8tKjI<<Vz92eEGY2~s{
z5S4;x$kfU~R0*1IFsK_u)gY<`Q8S2IOnRSKBZ%rGYD7LQXqNJUocsq-JBT_#^kq+~
zYCnS6u~Gr4?MFd;%*geEXut?<s-k`{rRT*#vdE_qlNuA7=z?U(ng!9EWA_PBZj2F8
z7K>oZAX)`6HHc|Jv<{+85Cei3NVm_4Uk1^ZM4a0N(Vn~mv7^>Ik#r8Ci&nlM=}J5&
z(_8D^gXlrtQ!Bk>q%`kC(l>~HBy#PdKZ&aFAo8)q!Neg!3=Lu!`S2h{1~Dp#5j551
zpwZ-Gh*Ezgs)mmXV!YNT1Tis)Ni-)1F(qjJxF8?-?M&hHAZ7#+3nCuG%phjb^BWnF
zAm)(oCQ9VFB=drpAH;$n76!3_%2!1B`D1kui-K58b4d_OgIE^)?+V`XAXWsiQkG9T
z{5}$^=q5Gq$rrlHwSqNN)&{XIi1k79WwYunZBn!Z-x$OuI&2PN2g#Nowg$0{d^<7S
zM04B~?xeEo75!^+ao7{YUh;iJbscGc5SF015m_lZgRp6Tdk_xI<@F}6AlyNCv=Sll
z2H_*|6Afa37$k;*2(#^SVMJXUk(xxAr0xt)1kosh#t|eb9v~hJ;!qHWgE$hzFCp9x
z;oBgNO5cXCEQDi091o&i2=zla5yVM}A3~N8P6hE@5RZa*9K`7$&IEBuHuE69=fXM9
z$Y;r=4(Dh}!)29S2;w45;XedZ&RVZfxf#SyL0k>u8qFVrxK1Jw{*OdOxWTY$9{wD}
z-5~A-aZ4&spW95m^NPQC-lr%fJ_zDhT`Lvsp^o+>h~I)h2&qEmJupv$coxK;LHy28
ze-PDGP^r&fK|BxQABukyCCk4glKLW;@*jdC%AMY+L*|^x7{Y5IqzNHy2<bvdA3_G|
zFJu1BSD2RIrBM+xg^)R9USpSYJh@#>Zbir%LbebJgiw$fvxks}<PBnu5OR{_3L!U%
zDqY3T8$v#c`9mqUpGlR(;mr^Vg-|AhvLO@>p-2eD=_aXfg-}%Ux7jDsmSR*?%n~8I
z6T-V8lnj~8EX^d<ic%r-b*v)FN1V%rP(FleA-o?#g^>Bo(R(3OqJKrAG*iUN<W=aP
zE~8bYA}90JL#QD!Y1Ry(7D;WXxf}xM{~>w(v}PQYw+?-zJ|B@teLiNbq=y@X&@hA^
zA@pQYqYyp|p+yLdX*MA?B{mD8ImsvDEcgG1P-mJ+)D9rM)G~zjA#@0#RS2!=*(QXx
zB%iZ5@sT>Tqat;X(mRri{sl>=5ITp@g<M`cGh5!bU`N*wzNFGEgzhB$^O=9bTY=Xx
zByX<}hJ`RZgx(?a38622L?0AFzYzM<91y}lt;<zq+2Z6BeK3_FAq*vXb=HjtVR8sl
zLKqpss1QbnFeZdaI>Oix#)UARriwNpgoqr?r2_n&TDZI^T>?rQr-m>sg!ww}bdp&i
z%m`s7`O9)=hcJiATz1#IS5i;s#extP$||5JowJx_Eh0)=q_38QQr=m#JcJb?oDShk
z2rENa#VpYfR?Flhw}-Gcgmoe83}F|Q^~7x<YzSc^`KA!IkVsE%4nbZ8GesT`m-ByF
zdit&4+v%_)WL~$IhVRz?dqpANLsZ{}_J#0G2>aPID|HLGYQBw%TJln&BLrs%t`OWI
zcsQ#=A$UXZg%F@AKK_vTPfte3+!KVTJCsBZa<7odA7)G;kx<H!F&08RgoG@7200$W
z0g}TZ90}o|j(kW*_%?*2tmH8!$!dBzSW=KgK0*B?@f7hp?fE@R7q?3!XQl13|A%m%
z<^|$K;t#~^dCa}>atK#KxEeAaKffNrjS#Mp|40;v{|lLKdXdzd%q7ZCp_KRJ{2an9
zifZCX(wz|Q%26zgqhZ_&;l51TFeZfYYX}cQs1ioiFdl~RNcQ0{(ueU_f`{<0j{KWM
z4&hk{PuVC5_`B|zKk4%~QTpL8-NVmA_~(B|<V6SwBURYkj?#q9Hp(Y;*xb)Wkx$xi
z%IIVWBV!mv!zdQUYhh#xBUc!?!^j-Q>&%{=*|UVrshCw9I483)NfZ_BjWBYA&3#GC
zoJ<m)Cycyd6b$3dF!Jd-6bK_fxj4usrZ${HVH6JItuWpWqX^@u{Y}=FxV^gL6=&Xe
z!zdX>i7?)wDGtiNR2Zehs2DcQGGUYrqkI?@=p#Sa?ULtz!zM~hRl4+v<b5xUN-VT8
z+b9c7Ql)9t!gxQ7mSMCCqk0%M!e|^ulQ3$AQ7ep(8TNxPK4g3A(ySdu9h$0L?em+x
z{SlMYK|xBa7e@Us8idi1#WiB8=qVjL)tv2OHl^MyjOJl;rOR^uB#ckP_$+LG0c@dj
z<rr+5=?0^97;VDn6Gq=KJ`ba97@flC97a3Vr-Sxy|H>TbsOLbJFun+*dl)_F)-{YT
z!{`=H8J$;0q-Pkt=+is=KdVyhMg79)AI69<MussUjDcYcW$A;$7#zkBW>ovqt1DU>
zJB&%giE4_D3S%tI(TpJ7IEF;JQTRB`Cx$U8jBR0Tr}N}6riU>@I+o^CqQsvj70U-X
zc+CuB7R3!=%noBt7)!!fN@Z>s3&L0!#=J1*|8MKQ3S$v{7874?eX7;V!dTAwtPW!Z
z9ahp*EtS$&QIvMA31cmj)`iXUll9~m^O{^X;f-|L6vpN-w$NcK6^Zb&yLN=JGmJR(
zU197F!xx5MW{CFOAI6?A_R`!ZQ-$PZb_rz(!y1My40{-^Fx+%-gw4&|N&d2R;_P8H
zy#E`-pcx|u!U&Rt!ibQBIjbeF%;zW-SxT~|)KMluB^ky6l7ozYIE+Iis-DstM`U$#
z6&wrWxa=4a6o}wN7$?K{D~!LxI2Fcs5+RK1jB`4SAHuj4#u=L5%hV0yTo~uWxDdw0
z{~gU&d*d?wrM5qkTnXc97}x&SUm79~H^R6X#(mkw>G>1!w)7jxtuTHeQBy*O{tnH%
zatM$;;gxf?2eSEx@dr~M$>vY;l=vi!-$-7bhDo{d`CW_8Nd6?s-YDm3&&kCneFXo6
z@oyL}*psRGw5;eLNfk+1t!ZecC8i^)xtAe=j1jyRL8b`ah#*G<nIq=3%o0J?2wo>w
z{g#cnByx6&YM9iT%^5-N2=YXbi#}?{%Nt2K;^d2@9DS5tFoHKDs72305fmmVM=TP-
zI}yAa!CMi$9YIk>D9$7)x0sG2`#_0E%2BLj#Qf4Er}`4SR0O5zTqc6DB(IKm`3NdR
zP%(n{BB;*PN)c2hsYa|4K~<7hM@`CoUzb~hsWpkJEgwYiA<f#X>c=X(^bbwR`w<n@
zOZ6z$CpI89B&twNA}QZVC0El3nlWQ@=@2=#M(`=gXA!g}5wQhHOJXbHsa>XX8}iSI
zZ6jzGL3^d7GGACH4jmb}Qv{tO=n}yfH1|c&HG(fA_?l+7i22%ZaUMXkd&InY&?ADL
zG^K{UBIr%thuD|ck0@Vz`;$nPfe{RfU~mLOBA6Y)oCt<8Ng|AmU>Nyu;t1kM;wa*1
z;uxYVF3B>ET*&wcCTKp9WKsl^wK64wsS!-0IX!}zBr_uBIkV)IP_wA0ZzZD4rMW7C
zc_gCDCs{yTNc<{-MI?)fOCnfGvMgf0nR5mC@`(A)UNKkFoIb^@^J;P-Ye?1-*F~^C
zf(;RDq`8f_DT2);TO!y>BDrMdsOhnt%8m$jlI)6L_bWcKB9z-6j`d#7B^kbNBG?~+
zB?2p*lM&ctWFzp?lz;ymBq#r}@aLIt#&$;FiohK)Z&2|>;G>UB1F!7Byst^P5D9BU
z5QrccL5RggB8ZZNWxnMz9pn>>ARa+N&pnw8@{#69lC<jpXVgI!aVUbrBu9vnDp!q;
zMQ~hZ&N&P@hZ7N;jNnBSh?!k_O6Fb^eWLh|{-=p&h~GzWHiB~zoR>yLkt2!=)Ne#^
zGlGlcKM*C(r3fx-eud;}1lP3kqawuX(q8_O^%Koo#GjP|f9d`ug4+??VPhXrze~Iq
z!Tkt+jo?8954FGg5ocCrq~;4SA5(u4!EYo_BluSuEBiLhKO%T08)jzwN&JW6U&OzO
z&t+TVcXK(<kwzhkR8hPZMW!fHM@=OSQJs^djUpY*^u&x&WFQeYaZnL5NAY?TSzpPO
zg<RH)IAqiQ*`q1`IituGMg1rmM3I}RA4TzT6nUb^8~txj%NIp{rWS~zAjz9il!>Bj
z6osNFOr=N^?~=R~#oJL7C6~GtCn+Ws<2)=8#XC{+Z3dDgw+;#^DMfQ$m7-pn_)9sI
zW5!y<@=;WXqGA;9(X2+S6h##h2~|029xEkURVwPH#P_499z_kwC=dTq7Y9iaQ&r%D
zC_ap$Hk0I*fI2#FT}|qd$gU_KSprg!d>XQ6x<t{4sg0v(LeiAjDvD;(My{jgB%csJ
zjp8$s7Q~iBag)fcnXwJ=^C;Sqv?F$kqCJU}+aZdM<SPr9HR=2c7xN3&sw>4WiQS^;
zP9mv2qUcH9ODoa?eWU0X#n~v%$$Vh;kx`7I!vNyIC<c)XCJrG=w4qT9BOe~c5V`+H
z>o?gyqh)nd8ABW!#keTOM=^osp(rLsF)51OI@jbVHflbFWNH-CqL?1V4Bbl`qL>-Q
ztSDwjF(--@)aOPqk7Q{S^P^b6fnE~D!YICqVv#s=6lCD;Y&J*4FYo`SzvzlA)8=v#
z`SoXI6syQrN3k}Fby2LLDcS23FoUd*rtFilTguk0;%s8IHxtEYOB7q9*cQch_Ntmc
z(r-JW*r}uKB9SD~zm8%L^X?_?i{cxS{lr)l77}X|wkYgTIHCwe5stzcHS6GGC>Ob#
z=plNE>IB9wRg%r07$63TPhslSW&X&;pD3bHd|S$V=16{skzeuRjF4dI$tVs)aXgKA
zd!$^lJ17f>ziJ(3s<h$=8~be(N2weW=O|8aIiI3(QhTZmO^)WLqc}tHd!p(Mh37?~
zc!7A4_yh40@iOrW@hVa3aE;{0sQLfJV#?=w6gMc|jN+##evaZ6%|D~~h2%C-Jf++_
zn%|A$9{GLZuTeZ8c^Ji0l1D_z^_b*I6u)Ujy5)Dx{~&o5HQ#(I&VNPmcNEVl{;Pfd
zAyKWCxtc15)G_2gg92xeCWf>z3_fAzO&3G@7>*vsvBSs^L&g}+CvhQ(*J8*N!<R91
ziy<=)vgKkZAH(Z0WTBZghP*N4iy<3L36(vDH^_5nB_~O)7;=;3A->%4^3yC5LjjV4
zM2YhzNg-lkqH4ukF}xi^Q7Xk^C=tUuF%+jMvr#g>OD?2r3?(%$6+>yw%aHt-&-@=l
zajQVHMGP%ts2Ib0G%Ll>Aclr9RMxqw#85ScYEqn>`NvS7M5<Ihh8pCe*NmZ73?I<^
zkQwWe*Cy5>s#bi&)Q^evh|(dFq*Ci<F^>q1Vra}Hsbmw9rZF_rN^_D=h@ZyrSq!qu
zdgnK>mG<cnLu>LjTKSx$Z4B*VXdg={P8HfQhE6eb)}B&<F63Wmr7MY?Pj-)?M+_^p
z-ZO??3?*5ls=Z_A6GLC7j)-9-NxvBS$1s3=U<|`Z#Ced+K=L748A>9h3@1@zI!dR0
z6~pKl#;_;H5~s#6E{5^sPqvt&Gl6^}aZ(JENkpF#!!d5!(_)w&!wl+kbm~l!S;X1I
z_Wb#NZVdBcm``N^aiMgb{$*dtBGygfFOFde9fU89VHx>yqV%wc(%zLZtcqcE3~ORo
z8$&dXSRCtOST8|hxE{j>MhnFdj$xy2^(K<dF>HxpYYf|B*dBw2;tt~e7%VaDB;OUo
zZj!HK*b~EEnHwy9A8R7j_(oSrjl0y!8iRvbgxg5$M9JtRaS<i2Tjv!|Zwx-_{um6B
zKny_=RicU?p>l>8CB|ZilO%{oiAmyt7!Hz1{6jGuj^T(*%gpBOAM*J&W)gXj^B8@O
z6HgFN5>LhO-7Eg5wZBCBK8CaO5q?hgH}VTHT#Vrd-7{BWxI})Ls9GVdzDn~N@kgRG
z?M4hYWyIs=oc}3?pJSLxek+DwV)!_YdU4#2;Z6*%#gQqFyD{90;V)f>`!W2c`L84o
zh!10U6vJcTLvTXwo}wt^dO18L|D7m>{t?5o81^m3pAwm~tHfOV&D7__e`5GIh8Hm)
zj`XaX<VqDs>NwKSY$zw3a^*jcJo0ws%t%KfikKPV*u$6^>3L$L+04vwl!)V<I9`t<
z3-zpV6o{i>9NFT?PUQ_^?l^M9ku#25aq}lpbytJ@Y$`lY9C_)JPeRH6f5lVgr|{2Y
z+h>xL^;R5($O{uCsfc*W|9UUR+i?`7SS+5hgB52e$t6SfZX6|<S}TrHag-*nN-Psc
zC6cmnv&YKCQ9h0e3|o<k8G)boD2h*I`U|NNH@jLK<Wr5}`*Bo{qedJx<L0jWnEwu@
zc3|=OfIc6_Q9F)0<aOgIzjS{TH-DZMpI&meRU8fC=t+l$aWo?7Kx|BG8AlV6rg1bQ
zX&%R?Bog71IOIUqUg}Jx1yRh*{28lN9IfMML-F%C+Us0x<7gMhK-NLNI;j^Obc~}D
z9Xb=c61zy#NaU79^$^pSG`n%sy0hDR5M@R5ilcWNedsVUj!|*+jiVpU{&5T@kvb2M
zqT|TQ(g#s&yck2`7#cTE7l*|$g5vPFd280Nye7)&qGTM+f@Gddh+_=-SmHS1c;d@7
zJCWuj;$-3!qSSMmuE}(g8F9>vV^$oq<L1>Z`7DTI4*6W-JmP$!Tmw-)3u%5uTtr+<
zlq(@i<5(8Q@;Fw+;b9RgiB?_isyJ559H6;2j!kiFmZJbossH*oHjr;5N`<BETcmSn
z?ula?$u8pdIChZijGNbL(u~C2K_-zouse>gnWQGeUYWo&zlmeN^fvonb(cl=jExRb
zoIMVQtZ4c;DZ1itYenwV^=eOF9DZ^`D}gwIafE1wWj@Hsztlwk+%Li7aU_^}B#C4k
z2guVVaWIZUadb<ddjf~!I3n{rVYdC-IF82gG>+fnI2On8IIhXGkK=?c@hr(n;;A^k
zBRL(%84`J$`hMB}rPXqFng{17o{!@K$;CJ>%S_|a{vnP_dS=R;6!8jut`bF&%KRVs
zUE=jPZp3ku{3qfsar_*I?A5oVdh9*f#&5HGCGQ>jNS_P87sq{?zsB((j)!qPisMP#
zyrA@04~Mv^0s1YD_ZY3uF#Hk6Guh%2D3!pUas0&~c@p?Lj^}Y?OyIQy{-KyEfz<54
zf8%(;trCfp^AJ^sGzp}qgA|mOB%L6SI~i!I<Bp_eN+6r|%uMon0$CC`&RS)qB0PHn
zZzPa|X3hk1X$OgrW-&^<c#%6{;*3ein?Sw<@+VLrfnxM8n82F}yhSelg%T*7Ft6c1
zT8u-o`BNA2SoVK%*+PpZ{=0XmxI~uLiBb-i<y!!Kgs3+kmQJ8n0v{w$CV{dEluMv|
z0`KdxDkM-bf%j-i&s0jFaspLp%5GDIL~5c|qLf=Lk#av(b?s9lftuvX=fi}#zkQrQ
zy##8L*CEy=engb%BtG?-OWNBwfd=FaiH(SAS~f|bDa~dHd_vM(6utoS<=*&N0xc3~
z$<+45Rz!*1nxstvpOZ+rZCQbK5`<H_gZAv0KqvCf33MU(B7v?XYWTh+S0mUXfu0F?
z6Y$9}CD1#8r3oxcpbvc}68k35kEDMB!x9)yJ|KaC2@E11oWRgT%7YR^691hENH>n4
z!x-X7;wYkQN~04g?~53lz&MKIrFC3Z6JD9&lM<Mmz!W;nN?<n0)C8uHOiy42$;?E`
z&Y(65>9IKpEJ$D>Q|BfyPiE;>%$FI<+1{X_xqiP&U<n<BFG^r>!aRu*UL_S?{vX`(
z1insSPXa3vSed}81XeT4c9}mU8xz=+z*_Qk39KjCz$Qp@)Y_Mrn-kc=B;g~5V=KA*
zcfhs;+Dzf5B-eiu*hzht?t$GjCCFZ#*G{reI-F#G0u~Z^l)y@|P0s&i+3M#e90@q7
zXHCGBfScSy%t7=gU?gxaf%^#r5(p;nT>_^Q2qh3s;0S#p3G+Dx`6LsFlE;W~VuC0Y
zP(BA}9wZ(j9wthazGbwd#AC9tkeo>1WWs#pN}XGtN|>h*a+2vRWOmD$1TG|SF@f*t
zEXrAua|xX1gn8M+KT!WMflDNpiB}T1n!q(_p!{z#SBjiq3;(|at|xGV{rqzRx9EJ6
z_!CjW{z7txoq3yF&Ck1Rj?_e&{44dphz}BYn7|{J^*fcv<l^}xf#1lVYDKE?2YsY6
z&*UgT{_^bfZ<^2LD3HLv<S!CPl}wo@Ady$WrzRO7J983(J*OjG66ur3kVM8L+9dJ0
zT>nWTQxX-Ec#qDRiTRRvJ&7zyWKEiLJ}1R&<k^XD5OWY^Ifzd#`s5~xnJ0<7<Z7kl
zPoh8)1(SF)i89os)rFEMmPGL+3MWy7;#*0)ty9%@R5Y1#G!g$2Oe&ScJ4w8oM9JiT
z=Z*5BVA&_dr!;-!jJGUFIbwODoD5e;ny19-WVjN=W=T{|q6&G{Bt9gmmc;uc)sv`6
zB9UuIpQJOh*P`+PQAMkrM4cq+Ch<`cji^gyK2D;35)G25mo&d;$@#5(!xEw<WJ75M
zuNgK@qKPy_y5)brLrICv8S0ZHK272?@)j~8vfC%olB5+;Jk^<ukhV#*OJaQz8<J?B
zL<i<tkwnKNIwdhRiD^l6PNGW^Ly{Pp#20kvkwniVx+d`@&B~e4jYMu%@18_#NXoqG
zl|<hp`Z1|Dv5$-n*GqqyU~JK#<bO+PAbq60gQYBvj^MB)hEt!A#E2wDCNY-gD55lB
zOcJBX#ku_+vuN`z&{U*X$G<Y@6O)*f#N;HV=*|>p)xFb`n87TIh%=LzOCk=lNM<K7
zhq;vhyd>r)u^@?sNo?kCYHBTil|)X~eB)FsPGSl3E={7UI#GP_Vi}d?#6fcXpF~Po
zMY1}HH6$`>Ym-<<u8zp!voVPsN$gBw6Kk@WxP`ctxQ)1-sOq^ZiQO_HjPte3t0eqM
z7)k7<Vok!9#6I$GlGvYwg)>BzsLn?0OqJ4IQaAYtI0+{eb$_)x2@g$GoR>xW{-3Nj
z0l%sGzsHw(9y2C0p@E8|6e^06q*0SJm?cx0=OGlSgcM0AV<A$ec;ETldA`OE6)F@8
z3IBE0d2io-&;NPOv!1or>$P8dJo}#c3Xk*iuqN;JJZuxE$WYvN<k?4YJM-)Vxm|hS
zAsofs^4TNI%Y#eAO&<}bK3;M54=d>x4+xpv5((xZBoa1yL?kMV<sqJjL>`iwcqxg_
zoOD*pY#wr)ejW_=V6UvrU3T5}<zc^)2ZZ%pIGBe+<as!phf8_5Ed59x{ucQu4?pMO
zmpmL*@;6~d2PDVxa9l}-{WUNDTY|q!Igy8xc{r7aKl1RGls|=Mgr|kh?ToYH&UXkM
zJSXM6kdZIs;UDpf!heMvrh?UQB@b|+s@hdRNdJ-|1zjj4Qdn5TSc|$)OuV=YB}5p?
zne)tB%7xMr%LvN~sh4x1ym$o{DvDg=LS<vE<ods7O{=)_pI%_DYA#fl&$Y(0h6~pj
zUQ?u&u(k_zT&U~%f6gWAyU@UehAw--Y$m+kL7oD*&{({Q@CM<H#(I;;&BCTGyLF6k
z3ybD8D83FLa+?c5zLLO$I#u9y7h1Y-hYPKgeA<IMUAW7I+uUgGMr#-Dc43zbKgxQK
z3(vdof(vb2XzM~d7w&c8F&DbIaGxAH3fTkqyU^Z+4lX=klm|teFCnvHom_ZG%EK-^
z;zAb}IxFei_hE!bUFa%>FBv(*#PNDu%G1Ipg!FvUWnUk7iX)}_YtI<Hy9>{{@SM?^
zoz5@1(8GmsE{vDkOD+s@;SCphy701;S6t}jLT~X`U3g8zd4jr+3w@RBFYG6DF6Og_
z1C(SD14UjJQXecbN;t%Yp(4Xvc+-Wq#D@#n%n>4tFj9n(ojQ+Ja*S}S@!|6c6I__+
z!Xg(wabc1RlU;b<g%4bq;=)uHX1VZ=oTs_)w#hYJvw}s;aABs){sb#IH|L?Fcjfk;
z3$tCA!>SIkE5MUP$7imrR6Z10Ae<-s$c6bPG9B3Jh0;G3I>Yy=3yWP?=fZjymbmbl
z3oBe$>B3U^d?EbYg=HEq4yALqbh&g^fI+@=;VT!`NLgj{)uvqMn>qAcYZUUYUHI08
z%`SZ7!Ukp8DBL7;#*T;CTa?`D!uKwGC(gWFrhX9LW)xlsrM}&T9Y)#d%0FA*?ZO_e
zJZ=<rBhLkw3rAe|Np5Zz(k^6N@VMZ0!6(t;ZYbh+At2)PQpkm{3o#esE<~h9)gk<k
zW)@AK*Lc}SdeViITI!6Qv#6HkLmjdn6y}6`h5Lm2g$#AT^wJ?mG5TRw{<YJerJQl$
ztP8)maMXokE*zKmhYP=Qr*q+?$@RO)2@}(qx2KGicQ^ht{In~7R{!O~-x99~&k6q(
zo_FDb2<!Qe$VHQj$|V;rOXT8qW(?rYpPvOp3JQ4&S;UQ^Zd~t1BR7h<QCxZrVF@=%
zxl!7Ul1efr{mZyf){QD|RCS}A^a^fNbfdgD%i<Z?HR6?oOtP7k#TmhAay2)ul~P^k
z3<|Bz;9loOO*d+}QQM6=a%kX2T{r59*LT~$0(35?3*AnxhK|Xcy*5_zW;dFM+#tMB
zNdKGM`CsZFZ|X)fqu=7jt>SzJgQga4-0sFVZftO)r5ks+@unMZxzWmvJKcE5jfdU1
zOaASIt%Y|B?-90fqpdrC919k-W8Uk=eQw+@>x07fZgg-+K|CPhbV5h*PC}>CI=k_R
z8_&7%yu>bUJSM`hkGj!S{8^RK&5g&Ed_wrN8&4X~r#Mo4CseE1Gj4P@`m=60d0%kj
zMK^l6(Oae-ZoFcAUUH+S8!sz)U`+lyFRvQwYb-@;U>`U7N*v@yKR5ateSpN*g#(3u
z=+++VKdBhraAUB<A;O_THhh=}eTH++EVcV^gc~E>c+ZWwZj5qcv>TJ%nBvA5d5#y3
z6^=7``N_cvhEH^3lK86=>}cGkD*28Z)7+RY{<a%4MP>+{`8G?O{>}&A-gRTPQRZ+p
zyV;KRz8fF7u}u1h!jIip<i<SlkKCB=#sZUTq1!$dVjG>G`%k1VG1gB-77Lw@{Y-qR
z8=o5=t{7jqvD}RnMp^B~O70+Td}WkXD#d9jf5_Iju~w#a!u6a~dZv^PU%T_ao3YW2
zP3&zCYIyLi8=KuY>BcEHwz%<~8&Nl6ZfteqdpBHexZU`{jctmyN4Q<M(~TV>SATJK
zDfy#tx6ql`d8S;CMApRbhF9EY6n0d=4a<$7l#tLF7y5^lj0hPs?nc6m18y92BPo$S
zDG~N$+Kr4GSvPWS>@`;Aa?W(<xliJLA@xHfZX9*vn3Ti9pWQg(#!uXvbTsAc-M`4h
z2u`TuZv5uP?-GCI8msk<pP@cs)&%Dpwtu+sryKB~fCs1DI3xc{Zk!c4=f-(A{u2LN
z=&Y6(#97uwk$;3vhx}{YE*qaKB0OI%=s_V5N_kM)gTfwr#ugWn6!D;_crlN?Bd^o*
z5+#haq{p79Y(g0i%1W%}K{*e~dvJ{hl{~0mJS&PY0-u~@*vcMM@t~^2t3B)xXI592
ziN7q@c~H}Xdp)?%gIXTc_Mo*)bv&r+K~oQ!c~H-T`W`fq-ayDA8i_RY;Chikdi9KY
zW7U}hbb|*sdT^7hH`C4h4Dlgna(dq4!R;Qjl*6qa+$KW3xd$!8o$<Xx{4QZDo&tDK
zU57dmwUqtiwCHX*+#_rwY%6RhWT^W+XfOVR2OT_kK>QI89u#><$kIECbW$sr<o2+~
zo~50Q(uKr>u5#-pe9Yu^YVx>}krjAS<f;GH`iuwN)f>-x@SMo=!k)qxgf9wvc<_=4
zyNf@LFMIHc2d_%$<3V4M*Mz-<y*W4ZGJ8KI2MU?DzsLX~yX$qM4-#RWhj=j5gKNF0
z;l(fyhI8_GQPqn#J$TE5?>+dzgAt|`BSjb|R0N~MM|&{FgRvfr^I*IOUrL<d!9))}
z@ZduwCwVYaWU_FIaH?>c2h&B~_F#qwlZs(KFK(#kNoINQjtB3`fnzb(gW2M9Ja|te
zT?m)?No4uIFNKep&GX<R4;Fi{#Dn=BEbw5FObdk{3mJ_W^M3_A_>}vmIksVh&pcS_
z!51DZm-FYsWuE-EqL_DLGpsOiR*G<)cb?q-%7axNtoC3HS8|!wda%xeZ#>wb<a!Uj
zHhFnL&$(sBm>WIVWON=>JKy}=?7<cfzBBq(54f7q+4<<}HV?LY@Fy2B4|aI4(}T1J
z84q^J-|s=dgC9NE?ZF-?J`*R;1DCklC>{~7a8(hz2ybOr9t5RCJP3(|h0eZtvXSk^
zE$Tr`dfa3Gv?auo9;7^QPE4GqHRzf3;GnGJIg!1>eZu`791!6Iqr)L`B@cUWOoZYQ
zk)MP=d+>|MQK8dg$36H}$=^IUDZ*U8dvL;VJ`;ON{12n>pIpv(aMpujUKID@FQcFL
z;BUjviSTh*M!Vp_KOS6^@~@BwHkUlO?7<Ze;I(~<cu_#4kg%Ze>S|ori^X~#lAcAq
z`TwX=LOxW=iInuBlu=51QAWJ1(CPp3;uVZfMUiWSmAt4d!XF?8tR`Mv$fUDUv6HX!
zqNW!gd$GuiT3*!lVv6ypBXX-3bw%n4>wD2aq@nOeFRmA9By22X{3aqd2wBQaA~y@0
z3Y!V(d5g%-H*lL5&An*h#qD0a=0z_rT6%GZ7ms++#fw&6-08&wUOec<U0$^I;$9Zb
z$9{w)ZM?Y0aJG(HTQA!EN1@MsUfl0Rd$0YgN{0?!8y!w7IkBS`os^6ELn03gI}3Ti
z;ZZNTs?KzH%!_VbJnh9ZUOeu#?}gcY>%|kMb@ZX~l#-0!-HT@x=SAUj!WX=F-Z;?5
z*?M^Kk{3PYz*@cP#mip2q9h%hu+&L<d(lTNn&d@aFZzj3lxKh8a4!aUG0=<Gy%;3x
zP~jW04pGsA)fKEN12X<FnVdd((~Gyf7~#c8FGhPYMxHcr8zndTkM&}lVoop$t>YD$
z0qgPqkEZ4y$*_pYrm<7KnC8WFC8^K#;%&och|Cnu^5Pwlca3$n7jwklGs+xi{a5k>
z;fG$#6ZuFuU${WHP{<Om`@$ZbPrTUV#kUea6)qMo@!~U%srcu@HC`<9;tMa9EBTdh
zg>a>i(Z2NN|1H!iqpapo>J~PwYrR+}eZBB&FTN4k;KfGc&*MqwXmhg{TfA_qOPTjO
zFLujks~6vU@q_qw;Wm@knHW2i-08(GqyK2ecaM}jqr1HM|19iLDPE)dyzq-V0fSzI
zxEluWXu$5VFlW0DPxug#PgEEa#=S^*k@O;^<iB2|MRLN7kP)&XTnzVmvCoVBN*?#(
zS1%5DaZt%aUi{?6&*VxT79J5^?ayD7Jm$qw5k}_1NGpE`ev@)q_`9*5@ZzNSDKGvI
z`D3NsqCdsA^P-K&S^flw{4Km7JSRNQ>S?ku*FRD&dT~n1B`+>}am5SxaI4Q=ObYl=
z(1*%CR8g{!u(+_Wu!yjzu$Yh?Uc!fxK9usIv=0>}GE^BK%88ft<?l+|@5=j7L87xJ
z(2d(QK6@9gWTH{2>ce#=PBoG0K3r>*8Y0Y6(}!9<)b^o{4~=|iEWNG|^?hg{UQfsx
zGG;?^lVn~h#3nx6;KR*6G?nQ_A8rzH9N1&b+subsR6}NQLOJ9%ADa8nLjLWAxBJji
z<PINN`EaMt9w}zI%ZJuJwDF;>tal6V5walq5Zn21uMhY6aKE~Xxg3*IPltE#;Q=2W
z^r52<U6s9)u(J=3`0$Vq51X!bYS=|qoBu~=sK=yt6FMz=(ub!we14Si+x2<chu%K)
zQT?Csp}P;yia)1*pu_V@lDy!<i{d?mF9~}JUl!8m6_Hncc+DuiM0o$JuMhpikNeQy
zhXFpU@nNkLR&1aTulq1a$v1s?%ZE3_2MdP?hYDHBFp=Rt`z{ibBYYU?!z>@(@nMt?
zqh*~c9OJ`Sk#<FJw|0baK8*Kaf)5j=Px4{1&;Gsv9T<wAGo2!xyl7uc6Q8c$ds}>l
zvCj0N3-8zPQi%_<efZ3Wr9RBz&c#1@F+T74FxT++eK@DT+WgRmc|LsP!+ak;_F<9F
zewTKE4-4hVdrT~vi;q*EPki`PI^P;DH3Ex$SmLuEI<28w?Y_$R+{FJ<WSI|N_^{lE
z6-urYI=#fOJd*s%_^%RK&7E|HUE(@T8=u7W#^-C6CBDIjjUt<T*kP>S`mouDEk1nb
z!*E`X<C&36TYdOm3d08H*`{qiY?p~VG7me&cL{&=VYd%^)WdEmdEzc1BXDkbq<e+V
z-a*~(L%;{ihoBE3ANKmN&xbIVeIGLNjQSAsA>~8bhq#m^_swcZh%<uoC@io1lk=i9
zk?V8ThnyVvOUI25tWw`k#fQVv5BPA<L^$NLzXrn*KjOnrKK#sy#Mw2-F2&AO5=Z5E
z%x8z9$hJ79Uw!yZrr&)y<-;F7oKW(l(D?=VQ~ZMPw2(2+_;A+nzeN5Po)ezeAkyt0
zA1?avuMd}eDCWmsSFUio>_c(!D?Y%F0^$YzC?vwuCHfThqlh0xjdC?Ft-MN1hZ4qA
zQlyk0%Xl`ykN@~l&W{#aQp)>LLF5);ML!z*(M0?jVI^T@KdSgq)sJdQ*6`yxKdOsg
zD-5U`Yl^c`wf(4NIFEJf_)*u7dVbXR<9eev@S~yO>}_YZG?KD;h&?Dbh~F%{(Rkh@
z!kA5s(#(&Z@7eyhO1VwgT<Dx7-R?(ACGYU#4Utx?1|R<M<1Rm1`*F7)&-wAZO!xTl
zkRK2G(MHL(ezX(0SJ>W<`$X;+vQXy)s)HX7NO@4$QP|1&{9VkhUS~fZ^P`&|j~Km+
zACHQ66<*!<ANS*F<MV{blYTs96vyouCA<6a?0@tZ#C!VjvdD{m^f1<!{J47V{EEc>
ze!MF3njgLV=xsdv`q9U5metR2r=<gw94LI<k3s*j4)$Y+A48=~@?)|e!~7Vo<ePqs
z^JBdDTYil2W2E>f;aERLi;NMnuXx44DQ<!kXB;PrJNgtqruwnck1ze0=ErnD=KHZg
z!}_)#vqfeIX9{Nt-|^#Jzdh5OA7bJhKi>0WuB;ylDZcN=2jcW}oag!Rk+C|;LM0aq
zKNc<$ej@zTl(NK+&!j9Be&NUGA}nQ@@gZL>aRujt>h_f%tNi%IkE7C8`?1rHU4E?b
zW33<S{8%r2v+!#_Hu$m8k8hN8B5V?8<Zn$(N8jSdcQS4D;|G!N)vNSmyS7Q$F5DsH
zSTN&{;+7vlKX&`E$B#TeTz+`{@X6%%!z02t^moc4`uzy}|MZX_VLx(y?DZq!N7Rp`
zA1Oa#e#HGq{Kwyk=3v^7j2~H9Sycw-jZvDoF}cr={eB#g^?)A-MgHf<A+^q_kK;)^
zY=W?LKl$;ql8(<YKaTs+EPz`A_|=c!xXJ}^Z2-Ufae_-_02Ko`>BlKQ5I}(d{!sig
zew<a1KZU1F{J%sl`0<Y)fBSJx&gV^)SRyNMQOQewT$b~{Chrvyr_RnO6bztH0A&Mq
zs|yEEB!J=pl+c+}QJzw1<`h$s9l|VhD;Yp(`InM@HCh=ZnWdaa`Ttn2k$+Vwl>(@&
zq!X};DTQ&W8J)aF05=41V*u9$P*ZxX02;`-b^vvx)K$QGCRcqWSxH82NKwf~0W>x`
z>()fvsq;<B*i?A4kh;@>#9ITnO=5=tng`G#fHq3r9ze?g?h2rF0Cxn?O5&Y?{NI|Z
z*;$9XP0V{t8);<`Z3Ac*z`e5GC!{m=`vYkIpEy(=2;f0EbPS+V01t^X$io424&agh
z<aJujEDY5(fX4!uAHaeDx&`pKn*2ckPcV1@uLm$l%2NUK5qVnpjIetE&j#?E_)9`Y
zeqQ7S;fn$EFgnZX8Nkb?&aX&+Rrs2)m+|Z!$bS-^mG3LDUjY3@1_%cVo!)yRfWZOG
zRHqFIU}yj%WF01)u+E-`!^Phez9po{-^7vXlTlJe2QWrttZ;Gw<BaEckqH4z6qzLC
zL10TA?@dv1s&HBW(*t-rfEh~iIV*ND%i?wTSyJ8+Qh7Ik+2V7A?-_k=0Pl-m{jK~^
z$$7$$glzc206ykYVBs1Iivsv0fGYvO!l!ab2apM1vG|ezJ_}%J0G})QT>#4h_(J@f
z0G5la7OoJoZYxE;4B#t~Rl@qE?4IPdCV;h4)(O`OS*5Sd$Zn8A&y4|W68~1XS-8bm
zdEmM=fbW(3A%Hyr<cV(!V7thU0Conj%lQ8o08a;;I_#Fn^93ed;;{hS0eAxN2H*=I
zY;yS>&j11eSOMe~fbYn2bK-;o`Ty+9WJI1(`8d{i00|Q(DU#AOqcv;voM|<CU~d5X
z0@xqGfdCE$aDoeU0Eg%qz;Q0-0UQqCNC5Ay#jya2a^(-87|$H}7O;{ezla<S-~;Jn
zg(K$MxqjnMKmb&jWjOz(j?aE`@ekm902c!IlV#P%X(u}$Cg;Jw_}Kvd3gB-O|6Bmv
zSP(ZB@lOC31GpTpPrDfQ=#?w~%6dt7)sxl&mfd58gd_z;xJMTjDPr`ZBE>8eH%bYS
zk`_vdlopl|mbFmMg8eWR`;)JLSvIL4<PC*N7Anil6+{&aRV~z2lBHJ@VTZE<)h%4B
zWDN_~iPW@E$9UEfsV(IGzI&S8ih366TWDaRp@j#6crb|TEi|&Q&BAthHn#Azg=Z`@
zv2cTh8!g-<y}gB-MHu8R3r#IFvv7-rTP@sfp{0e!rEr@C9y&I+P;Z`nJFkWD=M8b@
zy2C;%3wN@(dG^IU-v4Sj!R9ozws5zFdn~k3mivTlEwr<6ua$r8!a4GEVwT}g0GnLO
zF0KO`V&Opx9W8XV@R)^879L{vR>32x$-@>po0>S;|EP*C79O=wehexU#@51UUdpaU
zHw#Z#c+$e-#=pyCyL79pZGFnhzXIId!m}2ZS@^=ja~7VrFv7w}3oj^Ff8mQ3deGlO
zPYbVE=w;z$3$IvqpS)^;6<|Q}H6`u$^qv0cZK02azC`VzTwtkl>!*OsGQh$>3$H6V
z#KKUKK^ESyFj%~&{)UX5Gt9zp%f5y8mW4NEV(&35O}+TBAlAPiMp+nb;X@1aER3-*
z*1`-6GcAm>Fy6ux3sWsjurSfWBny)jgk8aEJBuOT=W>!%rdgP7;cfX;E`=3c?Jniq
zc5cPavhbdTxfb5xP+FKRH_nhbmfi5)Y9lN5zH~<Wz_KHdaBzv-KC<vJmwGwOx3Iv%
zLUx^=AE1@(`b4J17MAc=z{)>)VGTdCu++lmvO4}(V>*v)EoU7pte3+I3o9*rY2hmi
zt1PUQxY|s=H5Qy#*jS>|a0kDZ+hz;jSlGbHqhmk%Y_zb+!nYRM@>fIs#u3~i=kF|R
zweY=}20v)8;WTja?y#`aLZKiE2eHe-j~4b>*l%ICg*_J1iop1J7NX)V3vLS@2C-mS
z2wLz-_Y1#N(ew{k_UNzSN9QbrEktBx|2t1)@zn!o|B6|NTS&;tTuBkuJf&Wx4?7_v
zF{>fSS=ehDLVr3OuyD}ANeibe9HOU%pXGm8_>=I6kp7I!ES!_SSU4*2n1x?0{3d=}
z$Zuo*Zv0P(u%nof+3g5YE?W50!f6X<ES$A)LE>K){<d(=!g=j?%*Dn!%_Lrp@Q<81
zi~hB6$--qN3k2=>S1dq;qjRFF-GK#_q{)d>B#6dAGzp?;5XFKhE^B2j+Ch{EqGS-I
zf+!tCxgg31?b%)?h_b=_hw+^G!)jCrqGAx&1W_qy&w&=IfHN7mH?b`4aaDt;7DSyO
z>IPAr5rU|tvT6vg3!<iobK#Vcoz~Ts$Os&@dg2X&Xc$C&aqba(BkX$dM#j_GL5h^Z
z4ME%(#9cwO4&o+bZ4t!HK{O4bSrE4b?d6xjZw=zMAetK=r(JKT72L;f52B?^cLZ^#
zNGsuY>O(e`y~-eWOT15bPY`W_Xe-`McyBO&O`xYUrSA`-y}HzHT@WL#T;Zb8F^En<
zyb;9UARY?h;UHcK;?*EJE69^UJQc(v;$4J~2GKQ$$HW=ui6FWK@wk%waiPLdb_SaK
zY3VNp@r+3KAf6R@PWZf#&3QqjaP|CEy+;r)NnwPZLA)HyA7A#;YeDpqX^^mY5dDp3
zpCI~*_Y2xX$*|l8NEs-6T}Trrl`{%Mf*2}sOAy0?7#_sRAifOZ%^=<iVtx<{*h_Ml
z8pO09Mg}n|h|yBU2QeXtF+q$CVw@D`3E`fcv3y7-h)F?A4q}Q-EUr%(`)BK%d3}J@
zm>$I2LCg+fj(lbWF*Ar+;#}(A3EElMlkW!epNC;@@TdR1Am#?~K@cAX@xGj?v!ygK
z*E|ju7yqFBLqml#%6W>FJ`00b62xage5_oHg7`$_Q{iG|bmk$Cl$HkZx%4j-iZxlL
zr1KWua`6>1U41v?tDt>Gzec82L97;G!&$eroOMC0589txV@);%@pTa2$YDbe8%3O>
z8a9C&eZG~rIcWEQqkI>{)*!x@{)2F55ZgrPzdeW@;=EkU@!ci<qi}Z+dqh~7JV((O
zxr6Yi&fXw=LHN0(=q1*Gd>E6>v4RK&5t33XgxVp5gNP^@4dRy|js_7^G9E-Ch@{E8
zKZsNiX(cm3<cyvbVdT9c`%IF>9SGu}l81zciCWy8nj8t@C+R;2(MtbG#KT3BV?i93
zUM7TJMGA*dB!u6B_&tadL7WWYvh-8jFM{|xh;vH*8N?Y8#y_ooV6Dyu@s}x-%PE!f
z^7$u-iy{}~>8!N>O1UJ3K^*alM1)X4AABnqvQKFXh3r+Dgq!15G=$=EV8&u1EUSb_
zNnt5rX`z#)YzXC)EFVHOkqRMH6uBmZ$|8(bDU^R@sfv`ULZ{s7#^>4)YJ_l|k}S98
ze|+kMP&b6`QtE|JKZM6jt_C6<LuklGh0rL3#v!x_;dbdwLbx%6o5XJr9^>~vMOdp_
zLTD=fC0`#4<)2wlzcqy0LTDb!f4`%&ZWOkZXX_B|4&e^*Rw3LO!d;>NdvTbaeC?MJ
z?g^o72<_z7Mp%kZ{)@B^p+g8v-WS6C#>6b#9thz<DNc#|%`s1>5FV0FpNB)}EdEFc
zT|^!Yp{vNc*5Kpxqje9Zo0P|e%=HAv+VH1Do(_Tj&xG=`JR8DuAv_<#3nBEC!;8lM
zwGeuQ@RE`}LwLpLFN<)b82{B!{xf5}B=#2eF`o44C*EH;KsZq799j<w;f)XmhcG0B
z=@Gmg!O#$fg-||%3K0ws;mr_!3FBxOZ-p>I8MlWqGK5hfd>qE2Fh++kCWN=cm=U(?
zGnT_7GA@Mi@}Iyxkvm`r6GNC3!sHO9gz&RWQ$v`>IO5Y8B$WTm4CBlQVV-pInIX&y
z;hhlP4PkZ&b3=Gvra8j*v`=xTI8ed9hxkD#|7PNcoYJLiPUQBHoaYM{2x(dv%Krw%
zq7Xg_;nNTnhmaS7OAbpySRKNe5IzfGX$YT(uq=d?j4$gKAuJDJg*f}!`65I$K9IQ-
zUxl!WlTA<iIKMbVZfiO8A#4fZyAalg@O20qLfEJXj@viN#UPtP_*VL6DUOu^oj6-V
z_&$UkA?ys{hY+@fu$_wlPwiDYdyJmknB2uK<^C1I9?p}cw!$~&YV!u42-gAD+#P}^
zgmeg*5WMQl5Eu3kd?ENl2!vp14GEf-I=QZ{V382wAtXYGh7i-r=9q{{MN0`;5EaLi
z4Ivl8!4M9Guvgao3ck;HvWNpxoGfh7|3Ww-g{H&C?I+`7JMa`h$)mz!oNW9TNb%DJ
z@Oua+#IM)nJQ>2d5Y9_E#XV7k5&jI}wD_42&WijMvOn|nw>Urf<=n`o=Y<gJgi$w)
ze?qtz!oPAT5Jo}8zog{l5Uz;OA7T4$H3_#uVU!M|Oc;g3C=y1|F!=Iju`r4&FWpLn
zQ8J8DCP^!|wR~($Us5U?M!7Jmgi)0l!}jk;g)k~A{``%&CX7m9R90U0xieTqZtToz
zVN?&}x-e>n?XkF4*=vOJe<N5oW~n8S{<Y=f3>;1M!l)lcgD@I~(R`fU7U$VxKKR7<
zoymI@LZdJmhwTptH&F#{4dVup8->hrlgQ0sG!<zU#w{W&g$-u|>2sTu=3%r5<96|u
zVcaQlM>zi(?^a>^JEDBv`!4CNh37}xwYn#aHcGY);|Y;=VcZ+Wed3*kbh}@qy|6<V
z4~RS%Mn{oOVf%36A#omBJS@VA#Eje?QL+pBO@vBUk;lU57RKY^&ZkjI@T^?Pr^0wT
zjAz2=9>xTd>)9|~4&xOipA$YWd?Ab%!{{OYQrP|`K+mxKmMe*KFZETKUT0TR52IHY
zy~F4eMt|w7k27k0!{`^bkAbQ1Xm)_C1BDcMF!@FpgTojrWk?u9!x&{E3=88;F8fLj
zH>I-zBe?#nN={7}nH3u?w=qJelB~cu&PgepX>^+?K1s;r<S?d$F;&TFVN5srf15c|
z;`}gX8S6V?yemFCj5#9j2|pCh6}~V0Ae{de49l7q#zztdOw1p_1xhXya#%kR`A+z0
z7>mPLBF?;PL_QNP4de4LmWh86#+SxtxyXtzRvLxPXWp-rTouM@5sKW_imwY}y~x+X
zjlyrj*dW5ZyyCh^{9B`J4r7bqyxy|a@bAO;!SHQi)EERlt+XSIonh>f?o{T-Fm`L#
z-V?TuJpy6m$?7tB-C=kP_lDs!+%LitIxCD|7@;u2VH}Vc5hlY(iA2MQiNuA8aQ?GZ
zoB(Ml`-E&=CX8$tIju0Ybsn^rk#$9Ge;Ds;m{{$DVH{!>lk2B24jX<%gpq$XigU(&
zOl>?b@wo8UFn%*WzlU+c@RK5^gnxwbr^snzJ;N2o@V_{h!Z@cSpRaQs2)V$;Ka7iN
zLa9jpy!ux@mxPzYxDp0rDiA?Yk%GpvkVxSOiWr4$DJEXrC?z5&X*heMv^XCPDig7v
zASxR{IT1cS$7DrWpNin=2(F2sl9H8$w?<GUf~w-xgms10h1W(<LxkgUok-0HY8j=r
zNS(<4UB{>wL4Ao0B4{Xby^uZAD1ye~O(JL}a)XeOZ;aq3!*7nDso_p%-V(9@s`WN5
z{t+~nsYL|$M9@b3_6S;v++lLH61h`&R|Ks^?iRMy<Y^m0y9l~Q@K^-*MsQyQUDzkQ
zTs$B5NAQR^lkG)1MDRcaKl5G^|Nl3Fj^dq+@{q{G!p=fwq$l~K%06Vi9l2Wsk4NyN
ziOhm1J`usV`F7+kSFX^F{qT$``G&B21kZ|4e=dUOBX}W#7bEBqLBB};8RAPKuSL*P
z<YnP2!dHcy82qvBB~H>if<EGXjY5b1;scB_FoM?&A0)!LH#mYJJpPYhSOgOzn8f4%
z2;PifR0N|V_LGoraW?V~YxJ$o5fO}xpbkIUHq73~$3*N$E9o;<p7h~1E`ss$nGgZp
z=*;YsBbXAwG_{)Vj<Mm~rYgw@1Fu|pi3k5mE{|YE1T)2F3Ezp}-3Vq!Fh|Kn5xf_{
zTyf5#_apWVz7Hdq7r_VO{pQ=sM-j}AV4=o^N#5P#wt#a+gYvO-XLLSMDAwoG2o@W@
zMC3E!QsL(j`x?|T@h^l-u8iQz2u{WDM+{%FHzK$@YPW8+9GZx)5nsz`!*@I*SRcXH
z>@KbVQ5210Lj)Tm_&tIX+Nn21U_}s&;M)i`OW6{^4-sq=|4z77_<aPW^oZd02zEr^
ziNG7d&IoozuqT4N2!7PIJ7PaVSy_L&#{(^LR|MSL5nMIV%9VsBpPU0iztG9TP@xFI
z5&Xm*A%aK*(FpcOa3F$M1n~$`5v1jx5GIApRcV&JWt7ZCus4FNN@rOtai1DOH;PQM
z8V4gd#O{jVu(HsB^`wd05k(_mK;kbE9F5@D2!4y;SOmxAMt@p~PDVziCnIn>$zh7%
zN(6}Fj|l#Z;Gc;7XeGDGy!aEr89ATjiWI>)r%>k7Lz@h8K7tDp9fk2JUX0*hl|_Du
zOT8B4%N$u%xPV5V!3#%GFp5G^JBw2>B6VW1D2hi>If^P#l!&5a)UJ7{Xnw0%7Pr!L
z;Nl-e*(k~>NX4k#W96f$5Va4U$vY0Rw`-!P#7+IfvPh~%Q7ww=qi7UG^{71)8Y<eg
zQPhayx+rQ!Q8$WuQPhf}wu0A@8)G_gS`V_TU0<dKLPw!U;*1WFH6%8Uf-nBlbVC$3
zs`)oXaf`^!!lqGsxo9TjIzWD_^xK5Zqi7*=dlaoiS_-*C-66tHuiPnem$0?5QokpP
zHc_;VqFogC$Iw28d!x87ip5bZp%O*=C}u`6D~b+L`y}YuD4vVrfhZn~qGJ@D*h{=t
zFMLSYHHwF$=q&z76pyN`E<$E!mAH{S7DYGtJRZdpbknlTH=dr9$e2&5I66OLl<p$T
z`@G1|D27GxLKH7X(IbkNqUd8hdq(jJha-xYjlx`v`C1gcjnd1+cT9bw=qFSEC|-|Z
zP!t1<=Rgs@uJT3{gQFOtBy(|N^_-eJI6R6GQH+e@O_TR6<2)*g(NRo@Vxp8W!g1=B
zvErLn+nq2zYCq5HM4J@F)F`IOXR>NLMV>t7clvO86mQGw_|K3JYxPbP@5*zbth1wd
zKZ*~cm?M$>@SgO!N;<9h&<w#mnHc}0DCQf!K!lzj%WaV|ej@x-CZ__QMX@xBVlfnt
z;qxe#MR6jElTmyT#qub2N3kc070R_PiuEEZqxdq4uf$hHu|{OI(22QLoJF(RUvvH|
zxlOnsip^1MiDILYn}pvA>D+-Ye~EuDWQ47zjkNwCkwt75*%8IgD0Ydn?LV>uOWGwm
zb;ygt6-7LX1XmdO1fsB_@I>J?F@1*k<<S0ZdyIlnMASbF6^bIv6+_n+7&a=mnCU$_
zC!<J3aUhC=QKV(faJ}Nbd96Lua#HpQ8Evl!<1piX@y#=ENaW`zeqq=s4o7iB%1=TD
zak`OsG>T(U{3e~zjz{sUIHNgDcJOyKivFj#_{-sn@XsjzF?ml%aVCnhO8ynaIg!6j
zyBPdDcPRZ8#Rbzv6fZ{cuRJeBaan|=IEB)R7z)Jf{x29qp%@B_7ZFmV8@Hk{8(HBJ
zF_es<c?>OLC>29#xiyHPOblhkuZy8v4CP~}6hq}0DoCvOpJ<GEjgn3Us)$z;R#ho<
zs2;<$G1Q3tUmtEBVb_q=t{FqE7;48*Cx-58QBN7`nt)Es`pQV>hSXzdBrCJu97E$6
znkacg3^$rwG~Fc53BxuvjiH%pa!U-iNxxM{H?9T@OCR#vV`v$}9rAR<Rxz}W*;a0M
z#&DP6tkvCy-xEU{@wUQt!V$a?5VP;|-WSWi7u+F+2Vxi%!{`_ujG<!;&&Kdv44q<l
z$SF}7A6CUWOJSjpDA`5$XbfFN9usymo%whSPe@^%*$U!Q3dQVCi##LjE@aK=@O%s}
z#n4mA3o*PXLjN9$N%C?Guf#B1I%B>XL;n~CsFc@Y=oLfn82TtlYhP27enxRdZJ?5G
z2wxWtGM<BD7$Rk;aG24ZCcLR~-x7|9+1J%aiqp!vjfr7w3_rxMErxM1jAswWuu^d*
z#4t04SusqEVUm=|F-(nNn)nn2aq2c*%G>H^Hi6p=DJ<fh7~YLxQ4F8NFk4yPkKuzD
z=EU%x{O6ipVkp+<LuH&F!-5#*$>Ad@PC<;kFouu+qfmEDpK_g-zF0`lB{6(v_|pGm
zStkC4aJkXH<iURoYn5EZV-LOS#QHP%YE^rUY45ri*2nO*JU0sI_Du{M<lto46vMY>
z6gJ1O#gy`03|qy&H&*^Mu&Uc**bzfk5!eYkW5|oarR1&{el+^-81@*>in+zZM)Abp
zHQcB8{ulx=STO`+_O-;2to$`0cb;vC82@MtF~j2`i5QYGq{P!PWJH{<zEH>>say<u
z)s}rR92VIxJRm$6!yz*t==?wKtt0K7<%q05#qe_szr=7<VNb?zO#1IJoQUDL_^-m>
zgig8aC`NFQgc~FOsR;iHPseaZ<gD;7A$|T9ITyouqg)XAM|e@lKYzSrte0cB5(DBW
z5J$l{D#Y!A3JFO{#!*<jh*65hQOxk-A|-_Uf5TEDrG;gLWrd7WPNck$_gE{6TqCR`
ztSqb|tSYP~WLRde5yy3Le37s@x0-RhAIArA)QY2a9ChS5HEwqot#y^GC#)}QAZ$p7
zI2y&#IF2T9JRZjraoiBcjd9!)N1Hfql3Od`&2co1qgfoc#BsY6M!r>~c^tQi@D3@(
z7RJhfW3pu&cSv!D>`w8!gsp{l3mxaSakPu0QydRTyjR#Ej{8Iy?S7H=@%-Q12aNup
zNXK~o(}@o&`KYmWj^h#WE=FNxx*Gmi9Nom7M~t3~<Ec3M#nC^Gr{j1gj@OK5_c&gN
z<3%N(jpI3y=Z)2ALJuWhj^ibx_Y~oE&R0ZUH9G6i%kbWD^bzkX<R0oo8xY6PIEKYB
zQ2Og}42t6olWT~`;CTM-!2V&b;l?^9jyL0YD~=Iyd*$cTDWl>T8P9)blb*csI$9=X
z92>{DIL0gQ#5g9!F+tqvlgTFL6yxvc(~Le{<n1_Sh|DzltT^5={M|Ta8$L(my*TEI
zbZ%)+l@H^X#}Q0mb^;&8F+Yw&w8pU@j)ifojbmLLAIGssS-yzllQ=#VUncx*pdDnf
z_!8k~!llB`g}mbA%){kMt`IWUO14Y<t2kE0vD)Zs%uI7~t&ijDIIK8=aeNcUhB!QC
zFWVT0Te&s~zZJ5RH^;F>{5#>+IKGeLhd8#yk*B=dg*)TeC9*>$a?kxSj@?rBXnd($
zUHwR0GBG|m>rdiUd~%<NKaPM=*y@nsu{gqUMB<1Vg?Y;tvE#&zk`PG>Q^K?`6Gv8r
zrQ}5R#<9;R`{OuZ_(9DR&iTV}9Es!CIDU)cCu99tgkAbe97n~Esg1{t&ML8p-{UwD
zM`x{aR8Ge6u=uGs{)ppG^}ye8oQvbMIJ2CI<E$y=FA?5wJRipeE|>|_OyHk5F2+$V
zf$|Cbt6WH+K*HYLF2!+KS+1A}tRcIlV8X`Y2^318Z~{eChhoB_LT7F`SR#Rv36xTn
zvcl5xVcp6o$%42sV1)!KCQ!pzuSuY~cqOA$PT0F`l?199rJ4w{GupKY`vD0OCs`|j
z+6lB(5p@!%E6<in)=S_vCF>{9Ac2My6Sy&fn`CX2K$8S+5O18og&z6Ub1Hdu3vQN)
z6}}~brsB;K=vp~{fx1<ZX=U@9i?<NouIf?bB6EjwwMyX51nv^QTgW0>C+z)^8~HuT
z*hVHQ?Gm^*f%`Nx9VN1q`$gIdJ0$Qx0uRc;sQ`O}TPMYNNO;CPtoTR*U8FoJ?9C=5
z@R)eF1fCUnT=<0WNg<;>mB7>D&j`B<*?gLwGd|BJ@PgqlCeR~+mlEiiz{?U}OW04y
zyutzE@xPQlWo(68FPV53o+bwDBWvFT`X$gmfdNXsAsi@tT{uX{V>xCSEIuTGp$QBV
zpC}xjz?&j(B`_+1(c&Y7BTbKuQF43&6A~CJ&TbrM`k$A_Ej@(8QYIxZIe{tiVRA+S
zQxlk`<n#pIHae#(hnv%KW&*P$zGG&oW13?;KS|&{@wvkH6Zk;nL)DE%%rl-JB``mM
z1qm#a@^J!-<a2e}bQ@{+1Gi7*uvoYxfzM2Yr6QjvuuQ}``du!*Lb#GUn#flP>=$9Q
zRU)f}YZ6$Sz`6w1C-8LwyEtkId?V9#;f4e@Ca_8TJ0T-{E3!F(Eh7BL7%!P_P2l@P
z{?lLd`9Y>_3H!wvCU+>gGx2}_V6{7eJqh>|2*{Kt<egSNv+5Fe3q3+_0zMIjn#;%7
z#iI$t5(tWij5RD0Nx=CJ>v#eQDeZ@VpX^AA=MqRIkQUDfvqJW~r)hql@0GGo$UDLZ
z5;&N^A??)vOW?5CyN}4>nUtODrv!dZ;FkoBCXh)Yo5ZmMjwdiPiCIbfn!s-fj7jFl
z|2=^#2|&pc37kyeltTR>{3n4wMNTJhCV{i!e<yG*fxpCAoO8f@o-3PCvikFJnl4KD
zS9r--FDLS!`6-Y@!6fcVqID95k|>-+-6ZNIQ6!0?NnDder6h`}Vx@(}g(ZX~lPD#^
zoye&`870dmQ7(z{NmNLpq7?4M&i9L0E9biwm8D-RtRk!`WQD6GQC<8NeX+BK_;pFt
zOrn-}Z6QOAA7po6ouvIA>qB_`KZyo1-Ihc{ksF2A3mYZTIEg0WHwam!tF^jG%FRhM
zO`;hCCUL72#^?J}&fes-vAOgX!rPN*nZzC9t&+IYF-^(u4afiPB<@M#=_H;>qD>NQ
zlXy6Z&PlYB^Mk^Bh4&?Ke-iDJ=#az%Qk>O~b*T7y{=e9Fl-^1BkkI*b$s^*A3A+d%
z6*6yE5mu&~$m2;oA@XDrPZ=Lto!WL!;@Kp6C($Q~=Va|6d|vp1@I|3B!Cp$Dr;;xx
z@v6ux!sQ$6L3u5SUP@k#-&e_@!hT8gPhvn41Ctmm<#pkpB;F8V5v)JadEaV?M5ms^
zk{GV!n@NmFVx;(6N&Ab1+(s!mTIf7Y$~!&`HCD<v;dmj%2}w*8pOnPpB&H-WHHo*4
zb(+ZZWd4^kSvuP_gL|~<#^gImyqm<9B)&^xb`o=v_$-N~%Jp6npNPy&;{7B(Na91y
z)rCp4n1Xppe3Zm|IWW!w5eC27YVwbhSfnh@ml!`~164FlOH4*K;qxSxC9yt<uao#9
ziRDRrmBcD#T#>|=@}%2Jlh-L?wH($78E}or+NAw6%_KM0iW_g<eUrq7BsMBe{~>ly
zZc5_YBsQDKbStAL+_on1eG>j80!jRk#5OtP3AZP)Gl^YE>`>CF154pP_@jzu*xfSi
zF%GUI+{yf%)FY8TUJ;+L7XSG-iC_|OB|}MslZYk}OCn-o{<lBLxv|hh5=r$&Dw#j?
z(<VM0a!Ksv>X$;L6!s;tKZy%T{FB6iBn~EVoC~;|4<+%7Q;I?z7C$2XQxZSRhdsmP
zktH5gLC1{9hWsXeB8ijA_`4aMQ_{}}>GlVEK>W1aocf<l;;$tBPU4(Q=S?eUWfm4k
zaxsa2lPH-&sT3~BtxyVuQ@EVO6@@|y1@vp>#4MPy>*?ezBE5u=O(-f-Ob*3Ub|2cJ
zmfzATn=@A#=`6i$3guELFWsq6g%m0(FO!Z^IfW`IG)ked+^VL)1-woQ)l#UQ!nG;X
zkiQf8x)f@ey4CzooZ8CE5}CJd3iVXU`YAL>p`rNorv8jWH)4|%Zb;$26z)&q#uRQ!
z;kFc-r*N}8$5q2EDKr&tChXnBZrZJ;Q1TXRS{2+OE0edU&{CZ7*|b(E+?m2%DYQ<Z
zt<mpJ;hq%Qr0h=z(<fckCP%B=mvP#qaIbW7M&mCUOKhLQ!zpx5p@Skkkivs0bWEXB
z3J;lb*%qfKopwE<u6WE?yQspC3cIH4eUrhvrSP~Mo=D*-5k`2DQ=*E!z%tI$64|=$
zDLk9Pb4pV0CGva<FNnM->>+$fNS~f5yqvP1dgb;?3a^U4CgjN}x8BCHPYQhv?<dk<
zI3R_AMyLN9DGW~Gy$t4NFeHVcY<>n0WiTv-;hYZ{yTaVwOyQFhK2^rIQW%l4&pJm6
zNk*kGI)yPxjup-lj!R*@$OPd;;iMEMr!YmFdEZW9s^Qa8n4Ypv-*{L^6So;D%#`)2
z@=glxrZ78&IVRUU)?a+C@O`6ykiv(CJ7=IDDLFrd1tJTD9}5==ol+L3u!K98+WuJz
zOWE)=7N_xf3d=Z+(`b>#7bz@Hp-CDyq_M*EXCQ@@hJTsDSK_NuSS_+9g)J$3m%`c<
z)=62P!bXv=h3w~VQrKWP>r7=+3f~%Kvj{7>HHGg}*potD3O^X@PLXZG?J4XKao$N`
zoLx%(n8I!mCpdLi3O*@rAr(&wUc;S3BfpY7?Xpq`iic7-n8KkH!YM>jh)T=|V?xG>
zizHG=ilkCVn@)E6nLgPRa<c9f?i218(t1FXf#iQF99G_{X?tQEN#RNg5dSHKpHuiH
zg`+7POW{lkXHz(y!mlZuO5u+bep8SW!rv8y5!n2b|KZN`p#EnHr%feUE|tGhIG@4=
ziGQbX&dg88`cDcMQ~1}2^uNTF-$ZZ<A{I!aU>X%wVI~WuQChrk8b#75nntlSil<Q`
zoj>!P(J5*Co$e|nE6e3=mojOTO{1I~$_pKz3Tb=JF#9#>{A(|jWUVZ$V&Ydzqk0<G
zN^GPoHH6otQ8SHNY1B@mK^hIysG}_1`0&4+>&lH~)fZt~zF&pwWpWzJTlOT4Wp!?T
z-6(!@8cjuR60(NPL~cprR#lbNzD;F0ZRg`ae0Jz|`8<|Jw=`Oc-yv+JEbDpySIN85
zXr0F0Y21?r51by7*d~p(BJI*>FTx`3O`|aH|0;Pudw!7JOC8d9AZ=elc~E+%G&+hb
z8f$kZb?0g1htues#v^HTG10n;JSucP`OYUHA2-%HX*|IerSVi6Pp2^^jj?GwWBTg#
zG`gqptdh?Od#CYy8ZV^rqLQx&dk9|=_DtjDG=6Ai_i$g`see`aYr<Yanw*)?Cyl;R
z`Wd}{8UqX;n8qkg??F=DNMmpsLyYw;k)gt2!r^JWDdLpNQbwdPQVRJfk<n&$Q5h#?
zS{mbx&jgW)!bxdNHu{t_ri!24Vz+C$_}j)hLu6(evyAdi8t)oDJB=l3#d~SYP2+vj
z^9$4X!0-=6<_SMaW4_1&p>w{;A^tdxMN&QyQlV){8lR=@hgz?su~hoE!q3xK#`Qmq
z<!P*uvcly0Qe-9P70-9p;VYxBN@KO*jJ!6Db!n_Ot=J&)bsFD@uyoEzcEv^|HwihW
zo732m#&>CKRj9wx_@0v?jYCXI*_KAwl(IdI9ck=LV;3iO8eS85cN%WvvqvOP=+fA+
zXl@=kvktyA{AmQzu+j*bT&zh@oP^E}M$(8%jHQt?o^g?cFquXwjdU6rW6d(M4u_nN
zf$TN<zBKk5en8}4I{$xO4l8*qjpJz?F+M+~@w50ZMmfrTyoz17U!|NB{wDn0_?$3n
z4&6?r@rTj>OyjiSXVN%pI7jVo!_TF0Ui^aaAK^veze2{mByyQ+sre6FWKh5yO%=?b
zka%IE6cH&ZES5oWkrKvQQlylyw6IJDWsQ|zuI6khpRut*1{FofuMw$~L1m*<5veMy
zCaj*pwIVfy*9mJ18Nr!{wKJ%rvZ&O}pk4;`GiYE+Z<#?u$7+;DB8`PjGPptHM&V6D
z_Rq~3G&Q_g2DfBztCF{6&_blSvGRTs{cq3YzjJYi^i~<%nZaG+_ZZLCB6kaU7ru>1
zTVrh}a&HFr8RdSF_8D{#c|iD}u%nRWGS0(>za-LG_=vEJ@KIsc3?38dCVX7T2v212
zr1(=AJe{#045s*uv3AekS@GwL^1R3k8N4Xc!|3dXo*BHX<SQ8r&*04rURClnVK3v^
zTcnS$udrVR{f%`%1_KR$J%d3RoaIxXLXyEELxe+l7GQM#7Qbb3P03({_(-FS%3!qk
z7~xo>j}sX$oRGmpkx9bI4%fe^PZgggWams5d0RL`I5UG;#`=!PyTaKS%n|9_((cvw
z#Xl2%Ap9_cc^P~pzEDWF`63I1oZ%lEvPk3;P5w_aSe(I<O#a<W=A!3PIeac$Cj3H3
z>+%d%h_5utml=E|zAA&&8LScCC|oOCCuH9B8GJ4NjZrpa?1#N++9c&$;b!3$;djEV
zLT5&8%V2v39Z#dvY3z`G{c$upj-46o%HYQgc4v?{isVu3$sjL-RY&dkt_<864E-O5
z{STfDycv9R02>a#mw`Wn8GA8vF9I1@+}HNn{=p1F863;tcn0ANA{oRPR>ehyG0t}V
zE;y?Pvm~YePngOeok1pptRwQ7Pmx^4J`AJtJ|*`X>wydoiXSoxPo)owGyahbe$rt5
zEc``yR7fkU@vF)8m&D(c{9SlLcrt@i#^;X={xtk_24^_)mE;+a)1tpKIG4fs3@&8w
zd=4+<@J|L8Gk7<P*;)LX!KDmZWpQWLZpdZs=~)!Z;z|a{qJYGL4(gGxLgMr+oV71d
z6j73-corqHXplw2EJ|ikDvO#jmCm9}7T07^Ny)Op3R#rPqI~xMzKBvuw{a`V>b!nl
zIg9F9T$@D|i7c^d7S+W0qs9_zWbrv~v>AmC+}2e>tt@Iwtdm7Ok-9=!yH>W_SU(FM
z<d9sSMI)JR5jM`^Mv*4Q|Awsnf4=m*DT|vWHWfA#a_CtNT5rwbHYv@sXpzP34ljk4
zB6k>PyJ$7@t}I$-(KCyev$#8pd$M?3K5epSo5h1!bj+fil>4%{U*uk)^R2e_S#(g6
z0eSI|_<)l9%v~puhqLG`@=!K^4$$WjDUW8+MTClTtEH=wj|sa8`F)!wm{I&G;qzHM
zoy9X*`(trG>at#U>Ca~IoQTs8jQK(qFG?Zrk;O~gYUJ19l`LM(;>|4HlEZ6R49w#7
zEP7?pJBvP9^p!q9$Wr=c(LbAif1lA<gj33(EZ)dsm?>p&7DEjmBEoUuHw`$8hAYWj
ze6enX_;?O|79+D5mBnb2Yplo^q0=YhvibY<M2S<gn3lz)EGB0$#pL47<?LUq+jNOD
zvUuBA`54$t@ma!mgx6NH2Ww6i?{WXi0y)gh;{7ZFSy)+oki~~ttjl737W1<BD2t_>
z;aSW#F&AaAAd7|n8HJB!VtYTy;#2X(Su8RBoEx7R&Q4e+zA}q1v-m=Mc@`@)K&+MX
zA_K`+S**%pwb?h<m<Ve{atrJxF!I+~e3Qk_EOuqFA&ZS!e4oV+S!^=?o3r@V@FHWd
zMf^LXY|YvaVLBbSEsGt}w+pZKD(|8HX#Dd;c4x82C~T1{3wIVCb%@vK&ItOH^mCEX
zE+5Pyl*KPu9L*w}MI?*;SschBnng^WnJnTWNfRd_;zUb{r@5Q+`CF|s*(`F#b8i;=
z48OZN4jO($<Pb57!{Y2@XZK+r{v_pRGt-V`aXgFDS)9q@SDEN@DvRH;_+7~pTu4Xf
zFPJB#Ojk|*$l^~WPgSx%aC$b2zp}VsBK)1jIm0=2e3S8f)<$~%lf^}@|HgVbi%a4h
zEEdg+X2b$H6wKk)9B#{@P!5H2xHg9xIonhuhtfHe$)RWt#iSI^p`=I&Ay;X-aVwR}
z-&4xwP%ejSa;TI;dHK*<A@_fMQql0rvQ`sT$)T!<^Ha;P)lFV5N7v<0Q^_Vd)Do$a
zL){!|i#zL8y&UQ**)WF&B5gD)I0K#Wy*`IV(pjIzBAkRb<ZxpSHyQoroW1%vqu*3w
zGvO^cY^-Xxw0RCKa_Er513BC-)15iol|xGt;f@?y8Sa$ZI)^qnw3T?b@Sa@$KkBwK
zp7-T&uQ(g-RQvuM+Do~*&pw#L!#Q-8*iqO?_)so?9b@$#$>9kOL=Igj=Fn9R)E^UJ
z)5yDtKc2HcamJsjr*e2YhwiLW4$l~WdOE$zuHa<mPWqfoy$9pP9D3w%IfpAbyp%)F
z9Ktz7a(Fq1S8|x2!-5=M&Ed5i#^f+Ihh91K&S99c_sOBJ$Y5c=9Qx-lK%Auv6nS09
zdOAzQpd8*X3ac?he5lZwD)bzl!<#w0mBR?>BZZwb`m~Nxa&!)kGA@VlIlP<0Z0Qq(
zZwn{pFe!)0IZRP<nvfBua%!pTrc3!jcR8ug$YG|GS;BXOqqY9iIwyw@rI5cTGFSM%
z@Ppj{{p!uj;UnY8IkPZ_k8{|P!*@9>%Hfk7R^+fUhfi}@oWnACvU8S*EERtCpE>Y3
z$EAk7eIe6wq4TTyWe#8EuqKDK5?2XV3!U$UI$gRhhi`J&ki+^MzLu4`Gnv_zjX7+R
zNX|=?-->S*UR~9<av#rOx5V#r_#uaF;@gEgR6`yH?^Kd;c8N5eh&?&v<>1dDkb}!u
z-6E`jN5pG%pXo!(EGeNJg2u`^JJUFtLrmgdImB~F<nT)lN2Mfl*q6ip98x)?bI6#y
zIgzYz=n(7`Ijg6>59DxA$)9pKByw2DR{Sq#KgURNge$5R#?yoFv#eZ&s2t1TxRQV7
z@T<s4;cq$o&Q(G)_JkA$aXRx<4u42lto7%#_!;AKHV5ZnVEX@^!?_&J=WxMTFN*vl
zoY)Niid+&p1C6~Xuou<#qPk9?3hqVmy(l4GNLY9;iii{yvXo*Xyzp3ZFG`7DBP=Z}
zCoHoUWksA$C@)??$OsihoYqy^i^@i?B2sm4{!<p$?nRBgXu228_Tsv|s4469!dk+5
z!rFULM}(2<im=b?i!?BLLy`ZFtgnE+s%XF7lpvjw0t!fXcXvoh3nJYh-5>}eC`wC6
zh#&?b9SVXVppqiUJ@=m5T|Wd21it6&xx?#!eQTYy*PcDkJkxV(?zyshlqD%=LwOr2
zkXIsBB#H-hrCpgp)g9GrsI6nGlhh#AB-SDxZh$%@b&2Aqo(=WM)x2wHLn9j+Q<-AJ
zRFWpdro?78G`FFJ4J~bGWy1&?M%vKYhBh|zqCs05+L3g(p*=|_Vh3VJqH5C4HgvJ!
zRVrO==q3*JIa(D)+Mx$yrJOx&cul93`PJKoJ~s5Vp`Q(J+Aze1{x%Gt!C)I+w_%_S
zgKT(%ig=S%Q9hC>euS&Ps8f6>4Tjk;oJ0)+RXq6~^(dS5SH%+<HQI(THjE{oKpaOL
zPgJ8+b;=|v;{PohCTlKrnMOX}h6N<ki8E}NscmMF%qGqu&b474iSjQ#7uxU+72$8&
zut@X8w$%N|5-Llz{w|3;+*oeI3K>fdRCM5d8$Ph%x*a#{R-3G(%`5{Sl6+*tDjQbY
zu*Qa%4RIUR+OW=s8#dguVZ99-Z1}~7D>i&=!$up9+i=2$O*U+{S^FXm(a9F#cH$?*
zt;B7%)b-U420yi7rwyOku*-)1RCe2}tpa;&_=3UDiK2XI!&f%!wPBx)`+TU+lPwVP
z_LJ9js_&L;zyU^mW5YokWGmWl+!rJ$H9c&z?2pjkDDfCkb}~rGPug&b2I5fczh#uz
ze@AlKhBH!l8_wEr&W0atxG2NJhVzWQKva3vTx?ZA&N!EBxGYb8Z1|aDTa_VL2vTe@
zkVA?j{zbpa<g)f&lYSwWC^;$oYQrrC@3L8}%F1pQ8*Wp)L(D1OWF6z#+(yN)!EUqe
zXdE`UZSYVuZE%uU`I5*&?In@CLN@qp@G}@728ns;R-A_!j1Z&5Z`te#8<IBUGLYLq
znhp1CfPr)d{;=Ub&Hl0B0bBJUQEh|#lTm*W|CXxhc94=hvf*DF9^3GQu}_KWoT3Vo
z-arNe&l|{UAfsWmp&VHZWYYXO1DVNH3rly1K{mtc`kdM(yMY|!&o)&`FXS<h*T7%{
zZyLyFAisf*v?*ZV1p}1~R5no1Kp_L=s24U+#K241XHf$s$cq_xk=YeDtX`IWl&s~8
z-zBxB<n^+FQU*#JC}ZFi17#T{x+=4vB#~l^Ql3#2h!wSmH;ST)fvN^tQmJO3x`Fxz
z8W^Zypr(Pk)N2{2%`(&>$_F{cp=@^)&s7Vf9&MyYL~LlFk%8t^8XIUr(#$|pBQ;@f
z%dS6u@NjrxD|rhVNJ8PQ$Xgp|W1y{pb_Ux2C$=Um8>vwTw#j1o;16Rv8|Y%-RRdiO
z^fA!aKsN*34fJBHB<W$Gr-9d4atTUaa;TQ+{U87R4D>fJNT(WL;B^B74agm+%J*5?
zH)x|;cnIB&q%u_N!wd}9en#kgM;RDxU<`FNddC_VXJEX62?nMZm}+36fk_75GBDXl
zEjTLcXJ0^-l20=*-M|b3GwE5)WkE$A%(HHeW;2&LG9=jha}CThFyFue0}Bnbwxf+5
zZyQ)79t_+yu-L#m20k~ihY6P$SVgkbz`F*P8F<gYM^u&*rBojpSYhCO20t*Y516c!
zUS4RCOmnOj8(j!8HiXEeTWw&CfwczK8Q5ar6Q){kV59c7f#hSNwGcghy2-$12GyM1
zYG9jzT~wOM-y#^;Vc=5+vrM)A#d4=qP@eo778fFinC;f~WeVX7178|AXW$0|Um5t?
zz+nSN4D6+il=F~*eFpY3c)-9nByysc1yGKI#{Yg`tDYAfHE_(pahcsyt!kbyaMHkc
z+S@7GfBPRNa%MSg;0%@T4M_3M8rC=Qgh=tk!+8T24BVu_j|MIpxT?KfGVn9`WdlDM
z)_3oB$=4?uTB&|9aD`FohZu5&aLquj1-MQWgB!BMEwCC#_^$?T$<Q)z+rS;>E?LVR
zxB5t+7}yLL1}fT7$qu^#hk-11Ja30-z-b_2AgYRFz^lvVCh^E%U|ad53k(Dd1Pz1?
zgbnM~K*ppDMY$qUHtHlBGY~iM*uWE+Wd@Q4{xtBHtp5h?(dPqM|JhLYbzaY!>!A!?
z)<{On-@0oa8Tf}>qGZ_oYovY=DJ}Dqjga1s40eE*E9r>pS1lRsR_8uPB@?+SXJ#s@
zv{~)QW=CN=icrjMM{Yav*pY+5oOa~0|DW+MjhWYu{B{(eK|Xt`uV1jEpdE!Ms(u&C
zTl29*c5xg)Q9Fv+QNoUrG?4mA?2F{Z?Wtyb$&Qz)l(VB0NohOE*i+A=Ua?zEU6%T@
zW)~;r?WjOe&6n?a^Htf7dUn*eqlz6>8C%VcS|ruk4wA5j9X0>cCbbzW%~i*ay5y>T
z8rad$jwVzjRU<nZli%msE)^89sU6KIHn*dtwrrtWrWF;{CT;C#XU76N7E)|)M?X9I
z+tI;}j&^jS*hLzIq%%=QzGTtWj-JvKRJswn+tK4c<(HE8vZJp`DEmL{=tHh*A^k37
zfE};fG1ZP~b_`_f5IcsF3?jZ^$6!0&B!4#VhS@RPjtO>5q&~uqQFe?bA8EI)tYlb@
zv12R?Gv01(+Lr>$G0y(Kc_9Uu#3Z6mq2*h4Os1kr=r4qmvoT%U%(Y{N9Wxo6MU?)X
zZO0rvTGVZbc$>%A`F3kHkoDnhI~LjTr5#_{vDl7x>{x5ZIy;uwvDA*0G=A5PWp;c(
zE*{>qV}<6+No2u)pF}PDQZ_OBkjh7PtRh)$#~PAnlUHok+p)op&!~TF$3{CoCEsMn
zW;?dpv5mnk(n=)%T{k58b~|=Z|F2JJ;hq0!)m?V%w&Qb}?XlyF|IhwwJNDXfn)*IF
z_S<pNj#CUCu;Z{DN9_29!Gm@jvg6q#l>!`<ku3Xu87skKBvP0YBx*_jR*T=+F>Z?0
zGHPs}vEzF?&f0O#j!Sl2w&Mpo&f9TOdsCIYz~2ASo_e$*&Q<cC?6{&Wf41Wnnu&8s
zb(Q)xqKtDjU~V#4-hp39WO2A<$8Y4f?YLvd?{?gkTpY;YfXxoW4xb%<E+ckX`R#C$
zJBVsYamfHXXgxQUpxX`)qr61<vuXK^e1JS@N17c$J3@AZsYvcoJ0j#cPgyIK_atHr
z#_dRGo73{;H#`2Y<FOr2?6_~o13Ug<>_ctymmPm<UXdHm{+7}E^r?Iy=MnXP?PxUx
z;!1Ln<0-{-4l7d-#ZnFlW@NCi14SIj<iK+dWOg8n1Nj`t@4)j8WOX2y1GycR|7;Fq
zcOVD36h0@3I1w(_U}7LVj{_^uATQm9x2CFDz=0PWsWrSH4aBmL_EVg#QPhEA4!rC@
zDW-jqSb|vGVO?@d5^3|24!q>BMwC)YJ5WY!9GH2~`ss@5BbkySmSx&<L<vfiq^jgV
zWe47LV2A@%9M*}WngiA8uqsh48a1?iO^TARmIJjNsN+Cg2kJS{lX`sz8i=K~Y3M+6
z2U;-L$brTVG;yFQgUyI?<*cs2#bHYaS~<{(dTR&TkaQrnb)cOC?R64KC5Qa2z?dfJ
zs73M6nY;^8)vhafH)3~U52E_M<!cV~Vz4)HfCGI<#8qFCe#HJVU${7n{<;GLDGqYr
z4H8-RL?7(1K2#_@B7CR=?>ex|fng2|r_BflCOR<5fsqW3Vi$<<Xp%9+vBYu2@eWKN
zk;WIZx0q@=ak2wb9GFTzjaZ0}p(Nj71u%n(@R=mD9GLCE90%qyxR5xHINyN<4(rFi
z`^R8-6BNsdw;fpIz+wm9abPKJ)-1phsX`NM%7KCWKQHxm?>)vYcVGpHH1+!=8y(oh
zVt*h*n&d+VJ|bD=z*>^kM5)vo5~<)ilJ&$5#E*$$Be9$5`BMjWI<STO6XI6lHsW^T
z4x-dut#zL{@HLfP4(n@&yB+wP!95OqMe>EV|B^&~G*X^x?bZ4|lKt{@i!FT6fkO^l
zbmEfJ>hZ%4+;-rO14p#|QIca0949$JJn6tGl5ZWjLh_vhryV#$E`BaJ@ICoi;yL0E
z4xE?q^Pj8nAE{p?UUJ~F13yXk$%vK9{{L7?FdO$+UUgVc8pZ!LCb>?$;lNE9%nsaQ
z3;#w@EfH#(|L(wDDH|(jW9)8ngWT?b!vWI)rvpz-K%yLQJFwcs8WSD|yiy($eNFfr
z@H>#xL@v`RL%@MQ9Jud5(1DNxVFw~~m~<dY5+{mfOx6cZsDxJ3&2<`s_lTlAaNwZ>
zj~#g8z@OUk9|!&-|C=Zai#U|y5rh8{bIit52Vf!#3nsDYOgu-P-b4lx*;p=mMiZH|
zjoRy&nL+vO((@*=l4moK-9!#@^^#N`WT}hK+$QpvXlA0hiM%HAnJ8o86<X#uQP4yo
z69pK2fhal3bG*VPikK*2qNItUCW@JO(L`|?sCH18n_YbQExcsnWfP@Lls2t}RCS_|
zlDATI7yGg%%9*HXqLzvBCMuYyVxlU2RwPy;mMw23scc%$EoJHnuV$jUi5jN0*cQH(
z`t`bM)!HWNm}p?4A=B11QO`tu6H<L;ASh=*nK+G1G&a%1L{l?$^&+07t;9fZZ$oQx
zwJ_1rM0XQCOtdo5+Qh4L+r~s&6CF%+WU!rSy<=)Gb>UBprBrfAE}cwtHqnLU6z6it
zV~5oG&xGBG>RDe;6R(-*&E}Hi%D$IrolQzGt%&_h^fxix#0(PyOuTMll!?(M2AUXT
zVu*>MbohpeH%SId^_lj{6sz?f%)>D1;%cOc;cOOpZahND$uHTee8)(p(%L2_n;2(W
z6_El=Ffrb=uBM)qZKBjm_J7i$H18A>Q_0n4n*g7yOrs)Io@rv1iDf3<Gcnu5921Ke
zHP=L4c@kn`fr)u^sM<$zk&akMn~*&JCy{40i%q;kzQn{*5@{&0e3!fcdsdX?CRS2e
zL44oD2WIN`s`7B};Uau!LLTaV#Mo6t>2XQ8*2Fp!-<vpVV!eqCCU%<mOe)TP*+NS(
z+eosBxS35P-aaw0)x<Uv+hyv_wwhF$Zik6aWuoz>Lz-IBW+Lt~vCqVQ6T4;bnAk&C
zUzqrk1(VyZuVk9f!Ph!RQRHdWUKT_0I$+`(MoB{*BvH+Ni2SgLBPNcTIA-FMI5ctG
z#0fnPtv9fXagvrYDx{E7s_#skHgU$Z?g8byC1NA3Du+a!Gx39oKTO;=ao)rQ6St%o
zto4s3elqd1iHjyKv22&AOF}7_c>aaCTr+W<`V|vbsi;P{K`u`ke<is|50Yag*#gN@
z-8K<65ixN`3QwE6CTu1Q4qatqH{md0GFDp2DMZ$J6MiagS^rIV>G?s9)EJNklot~L
z6G7U9h-zS~ic1-yCSojelCjdfa>Pv}bWjGHBuO)I&$N~csjSrc0hg)2m{7iD@zBJd
zw3k*DpK|<d;vW-_O#EwFdx{=2R=rJoLN0#fL47(W(mOHCiQ!IUa3Z4<EuCoPL?$Pm
zbE2FR<(<gvL>4CsI#I}p=Xo~F;Y3a+vO2AKnvF_!qO`WGoVlFH&0u~f@{r^us<#GG
zwtQm11-t-tQC@JSt}zNbQA7^bqNo$aoOp#cFFH}&iI<#s*@+TPlyqACE(yh_9P(>=
zX_Hd4EbT-Y9jk0)VNVgQS8$@D6E&Qu=|m-`HG`@+QPpYPFI1)zHIJ&Xf|9m6MS0yI
zjaJKv+D>boZ|FoF>h+!0lis>g+HBTyjCvGh`b+T|I8$T0krR!nH=$W`Cz?9Z%n3P#
ziJ2VMS-@#^t{l=$t(|D&L~kehIMLRLc20D6T1#ttIuZM>PIPdhqZ6H+)>1Dct&3E|
z`M)h>uWCyvzpSg>bV(#_4@UKL;x%br=HAPh+IS|<0Q)-e1`YZ-(Vt|169Y+JC#v^5
zgUIE4Bn}6YzsY79LN4M^r}Z;uAtRg^>BPHEEOTO%6QiA&;>1)Z#%Rm2|0&xzC&oK5
z!HJ1Zt1%}@t!XChBjbEBJ4^anx=fr;<FI+#iA7FKcVdPUGo6^_#C#_fI5AuMpX<aN
zHoGd%JQ?%ytC>YsYfJGKI<5a4k&!HGsRS1@)jLGFoRGP{gnX&?Cc9<cb7Hv@pRw30
zqzq2%WUO4ke85gz<HSlQK6K(E4k2;7iUz9bR+Gygx~(NyM_lj31~GPGqg339txjxm
zVl$(*5T!NLw-*#{b7H#_JDm8GvC_+8pw>glP7dL+k_*|zB1usA=T7W#;tM7@Li~~_
zQD4dU*L<%N`!wJ0!~ybev~tjiL*$3GqOK2*I&sX2<4&BQep<(#BsoR=)`{=5UY38Q
zEm_O)y%T4tpCkU@#CfOnFBKPvKRT`ds*vCa;$<g(a^hF*=VvE=apDSt>a>2<Y5iZr
zO)A%%xUMa4kjQ2*iOnztx1<N1xJ}XRgooq~C&lkh+-1;4G@P)LIGk{jNSRHUL41bb
zqN2Fh37-@FT<GtDpL%u|a<~w1BIrcOiLeuYJMoVb5t%Pe{OQDBPQ;vu)7wKQ5;7o}
z@V*miB=?;7L&ozgs|V$%#Y|=DJz%UT^6pZ8&m}~a!I8&W6COG7udL)QJm<n=TBdU$
zy~{Ft;>1%YKrY_oP#5iLI%lAs(PfDPm}zELs;06&WO3nn7qYsLjb`#eBr)41Yq-1%
zb|IGw&0T2WLT(rGxKNEYl4D+y;x6RVN`8_8F1(<Xf-V$tp)i9*BzLVBC6UwjizKp2
z%ju(p3ng86iAs6m%fwQ|(!?^vSBPa@C`TgKsC(pLOJP)Cup&`PSc#-Eu?n#&QJS>6
z3pL1V66?EAi$qe@cA*Y=U1B|=x`C3|1`IZIp%F=AqUcRrXsUTLSL#~5C6!*pRxY%5
zp$&NtVp|v5xzOH)4h+8PLPwI$#7@L`MyqqXkPA_N8QIl^ZZ33pVO*8epI53^s6A=+
z8c|kPvF}aZ$A!MygPe&5xbQlIV_g_XGK@Hg_y$qZ4tC*9&4;)!lw93_OYCq4M-WF6
zN4YSXL}JItu;f0aaW3n8G@dwtD8Y#&lZbC|9Ev#Ag=sFV@>|88?!pYZs_4f|7iPJT
z(T_}i%+~(@_F;|-b6uF{!h9E|dN9p{1uiUf;S)Euy79IPi(Dw`Mlm-QyYP++S6#T~
z!V(vjy0F`Y&s})eg=H?Rb74K*zDNAPh2=Vz6)wE*!o74>kz{RI>B5IDd?bZ*VYRkV
z^Go*Qt#M&3#n<>AP?BtL;bSVF5;qb*abXk5W*4@Q$j04a>8$43>cTcE+g;c}B2L7c
z!kt?AjAR#4UH<KH;fM=IUHHO<FJ1VGQTtsu;KJABdtKP)vM$cWl}aMy8%7;+;ULMY
z>8w~e4l}rCB96Im+=cI4IPJm-il>MtiK>6UC0DP)&$#ft3zuBDOz|x7ybI@C_<<{r
zI3KQmP;)_k1xAC5M2S-C)lUrmtY?tuzfig2O6`2R?!pZhp1APTg_|z?>O#zgxC^&v
z_PYyrUHFasHc_rT??{`l?lu<;7rZX`T(G;~aKTL*(*-Aqi>TUMdR7);DS$^sN#P4y
zyR7{#1YHQp`mgm1-7T{)gAqOQqdHcyPPmYC;ZGO-qL}8weUf|H<_}%M2UH#sr9sq7
z@V^=S*M)yb9uZ~TmSH3LK4x&-1;A|uv$*lR8|lc?yODt;qZ`kWWFm^0R4p_4&;?ei
ztZrm;BcB`jDP||;CgyM>CrK`%8Yg+kC1G9?`3;xw0&Wyy@C9N)Z6kRVCNH8DX_FV-
zDDK8IH>SH$!i|z{ba11i8!x%>vKw{XsOLs0H%hxv(Tz$>ScX{6jaNv@5>;oFCzmo*
zaHslOcx5-Lxl!GXDvYg4RKu)>8#T41BO7YDQQM6=vRv?-D{0mGDc`sjUY`jYyU{@B
z(vYN)cG$#?rsU1sXz4~P^5$-|a9byWhkQGx%GuhDHg2?~K|7*qPsyddJGI}qlN+7g
zc*BjsH0a_+Pi0B$>P9y=x|8=Hs<AEC&uU7(=0-0!dNZnz8v{wie_uEHxzXQ^0dDJ0
zQeM|-g{yHcHiIb27SlJ~7$U~9Mc<8~ZVYo{tQ+GPJDfPujS(cOp+=F9CXOMBH`SQq
z8JtL*;I^(h)VQ7Gwtft#enmLhjVU_SRQ8LMYK9v#-B|0!IyYu9_H8#7xiOo3jvI5`
zm`A>VIG-r_swQ2i`*$(*cimV<@{SuzwB=G6W9;$wsJ!pS2PDghE2QF_Vk;T^$c<HQ
zd`K?2s771O;2NUrF;-o$p1}=7rHK8<3~nTDa$~a_Tin)O7m1QX%(l6)-Hn@W{7Rc0
z#3OEeO0v_9&)nEWzQ>I(NOsGZAyL<gUy_Try;67bueBn5vCobDZXBTU4N*1JLGnXx
z9F`H1K2;uB|Bt$Hj8VtkIP1naH%_>5lFBJJ&X9adlpMcv<21QEbu6Z?|J~LT0IAmx
zZk%V-HR1*0Pj39^#zi+SNv)qgy-ZR3NC8@<PnF?kH-6Fj6_Tq&>9XruzrhhD32(Xa
zn;Y#sXz#&oH}1Gm#Dk(9{O-nGHy*q3#0{Gph8rO_!fx2<!71p5LwhqxWWu`L@R0l5
z@RB^6BWin_pJIR*B+B_B;zrbsKi&AtjhGv8H}1Ld2V)a%B;81JTdy$GMU)y^GI{UQ
zK&tS7M0LtT&HpBOMEr-Srq#dXl1l8Kx&aSzdyvP2bRMMl;5iR6dyv6nwPYq@MxwG;
zD~9ka6tfba_vm{cc?9G^b`Nq;&q>Thl!WSnC$9(jJSa#pKk)@(0it-8*KmT;`-P|!
zCaO*N#XNY?gE}76^`N*1B|IqSL3tXKB$gq*M0}Z8%7fA*vN=TDzCvD>DCLm`so+6H
z52|@k-GfThs}RMwvaVNEt*8d9;Xy5})FhF;C1PLOlbV(FJgDzM3q~~{Huj*22Ms;e
zHEkm*t$BqYshWDwoQm*fp8uVL)FX(NjB4dUYmzp^wnR0qI(X30gEu`GLa~zv-8|?{
z-r0jLB;xs1lCDG<MLo1W(1V^*O$K{;(8q(m<h?zqr*Qo|=<mS*4_>EUj=dwO)}Mm<
ztT)JmH)t@JDBUNS4kZ^d+Jj-_!-*q^BRv@9NeyW=bjNrw)`M|6)mt8n_h5nt6RAuh
zD$n9mX2E1_IfXqXi^g;hW_WPkiwj=N^k9~>xfhMRnC-zF5AJ$k^I)zA^E~**gM%K-
zmy3T7KK5Xv2MaxT+k<5uyhpc-Ja||8Urh3j2TQcF)C09s*J|5zSWf)|4_1<_kk-?d
zQqB*_S9!3S<RhYV-x`v&9;}lYH^mwo>#1xYif6USR{U@BV6z9iJlM^sEgo$3V4DY@
zFsL3;Zuek^2Ro^#!SgA(x_<bKTzpEtpL?*!gMC{0LPj0=mqhjZI7#)j2Ya>6C9cf-
zJvg8hnbC(l)~&%M4=#If*n=Y;9QELs2j6>e)`R1;Jn6wH4^HS*sxaSr@EsL3hEMC*
zGbGZ*=VV}zU+|>vh|e>qlK-gfFX~bHlLtS0aMOcdJ@|#O*NInTO-qlf9$aHk$}C@|
zl18|}pz<ccTOQn@@*D9s@!6gG?+nVUF+8w)kkgA?UN}53J$U57zaBWnK$^mX`yRMG
z@OY4967lTyAmBmJ1D^+eU6=butun|F@*wO%gvL^~s7@6lxyDC!aSsv<{=+0`<oC3t
zq<TR9msTE<{OLh9eTDG12mer1S6q)hcp~e(7n!|QF`mlGPa+&7G62$hk->|MTF>N#
zn)uR~Y650qR5mZ3*EU(bsi^E!WOdEqP2Gm%_9BlLrM)QQMP4uRc~RJlB3|UD<qO(F
z0TSiEpcjQ0l)DvG?4n*2_o9Rs#kBp4-qadZlFG}(mx$6Vs)b8=trbSzNWMb7f)^D@
z$`Z>F%X?E}tdbX%y{PF$EibAtsv5B>Q5CGZ7d04EXJNU2sm)+rFY0+whg`kalLFLd
zuz_wFQKT-7y=daa=U(jbqNx|nym-rt$zC+~qJ<Z|yy)#kOD|e^(b0=eUbLnYN!yO3
z4Y4gzwM=_2Ixr}gH?oFw_M(dyJ*d1&>_!w1T_s<(On0rQDbSO_*Syx>9Ee#TFZy~h
z)Qe$W^z)*>7jJ6&0VD&xcwH;<w0V%`Z+J0Sb7}S=<Z5jfx5K>{<HcAnMtCujQKP&V
zt?i#}j2}m3f)^7>#!CwnwJxV8X-nx`RqQEVO!Z>57i+wj=EZa`mU{877c*q>_hOzG
z^O<Cp7jsBv6Q5l<&*k`$Ze2kAZ7&viv5<W1LaQAXlM8uAMl4@0FVTt=V3`;1G5Dbu
z%Sqn%;sY;Mc&%QLTFb-9mD*l{YD|7aWtG-dVb*%F*^4b+tn*^M7aMf!$0Sn1jU=12
zF1dd~zQc=8z1Zr-HW{}(7jLKDp|n;0o!Wl47oT~ti$QhUq6#CPzwqKq>ZiT<%8ReP
zIL_c+;y1*7L~*#E<bVv_iPn@k=*1x~4pTfzJfbZnmt*8=g+D=ll6cCCZ%Mu*ilyq!
zGYo!Dl)TQ8oFo3A*PkD~xadVyAFBDR3SRQ!p%;I8aoLNXy!hFRU%c>o;q&5(7gxRb
z-HW?kT+=>pl3e%V21&7<mXlw-xaGxfUflNL4s|t0Bx=$2)XHG<!eErk3%ern%wNs|
z<nl9EF?MQQ%}O_e9%)tH%ZP!WO3aIZ7eVrn7ZH*$vBSbtQ$%HvWN*g3NO+O-B8>+3
ziTAwtgG7AFjrI<`bK?O;^#jbmym-!s%s%{0@gFZ9dGRlKIyT*7FP<>?ln7sH^%kGf
zv*~@vK(mZKWFirLZIRS-tt>t~??VY6O8Su1hipFN^C7<v*|lYEA99fA^dXloRVgW|
zIFTcd4|y5;Y@ICNLlG)3_)w6fkPn4Pq%bPg!mm)&hhh|8^r1M3M9DhSxsY`w{}Pq5
zK9uv}W%5!!lqM<T!z(0eq^UD|c`D+ek`EPpsHn@Sx=-}VK2)KNdPr5>hZ;WY^I^Xa
zHGQZhPm+C@>qBiH>iE##hXFp+^`V{*9ewEJLwz3__|V*k7Ctoep%Gm*B{n8DA<APk
znYq^|TGedkORW+u8P&>%)+927+W64chxR^n@TJarBDRwf${UcUPvetPtt4V+AG%0g
zeCWlrulmr<hweUfWl*(15AvQw$yYi;);C%7dQ<63?4x7V6z<2M@Yj79=)+q+O!i@r
z4{!J|(uYw#4EEtoABNFv2yrM;iX>SmC&PUhp+}lhM$=}j5953oL$2C?yblw6nCQbK
ziqgNzkGPV`%IiNh&Zqb=lLk|LnC8QD@)^Wu_Ugnv%ZJ(2mH&A@%=clf59@qb;KM>`
zRUbZ}!P`E(<HHgk7BMI}E|!7E(Yw@#cYRn+eHrmRZ6gEq*~nQz@k%DFBw3|xKJ?)u
z@>&NVPySbvuOX^JuJ>Vs4_kcr#D|Y{s?8)Deb_|uY(_{|ZuMcC51;w4%ZKgS{!<@z
zkjvv`^?-dRgJQp%WRDMD`0zP-&-qsGd`bQlQPtvWa*5h2mh8a;K78YY#|N(u2Yoo?
z!$lu1`Eb~WBR+iR!)YImGSx}qF&~bToFJ-<<hk@I2F3HYGI)3we8z|GDPHj5td9M`
zhjVOp)$(G0Ud;4$-H&<}T=wB7A8z|_$A_PN_=U-T_2G&SSADp_;5FiP?O9C$nRGX`
zvQ*yxlK)1OB}KB6<98pNRPOp<^T8mu6D3ysI5anPd8~v!xT!xokN6n8=Y!ve0C~`d
z7)i*7un!UPC{aAf)?!tLxDN@6Nw!s*9*33<o8k{2?$h9b4-ZNH^x-e<N7YnZ{X^vu
z@n7O&SrX;tFHy)-AK<qXInw!&Uh@nj^1<Zi{K)J_Nd_hNEPUOToA^92D>0iN*-6AE
zhaWjL&qX3XddfqR*N=RD<R>peEI^c0FZfZAyb!T4QC*i7)i%XQUi725R!aDBBe&IS
zFX@uM>_;i`(po7aguJX)%8``!qXLOEmsG!!AC>*6;zw0K`p|zh;<I^I-H#enYWh*j
zkJ^6J@uQ_5tti&@qcMpTrk)@5HE-ZYL-IyiQ4_6+A5Ez=(|U7~7DTlywDzN$j&0*d
zTk>{VX;0F@kB)wHBJb?St2(v|iHvsH*3#8)q1w3Koq7*HdXl_G>_zNNOjiYGIT89Y
z*pJxXj{$zX?#Dm|hx#$hk3oLO7lEX{Z}>5oy6`vskjG*}{AiZRiW)99e$4e_o*yG=
zGr^CEevI;Cv>#*q7)!CJeE)}iF`hwLLM5$w4>HM*w<yl=V={?MfoXnB@nb53yT&2U
zGRt0$>3(Z9mLJ{B^kWudXA|f6|My=`7YkrM#U*|$C0XFdLXx-rSVXdzn18qB_8l3q
z@`Q5+>c~F=P+#H4GLrZFSWY6>NMb4D{Cz(@@M9&#5B>PapZZ#+#LB;+sa<WW{aB+?
z`B5%_@&W4)v)1{sp5g}SEI&5-vB{5O0lXN%W<R$0amJ7DY4C|3U-<E*A6psR=ErtF
zcKGor8*mSCryrmBu}cr{-7+xJVNYReoPX|5U6{$RmtiK#SM;-w#$WrfSB5m7<4Kvt
zX1^Z?{P>2kM~I>y^y3iuVWK#fKh8et$1y*S`*FgLZ~gerkCTi&<;TlaF_nvqnoW}F
zhIKg2Qb|Gyp7rCLAK3!P9>5QNocAN)N79cA(s6$L=ErRo@*?r7AD2j^B$xg8iTr2c
zFIvCiPo2N6Y2`Y}4L@#b<ySv$kv}`v++on;$L}O}i8enB61yKx5(m*FN*SyLpWOW)
z#Y^t<!|z9cJVFd=n-ED@dRbo~N2$b!ajmB@_%~7Vx<~SdANRHLfaD?ZPe1<By14zv
zk4Jv|>&Ih1G6s-|A69+hM>>+Hv;?_SK_0n?|MUT5prT6k9C;REW@4(o@<;FiWTher
z#W)9fkpPMYkTZZ>0pt!KPXGmVs=Ooxi1`B6fXq*>&Q>o_QM^z9g>@=1lS6bha*78~
zB4EwO(nQ%3Rx*H>0(d!qQUP?jmf9iKMfSkR;=`?CWdhdDu~z~p8$f`%V1)oGGK(z%
zR0^PSz?uk~1E>-})c{5ZFeZR%G-wb&!vLz2*C5s;)(W6@0CmVEZByC*8Ax3U)(fCM
zb(vrCTf9aAG!CF2l_tav0dx$YDS5L1nv=8$pbd$%a7&U_0kqbNENgAa+Y#Fn@9-|E
zleXy=KxgtU0qc|0uWG%k)QAriy9dyNV$T42>Dbpu<av(d+nc-(v2VcIOejbH00so`
zdH@3h7^YJV3gAuhH;99^uFh^l0vM`dd8Id;d<1bMaTHPQFd0k!4pGW5E`ad?ObB2i
zm6^mz#J9A~<N&6SPbE$xPS>$BNYq%GMLwH2CxE#!7|7=bte^S6O}>D*kSI@_7LhC_
zij7=HEeT*LgYO2giewp4O8Xwk@&Hz7<$aP50$54%VE`X-Y|9`~MUqsj16ae@wZwJA
z^+bu?5WvTpZzS0i_}`)}26B87z*a_y+id}C=K$V8{FEsAPLj`vyNJ7qpA+}!Qhgb~
zR{?yjb37lwUh;j!{aQZ|z&GRvwQ?wc!{kS_ax{Qr<i`UzL2@#HGbE>o-x8(#-vw}*
zT#e!H$<ON8b8;3Smtm~xdm(@yb?n6eE@^%_fS<^J*2*t(J|(}Zm1`u|1GqtQlc>H;
z{aXOHW%UT6R4}!|++pnR0o)D17Jw1J-vRtX(H?-0M2h4fF^Nt=t-DD)0eDH&D(aV&
zCx9T8KeS~ifUxEfk|;4oj1v<9BuUbUlJC7h>O1ZCsXWm7!vOx&{I5XjiS8pR8G=?D
z{!9K?+dK*2DLELMjwoj7bvtCFk|~JiNHPcULJ$Rm$P%=cO0j%Ch^&mt7DRTE96{tE
zk=UFhxq`?|qS_%Zc|L8EKZpY4YHgQPsr5gI!a)=XqNuhkPEw5cVlZ|8Sc1Wl#FvOp
zu5zWx>jqITh%)4_5XFDlAj*-K*GdJFia}J;N@bENK~&XBHInMY8pN7G)FP=(tV0z4
zYPi;Ca8wWtNE#9w1<^Q&CP6d}qPMnh7DUG&It9_3N(-&G45AfzYhoL%w+*5ldHWzb
zkjN6MKEfuscc#)kh%VaxRg$j6ZbY%~LDG|GwK++zVCpWrPY`{n^dk-pqJIzrf_Poq
zzd<sPI4GFPeK3P>YMUV>a=AN9E5k`f5Jv`6_qn5k7!$-;ia!PMGs(Ch#s@JWh>1Z=
z3SuY4w}O})#Off{1TlrmiXh$(Vk-GG;`AV91Tiy+SwSog;+-I72Qepzg^ZmWv>v$4
zC!a@DH(AmG3-p*5{&o<H7%N=PWlPAHX=P~;?~<#hOz&xZc@WR@D((X+9}-vUSQ*tH
z1+j`jHNs`UuMJ{d5SuBk4`M?Q8@2t%!PIJh>W9?ow@E8oX!D7-+)A=7i0vdhh@TQw
zMxO<-D~R1ed>+I_>U)Ctg5-P<Uk3425GR5-8N}BVWojQL*&D>ZAod4wfI(@EgF$?w
zxtt{rX)YNZAwNnyMm$bbEqsdnj0~_Kz9s*TC_Yb10r)`UtX6&?IY*S_YD3+HAbzAG
zc|BVzE(LK}#(@6k>tD2of+1W9;%X4rg18=p5rjR68$sL*;<q4f2k~pr`fTQ{Ao|He
z>1D_&mmIQ>i2Qy->_3e=LHr)Hejsp{Xd_CnBrP35gvA3zljtP6h;E`M2rtXyBl?K}
zVvraj%G-ZwglG^krpg{dJcvXP=|fiTawMt$O-v)+3*rx^y-$2Vd`SG0_!m)m77zb0
z)uSN(rT&=sg!q(*kX43s#Am58umBl}nL>Duv6+ckh|d$V60;GXrOm-qIf=Q5xkJc9
zo4mw)#Qekp#21LlLm_f0Qel!J#G)Y-)B1}f#fc?|C5bN)UnZ6cp)`s3DMKQ|rd$Z+
zLztI_`Dv&SLPhGsW2h8D<q*z>a4v)@I#taOs)nq=R!u9_Noo*f9M%e<b_jJss2j3Q
zh#wH^h0r8~rXkc1p#d!$hR~QqTs6{ZpN-*WR7Qu;JcJe@v}91q+?k|R2(3xlXuWL+
z?a12`I}khS*iIyBA?iZ@Y6x9J=tkb1*q_*g*fWIJNF>KzA@nBiL+nfJr(@sFi~%9M
z&fvfhhH8CK2ycXNQa1k+-y{wp%Fo|Kmt$B6!)ZT)IFdMuC~hU|F(Hg)a2)Y1;`k6I
zkW3_s*(4IF-Q*CagfKOPX(243IGs43ID;tmGeej~K3gkuLYS-hJQCGb3qn|^^|whD
z5f>BR38mI{@wqgFceUlR5Z)tSPF$h&_es>tqm|?zhVYS&T@}J=@--o>C0Q53wh*?5
zuwL72Ao-ZMk+_MtIfN}FpAe-yTSL}g<j7UWju1W#;h5HUlI#uPGp+0jVK@2bTG<oA
z7a@Gf;8(=2L#cl<QkOCNwB`N~4ru;O2nWdzg>abU2=VCuO?zD1pCCC&JQc#XB;U!O
zzmS{>;d>Hw7obq;^#jFSVVn=)LI^*Ga8X8D*cvUDLbxn*lU#y7g-}HEpF{XX7JsI_
z8bXNVS_s!exIr%V4w9S1UqiS>@*D9s@lFW8hj2G!ebGn`o7AgNiW?N|MEUxV8G@5Z
zTp@Tu@P^=Kuri-W`&5*C`GLeAg8C;QDML`3g|$s2glGsc2IIsWVI)FGhLFbKUm^S*
z!o3jw2wA7R&ay<v^TrS!Fjn}(5dI`r=iGlnmd(=;5XK|&e~FKYPl(D-x-im*@jTlw
zgKo*^!pKOTiTLbFDKmpvh$?y3u$56ZVs@f3&KX9oFmlr}PZ$MAr0#i1@`aH<Z0+L}
zMRxGMK(QdP5V0^(J%=nBMzJtnq$2h&lN2YGAeIc{B^@hCN|BciqfFRZnO`B6BbE)L
zcOgqG&tL^&MPemlWuh2VAz7Xm)xxMAMvX9PhS4*O*TSf!^J+{|J8XSir4F$!v0fPU
zNg5C(wjoKQu=O-pf=!sPX&BAIXdXt3FuG`;EyHL}-ip|o*ha^;C22>Te8!p%9m43y
zU?*+UnZ&wMVs>4%-i@R?u}3(ybGsLV{fWJaeTd?@FG;^J)T|t!_18%ThB1gly4$nc
zD#>65-wb02$xz}jqQnjlV?-Du!x$CDXo{=C7!$_WFy0AUzs?>P#`rMigfTaa31LhO
zTaTV*hA}COx5C!feW!;pIgBY`Ok<S9%FkV^$q&K8D9#^Eiy|4#2wS4`pu88D6~=6)
z6-8p@m>0(UuytCO92d}XVHj^~8!=lH#$uL7xY)=csg|(7OT&0KjAdcG7siS(-lsS*
zGnSJ`c4GWN7%Rj0FpQ716X^&kmGUDfe03OWm}G4j8(D^R46YAjLl_@3p{k3*O<`;f
zV@nvHgs~%xPnl$E7~5n9>0HFKs-yUqV`mtj(M-5Fkwap4hw*tBd&2l4jC@h#kK)TP
zz6xV_1S2B&I*h$x+?RnG#=bE2hv5$+5XONpz6s+<7)M#igTzB@LzUNID$=CK!Z;p=
zEes=!6BKWRaWjmQ<YIg(jBmsEE{xMu&WCY<<V+afhjBKHbK3F;nP_?k$oE<CBlXK+
z{6un*c!?<O|8p3>gmH~Q$>j>kRiczi3`D%npnCrz!C&cLVsBCZjd+_Vv3E#*C*CE>
zj$Av5kLVzpM6q`YA$Jo!VR)r68(R6wp?35BE6aWup)iuP2@|7X#KMS>OMPX~#>o>z
zDV}NsdApPr#yyIEXk+m#u@A%eGmM52G>TZ+{T0T)VLT4w?=b$+ee_6s6N4vVJe374
zf*KKkNzxIOxAYNfYGjBYV+5HZcrJoG5#*&o<_NNB%PbK*Po7mPe`K|C&mKXJ2y#Y{
zi+XMytNs*2w&3QAAb$j<BPbI=0mc@MpjZSiL{N~yLJ<^>pa{7%pxP(!Ii0^4LGcJ)
zis0o4O3<JrQSy~CtFL@0E?6p(YPwe<C>ud#ZCNgY3K3L{pga|Is;Z=8#gBS|R3(C{
z6stx4xBsNp&#0;0HehV62(HNf{|M?ZSeICjSf3~*kv`fq*J_-`5j2UQeFPmMXc|E?
z8nlg|IZ10`3u4O%T1BkuI$3z-5YmRa6i@uf(e6LNjuCWauoF?P+&V|lMHvvqzD{9u
zi=cbN8el!73K8^*K>o$JC%aojvFRPbFdFoUpl<~IBIqB%5ba?A$spqE#DNjW3r$J*
zMg)U(v%IP8)p!^hfqXh%Y~;9?4kIHN6~WmE&P6aff-w;+jNt7E#zrtMf~gTqWAgD4
zOw@iRkf<BON#t)4CrcINi=afAS>k_s1T!L-$yjM9X?E3Iv#89DU=GP#qS()iV7}%H
zWcX#X%DE_l#StuzU<ISziC}32@3NJa5XDB0WsJo{yr(_L%cl1u_#lE)5qulLO09oL
zA|?4Kf>jZ$j$lm$+bFJ$K<4$w5o}~|T?FeR*dSv`t{CO(-)~u;o0GgYMX;3yn<Ll~
zvA$X1kc(J({!cCj@*NVv?GfyV;L`|p()bwhvk1PF0ZhItg54xy{CNa>$iE<}MdoYr
zeG%*@*{l0h><>^m9Kkmv2Z@J>s*#V7i{(+>O2?_3AfD8*GAh1{;536O;TiIotm*gU
z?`Opi5uA@8YZTd{xDdgQ)H6qMF@j6vnW9#eFGp}Af}2!+ir{CGUx-(TVsn+`S_Id%
z^0YF3C07Lyn_Ch57QyWZ?nLl=1PRUpnG|<P0uk6EFe0!=;E2E*u`VD@dT?t?Cy7h9
zm`4S<F8LzX<*|74%d9VA@gQSE5riX%&`*?#>V=q28`pC)89`bE_o$1X#}WJ?ivxoX
zBKRwUzsVmG|I}spM+Uq+^QS0ve59*9=Ag9*Jc-~bqY$-<lp$(~>7q!_pm0^xj0{SB
zpJRhRYq2a0K2MZlXOALB6nPlTNz6^mr46J2a;W5aDGDzT#S2j!h~k?l3Pw>VilI>q
zi=uE8MWSdEMcXKfMp2CRb)$GOisDh!jG|T)C8E}!UyIKgj4ergDT<e)C>2HND9TW&
zN_>S_E{d`wvJgqa^5hkW6^WIi*6#)6s2oKVa#?sKD8|*Is7{+FOsgtVn~KENAyM6@
zupX8AQ8XZFNNf~E<0zU$(KLz{RGJY_a|@{WX&y~Ifp1B@6|pr@9#Iz0hIUc3kD^x;
zy(xBxqLXw`6df5<S$829Z?8r1DtT98H?4Ok=|Sun{ohrVB<~YNU+Qm0(T_yLK_va7
z7!bwl<Z?YTkVIZ>t2OEk1_u*W;|!79*;d1&7!k#~DAq?YGKx`AOp4;IC`LyyCW?tn
zBBdQmGJ!ZQit$>P6SVRpHnP}Gj$%p_bEBB2OFosB(}>fFGl(;Zvxu{a;$cn{^7lYO
z<dCY(k77X-3mL0&c{_?l3@#>qM0_WTB_xt+X%z30FN@;6D3(XDB8m@n?E6uC5XDLc
zWiQZixgML1XGD^(V$^DFzb1;c<mx_mLlhq~_*E1eN%jyo5heNND7KJ)!U-$$bSufW
zD7HtjgZxt(d`7;Ls0PL^>br@bvv(x<7jg@rdrJJPM);aGd!yJ#BKm$3@pCYWLozF4
zC>FDt@o*G3qxhAvN1`}Na*TL9iW4L!Wetzw$0$xQ_$~3fC{9OlhWsmD-HEsF89W=s
zxhQ@hmve!vPUpD_$w;_J@uw($Cb<;FWfE2LU&yZ#uV`Jm`<mw0qqw2D)a6zbzsVBB
zirkLkjx1v2;_de+98s82+@-yZXvpA62Rl~=x!cN798S?0<t4hK@Q{cHwa5tiqVPu%
zpdOE=wj>3k2t^T&B0@bzjOw)6xw1*!6Hz3iNRxb{coN0aDE^4zeiVPx@&QZoFp58;
zSd$TRGU8DN{1wHJJb0QH9iBcNA`kzgcoanz`JeZC_&18jGUKFn@>)T@OCvw~iXmML
znPbQjL;4sp#E>zDOtF+VS^7TDg(AgpyE}pz@m$RM_5EIX?HfbZ7_zgivc)hw16CHt
zq4YQ?Z*$~~6NOyu=Zqm&47p>-6GML8s(DHB5#@$d#=IK#1*mMAkAm8=5J}+}ijc@h
zeWgiXB!4AlEeOSlC8(4nzC;wWmt!cUd1;a|L`hYaq+AT;W2g{A#TXjJ&{&@T$55G3
zwTM+>s7@l@s*+Tb0ncw7)zErPX|$<UscKWHL##`z7eoCR8feRgB$8Z=1)IdsG=^?5
zbdRA~49#O`A47*2T4?(=F|;IarIpsqT{c;@C26O1c_bn}J2KcMhE61%iE_tuwJ=^K
z?@AO)HPL#+&_9L&G4!PV8nIUly<_M@-ZzGR%t(?*qlqgyWY@X`W#xaJHUncA6vG?j
zgNf=M?adg5FgTPrjF`TV^?6B2K7zrKF^q~~bPQu+@Fn3-T2W(Tm=nWX8jOosS0m%e
zC&Vz3L~JIJyhWT$oD#!S9Xl<C=`qZRVJ4MXM0Fb?OUG;(jT}YusPBzoUkvkOSP;WP
zDsRWID3&@KE{@?Hil4=>gk((&YhzeS{%#D*NZuoUKwM5-5ySf=YRQ!{uZ-bCD#AY^
zSrx<T|JbY}|Ae@nD3%*y)_-h$%;3ftHj!*5ZXv4Ady3`O7`9Q_PTWEKl(>^9Jt&PS
zmb)0-P5hj=hxi5YOX63=uVbnA9s6TA5W`+}ka+kehEp+o8^b}GiE=20!{kSZM~TOD
z>~WG4F`Oikn@~yeT@0r=c{e9<CWh~0crk(E37n1LoD9M^`o!@=4CiCW7Dx6tF2wL-
z42~Gg7%tM!)fleDa4Ck%G5n<Sx<c}E48M@5edB7<Nv78+-iqM{$xWi@zmoKq50J)i
zJBB+k{7%J);jXr^k#s3)efL8?D{W^`xFmN9kKwNv{*J*NgC~Y?43QYTv<VV@M1Kqc
z)>=}jnIa^lm1qnxnmvpmPLdYGy%-WPB(;s$tDgq^5ySl$9>^@tmO7irM-rr$#Xycf
zWnS}_9sk7eNS5?CGRE;QeLf|M&0~@$MCB84q>CecJayNsYA2SN;+ESiaXd$onJ9`H
z-p@0bm8nF`5l7BAn#R#Aj$Co%j-yf>mE*`0N8UJ!#qnYs`QpeQM-lC(Kpch0Ux=e%
z+^U6~J0y4UUzqx{c~n%K6iPj^E*{6rag>Uq1Z_&j@e+wl^B*c(1uh*&nK;VFQ6Y|3
z;wT$OIT}cm3<>q|CE@a}zan*Y8rm*5-Q4zEC5}3A)QzJmW2?ncJ&qc2)QqE69JMK`
zf;~g|lTdLeM?J<iilaVBgE$(J$UT&t(8ZuJgH4FigQ7H#qeUEDsI(-uCAK1pL2HsW
z(m^a<yExiY=|JohM@MZb2AwsR>|TwdYaHFE^wfHHk{)qu{D^ZoUZc`Wnv_c4IQqqL
zPNt#Q#4#X_#c{k7$LnznjAK$9Z^bbvjyITUTpWYrcr%XC3=Sa<i(_~kL&@84|EJ_K
zB94)9jG`!IQ@^xTb74#zWA!MKCRNjRd>j*KENLf7VYqrvj$;bN`NXMlOpjv*`81-m
zz|1&ik<X1|Hpv{K_}Mkis<NCJ=TT9!W&!y^;@fd7l5)<_Et3vQ;#eBT_BeLL@opT;
z;`lI*kK%Zb_U{vy$FYJ$9I7Gl0fUm)O5JO#;#eKWhB!WsV+~{1X`8hqYIv-dxi-NX
zDjVb26vtL=vpJ3}aeTs{?7ew5--Syq+v2IE;L|vE#&I}~BeeW1jxXZ)GLBtw>=qmC
zZ4XIg9Cl8#l7AJ)*Kr((;~VOG<JcF+e%&MT4EAKU)aVuCgK-?ve&iP=H92OE#&Il;
zZ>b;Gu_xm=p}A_7Qw$3KE{@Z2oQdQ6IL=a3ZLY?H!t=8D$MGPJhjIKE$Hh2)kK-<l
zFU9dw96ys^j$0qRm4f{e$CWsKqbR|vaomXGW*pbzxK8m}x&Qsv^;aslWRCN!B=)LF
zZ&Sacbz2-p9KJaGaoFQ<#NnZVNpumNiu2nw;>XRPnyOwY1K$M);t0l(U{olMa2zr6
zh)x@g|F4BrTgAB^io;|aX>r_(;}06&*W*)}sR8h39Dl`;A%Tnut114b<x}E6aXgY!
zKpc-5d_q*u)x}cE2__MqjwC&?KsIDb;JF0yB#<|O%n4+no;!i(6UdrCPMs<nN%lnQ
zw=Lo)N5c9Rs61X4o-2`hey%P)^Cgf!fr1GXQn?UcNTg<ss*$8BOuZ<vNFp`1MK4B0
zW=DwxN+ysliS$Xll)%dgY)Rmg1WF}PI)VNP3`n3%0<R>{D1pWalue*q0#y^JMi1qQ
zl@h2xBAzR1&%!H{S4sSDmQ_!nRsyvXsKKb3M71K-NuVx+4HBqFA|C3KsOqSB-7t}Q
zm(e7FrU`Tr=Ls}Rpm_pq5@<{N7Q|M>mP9!lwk8puvY(_~0__v%q?HZ{bR>WFrfK1P
zbf%()U)Kb>N!upSi(>Z#dL+<O+J|#i9w>=hwdVKMKKqjNkxn0P#mdo-igo3mz`z7%
zBrr39K~kLrMkX+dv4ayBqCLDxB6S~{z%cUR#1TZ9W$JI6Mkg>PfwvNvOnqzu;}e*W
zz&HjaU)6dO8Jxs1Am;@&NvCL=X(Uq<|NCv%^aRxH^Q;7BC-80p%MzHAz}y7hPGAx3
z=OwU!WIj=S_eOGD$R1bywK#z#j1~Qz1Xe9fwZ>A4(!B2_usnee6ZnYAiUdB;_V05%
zD?cms*j|;u>IBv&upxmp39L<Eowk>$@oYY-Y4ULbn-bWZz((3s=RYPWhpJh&Ca^65
zM*?O7+Y{I!*Ut%@OW@N4b|!Erfx`)WCex6~4<xW#8c=3p0$)?vlfV}Vd`YgFRG#;W
z=QHWCm*Tzz_LD?-+Lc)K`;l)b9we%gNc$W~;8+63DIR5g#rQ-5ClmNCfz#AaCGahY
z*h@uJU4);Z_&rhj_j!)V9}+m9z%L10p?)EO%OpQ0aFIj}?@Ll6`Kq~W0iyUbQO(M$
z30zCyw*+n{aGm;1;titYE4BVLfm_nfIZ{0<KJO&(djbY+?rKY$UI(5HKRct;!s|>R
znm|mH1l$RD80AkOkbqZv@R6v`H3Z4S350a4YQ_kI();lQ5()gnV3PPCfrkmCk>5+;
z4-y$L_euWZB>j_I>h-r0iQ-Ka@)3joCh(Z#Ndiw30B`G5@5>u@Nh|gllE|3E3`S*2
z;<+T6CDA;I%t>TP;*})ICh>d{S(7N5M6o2YC6PUed`aX_A_r6DN+LH&PBCC_=3!9$
z=S`-{lWDvaRUnBM7*#llg4(7~65mfq^@!LMp{{Bn9$rkMq%8OpiziV+r&0zlCsA4}
zrT&w!Owt<LQqyutl&4-Vi3&+nOrly6)sv`1v5HPxnM5s&Rmml74U$?()F!D(RO7G?
zdEI2{OsB47>L<}4iH3}7oJ5l(8j(Mn=}j3_6G8m9NTOvD1Ctn(M5`oPC(${HF0^Sw
zY@bA1l6FMZwjIbjCei6X;ve$QFG+MwqE`~Vljz2%9>nfMX-Ubqr!-5_T6rXQH3<78
z(Km?!+NK{#f1=b>RrYlqD--RFBnBrjI*Bn9-%MhtbTRo5qPQJSGLkrgD1PJuZxp%e
zxUor$V{j^Qd=itAcq@qsNlZ+peqt<TmTw45rh)J&$<$SW`l<4?B&IV;Jga-LnMuq_
zVs;X9l30_(+9c*CF)xXClUSC-{3I46@s9SkkYo|@ZK7NjE+$dExrBTvQMH4V;k_i@
zPvV0lmQ!CrR2{l9i4T)lowRnieMEf~QBp|>Wx7ersH@y{TK|}2J#j-4Kk?z-Mjg8;
znL77LXKhL1lO(n#v5m2xX`Agy?9lvEnXR%5h^RVuR}#A!`#HruNqmvSm*isk75$5I
z;a`&r*_XtACOMGA>7?}|WhwtRNgSkjD2c;K9ML(RBsrSIF|8a=;sp7#0d^{hZ*}Z<
zBvLlX=#0$zB+gPfm&ElXZY1$T66ce+K=D!%mq~skUL?xC!JkN^R98rTCjLTH9dR{@
zYYfV*y<~JViC>d2s7R_?N!%g-O)Iyx@$Xu>n}m&AJ{EC$BJ4>xk}#8SQuHb_q9+Nr
zOo0Wd*(Cm@;)21-2qY1dH8Tyx(hy1_oJ4^%ypV=S5>a-+b7_`kjDGGB<HQ6pNlYWk
zE66{RxSzxW2LDdtpClfV|49@-f03xoPLIf+B=IlFV|nZ*pAP0}{b>?lzUk7CiA2(-
zPeTUsjL($xsb7<2)=CzV=hKii4cXF=oxz-G$d!g1+D5$r$(@EgS~<JKdV!Lc!F*}R
zPa@|6$yAPlX(&uZUhEc1OO1BXi=?I6^F_uEOv9iwt1FAAp+p)=rs1VDyqt!5X{b+w
zQfa70QaTM~NM1=pB@*#gHVx&-%WI_qNkyXioK9u(Dru;yZPaB+^)%GbO3gIXBCk!X
zL##_w)2%@o8m6IL8rr9!5%p%o#%XAxYt)pA8YIohTM%0kTM?zqt<%s(^R^_iICMxu
z$29a~uu~d3lk`bL7j4;-<kd8ECFw@&PV7M}!LzgYe~rOj#NNbO9JhVR<viG*WB~DX
zqPl~4BMpPoFo(+jqw77Rr6|6y;eDoiP(hO9AV`oTDxe@Lhyk-d113y}AO=uC#ej+l
z#eg{@qKFX`GeHy-K@p6om{3v7**mdkrf2%ywVU?O`{B8(*Iv6$ojR3Hg|6=DOFN_L
zFuD$>Cw(_2k)M%B&aA^(5}sX$2}$f&k#WLv>Ts^ecp=|)p;=xN6+EvF=hxwaI!scK
z@=NM)VZtvGxmf7khRKQiQjyD&HlLEnF%ehQ;cB*R#^rL2<g@DVP#va<Ut5RkM5fi@
zwj|Z{A~)3G#zb;c9j1%lEW9O=-&(inU3wb7y$*Lsey8xRMCa~0+>`KoMeeJ^{fT5o
z9Uc&$DSR-I)4?7Vf1?h|MP}FGktBAG$fLr?gpUiKsKb+Wc&ZL_6?~=+^Xo8A{OP2F
zX!%)5mek?ZIy@)N@;@)~LLFYL!%N~XYYZ+FU!de1lDrnxVX>mfUrE~hwZu+5G?vz3
znIx|ZW8s_PEi-79!HPPpRPe1jY^=i%b$DCBRdsl$4y)_1M#0bP@UF;OA<Ow*9o`rJ
zpbj4@_m7gYF_r`E<3#flkxzx|>hPIJ?A2e0e<}Q`4(sdiwQBTjQm=37Fh-T#Ajx;a
z?}f~Q6=z;Q)*&kk<Ufi0Ec~Sozl!`O{9Q<$KkD#j!v7NayAJ;(l7H(^m+*{;do55T
zFD%rdC=%3R%M7;4pj3x)9V!x<Je;|N3Rde-6N!XSY}^afNh#=M;3uil8Pv;Qi_HJ6
zYt5#ieiGX}g9ZuTI)jGdjWTGQL6bzjO$JTH<A1ZxT$*J-BP1;n9j@jKwpOs4u#K>7
z2JJFvFTSmijod+`qi{PR({{?BbHcl1&^6)Pi##+7-4jWV40>kJD}x;*87S<X!Hyz3
z33nCloIxLvzCz~GFN0kY9yeP53<e~U-7@a~VpDB*N%j!#DIApO3>MidgCU7z?+o@y
z_`VtJm%-2sc;G`f<F$Xr5k9^=FwtQP9FoDI8F(T55Qk;(Kh~v)-bEaq!4Vn!Rlwf`
z94Y;+@~%8bC25CcaC8R8us1U}E`x_8KR$!u8O%}_pCHN28QhY=i5Z-v;K@Sf+n)aj
zAcGMZoSMPN3{K17k_;wiFe-!58JwHJcxj%V!I>GH#gZ#{hH%&STuIIrA17pRYzF`8
zy?yd?5<Ve=iBh;wcwPn<B>LwkI@F&eVVwLT@r#q#OBK92gKILlEQ8B4m?FuQ!YhQd
z5U0IL!MJ!+Gnkga^%-0%;dR1T?FR9igg0&`pS~HtRh*XZ&EU3-n+<Ny;EoLLOyqZG
zaF;mmBe+MsCz12VLHCK@pTUd_9#C2~_=6%dlOSC#o?%EHmj3Jv9?4)%29IX&bQaHK
z@mL0rb0lWbD2pdDcrt@8GWarsr!ttE!Qu>F$zWcR@AFJ0{)}*bB7auoIU$SjLLz@L
zgO|i#&R~Ja!VDIP{C%G5-*`|g$>7xt-pk;9MZK26Dv_lbEE9P>gEvK(<c$oLC!D7c
zD>7J_!CQ&s?Towi;CXU<R{xIVtCQF@BJT=$JNbdgC&CYf9|_lH@UaN%!W{YR?^6ZI
z*Jbco!arwTdLr;u2J17(WRO+V*BSgG@=XTcX0RdA{~?3#68^o&Mq%6tKZ^e({F&oL
z&%%Dq;5SKr&){#7KZJh@S)RW*gjL9Y63M?Jb;9^3lerAa8B`?63k$+x27w6elrrFl
zOi98Fs+_~Kj`ONzVB%4t2?gUD+myJMg`Y(_`+rXf<A2w<g<`kNVyi6bi#N!+(rztI
z5?8!&7EQ7^A&V2UXqv?~Sq#Wxw=9}v(L9Uov*?yZ3ngKB+KRLkwi31$w#jZfCv2BR
zdr7v<qEi-~v*@5;$1Jv^x9b^JoG-0);SkVqR#)l7E!kb1u{(+M$fBo6uPk=RqIVLz
zV-_#XcC8fu>qe5Dv*?pWUn%s<Vpow}g#YE(KM4-ZV)rbLR&WpD0a+ZF#hzIV%3^R9
zdr7!o7DGh#5i*y(vzvTl--NIVLzCG3MdFGa#MV~u;4BWw;?P9re_0%s@VFljSHI9W
zuOk(8lyI1k){aT^kImw^gdd;9aPhdiPs-xtEUwJrsw_^)Vnh}fD)v;CGmG=YPs?Id
z7Gtv*m&IsF&Jv!U#Tbz@vhFRuGu4|-^hHo23vjk#<NNe;vKX)6xx%;yCy4W)X`)En
z0_SIOfr6~pq@<1)C6bG?xFn0o3SOGU6p_oaxIFO_rlKA8-4)qQzIt^Q*JN>L7I$Sa
zHH&MN<QCy|!W)Itgx6<rgGg-Wri4!yxjFGY#@;H)ZNl4ycL=|!kGn-45Z)uaS9o6*
z_h&c#gSHux&<-b!nOQuT#jGqI%3@9yk1FcnEM_M<tkEM0r~YH&Ph|0A7LUtd{7mF2
z$>(M<FT3fx3bfC&`uJ>reiqNNDRP*a!*f|YpGA)xdgky#7B5mii{CgpWa0HJ-pJzR
zEEXuZFpF13Xl+pzi)m+1ypqKd33*T%cQIpM%VKGwxlDwo8OyVHGmFo%_&kdhS**<B
z14X?hT$RN;S-hR3V#lq{VoetBC6f4+>~|H6J>>ml-uN(!kFr>+sE@PwgjpmzjZY<9
zw^=IgKflQ0OG$pn;wzD_*?L*57w6eUyhr_3!SA!!ki~b27qNB=&v#SDM#ZvJKZ^V$
z{5gwX*ev>|SJa_<|DMGkS=7s6i=0dKXBN3E@>%>P{lByLCyRf@8JiKQ%YrX$^2uyg
z!MIfm;$armEQ(nK+5daSUCN@IMI}*=r-fP;ktBW&P}a1c5-}m$&`abTdg+9-<+sdX
zs~lQLQeW6m*g&|oFh0?3ltbejn&i+_!e+v4gmJNBY%U2~qh$`Qa%i1Hn;f>yp+gRB
zb7-g7_K8lsda|@EVaFV{%b{xy+bgz{u#2#>u$TThEH%3+$W+}$nD5m)y9V!-!wxwd
zl*7T2_s*eT4!h*Aqk=mLcNS8)k4RtPl@qXQ4*hc&lEdDT3=r-q+%1QJIqaUp9ty_e
zE=JlJl*3@j$@j{+IX|w{J`(Pq!@f!EemM+HcyT9J-~$vqP{=n}4$0xr9L~;RYz~Lz
z@V^{}=Ws#}hv#ra4#!CCNZ~NyQ9@S+ZEucNkgaj7$Z<*R@j178a(+Hhl94%_mcvOo
zoUGs}!Vx*dMLIP}#WSK&;%5j)=Wu#%lOK+eB=!pCer675C8=1FaS5N2!#O#eo5T1V
zCggBY4j1PzF^BVVn3U+8pTh;LsjBd>)-}2`k6SOyA+8kdUy{S6iT>o=rWyXS94@Cf
z>i<nsCtkR($l*$9vN5m9xp$kdR**h(Z4TGvuri0Ya+sFG^*KC|!;?AOki(5R+>^t-
z(!5D{yKs6AH|KCm4!0`ETxf@Qn}RIf9f|x-k-LO<Gf91{?ScCgd@zSuBKPMoL*xM=
z?aXAi%HTtZWKIqbi_aE5B8;o{Xrl924v&k+|Fh<)9OmZmVh%6mFi-Ml6V0dD?+Kr;
zQZZ9r&*kuZB7Y(2)0ZWAEr+E!EXZMD4vQptCDB}*0}p#+3ri$?HTQpSaV(SMP2uap
zH-yWRI<8PKuFKmwtjgiX9Dd5-og7vx>I>l-;U_t~EAn0r@8|GA4j<;QRuUHAqa6PG
zuPbo_eypfH^?2n|@pU<TCh~cbibLSb9KKR;y>Nr@>m0rj`BwO!SAWN#BpY-1LABsL
zT3r60CI2Ufe{=XHhhKB}O_D!^zYAGTKA!k9;eX}ucfwibx*ReJMmc0z9q}-Sd=3Ti
zK*)KiC=x#zEagy6{J$bObBTvZHHTUv;i&?2K45vI^6>KT^Qf1{780iO=%^!z_yIA8
z+m`wNJDI2J)|VP9+aQmv^JthyqdXet@lC<?eiOxRpGP;5rg?0WM>Fx}LLT+E5NRoF
zl}BrlHo{JMv=wQWM|+WNSssxNLT17C*-kv}+|G%-i%8eJ`=7}CDMa@?dZ^@k7SJ<~
zUU}@7$Iv`>kXoNS`sUF)NxP%SPQsmqY$fK^FOR(xB;O^EUB&w+k^y<_mdC(6cF$vv
zJO)X=r!d~4Fcr5DgC&U{jtoiC?w!Xz;`<8Y2W|W3aX=nF<?(YK2j+259&hBaJdcC(
zI3$nD^O%yyp?MsZ$M8H($m4%(=O`K`BsrY*6=%LjiX0{5Y$(PaoyRc>9-GH;F_HZE
zq<>G$<D@*s<Z(tGCnq*f%j1+hM&xm-B>ed*O^s9%lJS!;O7hWpH?5s6&fJ;fnRz!A
zkI!R59%toob{=CT8JEX7B5|pxbFNaw!HIdCm&XNpOp@^YBr3Lfp%Px4$0d?qloVsK
zg4DS*sqbY8VIi-`<H|hl&Evj2u9EzE;nhN>x+agQd0d;vb+SJ#k;jJ{T(57)<HkI0
zlKi$jZWo!J$IYy@_^nAB(i*3TJMy?w^1BoHT}cU9P3qi}-?SUQKaUxCESB;EdCbh?
zC2{IJn8(~a=H)RfkB20DIFHAZ*x7kJlE)kc9~C~9ck?Z;cs6)K!Y74K#i)Dar^TNa
zJ|mnjd{)SOpOYPu7xH+K!!UVf6hFLvIgbU>TqxvER2FTf^GY5|B!4xr_F5iG#g_?R
zPvkWFW*#f@_)cxUGLN?u^@)&P@wUjSJl@G;bslT-crTCl)r{{Z{T?^w2TAawJU&e9
z)56+3K9+v$S}R-N(>&JY@tJhK%;T#(K2P+&5Qz=0&*NJKzfNMmVJh86Y!IQE3o4cs
z*(mZu9zTl2M(B9I<Wb8bVqfR+TOPkF_K!UNRDoGSHu7J26!IwM@pm5o<nga`GI?Z0
z>eM)F<S(0UIs?o}o)^X$1>zN9DUb4IQM4Z_SQYZc1{7cg?5MdqRe)DO(*m|Bz%L+O
za9PkMv0edNDY%6+w-m+&u3tcd0=6!oVLagr8x_#F;6C@Anc$Mgn#9;(vjSQd(58Uq
z1+<XamIbsbxGyuu*~OY|Wr}6)Cep5e_62M!-l2f)lGu(S^u|sioeStva38YnD%_r_
z8n_^@*mb)X&?8CPvw&XWI|zFVW5?b}1>3oRJ_Ym@?=S2pon6FPwp|NuHDrMYNWNPE
z0~NKqaE}6(-s@^j&A4iVq&B#Ky$Tp2oxKYfRlw*1_9<XrN%kw?M3JEd>|ekE1sqtw
zumX-Q;GhByF5rI!9A3a71sqzyVbc7sZJE)3c^$#?{{oIuj?DePwx#khN_AWT$H&Q4
zi&$ZJ0VhZpcU&waKS{!q3pk~K5#py7FtUKtHcLy(aqg!VFs6W~3Yc5K8SIDxt}9?#
z0cRC(b^(_ZFu8!S1&ouO^9wkqfO89&sNi@ZbDU6c4NJm{#W+v$xI7mWFo_N($wdWR
zoYax}u|kZO7H~xYR~B$t0hcG%rX=>Md{x4)5xH7O`P2fgO?YhT`T}k!U`7EC6mVk!
zHx+P40e4DgdI7hJ++4sdNvgOVZY$vSL=xBKt^)3s<h}y#5xF-}h-*r<`z86WA7>UY
zyMRXuc(8z3ih8JkhehJD#g^w3@Ti1O6!4e`4L&YHg;<A@ClkrM0-i2lWdUy$@Js>o
z3s_XZ;sTyc(!L<_TmjD~5@z>e0WTHsasdk@T&PxMQBPdrvWUyWTwW<)SplyXu%v)j
zrTH4if(Uiu!o>K7gl`I$s~=<eiezNb+S>(uP{4-;tSaE00#-|z@^=eZlW>}SuYmUz
zBxjMhqy9+2PYU={WUcUHS!VKe1$<V(7X^G-z~_phkZF0HaD#KauL@XSz}JcAuwegn
z%C`k<DBwF5xPU)Z>^N#;0Y51CBg?GUrG6^lXFA4w{8GTL1^lLok#pS^{QvI-)Z^Ph
z@8S;;PM8eRPMpy{oJEUhQgoUAE1Pw~j4&(A6_6L9PC=wtKp;{|<mCb?1%w4uCGlmj
zCLRePi3w>ZRfL!D_`_dm1?v^DMG;$yZ&k$BiBA0@8Wh1_{xWTk297i=qLE@-#qWQL
zcMxtPY$l|BbCDKBv`i$eL|O~m6wy|sT@u?~WLx1|UC}X-Zzs}8*jd=6h^|TO_9ESi
z=q}PDk@qa3mw0?Kwqp@H6|qMddzP_t5q*jnU&Mr>`zS=;B6cmJe-Wdap<fYi0lO42
zT_3j`P{eLU{I7_Yw#A7a1{QHZ5eF8rJ53ewVQ1`F#QsH`>tRsQeGp)<4DKbQ<sl+_
z3-=N3E8MS$p(50oz75{w|Dxh&e~LJ`h(n7wtcX=TowY-Xc+Ug>gEqhQF{`C3z&5=w
z&%@zG98tuP%5h8)U$nzfMGWWNK@mq6aZC}%ve^7$TM@^JoGhf|c#+}46N)%d<RoE-
zCN9Y-;v<9%o?67UT`;nUICfMbA1!jakWu_z%^5|UDL<iyoF#I$aBLCd68Sl7sDxkI
z2NR1pk8N1OM<twJ#05pPD4}HulZv>IRS0lgfQyQ_m>m~j=Kz-!!QZD(F5=Rn`}8QA
z?lQH&okj3B@0YVjqG(DHR}^uj_)WsAgjWlxa7__Y#ji~y*A+1>;nx>&gZPcY_U3Hz
znqI`slH8JL-YRmN@OI%H!bXO>inzOody2TXh-wkFBJL~V{vw_%;;ABL6!Ab2vx|77
zh?zz7^f0T4hl+Txh<}>9izi@@@Rz?ucVnAxhez8v7oAhYqeVPk#1kA%oK<}H>gi)e
ztmMZP=_hP|&&?zy4|9u{$7U&FNfA#Mu^)d}-3s%Ic!u4*1Y`MI82;F#i06uUzK9o!
zSWNvU?mn77^QWB`i|%cNmz2xP!Ue*G!bQSC&CsT$%kI@8UZaZ^@qQ6YRp7UT%Y?M{
zx}5xtB9=??rf`LDrSLttOy8!%7x7LJtBY7u#Jlvj2Cil14g>$?<ysFrc{r@G!w={%
zMSNDo=S6%}#9B5ZE7%wx7x76EpBAxBW|@{Pxx~Y`R<8Ae4*0MgzM!8d_Rk`|Dq?*R
zKNRs}5nmVaO%WT4_^ya=HDk~w*B7=G+xGh+HgZ_`?nCIj)90-{$0J+pry_nX;+G<R
zrA;4w8>8xh|8DEIqQl>d_(OS}!Pl1H%CJ}`Eq@j9H#@qBe~So;C>2pxM5c&b5qTwK
zU8tW`J2P!T9>U};JE16pY_5{N4q7gvQbbsEpJ+I_xvL;`oHO`{ia>z+0U87@YYX57
z@B^e2q=Z?d1Jnz!Wq_>$*Ojc-7J+NbujPJ}(6!hIRNgv3!vH-4^iuLh0U8Hr5^Qo;
zYBmkfF~D}RvrT|z0h$MB5ujz@oO#;-trXQdKpUlE64s(^fOdiFeFj;c_R?Y1DCr<M
z)3PNy1?a4(9s#-p&M~?L=pLYJfbAt`U$C#^T>-J1zNJI8-ye3$I|S$*U`J_EjY~g;
z%#oZ!wNHS)0p989CeJo}J&C740d@&+4LAP*`Ue;gV7CBA1~`g!58N>_uR{XtF1|;A
zJw*lu*gJ_GEV7qyi11<l3OK;N0rm?pRFZ=N>@RXGKl>2i0C8IWhT8*WL4GjXNBmHg
z=deWQe*q3p_z?lxN@tjKj+Xq0t6c@J;rHJpq^aWr3=fbCkPmP|fD;3}8DK?#lLDL^
z;6hHb0Zs`pBEaYXrw2GSz{min1sD}L@8asVI)&q!VL?+2ZjAL^P)uPAqXJwIU{Zk3
zJvR}Z8Q{6jI4i)}^bkII3~*k6^8<_va87`8C8T^pfG>dYbie*ijn_mr%l3|QYTC1l
z`<FUgZ5#7nQ#HYBo!vTkF(>~3QvzHOU~+&<16&s1a(Nd^(!Yx<AwN;FOB2-Z;#}^^
z09OTgEx^(MV>&y@#Xhd4L$X-{Obu{tfa?NG3ot9dLjl-9*9W*Q!0qBU1h_H4O#!9{
zxH-Tr0dAH2vV$=BAgBBv@?jH$cLcaMz<mMk3~*O~yQO?jl7tGpn3i~dfSHod2=D-F
zA%ihKxVe6S*=)=J&vQt!PXjy^V6GG%RjMZfJQm<_@z{7?xjZQe`Mdy6OaIvb&xp+5
z%zj*$7+;WlL4bt;UJUS(EHLWj&GebYq5!W*LcTbOS`y$@_K2!RImt5CYp`>V=_$NU
zhu0?RjR4C7T%U5Qw$F(rz*_;<2lzU`+W}SuSR3GD4#NPe1AG|ZqX26HxAS>Fzy|@|
zW!CbI_X6h|%RO}EPF~a008Xl%vA6?<`d9&c65vyMBONTjvrU}Su2WhLfzLQW^>xW#
z@$qGVuL2zJyUB-9&9s;JCcw7=eh=^m=a$ac5a5>pzXte@Q%B%77#vU=H7_yM4*`DU
zbjk@zNXgHN`W2Yn9>1|ho+}b}4&1r@8Q`w~bpbK~{-(cqn9>+@NLK2f0RPI3xp31<
zIo7g)i{fO?f-%!VfMS4BfHKS68E210&&~(}aHe9hD}m!-fT|?iu+>ylTHd;ZNW&i`
zH=FS?k(AIA`X!`AK5mbCC2S$SrH~D~RSEUQ8zd4M;RdW>35`l_C&sIB2~85-RAd`r
zGhuUKxieao(7J>^CG;(!O$lc;#UWkLv4plIv@5xR|GL)4_9ZOldLir}Ja&6bZ-?zl
z=u|@I61tSowS-<J>`=n?C3GvHM+rSkSk(^QOKum+S;&2np5NeYjQyIp$%>?R2|Jds
zQwckl@N-kAM*n0}vm+S0obTy%LcbDrDdB%59A3h%CG;<0w-N@@a!;&kjDy-^0Au<8
z0r}=<$?d?o72ksjYFHZFvxGq<3@%}>5>9A_AtlUBx&GxxllGR{J|*m1a+3W@I7ozi
zsL1{$9FRy3Ea5lp{12AokVJl{$YCsG6KCXz5{@k4vJx&Y;iwXZl`x@%i6tCe!tIT5
zZVBT{I7W?sYzfDeaD2&qc5-ydx$$su22UvAMDde^Czo)F$aT#yBGEaugpo>hnsAhm
zX=&$l@iD?Pgl7uR5}qv_D;y_0M;KdR@;3Z`Y8u7omE3f(R}-9H0&jxYm=~1X7Hbl_
zKspzSTqL}>giAywC$X0@RTrl@rGzU=xQ#7P!j&aAd;HK6x2WB&D&cDSa0yeXT*8g?
zBL3{RglQ$*AWp{~(i9JN!SyAatufo>Xmo0Vn@X5o!p$Xo@3}$r3QrY;B)76U+ArNv
z!kr~NQo@`P?keH#67DPE{u1sf;a;ZYB-R+8DAkS^Ifr2?S}UY5Lmu@&2{Y->d;}mQ
znI-a22@fZd*=iX^JzBzJB|Kij6D7CgMUCCpz^>_oT4Ov}!ZRg2*x5DRQ*=LiX~~U+
ziyGr;k+GVJ=W`@-<d*Op%gi_bOIRuLLJ2RH@RIm4;mai~5LsBl5)tYz5?Rbv70JUH
z;q__>uSv30m5OIG%3m+xjU?^z65bSFA#CEiqEhFr65f_%mGGSsR*S4D;e8S6yvq({
zFX&_PL-i*42lU>Q%blZgE$0>=7c{}gC45rCrzNZ_;hz%zE#b2gJ}=>`64saS1uMH7
zzARxx7dP{>LH^;}*Xo+Vt=uQnzE<JC;Y?D(hLXDv`mTguM99Av*(m%$_@nSA&MG2@
zOxpBD_pcnqlKd`Y+CNJ8GvR-g@OQ$wZ?7vM!>Or^K4s^$^o?u@In8Ey&d+7AgawX~
z5`q#+C8Wx38&fX1FVux4R7<F+mALa^Yt%UHmw+;?j80vgCgr?%LqyKDiiuZt%D!~y
z%=OC71Ggw+%QChqqkb7(C21gRQbtpet;=XALghvxjmzM2%-}X<G%KT{gw2Jm%V<+Z
z3-Ol1RzhwJsL!jdg6+#_CqhXawXK3363dit$8sh*okhB^oZQ><pT8*BP1wDR9wI%7
zB2?&AMy<uB9DA3sqvSi4k?-JyU-U)aGO9Zu(*pg<;4;J^Gn&tT%h<Jy{$=MU1IidE
z!YO^XvRegsSHgk3JNrv_uhijP+n_QAOKq<*t}o+;G8Q()kTUizW1q5{wD&FJpfV0t
zF8h@+ls#L<0c9Lm#>-7z)|~xL(}F@gq>Mw$xT=h+%Q%dgmT`F*Q_48Jj3dezTgJFD
zj+EJx%WeTZs_Z`f$Bo}Gk)z8vw>ypzKUR2L8OMtZ7oH$IQFv0>ZB3b+NjM}=DPu$#
zr<NTbspdLE{IoJgiBLXT<n%JeBoe*^MfsW1KdX$hC110h6SD5-l<@<<<gWssD;!_O
z1d)kC>YOKXzVHI!q%tn);+pOvc7Zl&7gHiWIgwmi#%1F4XRhg2lyN27GlfP2!3`3-
zlJhqE^qMlJmT_Gf)5`cl_b=C$-8T=p+|1$R-`?dip^Mwq?8omvm+>pzuN`hGV|p1k
zmvKuOE6aGRj9bgNt&FG2m|Mo}W!zE5<7GUd(%xCdqh(BLj=Rck;=Q}<_J_RgDdXNU
z?knSdNoFVV86pn|XO{7x$SmPQLZ*FK<hVZ0)FZ0q9O1oi1%6C5ZD=^&!;@t<b+Fb$
zbO$}JjHl^oWxP?wGiA&#<0UGqoX?iQX5p;zTp7>H+6!g3+vIR~vAk)`^;=>=*==8$
z%S!(DUcUWU#-g%2sN}Vnb`rjXl@)(2kt{7^S;Ft<cAdP86?CdDI8PHk-Ie<&Zj9Nd
zZ<n#EjL*vWyo`6sSY5`NGTtq_{ngNBXs@O1y)xb}V;%c~->=|rf$9GmDYWyUoc|-?
zTH(jSPlTVUI#lEKfJwe6<I6I>V?%L3HOCDD@l_djwRA1HUgP@fGQKI}+cGvN=vEeO
z%ZVH5z-%ksjnc2!R>U96_$kr+xr|@Ld1lCjzm@TO8Gn@VXBih)a7hJ!mGO5OJuB!{
z!9QjE%ek?FmKD^MktrivMvfJ1hea*jjC5Qpuv@35P{;RoG?WTu6w3(8u768qw;O3(
zLAi`d8DZINoUDRW1yykdYh^@bpyDnDc`>0^fv@1!!gK{&RIsIZJ>jUq*h+-@^_7;X
zcr~biQL&wdQfMTkah9Zsu&HnxVKZTKA(OYNpmhbEE9g>jYuq(H+EnmePmJd(z($Co
zb``W2*;d#=*ipEhu#=EuoO3Vlo+fp{#>VJc!S)r`ecdW<IqP0Qj|yfFah%szzz!Ak
zuHc{w4z6Iw3U;cXPX&D|xS}~uABUYQZs5f3(XWEPd4Ry;HF8rH2gt4!yv^@_RxqIA
zHXgfGFsR~sHs2WoCD~oUJu28!gau>l;0pGtxK(3F1^Y?9w~&&3MD}Gj@iT7R{8zAl
z1qVn-`#hC8P&|%3q=G{ktl;npe(32&;$f=k-F)wbuR#vS5fz+X!5CHi$O?|CU|0o5
zS8z-PCsuG0n-`nrpJOXHj+yclNH|=`0-R96ib1X<Cs*7f58gWQQ1=v-VT5#;<kSjA
zik~JNB^)jMUG_O!vaQZg+0LxsES2Z%3eFc{FN_r#SHU@n<Xn;Q!U+{j6gf}GT``kf
zAWkw#<U-*^LT+g$S8yr2rh-)!Tvoy56+BnL^A${Cw^s021&>$oOk@1P`ydZjR&Z4X
z+wkR2x?%-WE1TAl`{}(ETvx%gL~>^Z*H>_Zf;U!hv&c=tbw^`*LT;(x)(UP@@DAba
z!l_z(sTr?RcU5qA1@|PWD7?3V`xNXz|B0d*;ty0Xvw{c3DV!}btAd9_Xzk$&V*N)X
znNvZW#iR7b0nW~aon19Kl|50x>wNxOasK?2aISD(1y74m{*1_c;j<MqXyue&sNls4
z-l$-C1us>c8*o=Yrn4KHFITXj;<iZ(D_A75xPql3uLze2UlmgAwF*vc>-3i;lGjB_
zTs1fcYAH`Qaie2J#odaoq~nP+YVCsWRIs{&uPRty!I}!*t>E(tzF=wj@VA0bDsDxf
zyS`sRma9Mo|8o8p|EPks)bED7yW?Zds8RF)KmMs<xQ-se!yn<pT6ETVxFdxx<*{4@
zTl2)bf^RDLt%Bbx_*U|tEBK{?4Gi)YfP=k)jU0v*{8+(H74Uh=-i=*Jcy7Sie(g5y
zl(Hia1o&L0;!ct|Be83?j3S;M{J~i?goSRJ`je}G?ElRrK>qwM%U?lGysm<b2<_AP
zdF3kzB_S_VP)vAGK}ozUJY)bWG@>NbtV&p`AQD+Bc`C#fhClne$%G~Uhadk8Q7=R;
zW%-nC5n{^_x71wMY!#w@h%2hNvWf;Fwhr-fh~0U+5n@$){MiYOLY&4O9T%VwO+qvc
zu}z2vL(B@%EJX7V4}_Q*qD6?7p*v&YW~^0+)*-rt=o+F;h_)d*gy<N$1+HC)t33=E
zfc9!4-Yabzy4xtOxs!V1#HQFT#M2$nDFn;R+I0?b=t$Q-+lS~DqI-xQp?fgIJGg_k
zMa%x^8KRdgbGy!^XNM3s$#U-yJ5n>m&LKvJI6Xw45Pd`JAL4)z{X*=*YKGV&#I7Ow
zhZqoIH(8!C1`XTd%;p%#=9-NAe9(n<(zBsGLktSBPl$a(3=XkZh#?{NX2qkZqjnu5
z_&-PVzpI|no?*WbrBg99bWbZLMA2M6ZqUn12ZlH(#IYfc3vqCWL#PnqNY<1;{tfZJ
z5QqQ&?Qd@9s1U<K93A4A|95GR4>3H%DIrFLI3dJ|Ax;W$^8efBsUb$PmqU#Df7=`r
z;*1cNhHku{8RD!E6GNOA;_MJ(LyQY?PKZ<&v}=VKT{Ihq7$0H+>(#=ITsF%_&QzQU
z`TRYK&JS@xh>Jp89AZ+43waI1f<4@M;5A$vwaQ#VpIL^<p?mrKXEohQJ+8Ve#N{ET
z&}l<l8{)bUSBAJM#5HsS)sbF(HNDhx?%jtw{LOk{T8QgI+z{f%|94HNhq#%eBgCyC
z?hC;sxWqUAX@o!i4N=$9kvkN;GsImYcZaw~gi!$}e{m89?@#12Ld5ckjom!cbC|=2
zLOdK|PKZZC%ntF0T=$Ay+`gC2%snUfU_7*ZEX3m>p3tCRswYD{72??t&xM#9VqS=6
zLd@sD(LlIjBzTVc3TNGvds4%@9uCRn?eKhv7ec%k;wAcj6PE>VUR)VGr@Udfn=uxI
zSjdj%DVB#tAr`Ydp<8#jqdu^TB_Uo7@mh$bA^r;ScZg*nUJvnoh>aoM2(diGyCL3V
zmr>|p1&hZ=1DZWnQj>>2bZ?zYye+ay_)dt`iF{4yo~ycPpIzD59c6s3s1HJX7~&&!
z>)H^XanwZ7$00tELw+h`kFOJ<i}D#kGo4h>)E83zQutMf^&!3%|0cw@BFu=^cx?#r
zoh0O(NPh_NV~F2E{2t;b6@$|tj|z!DbBg0zpdo%0VI3Ld8P^{nrnSVMAtn!Yt;*cT
zarzDMFQ?Wj8dgykA``-^!mlFB8AjDSgpY$c|EQf&b=5B@yP_}<mW1UH6%p!$Y%B4a
zFp3qFDLdDyNL5`g^Ws54y6T*PMQTt*y{em0IcsfEb#vF2!mWh$ndB%Z<W^x0kA13W
zTt(X|+Ev~8C!e`AsiJAsH5UgXt!-09vnrZb-9zxt`=CV?`F8G^Y|AQINv*Yz`fWrw
zb+@lN2kTYE4pmp4ZL8>@@^lokVB1yENxZYLi?FM3`zpGLbg!a^2=$+DiJs!T4QH^o
zGNQBXQ^k%|>{P|hRrIN1&ngC0(YK0QIGM1VdiHu44}YrIwTk{#45;Fd7TB$d4Se^B
zz8XbWab>S!_bN#CP?C6i_Aqz;RqR#8kSg}Bq6LSu9_BvHGh04~)q{Xe@~C~Q*iYpd
zD%@XqfRI}VHp@X(99(rn?2sx>tzu*qhgNYIeLzCWj}tk(iX#%qks?P`F-+v>M1G9O
zu|n=xnD+Q8hAVhNqH|&uCyAe&NKUC@gm|3fv_w9xictw4UB&6*V-m?3Rh%h)mhf!h
zSRuER%=(-v&Q)-{@S-Xvh%jnm73YbcpGYpKVv_iULOuxQ9SSusuHuqJXR^qpRa_==
zxo}Dn+s@qda#a;`)V5bwaZMFdtGKp`d#kvw>dwrstK$8ZZe^$Dv?{Kzx*^Q#29X=9
zxJhJsBEMPW7U8W`+$M5+5_^Zpox;0>cUN(b2=`_*dw&(ndt){|Q^Rlu>%yIC6*EO1
z6wVSpBxLNvRXlN|QyZ;Qtbuw=_GlH4aj^8p<BYB1$to6VqTpcU@Oi3=xmC=o;%WL%
z4I^uKri%F-S)8t!Zxzo~@j?|ZR`Gll>47fEF=x6KU>4i9$4gZ#W{Y)k+vb<6ZVFl;
zTqs<`(t1wFRJ;#;wTjoOIJt&XYFJvuvMP?OVRl!%Ud0<4%ZJt6#In4Kl~ue|#hX>E
z(7=pu(s_seb``6t*t&*>HM~>B>MDM&;+HDcRPk;V>#O*>iuc$}ReV-;Ytsk9kE&Q(
z#fRb)&g9H5{z(;|ZYEz>1+Q3v_<0pyaMnsveI@dr&Nm8vSH<_Sf^dT@#6~t&@uP%4
zC<_W%fS)9ZOY&<Kzf}=bQL5s1P90VJ%jvy}KVyUZ=Z{tVmGC&pKbs}bRFUJ9B1u*l
z=UWgjCiRMi<ti#wpa!cUltN9&YF61tyfdmI+RR9*2Cs%KYS^*{zlL-T^=htV;$p-$
zW8A8S`ig2Gq%f9KnWT|~9c$RGhQ>8CsiA2N+tkpyhBh@ctD$)fEu|A1Z?PGtq*cu|
z8tt@A<n2Y;)i&j_Z4DhHi3>*TR72+)cB^4v4P9#JT0@^2`qr?04c%(kp@!Zybg!XD
z4Lxh<wOLx`@?Y)9cU06)HSDZ1urP56iHz;1Sn~cg>{7$7(qVG8Bx46`W_I@)_Nd{2
z8V;;s&l(2RuwM;BYZzR^UN!7f!@e~Pk^bJBrRu8e;(m#3()j+HDeTw;2Pw!h93paX
z&5cdwerO_R5*}szuZF{GIHHCh_&zFEr4dNA!d83)pxd`$!lQ-92#>AdIFaLp!-XdZ
zPZXXcoXdyuoL;oq*t$1H)ZCL$7T~lRM%6I6hD&Q0UBl@$jIUur4P$CJqlR;8IJf4G
zyU%2;rGFL^)-bl__Q|}))$r{6O`N2Sp7p<{^H|<SO|0RPn%jq*M^oCUoL|EQHMilJ
zBqX`8hKmw@u?X+qxgp^!bXg6T*Kkb@Q)`$~!xb`hHFH;MUrEo@p7|<z$N={^;7g^t
zwub9!xLL~6)X2PZXR}{VALHa-!;LlERC7nxyeOG2dCUW8-dc0#6}Q!JdkuHgaHmRj
ze9G=(t!wzJhQDjLr-plL__c=LYT$bs_to%o4Zm=7a3QE+Mhy?tFtdgSYgkyrq8et^
z@K6m;*6@_9JzT@%Nv&sd7ESn^8XgsYOvnd_Y@#Q``J+7Yx#G{)@InpqYIwSaIZd7X
z8Oi4h8GN>e=fwG%3WG0-FA%;Yd|55Sr~&$%EXiU@YFJyt$2BZrr*p=xVRa3!N&k%+
zme<_b=F%FLNx~$rOG3iy%^KcL<SS}eneewbd{l;2@`2-9yYj42?1#d46V3N(cwhVj
zVVsJ}A1TN);ZJJ#w1)LHd@aek8a`t$(@}K?LCr7NtvY=r|FVX!q;`XHr{tR&Hq`K)
zgx@A5|6W1H{#3(8@gEY&k2SZ;WmH_|m$b@r8RZ81_Zt4-%)A5s<UFZy!LdL&-G+x7
z|J3j=JKAinSzQeoPGu3gNA6&X+Y;V?WoyXQ+`rt)*HEaTSVK@lwT2qU9q%HA6=AvN
zUjB>^OhWdK=Xg{DA~cQY|FFnOcr_47Meri{5z-NVp1^ryQ|uNZTMA<%G+TeO;MU>|
zBUj%>5i8{qHi=x0l#o-uS%l_NXs_57(WbJsRIpXV{S{{bm$0pngvr|_Ja*=7BmTc{
zr_(XQb|Rf3bcy)Rh7)#HjwH;K`r9XIX{QH`_rV#BvFrBe8KGCiqY3nmaGTlfW;;ea
zw87o5dtf_9{D0Z_Bf_5%`bOv%;jsvhN7yC8t`Q%k@<A2)M|@|7r+GLb;)aLw01l2g
zLt^)c2YuKl!oCsqj4&v|-m3E82zy1G1Kq{4@qU4LlrEA_yW?T^Y!O2v91!6^>2%X6
z;{M_d+zq}<$m^iU-CvL#8sV@AM@KkjQxuMfaAbtT72L2X3pDEini>{?Mq&%h>)43@
zLKnwJP9DdS#IYnNMmR~qG3=uVr$ju{!>EY=ly;NOsY*r5BPIDz6&W4jbOmWJE___(
zGa~*94`)SOGC22QoOGBAuV!Pg*9T7doCxPet`S)5@lu!|jO)UJogeW56RwMJL4-*W
ze_)7<B20;Jh14#NFge1d;+LqVG)1$QMck=^Ek+ByRsAk}|I;-fpG-MnTuzd!BfOQg
z&(z4>({X{D7UB8`_eYo!;f4q|M!Xrstr2dDcue6+dvk=A-JKoQh5bt-%>A|qw@0`q
z!o3``5$=p|7hOx)(JVVX?tPv@GhsXTu+=rieM!f$b03JfwV-{>j_{zGdRByoWbK)h
z%a{6bro=}gKA**-swS%wM^R4xM1&_Jyclt=z*7<3BkHA0=SG+p;b|F}AMviA-_mym
z<A!=p{P~DqUE9<|aVya>ua_e%h_EWcI}z_JuqeU`sV$DUA>o|@zc7p?5f^<djj&8n
zuL+r!C1>?xYxH^M$cysj5uY8q*#9zOORjW1!l!Ib?I<+@V^>F56LERPR}tQg@Lq(E
zBfdc8bl#8n|G4p?I9ur>5z5!fGEWid0L<dk2<swz7U6Tr*+DcLmyk~Qh3dFLn(HHc
z9r5WNHb(d+;(nN3f$t))FmYYj<Gh#!uOSiNVZe_Oeu{YfxM`Tj)%is_<i9FM_Wo~@
z{H|bZ>aPfYb0&ceg#8oo2$VxRY73*~x(HDOz%mgZZSW+YXAwM9L^(o1c8U=K6^U8U
z;dwC?c_l&^p&Fs4Ix?fnlc?vr<BFY}n!!@Atzive9?XYr3EK*mhOw=vP)}tT)ZJBi
z3mBb~<D$NVjBNm;oP^4p4I053!<xfdz?#6C!nT1mgT;OoYf|~Y25bpy1#1m!17q*7
z%+xtNDP%lxwS%>XZ42uF>jCQt>!{qjz`DY=gLQ&+hQ(=#w9ls7o)W2bhYgm&IQLkg
z7i<SuA6Q@J3)@keI|=CzEN!g3Gpvgmp&x7)*sietNqu8GZ0Z4tgypAi?+)7ob~<c~
z8gNh69d<Bm5Q_oZ3pNC{FKj>9-pY=p-A9^nj&!G?u>D~Nzz&oGGvbu8dEwc5hrkYn
z4TqfoJB(_uqgV{s;jklM-FxB4q(Rs(v=DpX(XeA+$HI=2W!mJ-!vgT)c%j<yY!G$j
ziLjGkBVeb(PL}d1Lh4hK`kbsr!cK#Yf{jjEfO2-(TF&apio@K`fL#Q;7<MM?EZEtw
zv9NPt<7IH1%6X3PyB^MR+^`d1=fTdG&O{hjt_^(h%WBG#*+<lz1iMfQ6f$@TY%**b
z?0VRxu*>MHu&bqTIqVA9m9QylYL<#V9A^~gc#R4$6?Ux%qo~97Azr84sec3PM%b;e
z+h8}rro(QA-IC}t39rq&>2}y1usdOQNrxH5HrsZ`%<fK^l6ztI!N!@LV|G7m28W(m
zeX|E(Ghv^>K8HOBn+1CrwgC1J%MW`J_7rS3>=D)Oao8N#qp-&mq}jL_>@4OO7wn0o
zq2|Ko!JdOX4|^K+3~WB^*`x<!eOln;5SNhr1=x$Qml7|Hrx(hpun@Kg_BL!4Y%%N=
z*z2%2l-Cm2Yp|uTR~4jX-q^BWOhsHKYrLae4to=}0=81K#D5L=mQt~yIHq=%i@pO}
z4f_!G5o`_YUD*55VM*Ro3p0y&Vf`SHb6c_&_A%@e*rzbg?eyEY<Z&@L+}6RCaf{B)
zzb3aoV1L5Cgnb2D5BnPS1MElGH?VJE8(`llFP4*K<G}nL#-eUye{}=P$uiJB$xpDK
zVZXwDgZ-lNFc+p;>-G#0(~|$LW@nk1>M!>{7_H(S1=~OFe_L7JeV)PUIPJR+c3Lj+
zG$x!VgCwjt(-vU?tmIzmbnC@`(-%4G8xNMMI|?$-%r}dq26KNb1NBqp64D?qmXJ2n
zX7$XrFxyg5ad$9wiqcYnyn)%)W`oW4GHYnoNSZsFH8yKvwyjwQv!)WZG;3wHjaf6Z
z=H}+=7Lsq^5tCZ16>pBr+L*O7Yj4)pHmyGKTEM1bj`W$hkR8poGwW{F!>p58XS1$m
z+naSUi#>sAY*kJgaXGswFK)EBc=a^vW!9S;ewLiK04fX{fy(p&>hC0F){dN#K4yK*
z`kC!ww!7ILX1kj8H``5WoO!s786eIoFyDdVB*!Yar-Flov>8vHL(KM;<aD!r%=R@q
z#_U+L{mh1%9mXiL{ml+AJJ{?HX&xv%$Sf{o+#oba`Jsv$uEHN~c7)kcX2T>rQVkM2
z35&-X9j&%y`%|BVJdOs<Mwp#yHr(t4vy;qDrUf}C6P{>xv@}mqLoo>(jSfsQQdx{L
z8!d7gyF<QB1#%)+fiY%hDE3U@*}}6DQ)3lmEokjr@hgQ4jyIbiKGEzvv-8a^Fq>?4
zso5m63(YPvyIAGy*2|3o7MPW~M3(8#Q&ri^%q};ZVs=HWshNjrRAv?=%=#*`tIe)S
z^1aDys@b(>*GY1NaGKfmY|><l#k4m{P7CDI#cvkgBD_@?XK{zwK)vtrh}oTHcbVNS
z$pdCHMeZ@XH_^F|tAO|n;ST!c<AdU}5*_}~^&#<xg|pc{dUivcWA>=oV~J*b0Qk6q
zPnbO^5<e)JXZEyNDrH{E_}a`fTyaL>*a4Vt_6iRo%$_rQ-s}alkIg<Yd(rGAv!!Os
z%y?q|ve|1Q3(OXpEfQyaUo~4y3ua3sncK!4@AH6&NXalg@g#rU><zOuX78FUH+$3U
z9qBV_g~(fGE6w7cx-iw-W~(IUFF~k732m;Hgl6C4sNrs3!S{vyQP>9}ADZ#8GLx)T
zkc9f5nyur!XZDBLXJ((9eW%zj%)S(%wXa0j6yKPwSIL?7YYF-K)3+icxF<0?GkF{5
zd$WyZKbZY!_LJGKEWg>$W-RJ2vcLz#Jmg_2nj%upYu+&YY4(>{!K`TZx7j~tdD;J$
zhd*Xnvz(03;P>u#xDHuDHc0#f2b!HBn}J!$tZY_Ma_X=hm=~|mtg237Nk)v|U3^rN
zP9$`*f68?$FWU4|mQGpkl<~}@HTVB1Yn^glu|>+ZOj%>T0+h0?Q`RtL^%ZO&q<m++
zIo2p;%@RrDlr<4=D%?iM*KVoILD4*AEhHgtnX*>myK&xbg*GW`o3eJ2P`Qgpd*QYz
z>mbrGiQP`5ld!XpKOkkQuHxILteXfW-BZ>h;XPB<OMC|*yM_uori_QZJEd&rl=Vqj
z-<0j0vVBt4FJ-%=Y<I?{+;H19<p%X`!u}~6AhJ@<N%_E(kvqa)ekp1%;UM8)Szy!<
zkyvxzl<k+Y15<X8bcUvEe;J8~HkA*MJXSt9W&car;VC;r!b64BIZPx@a)kKNDLYc+
zs6=O&%(A18QI9j#u_-%FJTCw6l%0^GYuQODTbQy%DLXl3r=;w`l+8-nh?Je0vh!1R
zLCQvQ_Gpa$1KqJ3k1kJ3*{GC_PTA>+FP)RJG2&+k&lH}Ova?0Trfi%D3&S!GRqK(T
zo3inePe@`XvZ2Idho8iP9qC?Wzff-ZrcM_xO4-FJyCh|k*(~m-B6f4iE=}2G3SOSF
zt5e3q*eMELA*9-sDZ5IXQ4I3BCS_Aoc5TY8OWCxP-I!=zFLHy7#F~6lh2*A0a*Gu1
z<RO2`ZcS3%ma^Lueuv0vrHZq=TatT(_X_V5-Y=XXd_Xu;$Q&O^*~2M&JY`R$jKB2c
z+sLz7YmVHMeXEy$=A`UVmY*;G3rXe=$CD|0iY>qoCZvpON`}jdx{QN*Udo<kH>nMu
zN!k2_Kbx}W68^l%3&IzLFQx3|BzA!a=ZeMbj+CuQ*}ExQlCoD*_Ik?RNZD&C?hN6z
z$I_I|(G!+s>bS34x>q8Xr|f_(cr)cD>gjs!!x><O^HO^&W#n(u&D!G~@m1n<HeRb!
zMm(em-b>m0Dcg{;?^3qwF8F{GSIRz4*@r3^SEY|QUieds6h2AWSRJ;1!!gT)AmO@{
zeI`Q5=OSOE>`M`jj;~U-K8gKWgNSP1sv>-K?R7p79Ek5zmQ5L7TxWSUrtF85{V2_!
zQuas6{!H1=Df>l|UsLvb%J@9)Hw8cH=pNxQ7yg`q_*csQPT4=Kc%x0T$G<77OIe2F
zE>WW<ABXX3%^P05C{>`Vdu}?SQx#Jdq^y*(a>^<xTTFlUEKFIIqr<aHJmcGmwUk}x
z*+rg3DfWu-mLTO>SI@Th%=66mtet1=JxhC5&$HH^weeilw(zX6XH7iY(z9zcQnvEk
zK&vloAl%xsh9ZrG{0s;cntFB)r(z}9#&aFPtC?rb#ajqlCh}IE@z9=c%<?S)`U5?-
zEpybb!ngITgJ&H*+m5y93HCb|V!p}4xBdBhfli+DA2vc~nd;&h&kvbVH_y6zwxee|
zdDg?To}TscYzL3G@b2Ay4yeUDIJMrMu}Pn5>MXS3LgrZ?&jxt5n`eDJo8Hd-&SG98
z^iw-?j@rd@%jK@Z{;YKex6Tgqj6c6U%d=}cV|UM5@)aP@_VjF!XM;UE%Cljf?d91J
zmGB_X_V#Qa&-Q0)^Z!34EihDMKhNSj1@74Sa`FKZzRh>)Ja_BF*CP*R3rl#YXGeH;
zq-TdQ$nN8S;xEm89In_)==SYg1$iyx=3m0$!efNTdUhNgKsv`OIXP#86FfW7vy<2z
zo{jQsv}dPyHbS|NWZUkHQ<a=sVwRBl#M3;tNgz4hvoW5XDTVL#aFA+ec*ZD}!F5Vw
zH*n5oM{vA*HcsRm;km-`o=xy<qG#uMHc686J>x^V3+Ryg1O)wxGXqEB+==e}QVRdk
zgX7^E-4lno4+~88>{1o!GS4peY>H=Bcy<*F?-_rxoi_Kn_?4cUHko{>=iYXpoDbKg
zvIjl8&a-KrUGLcq?8^Rlz;{oM`0ME#J-f*>x=kw|)0Ldn=fp)LD;wh$&u*o6dBy@f
z=vzM@w|jPnXDryAp1tbXYo6WZ+1;Mq<JrBQz3ACX^k>iR_v|^(p7(5qXME}C0ncWt
zvaIQY8gXO!7}v8|^1z3L1KHZ1&5nIiI7j%X@G&8E9``owM(B`FdiIn&lYFjc^TeM{
zB+rP<7d|WG?<rnT8?t9twL?*}(951JU<*)A*X@HfDJ=ACk!R!82t)J+Bi~u&OQcIY
zV|#K9;>5Vrvt^!r>e)KaUe}cJk@GRUA^Xccd(*QOj8Z?YVwn^EmdM*w>+IZy*E^oA
zPGZ-1_HM%86M5gW4@5o`@<UQ_s<obd>=_rGPdF0}2MOh$xq)vd`gW3UUwHPVXPtfP
z;@elAt@o_HZw-7`g|9h_dhSN)8@1}Uo^9~#J2&T8AjwA0e(>yf&;Ic2M@i_Gzl!`M
z{8{*mke>-+zx*c7ohtdCp8e}tog{yG_O}S-|A@r*aT(9@3TBhooM-$j57i2i6cai3
z&n5A4BB^*5XT*N2dRF7)?-_hIGn;QIk#oj^m*?A73i`gKeXHlYCHR<u?zmtJ-&XSF
zPaz3^R?p<z&ur~mL*KUbZA@o0^7)X${d|w5;<#w+TNBE;3JA9mHWO0V+_x6Kwe+o(
zByAIUYv0-=+&%wIczfU7k}zQhNjmzQR+H^~>y&WgTI1XHz8&e?QNDHat-EjhX~_}3
zTdjKdwzu!5sh+;|@@)s-c&^K9fN#CUr}7rSH@@n*lW=EYAK&_l^z&^OkzIZ3FG9_F
zXS-KJiM#n0or-~p&E0+5!*}cQp29)G!NR?SLxjwoI{WyxuW$RQ76<xvkjPNq_7^!o
z_-gW&0vCEN83(gQz8$Kl!-R(uMM{Y#7q~f^ow$Sz^W6@RKdCrc{d<gW$NF}hZ^!#K
z+_w{a<7SfIO5(0&Ykd@pA4uWn0$8?_eLKasyM4RIw-LUb>f4>Z-R0Xz-=1xZF~0HJ
z2&bu4NBPFLXhsW97c$7Zsxy2$(|0T8SyCG-ezxxhI~$zcF^)y@?Oer<_w91urua6&
zw~4-;=iB+dUCd7O?NUAh@a-azNxoeuLa(Eo7?YS!W>gYO`DF=b>=nLE_3c_ouJr9H
zHj8i9D9DmfImYXJo95dszTN8E^}gNU+jQyND7;Cyd5*MvGu={!A-_!ucldU@NL;EI
zFZa=)50<n9XQ6w2ZprKc-)5@r_X}tEZdGEtaVT+!u@m_@nz1e2`|Yzh9dT6t<-U>f
zuy3<{<4YiqaM1ad^=*!CkNWnQZ;$)7+_yJ<d&0LTeOuz&tG+$u+g#tC@om0ui`uv!
z!OipSY2Qj(lwZ{g-p{hMeCyk{4TJEUd}%+vFYUWChZlT%kuIw5alItT%fbb|EtGtb
zaIr93-z~xH@vi*Ymv2jbTgL8YxAIAAV;tNW{9zhDOwnZzyx|-A^Vzz)`C7rb#kZe*
z`^C4ne0$rscYIszyJh08lzaPSmG5?g^vN~8@neiX`8=R@Z%n;Q@Ad6{-#+l|L*G8<
zWbWHXnk7C>W{<VLeJuXTe-ce5>wNnxk#O_*B`1I1zLR9VZ(p-7#5wbD>++2_)yOv_
za?VKK`?gWRAA~<9GZmwlaGZWN{;O}l`S!bSfA}_<XJwxItt&q-!<*kfInvqJdZp?w
zHQ?XA{Uh?PuujOA;n}J=&OE*qeGB9*1+`D9r+dqeW=p=&Pxv#gvQ{pBs;I(osvE1&
zx2o^%fNDaLh>f2%OFJP4BQYiJrOi)UI&Jk7q`ZFGwh-TvQPSK>LGlJ^+giL~+Pcwi
z#TyA3<kduS8flic=4tD9sO@s7wMbh_@_x2UKWmk?)@ke8$@+D&Hfd{{w*6b#0j;cE
z+S;e>tA@6|p>3PC4ryDNwztyOF>TwWZBg15r>#@kI;ZWywDU}MN|&^o=Le<T($F<+
z+l!EQ6X`DOk+z;9y@Wdmd#7#3wC$9(ozu2!+WJe#j_$*PiT4xkl6GrQ>;NPKB-~xN
zTiOOHmf2B(v3p3);GQBB4o=%%X&a(KvYcn7ZSS=0qu{>6VXR2nhOz||JVJOt+71*s
zh;~Gn_TZSL?NE`!gv^Vp!{OpLYD^s|ew2`-n7<=FI&H_K?bx&(C*dh+J6_}j;cy{8
zf5$9%otU<hBw55tvCSnMA<3zUd}P{A6Q};Dw2c-&J&}wNIYW46+NO`(Wch4K#tO%!
z?VPloo3`<3n~=7v(sp&)?onP7({^6k&QIF~X}d6O7p3iD$(h$AHn>j6S>=n<cDWk)
z5*eH<q|T*jyG)$l;$Y)YGDX2F(src?(^7a%+NP%Mj<nsGwrkUNUD|G^KfH!%G|T-=
z+HOqS_2LXtev{JPBAhO~S=d`y+$#PdSAnz<X`h66SK97Q+aq%~wZJ`TyI*ql%e`qg
z$KEGoA2F91%I<-*%}nymy^2|Bdx&ktoqyV%Oxsi9vxScc=cMgX5$Zgaw#UVv5XPV2
za0`lp&kN@XpHAB|BJ+jRc{Xj&C7l1WjFJ}=d{Ow4@a42E5Lqas4zqYgy}$`)g@)vk
zw7n|wnsBL*Lv@+R>%uqEwmgx)nYMWCSmNQ+Hh4R2tI~E;Lz~{v-bvePc1nHQslKgA
z+q-Fdqn<6VXYZx${j`m&XQ$P(57^+GOzK&idiD_qW7;;P?Yp#noVHKW_G#MIamMK7
zKB2~6kMft%pK+`;!{=%HBJEDLr|L&cypj2m-NeJ6w5?Cu*XpBhgfoY1>bq|h<bwWv
z+BT-`$F%*FwjWrGX6{8|re*oLk@z`nzff}^{^oSYJA$;^AaO^{w)#zt_Pg*8;h$;y
zOJrTjH8>sSpR`+@|4mz6+A?gJwB^zkrmdQ`yxKVs7SdLvj(%wvV<~NAMOB0p()o$C
zv_)yFU(ZdC45FUZ6SsPnN`ziL^Xs{M|39+c1bmC>e;<GDmS>x1oq3jd=H0&Un@Xuv
zl!`v0MF}OMlte;E`y#RwQA8=UkSM#dw4jJAMTqRlt|(dh-{+pjukZE0uDR~(KCkmS
zud|;sbLPw$-&DnbN2CxH#sX#9vBF4%kqjdhMqY9X(_v)7$cB%miV|CPc+260kqd*w
zPlJE^QBc5QAos#33*(e9x`n~VnMz^Q4x>)k+`3l|qe|F}_Ep2C`}3+6M)iQ#2%~1e
zYl-kwkh)=<q>r*Ygi%jM>W9%FY-*%o7|lh<8;LXyqe&oXD$-2IBVMV~B8=n0Xc<PU
zFj|LsS8RmGOQF56O&HHs3AGL5`|6<+!lqI2Y8Plyc?f_06-Gy{|A)~jj0wE?7j_k%
z#H@*Q5%MXL3O?^1MvpKChH*|9r-sd~RNpXMgicd7IeqtJ8HO>ht$DCLJq%(m;Tgg+
z!{{y2N605QD)bBEtgsn*`iC(<gnZ<f(Afd!v+B8wj>rCl%@P?mqA^K>RE7*bSf+R%
zdqEf%hVgJ1%fc8M#zkR_2xDXz7l$z{jNxHi66T7rX@o=uWU~4B7{A=-t=*+z^GaoD
z7!QUqDvULm&}Cta4&!n)iRod?ph6g9<h(MBYs0uMjInZFC8XJ_!)A^2nlQ#mlC5A4
z<)HlfFeZjEDU9)w-w=ks4SqrxJcgYLlLHIW!k7~9sUp<uqc^!T!?-bw2PB*o#!X?|
z6UMz^+$;$zh<0YvvYfYuaR;kAjN8JvJ&ZXLQem!$A3N8g=gE0j7<V5dpD(^3NF>!5
zaA6qtNxmqI``J&+am%YY6qgtIVtG-Ge91AUxE#uXj<eoFs-qG7@+*uLVLZe3$zB%5
zBVnux<FPOvrM#S3{^EFef?gsVDTG#YTn(Aq$j8;Xo)E4Pt`)N1JsHMR;!g`-(E{vq
zVLTtk`Y>KpVqOTF7i#O&VEBrS7gO?*oF;jSkwfB!FgAt}iy$7srZ6^#@l_aKhw*9{
zuZ8h82lFsq4`T~c6~;EEIUU-{#?L!{W<h;~&)^&!1~{R&*hh3a5Qoq!c>5j3yJ37D
z#uqHT@}bHw!}5D!ydTDnFm@{C9}7PaGG8Bx>=J$?+^kiaPr}$O=chtyeip_aaSk$c
za?Ix`MqjdTUSwi9#POfaEQ}w+_$iFNVSE?H4{XnRl-S21f*nND!Lu6ec>~YRRk=av
z=P-T=;}8eTu(?0y0P<@X^(%yaQ@OFO_lI#HsQ2H)_(S~QF}2S}fKEIGE{wmzW|j5t
zFv>@aoqxjkH;f}R8!?-E%0<i|yl+v6hs={O3;a~!k~ZcPf(j8-jF{(?u&{bAL>`GC
z8aQdqiXaieh6pxBkc=P|LF)*PXG9TXBFIKyN5C__257!x$7kU<5#%DsNAR@jtDpq1
ztm=vsg>D3;2t4t!2&zU<O}vt@vapJf_t;E!^$2RoSwl!k&4{^6_kC+iSSMoMEYPc7
z1ob0m5HV9p%LrOU&@f^Kz($f#*f@eF0dFeOOxRr5B7)-r-*L*qfntak1Gb5vZ3K%V
zSRBC#5wwe7XapBU&_03=5%Wafiz9yo9V0k3g3}`C6hY?*R&l>p1Sdssas+?4rq*~3
z;+Rhb?hF?)d8a6m-GshckBAxZsMC`fjNq&Y`bThj<mjB(N2HhVj0nyY=^gm4Ef?w=
z@P3h_Yl8zMIZt?Y;5$&{9G0F41G16u8Wh1`NzRX8NCX!I`WHsPuW_ls<}tBG=;8>5
zMQ}|7<02T&V&TS~2u4S6i8!4jL`DiP6^;`6i(Qwi?yh7*<zuq=7?l7=QI2n8Be+UV
z7XH<$ltb5tu8rV2HPJgGxITjM5zLO5sgTzV5lk1K5J)D9OcG9xV2a38;WQx+Yh}P0
z5zLhHM&YbuylxV|nRQXqX!5!xf?FlLO?Z0*b0V0_<kblElC?V`<~1mtME0q9O6^?{
z+#SLE2o}gm`9hI<g!e|UUdoi;7s3634uuayz=KJbM6fi19$M?;82cdG7*FGj;GqZ}
zR@E#MJ}O);Tp?U3d_=gYcW6}vk43Or&NV_-<>L`N5%4bjRy~3z<$Q|0IFS1a3-}e7
zs)-%#xd@(*-~~C?Mew4?dSPYFm@kRHEPO@C6O0*fQv{n?<8hRa<JAaWW50;uU<|LT
z6a5r3J(s!L!m%ZSHzIg5f^Dqp7{<r&Rs?TH@JSTAqu9<tfITaUlcS~qyc@x<5&Rax
zdl9@J!Hx)aMzDwNCxQ>y1tRdzsooVqPrl)em_^`^BKVlr*sr<r6ER!gd6DxX`HY>N
zTlDLOh*bU}g1r%Z7r~bid=<gh^8Hrr^BeKjdOOB<XY9`VBKSUnpCahT#eez!7{Tt~
z<nW1g__@K6pXK|DkWOmukKh2u#wffferK^nP$7znQ5=lm5EsItX0zs>O8?&x{1d@p
z#r~I&!5QzritC7S=ck-Uc{A}`g=UW4=3PV-<)bEF+@VSgM-ho48-*=lGzu$<L=>^8
zNqJmIHS%N>YuM|hmJ+9sl8huIRCA)pMNw3!e3X0kjuhm(&U{jFG)9+M({bp;vM4G=
z(IkqdQB;niN))xDs1rriD5^zKGit`|>atKnHqTX>{Z!SG+?Ui9uOCH&DC&u~FPYpm
zl!Zo0iC-^`#W^N3J<XzM9!1+IPKcsK6vrvx@lmvlnwHR7&Q{`7ro{h-tIaVb!xCs0
z#fedLjG{f0&CQd_9p%hjC&k`bcKkZ>Q`IGku2I|>#k?p^iK1H+7e_HHitbVLh~lg$
z`YXt(QT#88)5TAd*`87SRM*sIFIhe_ir!J2A@1AnqqOx?kiOz9Kqkg7r2$c#9mV-k
z42fc36u<JGUz+ELpDSdcQ9elW!9qGI<aL3ZL!-D*G5Y0s(J`elJc>(LTv1GpVnh@p
zqZk{-RZ(23fTN?hJc?1QYt9iuCXD<F)*6@nr87pHaZ$3lj;X<`qqruD>!TPS#W=-v
zt<veYf$PL+hl#vFz7u6<f;ff$<-I?bfTFlDidj)ijbd69)1@<0d6^+j9qRifc~cZO
zM{#=;bE257)ZWT5hl9U3OO+|VO%f8y=PKSiWbHAf+%KQIqPRPXr=xf#iuqA2h+;()
zE2Fq4ihHA29K{1sEL2!#_WmgD6ZhN6BE{uzJ6|ICLs2{&#ZtxcppdaMG0T*a<!U7U
z*m6Yegl*uFC?1PqwKDi<6su&%Zx4@0@q~;#$?hzLwQ~Ap>zBh*$E4@kD4vVr^(eMP
z@q837MDa=#8=_dJP%lYyebkJuFAA9>@|Pv&E_ymQij!=PVv}O@<9b!S>@^{M+1Iv4
z@kSKyN3lae-i+dH4){@QV-fKb2q87e-;tg7r1q{jh5yz2&L}>J;v@NfsC4d9DfzYI
z_ok2K%foMJ@KfoqNL$44SrmKdjN*$Z(lKOW_%e#GqWCw8BT;-E#W!qzQT!Igw`}<w
z=cD*BioH>M7sWnJN#83jnte&v?>quRb^429`B|JoR-#{<`=dAz#UT#z45-pLsI>hd
z&Q$$33LTc@uPFYG!Y{W=YK12A{$FwuYKCIq*Cyc@A~7>Gm5ZSQGsROtW2O)Ku~(F&
za=j4c(HLSeQ%%Vj;v!beypr=<V?vz1l%!(+ua>hh*t8!*wHTZjaxr)cn^!Ewm>I(h
zlKAtHD@jSnMAElRzLjFA97F2~CKpv=raVcA)nlj;LnG<ejG<Nx^<t<WLv7iw6EpJ^
z`v|YP;>;Q)4P>*SLa~H7^|Qu#HIAVP1IF+Y$A8{(utwBVnu}9N$#F5XjG+}16T|5-
z^ors57}~^eQVb`@%wW|vhW0UZh~Wg;Zzo*4*v$JU#?0)-t5XaeV`d)l>#noX<KKa>
z47<c|sw7=wI3<Q|3e`QvO-<%UAq?I_oP?6oq}eluioC57Qb>MA3}?nLoMjb5?-=^T
zFgS+uW9Z9rh+$w1=frSU4Ac4490T_h^%tj2O3s#qgz|G`|GXFm#c;pIF27fHQ0wKL
z*pL{8#&A&#7fAC$A?3`-#mf6ImAv1l{IDZp7#TBD%vCX5s=SPj;qn+piC-q{r`%nk
zlD|?VFh-oYV=au8goFvcI)-av7^k?dQ|#A@)BfjXo1E#nH^eZ3JyfA43TMPHlT{!-
zSvW;FRX9yJUFetjjWNuMVM`2KW4I}Xn`3w?hNokg9m6d#+#AEf7;cT34+iHc)NL``
z9>bg%=EiV`B>!y{V5;tvCJFWLis9}U=EuzA_5$9=a;Pt79=GoiC!yp%7JdxNV^|?m
zi(*(3!_pWQ$FPh~0YVl9`Gc%?ZWdw_;^rT53MpA82?^yZV|XNnCt_F=!=oy(RWUrq
z1c<Lz`9JPQq*`E^)A(BXJ}J51R{fHp*E2D^5W_loJu7@JhUfjd(Enf7t43aq;guL(
z6n{zRw+fcSh8Q-*usMc}irw$&uS(~28GOyxSDpI3lA+#+VP^~<#PDVe+obT8@Vyw`
zj$wNY@2D@oE1~~`LjS*n@2mOk5Wc+F918lObZGOF7<P$&B>Y(Dx2WAQd@AQ>M3Fr)
zv+?Pzk~t9d3rQwVG(G(*rTJ^&H^Og)dt>-cWM2$Fh<vY5Y#R*qqa=Rrq8x<T4LP>(
z21fXskk0)v91#Cq=&!sT66bR$k9++yhQl%Z6~o^#gyLoo&p+%S+A{iY3_LT67o$5O
zAxBXv@Uug1>ETr&j*4+KjH6K;Tk3~+NL@INNZdSjMdRkRh!saHZWfN>LY^edD-lOB
zj#L~S&8N^u3L<G?CXTF#9r!vTxj6D7T@|Dlhbw0(j<Pr^iF<J@kS}dkj-!TzRfJWA
z)r8fB)M4QeYsOJ4kkpQ&P8@aPcvxQb;;0`7^{LrFI)0F31G6K7J7>7c-87D7ah#XH
zpah!7(ISrBaeNxbadEVaV^tiF#nCE`)^W^;V<wB2*5Wunjv;ZhjpKwkKCWq2gxbZ?
zK5pLl4B?%B94E%nCyu_1lsfuvU@wtQadeL3q&QBFqYH~v!me?g5=W0XPK~2mpx-@i
zHn90&^OhkzfbO)wx2MQjSw1}up0(?1o)O2H^6D+@+rh~D#c>w%C`o@Ih1)uY28f>>
zNCw7nPQcG);yajC3u+FMaBv{GAdU;;n9lUq4h>~J^3XQ54U&uExL6YMVIsqYm&7q5
zkdG9(R5&V*%L4gmkpp}Rh+|CL?ESb>czqmWMJTyS<mx!CiDR7jwN!2pq8G30;<!S5
zd>o^D8{rMonGnasz`~?BCI@^<98&{6O@!TqRrw{~0>?2cj=SQxTa9NLH~+KBxa1PY
z>^NU5;MO?ql!U_D;<!DIIlRi5JsW)CIG5$1{Tp=N!PHhT@_Ewtb>_3F$IVNY#c{J#
z%Q63+xY-tRuaIP69QOtM{x}wibA^gt55%z~j-_$4LyztGVUY*pct~WkPG6*aSscsb
zSP{ocWr31M<9H<Ce9=Y;cN?yb<MBA2kK=_no`_>j9BbovGLG(*OsnQcSX`ZZN&~`k
zw5FF7Piv5QCXQ!CIG%7Md8>^vxGs+Mal9GFwm4qoz`}doI9^ubnMZ2Aq%^-0#|EWj
zW00OracmCwt0J!nUl(rSTi`f$aS9MJB5s?1i$e#@Iy2MRiwhcYY*#ycCysYT-V=T(
zd|$XjxRWI>!eMP!F|<qkBjLxwPlWWM!e?>piKB{zsun(v<BK?cjpMgCzKr9mIDTQ7
zmkWK(p4-MK^Bo7%_Dvk+_#s#vdquvBW1q<Paq|{(eXr0Da{ef!=1+0_9LH<CE$7{!
zwhv7zh4#mBfCHn2$`*c);}0e2{Km%qL5<88YE$%~IR1>|Fb60;u5wJaa8o8k{&yVz
z#PM$&N8)Bfaybj-EtrpZE#sultc+Q!uVA5~1<OLhLOAe>i$p9$EyOJNntmwa&wMD5
zkVfcaTsyfIq#zj!SrOYp(Sj@PSjdS`Id7q0nWXxOq@-lQvrr}lU&!cqQHO1h7k5AM
z6;Cw_)h(QmK)VELSg2`XlZDNe*@RikLSxH({!rU8n<eU4X11y;B&jD--$DbChQdZd
zep5gNHpnIxnp$XPnQ5XqjaV2Z-a>esu%(4oOu2>Q>11#Vr(0;tBw6TWp|f<_S?C}_
zJMBf7_!BL36yMy|oIORalPsKUp@)T2CGTS46bs!fbhXUaB5cgO52spp%j}LINy<rb
znuVSULNz*h(Pl3TXIMDT!XOK0TIg+|KMT`B9}9ggoF#o~(i&gy_G8u*aDI&tFUrrh
zFwnv|irTk%u7y2bi0k=}N^`J<^DSI#VVH#>vUZ_`p&}PpVA`s(6_xQ|7W22zi!2an
zXSjt+EQ|<ZAIhX|KYDKGNDJRd=d!@}9t)$zFSl@o$QTQ=MXt0k*1}a5uC_42!bAzL
zv2eY}I1ATWxQ=~O$>4BGGJwOWg&QpJY-CPen+KU}PO>oB!b}S{T9{&Cs)cD5rdya{
z8(%Jl*WuW1he#-yA>;G8zix177CV%Mn|axxugis!6+mPVs@)>BTP@sX;dTpiEZk+`
zZVNOr*8<1Gc}#<aJEis+M-t_l0~g0J?&Y3uVSy@zui*VOP<XGD7h1Sa<bDe)L>5_C
zY~cY5ODsGr34<)P@R0a}mf6|zPVl~lX<H`wa<)&NRj$!;rG-Z<JZfQ;g{Lh%BZbE-
zJYivth1C`wmxPJub-x<eTFcB(PfE^YbLx4Dt(0w>EB_Xrv+$CImn}SR;ROrprMAvj
zZfo*LHAc+@yeMHUey(C+gN2PsEt~GJpv_Q?5%D{MS1oL<AF7?eYZhL&u!T+wzgqas
z!W$OeWXqAMZ7g1qPlaz=*lC%$X1j%VEW9frZN6{eJyuF6bhG|Xv4f4=oWc<zeqiB4
z3%jKGiG|%3KC<w!oK*02Xn};t;GeNmaQwIMg@tbe`(KKDZQ(0frW&trB>XR;y@Abr
zBHvqPy8pq#j~0HCg!X@7>k5T_R#N?d6z-RAg#;=laDY>Qg+DADl<<g!Ll*v&J~eqA
zw(z%we=PhJq=Z607yl}VpAiZ}33HBv@k*e)i0?%VClE;>n}D4#BVkmS5XKUSCtxK^
zI{k|Zypjo|WF##$8p+7%`#K3!N}zHAxdieF6cVQV-2_S^MOmXJg`Om3LfWU~V4F}C
zIjbg6Es$3aVyVelK-^cZ7078V#wj3yx(U=vpnk$U$nfIdjv6G;Fo8x1yu?)<$s3E)
zw~3rhh0TP`6KE0m@&==&gbdh9!q&p$g>4dO8~E~>qJ07#66lsd_k@{-PE44`bM{T{
zTj(hLPQuQ@lY}P=y9m1qPZ9Etg6}<h&_V*e6F4<tp6r;x(-P>Z{Qgf!$>}1!5;#M|
z|0tOG>cdcc5yNjf66Rj9pYSXpo&7}y2+tM{Oql%@=ZK#xPPM@aoX^5cqJ9!X61afP
zAc;g07bY;2O(=;9NnDh`#R-f^U}OTr*i>qo4L>Zd;Yv@4Yj+6{J8*A60v#)vX}4Sw
zqY}6*fzb(Ep1_6#HYRXI0%H=mKY>LFvvhW40^<|7L40fiS0!+D0@uh%-|G?>m%z1h
za)E*pE>K(__>xaZU}6HdCom_0NeN7r*Ubq`NnmOMGZVNmfoT#>PhiIXwc}fxmB3Am
zLdK6>1DTz`EeYHj#C4l=7^AN_H-S46n4iD`Dcs2(5opd!;J;OryMq|-5xF;kg@NS0
zK;Ps@W)~;$fP~K^uq1({;;R#QFoA~>SdqX=NghsMSrC?qSuXxxjE~5<DuGA;ul%tf
zRgWj|guK=WpG;t_2uq`%7KNUY^XY_nq^0m#wtPvR7rrQbA%S%XtQYswPfcDgCGfI@
zuLvojkxdC~PT<o7K9lfO;kz9F6L>v=EeULu<Za;_!fnDgkExfpg7nko_5|LMf?pT!
zCGdU%I}+F_;YY#`gdYYLcFD=G4DxXTpCsU?aJS^XojnPBp1>~&{F=ZQl7E}P-UPlB
z|0=NXbpqc6oKLdfu_bezN0NOBd@u5YkY@iYoSzc-IS57JZwc&A;BOW30m%<0aEK((
z`Qw=U{wd*K2^<c5{pzOue-ijtLQ0OX118PEJ$^R-Lq3+4xPY8QIEhFS(Ioh-{gNX`
zc;m|NH8_UElIDvl4k_%;@ubNPzfnz6EeS7)vLw<;WRh@`C?%0iVk$Ri<;=Q@oityj
zJHnhWpEO@PQdp3)C|u6>Xw^fVdEZ;Xe2-a)oBxxjl0?;{+4RU;0;Z6E(y5j-n`&w$
z@y)PM^`v=>s*yB}u%?jrBxgD%wY8I|lQa)Fb%i8*+)#rg8YXc8hpZ$TCDAyE(~{_!
zM3W?%CUHs<-I8XSXr{#1(l<fPlW38|aY?jHqE!-IlV(C}oiw-5?UHCO=kdZeN%IWS
zmdWs)djHrV;3sl3v+giECebO0&MYO3;a!qADT$M%#+_i~MBmH*V6Zz2M=4ptDIjU4
z5|;m|BIeNABu-Caa1!Sy(JKiaFuSE(h?@e=;84t)aF#|Ay_4u8XJ3Wl@7nvZ9C!*)
z68%{?Nt`X;^O6`SIlazJ;v8{Wpp!u^mbF3BoRtm@Nt!RO`C%-d0r{xK%_l?YmBh74
zT$jYfNeoNk>Ljj7;;ym~51C=J8J@&Uj{ixFNMdBtJfK~g#8p1wE<};bk{BIGE*H5X
zi7_Hq2J*2<tY~O<O7kM&Drkn^kd_OLOQM!OLcBhS@kvZbVj^2k(riGzPzw&6cU<28
zC&A^u8<UvD+T<#C5>r^+D*tK18A(h}nrC@ltZQB~<>V453!hc9LDps`aZ3{On874&
zO@f;M`5h(i=x$@{;&{lvz$7szX`V*s3Q6t|xl>p_6S_MIR@S{qEG;u1lFv_?Rn`T<
zdxZVVhZZJrUlRATbI~RnC;MFzi|H!~h08^j2$u>U6h4&1!y?pK#!juRSt}%2DSSlu
zXcDWEcuf3>B-V(m7Cx?~$lz<`<Um2r>q$AEO5$k|N}ds6yCr{K{4ItJeAgwhK8Y8T
zcqxgOC45u(3itN21jIKau~B4`aI^4LA(yFNOPUvdG`^Lsj+4cT&>NDF^P<-_X;Oh}
zS;V*H+@8ccBJT>{6TUAC)Y*~5PDwrxewf5A5$4*@&L>IiPU7w?=4VZp|CFC2rSM4#
zpCz$}Mw0k~Ju8JiDdYPkZ+=p!n8H^<fB%{TR1)9Hxi^WQlK5HtJK;Xz_euO9@}rP;
zxGeBX62HpH<1;AvP5jR!_KO?{G=CTQLwHblNXP|&!y<nPY2j~?e}w-Ej|f94(@?2U
zP7#$Cav6=1a0-zWs!I|TW>c_Jh>6FAmXOK`kz@*~K$1=&6L8<4Bd41}E|BL%3Mmu=
z35UB<3SJ6jl2j2^5>^)arWj+@6sk!=&QLW{sF^~o6l$k%N($Xls3YHIDKt-^ZlGB&
zh59KpkkcPp8>Y}G@NJwzlYloB;f*Wpw-E0jJWkj$g;pZ;Z7p&<QKYT#1YtX2dm%Ob
zXR8xa=qO32K;Aiplf+LBBwbSI8gQnwyLeAw58<hS?`bJB4bk}jBso2h_YyfHg)>F`
zuf_YO&@Y82B{@sDMA%<AKzMcv15-FBg>zFFCCPay3`*f*@xj82gpBljks-nh*p@_w
z2EKmj`41q&BpjZ?C4ujV6h?|)D)f~vOJQ^hm#1(=3b#r=MmQ~n=_y>9!q^n9O5y4h
z#;0(Dysk;%T9I)=e!R?t@wzUB>m}jFZ(lM&&Pgdu6!CYfPEKJ;3cTx}4kc4l*rwn!
zq(k9NA~RFCF_6p>VS;ZKnJv5}@MU$}mcs3F&PicG3ipW5P2r9d?i8Pw!rg3&<wM)c
zhwe(5{q}q`o1ZcdXuK$Ay!WPXe_(T=$bCY7&c7&y#VI_H;z5f>)6X*bQYk!`!b2%M
z9E4pZvP`&KxFThS(3L4XBIlz*zx*FdVRZ_ROR`4zgpjfD;hMNMb@b$crzC$mg=bQD
zR(zZAxfGsH;RW%n!gVRE7kN>*N%)fR<rH2Kq2&!C8&fz`#YDtwa|*9Y_*$Uzy2uux
zKQ+H0{-z4k5A{|GZwLC@Mcxs<o5Fi3yf3~Zg%1OrogyCyX>*szM?$~p?oQ#;6t-sY
zM#kJ^ewM<IDg2Z&e2?&R;TOU$g<qxcwFq^-5&1TSy@BLAk$owAFY<$s-!D-4=M-3*
z;Y#K^HQs6blESYn@D%o^a3F;*()cos-&6R5eJzclX&hv6rO+ac<I?yug~J?y(@3ZB
zSIXQaR!kfGJB5EZN=QN{zr7(INgaKC!y`M(rFoo}5%P;jBCiUxrVaMtG$Lt4<x9CG
z5=$c<NIH5ZNFt47AmLk~Od8oV8cAXc-84#RIDt+sjeHt~G>Ve=FOq17ufup}>!nd6
zjhbncrBNx3%4u_xRy7TJRS}Z#aF1$fRF{)$Bb4x4q*`gzPNTkT){$2|@w!6ZA5znQ
zHPb*6#@H~h&^VAZNu#NFGhuTfCuJ)0YMDm6G}=qpDvj16#|zsC+X|_9LfRZVM$#dT
z6DdsN^fWrA(MbwD(&!v$b`?2Ec(Sld+I+>pu&2n`P1s#Xq5nC<scD=hNl&3KB=UB>
zR~lzXcqR*(`f2n|qfZ)r)95G3*=d}WMt|`EX*^QJe9Pt|3BPw6n8rEsrO=n3m&Twp
z21`htA!(d1&h+>S7qD0yW9OnYE>2@@8c(J%EREr5%nee0Ng5;47@0o$MaHFRj7not
z8k2+kUY5q_G%io`yD*GP<JvUFq;X~1yllNXjj<x+SBbEX`0r9Fxh8GitMa-|WV{sE
zoURY#<Tpq-A&rTF9Y6S#G;Wn-Y8unhn4ZRrG;T`cW(j8sZxs6avt*MQXS}l|zeN(0
z487YWxlQuhg>%wJ-v!^1#+_-*Q@Jfn<35qQ(zsh>ei{oz?h)Rb#y>4gdGcZj)8_qY
zJe<a|G!~_?IE@Ene5sJWOGKD}2h(`ynDj8?%hOnq#^X|0DSR}IRnmDR2=$l<?W_(`
z>*wVO$=3wF6q<*@G~QL6KApxhX*`?8a~yUMdLwO~>7HkwO5^1;UXXL0aJ`VeFEU?z
zP~!T38XF|sBHWn9<}_Xv-z22L*F;_yG6)0uVac~DMiQ3Kn`vxQp}m#H+alZ9qC{A9
ztSP??-%I0tC3}aE_IJwi2Wfnm#;!CzN@I5#pGx?#@Dm|5{ir`nV^12N2SUb9FCs50
ze8n!G#)J$eX7EiK-*Q;apk)So)A%lpS{c;NV4tEsn8qQI@6-4}<i|9A;!w;fAdO$r
z_*I;{Ybg0me194n+Z!jZ1CsnM{6k2uKhrqOfj0v?V;=nfN~1ys6*Kso1)eq%4k`bp
zVNxuGav7A*nDd%_FQQNUk%v5-ft5ibgGdI^3}P8GN5nIx^ZMfqb$pV{nDHu|LF)fn
z%Sf4OP6oLQDrZnd3i%9Nk%F+O;J(>X2A)EdWl%{m`cZ7HV7}_2sj3Q6J%ef@6!NMe
zUQ>3MNJ@xx6ueOebw%n4DX*VFgMc>_@%0;L&_vFr!e)U^^9))9oQ2magVq_Gn!#xq
z9G^iOd7UC`D?Cwng0Ni%?L`=G2N8b3)KR2U2AxGt%AiZ2bFv82(>0KA>gg8n?iut5
z6lky~IWwNY#S)&L0q4Q<#Cv6MMh0hQ&|AWO8Jv|tA9-;G?923Pi$ebl24pZ$I@~^V
zwg@Lm+F?<jBj>q7Uw=>rgO72ZpTUp}F38|Q35Uw8uSukxVUk>>c!y_jNd_Y_7@5Hp
z(q}A}W^h>sqvafxF>5#!UM@n;JWgvH;zpM-Qn)gMu|XE-MTM&~xF&;f5>j%#$hE@j
zGUnSc3daY&H)PCAN6DlNCTB1&gS+H4CBt0}M{kFwN-`~j=^`_Nuro8bG2pDhn=-gL
zV`in<8Qd=UEg3V_-YR4iw~25jog?45!aIa_3fYjTc6SEzGkB4?%V2@ztJQ|@$>81$
z7G`i?2Fo&7p27X{U6jFM5q63PGFXzqLrTU{;e$e^ieo;JWA($5@VSQ06&WqKap#Z7
zN|r_-@dvS08Qy#vou4Y0F^%K=;~6}W;dj|so57RvdLe_SM4rju*$kc*_k%wt&VbKn
zj*jq@b5vXx$k%7g96^OvHA62e7h5uTC4&vDZl&`z;ie!Ln=^Pd;8n|qUJp1A!{Hqx
zOW;je-j~7mvbK#Kfg3V~Z)dQbB`N-{aHsG+;rqfJ86Hw<Ry9A!;6q7vW$>{Gg&#3@
z-Hq=jfn>MHrx|>f!Jdp+JpVj{uQ}9<e<A!bgRevwkP6?5`;xsGd?zQ(@}h85F7!hN
zt1E^6$(UQ*A32z?@H6;1gI_ZERn9{~%74pXe+CC=feo9x$1^y{MyLsb=s%tL_-6)(
zGx$qtlyKSMZ#H#l{>u)iXR9L_gtF$0{&HEA&*JnfdSy`|i;7t^%c6M};VdFqRLP=h
z7SSwXS!A=YvxsXcEG1;BtSl1Z$w0!hQq$rYp})0^nvR^VFqcJMq#&ekQN(`;Es1-=
zvMefzR2KTys);udGHmrMY6QGy7PYddokbl<8U*sXSyRIGvZyZ!`EBV?L-9t!#zG2d
zu&KCzZXTU2vS^t_D+!Mia;IEtkrT3LCvrTI1;|eTvZe?5`*K5>Q2Q)S&Z0{e9kMtv
z%LCI)6`v&RBxI1zB3!lmPP<dO%1O0uS)3y7%e!aMBa2fdIqevE&p`iwtW9mzI3tTQ
zvzR4$?=1Rcab*@`v*?>eKM60&;w%xyK1ig076Y<4JBxvGGWK&s81=bXoF~pq{kQ%$
zIE(Wo9FoNaS@<brs0$?=8l>dnEQVz<Jc~;tA1xdqyfllEBL9UQmBnR}&<^9eJc}!`
z@Jn(`AZL+YmBrOrOq1lAEXHNcdul)9*Jd#x(7Y~->&3?hk{hx(k}&l<F^frAOb+Bz
zvb-ZQ@~MG@?QpvI4AtpO@f(GHYHt$1S;&C1v$!RTTeG+=kj%~E_JGe3+0iF-N0v{2
zp*ypfmo<Bm?~;?jdC|Ebi+i$Il*QsKcx>{$S=^V!{aGwji{j+6L@!DCqo$O<^D~Pj
ztTG1!9W2e_LADJWr`hH?=%Fm0$YPD+eOOsomc??B6++hg$}Aoce>9M+5_wFxI*Z3e
z9$L<S0v=hLHTQlT)85PC$t<4A;^`oFTe5g2;LnOYCwxAO7qVEF#riB>l;l<6OTrCV
zye#sHkR`yimyP0^ve@hsosdSa*W`RX(Da+c)-2wT<jp|7EsM9r-xh8U<nLthZonDK
z`&sPBVrLc~a5S@F+4wMvU0M8;#m`xMl*Pwv&sprt;uB_*3qD!w$zpdFpRzCOq@a}z
z`8T>FpJ(w!7LCedFH4^5|5@{t*USw)%TEBZ_&RGo(*Gul%k`Z2EhV84tCh9G9I-IJ
zXCL91pT!SK8`qjB+^kXhmn?o|;oGQa<F_pKXYo%K|7LL@i{G<2oW)-X!q>8YWN|QS
zhV(;BA@6v(OHGMndYBj@BmG-Z(>PP|z!9FvX@192&PK>K$!3oD)`ov<-%~$S-Zm!^
zb7KaTd4+9rs$0}Xg!=rLahQ4fV33#%^8MWTZzE}=v3yfD(l$yqJR2DsSsQs91sk>v
z$41UJ?WcWflSjtLQsqg-<g{P3;o5jy2N83YzoKX+_cEqLu{WYuCREu*6&qD~l{Y`P
zrG;uXYTHM*Radu7z0|N#Q?b+%(l}3bt|Kq<x;E<BsBfcz4em5+80h#*PyCTRlSCs;
zY&5me%tmt?U2Jr<(Za@YHcp})n}0Sr($dE9Hrm)|Wn(NC|H-v|g;B6%+S)k5&#5`0
zFx1XQdxo-cqK!_HcT}0PYN&ssVkGGt1Yu&@@OLnhpJJn%jqWyj*yeoBY5HXwTOBLZ
zKTappB-E1uZ49w-fsNB`^s>#1&hu@YVVk$@7wJToGi`I`KyMp;MEcq|Po$slEMb2k
z)dq;1ZDU{{ImgDi;{LY-g97<r5gujGQBCFdve1P#?zOSdHgC^|s#q>!1+lbk47YKK
zjqx^aurWejEVQd^j12gtHb#kGW@EI-<-#k4SJ)UM!cg4MH8$Y>1bsC}JW0j{@@qw|
zvvIwMuQtKPL^<!YG06t^W85m|WE)dNrrNkka>g>v#&ij12q~Fq<3{mW!rrY-FTOd@
zpKaq7ams0#*KIa#m*yNHC39`uA>QN%6Ly~XT|zqVwlQCPK_IzDgsq)Dg}37O*|=Y2
zzR1Q38!N>Z+jt<TktH^k2K+%A4+Z>Tk!3cP2NKrWBQ_qj5q1!9u*$|`Ha=meR*b7{
zY_ste`<;y^Y^<@d*2arAUSjK#0%zOjZ9HY;X&cYjcviyaIEscse9c7UD8U^0+nZmo
zu}%t<toMUwLND8Rg{@l74K_B~*ebrs#%3F@Yk1+-4%*@Ms)m=>*e1&#m26>2rp;FH
zHxz1chodoa<(zl9Z`*j^#ts|X<@=6}ciHwTgpSyu_iXb{pKpGd1*T^w)2w8Fz+%+K
zJa)!i3Ps<KY_mb)V>y{A_U=!a5(niSd}d>hjn8d-!SUI~ej8uf_{zpl>d0T)_{PRQ
z8{gabR{edikmDG$^PRFovR5{LP@kpqM_W4qI-0ievuzF)`Gp;-W9V1u`zt>OWaqGr
zzij+2{)df&HV#RLxB5)vpByT!5Cis1hyJ$t8!~3xj8Xqc=U;VCE-O(p<QO^s%f)eT
zgKDjUV_po=i)G7~P!*k{&lgb#F$b+39Pc3Rz;aOEK?BF!cO@LS4oVJ^4pNe&9aES&
z2N{v9jM(CiW9AY1F76o0JK&Q(odpL)rG!E{JqKk{uH&GRV`hyia#of;gYd;fRmaR+
z)f`lJ_zSiWe^6e-K}{*wa!{KFtx(eZgZM~QMaNKe9n@1S-3EmCF$*JV=%A5<#*QiE
zChN@cP!#fN;-IO6W{&yZs=0#}N;7}Y&3&84IcVt|eUfS=IlpINkTwq5I_T%%EC(kz
zXy>4p;%YDD4h~LKA+WT0b#&0x!6^<p$+xpKPhu@N+_r6M#D8QX`6v|XrdUo>*1C)L
zP^eQK{>s6e@x^^3JthC2g9#l%r#tAYj>C-8!Wj<ERO$6r>Gg3;lV*bZI;LTe@UY+h
zO4|TM!S2HX-&j6$j)QX@yqm*&Ih^NUkb{pLeC%Mb!*dR?(!nDRhB!Ql7h@b;>EJ>K
zLmgb~V3>o895V%+Su$I&rf3H~4-;ck8SdZ`$J`E4K0-Pp9kZw9QX$DGk;{amsTs(x
zaLm|3g|W=FgJlkuJGhz=)d*d~LgS%u+8Hv=F*Dt@4z6=>y@T<}(LKT&gtJ&g4kn6E
z63%ci*})VCQ&sZQh0}!W0xSyNm2n)KDGAAqY?FHBdJ_xH!E711&B5&sZV|s#=>LCw
zj)S?ZEC+WxxWmDn4(2&LP1=~{M9&$MZJ2~O-!ZFC3)HH8A@71X(NptY8C>Y#J_q+Z
zSma<a@Ae%$s3bkWGA|!mB4on+ixOTBIe0k82wMWZR<Mpnn&E}W>L_s`h=ad_mmR#q
zp6g(>gEbD;I(Xc{53Nk~J>g)4`AP8+Znxvk;U^tD#fGF7MLSQ+{yGQGh&(H#{5g^5
z9lQ`oc*nk8{KaD=Y>KS74GuOsc+<f)#~dfViJj%oP}5c>otvfns)N@=UKef=ZWX>E
zq$VFrx#8_CW`u)7`Ow=cwCxVwVH*xw(FY>$Ie0&i>~OF%;CHGCeJJNHA-z6vu$yI@
z!>}Aa<*@IdeGVOR*u!zs!50p`bnxWA<}V~1VR&>WOO*>sUpe?%-R&DS@)|kQslR29
zbMT#meGa~N5X~W$GlSa?4*pawesu7YgP$GzqQoCio&M_JHwXKrz&iEY9+3fmckqXF
z4mvobAQbvKB!?aR<=}4z|8T;}p+XM-IymAWlrw)}<Os}pkQbYGxtuwJ(dQ&gDt#;F
z5K*$jQl^AnKE`vfa&U7fNg<JgEt1S3l|x#bMlv~Y0wT%g%(^Jw=@XqCayjHBDN3^-
zPA@9^$OmLEhsyHhLP}ZAET>e;nUDKOs^m~rl4_FBeswt+ioP{-sFg$QAPvn#>f}&2
zhk7~Gm$Px;+d!mY4vj=O!q6J8CUQ0vMoXdQB9ynt;W+V@IkXaKO%yp^=&y~i1-6y*
z1Yx_}(G`pnbLg1E&>Swxp;Hc>b2x{E4D&2=QVu<GI5mfpbLc|C9+$%@BIHi_5U*}I
zbeDvj!qZs1a-PjrB+@U3vvN2+hh90H5rplN!<jks&Y3r}4CRkGedX(O3b$wo>YoE8
z1B4Xv8khqoR+4jb;G@cU$_~q6kjP-+`8f;`xghYpFlTPD{F1!65Mn3dcM!vKxFm<`
za=1Q+5jl*^;hG%AvEmep<IE^_E6od2c?3`nqb0vQuz7{Zm>jOmVXQcp0k0CdTF9w^
z)pu<U{A~e068y4YmTfs|jnCnR9B#?sR`oSL98JiXxoM)DY%r5@n4H6u9Hy!j%@j@(
z(s#PZjGVbKqw_{NX9;i0;bxT&<+CMWS&`qC0~5fW(yVgm_8jKqFgJ%ga(FC<)j8a$
zco*bwPY&~P=7F7E^{yQ5X0dY?5K_YBg+(0sb6CP=P%pGFXU_MyPrmo(uqcPc9Ff>h
zCFwred^y!*wE5&=X$}wO@KDZ7vX4-c%St&c%V9Z_%1HI)!pa<Y1Q3z>J+(&tXbwD<
zXO;A+!?2I%@I($T<?wP2Ow5`b*5>eJ4qZo^)5)Gv*k`2A)IKd8T6>md%MN~X=y|qt
zt}2Mrxla1)g_OUT!>;WnwXaC>It!;xXoIY6lw?y5n{#+IhjybwtGM{Xmap9T&Mng1
zn!_78yqUwc9Ntl=w`6C#_}eO5o_E9&U_?x|zq|hZ9Conu@^~PRojH7vL!CV8=J6qu
zl*6An9M0jR96sh~pTlQ4e4^Ui&5Y|vlaYL}s8-4*J)?YRPY$2w@P&HQ*V6eiXAbrK
zO32$1@^4s-9Q=iQbNDWYeK~xe!~Pr&Nce+-^Cwe3iu{x_cke&v@QZwZ&EYo@#@Heg
zs+J3Fw#{7gyMzaG_(O!Xz)**d;eX}uH!C^^{%!Xk4$BDrn=`ixoS``9vai)rM)+f+
zWF!8v-E5~Xmq+<LD&$cyk8mEPJiI(2c|`N(1+kq+OvK6~Arj9YJrAG0$viT7WF=4K
zkrttx?`W7d{{=45$s?CXUcPRiQ^=zzQ`F~sPpa`M3w*1IRLY}rAgPi^RdL^J^*n0G
zSu>B?fljT!pl`EY9`*BRnn$xd8syP1kH&d4$(v888s*J^u%?1(DqJ&J(c9ei@ZvXO
z&GTrH$8mYI%;WwQA^v)dPjHiUxOb~O?#c6afuYtkl1H07+U9Xn-c0Bx<k2pVp-f30
z?epl6N54GI%A3D+oS4U{A|3PSlt<@0PRiqyJi1AEavohpx(K;^#2~!ht`O=j33-n^
ze{x~uM6Q^fmPb!Un#bvRoS8@Oz_*w5&j>>KLAa@`Pab`hNZ&ZIzjV$O4#?x|JO+x>
zIAb|S+z)<U9)t22EXf7J^Ya)IDEJ01l#>DJyjXl}9#`ctERW%NT$0C#Jg$&@q;OOo
zm*sJ(IE#*<MvGrA^zHbulaG<`$~^qIu9owLJSOCEO&;UqyjFO<@VY#nQZB~J$?Vg}
z#5^X+d1D@v^Ozz&LpU{$=^|8{Cc<gOkBgF-lK9S9;w++@^O&8-EqUB3$=!L}CNejV
zJMy?)oavtvkUK@@32Bqo?mC9gSJhCyfHvbMwfCxVF3jV;yctIB7cR=1CsY4FR@^bT
zB#))6ngRwF@L(Pfu~8LpasdzLu`G`#@>s(<<sa_ySdljmFU-`1ns-*_@d!sk-S0h`
z$13s10?Fz;9v8oTkeSZdBi1r`{Cv1Z=t&lA9#7}-49A25;srd*bmp-ykMHw%K93jj
zcr%Y}O6|HlUddxa9_!^~E?y)Ne>srw(VOy(dAugcra-<~<kdX<KY6_#$hYLNHQ;ZE
z#QEBnjh`ix$L>6~OZa{sJ2(!AzbkxC$hiK{HiMmc><T0wh<qsI^Y2F@9|ykv@j;*F
z@kJhA=JA>2dxW10eS=>G`rnFtoyRvKG{{Kz2EN~kFxNli@uPUCfS>aCIgh^ronP`e
zkjL+N{3^+B!u>+un#n~Te+K#o^Ef2Vsf1pKkKuIwE$2UZ{3~)qNICO`0?HLozF-;{
zuZjg!2)LiAu$++sqQ}Us0ulw(DxkK6$pVT6xCNvNNK29tIt65dP`1c5!$LWcys#kj
z(_AXRE1<e0Wx~qBN<u#|Rm7_bs|o$a!<5&Mvt|LlW}O1+7SKw<dcuYUG%BFJcmp9r
zF+Ie_1so?ylLDF+&`jJ<Rdewcf&K!OQcF3x#iext$BVZSb`Z8L-~^F&!uADxTQW1R
z%PF9Mjs<j*oL!hv^XgpS|L+X%Qb5-N&MshJ!OTjZwh8^451mp#w*tBs(4&A;3+P`k
zvkb4(3OF<1JxRn*7xohJM2j;D=HZTa<Gl;$BVpeH&JyV-q#Y{wXI~7Egq@ue>j)11
z1@q>GKWsX;0FD^v6)=RG6Y?SA`Q!!6Ea1ihE}(A#!wa~iU`|=@Pz()K;x8(I&(wUz
zzqo*51+(t7GiBDsM-(u!fEmoP9uqDt;5zw^D&VpLMi+2-0oN9ep4ERv!K^^?8Dxyo
zcBOD^kn*bvxLW+0Kr*fXu5B_?pY!{yV(5BV9xuE>I6*kEfJp^R7M~`ZB4i?`GPO$f
z^gzNJIo{aw-e6V%Hx<yjh~ta6xq#WqFSoMXqWnHkz>)%PE#S5SZZBX?0rwPeZ^1nK
z&lS!q;0_T=?xcdg1iY(&y9<~f$QOw4VU{}FIYV5?SR}kJ(BWg|qJS@ETaxlp4*msv
zTEJ%ob7TJylT^U-oCOM4R={!zpD38s-4z9_ESUFtkFb6vr~acNs|t85kgVp2r1KBy
z%P)M1YYJFfFozsIDSS%!wD1|>vqEZ8=LOd0CUcX&vw(F4tS{h2w)q0yD&Xw`UM}F3
z0$wZN^#V4qB^1nA=$i}Jq!h*{nSh^hHy0QG3s|Ik?+ScSEnsT_Z?buG5A6$Ku4?&>
z0_sVbLAI$_=-jScyeoW1$TQXkE)Ts|!25FUklCfYAJ7BB2NHf*z^(#55~sCKL_X%A
zBpph27qD4;kG%dW;BS%73;3ddFAMmpfUgVqzJMPJ_(ope6|hg_Tj5@%mZo_5pAr*)
zWKkEezkmY;{LB$xbm*5L*L-aGwSeE`oW&NXqWE2={wUy}ielx&5YOQ}B;jFc{#p2c
z-<AKuhE%}69Gr_N6-_-J;b>n(g(5<7Qi3A)jTkRJ>k(Pt6^lp|kt`xyM5Jh}ojun4
zd^TD{Oqy|_C0t&|gh~~WE+SV%zKBc_*&^&B99q!nc0@KOUNl8c{X)^SMv`LD{8g5m
zML}PWKmU^1y246DR4t;Kcx7RgqS=?_r?YwywTnkvNDYyi!dgOFt5Y=RTh8O#MoxA`
z)Gwkz5e<uIUPOx`8WqvFh^9qzEJKr`DfuUs8_T>XX;w5%i)BvdaY}8=qUjX8`bpTT
zXpZruFURUOMKdgSDWYxB4BaOb&9~3(ge2`nIuvoDNJn8OVP_$AP7*n}i1n9-=;VO&
z0Ji`Y(Y=U5RTQhDM-iuT<f(+&m2g@SJ&WeW%_}ARuZYuGN-nCo=vBlSEPoeS7iSjH
zyNCrv+*3rKBKj6_ei1{8=vOp9=H`O)xw3Fp(G2hXg#(H>yNH3}W6~kY&na>Tz9Hu+
zU(DK|A_fPXH<nyfxqvlT1izKOu!x~WTvWux93=VacM-#i7+y4E;8jIjQUs6R86)S2
zqPg=NS;VDsjuKuj;br2Zg`AtN5TONsS?S6m#!A9@pF&<&7jaDy<0QORcwN!_If!1@
z%Q;?1=M5sX$+S&W3MUE2^ZQ>Gei74(m|ny@RVDRjNdH#h%pz_K?939mNqDnxb`iJu
z&S359wjyqqgm&f>F*o3Mh}<dUKfc*!?keJL#W-I`38%1oi&$91qeZM@iz*A<S7hyn
z{x_UQ@tD@tnw_+W#VoEO$d?FL2$vS|pvXhQhlSKxR>X2~Hdi`Via#P8FUey?v(4c7
zB3>wBb<v!z_BeYAUjYc$2<coa@?;TDi98+1pAmVM$qOVjyRL{SY@$VMV5?S^UlhJ1
zd|AkMSS+HAMQmcE3d@I@%|*ObG#^;KDkOPL<n<!9h-?kyZ!p;b-&W)Ui1~`@?Le}<
zh<5`1ZV~SV{QV+!i0>4BAmkm|heh*F^T7coNgoyQaS@*svAc**i#SxopGxp&Mf_UC
zZ$<3km{7zQMSQ8j;in?LD&p%RzAIv15#JQ?Z4rCr<$s|`n|wb`{z^Rbz2rX>@gp;y
zH=`df`trI6#`$y6%+bFvA~_jqe-VEu0S6S8I=>gqx1S^jCHG@FT*O~R#9h<r{x0Gl
zdA-b!WQ#abMAQX&$OV5NRo+Dfsg)BR&mVW5Z!%udMc73|LMl^8gCxA}(oIXug|A6v
z%SFOPQpzd!=>J40PfNmXXuEJ+l)0$nqFhb$t|aH0PyF((dH2_e6M<`fcTyC(!jcQm
zHD{|*POR*jLnrt?x{3?lmp-fCOtYG*yQtyffQ#Q<)O1nH#R?ZIUDS3_$Hk>CM!Bf#
zqMnO0I2gL9@1lW=hAtYp;N}^w81p|wJT0NIizY4>{}bxvn$FeK#Y?<VchSs6b0xBc
zu#Jo3M40TBBCUk2g~z*i|FC(u=GE5434vxi7wyG61d^tIg*q~uDxc0SP8B&xc(SmI
zu&awxSZD}!bJ1NAmMVW<-@`Tc#wQ;+GFqeGY4Ymn;(sEi3)yC<%&ymqcm6K=xajMm
zpNjDT4wyQdk@xCnx!``+{;qj{$`O8mi?dw}ba9T0L9SW!+rVc57w54Cb&%=Ld^as2
zy#~8D-^CEAT_C(fc%g78kxAmszi^mvxR6VHl#h@a?TmD}Hf}!axXi_97gxKu#>M3>
zu5fXsi?J@+)eMbs%@GPbMTF^O8dyhsJ<0}fm23Wc!W@lrajlE#E@rs+CKb9)^*F)B
z^@@?B{dm{RM>n{bbFl`0*R1GHVl&oOtH~~=1bnK<G-_%K{Y<8(Lg-c&lx*IpN}T25
zrl2-&b}?K079kr|n#VpU-n-ZgIQYAmE9V_9?sPHFh5vS#h2X!)qw{VT^Ia^E{t_Vr
z-Xn6aaG{I)0{Q(e76p8<GV%bMx4s@-8pt1X@le1Y7Fi}-F61Ejh>J&EeB|O|7pqtW
zF1EXP$Hi(FkGt6B;w=|XDA~_4!A@umYlMTpizi(?<>F}<&&ZdB?|&%Dr#bc-K21NT
z7Wll27hJ4!vEDTk{cA2>WVhnr<Kh+99F#%fIl>K6pmUSRMt0|r@#VGI#j6tXXY{`0
zbr)MCVa08A@rL-DLEX_{gE-!H&2Mn8tZWu?5A)|QF5Yvo)5Qlae&Xg&wy`#$9j=)-
zx$lu94D0JdjvJ}a;ToY`F7{S1t&w3n@)5wrZnh{F-@5qJ#b++Qa`Ckbt669dW8to?
z`k~L&FuqV}d@1BIJC_ccWJ0MSCJp?=d#{V{T<ml4J;znPh%Xn~TFrRzOdH}4E`DU%
zg7W;;#m_DlmJ9tN%OuqKO*!2!WKnb}7y84+L5?0JoL0gi7k_fBE1_Nqhh6-|k+y{L
zCH(E;9~b|+IKu8<+q~puC*u1l-l`p!3GrCbP{};oq6Bs;=DI=&6-x-05Gk3(?W%3e
zd8+&vBw9kOgeoQcIv^A;ffdapvFlkSBuZwYNtRG3p;$5pn5RnSQ6gPJMqZcj6>tf*
zxFgI7^TLk$6S`Z%=;fhGCGc2}QVCuOW%6a%sk}EhY(_Kk%2dz+hE+>u?%=XOwUT*T
zT3uM9gqk9?gp}7Vp-#ZLo1%UR4N7QMLh}+grH2}p(5QsQECIchV~$ujO_aN)CDUkG
zGEu(vE#bHlx|h(S1U7H3Z?r6-RSB(m<ISO7=_EN`&Nii^-~65+XS)*Gm(W4HtMEi2
z^*ff(NxZZ0B;m<{Zx<2%DD#v+(k+niP+30mbAtp^+mpf)7M5^d38$CPtAu_foK?aZ
zC7fA8pA!129yw{U>U*mwIG=6|nHI$t8MM>CgaIWCEa99I`d2eQfMeRuX4+K6=az6@
z2{)8*ch}IM5(bydc4!t02ha0MxUhtwB@8Lyf|40dx2mCXO1-Fri%Yn&gs~-a139dO
z51N@BjKfQ~q=XR?jw<0Yk&!Ha5%vh`@ETph6_Su&evH?cl6ehH;Z+ij3v{j)xuygv
z(Dz#5b;9d~<Ar`2CX_I-gh?e#F5&hP=9DmnMO4CUbp*4{!&m}7y@VM7pUEbt9SE}m
z$xS8P9B_Kw67X9^ZWD41hc@T30Oh<xc&BilkiK^Xmgh^dAdufv!o8)VA5ziI{Ut0a
zVQC2umav%ZvxFt8Tv}j{evZFB=k~~=IW_B{5*{w$DOOeq%S!mAlG%37YF%E!iV{|;
zA*~JC)gvO03RjizSP833;9*UVm+*vyT^pFNYXW_GJt@wwmMAZuHcN%iuv&Rz#^7u=
zCG%YWyzm7fo$E?iAMh7NUMk_`K=RL|(1sE=s(o%^-}kso9oj7Ct3m&Lt%TQ0*iypQ
z65c4`AP2n?-jwgBC45%Gwi4bd;q4N(m#~vfu7r1FpZ~MwuX)}r;k^>xm;TEdI(CS&
z!Ei&xhvK}$<e;&ugpW%2SQ5TerG(l1q=em)a2TOv4=tClw}kIX_<|jr?|j+uOZZZp
z3Y75rhDqhiUj-!LMX!Bw{x1Ap_(KUlmhck?VUDp@Xg{k=gv!5h$W<;V=QT(cn4<$F
z{5Cqo>knC=CcXaT;9o+@L)yb%9Q-*H=%#%Rmw-61dkA|V|F?uA3Pm201RlzHW+0`c
zyd)Jo)NgBY8u3hR@`jUz6O~R(7#CW?rrZVUAsKLn;+64G^x#UE^<aDWMsmk9j}ke_
z^BxLv`lVVD_mqGh`4H6@wO<95JXH2j#Y0sO)jX81gbI~V-8=gBYIhlGc&I67E#_UM
zwud?%>UyZ>;Z6_pm?IAjJe==gh=+zA8hJRyLpKkNJv8xff`@h<ntEvFp{0jb9-4b-
z;o&$B{_O{`z?n`PnaEpvINn1W4{e$EKuAI_;sczOYKGc-=-{EVhm$;<D7B6rItBWE
zC?c<uJ#<mByRu9a*0<p6bobE1Lmv-)S#BOq^KiO{ULJbN)c=Ik|IZ*ToZ;b254~m6
zkHS}As``02%fmSy&h^mW!vGIwdl;x}Qqxx>p{Ab(lJh(a^7vbUqdE0`DQ83%c(~BR
zcn>#t80z6752HO??%`q&!#s@eFw(>D!1yIWQhno>dKl&5G9}WN_$5rvD6a4@#>3Sf
zuJLfC0*>`?m58tKUqOxYaIJ^yJX{}`@~zPbFW=?_4--Ay=wX(JNggIkbGmSfhp8T>
z9aGVMKxTi2hna!gFPWP>-0a~t54U@mt;F2o;a1sUC|}1fw>b(p*TWq_n*EgcI(K=v
z+r#S~ws@HDVS$IoJv`yz9uN0=SnA<H4+~}Xeh-Ue;l3axiz%1ak|5sy@=N0nd3e~v
zN)L~CSmt55hZPF`U+h%&`J*0Id3emjYPGs!i;FtEC|ToSt%vm<Ui9#!ho?L|=izw|
zPkVSqu|IoESU=-5PV$0>byD#2>l=KDecZz)51SS06%QLcYz&g;$4F$5SA(#x{og!p
z_3(y=FFbtd;Y|<QJnZ!Ffrqy|yzSu~5ARBUdk~6QpuzX#eBZ;4W8_RHy@(%r*yUlj
zhfh6x<l$ovpQxyPg=4GrGmpoi<MU&T(1M>}s(t0*YY)G8_?5$*hi^Un;NeFPdp&&T
zVV{TZj|u1(i;oQZlVbe&n4<74|K?%8hd(?V^l%^u{<{bj{It=?ArF6gI4mRorN>wJ
z+rvMcQav2;aA_Gv@dZ*DxSz6B8CsX2Tp7xjp{xv*%21&U70Zw+L%Iy%GBdiy$`CI@
zqzutAGYm31-?$~;L>ZE0N5?DQ*UwI-3|Y#{P%ML82B!?UGUTbO4)XsmRksW!8T1s(
zf2RDnDwm;38S0mzK^dx+p;{Sgm!S?dIqa9AW*KTJte-X-XBrsLH&Qq7swYAr6{y*;
z42{arv<%J4&{$qglstO<XQz1?T9o0qGPDfxPA@;WuR}b(3~kELy9|BGxK4``%Fwk8
zr<9>x8QPbjQyDs!p+gx?EJMftU)FphCn?^O%g{v%egXRFBz7x9_p<+wtS^DTV*10L
zr+v}Bcki9M&AoT-HuDQbq=d-YB8sR8rBq6it&}3Ng_NQ~TI`B!71>I*ETKXhMY3io
zrQYW}(|G;g_w$+0^Lftqe9!mnXU?2Ca|WkJa7F|tM{r66r$%tvf07y$W{_(d>=HrO
z2)g|zvw=Z+k@Se*tO)u=a6trTN6<5Zb0g>-K`-gk$T><wkVnRTUIgby&?kbvVT}Jx
z9yxU`jG%u610on0!9@{V9Kj{B#ux)T|0dwl2nIzkI4sN{cz{$M8o{s#kHN&;2riFc
zcm%gZaBBo3BDf-g>mwKw!N>@%j9_#GS4S{Pu`u{mVGCq*OwTnDT&vVxCk$ezSKvD~
zf*T^35Wz(Gj*DP?1ULRC*Fk!yd{YEBM=&YOI4uWdNF<*e!EF&ti(q;Lw?}YC1b0Vp
zPXu>Ha90FV!m9jlDB8R?f~gUnhHARZzZw6R+#kV=2xdnxCxV#~JP^Ty5zJBoXoo?9
zsQ(T7Py`Q$MNO|jfz}?4U|s|(B6vN5`4KFLa32(wM6fV|$0B$-!f!3{cmz*G@MHu}
z$pY>F_X<os8^NLo7Dw=0SY?z4DIqdOUN1!OVgySgSQf!c5xgvGuY_r)+P}G5F0WT3
zcrEk|vJ)75BZ4<0SQEiV5xf<_+Yzje;N1vTN_kZT?<fs{!5|><y$Ifq;DZQ03=5pX
z;QCkd;|M;9;PVK+h~U!**2>^#|7kOUKC`wig7pz>h~P{4{wpV;FEc_y{8|~=7{Mk*
zx;cU^5p0d%n+WzQ;I|QMi{Ll$?Gbzz!OsfveFQrs{4s(bBG{>v1ZHVDC<i)!l5!CH
zFA@AIC*@Sw6~XTj?$gGf68;^*Utz}gNU}Q&`>$E1e4iryN4Q@|;Q`(SqNW}4;wm$-
zQuN^LE{Ka*HHvCcRF9%Y6g8tbCW`jbtQAG`C|X2OJBmXXDzwuuin`+Ug!P3Dgn`XQ
z;*Et(giVFbgh4sCj3N?6E($k_XrRNqM-daZg>hj*7=%iRr-hC%Bg_f|oxC`6dUzBC
z@nRIED9TZIQ5>r5`%zRx&5f@WpD)5Y`@e08^25SXYAp+GghvREjG}E6M@4b8EVPsG
z->?Dc5XG@kjEv&SC^|-QToh+S(ItxGrOdQ-j^YIIPQnv~CkcaGoGgBd@KoVx!qbI;
zPS+^9$$3c>-J>`&iVNlJ5ye?ioEt^&D9%<QnWLV{DM_y=&XJHtcu{g*6z3~oU*(#T
zK4B<kr(YBogz`YYzm(~9Q4|-8Ge`6qAU-gPOQRSR#o#E0OLAFgZCDgTq8R$W)-IPX
zEd)h3B8n@dKqqZdK1wOSUZ$>!VzkKB!fS-r3a=9eL70UxGCMYk8zdhm951{viV0Cn
zjN+y!CP{L$lo^(h2FbW3id&ToCV<u`ygiCLqGmC$cHA7}%(b99qqr-IDN)=V#rIL{
zh~geudqisYM$Mw@)TnvlzE3z!Nau8s`=gi<N@hm!fcS&LS;E=EIl_m84-095Ys=g?
zIyZ_(qnH=P{IG<VM6n=>g;6{f#p4n#j^c?Zo{XCH_GhDbD$0XsOfH^b;`^A|=OQzm
zMpD;Wq#*nuAmzNClk<7DRekL6LKH7X@lq5oNAX$|E9Co16w9Jm9>vnAIZTqF0(@1z
z6J_VzO4jR9yb;AGQG6Q3oARROJ5jtP{<d(XaFuXab7N{@3u|@MtTw+J#e0&!FZ@9G
zp>U1xBjLwF>ND(G@vo!U7{zDG0_C4a@rC5;gzJSHgkK835(aiQiGLSnf3uuhqSz|J
zD83Q-Hi~T`+e10?%e8ST{1C-XcDESLjp4^Aev0Do7+S~hbCm0KXc$AI7=Df7w<zkz
z&>&_G1?6fj7oT@U@jHuJYbk%I(*KO&uPAo2kfZpU19Hr?tG!X|<0456Rb%)^YL#LK
zNBjM1iU)-J>Xpry$H)@-iBM$`1}Cp3UR~CLa~*4l*A&(g)((9cgcj<=P*<VI>&49X
zL?o9SY4MxKi}ZC&;~1L6&^(3~G4n>RX$;L`X5Er+bKcZ~Gv73|j3E*;-}{$hh{nvj
zhIGv2m+deXGwsukAud9mh#@JS5`NUsv{)zf&BTxmc`gQ5JRd_r$!1R}N)q%MzG5iH
z%)1Ov=*LjO1n5O-D@hKG;V_Xv*d~S}VrU;j2MS|o8^h5tw2R@W7}mti=OG)%nPqmq
zws^XMb&Rsf)BE`rk}p+{jiF-<U1I1O!*R;poTzoYGP_PWJt2lpF`O8~Nipz%{ZnH&
zEr!lY?a4x_of0#fH280(iH*!<0>;pW|9^>bccpO-(i@F#F?5gNOs1Cid>;6(;5}kE
zON7P6<wRmnIeW#-5;~XrddF}cxs8&I^JC}}!>SnGiJ@-{{bCps!&nsskGsDhh6`ip
zuOemG%an_Y=seQ8So{+40Wl0z6qgDI2?tAouMU}jAu$Y%VOR{8$IO!B2=;}>W^coA
zIRk!03?miMl`&i^`KTDKlICbRuMu7?<8N6e___wxbrN1Lq#a%}D_b|j%oiCq$1pBt
zZuhMB@ygMSF-#DdD7;A+?5vm+!!0q~8pGrm=Em@747VvUY(MwL%uB1=W4I%RJ6UBh
zv-^wJl$hCPMRK<!_XzERkxY%@z8I#(Fg=C`Vt9~^N8jkt>;4#K#4uA`X>vca40~cD
zYgP=i75ow5940%4hhwN+&sgI{9U@OMAyPOmX5NuK7sK;0%onF~0n-!1V=+7)!xJ$q
z3gu67go)v4cD+UxoA)y@JW|)<SKH6V%%)!kWTRydT`c{oF#Exl#P9;EFNW9Hm)VA6
zcqN9VG4pF7>c1>PPOoJ#ESHl=FG`5?S`owRl!rq4z9F?h;VsGEmT@Yt482yz@NNui
zWB4qF_hROCEjK4zsG@s6h7VLDABOd^M&zRyJ{I{Tlz%G1mcZfV^B8`Lnb&p?b0LU*
zDu(qjY>45@7`D^CG{1^ri^$iZg^e+63i)OcTG$#&zM(<!ZJ~tC;QJVOa$Q5cWni7|
zh~WqM?iBtQGqZwVC7i|ka}2-4%>IO5WB4tGT`~O59d9;Z8{r@F+7rW{B9#0U!*20l
z-@@N9?2Ta`2Y+@Dok_bt)I1;(2#J+!RJM_mSvsrOsAi+OjjEE+a&TBp4I52tG__IF
zMlBn)Z5$$n1~#7>4(_9<XQQrokOqdWFDK3Nd(4J58rf)UAKY0%U&@==Xl^5JBVnUO
zXeVl;rFi6jt;OWDg$$b%p&iFYN<1z6H};I2St0dZ5$fk{6ha}LWgDK26K$Mi!)F#6
zSx4A7(&lb$tHL(7o>sPLv4;u|vvIhM>o2xi+orzSNXWNfRG{WF|5$Bp9A)EZ+uW)q
zgx}h<vvG_h?S=H}AabmYj-li@CQ1ARVW&|3N6PAK<76A%ZJcT26x$r~)6K>YN$XT4
zk7L(qRA!nrj-4UW#YR_=WfC%*yc6}Xah7eq2C5Y|`8wN17k%2_(?%~F=g`Z>LpC0^
z(c8v(Hb&XFO366i#sJ$4%YAJ0wb9QuM{8av3CRVv`6i1$NbPUqA{!UmxWvX_&kVm$
zZ~~xfG~fT)xYWiVdf6Ce<8l_DjUhIM%1#sg(U>>80UOQjpkZ@sxQ!7uM%uX2#uaRS
zx-&95?u{YmPmpP!TUm&smB^cIOtNvcjcaUNYvVc_H`o}*%3^ApTVrgDwNd{%>)Phl
z=k+YU;Qm;DbRBQwMjI1t+{8Ow&YECz$E^92DR<v7E|PxyESlSZ`5#gnx3X2(xYsuC
z$0ysk!^WL9ZnME1eN4vfO2$;~|FKcQF<;Ip%ANUKSMRf;MQf^!`)oXDW0r01;L~hO
zXQVb?*&8E_v<s{mw)s`iOtsPngh8vGP0P)#IkuS<L~EOZ3d-sc8*^=}vGI|OM{Ufr
zvDC&g8}n@}u<?wIXO)bFHl7rD%;r(3ctUo5Z)W0Usn+N1!^YDL(#+yH2DHq&U`7_%
zc;3bm8;jZY*b=xn)|C7Dtcm;0G~)#uFR~r7i8itL8R^S5cI~!aQ7q5v)QBfkILmFk
zYGb91Rq}ex#_KAj6*gu}Ff%}!eZ$6^%IsS<-j*7>SO;BHct?`=Y`m|4t5tgMvaxaI
zsf~gk*!WO7UUQ4>jl$}V^|6glZ0u28d}?E@jqNtRv+<dY&ux5dW222PXv)Ty(qU1o
zx3NJjoD(5B`G<GzAt(Qe&1tMDmQ9Ss#y4#C><ba2v&F_%MNPHAs+67ktZgjJl(nI`
zkuZ_p+t^{_7aPB_^V-;H<0l(Gvl%qAepJ+~dM2BV?U1U*W)L;;HyeN1+%t(?Hh#D9
zhazHeQTb2yTm@nK+<mRZjI+d;q`z(KwXx5}KOElUs1i4wcfXATHmo?<z@BJfA#TPf
zCb&}E3}plBSmbdo`@~T#jv5NW&ccAz<L01L)-`icGj2wEMt#42jm>6rh=S8XojB@-
zyq-vXVS_jtiZlv+8^_T^oH=E{=5e%$V^tjQC`m2j$i$J2BO+&17!%q;COaNSBIHSt
zlrSxH;s?+E&BfuyadjNm#F3AiqZH3z_TwnTQH*0rSF039`#3tpQI5ll!;hmPZno_m
z6Gy7P)hceL%|~doJTz{eSq_Wi@Hkq>&Bxts;%2tP;golCdL0=@TZWCBT@Xhr2={l9
zw-YDfwks;P<2O5Tbd2MqI6B919LqCqcD8hq+6i&&YHj+_ODuL+C&taE*-XRAde+Ht
zoDw(RSe+insZu_TVe4B}>zfCSGaHyAP^d=UHI8m^42$D(2B~6Bg5n&zdmLw~aC*dX
zR@_W_&yM4QI4+E%XB@raI7h-hLi(N?M{n`-gy#$S081}kedFk-7V?F5AXCymj)Bs-
zNO*A^m&7qZ{FF8aL;YFZx-^bKaSWFHvN(n?g>9_8d#$08&^~!DMZr(qhsVvXo6&KM
zh?~3H719|gWQ<pej1pcYWbkWvbT)VX$8lX8^W#_$$MwqfoVfYSVN4uj<G4YkcbAaG
zH7<_v;x`H>#4$0Bn?m2oA~&;+Ldh+0+$uh~uPJR_x5aV0BzJ^5cZLd6MDC8`o;dCm
zpDCOwWZ3)Sm=^NsBKHet2*1x;4}`uCvi3thTZBXRLu!@}3)u)CiDRxfThya*%nRlG
z*BB4RSx6@<rGfQW9FMcod4pErJSG05klP@imXN*dnK+&mUnE={%Abql`H(M(;{|aJ
zUkt)W{+C#5yb;9lipWyoGU0L|eP88}BEBM&ydK9J;%|nMx8is^<SXOmA%X!{$MJ3)
zoVV9X;=MTDkK>jEZcX5WI6jQygoJ6>YvSPcwt0iCk64d<Y|%{Y<2XKv<I_0S#_<`)
zmIR^+d>+Raanw%WkObDnv5}vW#jz=l^>J*7<I6a{Vh4<y4UPPmh=*qIe2m$gx?4uV
zYcqRm9KXl0C629ed=tmFar_v^PjPHhD1OsK{q5r4#m$FQ--p(Ai2M-8P7zw;_eVdA
z|0?`N$RI&nzi}K3ekvNrpK(-9ph^ONg<<!K>=y13{w<uQbnc7eA3666nWO`8SP7F0
z2rCJLxT=cR5>la>NOfV21ZpPCxg|kriNA8#PoQoBKj*AQ3D8+jnhk{Y6DG^Y46_=_
zNqv@K<AgaPyGa5~6{=an+`%uG&E^TTkS1eqnJ~wgFs@hvb^;X%v`Qcz+Q}r4NFbR&
zDwL!}KBxgl#FxQr0=WcSNeT%R6Ud9RB$=21nZi;6<pjJ0He04leCf~*y$(&_FgcG)
z;P3=mCvdEsZ4x*lfezwK?U4x_mB7&nw3Q?%$#&v2*k0rq;lGgv>FgNl1VN5Z96WWr
zQ^MS5PfXyX1Ue^hasp>3xJ47EByeg1rzLQD!pz~haJ0Fy*$c{jp=Yo?i@eI6|J3A-
zK-f*#U3g{!JrX#JWnS6r?B#kj)p{jxP6DG6xGDkKIXA&?PObh4^kyFQ_;6kV=QEGu
zeMI^u&`;z7;f0|u&0dti#k4QU5aEE(cc93n!a>5p!pnqQc^E1(j8&h&aB(y2i;Q50
z)pFcOIj;<TDIA?J&+j)V`y7I<me)0`zEJ171g;PH7?H6F^JNW<bIod8!i*>5g*OT(
zBrs9rCgIJ(Nx}_jvuH4x!v*_J5|xs;ErHt;xFdl(6XyKwJqg^!+R-lA=?P3pn90@M
z!h3}GCNMRD`^4!rE%879vb;Zm841ix;DH3TDX9;#Iudv-ffWhNPGC*~FC_4yydGkV
zTnta(;RGI$WNrcrL>?6~gYy!YFEwiNV`^R$K9<1a2|SU&lTuqGd@6ybMFJh_KO^U}
ziG$}rE>7S%NuC$-w7?}Hp)$?BB<HIMyevY=D+w%3U>WnP^9GlPaypyWGAVgIfj3xj
z349^1Hxqa#fz{$~3Exg&rP9w-t&)V~T{hGNK9=)+4*pW0%?}mPnoy0JABi&}ayI5q
z*iZQ{c;VUvK2yLk1I<~8>k?Qm<!^->gqsrhGPLkj0$)piqa+N%7-@NP0$Wr><Xh$S
zO_*Owcs%KL3BOC=dyyRp{2)8@rG=dd{FuN`91IiqUGiU~_M7;x;z2~aBq3+ie<biH
z$A85e_)@q#Ovc{{^HI-U4H5f<{|Gr^>`&l;xRo>m2tyGoCvj*Mvo=*FY5D^1vsIJk
zZd*+{RH&Xr4e^>njyV+8PU4WHd3R8Um_#%2x(p~%U)Vs{P)N;2Ni-I35=wShR`aA8
ztav4pXc6+3A`xLUiC8GNMdC>$LdgpXo02n~gd>s(eX}CDB-~Jv7bysfNt8s&LQm)m
zD}=!@t%oIXcoM(3_|--0B-$kLb{Z?wI3j6wXrG?M8A%+OG`+s9@F?NYLJHd@aZD2J
zljsmiIwx_gct_!Jq5SwHP7v=TJTa7?lsx!Hu#-c{DI%vPahgc*T~(JPx+ZaH5`&Uv
z<(VISbW55w((Xx|nM4mJ^1y)$lIG5GR?^&dd7UlNQ`k#*P7>#e^cJ2cq~`e|eUj)K
zO8SZLZq9M+!lc3eNn9jCezC|UNemDfC=CAFJD5C)M^dKVha@pnUgJ_2mc->rT$RG;
z6ow};B8k_Ncq54`l4eFXEop9WBbAFQlNd!!HP>sBxHgH=;%vQFi|~*f^6SKJPU89`
z#w0N|)VVQ<8$v!ViSZ#14&s;~=fos#3gtXAnbsyHaZ3`nN;o-*J3`;vL~a-I+n+m=
zxGRY%a^9W9JxTNaj=}E@^{29F>Hj$Qg%UoXO;^6|SF4+m#7vO~SdStPCNWE7w(!v;
z=7>Bbe3*qPGWS1tGY5Y;=L=cX3zDG1aYL-fl6X9cCz5!Q-8qSunZhKVPU86_mL%~^
z63-^_oI))UE*1vH8Jwng!wm?9FUa>rVIX`ZiKR&_OJcdAqkbTNRXQt#ul+|q@O?9h
zx2T`O+P_T{Zzo}=5Km!c604GUCyCWb{LF5c#JimQC$S}ottzzllh`2gK@uM(v4)+6
zO+^wm_>YtLRQwa+WPPK(R{XP2X9d3k5MLKc){9V13tx(VCHz{rQMf6I%_8jMf#x@I
z{*c7CA`H7NiR~f(PUQO}c8CN)c8dSV_Nja5PjZs~n#6A$EmLTc!Y&C9B>AUX{4V}S
z5`QM~mpEhjJBi)mdxU}Iy-Dno^B?w8Wn{m`3LebDAV`_fplS-$L@K3FS)__EuuxsR
zRtmL6Y6xql4xVYr;D@A8KZOP<)R9+RA?5W#o#5SB!xS2&%=|4#21!$CHWxNanY{Dj
zWUPfGErk&wtwmFaiC?8}R}(2Sf@M<3iX>A=iKK<}azwWA*yj}76b?(_@RS*x^C=Wl
zD5X$HnTZpp1jMp<MGCD_W}f58>8B3PSc1DP)ea3Mt!3(%6xyfICWRxIuoT*+4xXqS
zoU444j4;&EDYO$0<Q)|D*c3XZ%!4X-MDSw5xCeve_>{T%o{&PP6i!Uxq!cbn@swk9
zPT}MfdZy5e1EzGS)-{Dw#ZL<*r>Ag6$h(MiX=HUvp?eBvrqCmWvnAy3v>2S%S)mR&
zkJvg#&ht~~lft>;l=l`nFLm$?uD)_!m_mP%ekoiKY6gdN5rcvE63K^zz5_%Crf{jq
zAmL!)Wx`;99m-pPoR_CCLS*=Ve6L7hq@0Z9N)e`TR0=`ZtC`3Yu1n#1det&tt)7y$
zu1%TGb6C`4QW%@U4J?F4W`_)4l=F_ZNK>8WTCg3T!i_0RNMWMtXmSd-iQFW-IfY3g
ztgKs7xK(^vT~l|wZckx`BzFk!3^nf(nUccYBKHXI6;4%mxKB7OZ0FNcxL>~PAT&Eu
zoa6zK2UD0OGFv!D_>hn~4~uZQY;FpVrZ6vs`6-;1#_4G+NMRv+cN$gFcr1m-Q}{lG
z9VtAK!jma{nZj2oJjG(vm-UNMT(vg*86nBDA{VEu#VI_O!t*ICN#Sh{%PG8&!iy;^
zOPOC7zm&quN(1|NGqvhh)D4&FF3;Hr6Ul42GW%)@uSt1@O5pVr-jMvw6yB1Ay`Fok
z_%uputEBls3LmEMjyUbC7I~LZr|`abaC&4A%Nj{O59BF)oWdt5d@3guJ`-7+GVdY-
z{Ynw*3#D_Nyw(dhg!+7Y_&48_rLakojVciC8e&+^b2g{U%x8;mtMD7)x5910?HnIO
zf`6<1kTL`Eu9R8c+{rP7=l`d``!%nhQusNAUsCv07bU;Ri^~Y)oB4MMrQr|ZpDFw$
zvO9%;M3|&KDf}Jsy(#Pq`8-bkLw-QSV)NjQAkC8*4B@rLwW_93EsYb>=#&PRAFHQv
zOd9*^SvAt8Rn$zQRvNX_I3$f|8nHC$q|N8Uyqcy_Hw}I>%d1`*^~D<q8wwi<8w;t^
zL}XZZtC=h`5AC!_qh-h=BEt)oE#jn+Nh2QmCPb2Hq(su8och@`a%r9(a4>Cd8i%LR
zTF!hLg*1xdr8K-W{4~mPGF1%Ayi}xdm?W*z7*Vhe6%V`uq)r<Nj}jgsJTi^8BJ^b_
zUO{QJlaK-1r|~1-XQ?Dvn8%8A6dsqx@u9p9SAJM2%`6`HaB3PSrOngaAnp!L<K#3(
zi=UDPCFDFCmKAqK8eP)3D~%~>bWNjM8WYl(D1+P`(LIeb)9Aq{H1u(W{H!$2PNQcU
zz0$av_R}~=ZJ>7==cRFO8hk^<KKLG|{b~M<0z(yV-!%HAaVeut>rp~DFpUe-=%2<J
zl}*|h>LST67G5G8Amn5q&>1XiLxh(JgLife&VDgWlFQTJ7y846BqP$eLVRQzSEeya
ze6;YYP=~<-&NPtox>lyH6JDP-Z^6c-F;?UT;W*)VA$@O5V_sMD&g&+VYyL0Qn!C@s
zIc@$dFe!a-mU2rPw}yOj8n=nxF1#a@-^m`N6M*kd<DN8LPvea=?oDHA8c(LNZm)Hp
z3S^qfoI6-vZfZ>zzdwx`Y0ONUJ(F|Ocr=X%!oK-n8ne=voyMFr9!ld8$@$KXwa)}U
z%mx#VW}`Y-^TJS%iOd%+5H1w{d94ZfxcC!7ntDnl`E(l3r17j8&x>K3T$IM*kUy8k
z^WsZF$qP)I)&xeUt(PQxS@=pCOGTCmmkVDNz9w8DWI3Dez=P;nZjG$B(rB(dLL67^
z`qrv6-btfl#yl;qPUBtXG=s_+yqCuNX$*95se=#F_%Mw>)A%cmHEDd5#;!DePvhe>
zK1t&@GfY{twJ7&#+PuDBt1N$(#^-5#!5T^9Th$0#&iXXIOyes#H*l=eSyEr8u`!KJ
zp$<=x;$c=)-kipkG`6xvxb0KPCZTU|KGn7~Zckd<)A){KY5L${j6bHaBee5F8au^<
zSbhrSKd13a+RO%N?bkGdXO_Hn^87((#JuNfyT=^H$V%MJ*20eL;2Z~kr?EGUeQErY
zHb0x-^K7en*7tR-{b?Lvr*2?A5@%6c4w8-rf5((+B?pxqRB=#M&X|L04yrq7;Gm%-
zHH3#as3}rQSX;>8-0E3Jysm?KBK3vb(nc>TG?KH0u(7a-gQgCei8mMiyEBSkWVe)r
z0V58g;=yiGN^Cjf4if(fm2!}F;5f)o=-^ZbSqC`>CptLEf$Jdem}7H}bx?3nbj&z#
zbaSiZpzNT+K`RHIW1a|n#~fv_tc!Ur;KCHsf2f1Q9K<<jJ2>1yYX@x|9Oa;mgCiUq
z>6mSM)MrcJ>K6a^$`sOhG;_z7$PU_zw3G2J(xETCXq-0rRdq)P$2mA&dFe!=vHb+;
z^Y`D+>g^S)m@^PY)LGU}b`bop=QP%!gR>p<bZ~})E)LFgxEaIjkm>3mh=>{K=AgUM
z$-f9KO<6ru?`J6rri8!UVPY24v$nP}xjxrHZwHq+7~q)2mdSgp^GLc|=c{D;Fv}X@
z`-=2)a6u@!&_RFki-Z@4a`pwjq~M+<{*H|&YYlQR*fFPAzs$1{91L-AkAr(140SNf
z!Bq}MJGk7za0gd780nZZNO@+|2$H&H{kFf3%~=^Wcg8CnjB?C6JZH;H`PB}tad4-D
zyBu8W;5rB69BgY~HRnMqjv2t2*)b0I&UCC}W-@f%;BYcys)Hpw-ocFw#dn3mi4JZO
zx!K`4GZy8O<YddaMeXNS2a`o^6W%VoLr5Jqw!1VQPH}LzV@9(MI&g+nGu6R;4xV%H
zyn|^DraPG7U?wG%toxNtj{Mv)vV^m>BP<RJ91kB*f**7+%fW01a~wS6;Axf#^}}+0
zO5_m-a~(YDV4j>$gue3~EO4+;&c_@)E)qQB^UNaF>64*m;0*9t2a6?NB;;;~p!WF~
zzQn-`4h}f5GI){6bNGdh^^b#>*$g<Fb?}peR~#&5J9Mzz!5Rl2Ie68<YYyIVu-XBC
zAjsCfrnR-g(P2{#-f-|HHCvn7e9OVx4pz!*mD=i_4i>$L^nF(nS|EQ<F}^PeqyB)c
zOFY@w_<k%4eEQz*;1dU*I#{c|_PK*EL_QPpCs6FU>l}RP;41}R?_dM#MbR<%*A6za
zavf}Ou*o_2upfj9bhgUQx596vK!d!t$r>$uC$I12q<n{i9~|uDFv5*_1FYb;O+TwW
z?_w(z`NhGnBEJdQc-Y$iaPTL`dG%tp+rJ#_cCd$LE17vqAFlG%v9c@8&Ha)V)?Nqu
zr1_c}c|A5NRb}w&C}hmRM{IaJOqD&NN(NOkI4pz1GpLq9^^CcxHO!d126bv=P%~rt
zQLT(wI_8wDb_R!JP$y%?1inq<RaczOdKuIgZy*c~v!%60ve{VJB!i|IG|Qm5oM~YT
zVM}2|7|kFiVrLE>#Sjlkf<#`loD$(Pqa%{ZAWQpP0?MEq>bM!?Gbm(Glox$VGDX6G
zL{FN&utL~MNZ&)5Q`_ugX`MlvjCtZaGQ+Pdts^pKNr89j`6|P<@}loi85}L%E|eUT
zLHm$*$lzG<uWFecP{(C(d<G|E&?y7QMaIR68Jv{C#w<2v(K&;YGk7zDw>SmL;M5H6
z%3w+cr)6+@23KY<DuXjJ=#nw-w%Dmz%dhhmKwl328FbI!Oyz=!zbJzqAwP>L7w;+T
zB|JxXZU((GI4^_qGq_NaJ{k1QpkD?TXd1>B#~h|OSAVmTDHDDf#J3FnrO7g3gQ4(Z
zwi8JP2nPx;6%G;(W(j04B!i(DTp`J@3@*=Lcm^XB3l|OkpD1X2q%?yluA=fDb4t~n
zD$LOtT%Ex+8C;veY@K9#dj{8KaJ_uTWH2#<n=%+H=M6#@{<sXrXK<sO6Effxgr(Qb
z65b*Sos;CG@2w(}L-}oT2EKQQ)5rxHE$`0Yo(%5IU}}cH$uqx@*s<Sy$kS85bGk2s
zX&FpcO>yG!LI(F|Fe78e!<oV-GI$_^2Q!!@C*=zmsrVe>L+p|nJQDiO7nz&EqayQI
zi8@}7Ya<LB@P+L4q5k6{ls_3tp330qkUt~xYzB)&77L#f@+j};GguOG8h?@9N=vve
zW$?22E5fCre3{7d3|<W-uZgV4;Pp`QM#lV_lXl+DU}Xl4vS^&estn%A;Li;H%3yWI
zJeTp}SydcG-{n(42JdI^K?WaY@NEX$RG4cr_#%UK8GMv6^E!5fk2B!>=aURR&0uW?
zpGoa=A${pZ++<nnGuV*9HyJZsWWX;o*c|G7mBH8Sk{NTxI4=g-q*h9@CDhp}Lf^pV
z_6)wu;FmBB)cjt2hwz6Cc4qLSIOF<B)`ErNpC#m-<<|^;<5;Q}wYwzzUHFHP@6dUT
zJk<OxZa0gllC>v;zcbjI!9Epf?JWMuU_S@;EUIO3AOkB4WX*`piCJ(r=Mpy)Rw;|h
zl2^%^664PViPa^c8W+ZEh_lRVW>HHz!P+=0>yRw!WKHeY71k5dSzn}quwm9b#ZcHJ
zi>6sTn#H^<nq|!o9E(}=YM^=6%zj&B(K3q&C0V4hNM{kt!p@qBSyC9!B9S%oH%i9q
z;?DLy`>h8!@@J9B!p$O|HUE;!W|0%28kKo*l&0EI{DLftLe~5wmtG}VD`(+l;b&2i
z#T8kM%%W8mhh}kB7H4O1SQdw8aa`7P%+^AZW3p(I#Stu)EZR!gE_<-M(f6n<j?S79
zIOueg1bwhQla$4=((fn?<iz8%I3bHpS)9m#S)3u?ld?EPq_gnkFbFN5Do)F%g+lT!
zS#+1PYv|i8d+^;ceb1DzM=0r;MK4K)WN}Uw=ZX)^qBk=levz_peij$V*+<w{NNfE>
z2Jz*u)cOmVFq5ND=Ms?t@(POL(kuprzJo<B3)4fJLnRp|yj(auixDF9rR6KL7?s6s
zS==t+RauP7V!Zfh;nl)xvbdHFMwYLaWXykRXRIVQ2!ry!QGAkcf^cFMH;LRV3}PqV
zBIm7a&!L?8x+9A_<(!qpU7>t>7E`jgTh4og_X+RKVyXzEW^qju5A5F`@)=6)%q$)V
zB@c!{W{b=bJ`@Tc7I{QCHx%-x-t)6~C5xq5EKob=eR*LPk7e<A*39mn$l_U%CxuT5
zpBB>hne6{PjdM{Ji?eu6Ue9Oog2)mfX984yk@mBAISfl-AYYcn@~n9R>ckGHG34DW
z-pk^(ELO<*dKN21IL^G0#hc=93EviGbSGUU{*G|9kor`3Ka0QEFtYeKix0%<{7_^K
zdlP5K-1Z~q+AKH%d>ZP|mtLP`@ww#WUu3aP!u3KbZ;;oQ!mos1hsv9?*pkK8EWXL&
z#eaBoq**QG$_$U=`<4Sp4j&w8@deYiEVgIyT^8SGv4b5yhmJY?kj2g{n&i+lhaa=}
zDT_ZDV-`PW@e9kG7ngm6kA^4G|CYrrNq!fy(@}@l{xxRWzdMWl9Nx3olf~as*ek5c
zfoP$%k9Pq%$r;4T0Xfvnp;nG>*sV%ARLg+|E9X!phpOU1EL096s-8oQoJrM0MOr&&
z?jUqFl=2}t)RAvpVLf4eVFO`ctx*n*<zy5LPNaoqIUJEg&zfkSLyH_*<`Bstor5Fa
zXbuUHn9vq7R6GX``y|O6QaN*QC?!GeGSVsM;N_6bA(w-j1AU7*lyb<+x1ivw>lh<J
zC=%-UIaK6uSPqBh&?=1LPz7gPOeC?jEVPkt5Il(b$Q;_r>!=)#R&kA13ftvyOb+ek
z#d7GNfI$#iJ1&RgbLf*p-yBZJp;Hd0<Zx;ZC+2Wc4xL#Ys$y#LV$Gf`33(L``#GGR
z!`Upo9L|va?n3%@$)Rh=yNNKyGevp`&kB7<sDbs8la1jVk#lqCEplFtUqzW*^P085
zVhQlMuU`%q<S;acVL4owL;oBGGE=#Oe+=RO9WKh@VuiXS3_C!CMa}lil=B+I#>N+p
zIb0^MAwnjS5nV1X`d*R4a7ic}ku!O3zrY%CjP*JH|Cqz59Inb?bPl)VaBB`%t5LCC
zjnCm4@oR<G39lE95mINY$PGD+6B*U$;9TfNIVT7w=5SLEf7P;XW*uoIc2e%(*~OD{
zxGjguE~>b=J%>AT_$r65bGS2yyK-2b!>c(=$>HuCp333r9PSAVX9hL75h#bLIef_N
ze>qHJ8hmSd4)-$)oz164C+Ol|8fWJ4Kn@S)Fe``0RSvUrn3KaJIn0&wA>qS0@W&!S
z9g#em!#v3s<}g18KCJ{>j$J-Ggqn}BQ>adfPe}PmVel`HXT)F3;iVj&mF6Nz77L#f
zJ}+dXOGI7}au0J$&SP`tOQM%0c_oLXBFluqKPX?zVMPv~<?wk9ujlYa4)1fc%;C+P
z*>O#q%*9(dyq&|!99HG<ZYX~zht;wZ<oDlPzZWWeC|_FmIEOXj%-}~kFuxRjBK$Pe
zSsPZ$7m}>YVLe9-70U*-K#r^F0oKEO3ZMo38)ah-n{xO&hrKy$&S6Uqzvl2;4qJ)*
z|4R<v=FCi$O_$Ma<Jc}c+jHhGB-f0$zGEnU2qxSi{6V-=$a16FPb%=A86;<ZFT$&J
zGwfmpn_K)fz;1SVz5-@~mF6b=1dIi>#`;Un1AR^D?Gc~OlYesfC&%A?!g9^n$ga1a
zO}aK#@}v<?V^&&l@z6r6l4~L=@jC@2yQ+(7E*iRM<f6KZ8m=k2dM;|ZsO6%LoJ?oX
zRBF38L=sw{*}5U;pJ?j4IE#lryC%!b8kZ&-yJ+H~g^QN1)?;0;Oq#jo)Kf;$+%*G8
zHzthB{w|`FyXIe|^x}{blO5)Q*5WP_t|`)_qDzHQq~)xvTx4D3D0i{Nh3g{k;sqBk
zx+u6Px;Vx~dlw}aW!JpgZs)>t%`?S|dXeqBW>Ky}NYcv1p&>ua#o^+ug>3?P=zFA#
zwjn>t#nB<>n8~?>!$n{h$GW)F#a%8svhexEB{yWcIL^iKE>3XK$wd#>+#F97l5`O{
z$wlW-a<Yq4LVl`?)5Q5;bvm=g7s0~dg;7^|brW`Xai&PH>PyRKxj0*rp2Ac3A%Kf>
zXq;~WguR953D0-YN2IUp_hSpGY@X(V{}Es4qQ8raTwLtpau>s0Tq2v72^rS_7Xw3n
zsmLJVVBzul@x%}pLqnZmBK%Lp2p3nlxY5M~Nk+Q3(#0s&ns)DB73z-@8SUa~HY)LJ
zU0m;CjQDk~*`V@jT{Fm!Wows^51tfqRfk7mjh7^N2S=TWE+)IU&BaY5mUXjyCkby6
z-YTRf%Q@J6O@6zCcL-U?Q(V(kpJdnL{(l$uxVYEFR2Oqt?=J3hG0nwH7Z13Y?&5wn
zjC$4#7qhz`yc6k|MvKdX54xB|xy(|?jB}xt^0PM@^013XTr6<0(8XLAkGh!WV!o7V
zkP7TCRA%yc(fOE*$6Y+3E<;IRjf;5nqVp*iPrK%;@MnaJh0nTJBr+jo(d#)E&%0P6
z37!7yRv>@L#mg?1x>)Ao6*kLyR;z+p;iuW5-1g(*RTrCFbckB)3$MB6Gs#a~tZ?x<
zFV6g3yyIfEi#J`oCCS^a*}Sn*oWnBtDoLpPE=MO8KF4|2th2o*eBZ?fQvOi5M);AC
zL8wOjL{6Go>*6yPpQ{|cRB?UbVx64pg&SOquWm|jVr`Y7biQ`6QNAoL%83u@GgvN%
z@>un)F1}Ik7_5c*Z`rAN7jUuN#dqT0yVxm0`3{jEg#0<_k0L(_*#Uoc&G{shFQ{Vu
z#^#a7j68O^_?<(X%Y&?~MtL;O<4=w-&8)v%>~^t-&9$jjD{s~)>T#~<Vy|oV@b44;
zBcyY`$N{01Hwwt3l1OD?6=78&eXEI77uLw5W+>+}UF|#$$)iplb@Qm7M}xfi`8BtG
z)yrc-TeAv1nj0!~EPTVf8C|z(g}g}~P4niYtbutn%cFVTbdv#jw8*1n9v3nFc|`Jv
z=26U}ls8*SVtF`uQ<!$%jG1vENkSwkOy!Xl37$GLd1Uj*<>BU$&!dnBS6un+E!UIT
z>n|N-@xL4VK9~KJv6u7az?KPI|IfqEqau%1d7LI|hYCC8abg~a<#Bi(t@CJ;$I*GT
z%i{?7o>1xFGWd~sw3UQuJ1UQVzm`2l!sGI2FVaDHY^d2$ge%*}i<}V32Q{@$3i-(*
zo%86})}q-{@;Eh6=8004X@sZCc}5;x^5~jJw><hO0o_9jL1NC#qlYAC<#9I4MEpEy
z_R8ZNInT|bw+QpKnfHQ9#y+p}CF~>Yn>S~F(U<ZIB)Kq;{vs^T1N+PgNSEZn-vR8Y
zYhJAI4*0O<MH~$-&0`RooJNMhd0ZwwB#)ta49ny4JZ{V5_PmxT^B5&EB9ANb7%9$x
zSLV&`T#n4NMsgJ!Ngh|{ag7uv=W%Tw*X7O7O@-?vB$<%M81b>f8-(M8<Apa0gHY6;
zDCbSWn}w5vw+L?)2FYNMJMy?w8M!-;yW}+`%p-kyG1>P>PRsY^F*OJ-ooT}9LK>vz
z%sd`o`b)U2ga`AOmB))kyi~;OJmxT)MRSjSD36Epcq5ND^JZhoBYDhaqpfGoTDd^m
z1|H30ULNxm(Skgl%;Tv%7Rvcp9*^hE@7SIQODTx=={%m1WQ7v*tdy6DFUn(a9?wbg
zyzph=l006J!i&O}gn>2Y^p!l8N)nU+CCe4+)jVDkp@d$qiwB|J%H!=k;sqoMSeeHv
z4iN>kDBztuR_C!Zk00}RH;?!7_%@GidAy&;2YGyz$Jcp$s3GXfy!l1Tnmj(z*z$26
zpXKp+9-qj`_W5ZZYsDYtewa$u7kTq2>bEdYrt8Gl3pcP8bv43X8c{i}a`f1kH+O2j
z58aeEcXp<Ka~@li{;gq-zG2nqS6SQh_%4qfdHj&aq+00AeG9hrecs&HIGXW|Ik&Z(
ztDoroL}4D)3aDPdFM0f$$KQGEW&KvNj!v6x0KaJn-Id4hdHlhVKaT}^B-z6(Q^F-6
zA?GuJyoO!{?o(?2;aIAZUiP!Qv3qI^w+d$P=LL~U1ymNP63VLvPVVO{pk@KJ3aDK$
z>w$mP0_PztiUSSJ$ESR^dq}}F$T|hoEttW)p0K{KK>-a5xUzxOsDLH~aAas)z~6c!
zLt)bbn#q?EdJ$U|%%)tsfFYHwNWlyO(E?%xtgd1PYI?EcYpR7O3rH1kRuN|xkuJa~
zpp*JVrhse#D++kMfLsA?0oN69eF6Cb3I$wJz<>gZ1(XWlJfvR%<pR6{PLtCwprU{i
z#ajv66mUcVhl*4GFp<LxXf48x=w_o=0c{KDSio@w996*4@@h}cFTV=rZ`~xvNJwQG
zp|gXW#|o)%e8D^r1^d`f5T~<K!R%~jkdvg=S$MMW6yd4D;M=0p3pk^IE(LUzuy+C7
z3g})yPdU$2T`=miMS8H@L|CM(M}CV$(yL(Zt>;Le<XjfJQp-^16>z@fl=LZ}Z^-Gz
z>w*F<l!Uy$$VCNQ{J%N_3%ESgxwL>m;)8{k35SHfLkk!t&X&)#(dKYDM-*^H0VCO3
zLe0?yj1s>pl&~nS4*4}A*RsZCWK02L3%I|48Is>nz@!3h5g#WUU%-tb6ND3mHwl@B
zo5Rw$wSdVIPA}lL(D&{FZWq5Jl-yasUE))OK}p^tey?z<@IK)*;lHKLT+A%sfdZZ^
z;Hd&0lrPgTOTCPhHM@X0tSq*Z0_GR6pnyjTm|MW31<X@^xwq<#W@etiypwZ^$m!O?
z0v;>i@dBQZ&W5!4iG0wJsnd+l;Fk4t0nZfhykZR6)w5yji$oR|@SI5ScWkC=NdYeu
z@S=n-6|gMSf4P8H#FvH=8eAT5;cLR+*XnN+@MZy<3fNr0TateeXmW*LWMu)XMBWMI
zs|$En{5>K2)cXZ9S~ANY7O+Obj|%vrfOX;@3qL8~QxT?oZ2_N&e=hvD{8_^5L!Axm
zzXg0H=hp>n6bU{Oq=kTNDd5`zw#jR&@EcZ~zWCcN=kFXgMZOb$U%-w6ekfpP0Y7rI
zFW}b#ev%h${;ZD4Gz8agp?sHe_pkiV0{$xC@FH3lvAcjh1vDt4VG(~z-zow{>=oZv
zz&|4U3t*))iUV@;#z$VMXokU>!pcQdDdP0TR@I_e=d4}?TSc`Z{(#Y`Asv=53#wKT
zwToc;IYgRui>M=Csx{~MUqpS{;o5#}qfB9=A{rNwDI!}$lOmcHVHXjn{UVwxV613f
zUbm37ND(cIrYc#yn>qdm3bI3MybC9aNJ{8%Qk1e%3dLB`|Eoz!t_ZgXuL!@0d=UjH
zl#2*jFY{O|qV)fTs*r@i4^wHhD&o+hdHM*l!&lWjnx;*t)3Jynbl*9$h_*!>CHXN$
zv==$Lh;|}upRBtM;z5}l`yYOsIAc7%h!ezv_H$y<Jk6a{MCT$-E}FaHX-tyHDZ*2Q
z+^u&;5naT)3A+{%d@IKw>=DH7MVwhg5Bc(WpAurvB6<}upooD*oKwWPMf5A;f+Bhs
zab6MU7tyB(eqXRYW$_##UVOd9C#Jqd^YH$#W)v3|(Z7g`n9d@$R<^cPvF_2SM^t#P
zp83bzB`P|8a(HPGgNhhl#E2pW7jan;LyH*368py*QUpWs4`Q4}q&ZKnXLamlU0&p$
zpv?hFz4#)ah>^?@o1CJabfk4<5u?PfRFmTki^m`FUwe%4>LMyhcx@5a6>)tLV~Utj
z#LObb7I8xn(~G#j2qyIp+ZtEosd3hL)!>aqOi<xZ6y7YnNyv}pCKYju_^n0US;SpM
zOqTOD;qAgZgsewS45o;a+*8Eep**<7-&@2~N$v~f(?r<jIic#r#KYpd^#_W0u!u*C
zm{-IsMi;SW7tH}3T$60hjk`s2zkY~afOR1xc|>HcaAyZA(aK_%pI^i)m8}Iu9yDQg
z*K-H>V?{j9nl0kVqS@&3JWH~Or;AvmZp&JDhV8bI^{k3zazC^8nB94C5zkTH##9rV
z0iU3kNT1uZUXUH?yv(?Ys3@UT$s}(n`&tpd74c3LYgrM?nav_zD`G_v9~JR&5w91)
zEc2P2$8E9P-YB92TV@e&iM%abDO@FdN4UC(cUcrgykEqJlC0y-PZ5?3EhKKR*2qcD
zG2{~!2-C?aH%sZ$BGwl1SrMNX@kJ5e6!C2l>y+8Ah3kdP<_3{3i}*@}+iWQ0wNcJZ
z!p*`hZ2uzk<*a^N$bTqeyZCp)?}a;r|61Ew#E+8vB&3C(MSc--d3;w9zjKybf>XjD
z94d>5mJlmp;Ct3z9QI3QtM=|9_Hg_!nnTGdmr$i-$lfCMN%D`7lKn*-2)R`Pq*h5t
z-#L9vEmSR`b_s`+P_2aOB@O;1)GVP^2^{*Uz>BvDVlYhADWSg9>XuMXgtrFza>OGx
zkc2mSjya7=Xk0Q63r&Pgh0TN%HZP%tc*{@{5#cxHvld!*3EYmpm_Md0nN!gcB_vrI
zoEI&$QX;`SnoJ4V61)=plG!SjEAcZZi+_}JOXeYnZ8EQxS)fydl2Qp}aqjTsRr^P4
z`(BHOd~)&a&=L+S;o=f5DdF%ET9?pQ*=bY45hb)M;g}MRETL@)M@xQG$;{;YX-8-W
zJ*RL4U?H?Gp+m`xrEGr3me8?;GfL>9Ajg$(QVE?)IKG4vO6VjZ2Z|F#7`*Xb^AhT0
z7DWlXCtjfPpTPY;C7f2mc-BP;J$73pR3mmRp<4+(OXyWX_Y%%5nVn8&DPcWI*wDpd
zdZ<a^c>V>rWCjol&yiYhMM{NpCBL+?bzTYQm(2IST+{1QGRv*>CH5mPnH4`eFD#*d
z2^X<V!s30L1}SX0#~Q#UTEcZDTwlVaB@B}B5hV;3xlBl#*YFgGFy5ge!%DbZWVkSh
zl$Nh3VPpwcmN1GfjSGzO?ZEFNSPqpf=HhDABPG|AaBaw0CSyt%E9HsG*A1*SmOu&P
zBxHiem+)Kz>&BAV7{<i&;{EZa5^h$xO)BBml9{61qIl_Rl3ih%G~4a%CEQiUlrrup
z;ZE`rrj&3`3HQ=?E%a|--OZkRl+{a5{ZmW0kNvBRL&}&|!t@djlwg%{e+e^6c%g(B
zOW?0#c`uk*!UH8Uk9x3#xk~V?5@wgoBRrq+=P-9nTge<B^oTHc@DK3O66TdKzk~%P
zJjG_C9}_QR3oPMD70Y8Kd}vvZ3m;Oypp!+)rKG1zc&3DB6*XgL*hS)tL&<X`JTJaP
zNCm2~4Eg;Fua{K9FPHF22}?^@R>JZUwwLf7OQVF>I9QeNMF}fPc)f%Vm;fe^;}6?E
z=kOe1Wb>U8R*SqXTv@^@5$bS(i_rz2?!H^XdkPpxnyZA@Nb+e3e^;_T3VlCT@K0DZ
z`m^&|$v=}YkgO|VeF<Ai*s3w-tY+2*`F<(<O2}BgE@7j>ZW3-51{Uc1P3R>5wuEhp
zE=b$=CG6lZrNaL~)_w|Y?kwR)1>`#^X7J|{ektKsC1aQ5zlrny#m2_#caCq|F36X^
zB{Na~OFFwt*uyNBuvcdHbI8)-He=tXWc*XYxB6BzNDs=WR7T}8s+5i9FKw;U2U@E-
znFW@rW$>`d>Sc2WuU5v$#^y~Q+kB0(87pcEYY91>s8dGWGRkFmWz;L9KEsxgDVvE3
zCvpwS_=2a!N|~LdQ5lWPXi`SgGMbgOyd!L0MoW<v!eD|L5#Ox0R16y{!!9FUMndvn
zTAM5*RW^NuQwU;Oc_CrKxJ;KVn+Z>@47ZGY*(}JE%Gk;WAn~G*LLMXBFmL3385L#p
zFXN&zT9t8V8Li7`qr~5+7Jiuc;X)p`%3@)YW0@SmB$d%tDLIOfiZB^Ri?kCSBWzzr
z2a#ii9fijUk1uQ2vDVc)m2qMjCrM5_=a$hq<R_PLN*Sk?aT+CM^Lo8!8E441dl_en
zbSa~28QsMBpvO5Ljr5R{<m@ue5)b5*1Rsy|lC^V$^y)30^TJT)m(eHWeaq-4enA-*
zvLPwWfi>QtE-vFv8qssdC1ngKV_+GVmNBS|QDt0J#^5q8Q}8Rx7!ukXAu_a#VIr3c
zhYL9vGLct^lZ<4gXm&x)ImT$oCkU@D<C-$A4K;5Nxvq@sMaBrnDudj#$)X!4$#~(7
z!r*<%#4>J@^X4)pi!iQ9BDa)rs|cf}@HX+=g?9)kWP*8n<tx0q%ebeE7g~Ychf}6|
zd7Eg3yIWyu8TXa3FK<mNgVT&3D==M+>i#ljlrgi62Utfw&i3(O8MByR4_iFUE@Ms^
z$9m}K;h{1fE@KPZa~Y46F}IAj%UD^)qh-u1V}(*OpT^60zKkVhEG*-(GM*{p*)kq4
z<B2k!EaRy%x*xEz>?!pulBX4_n<N{x`D9TUi_3UUYE)p>cm?{i`N2XNFDl4#Cccc9
z%UD{*GD!lRSC|W(?)aW%I_XI;_-Yxig*q3&B!I%#C3&NaH_Ldd%u_oK#?`KcwW^GF
z%J@tQjC6Gw?{au4gPdmH;$5SRHD!EM#s_75Na9)yzC$r`U&_a2d|Jj@>3>qjE`Ail
zO+l`;{ea2x+fDH~$EY&a$^O^E^<`{ekCOsp`H}+&U!$`_nTHE&V;P%RBPx^SS(DDf
zfdkx*@=Y1vma&)BTE@0Awkt-K!*^wTU&aq*?3D2x?7u2Q24n($EaNAps*K;u__>T<
z%J{X6-^vIIu+srP51QI3yC$_Wv(_JF{8`5CGWKv3%~^kyxyRM$&>D+^PUih@1*haA
z{`|L${beLQq&yrb!}3tqLp=}hP{~6L4>dhh_E5z`RS(s?gVix#kut`XKy?Xk(+4%R
zJk<7Zh=)3%Cey}<7->+&3{u}i0}o9-H1p8VGd14GLt_ytZ?R0)Xts$Y4{`|g(85E^
zgDpu*4@at<u;oNNL_O1lC?V1mYc1{};bFO)3{GL%gX5u<heJJNJY+o-J(N7;Jh&e6
z9tvUXRAvfUZh<NCvImbrlnY;KZ2!y->%D?KPBnFyhr>Oz^>CC2wyV}2j$k5H0&P6g
z0s}P~VOa8`J+$+1jED9fw>?;gIVL*#GCGn^b5;iy&Vd7LRL6NZ-osrUrg%8PLnkHR
zIu9p$ILX5>50`uB?BQe&{XAUY;S>+2dg$q)mxt4+?4cWz;o%GqT|Dpz`mUbYVaQlm
zK5Ub0?IljkJoI2OdN|v|D*65@q$bl~+BR4IJ)G;|d=Gs*zH_&FGyMmw^E}gExXqOc
zK@ehJma2rr3qADraH)qu9xn25v4=}M3{Z5;?2w#wf6lbtfhsE+pP^Pd*u!NWhA{CQ
zRI}C?&!Q>fP-gakHC53u3&U0ZBRz~zv0NdXrZT+J!zlS)<>49+*D}p=vhc4CYmEtD
z)IqWT!56_E#&{U(;RX-mJlyJGvWM{=ZuD@IhnqRTW~~VxCYn^4YC4mT`O5Vq)`c46
zEe8`|ih{*^8w=dS9UkuVz<}(b*@CHJ`hH;X-IIy>ZV&e;)JGof^)S`LiymI`aG!^1
z9v<~D&%<;N_cP5N=CFJ`%=GYphX>Wtn546F)})2jEDx)*7JKEH0LzETd&tAX9v<;9
zSN2);?0~%XH2{^F4B~tb3p_mQVUdT09v<`Xl!vE1qxQImXI#@~pHT28g-kFlKf|;g
zu%@W=B8qFVhvz&j@$iBN_T1;C%qUvQmv{emIqOvZRF>;M9$xYACOd_PrBb88S3N8f
zU(P;Wu%;>0YaUie__~KTL{_OE`MO`c?O~;dcbQbSSP$<o`)p?1ty;;n7G41-zVG1!
z4<CA1<AJ`6E<ln8n;IvTi649T#KWf^)_VBN!<XzP9zOT*g@^SXHh5U)VOG}a=2|3d
z^K6hT1UA>8PQUiBQHk8dv7%rGG2g<3Ec0T<immcW_(=Nr#>2NBwt3htVZ_IG9=`Wb
z-A4@{J3Rd0VXudM9(H>8(ZlZ^{_yaVho3$C>ftwq`b8aKc+O%<*!2c9wsx`Zves9w
zk+50*>ESOAyFKht-)ArDUE5;%d*@7@{>`E=X*1pb9}oLE)cdIH<A4Xt2Yl1DS&wI{
zBa^eO607*A>Z6)(Mr;~k2@oj{cugO*d^D49Z6AmDsPChJk2*f;N?1>3+5FBpVDW1G
zk16(sJ{tLG?4yZq<djfhOf@uB5E_3@eV?~!dNuda!beO0U_DY2)Lqm^O!~Hv^0)|Z
z3Mr9RJ`VMf7I%ahA6Xw~dS-f@^Wpl)OJ49%l$>6)Q=(cpESG(FK78MdkZh9`A{<YG
zW_g%`pX}psk=8!i_&CDHkv=;3IMzp7A4mCU$3kFqDmvOfTD)gilFV;=-<*<7g^oUs
z^KpWYPBM7BZ+aywg-wpWyiW9Sl8?@^z<Q)L+9Bb{bBeNXssf%yWZC-Y;-j07?moIo
z&Q{7GtGG>zLs=lHXY~*nE^BO8J$>}@ad8DMslYit&h@dt$3h>yeVpgxb{}{6INwJf
zAESL-?VGz{UmyK_T;!u4qvJx5j|&YkcRi-L{Q>J@AD8$Tp@;_f80cfLkIQ^q>SK^B
zaNMABLSq!k5FbN*T<&AIf(&Dk!c1(KQ{GsE5s4XLs4IMo^l_!sM)|mkg`*b5Ql&y0
z4bfG&^5f$s)*}!9@o}Ax>wSz-kO@A<`nbWzcpo=P5~O4t3qhsyjAjKvT+GNswGCDZ
zB{%z+<l`0}xB8gu<2D6n+L(S`yu}A<ryV$Orw`)&KJJpv6ye=I?(uQ2kEuTH^D#}r
zcsT2r?t@nlZ!pPWNzU*w)5imx|NEHb<6$3<u=IS)@$rz9S-<SI%tCOtVo#at<53^;
ze9UJv(A<?3M8YZS${NN#6a1Ku$JrSx(6j<i_;}LC4?cGKc*@7qKHg;`^zn?3XMHU9
z@v4tSJ{J3U(Z@?Zp7Zg%k0m}{2>UV(K5m=BXDs9_^Ot?R;$x|gWj=TZ;qXYWAnHJe
z{52mde7xo3Z6B}ucthEFGb{ntDRabt)Lh9v=;Iw9tJzH?35;;~4QvwM_wj*`4L-i~
z@u813K0fua*2hOaKKAj6njF=5Q(#zD7SkD!&wPCD;|nQJxGo%a)=Tn{CeIA`m5;AE
zs{8oX$3`EUd~ETt)dy$Vn|%Z`ZI(0jX(X`EIqEha+kJe`0bi}?tTxtn${+_i_D9YD
zX_=MITKmz*PaK>pP^AJt`}oDjJ|F*Zl<@JJk3Siak6lU<jsG5&(jOdGU8|Kk@@^k{
zm=Yg*8L93^L62Y*Z&?Rh!hQv$1Qj^o!>Twq&+n^-L3t%fm<95x6{uCgJyfVxf$9~e
zsCzcEYE+<R7>X@w=>hAI3e>4U{R%XYPF-O=Hm%(Mt#pQMSb;_rXk2k{j?KcSu%8-6
zXZ`}L0<A01rUK0?@PF8P52&k&?t3_!CenNFy>n}BO>S;^D9S5}4GTp?L6jmY7Mh3x
z3JQvyqGAED0V<+^qM`_5MNm=f4Y7AX<-cc#_&vYHw^r6(d(NCW(<hV3WYRQ*W+5~W
zp-Tu|Lue5~%MjXy&_0A#A+!#mO$cp6;2I+*8??jQA}>G9ban`#BV!4nvr@u|I=y(&
zi^$Su)9MyN_YiuA5DKA()Ov={D`duArivGpd69%eh=dRgAtp7p3SaJPvV=(zAtXaM
zDTI?lNQICNp??U+gpdg#8$uz3VhBzMZV0&$ypS0u{nWAnFnM&+NM824a?MJlPY8WO
zC<~d?zM&*BNIy9_qvK?rX*)KA0U-<w;dlm7sN;mJZa)je6IfX+E6I6Vp@f&8cxL1j
z$xjR6^bk%Jr|;mPj?M_-%n;5BVMGW+LKqstun>j^rNqSlS4w?@c6D|LBLh4C`Hqt0
zHZE?2Fgk?uLKqXm`5{~u!sQ`c5W?7Ut!`Wh7ltrVLB<OwgbqJ{T@+ZpMC9TSKN|;I
z;G_^Pm4rpa%dem-Lbxu3xgksrVM+*7LzouA)gfFH!t@ZX3}HqHS1FW#`(T-{7c=`a
zCFCTQ9c@+!vqP8@!nM>tWPNIx=RWHAQIPPNZeGZ|gCM^#gzH1NA%yusVip8Fg}!Vm
zH-)e;gqxL}TSB<iw1mTBrf-mmzaxY@LwGraEi$qwgoijphp<@AB_S+j@DT0};eimA
zhj32_%R;y}g!|YwR5kyV08eq`9R7aRtdh4Pga<=dDLej?H6vvnnYJMS|C;(p2&+O^
zErmygj|n*luL<Gt5Y~n8v?Nc2uvX+rAuVtyAU?$^RtI?|g!Lh83gLMvYzSdv2+xL0
zWxaREdQL))oGelfgKXX}gz#brn^~bMXPTlf(>7TtB=M8_N(j3`csGQtD#L9dyvi(x
z@LC9Oh46L=uZQpkOZbrWrrIzcl*nm~7cJ~iyzhjtQ>2-OUltl~SoD1_g!e=EOkTT%
z9}7QV7vtiOkYta@N5UmMEJ8Z8|0(;p;`%&<FGBcI@~=bqMoImOmNkps8^X6C><i&L
z7Klb&zxfea&P1l9$WNts7YN~}5PlBf7Y<Wlgv0nXgx_Sgc^JQk@P~NQF#ZhTFAl<C
z(=zvma3F-rVe>DHgCYFQ!ROE+D{R)9{$T^qlhMB%o%9CbkO+kc8?_3;io!}l3VG&O
zl`xJ9qpIvPit4g<w6I$EuuaNqgw0<jNos{rTgr8W^}?tdgq>B<svkxJIU9!2IFL7@
zj>0wxB>dM{vw-u(N{cXBhS5rr4q<c*qjlihCXBWLZzs||eE3Y)PJz6;NarxR1d^^I
z-Goeb50RdMZ!eMFVe<z=<|q<IG>m~^94~n+jC2?o@pu?^5GoNyQalw%{Fg7;F!Es(
zR923>T$Nrf3{Osf4?r=DQWygyVFi^*r=PHo!uAc6S!MktKSp@$f3*<CapDY4n@sr$
zVGIgm3^NkOiD8@+#t0cXIgC@n7$SbE@C@N#Ap@Q!a=MV^PlIQwQPGRn&@hH6qTzlr
z_y{24H?XtA7#YSnVVuhxRkF^Lkx^mu=AB_j%Q>f#**ZcecT!yt#^qsL5yn_WF)obp
zVN8(Pg<(t#+SNspOcGu!WbjKw{Kj*s_+^1)au`#@uMT6Xl1Kd+VN46sJUxsn1Ma8%
zD(TM*a(Yb|v%;7i#vIn{p+h$auMJ~v81uxhlRj(tdO7{KQPlLw{4f?sP6@Ng7ssRP
zS_{MG=bJZ&%}X@OZwcepFm4Ou_CWI?kvqb;GmJ&zi^EtZvLw)18pd4#zdMY30?u!@
zY4ct=?-SlHd?1YFfzAq6ocKy1KNn??hXdb7!gy5tG2yB}zFK6B@bNI75P352T`NLU
z>zJ=Fo(W@p7>J-k1T)%L8^ZX5!&KPpK-d_@vwRN{#wNWD`GQ3q#`9sk5XOsPYz||O
z<S&Ksau{!g@wS{>gxiI$2)7Ei311cZN1DGD#_MvvA$*R9%Z1GzMG{^+!gw!`zZ1sJ
zfbSA{SIC{%?~Cjfe&7p*w7@MHABle~{6zR^;QLt^p9h?pUy1)9{5p_-BeFM)Z$<VA
zzY~5hWGqa>kK#WGe-7loi2N%2P567*>@8=Izto}*u&Ho8w!XEW^~jlCZR=nde~0l;
z82^TGC=4rN_HJ?OBR7Dt-q{G}R5SkvyyqXQb`Ps!1id5XZE~duAGHouj-W~eM@3LI
zf>sf<j^OBsxy#gzpq@yz2&#)vSR;a(;<W-vZIL=c9&%DYkhc(N5JAHT8i_X+HW5;@
zsYo+n^FYWbT9)H&#5+dNNu+JWoVwFaynO^6L>Pp^&H?WgL6-=+%GoVqo*<~uUCtiD
zo`L4dN+z2O8;Y2I8jhIm&o|)2SOoD1tP)Uy9YKQSlSS1mk`bh&*4Rcmf=mQ;Y}B=p
zjlhZE#TYin;6{*(U{ln*QuiX}E<7TFvm?kyP$1#Hg$Pa;DY5(`=o3L-IZqY#6CN8u
ze-Y{*6G58>RudhGIe>|m{5avjK<D@fP7oi&EQ|cbB_NTLg{KJrsBO_8ufcMj7J+Z}
z3^~sf(szi+&<KW!43FR}5!&=Eu-rzf82d#{3p^)+b0ZiP!RQFii=cB9U7{Eh!TAyF
zjo{k|E{I@k1W!e<E`o6pjE`V$1oI-85W$5JToS>gh}qxeA09F>f{P+%HSb~x{c}++
z6`vBpRFTW1aCrn*$T>N}M>g~AIgxgzMR0WlWB3Vh1Xo7Pks}n&h~O$I(^<7MW=72U
zC)e=fuLx#EFgt=d^1U_!|KoZlhQ8NHNKIOxoMZ3x5!?{L{0J6AusDJx5i_m2F@jqn
zxHW>CB3Q^CR2er%%%?^qM5g4n2yTyHk*wVj0gYGY%1^|6^GF36Ct(nJEsfx=2=0yG
zz6kDSaW%2-Q7HP-&N3mD$r<YY2%d~!Z3GWQuv}^@B6v80M<RGonkyxw=0hSwJ6a6*
zXap?P$0ArEJF6mCE#EZ}JRZRl;>@z2>;9dMGC2dTsc3>f&Cw%*cO!T&g7pz>h~SL~
z-i%;l1kXnB0y{zk&#`#9cT{QEqyjlc$CxuXGqO2?mm+vIg6+!S%MrX1!PW@2NS``P
z7>j6|BuqSuh?3V-q^~P^z8z+SYHtbOmYhyse@6uGNU~E%;Vv0xoxU&0#}RxYvRn8;
z1Rsj*5q>1(aRdzbsrc6l{#gW{NAQItUq<kiqNa`?uU}%{$d^LqbYBGDMbJ2kCQ*DJ
z!4DDCj+zwy7{N~w{1w4|DgP|vzlr}6!LNY@8Z?$8_#=WpBVhHhJuvUAkpmGN<j@_(
zs;1W85&RPYqNotXzcOVhmO~2Sr-VV6o{CXa;>BS<YFa6qE~B8FHvK9-DvGM~ikkB=
z{Mf6pFY}2&SVLG-SWC#{)rq2R6!jEi17Uq3<D~^+!zda_;+GO7O`~WX=rj{)9z}~l
z(lUxx<@DP`(KZUdF4{@nUf4m{QP@eyMndCV#Yu8ebc>>U6g{Ho8HFQxFJbQ}LLwYA
zs2PqTE+>bbh)7fziyl7fhB|f>2?>)zN>Wjz#WO;tFdL+kzAk-r3KO{}g}ks3MKNlQ
zxS_lhMVW+sgnfnn1h0P-$3$^#6a%7I8^u#m{4a{*qPR4Q%c2+<#qm)Ljbd07Cs30=
za1jm?o+za7B$1P&I7Q^tC<aGyS`?>8F;nMtQ|H0D)>eP=AA}kbHIJ6`;x$~t(NUZg
z_>PF;?0}Dq;vDgFg`)yFXWHkndB}Nw6c>tIARHU$j1w6zoDk&?)=i8P1K*28E*4%A
z#iT%fVMpt7@oS^FE{ZFnm@MZM<|xpa8pX7LPZzmTI3tRyM3_83cUMPojU=;#6wVfz
zBlHVlZWIfnxH*b>5?&u@-oP}AF9;+zMsZWX8O1H)D}}d4ahu5PQ7nmKX%u$^ns-LA
zDBz2OlD{j8yCq!CiG;{~!ezpHh5m`_O!NJ6J|JYgD|{m4!Q*~TABy7PC?4VcT5<~4
zh&(1-6~$_im30p5KOV&sQ9LOjpPjd=#MZF@wefhP$kS0gBeFh_Z(xt(8GU?pCCPI_
zU-EnuFGTTT6q}<sDTb3{cqxjPqc{-7!6>#w@d`&scDE?DMzJl5kE8e`idU)6={>ui
zHhgYp-{Flw_<Gd*^Y;xQg>SK^^W|?8J4D_Qek9x}+$DTBiua;;KZ@OQGRTJ_AF#l6
z9w{YzB%#wk`Gk|hPorka{bdxNu~YMW1K}4!esf1jlIK4}@pTm6M9nmEukc$A$eMw_
zRLj~Y$#+qZQ-L47rW;s4vQlcBujYS>;%6z)>z62g75`26yYLTTeOP~r{3YBk<jEd?
zNAXV-)ncd~!@p7F8(W8>=IC`6%Q!9##mu)w7x0Zh3>9K#Q*lLMC1GVDg;ioWO1x?y
zIXVXa)Z!X3Jl4W$9y|PF)|xTYilKH4bz)`;-B4IpNN2qm>Ib}mf>78fkTe!)5<^pw
zW`Uf~&V0aW5kt$EDZo}Sw2q-o3~giR8AC4#+r`jPq`k0%kjmWo*(rw3F?0zeT}Ak<
zM7J2a$IRAHU#&;XeACShtG#0g#c*s417Zlr5Q!lZLsp@pzL6MWF~r5~nE4JmA<lDP
z*dAy(C1+ab+jltmkD)AvJ~8B&ezl4cV-(K|3qpDoMf^ixn4Z3}(?5n|V(1q$&m%P|
zn>4dEJ~+snUGoChRbn`fy=JI2NXpCz6$Zv|d<-W9$yndReCbK~iK;~EoD##SF`Q3l
z41;4hErzpW7|C|h&^kSaGh#S1W`5<v=3S<b#D~PpAuU5yFT-LOE^<~3BZ8XZ6O(_M
z<vB6TtYC5Bh+k=)&GnENM#V5%DPfyDPlPEM6N7)|%-9&l#qd1s$8bqSjE|X<@SBFL
z2{Bw4!$j#{7Q^K+Tol8_)QMqI47QG~<FNl@12Z&T$_mw+wJTzn977GRNXIZm<X+*_
z7^cNAJ%%e|xFLr563&R>8ri4*RU$KmR|{`%XU&RXb_{c3xHg7)f#!7zJ6FhzFf1k4
z%a??b1u@(h!y+l%6vM(8ZkPOKNvMBo4Ai_u!ZxySo4hvi#j%8U3jK%{$FL-Zr7_$U
z!`(65BQK_nc8I+ENSDz|rtXvR`(t<@hUGH*a14*cup)*BW99*h0ar@?kT4|4qcY3H
zKfz8N!zy{Lj$us<k2C#RT%s@I`j0=UAZsO|d>z}TLXk6;XXLv+h7A&Kl=Imbo{M2q
z42;@OIn&G%;8x*6O>hhPqb;nLVt6@*H{zxwx5V%Y$BH;w#<4Yq#qF%0*=%CwR<bRI
zS7X>7!)r0T9>Zrbe9llYycxqsYUFRl@OBIz1f$lD7<R?*ZVd0luv0?z2woTP*iSj%
zk72in--C$0?}rlZ34&1nWARUfp9;AHit;bSzZHHd{3?d8WB5jS-z$mV4QZVE`(pS`
z!taGY#_)p(z5J+u3PxIw8$V*G7dM9j{l?LN6WSR5h~ZChIxEMG@Gm*{$8bR8pzv?u
zKkV8u9E!n`X2m!lQbEXm#Na#&j>xN0Agm&Cl#ueOaU3mPEspAO)ClCYMQX-TE0FjG
z>&RJGNJ;%T8pP2sjz)1biKA&8jpOG3x%_T4RLR=X)qL#PEN<3FDQO-zYla+u*g~3c
z<d36u9FN5DXdG?gXd5?!Os<dBjuK92<EHVqr&%7e7DvZ8I>k*RbkvGE$I&H@u5omW
zBOZqxHz#;^kDHqm558tI>k&uKIC{m=Tf$Hr;kfyRlxoCC98o!a2}8x=;JMs%CS;0g
z$+$UPoL&^B;z-Ali6a|?qL(>go0ES@a&dTZ<l`vBF@Q0~QH-M$M?d*evrN{g-$#<Z
zK~gE{FUc{&V}*Vqj}xcDz##1Lah#xlgXBfCCziAG0>220n<4#_I8KdYu=r_lToK1)
zRzVzR#BpZaoU(OZ9An}bB0e;ZVQ~zP<E%JF#&J#@BjRXpTU0wcj?N-<((Ji$jEZBl
zLeZDP^4Ix_?h@ezag2>)TpZ)$xG;{1aZHe$MtoC#KpMX&j*H91Lir?VUK;3M7RTk{
ztWyS`635gymP;}%j_GmCieq*hSH`hU3RlN5L;Nb~%nao8oy#SlIEX`<U``y@#<3`l
z#c^CmVH`Kbu`rH#aa^wqE)X(>H^ebN;C^Y`s01^qEQFimxFwET<G4*ae!iH_+of|y
z9C!ZTuvDP$k~o&eai3CnmlSAfSsZt>&8zTzHR8R}A)&(k0e?WonV1y{`=I*BO5sD&
zd03ngHQ~u54XnrF;E$!Y#IZ`PWpx~DIP8dT5VDa!5yz7OUn}wyi!P8nE%Hnp>jMct
zsn{6DvvNKc$McL=d{f-~=8Oh;y%@*Kf&ONZm&*C_tqLdnuf)w1XloqX*d}=jTpZiu
zhnFc{ljL<Fy|{?+W*l$D&HViBIDU!a*SPtzct;%X#IZAuT{6XZ-;bML2)!$Ok3F}6
zMJHp~9mfZ8d>F@`I6jJFA6q*|ej&*h?DzryROGWbKIizxWltV-$%lf#_bZXF<M<|!
z?2Y4FWze55eJA<%f$tA-{3!mD@aI6z`PFZ6{2qtJjczv1{nz?~y_Fw-sS=sZzm%i>
zaU6)_phiCqfd9ntcffgI-M`|8;vnZmg$gz}Pve)5e5k2tn{S{h*{E!rt+rKc)UeHQ
zrbpSRD#_7uR<kjCzxg8)uj;nh{Z3L-UbTd^g*_y%XQRH2hPL?toTVLaZw?b{U}IHt
zi*N3DPibVEq5E7mKO0SLG_%p%#?eVsOPas8w6IML@@G#iZM3q{+D022UnlTQ0&Q)y
zlP?Rry^Rhw$`a_4Kt~&$Y@A`^Oq(MTy4X0@#sC{#ZFIAd;u5`$?zWj-^t92-Mh|iS
zrcYsS8xb2(8zKAf1U1Yg!MZ{RI+4t(XT=mGZo?Ky2pKkMAO2e$dB#RT@~qGabX*%b
zao*)U8+^LS+wgz4R19=VB4sxE*ywAU`&2(0$4J;;=<5&G^UMEibEiAm#wj+A6CWsK
z8jiPdg7_d?Kdj;WU%^ibV&sIJVNbO&SZb%q_jGZ3(E_LFLu?GSvB$<ok`J?S4x68i
z;Wo~)F+xGkwlUH^d?qJ@{1=wSN7<Ne<4XCCW-GEW#>V+fkBv)gOtLXn7A_QyvoYSr
z1abceQ>KBLooM4C8y6oTzf_XR!pm%2ZsUq0bf(ytYGc|F@)<U+vhf(3qK%n0uC{T9
zjXP~zV`G+$`8F1?o%^ALb8K8|<GLg4%(HR5jT?@T-zdo~!kcU?v~lwhI=9-m&BpCV
z$QRjIY~y|#57<~D-+P2hZQNz!?j!V<*|^uneMiWbOY)F#g^dSotUN;JVH=Owc=QPQ
zY8z{8Y_ai*jmK>~VPm6>XKg$w&8LNHZ9HXT-4S7*v9aF9h9l(9N%Ep_la1$Xyl{lh
zW)3MfUOqy;)y6g(J8ZmT<5l^-A>3}`H5;!Vq5r0hw`{z9gnXwY?+bU?c$a<Q2%X(F
zKCtoO5%P~UCVa&q$i^q^4mLjHm}%n+4H4yA{+H@;{-E)VjlDM7C(t2*Z*A=30G>dF
z1irKJy`uP2_=Eb_FXBJi_(_EA|7Q{Qf?sX?CeE+yDgRykk6_IC%f@~i2PFJgcu+{q
zzeWDB53hJoa>(Y&g&6~R@o>3{2~<j;ZUXfrten8n2~<m<ikwFYs|NZ^Np<mB!WzPw
z<$P<4*C{8dpFo2InkUdAfrgSd5jGMwE~nX4yjeL(OYt_sR>IcheA|k*D<|ogK&J!}
zlqAqOVaD*D3G_;!i*&jMn%xrUF5V+y25o=H;&|0NVTRLa0--=NoIpg}A9Z7aJf47E
zPM%62oj5!OvQ#q(<O0oX0*<&_PTxx)FJ~cvl1Q<fub-a23G_>tInP%K^iSZJ1hyuy
zErDYb7?8lp37nF^{}MPZffEuKl)yk)I9|v!{MR7KPgK56Qh_joyy$ys0)rEnoWPU>
zPD|kQ1coLsOu^~PP-i4?rkuP#4iVvU0p-IJI4^-Q37nO{2+7Y*;9L><j!fX3fb-S)
zDDlyOgvEG%0v9B3Q34kyFjn#j!g0d!<uor8pIA<EiTGv0Ny1CZ`Ccx5MLEgT1g0f$
zZvyuvFg<}Q6Sy&fn-Z9jz*Pxco4|Dm%#{8t;nl)x%2}8#KBt^yuJ{eYdBW?<`OX(#
zP)@QiftwRpl)&NyZjt<U;jO~k%4yyqerGw!67jo*ONDop^SwuWSvkr52|SR%Qwgj~
zV0i*75_l|uRS7&Oori@hg%6br^@#YR<s_@cpAfDQK3>lEN%6JiBu^*sOajj*@InIX
zC4W}9LAbG;=5ykk%1K@ne_6O$_)<CFE#j|~lf0V1_5?nb<Tc^j3G5JgUHC=<Z;HGn
zWSis@#5)P>lyi3if3-5rdzYN=3f~jHFQgY&o{1mG`Jr%+@FO9ueIoLykeZ)~d@lS#
z_@$6`HrKXVC(Zis-h|od@jdSX3G7Q?R9)-4ggJ+5u+|N@$n!%2KPK=K?+%hwNaE*!
z|B}G33H+A8?+N^oVB(C<pUen{1&;6u?3X6_0g*-ebLBz#lK;b@Dd5yO#3{5EH~6s)
z?NH)7D<)AXiONY-k(^#tli)96kCJn@f^fm1dJ;8~xF>~WDZIo(7aO2v619@3okX1^
zmZor53PUSeb(1(Dg+VFv!{vHO)K8*85)C=APvX8L?oXm|5>1jAn#8aqnkLaK2{(yc
z63vrnkwniVdL_{^d3d8~=OkJs%{{Ai5^a)bn=}J;dr2s4#~`Y*4oP&Bkj_pb{+b(S
z(Or^eF5NYWZb`FT%(-{>q?v*DNSfp3NO<*@4&U*Gk_aaeNg^tVlSC|uxb*qf$xb4X
zL?(%B5H=|<T1bhch5iu%L|*h_?0gpXlE^19C<(qk<H3xDBuYt?DXGOICTan{k0Sk_
zux}FmlIWi_6@82(Bz&WHY!U;KW&zE}B{@#Md>|T_#PKZrq<LuNW2XP4$=FX!;-n-_
zPU4iLc_KJnNOEctgOfOoHK-L)N_=vL6wXXyNT5mi@FdPkVrml8k{F>F$0ji@iL+T#
zb<OEyBN=ZJ=O!^KiP1@%FP-yPVk&_#N%Pu>+}{OCeu2D5#wRg>rNNWgnp+np%{w*r
zmy1Ov3NI4!G_y;Rn3UuhcepHx$w}PFzfW@KOeO1bCWD`VDMnv7Mf^=Yeojx~$|M#h
zadQ$g6cJm_EGb--#7vQ^h1Up++66s3$!BC-E6Kbht{1sZI9JFrxk0UQK@vBL%vWV`
zS=c`r<0c8&T<KiX0k<&0Ni0&>Ta)J9<!wpaE^>#EuU09%N2i*w4=zq(3A<GicO}h&
z$vsIdWAEc>UCG1$=ek!;|Ktik)B{N@XWK~P-y~MBUXu7Ai4T)lnZ!eEnMrI);^8D7
zQMEpk#G|Yf8F?a!RZ3WsLx)z2Fvd0Pr(7gSSdX)N_A%!HJ}IxYNj#OrIyM`wnMhLV
zXdd(Z6M>kL^%8CnZcLh&w$F-}bu$NbKA*&vBwkU^eS!T*UhI0ClX%H*?L7Ze-Ji{S
zYZBX3IPWI$Y7*O%cr%H&l6Xy;ZwOx(G66KwTK(c}1$jrvBHbb4AJ?-}d>5-sCjzl0
zyr(|+zHqlv#YFB&;-e&fV^JsZu~N7%iSLs5gms$4XBtVqO5$sg&xK#G!Bn!oR0HEU
z^NoZg-zKqFoW69jofG%yCm_t=_euPa#E)9{_(}LPE31`x5&TOMzp{=_FbDC`$?c2V
zYgvCJaWEJg|5Ok9i_Jrw>wug!8k=6m()gPNRnOGRp(LynLMen(KnfL7I68%DDe%0(
ziYfCSmP&Q3N+~l)as;THGDAd_6pl)vYU=+R893lnPoYK%O;czl<(eroG}TL?mV%hk
zL!^$duFxM(>Zi~^K^h7h2^$NW2&u-{o2Sg!PMe)mXpurorY&W<N!t|KNv(AXZBpi=
z1HY%xt9=R`Qs^iloxD0J2o?PL?UF**6uK!f-Baih<cKl$RH)vv+^d|NUXc`{w39-K
zS*~owQb?zeNg<vxUC&M-kwQ{7SuCj_r+#Lck!%V%37Hos1y=<{&T*2Z<jE_aLP3NQ
z8YxpU2BgfuPD!5>`liq?W%jJH>ieh6ve+@gV}*Wu_@6>C#^Xc=3Xf;9b#mj0yi;?K
zPhoHhC#7(53T!{8q;Nugi~EH60%eYl=szumGgBCnGC%n`J%uwwn#yZv3d2}RDO{Gq
z@D$EU;k*>aq|E(gL<%EGQhc>!ot?t<ZOz2#+#o%pSUz0kYio^8X;Y|w{sZ%y!h{qq
zOkr#a<5CzeQ~&KV;RcnLEQ@QNv_CP0i&D5aWkx)1q~~q)64{)T0y$40q<ucYU7o@f
zDJ)Fk<`gEUFeQa+Q@AdLsVPij6M{7-h3P3=nZgVOZ=W{zO-96d!tx&0RT9oj@z)i&
zCWTo_|7;1Vz=Gw)(SY}HMmJaT8&kL`g?X%nw$}BM(CY@aSXlE@SRe_5P{@m?z!B-Z
zMLE4Kh1*lOHLy>wJ5snag~cf>k-{Q*@h<<8f^#1f^T^WR(O5j1?8Lg(-6=e9zS(5b
zgxmg8xG!b4ZTCv!e#%pLIE6=2Sf0X)6dp`rC8uN|>%rdE!+)9uSiU>ss_#QAF&&P*
zj>VY5V<|k#B2Ae$Yb@t`8(FJTSj__ArXVHeaUqlXL<&!euN6KeTqk^5NS$Xy)(bZX
zH?kM&J@Td$o@ZxFV?u3{m={v`CWXBzyqLmf&L>GKSi4eqH-(qk-uM<cg;!G8n!+~O
zc|C<!MV6>!wu^Ju+-re-#{PzcZ>I2;$gT?3+bM9L%#IY^kz{8er}9}EYFNMTrSQJw
z6z)#pgA_hYVNVJlrSN$QU!?G{d_N6zK4C^G9IoHb0{&&-`?bhdLcdcGzfEBu$KEt5
zr14z}-?P|TnAY`!+S~6!w(1{Kd>d|>_s>F-UsCv0{I@{DuO9x;xbbH&di<5be(?js
zgTlW#lBDpjxRo|TI<G@=a{lR$ITh33?XqSXwbH1RM&&fBq|IGmKi{N?9F;~@5ehkn
zp}ble)zkR7kyS%TLSgN+nOCz-)=ir`LLDKGs;ieagFyW>8i+JZqn${jG#aPTB#owN
zv`nLwgw4`uo<<9CE&@NV|BN#@yH#t-VYNx4tun&i<o7Rst+>5{bP#q-qf;84#k&Y;
zfj0sMC+U_pZvc69Poqb`dx|{X*y^1|D2;F$ku;)d#M0pZVz?<~XGM#DFN&vOvxu^&
zk~QZBB+|&I%@R#gv804)VJ3(-n}#Fq3UfkF=>LVekVY|$QW|9})eLH6&?k+)X?&l?
z4{7vEqkkG}(|C&InZ~hcT%5)wX$)YEq;Xc-Y#BW+s9DzOz%-7hL4E?3#%XDsp2naw
zPL$*%)yOI0C#%v~O{b<YIF0(}nBUL&zjZq!ur@S}GsTApdDNueeul|8T*w0_M<@+v
z3r8x7bJ93BjZtZgPGeje<5`Ajj7j5s21%PA9p1&g_r1;A2hKW}hOw-4bwlEWG%ifz
zBH5X!q;iKd^GGjd%HO3hDUD0hxGjy_)3}TV6*W_GMH-XSn6I*(lE&0Du9ercG^R^9
zD~&7Dm?7cSX<Q}YOga70$=~OHjpV*$wtVLZec$WE=cX|)jq9a(!x0u1sBmsf<EAtg
zO6L~o++5D`t>tXqk;a{AJj`-{wMb#_W7n8#Ely*J)Rv}kkH}r}y<6zl$TG?A6&^nS
zQ~Uvy>hd&Jr17BmO37)Kh53*;3Cs2orRvc%9!q1DIJ?Q?X{;8f!Wwo@jowcv)RRKL
zG}f{Gr}23jU!?Jj<S(bOC5`n;;RfMG;j?Kxm&T^FdFA?|B+rY#AY?3*Z<hQeA)Rb*
zlrvMWC?#9d*p|ktX>3p9W9ht>#_MV9Ok-CXZ%F5@G~QM+-VD;ryzEHh9r^lc_Ve;?
z8t<j?K^h-20SdDF2pxvqlg39!$Ul+(r$Xv{mOlK22vhqd$99%^cQdemrD5}H;Wxs)
z!f%E9ggm&I^+^36)A%Wkf71AugK8STq_IDZ18Mx4#&2o-nZ{p?PL};z{zI`dMh54U
zl6!1Om_c@^gK0B`{+so#KKl)ysX6SYVP$Ys230da1{E@>lrf`6#f+I;86({-j!5K{
zGuT%ZRWfGW=AUt>!|P}%R})f`5@O8^YGrU+2DfKWJA*nIWHQKRP&b2m8Q2*lGN_+1
z_nlY<@eCSd&@h8W88nt1PClDt&@_WyayHALc?O*_=$t`|3|eN;CWE#aw91&-Bd^v9
zPEz3?lYn*^w9lYJ1|6xR_Q~ISG5cIq`%kBf!gkA`dj?&_nE>Bf4`r|?i$Xhcx$nrA
z_s$@cL0D>$45CV#uj99$E&O*+&@z+qO=XZ4VVUrxN1|UuP6loUr)6+@2DuD86~%EG
z<TIvfm{e9}A%kKDB}zEMmyt5@KEl4jenL~`94Do7tZ;zve?oduVIVc@TE{D*6EYZ-
z!HF5I9dWl$1}BN1Ec|cB*Qs(27P1wck-?c6GXYqT!H^7wieHz(undN0aFyaZD}xak
zOv>QW49?DAWCmk17?;608JwHJc^Qn!V3Z7wR&YNqPH1WNd|9|azW%A*zVCQxUYNne
z3?_*C`WIzzv7DD=4u6B-%lVkk0=!IiNTz0Rc?MU=IXQzVBL1TmZ;MozmcjH4u9T@6
zzOT~b+nK3UU7f)-8O)N-97$%EOUbp8_-STF=E`fH@Ot45!udj~QRhbSn}iF6Hw$kO
z-YTT#9U0u2!IK%RRmCmJU~vXZ)IOW=kn;@g%HZ(~p2*;CrQyL0R<held71Fu4DQR|
ze(~kP2ZU^9{#|=T#tcg24@u6ZvMPgz#UBwqDtt`nhgz+;)(HJE$F#tp??08nx{Ud`
zcEv27&fu90e$3#f4Ay7NVE7SdGL@|j8Enkp*$ke`;I#~1&tOvq&u6erS$iRa7c+P{
zgDn|smgFVH<@aU3uQA3~GT8e6Cx2DK?LpsvBZD_H_(17@D}%Q)*p<P%8SKd5oeXwL
z*|%BV{(Bj`pTTa$US96=4;5-pxv(Eg^OFod&EPW*p<Lm~U~dMWXYhs8zRcjO48G2o
z&w1#}Z>*RFpVRrRbiPx-eXK9}exJb)|5yL#46Hh)vRK-`WbkVSzbVLHjF;V9{14%u
zLf`)W3=U*)FoVBY1+<XGKZ@>OwRS%)zpo*C_*tMr)(jViTZn45Qr6rQ7%zX@!O476
zZI(Mai)vXk&Z9{l)w8IP#q~MdkVDNZYGrX=&P+Ht`LCVD*I9g%MV&0_W>GJT`dJjR
zC}z<hi-uWr%c6VM{2zy1<BfJ!qbzpt*D6^w$)af%&9dfslUL^~nv1sxBrQc+WzkyX
zY3>{rX`4m6EZU2A$fA=7Ep!xlt&w?Hrn5^R?<zuJk1Tp-&938o7QM1sSK-YrYj#EQ
zx1qf8g|Y}|5#blUd?TDiS|lc<BralSkq9J7k(AJX>5$1H8~8dRt}vH{7s&Z)l^vXq
zc%>}LvUoX*Em`!*Vg|oQIA~pvMc=F$iu+~JKZ|3sI5ul;)}yl+K)LuC!sD_SBtqYT
zSsWkm6GZqC9OWlwagv-T3r`WADjb|OzjQn;3#R0Bc4xj_(nk#pb*2=CWHD4^m~go8
zEa8YO&dy>aYgtqDbF(-{oS&2Xl2KWl!G&w3;k+!yDAf5v3YkKd=h!U9WidXB30Yjo
z7Lvtd%J{@AuFGO>78hl4u_TvdF)fSfSxm~}Qb{foP8MD+yh6w)z9}Lsz^PQ$TYxJA
z$t)JK_*GfVWUC0|*NFJav@l!FIl^lL9m?kg{4Vx|EN;kRz9fr<3$nN|i<<(S+p<^~
z@S9aQw`6gvBz{Cp;q6)6A<3P>Mdf^#h%XgVld<2;(#v9*B+CQ&y(0Hzaep9rAjmaC
ztzb_N<SVmyNc>?TZ;p?!b+Ol1uvTTUTEgeDSQF^46L~y~Cj!ZnS*#U*Dv&T$PY3*&
zEY^!}$YP_2pUr0jzDeYH;R`~h@Wm`P2mB=w+T{DwSF+ep+jL~6aBCLZ)L>rCVtW>^
zW$}6zUj)7BjV#^{_?ub0l{N1s*t)puU`H13WU*7eA7-&9i(Of~E9ZMz><&V`FT$xH
zLw&$zrdcKVN0NV<#m9l>C)vY0_dfH32>mB|>VKKVSAiy%DfVXZZ5C}Dv~{pAi|?5D
zisp|+)cjsUaec@1>mRcCk%N-D#?M*&o5i6lehGTYuUY&i{=4uG;h%x;Us>!IKM+U`
ziu}#HKp?r0Uw$c~qlFN%<5zG{QJiV0<e+lEt2j8yK~=~6BjATh=5LjJWmzrotu9hS
zSkpl*k=nvKLRzaUQqMX3KU^+EH*m~ybVCP?M93S9G;z>0kTi49Jm4)vS~_SINLq{V
zoQ-x4+B@i&L#LcM>!X8%YVEDnb*+vLIyva<po@c_9sJ^;t78V4r4H_L(9J=2IeR!*
zAVRO64thE0EoVr0nuD-|h=XXL<2Z;ph|6g+3f>>Z6TX6DhRu|NCVcy#D<gT<G5dn%
z*0Wp(IR~DDyn|yM43KZZL79U-4vM}J-UuAjQ={!GNq+~&i1c&Jk8eilCml?12R`LB
z#{V1~=U|Y76CDh6aJ+*zTboA3i)+OvIN(L@@+%1kCp$RR!C)4Mc7C41#MHK?OS!dH
z*x0|gB!0SsGaQ_$fTJCp=U|BVPzS>t3>QD!!AOy_9E=cQET3`zv-l_><>xw}&`%GK
zD;y*F#SSiUaK3{J<Q(f@f`bcLHG`~i4#qQ8e9+_j5e1y6)L!J6X%Ca_|7Bp3gG(LE
zba1tU%N$(pV5);@vUY`o$quGCSgFp%kMbDG@5R#{T<KtjgR2x*^+u+kMqOyFpKy2s
z*pLLSaWKolTnF<U%yuxx!L<&qQw{pL@OMTrsU&RP*DKN+gnr-WzTEkaS>j-2-6%N&
z-sE7R_|1Xj76-SA-{#<UkvkkL65-dNcgg~{qc4_ZiEvg>l6O0}&%yodS(4NKG6(mH
z|IpS{H?IdAd?m?p2P+&r$O4gbor8xQJnUeNgU1~_;^0vSs~oI$@R)-SD}XzkS@^uz
zm`Cil_zH<-Xmi=$!IKWx=dGt4@aGq~y4I;pthFpIDf7onjPz+m@r;A@A{!h$@8AXT
zjSij_c}}=V$RJ#nC%))li-T7jY?k~b;md&zBi-s?n}eMWb~$)e^4A=^F0x%n9ol)r
z!P^dYuopOZOY(*sYWNj^E-Jj^pkZ~36858a9lYn@V+WtGv>ohr@BvGJt#P~6gfFU6
z=67s+*y()xLoEh*L>EiuQ#Nb|UpV+uEz{qy_ql_tN`up8ev;X*`r*3x+QBz6vRC-6
zaGx3>lk}aO-wS_m@S}sDg7(Ier^2reev|L(t}*z#gHbL<yZFPwpOXLO0P@-|=K&!#
z4~qOP{73k&gF_;g^r_>2rdq*8MM)~TsO+MOi=$k`T*O^eb#b(dmM&VksOF-&i$>C{
zA*|z~u8W#3Y7r+}wOx#oeHIjr*K<+dMFSTNrOYxpR|R`xJ!?aCG#_u(YGO5Z(Zoel
z7tLHWchSN%KeAt`52E+-7jm1;D)AVOv<<A*F50;0?4pZ{wv0%X*uh0R@%FB1oNTuo
zJUhDR<eINJ=6B>-k=De=t*$P*x#;a8<f6Na9!d`tdb(hcUM^lwnqO;?^Ns3s9{%7W
z;v(vrVdU+`78A_uP-jaeQw6q*go~41oI*P;QZD+r=+78kWLy+n6kTLpI4*K7JQuEu
z0Zl9pXoFQO6Am59D*=A5p^&qbl8Z7IeO&aFS4o32hXN*&F>>{ZuOW_cajc8uTnv=X
z0O9{!^8+})9@*@VmvE4a6J4Aj&gRN|o#cYi{WqVvlq>%(2D><0I;Xif-NjHB!(5yp
z$(b&Ou)4J}#@hr5M?BUA-=Pe5ah8h_E;s^o;u|`Z$(v0qs}@Eo>^UyZWp!BACO#1i
zH|amm#TXY4yLiOK`7SPSG2g`k7h_$Fb1}`ubQj}YOmK0ji_2VG=$hNXMJ_IOF;O;0
ztLQlLT;gI9W8ZJ;n&T3YE#Yz(SGbt$VhT;QvpUu{)mov6MI$`tYN~5qg|k;u^GX*p
zT+DVc$Hi4HX1chBP0q#Dt{DKCM{3T}-xI$5*ZOIQ8T}}^*2Q%$=DE0@O}&XV*Tt6F
z7JEGna-1i*LG6u^atV>aZ**~!i)AkEb+ORJ%`O(XSnT2!7q_~&-NhX)ZetPEvKEG{
zT1k_atN7>lsn%tytvg-N;5t1}FLAMyMd9LZ7Z)|PSfQ)}{w<M7y~jn*NftlXV)3>(
zbm%@8_p`aGtR8T&+{FqP54zwd(k!m$TbV(d@2~wP=Z{wpxnKqvoY$i+HoAD0h2Ub9
zi`6dHxLD`nX*L@dPq<j?;wcwTvY$4wp08#a1K&6^*}PwHa!4nQJmX@$iw!K;rshi-
z79ER%RqzmZM<|`ovD}oxO-z!D7hJr^LU8f2gw$kuHoIW8vS3X`)H`hF6&G7wY;*Cd
zi|sC6Q!-cxjFfrlQr#qAYniE$H(b2w;w=|%%jVB6cDQ)Q#W!+Nf2WK0UF?=~7yFKj
z_f!rXE10#>HLVX^e8_Tk@tKP~E<SScv5QY!^M_LwKC^sVSF1&JlQ3H2%g4`MeBt6t
z7hkE-G8asYUm*N(=hrM!Jw){47End{t&4pwzH{-tiyv4)5-x3Q@gJrm8=A)UlZ)RP
zTiY6&*2U)ZOOWzkMSgSfyT~6d{&ew|i~SsCb7+vm0T%~3bmvethreC?<Dx<i6>};j
z7l&L}IdI;{WIwBW6XeBp8%9(qhsrrrk;H$a%6G5y@`t{obEuX>tsH9SP(6nlT>1IG
znu}*yGaH$R>f}&2hkEk$Z^|@IBjk*<VGfOQXq7{2DKr)~&!I^UO><~gE>umWiUwOq
z*iuL#C2hpp=g>BXcH+F%(mr)M1j>|j&Y?>V-E!!j!_r3P;bqWRt832ua4^ShpE+~R
zM$a62<;<eTT<u%yokJ#vY!0Cu!a1`J7Rez&n>j>th~-T0i|5SwKemtx{uxAEV&deP
zBW)^Yo&wT2^lxW2{W>|g<T>-kfsepB79cDyXP&jENk6Xy7r1~XQWBQs&?kq!;{AmF
zOn`Z3)f|(<v9d5gI9&L@9FEIjU=GLUa6%5J=Ws?2gK{`gzJrA)<#39~$wEHtGa09f
zlW-aQv~qGv&XjX#4nsuz!xktX#`@L%y0au7k;B<Jj1;HuXpwV-=jJdfko(aw;FuiF
z&*6d`#^!J}2@fO@P7=~NUSvWJ7m7?2UKIFVoWmvJ|7eTUrF`_0^K#*I;T1Vd7MUWX
z&8ay|3pm%MuMGGMk*kC=g*@Km8j)E-hMg@kCx>fAt_$RIMdsxWpNKL)hXpw^^S{``
zjXB(u!;0G0%{eU0;qDe@n>Po{bG51UmK<));kF!ZXGwaf@8OOd?#y9d4&UXlD2K&4
ze4fJ>IV@pwt!Qmhvss$MT{M-$JvltXex$yzOwHrb9PSmlPsnz1e-00bFBh&5J}6w7
z!$WNRw5f^5Bka+Q&Cefsah>Eb>CnO|k=4RA!pDVA2%pShZ4OW6ur9Fk^#8T9UMbul
z+$dy%pJiVYAD|;{o>ymiA!klDcrk~~A}{5zD~ES;csYkHIlLm__8eZzVXHWmx8?Av
zc$F3wov#P-9XY&_!<%xxC45`R4^DkeD!(JiP9cTwiF_oa@B2CI7XKiJ4@LIm%=fDF
z^6_H{KMC|d&EYc+n@UEsh4rOIm3}R(uX1LUgX0YG>m0txnf=VX_KJMV);QWsNWSMV
z!UFVA$1^*he`K3!h$<d_Qpx<xy5{(w!>=O0afBE7T}ZD#ME(^1mBao(&Rx3)c?-zl
zA4%XDJO2j0heRw1x%fk`3LYxTS;<3X5w0Fk-t`}g)0?9_vjkn$!_gwugp^eGP(!??
zu$GY9gXzUR=g~S=UC$in(nOQ$1|AxE7~)~5hejS6dpN<vAkXYKd*WZK3A5kZYAOqi
zx0%w=+(QcwEj_gI(Aq=7L()SV4{bg4_7L*W&O>_--97a1(7{7T4_!QT_0UPdY3Gw>
zCKsLMd{|COy2<H#_4LrogRkIglKalE2L_3Gh<J!9$bVjO54Hzd@NF_+%0t>inTI|e
zG9I!XJP&yfjt5s^b3vr#lT`3fWX9#?r`GrNQ_|N%KMw;~CLa2GI7Vv626p^J`bhob
zJPec<B}^41#|IfX(K8#>Sk7m9ILR}&r;|OL!ouX>FFeh|U=jbmf4Vq*&k*6XXQrC*
zFb~5$ob6$xj4bVCo#kN!hc9j+&{hqqEvRVrhck+Em|zZf9!7a)NaQtI<U9{!M9vpp
z5crPuFiw2DaDs;mJxo+Y7X><;chNF$te1GG+uoYw;ZhHmdAQue8V`?qxWdC^j=dgk
z@-W52R1fn#EbuUm?c_v@3x<4*nl77HdYHk&=d4?WHizv{PD-v8xkflkI9vE@HH)3)
zTJh^VGZUEWVV(!dulI0+hqo$OoW=3!fMjG{tEf{=POWGy^l-C>TRhzA;k=60W!=rh
zICB(k^KiR|)hy4t)*T-1^zevh-hVApvGWW4Wg?3`ED>2MWWC(w;coGJggZ|(6H#`$
zdp+FeneS!jyx+qEf&Ow2D+2zY$Vv|n1(Jt7%;gy-oN9XJeI>8QL{_n;npkx5096+I
z6CR%Qu))Jd4{JR<<zXF5(lc-57x%Ettfsd03~Q<hc*yX2&rEm*>c!UQ9QHjt=iwa>
zJ3VY-YxMA%hu78FU+~aGnlGxsY!<TRyyW3!4_iFE5=gdr*ecE)DO7mX!*=GPmBr01
zeA48n2XA<I)5F^yc6j)=wn-A7Ro_x|TYTcq@`z@$k#AKUYnO+2J^be3cMtC|%^rUC
z@Qa7t9zO8E-A5chKV(zq_^d?k@$eDH86E-QVV}q+YyciU6aUh~R~|n1@P(ZI#{SuQ
zeEZtNHy-wS=8FIZr`NZvpb3WaI=Z?c-vyE%Jp8EE$i3x11tTFjoBh0s7Rj#?^0n+A
z9{%)j(8J#z{^9__jog;CqOQex?0ydiJag;eb*P^84;5NjN99p9Z(94m9u9f1^5%Ac
zycq#F&Q}nrm<JayE6J;}kUCW)Bw_11I*<B!b0esh*Ku3I8baoxrbw+kYKznf<aP6?
zC;n&BWVS)x%v%}~^JuH%AZVO_U2mF4GukhpK>^M4XpzT9d3>Bl%RE{sG1K#CokyFz
zxfioFw#}nm9#is|nl~-2eI6b1=$JP*+4b5K&50JLTb=UgoJW^Dy5`X>k2CT(lZnZr
zM;`t1=$}VV<=xIBkw>pQddnFS#_|Z~5fP6HSys=$6dlVgF3H-Xkjx{Mhogc@OGw|W
zNG1;kp*}AXH;-H%p1cam6gBhGAt~lj3iQkJ=#xiZX)+*vd9ikm$>Z2OPR`?$JO;2X
zq%bIt<3xNN;=nwP&*Ow3I4v;jiE^GK^jE5>d1@Y~OEOsLIZgPVF9QzAV<@wh$HY8_
zNpoZ#=j1UwkF(?)k;mEPY%&Nldu|@1BpfFkoyP?t^gS<+F+rBkSD`T(V*?9}n!(4*
zIUy(wDqNJuC3#Ge{9=Work~DBC1j|}L@pOzk;h~aUuRk#kJYujh;?;)i_3%jF6PQS
zX5`I?eO2D<oS&J;a=pC1I*)7en3c!uJRZv9;XLN#acv$8^0+aN>++bJ$Mt#Kz$OZF
zYRbI4nc?sb$bK=pyE#R0e%{>pc)w#izbTJ}EYdud<#BT!x8%(c>m2->@)S7s3x&EZ
zkK6OOLk4MtBM<X(rxL$NxHyj`B1?sL3GWuNWNzgLQ{1kfN0qq6d(C}$+@Hq->SYh+
z%|7Sl;!Mm6mRn=X`P*8V2QPYEz}0MapFB3^@hppoor`&IWNpY}bslT-W~#u?=r{v>
zoR!WG>(maPP}ENf*XHpQO;IyQ&od%?pjaOeCX!zhYyqCjV^bc_=kbDu5suIN*$45(
zJob0B-cboKNt^R{DUX-)*urMR%|AjC@a3=gwme?VW4rk4dAuR=8oQ5j^roC|3*Qnl
zEWLJ!&zBDKwNp)fS03+*yeDMIzb~>oj}JsX4CH%6hVqk~q%}j!@}K1KX&#^D@i_;I
z+SX5b{G7)ZY~Fm7mhxA5e4WQP;@<^!_U7?z!1v|N#}585_<bHfNdBXcqdgPziwf#j
zNx0#k%Xh!2RDT!#k;k8T{3ZUckVU;;<bd#C9)Ab&e?%^i<4_(}0VtqC0W}Ne7Ql$u
zO^6i>s8m4Z0;&|uD95W>0Y`~f4J1bw%x!{R)g`GB$SJHPYqbNLbqc5(@OlcxxEdDF
zsDM}z@gf=*(1cEsBAOP^tbnfy_?qK?0WAu+vVa){v@D=i0j&#YQ@~Y~EQgD(wXGfX
z5I$fHtZ%g~pj`pH>$NZ7+yX`w(4l~i1$0upnF6u}bS|KaoLvj(UO<lmy2<G;f%c@3
z%gB=SDxh}(A@NATOz^_xH0g{o<&wnzuRKAgBq?E9VX5y&;S_L80ml~L7LY5zlaBu-
zLSDR3KvASrKwptEA&aYzFRyR)3ncvu_<fq`lJp%=z=;K%B(MJ!aGc0M;qig~2?Y!i
z=N2FaIa&M+;VHsXh4dO+z-i*A2NDK3Q+!APLq&!aa8>~$3K*_>_n#NeE?{KAoEv{m
z0e)D<NT-jZ3plTUDJthN1)N{NqyjE2;DQ3i7O=Rzbx{H13K(C&1U8a_8FS|Dx6&=~
zY87<qWDc8}C?SuTI*&^$1zZy7P&1LTE@Q*c;`tQ?TrMxl8Dw&xHuPU>D&y6RYnqZV
zy@1cV7|B%y%q(DM0lNygx_}!y;2Ij~Zq{lzePWr+Dqwa2a|*b&fa?l)q<}|N4s#2*
zJ}9MmBK*Ych63gnuz+@$eF<+WU||7w6>xU}Hy3bA0gHlAw-#`Fz;6@ro5UUBcMAQJ
zUKSUyM9!r`-Xpku?jCWb@P3hH!h6{Zcnc8s!#+^JayfnD4~jF?N|A>Ocvys?D15Ad
zRdQ}CV08g&3V5Y}tpz+@z!S1eohPNRNl53~0-h>hot#e>utDS*wGH~NFC3o#Y?PdX
z#<T3L0q2N8o#&<eLIE!ZBgy6hUJ`$~fGxqe;m<4lAPhw(@l~1HE_|(k*9&+<{7vE8
z!nX>C-(l^LlcC<>(5JUr+*8EwAGzf9uDsqW;QfM`-|iNEAf)p{kv+nXgdZ31iO8qI
z&xF+cynrtX_)^ZA-K>w>8EaEI;F|(|Dd5)v_7?DM0s9L0u7IDF$L|aHp@1I?_^H4n
z6wLnfvF)sS-K>SRt)&%B^4OUD@pc^#|5Q`w?B(|Y{wUzj0{-G~T|||l8OHY)aIk>C
zm6roTR{B3dt`D)taYT}nPipkCia-$+6t-d!l|=k@;%~h;N|NeD)F`5A5l06K+}v2L
zXsmGomZlhW%_3?QQM-sbMbs;ze$i|!p`2K^2!AtV0}+1I*-&;U^y50Asnw*2o<;PM
zylD~5s98h{IccO@5iJAWN~E>0O%ZJac{`EzMRXA9DC{KcETo+-B3*^OzB9?|UPO<g
zdHCfdsscBE77;2UTtuYEvjwd84_d>TS+_Q~qAcO>O{LUoZ*kCIK;CieqFJ=uRYZaY
zi%1obE@D~{(~HOyk!AT5F}4V&2)BrSMf7KmVDXhAPut5C`LDV|UJ?1Cd3Y%Zi$Xd}
zMU(}+k4WDlV%tsIVALJjnP=Ezia3@r@)l6U|B7b9d0Y`E7ja4v1B*Dmh!Z5F{G=iV
ziJurq_{r7YKg|;~uTzT{QpC_A2FsUTr-__i#2F%I7R>|x$x<Fx#PA}{DdOBBPMc#a
zoFyH8w>zSUv&AVKSwtVsRrvZQkepY<Xz{tjjeLyw`GGG@jVoe&5fh5IuxQ5rPb*rS
zOLJZ{v51R`W~Usx#>Mh_pR>@Sx#M3_#3WWz5tpePE|-vhL}Hove|?(FlF<ZvipbQW
zSu3FA$|7bI@lp{l7jab)GmBWmsx0E_BCaXo?jr6{M6+b}4z-rqMa(JU+9IxFYmwwu
z;k+Ui6mg^Y^+ntuGGFNbGl=zdlbp8*7qZ?(_-2i78|llJ`?pC#etYroNOh+Yyr_u9
zMJy3tTEtyN^T{~}YF^9*IdNm$j1S9-xVMP=inyPBki)nPJ|KKVxV(rJMLbx<${;Sj
zoqQ<Z4;K#~b;vY48gSZKC2OmNoX?x4Tf{$c>&_9T?>t$=TGilF!ga!@i+Dz4z3_!1
zHWab3h-c+|PRItpZ$gQi<a}Pp?@wPWVsp`ah)OR$<CAPD;*}!aDB?}F>R#5xJ*=(l
z4t1<;O46%r7)7&N>9r#Ki56#Eud|mqX4k=6Me`~8FXvl}xPL<xx`RzcztnlBh@Ana
z=DS6_SH$~l=e5o1{qIHWmi`A!4+sAu_7w4v_>aPmi}<97PsP6xekS}}$RJ<Pl=xSH
z<ZHIE4#pa<y+wR0`99%y!tVpkA4E9#{3P<T@E75)LR$E(XqHe&uI55e5q}o(R}uS*
zI8emjtRN2QjjjLnz{qaaLAG#i_~fu(#37EB?JfTBtBGFp5P5&8P%^#yzP`A>FDjN$
zsbsoL<r0qTi-CPnrG%qOs9G|QeixT;NeM@nP_1Oz*gD?&`3O)l_G^?(dTN$Xi(Vzv
zDWPr&r<ZU>3H3^-U&65^3@D*N2@OkVTS7bPm(aL`mL>C)(L}+Ui8u94>C}tnlC%)|
zk4UY=8CUBP+DMa}UhPZhP(qIqdP<>V30)Xbd#jUlI+wH1Rg!Kcbe95S=h73gR|&mK
zNS2T)AtZgf1bT(VBf@A2u@d6ttodORlF$faOqY-;Ay<M|LN<`QB{=1xGiBAv%9l`(
zLO(@BA+Ms6R}z*9`w06AX}`aM93!NYk^YaBRl=zy3@%}y<fjOaFX04*8YDcqgcC(h
zk}ng$;JyVv<;2qhFTYgJEMZ6q=aw+4grN$1ws4r#h6~RUQh$WJXpnrQ_&GvGM9Jt9
zCQ9=>3C9S}7t;3vk+H&Y!tufh!V878e32~pX`WQVr6oL4!lNZzR>I{a@K7MPj&()J
zoHE4q9IgRQE**a3Hl>8A0iRaF^b)QtVFsJ7g!c(&3U4XlYLRP7m?bj1gasmVO1QR!
z>%@7Bxn5*$$*if)6Rxdm-5??FP4i3U4&~pBZj|t*5*CVZxW1V^C28(cx0Y~Q3AanW
zR7l|+B6pUsD3B~xuUsOm1rzYD67CLs?<rxKIET%9OJ*j}`Xr-se+dr+I?GE~A^u<>
zSy{qE;;i?FRj}_gwH_;BRS76Vg)(y|T3y1L5*{yMj5Zs;z*hhz>@1lZ^php5E#WCy
zc)o-eN>~?Iep=)i;d<c);l>i46?sm$Nyv2WYiPX~@a-a-g)a$TE@4aH`$`F0OW4L5
zA8aysUebECgtxUJhtAie_PX#5;hVy@gl`LXl<<xS_49+RT_wC*!h0pWuQBbf5_XsH
zK?y&}$x-gZ67~jsPYEBD@Ufhql<-9$|Fne90{(dkd=0^XUrO>-31646tN!8l?B9s{
z&TmWD7lisw<a^-{CHxr3Sp`3f{}M=k75Pp0yYLU;pTh1HOho%jI3VXiAtis8@Q?Vv
zf#i^gRc7=nSGOvbp%QDn3^mHk*)QxqmCH;&VvScR!%=1ClPF$QMUEC$D+520YHnLK
z%TTM#{716b7q!bw+gPSsL!C0zEknIB)GtHBzGfp$1ClcAFT;T{G%7>mGK?+5xH2>;
zL(?*|qsA#SYR$^fqYORE(7X&S%Fwb5t;*233|-35x(sc~&{1k_%h0Y2?aR=i%<LAs
zhH2(^1bo2MDgo!KTr1#D{W_JQz{!%Xu4U+^u>1qpfllZy&am|DB_1h5v<$t=5Gpg@
z<%P=*|EsH#ti{R@FGGq##>nz1GpA%H%fJ}_ebXY+4!?!;<I2cjRyetzMP<s}GUUqO
zl_6h-er4#-v`J2{K4mDDp;QJc(^(eCeY1W4A6xGM1vT-0f#%W_kls5|q${W(NVBln
zn%!(o78H=8fKo(ML{I?>h`pj9U<X05QN)fYiUlj8Sg`=2Vg&(}cjt!up8xaSIXU;-
zeDh8Fre-pk=$5f0B1lGXW&}ecNJZd8P>7%yK{|p=1lb63(qsnRF!7r?$y{ayS3Y8X
zz(<3WBJd&@62Tb}_z{#N=I@7tBj)FZRNzI@DYP3iMemG#SOmi(7#+dc5u7FEk&12v
zi>8CI20f0FS+0}cb0QcM!MPEfN1=3>wQ&(JNhFMdUPxwG#yBjIi4jbSU~vRXA~-*S
z$q_72_!mSlC4ws=m>I!^5nL3(^ay4|aB&1vBbY{`MR18U84gXykZCvCoEL+okk@4q
zTrQpe*>-6o%!*)k1UE)-Qv_GiV+7YmFfW3uBe+I>=PEnQ{v7#bf`bxamamiKda2Pk
zK^AV1J||Z<M{r97cSLY!1h+<To0M;t5g1yKDux#PhH`!ccSUfwbb=}rR0F1ep@jDc
z7YP{=Q%=A4vL#0FN(A>saDN03u+m2GR0K~)@K6K~NAPF_k43OFf@Kjbk6?woKO$r-
zEG!1X#4y0M4b2ZRS4Qx71W!cpq;%-SlOpI!wV)0VS4FTof_3aDl$SLTtYxc@;F0?H
zpAqOW;Lk<yJR3+D8iRUK{N)H<QdJBx+f@a$A%a&U_%ed8B6ux=jS;-dP9}oaBX~o;
z-i~0CYW15Dyd@GOo`D3JdPi!Tg-kQ6+4~WE5Wy!Ad>X-r5quQE#}RB*ZQmj_R(qz3
z2_RvbSuPB1TLhm)@OcDZgylsY#>F}u5aQPnY>(i_2!4v-n+U#*U`GTyrSM$@--`ql
zdz_NGD}o;)*e%Y=!w`5eE?$iH=Lq&h@OuP*MDUATe~sWb5ys1lUfj^vpAqbhU|;00
z!5IRBV#@!L0+((MM(}q8_t;ou;~%QAtFe)=aVP@IMmrnrZNNqa8%NrxYNMikI6akZ
zR1%MbaaGan5tOUuSF=&wMq?XIY#e2yhK;&5>e;Aiqn3@@HtN`iQ^h15+vsrr8H85f
zMgtoSZ8TDtf#sQZ=8lPH^&>X5(ac6G8?9|Lms$%OEk&rtFnM$gkwtv8jW#yg%83>T
zLJMp~g=1`Vu+hiH$u>IL=wzdZjpJ=}w$a7Laq`vGMmHPBiqlI_`b6>pORer<$h_rs
zf{mUwdP#VqkWGg2lf-+6%0Yqlwb4(KK{on}oMPit8v|?}pJ;s1AVH~-pC-xaOzM9!
z7_nj7h{}mNG266O+J~GTlQvQ|F0yg44aY{>#z-5ZY-DV>HU`@mVk2uKXTwtnd11ju
zk+uy-D27&&Jf(iyw^0sV1D!K$oGFE~ghOo%voTye$a~Nns60YKrj1z`ZR2bk6KqVh
zagL2Kayrk(SR3QS&kb`L<d?pJvKt@9PRS%2lWkle{qsY8%BM(jp^zm-o3P<ewQ-4!
zn{C`;W15XiZCqnxj*aOyX4sf%W0sA}<b@$zVdHXf_796yvP{No8&}%6T5`5lwxcC6
z>nhuPhDI-pf_a>4<60Zn+ql8TJZWARhRKu!)#k=fa+65Vhtug+8@JiGJ9NEW<W3uR
zgc6p;d>eP^mOO}bfo>NHgA!S6V~LGzHa@d)uZ{a`yhp=w+Hd0l8|!R5YvVy157~I!
z#uGLkwz1U4avLiY$THz0Z1t)GL7E@6@tBR3a{6x#WE%G9FQ`x2SY>0iji+opP4lV&
z(luy_Yiz8w@eGR~lrxYZ3(whj-o{27uiJRR#)~#yv9ZC%OEzA%v0gDU9A+)Z9Xb8J
zD*0<+dMF8c%QtLnl5n$)H*LIS;~m{H7jKIMfv_?&oFHrOO3seueH$Ox_)xbW+t_O3
zBO6=TI;w)D9OUSeu;cnP%nKVS$6uQFb9p>q;|m*K+W5-G*EW8%@so}1Homd3!^Tb<
z-`e=j#`jVVEXkDk5d`VqW#b1q?G^^9WjbrsH66~+Hul)~-Nqj_ev!hjHhxnI=}LR@
z3QFxy8+&c+v+<V_%tQupF)!5I&l;kF;2iIujlbFdQ_V)TD5^(s$c7a~r6?*#jm;57
z1upwU5BI%6EDVhXsS?EzQ5+dX)u;)U!r-DW8idJabVo%|BZ}Hl)QO^|)M^O>;|Ewb
zih2^(|G(idE-EyXu#vE_ut^k6qi7aI^C(V=qIVQ6qG%aKmngb2%~7<D;+QBpL~(Q!
zZK7x!MZ2gmPGE!}3+<!Gb3z!inAFZ(_K%`d)I`@=$SedU5?HKT6vsw!d=w`r0mntr
zJ&GRUgG1ZW0_+4%jH0LHy`m;MhC_K^5W4oEFp7av=o>}9DEdb+AZlhNOa^0Q0!R*3
zHMdOXDN&pn#c3>yuwy4-?XA<>8Wcq&Y98cm8sX5Ps4ynvZJbWxNnuLp2-|CCiyJko
zYUf8WIf|^p$qDmO6rw1Kj}|hD5=%eieiUW#!NMV-{ER5h6dx)aCLAt2OE^L}GK$7y
z&EoAS-TuK{KqBV|#|Xy?sWVRG+$hcqCF7%*5b}v4lcLz7_YN0CF(r!oqh`wr=OGtH
zad8w=qqrz)cD~Khj(R#>62<H&u8d-uG%t-}y2uRStSBxMq2}dLTp>O)lzhzBRkf@+
zd@70J>L}($aV^uMZ9LaRF^5+zbMPiVfoF{KqPQ-KTcWr%YPLIaKhO11Jbl2rA!?p~
zZ)B#l$>gReZWd=fF{i0S!Pj|<qF5}o+oQOHkIej-NJuhY<Syae!Ua(*3|;RL;kx~j
zs9B`FH;Vh%F1W+Il3A1IsqF9cHoIHrH8Z>H9*W{&HXn|6F_W03QM?qz%TcqCyNq>`
zb(M{p2LXw!h~iO^$Al||k4N!@$dkh7qj*Y$zMd9Y6~*dMvPNXB@EPH{D4q>npNoQv
zJiO@lg(zN>Jh)vS#Vb*4isH>Ee&1(pP}aJ)u(+D{Y80<23mb*6N6p9YZwUGRYuceh
zZ$<GodxID{#PCiOn;AkBe?;+a6z@f`EsD?BGqkZ<*SFq};sdr#zWI&fQzk%_>Lb;$
zEi8p**2jusD@&7IhYkthsyJV_t*Zzo=JP1NW<S&2`huC_7SJfZqA{CUle&OcaJ2Y#
zmBly0Z-w6pzZdR^VrLY)qWD3#dxR{e-BJ7~{!=LVIciRoq!X`SqWD$v-$GYz@oL`4
z`ZH=4JX^-FH)@vV_C@hm6#JRkD2|GuMhpj)9hUwPF;fTr*6lySe>n<>SaO1pIu%4J
z3M<7>Ih0os;YmbCig0Uj)tIS%)naCwadjbYYsOG3hQ^_<+A-7%c^#3uG4nMjBdQ-m
z14$YR8^yq#tCR<>O(f)+YSS2+#n4=F@eB}3S|~1(Rxz{a%6A{FV`j7T(ZV({v=yPG
zT@3BTJ0D{dn7ocLbB5>TF?5Qda|~T#=o&*jhC~cJNB2Na^G3B>%rxF(V>m8`?uxfZ
z3@0%?;>X8ug2;)&o<fG)D+V5jO43J?zA^L@Ia&B#N8{8#hEsJrKsZo%iZJkd8gr!E
zK|)&?`Hw<0hFGAW%9)Irzqa*jh*2@K(KkgW*)1*1#Nft|jUg99S(1DV1=@e8v2!to
zQp_yq1-G6Qd|_~wGI6kOhs1D33}?nLG={Tc7!kuT$%hLW6#G3QUuFK>z+#&k$y^LK
z-6OBjF`TVf*yzrYVaLeVSmC%B&Sk$8!}u7cOEMvbi7`wQpCr5>hAFgLAM5-WCbM>N
z!M2Zi-*I8gjBeciak0onF|$%l2~#pP#zEh>lJDU9f2bKqX2furLZ&OXEwNnqox;o*
zX2mc&X0~NM7sK<cHZfck!__fd6T`Mn=I#8Pn0fK~Yz#j(v*yNdZ4C2bxK2UcA2U7b
z^};)ZH^gwG$W21J-W<a%;<tv9+hVvq<iQ!&cg8S3hPz_8JCrXJS->LDA=vkX@<lN$
z7GDxd?iIN&)O;X@2bH#mge!#)3zxD5iO>R%h%6Vb5I!n=EOz)DMd~~*$rCX=DMHCp
zB2Nof30KFkMr5s!I?sr#3&Y_ai4E-bV|bAnjN|S&UW(!67+#BEBWp+uuf(u{l`{su
z^k>cCfn7DaU{@#W>{=Fo3e2g(>oL3$!*4PCuAFX)VT*bI7VDcT;<sXWTZEE#L^ccG
z6}}h4`yw9*KNNl>r2gOv*2ghyjp36p{XdC(D%=*sXEA&p!xy3J4v{Z~UkSe!Zja#`
zk#B{x!*?-!A95Zgw=?9sV)!BCyIHBkgR|!7>u25WiQ$(}=T{LPTlWX+VGJYV7!}9f
z81}``D2~Q){1wCg7%Ih4IgSJD{A2hhhJUHR<Cs|0hgpBe&_vzfp%|>V*}Yk-6A(AH
zr9y?c>CfNoXjP1Zt(e!?N~jXY5pf(DN7Xpy)Bq<HJo=bN>r{)I-z7ARo1?U<$IbME
zGt#5ts1Y|aRbDkkYQ<4Il++Qa8%MoRQeUJ&+zh7l64C$Yo5ayHj-GM!ilbQ^&Eseh
zM@xp>(tP;94@{UyUi@~WRUED3I67`-gG_(NINHQbtLN1=j&>n$AICA`9fX4_m|mh&
z9G&B4OzaZJ@o@y3G`hyoEskU3=-111Xvf9TJ&qny<BpwR%h~hlRZfWGM9BlqlgQ&3
z6h|a(CV||_%db58Na5r-`Z7Qnxqlp|iqPN#;usk6Q$#q^I4zW%9!l&uqHzp~o57J~
zw@2j?iz7}2h0l3lGL96>E)FPdZX5#|SZTRtgzO}<apdC2$5Du*7)Obv-^gsc;t8eP
zOzXwrvncuIm*vIJlQrv@$VL%2dtYe^#&Sm7{1x=fIEKbCOhv}8Z}?fzaQfx`pSW2V
z91%w#Bp)5e*>PMO$GkYsiDOJ0v*MT?H?z>OG<X~r#?6>DPIxZmBIDzj5XVH-z)6x!
z>uyo)eDTSWUm(u<NvDh0lQg$3iDR0C7soMG)tEJeA0Dz+TpGt^s-M&2m=VWm<IRH!
zuLq9C<#AjQ$4r@s`$mFMjH~)r#&J~~*RaCJaW$)AZ}Wbfry=nvfTp0)=ElwGQhd+L
z;$TGA#c_Qcx5RO495=*qV;ncJb;RLSH0Q=}{~q_raJJU5xy6>q<M(fi<Muf2h~v(<
z*>BUlyLEhRYegMvQx$w)$C@9<{WZ;*547rnI2OinPXdb)xF?Q9al9PI`ZyNHu_TUF
zajcGm8=-r2!@bNtJ<2{+)f^s>sUM8vp*S8Ee@wVkxJ<~hctm7*94kV}qwGw=zyGY1
z@NwZ2aXcC7JSFn9kjH_ti>4jc#K9lFFy(9GcqWc@tR$)%%*cx(&k3K8<AqS(n45pZ
zNvQTp92;ns1m-93YMlS-HK)GUPMG=FYjJFh<MlY+VCTk7`*Ca$*%Zf{A{4$A$J^pe
z%sX*x4mz|r-eYB}V^a8jST{b1<3njuPLChQu{DmL;`mv@PlP+-_%x1f;-AIwc^qGa
z;e09Kx5BU3MilIJHV{b;{cXYwLjF#Y?}Zf7X{VHTNx~%k5XbH~ew2`2f^_bQ<Ci$B
zgvn_T4#}_5`AztH9Dl^|C;R_6_DS+D`+pIJc~E4(@PLqk{4Mg2;tj$)BwnA(4*aA-
zaaBm5Vgi*CsGPu22{Rm2N#F>PYQiHEs47Ay=H-7_Jz*?NNsZ98W&*WBPA8UNodoJ8
zP%nY{2{fQn0%<8UOrT8yZ4+peKx374lLVS4&_cXv0?kA?GiP)y#Ti<wP)K=eg>$r!
zEv{Vx?GxyiK>q}ek?^<#x+l;ffsP4ulB9FOjAd7A2VIv0x+c&qf#CL7k$^Kaw)Y+h
z^h}_aJRUDRL3pB&I!xF}2~+t`mZUe+&mZiF2g&Z6Fdqj|b3np8y(WbN6F5cW)C6Ku
zJ}rUM6Bs1UFt2E0MZ|4kRQPyJ6J1<95lSdbDJY&C!tgT*xCx9;V1g7FbvA*Vcs>C?
zfwFiZfucxB=m~=aGm62w9hJb41kOm{Oocx@fwK}An!qr2N)^q{WL}JMgj`4dCk+%b
zF{2YWJArc&7?Z$xavht%xCG7>r%vFVn*R-LVgi#AxIsmHegcydxFmsT2{Ra7kiZmH
zwy^ZAgBG8=SsyM^fENp=Ds2?<x-^053CvJlco_I)30$7QRV?C!nJQe7z${i&O+RKP
zFuQ{JQ&Mk!1(q=5_?1Eia*cwWo4~aqbA(LrJhl#4*ClYhNRSI=D#-hdO5{xmGn=|O
zfm;%|HDNw6yIn|fo5<0ftvf_ERj?@J!w6R!?n>ZpW?7#z@PoAlO60<XIiZ(7-ddc%
zk_7f9u#dS&;6A1&fiDxdKY<5W4-?ox1J<%0OkhO<k0#8+%R>n~oWN3sAX6+)m^s@c
z3G>(zJXr)dPX7RUOetTPz~d}6{{Kr})+X?zZl4l9EnFp}&gul#h|{XIE16@2pGja{
z0?#J!oa8SFpAYq45P4C^OuZb+*C)*H@QimpnbLIC)cLEhHYV^oT@%=pz&i<SPMEzJ
z{LDOe$a*t@w-R`paUC+PV=<2lJ7m3^z<UXNkids5pla5Ab*%RjpnheI+8-%Xp9<+^
z3(GoT7IL==KM`^-3MF*iCbiEJ_+0Yf-0!bgArtr}fp3YOtnCT27Q|#T@%#+%JK2!8
zJXrV>9z>tO4&{RO*_ptu1b#?hcPRNq<i`Yl3MD@$uqWifw*Oys`<w9h1pW|VUHy~A
ztvT&q3G8QInnc?q4kU0ef!0YJoy6Y>{FA`14Xjp4{Hu&`LRBG&LkTnU=Vc{<q~V-`
z5-TQADT&HSR7sj4phXf#BynUC4Rl*IiE2r-;sQ<*)sr|Xi8@KtO`=8;H6^c|G*20|
z#7THjnYSeMB;+kMc?GVVRy9<}jgn|A(nQ!y*feRLJNV?nlr;YjZz)%%ffcwN=WJ~(
z{vDo%dWN@2v`^x=B)TU}aUYWer&t}5*w1#&$Al#KMRunoIwwtI?2<$`5%w)zli)UB
z3U91s9h(G^7iV!jlIBbH(QVAKFi&hdF^Qf@yge50j76^`PD<j3B6b(iJBdC?yy0Mz
zgOii!n?&yv`lQSvRlg(_B(X4w{z(i-Vqg-dBu&e@If+w~I8A&`5~qudNMd9XgT$#5
zNy1Jds@qr+Lq+1kL=wp)QZz*peyE=o$qO?=SC~yACla(ThFnOZC`n03iO2NoETD2I
z8Jxrr@iRinnIden!$Qe$k+WDCDjz;Se3T?JgrkLLCvlF*7~$9?#wBqsxo$5Oj!$B;
z$OPd;;UwYt!XV`rh%>cQlDJU(qEJGGsp6LirwK0&U8jo#fm|kjc@kG7F;je&@G9Z#
zB(4<U5kQQH*VVecCKS#Uq5N8rdBW?GxIUEMAabMdrldI+h!yOX(Dhc4+mg6Fl-wb5
zXA<*8?h561hgQ8OiA70tO`%)LJhv`R;)$erfFfVQn#RXo;eEpUg%1cHOyVIC>O3s6
zG>K)Q<dGzni?0wq8p<C_Vx{=wp@d(`JekB(Nj#mzD&{DOFOpcD#F`}DOXB?`)+X@`
z>rWD!lIB3IFM3<+lIHW7#@vOQ#B)hA4n8k@fhh8l@D<_9!u84j_aCeql6Y0Z*Mu8|
zuM7Ez&CqJVTGzvRlN}VSw`8%uxc@VWcak9CwOQm{^%cDRAc+r?_$Y}j%ymm^Pfar=
z<4VHENwaPEgx=ViL|%{B>_$FG;#0P6cK$+=&sZzknlHz{OyVnci78Y~;p-%}C-F@Z
z-!kK!EUPYt*RzJUwZ2Q@dv?E_ttQ>gi<mf<B9oZM&OeD=>@kwq&0ac*gGv0DG*gj3
zlh~WYPvX4&S!7QVzli)Q{7v|~kUD=PF|n~(&Dh6mvVW62%X8y_bueM_+ae;bzuDW%
zl^>P=Bl55Cye5{FGMY%44z@xH6;t3TAC)Aml0sz>_JKh-N2JhR0ai<)dJ3&lXr01Q
zDbz@zQOZ1uz7<-pX3ChZRtmL6$m^s~SG=CEekgAs(ojg-viohEGJRu{6q<@O6E+vN
z5Yn}!$XPY;a#!nUCbES!>Y(ZT+eqFvg?6E4dy!*=9a88h(n;7^$k4i^P^p<|={#P8
zb~rX=Mnk6LxD>jl%%=@KQf8LO>-ZE-2>FRA^c3$UJV{u)iN&3?Co6;rDRbgY-xT`M
zIFi^YL{k`$!oU>xVJ0sgm3fL<^r<PF#=#<mK`BI1T!=PL3ar@tIFW?!C1WYXQ|1`b
z@hYrD3ds~wvKyBp4l?B_96HJ>r_2YfX=N>wf-8~@bDB#bAM!#9Me$N7@kD%PL@NM;
zQy7xM87Z8Z!r3XDlfuvxhNW;;3L{waSu0vttWm=i<4FB}ace`f8Za`2QK~tkQ)d3g
zi)T)bNnvaX<ETti@ck+0?QP7cdT~Yb`_A)HW>IC3MxP_ATZ3v_6H}O!!ucsoPNA=Z
zevTQhFG%736dp)nN(vX!jI_*2)<r2Z#l1L%sj}oHDcm74Erm-{n4ZE6-QJSIWg=Gz
zd-MIT$Q8nwEa*@^JB2Gl&hHbiPT`sq=16kAaIWxL;XL7WLWao~ST}_H#uRQ6zgZZ3
z|45x%Q@Bl%+e1yB|9PkQeBoWfyF=FnA`4TvCxu1gi)r4_bxG>*mz50pzLa^t#_Pcp
z9%5^CaEya*8d`PwSP!SLG=*iVJnR`7bN-*g@)TC2@MsDjr0^lln8L~wUQFR7)r7}W
zcs7OSQg|YTCsTMTtS21(*-V~RP^*Nig=>Ush0h4r2{~cr2>86bzmPgS!w&}Hms41u
z!fPpPOyQLjHc01HCZmyQkBo@8sfOtgUZ+R7Zc3S5;+&atzQOnDByXnhR?5uY-xj_j
z+$?-o_@0mo?~CxL#*aikPGM^bTNEstJVRqdpRikVaI}L@Q`nZmXDNKnj?qCS2VbP{
zWeUHh@LLLBu?eKGBZZwQY)|2v6uwR2JLT@P3Yfz0<C>fQ^M2UQ+SAthUY!G<3wEXO
zLkd4J3n}bo;B~F(m8>6A=F2IT$jN+5$YaXrC52y7SY6kgMa-5pRi{M$p28m~98BSF
zCO(C|DeO<-0NYeMYhMa~v4!?D=d5ym%bDtLhs?1*Ry`}((^}Hb`X_~dQ-EWvbchAY
zuE)WRJfK@W_G^3sV*fAKZ?$!*vV$rP>N%+I;0OmtI;i2Grh}>usyV3c;3&tG<Ntq7
z9n^ME$3b1^|K#z%`D);xp@U`)nmcIZps|A{4w^duColg^e+vgK9klxYq(4Y=8wdQB
z@W>8m>zKN6pds2hrq1wJhQzi1SREX2P(Il~N5}L?Y$=@_Gi&PXpo>UXAtl`yl!N0O
zba&8$LdlO0U3)n=!7+;iCpzfq;AJf`(-+T1JIOh`TFxc(KGNqwqjX{k&StSX7~tSR
z2M;+I=-?CwH_-kLPIYjagL52=ad0}V0c)58miQoccMfdFjLvZf2?tT}uel4<!9ShM
zh|Ezn=^*bMe&>>M;DkIal5ybDZ*8-zk#&#@T|YcvBn1aW2PFp;o10Azo?J<M2W9cW
z!Xd&lgl7te3WH#o!Qqa1q&myN2&UY@DBZF(oz1BEB0v}{ymQrkz<z5i)5$Gr6|Hd&
zGW-h|OUl7`2NN7zDJQy4ba1|d$qpuk60YZ8;9!b_OC3y?p{RDDgNqzo>|m;c;}2Sw
zu&<NNdF~>UcU%)pbFfEi%QGDFs7Nn-Z*`f2%N<<7S}hySb}-YyEJeftlx>!3oKAeu
z+`7ua)skQ1V2*>i;vB7bT^puho`dTgT<?H0Nm_#gI&rmY-Q?hA2e&%7&A~0K8x<|K
zHO`7RsF~mH;10)}(!h6}Y?2(}`G)jP2lE}=<=}1y3mhzAi7Up14i<?pVfTmxzdu;a
zc&nMz-WR&wFT%Jed?0jvm`ycet!5szptMw#bD8iF;d0>$;iC>76Jah^iahS%iBR&S
zgQvuwcCgAZzxSdVFTS{B%~|7ME!&rabq=0&u-?Hd4xV#Rfqe`683)fhc)>AmJ$C9t
z`>U#3FR>9hAPICDSF<)q|5YL7+Z!3>*A(eS2d{^rP3&*I>EJB~k7TesgSQ>L!=9v~
z)gpt<4&HU}YT6XUd#slAtoI#!KxNBX)5QAF!AA~Sq|q{sEo{qdO%DEbu+_mQ4!(8p
z9eaKU+gM}{wzF<jv^c9_!~D!Klfchq;V&F~De_fl`DHx+nYpWm7kZkr0@&)=&wTG-
z2lMOTcLzJ!7{^$<9Q;5lsav4JZq|8CHGg#Q6Z<Z;aW?H=SZ~GoVw$(VhHam>JO%C#
z2Qz9}f2vBe<}jSS4)%p*^p}JEAwS^YV95V=uq<cF>yQI0jk;;nO9N?CNTXsJmC~kT
z<SQ!9_PK1rnpruGYH2eSWE54>Ce23(j}%r-V{a|<x`)21r*TvoHPWWD;uNkXeTmmj
zn=Y}AaA$Ml%JkPyqd^+Y(rBJW!!-DHHbZEVMx!(ur_I?uyycnd47q9AJlT=6Bc+g|
z7?Gb$wo0RQ8r{-3Hf_2-{ut=!v{|lclQu^&v}NpE1rn09PvaQz4#JM1yi*#T#k&Z*
z3V8+yy&RWDsgczujg!;hNZLJ(9%&q(#tCVh$QW6#(&(8+ue4d!XTQXCT3VHT9lx+<
zf_a7&`w)&1ebeZd#<VmpO{0Gr1JbxqW*L~qDQS3V_-UL<`^#@GjnmSm!#q8WK_U@i
z8cA_Gji^XW7#C8R6C`?1rQs?ZCvCdcw0K7NN<X8J73Zh)<oPrTX%xc{O7g<j!7tV{
ztAA7|r!h2*VQCCbV~9MSk;a*6(?~y6v!%|0f!6Re&Pro!8sikyh%`ou(3K5#lsL)g
zG|pBa=Lp9L8PR$zHlCZt_%tS@abDVNB%_>Oc=7K-6BWXwG|o?BvV2Vm!@NMZOanC;
z-9@tM#X{DxsUnxqjA}d6)0n|}mB#EeE=%L`G_FWvX4)Ku%83Ej{5eD5e>_>WSox>&
z0iQWd<M}jRNaN}>u1SN73_A{5bJU+KPMfFrxoKRh3NtT_Thh2Sjq7yF%5!}hH?TIQ
zag!2xv+$Ds)@8bw+S{bLK=RwuxI?#hrg66<n=Na88h54nFB{|Ke;yZx;op<SB4(t&
z$vANdGn>YJvdqJ2EKTEn@dtzt3Tf4cM0oBc`7$<>Q2t07%hOnq#-nLGmd4679#3O?
zKl7Idz6EA?%J%}ReCvrco@8~^AjO8sKzKc!#;P<{r?G||LK@F0Om4G$h89cX*|a(6
zV3v01t=9p_e0;n39Fu?-8EH%FB^E*2ECSR1>s1Lir12u(0;?6@d5$@0nT?3$@>&`j
z(|A3NH`4eyjXh~>QWx~S@Xa*d5_vm~&(iojjd#-6oW{EnGPRv*o6h9DG~Sow1I6{B
zkd5UdjshY7IE}61pM;W6MYahm)waF}!~8mpFU7x77ZF6kShh>}jqqFHcfvqnM;beI
zOU+#(Kculcl>C^+PybQ=C5>O%GiOjKgWuBlJ&nKQ`iGFalo`mMq2Ik}>=Wn5@09Ns
zKOj7q#@}iD6KW!3dh&nMI21}OMxm1&D#&ShAEQt?gDSdhn86Vu)iXFs<j4%FicqbZ
z2y<5>l+@0krg*K;iE6y+WKdU<dcyj`212?r0gc2Phms~4G!1#P44R8`dkK|WX3#2w
z))^d~!Lkf??=wfgT0N~c8MMuyT?XwlSdhWO435d5Lk95-5*c*Npi>52GU%Ey?`m1E
zI%mwfA6HA*X>iEnNXJ8Ux@B-|#;m;@mqGW88MAt1&?|$J#E%!AAUrXHo+7~un%)`o
z$^5_Pe4d=azzj~wps#coPQMKLix0>gK01#cPZf_!-kV>6WpH{1gLE4a+M#lA;z3Np
zAjV_{sSGAjAp`!=z{%k349>|Qok3&11<t_DAe%9>pt3M0%nJ)bIu$c0iF-m{$mbe5
z@fw`L5J}Duo+%tE944gB@C?q%U_=HZGZ>Y@Xvx`uuruUF<u2N0NwqN<jLl$t1`{%7
zHzOw)>~F_q%z$-n2IsMi*i?1uOOI~mhk6q;W<`ju99}19a6tw)WpHx_Q!=<PgX=T6
zA%lxDW?s!v*v!c@I@cv*Ui4g&!8C<@X$DtHGChMCB9~=wMFul7xIBYLDw)`SZD?X4
z&dOl6e31v&RT*5J0r@o<%+26hg)m1*A-yxMc^O<M9rC~z=ZfQbuusNJsF-;6Z?|M{
zYsNf*-krg18Qh*Rb5TAo+>ybZtTXz%$9&oCt_(Pf;G~GdQ?In)JcpAHBll#mD1#*|
z{S3J7y*Oi@q!>O=!{fx8gikK_Wss?F-Oswp$v-pB!ykkX33>Z)21_&GcIcp6KE1ZJ
zy_U5igGV!XIESS<JeI-A3?{mm<bsht&MeR-&8#Ofcv20Jr|F)~Q6OV>4nHkiC0s3B
zBV3y?2Le!G9ott1&t>pDdl(m$UA&ONiy7?7;D-!eVxiZ!-r;mTgO{nP`nFz1ctyA&
zgI7gf6S4|z%;0tLH-wuq*b<!orrWoKZwrIJiM^Y_4i)Ho8N8pt2jZV(@M#7gihm^B
zB4i!-ID@Sr=PL$Ew(0g8;b$3q&h+zPE!6o^<SXIV!tJWt^!RP4^PR}|LY{BWlG>R8
zyBhur=Btj_ox$EpsOXxr(|^q1Cnf&p4EAL33oBIy2P9$Me-rsb_`5K8)csR@ZwC8B
z{t{AuzxoZ5gBkoSAv+D;{v-ac@Q~1QO&0-S1tB$=O&&{I#l;aW&UJB~iz8ig02jxd
znl7rkW{si=`+wJr;MIjk32O+S<uAZo)OJzFMO_ztUG#I!vp_u;?Oe2XQQt)aNg4`U
zyJ+N^L!YSAm?5}m>Y|y8<}O;grn|UNXLhx4O)tTVM~$@-C*jJ^(F&xEu&t0Mm{IK*
z7ad&mQKlGjM;F~)^l;HhemhIEi;J!<x=C_e82+(J468bm#Bh#xae|cj{BoiQL+i=3
zDVARHb&{~RFp!_DcxhWU_WmvgxX8OGxESc-6c?^sPjzvci?oZ3i_;}ZxaNmtgIq*h
z*sghl5OdA?c2t}T#gxP)VFjR^;U`_B<ku1MGYtxPQ91Z)Sk^^OPW&>67oCbON-hSw
z7~;Zn&9aH_qAWsJ-fnDW{ZheH3|?or7$@&%y5>-+p)Q8$cDRc%B4-JyIYMM4dk+_*
z#m{zePUw1C4HMwheb(4evZAKNxESVm*Bs}<=cbLFtO>LLbFFP8=ewB9+-2cpae<2|
zE>6wjv@9-kaS`iG7LBv!pibIhSQlLEnl5*$i%VQgQxuo7re#f}(_PGPahZ$DUHmJj
zD_qQU@uZ8VT+DJYTf#*yt`xb+#mz3Ra&fhbYh286G0(+ya+)i=R+v(o;?AP$b$f%0
z8(D8*Mz`SP!=TaKBG=np+#zzS@HQb8?sPF<e4+3z7k9f@;F^=1gMm2sSsPz0G9&k}
z_G)xq>|%-Z?{)E@i-*MTb8)|m2gG^aJN5Y+(1%?tb@3?cjEiM19&xeU#fnfT2%KpS
z63qXCt#t9YT%T}pTcyKwDR_Cod@;<YUA)QOz{M&Tt6i*dvDU>aE;i8qF4nQT;KoiD
z&$@VyeZGqqT|DoaA2QPKz5kdHcwEnn(dH*~fdOB3v7V(YW73u1WxT2cyyjwKn9kQl
z-f*#rMW$|lgOJH)IB&an$Hfj8J6&vc@h%&Si%(s=Ctn}9_>c(@|KHE=K60_e#m6p~
zBvwLp+Wh8at90h8+HZ6585_Hc?Jhod@r8>oU3|sH8>TZLfn}UA);BJ`b@82x?^#=v
zHs*yBAx>sUc(JT^x%k1wA1?lMv0HKd>|&3LA6@*UkU4pvCcpps#l^2Kesl4=N`cRA
z6Iz+?9BD~rfeKXH>tdgazZK43F7~@P;NqZb)}`rs-Z+E&4H*x|`(K*>36xt}hg?`$
zK&_*eutF9Uv#2C~L>5P8QCXaURLPoLvw*5fQay{KM5+k`3)IM>rqu4x579c#G_lu~
zLLFgUVLc%$Co2gR8f4K>5{A!k&f<=v#%3|6N!E0FO|xj0Me{6LWYIE<<Fhy+i&j~*
z&Z27;-PkSg%de~%AUbE!Mz?LVXqQEM@nf>+kOh}$s74)PN6AS#i3Cnv6at03j+MN-
z@VHQ?hX`GRKu*l!<ShDT(KCx)S)9c5OQBB~*LRgHe$o{L-Y<*(Sqzjy;C;Y<_$mM4
zoXWB%IX#O(S<nu_v@nu2eVUy`R3s*h3n@=zkrd~D;&{t5u^(%0rL)Ln;bxJ|Vr&lM
za>!+o&*F$2j?AHuMKOy~79LGn%lf&3HL9t3%j{=S&f?iDp39oYpTP?Df-Ht)&6s<J
z@XRcRiVVx*oGiwO4`*scMr1KEi&0sO&f;uIxTJHg&gY-j+*&rtjHJBAW-&>w<Amo5
zDL+qSd=?Wz$;9m86GZ8HzJ!yrW|^Jm%}(JEki|t=T%5(iEbhr-DhC2pq?@ytmc^x6
z%+2E3ET(5MBa7KtT$wcsgO>?sW^uX56<PD)807)Z%9=+H-txLCi>npj|C;bMx}75(
zR$c1MQy@1;a$OeJ>y}PIXg6kYle`2yz%5zas@vPLm@jg>@Qy6*6!~974B;+G?iMZx
zT`6Cb#RFM9D9K{sk}U33y!Qzi*ZpBG9?IfjS}cnv<g`?{LcW#>9}zAWGIoalsQ6>T
zm7)B}ES?Gje>#g*S*(@QYDE-SY)z;@vpgfd?mv>}ReW4JJD9}_S-hCVOIf^}#XDJS
z&SE|53||%TC2tn5h;I<Sn#F5sARBed2E{ATd_$5=S-dIomhf#MTN!oU72lS{XKa;O
zyr0DfS$vqqr;=0QqbxoS`Ii59+$#QwFo-S)@bfITXYq~F^F<b4O5rQv*TO)JA%C02
zuj*31%i{Yic4V<Li=VRiIg4HL9`p=9i0>Bu_#gQmg~o7xQ6MC|=;gO8e$V0$x$e*6
zfV}*f#a>DF>GrSxgcGEPy%zoQk?`*<{$XdOcV7RB91>bNAcqP$RLmLIDngP<B9(LI
z`83%0L}Aq&s^w54hnhK5&zYBQ{Ll4Kd~)P6ofg2^3)RY@b`HaG7@jjd3762BhB`Ua
z&7ocn^>b*D!=M}@IW)|nQ4Vc#Xq!XhoaxM42%89-3Mp)sLv!)qJK2`vtwPt<B1a1w
zRkzyZ&_0JAOq(Rf2#?L7Lk=Bt=%m{&Idm22oHK9G;tedmwB_8Un}iQ3!N=vy0}EsC
zE<4be<R|3Ni?>ocF^8Ta!5O^0bLgYn(}XAIFi@m#4*hcIpThteSr3%~uI+0cc23FR
zRH<>?XZTDEg{Lc3ytU=z38Oj0a)^slC#~cqbeqf}6?$<bVK^BPH;1f9E{8lj|Np7+
z5kT^iuq|J}DQ&)P8Gbp3!Qw-5I3tHM72VMPn+19~OU4<a3NS)^q;Qmw6=rk}XNUZp
z9QMvORgvo(H*@7Jhx2l{AcrYAjL%_04wG^?KZl8|VBFEiAJA*#8Fw;pIc0LrjD!5$
z!%tf7xG;x{a=0mnn{&80hp9Qt$eFL9BdXq)<jfKWBbuhDFU?`P2;X#5*o31%4wvU}
z1ru=S(99g>ijdFBVYc{{q2#I@t`7M%j3VTmu2BEl9Oi|R>qM>>-jKtMp`2S^TKB>&
zGSS^R+?q2hGq>f;{O$G}?hv_?tx4VQeBGM<UlR7E3zTtIhJ`AQdvaJLvN(q&IovBw
z*9S!I6W%Z6n{LV<%;BL>r%oknSq_in@N)rs3g+$e@*LI{@Js<Ka(I*}%wZ)<p@8!X
zcsvLDfVGASjD=qT<nUw;Pvy+st*3KXmBVUQ2F*Gaw$X!IEsML<p2=Yyi$lhLHizff
z3FL8B-emUq9Jb}~Sq?8Kk1yu%QVuVN`F%5o_2RFv!^z=Q@z;f~2{#J6>rc~fh%?Mh
zw7+JXZ{_f|gzx0=Q4U*j*c|G-%QnkCFo$FK+#&ox_@R*AKMplN$zf~A*&aX5nFFQi
zcVJWNbIE_sVGsK>@h@}uij5+N?K%7q`uaxX`y9R%`7V_2A7<?k-<iWM_GX&oGyOs0
zcjxe9sQHs3rPD7t{L0=kj|Q^dZ#f*u;h@xh7ygmMpCWs6*q6g!VF)Z%&X@MH-RUXd
z?;QT&#4nGkdDEf&o5Stg<S%|G2P+RK`~`i@+I5AzDQo7sl7yA>sFFufzqe+Rj>sE>
z(2UhYY6ypNwv#tq_fbOr%7>aY^Qe_a?L6kIbn4_$S21!Wq+Z^9d%|!SQNuhM<<TdP
zlk;et2R8<E$fKj8ZjwjSJeuXvT(>RrXeH8u5?QZx9!KZ-J3q9OyiMS$A1*T^?epfP
z22*uR9^7ikBn8$W>6Ay0JdRg-Ix{hObj_O`vvi_;y5-Fh-?75ugx!UFHatOIdgV<;
zI#GG=sVsA~haOMLgQlS6d*{uVLP_7eF?B4Dcpm-o=r8XB@;Eh*)1*8wk5iOvnuW2S
zE*{ClW}2l;Av0^f66J|aig#HPqnXGf$#Th~B(;=0x=c(ST(n{A>Aab=XXHv#v!l-D
zk;@~m1Q&!1mWkv`QU>TLgrRx(d6eZkSbopQV@Q}14s+BzQ?8qvS;Hh}!uV7>B9D=I
z9L(eIJVxa)I*(`bcrI^h;MsXxoyRqKoRi0xJjUiRE{|ENX6NQ{p3-?)9^><vkjI62
zT$IN|37P&2@|YCz^F=1-&1+&7>y%K=k5(=gza)=oc}xxERJ&AsdLA?K;0tAH@?x;O
z=z4jmd4<T#yg34$PWN)ZmXdd69#@Gl;}p)xV{RUc^H`F{wRz0T<2IIW9@jA!TI9cp
z<sR}IWThMP2>wlcv&b!Sy;T^<*}dP9H+%o?&f`vbnJ>JH&4;yjjKvpK3#716c#n`r
z(=5uHSE%&JKWg2Z$5NUlkNecJ?iW6g$Afu1B+lmcuv!5LFMgcPLGY10R_4veDa-R%
zkv9{+NAq}0WMy+>VO}JUvnVTCPvr4r9#7@*bRKK-cqWfkY_r<PL|2m4x?Lj-B-wh_
zeS8HV?+ohsJYLA-n>@Z{Ys%xLJU-9ki#%S=V|^a)<?+4}^GY6X$^skmcvX_u@_0Ru
zH}cr1TP8R-2WC^=96`Wa2F|xXZ{_i}6yC|>-B5G0f}$(ch^*}&$go@T_)tzC3Hf4|
zfw0wooX6HYKFQ<LJhtWWS^n_H2(Q*Pzucli@ZG_eOiv}Vqm_lo7V#AuLRgo!hqdUt
zJigE4$2@*gNAytzYlq_EOnzq`yYl!UkKO;R3EFYZWc)0(-}Bg`vZLgeJbn$!@wdGB
zgCvE2s3!a=+$&^d*q6s&A>W_Jfsp@TS^u!V$|F*MUBIC{tOAZJpnCx*ph5x73TR$H
z#R4i3YgzRRruV2^Kur-YuvaPIhyso*plZQ1lWLMvCulO&b$gVshLG)xuC)rNt=l>U
z)D@{G417_iLE&)QX;?rb@x}!-DWIu1)!4FVWahU;0WBr$TtF)Y!ZK|u(z<}7MHpb4
z!r}g*T><SSJf?t-A`GNM!HiQ3wo|Cjt#>TeE(O#1cP*fs2>G!h?A&@3a6EYdeP|+0
z(N9nyC(>@}D|!~tt6&DrlY}JfF1WgNvgTK(D4f0p^ph{f-oJnW;sb@jvjgR)7I2y*
zrx!4&aJb)K_W7zPT0pFTTmkt4;!Jq~ZUI?Yqi~!tV6uReZXF>dX^~7A4g(41t0aX2
ziUo`+U~~Z`DGV)OSOK2A_yv>;7)+D4HJ#p>%G8ho&iGI6DCh1?#xh)9Mk?872}cN7
zMHvwl&Sr6F3-`IwJg0y$B4dT)gn{OHGSql^pCFuAFt6#^2eK!eTtITTHKl+HIa%en
zP(Z_@%`^TCJ(OKkz{LejE#Q&@ZYki_0;UykX#v+3FppO=Yr1^#32sIKmlbe%0W9<@
zl_QcXbURZxtAN=e9Fe(O?<(nBExabQz?=f+iU;EY)5Av<KA~J!!1V>wZ{JYBjRo^@
z)=k2U&O*OgLh{=RxV?Z!3Rqsi9m?aw1uSZ4-KkvDw(|?POX1&LzygtlM3H-h)LA65
zxPT=hkJL1U#p^!Z-e152A`c2Ff2hC{p^Xk}+ENyZ;v(nDz>0!-htAFFj~2j3EmnR$
zo;;@FSjndVktYgxQsgP&>H?k?StX>GV7Yq@t*z<Ax&odpU_$|~vfto0ENnZKtndFd
z|5JOufENl_&2}dwc}e7D;d<dK!UyMC=wo%_|KAJPsEoX>q&Dnny-~oX0^Tg(tpdI;
zU`GLO7w`_drUD9Gv025vMaZ<ht3<w6!24lpKPceCkbfk?H)S6eu(g0s3iz~uFADgQ
zm2;f6tzdRNeI^~wmsq7gFW__SDE^u~zbdeqN6DVl++M&p1$?XSg|}<Fnt#v?<T)pr
zA#kCU`^|PLVY>?Wp@7}2tKF?1RpowCZQ(~TyjU%{6#R?&ka0!)%AzUY_X7SXphFQI
zi}<sEy#-V$;)o(nY;V?nxg&I60e>l|{RJE-m@)kzd-$Ruf9v)i;lDx(4;5g^l><F*
zc~#JD#Ud(+P*S;QwrG+ZSp<{RtZ0rptXeedb=8WfUewHASYKG9h?*j`gsfw=i>M=B
zS6DBUFIr|b2zf)1MnyChX%fnt77wr9H!p%VY@t-O6t)t!79K5ZBWx>Vg4-3*Ui_F)
z(z3SIsff-+q!@k?U5e;hG@q>{i|AG~pBHg<^bI@zB91Gfd(rd~z38`y9z`5qMDQbz
z6KHTb@qJ}a38_Y>-bM5&B3{&QDT?STok2zPV-%tO01@ib??CZWia521(~4#`b-FMJ
zjkgSwJR&u_h^SmCkBKmZgkmS58n;iJ&u+hnOwsJ;=Pp^U$hk%MMYEeL%g>YfA4Xwb
z$lF5Etfd!qTPnf}<$TLimi-48F+}7H;m9J+6d5WUCS>^zFXF6_j}YNNIVzNlF5+zQ
zbA)3;`B)JS+2<B<UJ>Jqm{7#$MSM}j#3CjY@mvwl7jb?OlZ#kV#JxpaP{foXE-K>U
zBKX%2KGt1W#0j;{te#!g)FLiXX)d5LSAL3^T{MHmWjqC<2;y|%43;~E!pkMOqKKJA
z%qpT$8{@=lP!(KR#8pLHUBop-++M^T3UdzILJ>EJ&n@EGBIXs%lLe!@u83E(TD4c3
zPH!yYR;k@oG$ZNFMRPd7Ek(0TN<w{Jw@HB~|B&A)K3_<MyF@6zTjWoej4V_&zNd&q
zVSQdK!kt3*F&Qk)BAzIko#77@v9btmM}JTjc&LbnnbZo_(jt~A<1Br?B78)Ac_>+-
z3h=1#vEt!Bm9u<jX~FHuBA!xcOv&F}ES@s-bP=nH;0C1C!ZpIR!e@l*gj9Hz#yMb-
zyuiv_#2ZCyD&i&Dq==10yslt5O!uf{tyhj-DVou9gYZ@1Yen-dKZV>8>S<w+9qF4z
zyj8@<MQknN?IM;}wB9Y6E!pp|7Rkb!i--3BGtKX@VRHSahz~?Q6n-S!BBX1&qWQFk
zL-{8~{M*1xJ3m$I+t|=lU6}w@yf2IRs)(IM>|$AP%SzGg?Bd$vc6MLvK-fd_6+jW+
z70r4}&BoUElI#!$5{APA?zsPr59U7>@lz2^Jv8&otovv7JSFrfVNcQA^7@7SzxZ!O
z{9eQ#;#Et=^-uA=MeHl$uTUQ)>=!>EJShBI_>Yht|1IKB$gL8%m72l|3bUfHlCZL{
zijWFNlyIbYFukuPUcH2)N~lpn%@UfH&`iQw!Un?HCDakATSC2(`A}<5ee3sXR{fGW
zg^Uv|hTKpJjf9PbO@tk}03t%2t|hb(Zz*ggY+b_9CA09-ri9KSZA)lZLi^BHhZ2qv
z|E<Ykdv?@qC*j^E=<<JEyXp2=;c)@4XdPd|2_-Yq@iFkk5_*=*gL7jKy-GN#gmERD
zTSD&=`jjxdgtJOGxrDwY6e(miu3+^mVL%B3OJ+dnFKoKsI;DhD8K!Pe6Altm=kyY0
zRkTd!UxHo2rCkv%nMLCS<?R1Uh>MW(Cz6yWOGrs!TgLcGmyjvJl@9xmLJ8S0<eW%e
z*eq{)9`;wI5<E%#lIdrLmQdF1VBrwq870%Ho+-|bj<Ha4SfJn58WEBe+8QyE1<}?T
zRl;cLpG}+a{Ld1`lrXkrnl^8Tb~Sk!(ce0+gz+UzEMZc~bfJ9woS@J+qEYkw5+;{W
z+cRzIf)WO|HK%#}Uc!`;R!H~>SP2)EaB&G!OSq(jk4xBE!ZaF93Eon|^b%&2u&RXB
zC0tg*<toR=OSqzhnI$YLVKEI=!t4@mD&c0Dv4pEixVD6OC0t#?H6_d`VXkUIzj_wC
z1#Z!&DV}O!vG#I%%ylJPU&0L~+{j!Hwdz&0_{c*i)>xh<I)ocRTUxi2aBB(kOSr3q
z+e)~-ggZ*OlU}qW#XuM`!(7|aeE7g47Vl=0EMZ{@_mnVF0|bMj6ZhmZK(;<s#U;wf
zLnS=SoYJZ#++V^2B|IoO6@n9tOZCh*+I&=5TEemt9t~X|DPegDD|8!lt^D&BXBS+(
zd8~w$%x`ZK3org_jQE5!pA<e-!qXxQnNDj;SX;uz5?*J)m9Vaa^(;!+|5@R4%u5@q
zQ_gD9+<Lx*7uY~J|5x33N%(S5uXL)zhLTwjd$okuBz&%ou?&xYWb!!Gd833)C2TI?
z-4fm`;jI$hF5#ULIJKr4zZm6odYT5}-~sl%65cQ2gAzVu@6p^G<@W@SBU6}EX5v3m
zMrbQ~r<Fb_;nNa!Nw}?q&r0}SS@^t!FG|>6!Z);YGwaI|zAEACl9@DiZfzFg7%W3r
zSO?#hz%(<1-<8aFe<W;T95r?*%$-7N(sVzF?=IoT5`Gf@RroVIf7aoO)-UW=^@lz-
zw+-9^8v5lg;Qvq?Vfz1+aIbJ*34gKk7e7#f<pG}QwGK-1xA315{uQD8kO-fPD@g4~
zA>|c4R0?@zkt)I?JhRh=3RQJm%|mq$M~T-I(y4|BpDSyL1p0M6OsQZdKXpCR!_*Vj
z_s~G3p@&AEIj58(J1;75_TI!ZCl&KqgI#EI4^NiyR2eNiwDi!*Lu(Hwd+6(#ebno@
z|I<So4{bfODB8tCSI?}9wDZg+)%L<;JaiE0DC{KcETqmJ?L6=1p^s;d3O`l@@o^ry
zd+6cecn`fjY^i0P;Ne8}`5sR4(9^@ZhGw(kl;h3nBIg_YH82l*{Nyi-=QqAr!A!q7
z8DOu~&qIF?4|sUc1Ggm)@G!%}WlTRG3_YCU;ZzT&c{rW6^>C(#K^`I=@*WBvY!6Wn
zai+&JYv~h8h<Rr7@KjB2_}KnW11sqv#UycEm;2aRaM}=__K@+6!FjnNSz%7dWs{<Z
zl83T~!JK%org-o@@EkdYO#3t0v<XXu*AN<<LpCSa?6f@$^Kib0$sUG#ILpIC50gB6
z+t3=p6nZ#^CiTF{;V2KIJu_qkT?BEAhq25iD-R!sJ)Fxj@-SYNgdd}`*|MkN#9)Gq
z|31%u(By}SdA17pBX}NsaRF<Qhf6(7_i&*Hruly>)faiV*uzxs@cBiT$Xx7!r+H?+
zLBeo2Gvu=#U$b8B;R+8oDQcGfOb=J79&#j|B{JJH8}G05%)-dK6|Jj1T;pMmhq<f?
zoa%eHmU+=b{X9wdz2^izHPo}N_i%$}PQSTP^_hjzOS!n&!!6Rh)x(`0=6kp;4B>Xg
za))Qmvf!h~T^{cCaF2&Y%EAJrXQ6V+D$W1l&ekDgi#;r%c|CJhCv(RIsQWxK^}SyM
zWo7l-IWGHnc-X@W9$xgYlr@J_3kKq0nK*AB5m_!=A$*iIBy?TLc2~prdP0&XL-|vT
zE99#@tPc4ak+n>7C|T#>*^ocy;rWnrW$z^qFRRMUFPnC{UOBzFY$j>1s19sk58&Z7
z@r@o{XW@!-tlZ?`O*VEPD}21=;ceD`AH99N<6*Oh3O*|Oc-O;w9)9q!+r#@FKJf5`
zhcDUHRJ1<y@TrGw9zJ5b_VBTXt+bm0r;+(2!d`_tLb-~|(VY4upLzJRnf19UFvoW)
zd?o#FSov9ko>>*&?wOH`&(w$b2VoEVNyHACS}Wn-duEF@8{<w7yFByeg2A#baYf}v
z4?nTCc=(H6JnZrCn}^>O;4exoJJnxRSNY~W@bZTTHYghEPY-)Nvn)d=j!M*|aKDGY
zJ^aJ2OzAo3nWx$y8B8|g{nx`G)^M86GA9+o2Te+kyqNe(J}UcY;iILGDn5?zQNu?~
zA4f{Rx{srLW5cR6IG2EYvul@Klkv`Eu)C{g)$&o>M|~d+eAMyHB)_h2ij}^I^?YNc
zH!7IN_J#~fPR)GHsC_i?(Ny8nR_u1T)p=<pW4Go~AgNo?YUQJ~k1jsC`Z!w3Y~#oH
zXyc=;Zrk~$>uc|uwO_7#v(D2*9ei~3&1l$3F?MElYFe%JMI^T|bn|hnkK=uu;Nv(c
z^zacx-Q719rZPWBWFAkHD>Ks5N34Ze8S52Fwl=f+_&C|ecpnpd^rc~a6n&I@^!G8q
zhwUTkW1x>yd<^mtkw=>4R3E2_pDuGTa3+cJpwxKF9wz1^PHQs@)RZ*>*Q7jh(#RFL
zv@)LY;f5h+edK)PeH4@ndZF=o&M?E|8!;|Eka#|PAH#eM_fhsS*vA<@&h#-vfv^;)
z!$k?2lq4v`p{g_d_~I-dBYceUF;<qRsYm)4C6A+hobBTrCFxZ?<uMn5_i<8SgF4U0
zxxQ&5Y#n@$%<9J|Ci<A<<3=Ah(HcG``?%c46+SNTF~!HFKBlWGUg+aupQ~-SC`=~{
zmv!<IAJdc=#>M(Wvv56%m5qfsLz-;kmoX4-hN)xC^fAlF93OM#G~35jB3FiCGCf!O
zxP}?gls-uRwRBZ&zm9cGns-(*QC#oi1|O`VT!Nz}=aV=4xW&iaJ{CyrRv)+dxLvI#
z!SBB$obQ_sf$6+cu`qdz^e)+rfh_cKkB<j^Jmh1MkHtRjlP~Ho@o}$j`Xx4GdSL=M
zkG<c=1Iqpz>Ur2US>kMi53@eY<1!zQh;Sl7`>^fM`=gAGt+kB0Wvuk^xR0-VeC^{2
zA5Z$&<l{{rPx*LSmVe2|Dj%zTJm=$iA8UN9Rehj6pYhGqYn_j0eX!g7v!(gCgPj#C
z2J`ZQa>__qmtIr`DQDey*~fYxuP9Zo`go14n=@XuR#rcj=|&%~`*?#Tu9vyY6g@H=
z#`Ttuw|#8&@d^8XADexA=;I^y{|fDWR{l!Xd%oGK#7`j@?+22zGB946Ws7b<mc?j8
zD$pRG`q-v!>PsJ=`S@JTjpk(q`$FxAn!zI;jZFRRKE7c=_}J^?TOZ%~_`%2SAR>jc
zOZM5}W2bV>0pjECrpRcMAAS7fV~>wtq|dg%;`lj?g~|R^{C6L}NnvXbi;@1}n-zF^
zXM*?9)IKVeQMru$()riNAs+{P9ApjQdY#h$k8j>!GQdshQLQpiMg<MHObPAG=FBje
z$BJb$CnTv-#t~AeUB;1RR4t>1ZmX3|DOWG!sIo>M*^MS;I4q!=Wz;I0F@jBu(-o$W
zCB@r%Wz;VtUq+#f24yrX<M=X8pk^73%Q(7>Hf1y^qp6~3$uyMBpg@Dr!p%APFCU)E
zQOKUTRoPT9#@JeEpjz89+Lh6vjE<7DS2*l*juGLRFf74NWppm%xU%_+N0&0XmeGyD
z^5H@sJ)L-h`QV+s5Tjrzu>E!~qet01@zFAjf>rUvGI}y$Weh5#R~aXj(Z7rVW%Mqa
zcbzAf(O1#+5zc98Ema@ePq%EUtb_x_netQ1I7NA6Kg{q?lbmK`K}5>1%ZO7_MpVY6
z8Cgb5SgdTm0OIT-Sw^aibQzg4oG?uG?YmU9+%mFd<P<&&iybVRAp@z>+#GyeETdG$
z`DIKl!z;rt<LoldDWhD*;4+4lF}#c+Wt>sQnPoGn4tf|CE^7tTFtlt&SPIW7V?-IF
znfD6TNTp#^m=dOzD?GFbKV6~S#*{I(jB{CYl$~*9Gybx4c-kAQC>0pO_%bFiFB}3C
z{-m;*RxzTWeqK<<lrm<PF{_LV%ebhFOUsz9=q@hflCpVDq2H-x(15HnOy{(+8N_K`
zI?X8Kaw%UXWUy=w4EYMBgn5}=#+7AUQ^p+CpQ~g#n)+%bh839gZEhLYmT`R<Hz<%z
zt*v=wTvs;B`$KA&IUb(}8Rm_&3E%(9BMnXo=S8=aacdd3m2rC+ca(7_D|~IUrp={b
z&NJ)wG&$vQ!Q&cQca_bi>$}TXP{zVC?kVF@C1z0>i)m_RunevVED<g(<6aR;?i0Dc
zj0dFuU>OgUv8}B!1+RxC<Zc#f2Eyh4k*p{qaC%I_m1R6GzfTCMPgmm8WvnWr<q)(Q
zg4JcLksT%v#@aHTVQU(U2>bsso-Jcz8LyY|9D4(P0X+~eh&;~*zTYIEF^7OMUZUyB
zSYO5~jJ=H4${5qd*kl83HPDO#d?@SR$ZC7CIV$j?-qsssY%1f2GIq1ZR<zzMV|iEe
zZ?Ct?c)N^u%Gj)@iEqnzw~Y77_^NCIdB2PgM80Hnod1{ck#6b4*CJcQKNhkcZe?5M
zBe3vO;WpuC!q0_Y2pLom!q@V<UHFYKa2m-$S?T#+xI?(Jj9qL~I@pc)|1k9yP*)Z0
z|M&U8ZK2W<Qc^0RVt`;_V58W=+1+uly9Kek13R%hes*^^#$z{jf+FvC=9d3@*V=2=
zoP8#)o@=g&Jx?$<8oy5CH>u&GMc+>|>l8oO^hcZiG>xBa<`<h@yMvje|2~aBWG$Pl
z*yK-HLeaKK*Cz9)v0xgVo93<|kxrDCM*KaEf2Of;8vjmXk!*gGj!ll&O<Y#*8cl;Q
zO>;HeoH=Hhrme}6O_pl1M3a5zH1ru<{k3$HWtuE&i?zw~x0yk!n7V3bIorq<JsQh5
zafTRu*PK+7?ru#JCy@?Hs=GIB@TW=7CMz`Q)ueZmK1~LWY$$N5P=lu1`cg(^D?YWJ
zDcrBgN=*hg4X^t*jUWwZn#jpOn+~$+k)`QKliz$uV@Q*s7LsAAqA7q)SGMUYHeJ=G
zBWya-rlXpSwwa=5!&$bWTB|o%qsf>iYpVSw>o-}e$=XfEHW}AsohDjcozlZxO!T5<
z;<`<~`qx}0^GBP3d3@8%<tH?auX0Mq#s*C`Y_e&S&6;e~<iJr(Y_f6FDEN;W0xV62
z*#T5yuQ13YX;70bnrvxRNo8afuAbW1s>#+(wrR3$)9emXC_^{)$gE9nn%(k3|Dz%1
zI<@VZY~N&x1i;dvZqjP9W0Rel?A&CRCXs!=t4*ginPxM)HQC)}6m{46T(Pg&#ItXl
zCa(Byzx({K6&T;X4{RFRR9hfaCARsbN!lb6Nt<Z-rm`=e9AOF+P0A)C?dLf4^I6-P
zGLj{w(`~v(lRcY81@>y1kF)IEWS^#4WYl?qcEIG#?$>1hCI^U^B65?vo7|%+O%7=?
zyUE2(4sCK+lcUvw>Ne@26$*W>F)#zo5lxP48mCA-9@P$;eD5I*UEw~n$uSa3*_<Y4
zS-u?G<TzXAgiaja<OG{Pv1umGGU?K<lbU8-=Hw=)h&4Lb(B!lxr#CsH$(i<zrk`4&
z-g^`}64>rBp4~K;C+IoHX3n+gc{V-YrWe@sLYrPBP29kgzof~fP3~xNrwA+V_ikL)
z<Z`PKS2U^Zx08g?l})a)KwjPCnkLsaxz7H)xyc-xQJL#)Mh@N$i{ISX<fg@WjfpCA
zi~V`4O>b**yUhq|{k7ky#$8g$?hQFq9c302|CjNXOg8yfM3cTZnb+j|CJ!`?bJ%@^
zS-W}A66&EQ4>x(F$)io<Kz`QbF`?OHuKoFhO`mP@oV3H{RpzNCPcP0t)BNv_@#n4a
z(Z8=Xc|q*31zxi0D>i+($<3o0dSsejZJJ=63cqgudZWpkP2Otqw*C38EvbLsu|JhL
z);{e&-?J~@Z}LHt51ahY{`}acA1yAgtAjsj@@dn!f0BVU`Wn>qd~OSTVbd>VBAR?{
z^WQZ2c5z*KR^Khoiz7cY`BC<~$zM%=YVvcFUz+^dL;+hF0fnX&VV2|io0Our2|ml(
z{NCh`rg53{Xf=6$lLbxwZt{=F(xstqh^UyPMW?jnnaIYfg+)y*Bhkm9uY<-}96C63
zbd2p%fi{OF9J)L7a9GkYirL9Qd#;vp(5St%!!nMEHfz^`9%YtwSk7U2$K1Is^gBD~
z!foa6S-#Q5p{rx`qMKuUNO>TG?CttJ9kb4^mZfVesBwp5>?N7K9pg1AuiG$W9#?ee
z=b$^I`a2A;;Axwdfb4Fahm{-#3z(EnDMK8FI$Y~>ozF0b;SRfa?CP<y!zvDc3O0vT
z9Y#3p<FK#8NQY4Z%wb!H(GIIQtnaXa!|D!eIIQC^)?tjpnht9@tnDCEujqt^Cyix_
z11J{#Kwon@X`DzQ5;;t8NV^%@YPXx-AFR7Z9kZILi^YDPY7pPhVIzml940wTblBKo
z6NgP5vr%DneQD8tMMeA)cIr!;3O0Ax!eJ|itp#UWV@n4u!_8V?zV0eX(4+5wsIWw0
zvcq-`i2!ie-eHQvREKE}J2>npIymg=u#;ni;m`4nogK6MsxeN(%6<0pE4v9teF98<
z4KTCm86C|HOHBvIA#eyqvH1<xR`(q|3$VOgSxX@+yaY+)5L*(-R~Lz<+6`}+L+;RW
znC?(Gln#|ct={E_+Y9}U>S(Aca%to`zpb%{!=4U%IqdD2yRYY@h9*K#kEo$ClH~my
z_IJ3~;Xa2091e6i&*6MYh{M4S$2lDDaEQa94o5j0?QodG;SNVQ9BG9|i!u^#jhlj8
zD`@^ugXs*1nGUlYj+GFqov976LmR@o*fpJhMwlf40ifB$2@WSZobGUj!$}S&JDlQh
zs$*8VrFvRA5uqNka|H3|Gy!S1$DiqNmcuy?=UPQL+d;ic_@xvFOPj`<uf^$&s$bx6
zp=8+MI){rKW;<N&aD~Ig4wpDw>TsFrI_3g!%{8Wrj6F>+k_t_uu5`G{;cAC#9JAk2
zmnf=1kxrMksV_k&V$N~6-r-h<+ti4|jSe?E++r!CIioh9-Xuy|g3D;Dk&oL<T=#Z|
zI~?wExLbOp{VMv%=EBCE(pgKNdu(;lO???jP<64-VXnh_4i7jyD8+Yp-r*sKhouoR
zI5Hy+k2*Z&@VMZ&T+rPeBD?N=5~+2aqozeqIXo?)a(LD;^OxP*8gFz*A4(HCBCp&b
zU0(Ep#M0pnhc_Kwa(G#m$Kf?;S=YuZQekO|ZfvuAH8u0q*|gWC)NS?_RxSHFye%u_
z@UFDJtD%*wnW!Xo%NuW}-un(8IDF&qt;2_se232*K6m)Y;bVtS96q&(i+x)UF*kMm
zJJu-v65|`vwJ#jLbok2QYtd>Px~Nbs|Io`^#VqMk`=a@G4)Yv-cKF5Ndxsw!esuUr
zhN5eu+fcJsE?E^|l6-xjP>BEP@SDT$4u3dw!f1phw(AdVXorc6OuO}%@327D%w+?Y
zza9Q@Ska}Q%R+~L9hP-j&SjCK@A<KW%aSg*ba3hD(&ifCi;4RWH3GTr1VdqIs8Ldv
zrCpYB>E!a>kjAl{Oi2+|k3{jJwuW?hd6&*EJzRRabaCnG(#@s2Yt~7%E+(OsM5(+M
z@o$=HNU?%TFPGjfeOzM$#Zz^vGE)4$u3147;$y5d_IDZJvYN~4E(2W#xvcE6ipxqa
zgI$KW40VmntGb|4I||?ov$*VM**e^1oV_M%RhJPiqg+P2|BZAbT@!*(@0zhn6Qu&$
zRHjDOa2X@WRncWlm$h8hc3H>5sThUmESiWlDk&h9uIn=1WrE9kwq<$a`tF08RpSC|
z=$OW_|28&s*~sNNm*-t3x@_!ntjlpOo49Q1lDXtAo4HJK*~Mj7m(5+aaM{jfdzUR;
zwsP6lWwOiGt_k7^wQXGE7OEG`Koc!Kwl%)%Vzxwz4pUrqaM{siCl_7g)1jXsi-c-t
zQEX^K_lZe0G|tMz?dGz(i|gXKOm&&&(sXfLV>DDnw@eE`@k<Nw!`5r)!ZF_^aEV-E
zfjz*8LFgKTCP*YXG7gE0#^_XZmRD?dr5-A`-=%apz~w-f%B6PM%VlqumdkXPJzVy5
zO*n46W%t&-&74}ADC$Y4_Ho(QWj~kwEwdy@npaBTWux>Z?v8`adi_Bz2fG~Ua+J#<
zE{D1t=5n};VAH@MW{p^A_$4E7gloc9Q#H?$TDi<{ImTs{%S<)iXe`iVt(T#yAd$1A
zrTlqa%-2qjcR9i3T9@lwPINiR<pP%rT~2m6#pNtfz~xkz(_GGQIn(8eRzv=hB>8j!
zrYMJ6>uG2xddgIu<8rRcc`oORmA%bwfp7mciY(OL>exs}Hgs3>MJ}^lE>}}77rR{I
znq8fjNff&pQ=pwWmx{TT_3QR-$b??$a+S-~F4st@zc&Mf+=J!xmDeH0VqefkzwV7W
zF4s#wUG8_e!R1Dm+g<LEuDRSSvbfwTMWZ1LsV=maQs`?R%QiC_w@G3(ThW#$(bMH_
zmwPN36%7-4C6M>J+-D&aFEj**!kS*mg?qr|K}o606D|+AJnZs_%cEAhWWdE-aar6E
z{ExXPE_#9;F`twONp4-9RYl$W>>B?^#qP82qB6QgO2pJT(-*`wnHrC79xu7P?DC__
zPcE;hHEFBMM=r0qysjQy-gSAy<xQ8jT;3Kbv>UdYx$jZi^~HLLhgy~em@5<K@`1~T
zuKB8$5FEQb?^}E&7=lC=UfSm_$Hy+8xP0aEwacd}?DB=nmlD*`|Jkw6Wizeiks(zi
zSu9p}-?)4$X?OWvER%%yYkVhAr#7U*^2&Y?$F+bp7CG(WuPFJm%P%es4?KQ#`ORg4
z47<zkE`PZE>GGFg>uMzD!@doXtJSBWvzhayTvm_7j(=qQUH+BXx7JB|tsz4$mb|!j
zn=JRQgGWb?P9Dp8w0SJyv82aR9w+x|?Az8*fg?lnmC~g>mhm{levw3h0)eWF-<R`P
z-lMZe7Y}KW+Eg$^C(ZSNR9``xHq%#kj~*UtdaUKq(_;mXAs$0LdU^Er=<hMWqmM^l
zj}<-od1jRPKdoeSZj78_KDsR{CsIh#26_zgSjl6shoo9q%hIaw4DHj<vGfiN*~VcW
z!#zfMjF$iJv5LnCkC7g$dd7FsSq2@J>0l?|%FCE2gln$-^jO_v4UaJ%;?(XolHBeF
zoZi)#`d@~zw#Pain|Vy~80#_4V?&RPJl6FX@3Ef8`ktYxymXn(34+1;*xL_h1J7(z
zm+SkLMP#DK#vYq^Z0Z?FmbarZOJ7ouJEvWR`hJSK+uUOdkL^9Ccx>shmB+Rolht*P
z#@3!ed>iq?YJ{9{Sy~D3b|T$aBMkB_C96Al?C7zR$IhNv{2DjNjFQTTO42(G!78?!
z$L=2Qdwk$A)nl5+#U7V<G(8-T!#$4ha6LSamdA7t-y`tIJaW&B+M#EB_}C*-6}#z9
zrd8^k*nd;cY$y^b3XjsG@~A!I+iL(7f=Xp)1dp5|`DS}~?CEiU$AKPudF<`6ug88K
z^E;aYUugd2Aw#N8yXek@evSQY*W#nz9OQAZ$DtmFc^o44O>K-HV&qVB99b;^VEVEk
z9qDnD$0;7CdK~RB!{a!Q<2`129OE&|<5<Dav9Yrz^44`!E!9;EvnDi7@Ho-qBq@bd
z1LGYDY*{>UL_bwVq&UsvbdPgA&XbyWoau44$2sD1qj8pp256NLR0<hMs^v8ac-1{$
z!t62IGvlf5SG>@+FLQU1XB-uAO2zb-Nj)y}c*x^nkIOx-@VHe(_PEmHDv#?W;T~6e
zT;p-A$91+rRa7Hlx>616@^a@`Qb-hU6s<gN_P9lI+siQJChL1^Kv!SRI_7)Cw|m^-
zaj(aH9(Q`&<#D&iJ+=h_rYfR<Qke(|fV%iUvDo7Qj|Z(tsK<8V$Z`q>H7iAU#N$zq
zmpxwbc+BH*vC`vNk0(5y6s<g-wiHlBwJFb5+AYAu2zk8E*}tCmctL{Q&Ad5OvLxOu
zXuPl_FG&-v^Duc_<5iE>Jl^(r$K!R6H$2{y;;6@d1`G*_(3DWgn-$pV;$4rqmf-K%
zRJZNP2*~WHn85f@D9cj$4Dk8L<71D1Jr;R<;_<1+4<0{?h8~}LeB<%0#}^)7dVJ;a
zwaDAm4DRZs-4j;tdW79~9`kHp-)sEpWeBDDrX)nLNpXJi_}SwRk3T(rk@5HV&Et2A
zzCcoI@>K+wES@ULUH?nU;_;8iLfK&no+X!-TK=}o(naF(_f$*xiV<R2!v~+vK3#k|
z_;mDH+GiP`HlHPYmh@Rl4@SI2d8O?E5JfrUBy{pw)@M1N<$Z4NVa$sRseqZ(p>eOg
zXuCzNt4}wdUOv5jy8HC->FKkAk3f~-(lFYln38Q@P$@#y$EUB)iaz~(GlSD#qQB@M
zMB2kvlDC0AgM96>Ch%FwXRyyipN)Nn_zd+K<FlsXKR&~KM*58MS=nb5pH+QE_+}z6
zL^QcmcY1VQL*gyIjP_a0XLX-7d?Q5~=A?QuP2z&gtV&9T*Ya80XM)dqKI{05^%*Bb
zd_#Y&AL+n|s_Z)4?7|xF8}iD%lmS`aX9J%NeKrz>dz(>44T`^-$*RmtR(&?{+0<u>
z&kn-cXOhp>KHK<g?z4r@mOfkg=GxVx7Bpnr1(mQ6NE&5i&$soN?6aNE_M$*n6Iao&
zD}59ga-M~n?g`w{XD6SjKGS@5_SwZ}SD)R)=t<__o5Vn*-rYxDfe3EMVn?W^kK^O|
zc)p2>hyrq++vP`tqueA_41FS><9$x>iG32EgMAM1NqsV(md|vb+^6s<eJU|-7o&G#
z!NRd-HMzFZrNFy}A$ci#*q?j)>?QPPn23r{*xPbVL6v=cV=DLcjrYEvP4~Cy0X99*
zrmAv~>e{^xhx#1mbF|M4pTm8l;79lz=^Nz|%WksjBQNeKpOft;%V!ErpJRQFlMGn#
zQ+MK#j?^im@}iHdy=3D=pObvf_qjlIeNOQ?)8{OoQ+-bJIo;<BpC1MzUW>o#S5#FD
zP+Th%9`rfK=Ukuje8b9i!y*rAhBcBx?b1<P=yQ?J<vv&V%=Wq1=Te``d@k|La*{#6
zYeRce1(hao3jPQx9g)7$=PIA8eXg-GyvGouGWuqL%(6Ho<rS~z_*^gUL}U>+_}u98
zSHS#$n|yBexi8@V0&elSRpK2mF5ot)w$Cp<zxv$abEnU1KCer>eeU*o!skh!dwlNo
zdC=z}wIDkC-0$;%RRK*>v|c0Fu+liWOXI15JnZv`&!aw%Nz`Rn8fH+qcyvSYpT{k)
z@74#7t@rYj&(l6HNchDypJ#oZ^LgHCoTf{+?_lB~T^AY(OS8nCmn6eJulT$wAp4tO
zrc8&XLbDr25&m7ysLvZdZ~A=Z^SRGkK5zScD7o@^$LC$2_k7;BLMV%>3FchiEL&))
zQ39io*9X1{!pm^U-TKJqV?pclsqEE!V*%td+^|#Qja5<HMna;lzwr6eXP(dZK41BK
z?eneAcRt^UbPW?J(kErLswF=DKGYZoX@OMi2cI8(e)9R*H_<kYZfZ(1VrjSL?{bMH
zPQUs5E<+m7E8q_mldTR|D&Q}l`96z$eL;!^K7acx^!eB4AMtL05jH(?+BM6Nrbvo3
zfs(^XK!<>~fF%NU9f%A_$H17iEA2jQ`B9?nS;Nezx^%!Y0bK&R26PHoHek7c<pX0J
z#KaTqr*b<7#>{H}+Y=p4Oh6W+TR``K9sxZAgShOZwmPVN6;rC+4#K^6K%anB0#*&^
z8?a));D8|k{Q~+23=9|)7yxur<$!>!t69a9#ZX^|3^ktcN`c{&&RGu)7#1)*VCBFX
zH(iag(AY^Sqmccoo5_y|7#Xlez?gth0iy#}3s^m1JI`#}+udrS7N7;Ewj2nrH3QZP
zSUX^yz|2HMI*ErUDZ!I55f-{}eO-YUaA3ee0TTk&3z!-(EnxkC4Fa|f*hcUKY!t9r
zz@&hQ0UHNw60m82JP_R_qM43vme!D@FZ&2PY3t?zTLf$wu$2^3>)_o@XhKkFRFd)6
zwpE=d**0Kuz)k@>3;uxZ19k}5QJOozY@3nfOcBeh44=?u`~;ytRmZ`^=z!e<b`Q*<
z49VDI*0=o0-sL4RlaXl#I00oq72pPV0dYVQ;0FW&VL%iZXLaH@!$eU@&(3ysscCg8
z9tGq9g^=xGC?*~$k{k>-wn)H>dUZf6U~i!xFg;+8fIS2D3J{B>O`0glJkA_r_Cfjj
zjLy);z5)9Q+JFNB6J601ska?HB^4UK)Vo?fSn?2XLBNFphXx!La8kg@0fz@15il#@
z*nlGgjtZC&Fw;_X){w^00b_?6Sye#$n81uO8bR6xOzCj}#|NAcaH7h$83w64%|k^Z
z1)vnx6SSuUoEmUez}W$(1)LsmM!=a8T^iceDJ|BxEEFbqd_T~vg`E>{Zoqi~=LcqT
zA%ZKsARQO2gvc>t(OmnYfY||a0<I6ZIN*|iD+8_)%>ynAxLiaCOypdXBav4IM@$st
z0_MB1jjIE$3Ai@kIx%{<(ceS$X*{`(LyaQ*=Nkmv7;t;Q9kTxcH_P$|+$teo+fY&f
zs40zlvNpE`MnYr;MWQ<c?h3dk;9gaqz}<lnvy0+JZLQ)CLmCQP95~S^-TeU%1iUN7
z40tf$p@8QDUI=(N;E{kQ1D*<aG~ls-$7L2QFGPwZtSc)-uH4#~ARU`}I^darX9J#-
zjj}$WETOm{*%oYi1nr9fF9p02@Mgfv0j~tS7Vx??Vy{|;s+bn3Ws8*2CXHXM+bNxT
zE8uOJFBw4Vo9T^$kY*It{?CB-1HKOUCg6jB4+B08_)M(@d=&7ptenKDlc9_XtD=S^
znL(+8@}G+=0bd4uC9}+bzN^4i<2t&i!AMoU4frnL=YU@V<^_B&$q)F^mRAdUw87&i
zYaCQqwLY^;tG@>PCMzVfZz=Zd=7s{&CVdf1H2KqtlhB;0Wx;^IC4mtGBK`?jC}9h^
zAmrabpKN27kX=I>A%u(!85PnYq+>|Gkp3ZUAxnhx3|S#$$&jT&mJV4aG~XH)p*FSO
z=js%)Y=~lvtF3AxoFdwCp_!g99~xuT*`{4=+SR7rY}!4fM`&E%b{u6qdxi84=^L_Q
zNS}~fyBSAC%Q2FuJ_;`=o~FC1dN;JpG$3SP$gq&%A%j9z3K<+SBt(#?{N)qOCEl_#
zQnaBVVn<|W*(-;v60&N@h|pYPrAfyMQ;g7xs^bP3P#N189kN=;q>#<kRLB}38-{EY
zGA3lrkhMeB5fNxyXSax~6&fQfqpD8FhMXv9?O-u3WL;5Gp<|m)u<3d>UEikqYl9H2
zz$!B_WaE%cLN*PJ6_w(PuzEHN&7pf4c3Dfs=f(6bLbeRqE@b<VtwOdAbqx-a)lLU<
zl2N0^HX(P|2(zgAjl`hMj9gPfb_m%qWGDSQ42^vn+C<okHe%<{n7G$FHxx1w`n!ef
z9&$j)fgw{vriJ7oMMyKm2?;}@5I4jN@k0Vpeit*2GzOb+frzXDQIN<a#vw^a8j^)5
zkfpvP@M>Q^s`OevRi+H7LiUs(h14Ofkm(_Nh}2s6v#zydUcxNJ*TAZn&)y;XgzOix
ze`su-gnZx748bDHczYmp%1{&Y6ut+A92|07$nhbEgd7@jbjXa5!$J-ZWllLN<OoY@
zNr*m8r7D`Bja|(w5y}PCe0FBYF(I=;jt!YV!EDsoy|)S1OGGuf6CyI3Cy3o4XM~&?
za#G02A*Y6%7II2xrmJ#y1-$I!6zy;bQRCV(Jj3pQ?W5g~A!mo26LN0IQ|lRnGq{sE
z6Rq*?Ji+#FLkqQuwXqk5Tom$N$onC)LoN=vU!ogwiQo^pDdgsm%R(*>xhCY=kSjv2
z47n=gYKhYTbJd}6)EVmIdp5pZ(rh*p@vjS+6LNjX4FXszu=b)+*(-TsldTVPqfoH&
zc8hdS8X9tU$Za9FOMXJ`3{hM{M3Yx6?r3S?4jar_b$H{Rkb9*O((Vx5$RxqobC8)@
zN*Tq(@pf7K!H|bSUJQ9D<Y8F}Q6S{$kViuv3wb=`30atB%_u46YC+^l@v)~_02LR+
zCMm)*A<u?97xKIel-7OLYaAmdYMdE2wLABP(0mS6Qmw)-hrAN<X2@G1uZFx9@_NV{
zQY-r@1P#F|uc(oNkU~U)_jbrTA@7FFwK^sDPxe`mOW$>ZLm9>4KM46y6i_eHosf@0
zz7P2!<l~S}LcR?7D&*6U&q6*A`9eUh)R0@X<k*G=Uqu)sJdz?UEPfsGjZ9O>cd{@x
zTB}|(g;RO$Dw!u49%@FP_p~=7<R^)G$R8m;hx`)qYshbU+27D#R8pIIG#`=HtC2rL
z{t8(T^0!d#V8+e)VxRq-pQiIFphqxF>el!-WKqcS5uGDlwGR<XMl2Q4A);eMTf`EP
z@kumakl0Jp<z1Z7v2pM6Mq-zaSSDiGh~*+WMf}{kp|M^#%Iwe4k-ZI!*CbOWv(P1?
zYecVz-Vxm*x<~Yg=oy(iTLiO~w={095Sh)KGVelJa-xZLpNPH@D@OE-j9)6<xlVf$
zx|scAT8Gl2gRIuTh(Qq>L~IzbQpDhh)g#u37!olwV%3Nd5yK*eN30yNig3}rSPRX%
zo>(cow822BP#YOBDq?iRYLSf#SqE4uy!3b@TC&Na*qDelBgRFn8?jcz+7atSjE#)_
zl*ozxx)*n(mXmB<S%C2o6C&1&SU*Dd@Jl|`j*5v#>QoKN6Wb_aV#IC{yGLvsu}Q=Z
z5j#d~8nIc#_7PJeCPikGj4G<Sh_iXb7Ll10Y-!W2Y`V2gx3THAHl1wK?QE(Ljmk?@
zWRcXb0NyEL=ZIY*b`=Ub@MtGr+7===TgAjR6`L9{Eh2~rBbpITgd5>SJa4^gshG4w
zW2ihR-x6(@ok$AKC?bwXB104TA?j3*#6a-p5k<slF{j6r5&+>Fvtvvh(Tey<QWP;g
zVvmTMBW{V<Gh(lZQ&lBm?}&XOj*2)sV&91UA`Xr?M6wZaK*WI&2Ssc>+5}FQ=xXk2
zldNiAiq3AxEk88ku!tifj*L+FMI-*<k%@81$(KfG)~V57GpX-;H)cf4j5t2xgotAz
zW<?wuah!nZY66}zr<wxmP`O%=s*1}eMw}FJa>OYXUty||PDbhDhOzcq`+I+A<MfC#
zA})!zG~&#Nvm(xqxFF)}h;t&&jW{nd%hoaiqL}us%Oc6`KWm~13SAg+QN-+sizU_e
zY9mb<6dMtCT3FW%TB`<^MO+?nUBn!*ThbD7O~kbkS4Buiw8i4;c3#+Bh#Ha<SP-&u
z&J}aGUcsM;8zXLt%wQ_`UuiRITjG}_R`Mq8xHaOoh*u+Ci?}`Fj)+Gh9*wv&;x4ru
zaeu_!5%)yg8*yJ`#7VNDF<M%7Tt`DIjeY9$frtkq9*TH4Ld&=^K?3hDZGYOWp|5{x
zK#_%cEaLHqXCt1Acp~D-h^JIoT<g-9FyDx!pn4`^p7z*i6@I+gaM-46pCev~cu72!
z;*V*(DDlQPcp3s!Ks#r|i&r8(+Q4j;*UQ%<-jL8nd>Zj)#9I;XMZ6#Jwt$a#H)5`}
z6}@f1SzK1UNO`G-hO-YMK9tt0HJP0*4ecTp(e#(F)}Z;ZWTvZ)_i6x*_&nm9h;Jjl
zi1;$%tB9|~m(C4E<m7`Xlq$bbW00o#e*eaI!Yks3h#w=q7Z?p=A`~%`!fMphL3N@3
z!05(i!yCUu{3@dw(=FyVF-{gcren+>5r4|Vk60M-SHyhDRm9)YUpvcCJBpnOT0Mec
zlJJUHB+DN|%)GJYEWApJR!a3vaB)yN+ZMA#OsAM-W0s6rDrV`JWn$x{=wC5WP>FZa
z4q>6V#Bwpq$8?VAB9Qu<GUA;CTSiYyNV4R5y2td0Su1Akn4U2!#0-rY7Sk)Hcg%p8
zfiZnz`o^pn(=RqgRl1-}0up;Q)ju`^w}AY`?s*s#vr^39m?5!IYBB5I&CGE#^{dr<
ztuLtL@R*fjM#YSdStVvwwGcBhHt}Hrrq)E9zvh_%TJD4fpw(hlj~NrQW{kF)uMwMl
zeQNL_8>3rqfSK^h|Jhw%evcU&vuVs`G2>#^joBb(!<g|g6JpkjSwBYmE(Ep+rE#;f
z4H_tVBZ1i{W@607F`LB30_a8*P044kZ=jMb5}R)8)0h;qx!{c1HfD>MEn~J)gMzKi
z7*(ax8Z{*q)5s#Pcyi2kG26#XiOmY5wwi0`ziqTx8JA(#sUpP$c8b|KX78ANVs?qy
zH71TpVs?w!J;sgkVy4DSi)qF<;*_28$O#t;B9u~He<ASvm>?#MiDEO7>XAx{<L!^2
zQWPtV$z<VUTCo`s@|Z%#Uma-~rK@SA6453!9_+vyb{p#Sm_1_ljM>Y!sliKR7YDWK
zArDp=>EpgJ`^6j`Gb3jIm;+)CjX5mlz?g$#4vslQkXx0M%@nkP=M*cb${#M#jX5&r
zD2dz<!$G;1YE!VOFP%(L#hEe3#GDXwV$7_VV`GksIbM`m&P@H(n!Hn$*Kn^?<xh$^
zIp&m@Q>7qw-9-AOP@eu(<1#^dd4>c@bWTVT&Wbr(LY^=v;hdOrW8R5*H|D&U^JDIb
zxi{v5m<waBjkzx7qL|q+m&aTYb8*ZiF_*?%W^t4a5oH!ADBUuU3z0i}H?EAiD(32#
zYt)flmEL~sh9;*{AI&WO=wv30b7HQKxi#jtm>XhljJYZ1X4|HGB+0fa-XczoGTU(_
z{F<n0<J|2rcf{NkbGInpvvFr^Mh!XMbFEz!$90R8Bt%2cePVaaGcnJ`+#mBm%%d@n
z#XK1EP|U+IkEr({=5VF9RB47QVNk!77U1-;$e1T$o{V`)nA*iASz57jlL>~KqUzJ)
zj@{?*T+H(^ug1I<^MV8><|P>cNo?0f=N`s!m0gusO6Ilv@rs1dM)qEhc_Zdc85Ya0
z1ACb8y8?Qmp0;zpEd)E5*uLz*+?e-b{*L)4=KYutV!oAH#e5j^znITszKHoK=Hr-8
zVm_4^=+5D;#wv;w!s|1USFzk~=Bu*Wd+=q<S2175d?UplXJk((OHQPiDm>FQ?#jHF
z?_++6`8DQ;m>*+)iuqa6-q$P#7u^hy;<yN+u%{aTO)QA{Gv+VZf9ZZ{djB&wmP*67
z9KZRoxg%?V)jk<aaYt^?!kB+$s1rITEQ)C)ESa!W0tp=w+7gyX&}_P+-q_8<3is`)
z1BU$#{Y6jlcj<&>5|&L^E}>Im90n0kT~D<UCruN?ru{n@HSChmHKA8R?}Tm%-4l8w
z^i0eiKOG@_%7&&zG&2iGj9F6)+U?&bp>IOJg#HODChRrT%*|z@1<B?TuzrmJiSfNf
zJ$as*EU%O>IAN27O%sMB3{6-wVXcH=3BwacC5%p3IboHA5eXv`GzHtWYh%^K>;e*_
z+joZa9b?2^kgt}odcqolCo%e^!g{GSTv>0?T>O%gwsyig3F{@SpD;FIT*CN-32NMB
zT@ldk2@#7`QQ{;q7AY<n-`F5w!-R<m8z*dJ=_XOp_jJT56+TyAt(Dlw+$l(sFezc@
zgk2IgPuL=1a>8~ATPAFkuua0Y30o&<OxNBg0d}w=rS=TCWLU%$BHJfSN!TG_$Hb_-
z(H(2wlo1L$iR1Dp?Ed^+6Lw2*65NE{6Q(9iOK2u$<dv-xS#)4T{(uJbtN&?SyF<fE
z@Dsv>Nc2=N-!`R7C!{q(MBJQV5tpBtCS(b-5{^yC6N-cb5)Mo#6RLzg#o2^9p_MQ_
zVGoOrfR|e<a*4kh&^7(h5U_W`J_-9J>@SYkoiiHU_DzsGcb{DW7wPm~SRa&daKaG@
zM<yJi0ttsD9IlrVA=xxLlWK2VtXC-DsDz^vW=bRyW+bezwXvC^j7lo-sFGrkehQf5
z5{^%JD&gsb6B15LxGrH%!bu4yCtQ$lVZtd1r^>=7oSkr5!s!WTB%GO`p;>J0ZN*@o
z-4Uk)Q)>L2gmV+lQvtQ9v)=Z|fF{Dau2U|q?4e-3C}DQO6$w`+T%2%8!len9sa8K@
z2ees2o65w6%M&vtd7^{SAgRe!30EgvlW=W<4B%=y`=h{Go7rS23eRjaJi1=;pKx!&
zeF--v+>~&8!W{`WC)|>7Yr<^_3b(#D#B6a~ccO8tG?`VPOf&a86Yfg5TLmNuuGvVV
zc%U3tiMj^Xn`{8*{}S#`cqHM`ga;BH6n_&Qwn`^ZwFV@r$}%6)(~OnUtj7`_Pk18X
zNei<kDR-}Hcq-nlrYV>e>}L|5P53(Dn}p{Qo=<o;VQ#_;5{!h`6W&O8DdFXWR})^7
z67?{fEng8vcCW8`6ojIiTviSDZ%W7$-cESOmX!U}8oG$7G7814Fv`T@-b;8t;nRfA
z5<ZY&O!zqA6WJfBr}qC_^ws!$J4DXXDyN<H>RSvV%jXGSBz&3hmDLd;qLwwklZT+;
zNfuJ$^|wMcVL`&*3G))ZPxvL_*MuJueoXi&;b$>IfrwsasFgG-8YZt#qB2NxhlJk~
z{z{mi@P~x_PqVe)PnjcYMTM-EmDQu9LJZP`^q+)<GV&=MQ~s6lPjopir2omh8dt#c
z3F}elb3cmfwxukQvSi9qsR_T&?ZYg)$!+P>XsF02UMqAHX@-)rT*@kyxh!k>l+G#p
z=NypJC8cXhw~X!?-BP-z?47btN{^JDDLbX?oU%enuavb?)=uf2(kEqj%E~EyQ&vnF
zl(JGvzm)zd15yU6`uxU<{f+QwzAx<Bg-7B&Sckt-hNcWljYMf`KWenmAi0jaYm1{j
zTD3~bswtyWR!bR?GE%6~7?qkGq<Y%-3Ld2I_>5_+p0Y;Dn3OeBBh@l%LRqU4%8T6+
zDs{0=%Gi|6QYNL0OIbH%gOm+Z#-~h3SubUMOQ?yquvnmqS|iXvsYW(RnV7Ok%BI4o
zw+Wu><;JPmbFO*1W?1S@F{`jUo2P7%vTe%blr2-XO4&MP8{4uP6deSch5)%esv<gU
zm$H4zl$0G(6RZ=P1geC`>DW+^WXIGDoifxvYW+85*OVkBP1!AF_Y^P1PnnuBP3@;R
zsqsA|u7X*bDD6;PH#M81l#zuDQo@udB~DFbRVc_}>n{n<M^laE)SE0NPpMN{DMd<Y
z0jR9hsiX>sM~ch{m+2{cr0kipm*tBl$b!7x{HmDB=+l<_rtFvUV9G<1v6KT+&Qen;
z2c{e(z*3G)IXLBzl%oWE%AqNTr5v7eL~7O-)R(NQ+LSdrQe<p1mQX7o>U~Da%#>p+
zyCq|i9}!bykPz1>b6m>tDJQ3#Vj(|4e78rCPE0w;R?&$$X|#6xpPF)7${C`kF8oZ5
z<q;M#_)6uv$h|q!wxD3?IVtC+T$^%T%6Td0r_4^d*y4Uc%7v0-yLnX=FR~&n!4MHH
zQFkd<q+FSDnSFn`O~s?}))g0mSEXE?a*b_Dp$Vz2LYngZq~pSUPRjKucck2zazo0E
zDYvHFmU5GY_GYEZPc<A-VLAT-Kw_X&FEyjNJ>?TCRClG^opNu=eNx-dV0w>jK^aZ!
zBw+uS@_=Rc{i#_elA+L^69FlbKAiGM%6BRAQXWltEak0~w<Z56Po%t%@?y%9DNm(5
zlk%)>_Gycz7F*|vS@!$s&!s$XUut;OSsVE?nv%Sf@^Z>+DX*uzVk^FC%ZOh>L9l5+
ze8av`{!Piug#X@47~V;FH|1j?m@+rzJ*#E^vyHr;@<GanmZZW$A|d{&1(E%u#jQyb
zKNY4aU!{DVn%nX}w{^cv`NC#&w~WS!UB(+%_8a@=+tdW~1eol@ZW9a*zfbugWl>5a
z<HwYrQvOK!Gv()$Us8Uz!t<*{w`=1!+pjF}GIk4}JYji6V%c9Q^Hcs#`NtMmAR5~9
zI|5r)Vxi^8zxFT1RYWnl^t!}=j1C#gWOT~tn9-K8RA$2FOJppW8Nf8(l>4oTfb!zt
z()OhS@&bO@44K*GGdgGHHiP9dBm5$f{_2vMbEaK0GqDn;ileT-6g@I}W;~MdXvPW|
zy)uf7GNX4!pNtJMHq7Xov0}#PjMXywW%SP&mN7hIK*qp~l`;lr{ATGnC^I&#9V$uP
zkc@YGHHM0Mb~QofOJJ;=u}a2>jFA@XRWmc{Ntgws0v9SE)fkl-r&m@~t*xH1M#kD1
z>xd3o0?5qysWmghEFrR%ZA3l3KeRD6;|m>s&KRGWac5j+_^!-^jP-2Y^=)CrB=u54
zsD8zWjWQ-?Y@abDW8;iXGA3ngo|#Cm0N&JsCwse@ZByRD78zS+Y@M-9#?s@B8QIGI
zrJEn5P}|!4WPz6%Z(kj$7h&=4eDm)P89Qc7%V=iol(Dn8lbMByT`XWKyj#YumQ9i$
zF-sKCWI^wzW@at&@L@O^Zbq09*^aynKO?YY7jZ-r&EjQRRVB_$I5EjcGqaMY_nBqA
zc#&u3A`TH;`MJ6dBBRbYGvlm`R>t&<BQuW5*dt@li~}<c%GgVdDCU!~U&h`U`($SE
zQBIwdP8mJ>XB?2Bxs}c+X;4<zV#>i8hh!X@ahM?NYiOmHr*FvN7T_Z?vxXx16tpt1
zYis(MF(c!|jFU2EW*n1oT*mPkvn+j%wYA#pP^<91YRQ<Z!4HeZ2^p`pnGyEnj8igB
z&;C2+aB9YBmQd~XQ%hPZe};Xd>YBHnopDaa^%*y0oSSi8#$_3oXPlpLLB{Nii!)<^
zh2Vu57iEkY(2(lMQi(g42sMqHmJ~un^iirX;}zmy#x)t&W_+fxMgpnZLTp~vTidaW
z_Vs97modjeqD`b~UvrbTu8kYjo!FFdcgD@aI^*_?J2GyyC2zA7Xg`-H;TH;eG+mN_
z-I*c7tCsJ{xHsd$jE4l6YGvG?@qk!nM~$zyGy9#|B~vOU-&=LXf`>D6fq*1OkUW<0
zc*fA2VL4C8jAZ;O1<!aY<LQj|Gd_?GW;`pJXS|m2T*mVmFUUs8GOX8_`?t~DnQ{v=
zUe0*M!Yq^C4z09Xqq*|0XS|W|j!Z<xo7TR)mGO4=-#2j<u5LIhff1;4Gu{(x><)HS
z6trqwQ>PErvdmq^cNrgLe4O#QEI`I5(szCKMFf`#9cs35iYaQ%h)Unaml<DWe3Kbx
z@@px(4)55170a4y%V>O@m+`$7xt}wBkRs@=-He|ybIq?Bkv7TWmD`~B!!H?&CYzNJ
z*^1vY{>WH1XStj|Gyakp&*_*mKVw10LTS1zt#1CY0`rd;-KC*+G^{IbvnZpH8>>am
zbgL0Y_bog!AZ<BI<Sdo5bZ$;F35F$eBUD<}kuRZV8C$ngZiWff()nMd%ja~?>6O!4
z{(nx_oNhVYbNbk^NsY7{<Q_Rab5_XBNp=OqRPnx1#)haspParq19JxDteDd;r+?0X
zoVAxSpvpH>QyR!LJJVL%jWt2Y8JsgD=g6K$khC-=jgX1ZE*A;;@SK%%w#nHxXO)~)
zbJow<AZJ9*NVS=>PR^*D(K&0XSl7mCIjiTak((h;7Pxmu)0$SdMUXK$3Kq!}D8H61
zpbh+EbH<4*ITLa-EmAGX_PX}pb~7b5Ngvm<Z?@~%*f3|KoXv73<xI@Yu%ZH+SW0f3
zo7s(8*wi+4`7ondo9ApHDs^dWm9wR7L<JPvlnALK<+rvkWojnpY?l+~BstsXOv#y=
zGtIWVL(a}QyX5Scvy*)z>Iqu4uxoA<dAFS1Rb5-Q#+!o!%E+*Yn9Up~$Il6JTnUM8
z{?Cp5lo*Q_>Rk?hXd8@ds+aOn6)#dI&B;_HXOG-$Ys_=XoGLdqyvWUwB6;}A*HZa0
zjaF_>wyKsSO<nJqvscc(mJTYjw<u%VSNuVpYLryT{Vd{=8BKEz%sD9Mv4Y174$e6w
zXL!NN1&8Jwmh)E5+c}4;i=1n7u9K+b9F=os&RID}=gi1CA?L)LnYNc>a%Newh(zlB
z*qr0+PsxKqkwX7?k=LSsk`QTYoSJi5&dE8a*y^$pis!To!|6F^<Y+b_uod!EYa;L2
z5~Q5jITz=go16WU=jU9Iqbb#SHdPB3=EgQ&w79`7v?0OvcuCHsIalUfm2+9n<zj~|
zGv11;ru-5oIdvLjueLCYP}f*83hdwQgknz4^*ImaJe+ew&W$;D<lLEalL)9;YR;`W
zH`_MF<#wa3G2*tI+ojQ%kw|Mvl9{^%xwxs4IrmszsIPl%MgyzzTI9Vy=YgCDtpE!!
zy;KWQUeV#vHXg}&R4S13th&y5Jm<-rr)&#P2(@9RydKH+)0P@{Eij|`Q5}s4J(u%*
z&Z{}E<-8yhl=E`VD`KT(*-I9F6+6;y_>^@OLFD<rp7Vxn|4mCA6;}Jl*g;J~^-j*a
zIUNc*7R=3gPmIg?Ip_VH4|2ZB`8wxARm}M$=Tj@mA6b+5ac=zEO(vLlh`#vtS<dGY
z3=4w>U$OoRt2MIri3DJ*LH`^3?{_)#a=w*;-OhyCB+1{)jCU~m9)GkD{vcVkdp;#j
zvM0af{3_d?vmoa;i^v};Z=3qvilX}Z%Yr1L2{oPZ7hq!6-#H6&{>}NvHY;aITu|Xf
zxxVQOh4JlmGoge;DyG|#wc^lLutY)cf<6UH7A#e;d_m`er3;oRShg_JXMv<%)J`Y8
z*U?wYujLA3s0Bcmg02NU3VIfFvoH0&dtpqgA`*g1&VxqP73`Z{g)uLhAgGMOTzv~x
zEErfYs4#0f{R;Zq7DT%C%a#We#$BJK_<zA*``6HdA;o`2SmY8elEY!PS-FVnbd`ct
z3-&A6zhFec$bu~kwkjA^FuGu3!Nvuv6|7z`u3+85K)6Q1ngXC;j0IA|fxuh4U>*DK
z*uu<owEa~wskofVn>B@k2?ZMn7<+VdJzH{pb<xLo<APsiWW$1uECB_iu+Ym*3N|g6
zBt{f$W~+#RYF3tCJ#JAL!4^^?h29I7tyR6iDR2w6Etp)eW5G@Z-A6XIE7)F**xqFx
zrxfg9$)f7o6QaI$F4#qo7fdbK)sk*En+lTlIgtjJY4(j++_ZJ2dJ14liM#^8pe(2g
zf`YIhEyxNY3v*nM6g*+i6q`Ndy^Oh#RS{+Kf}${*tJOoz3uNatEY=0Bf;|iNvH(vn
z*h6?(0g!_sYAe5Y!9HS#j(rto@m(#bt|*{K;&(v7fdv;7Tv+IaC=M<-w&1veLuC95
zjw(31;IP81^{D)j1&0?LVOiNe!0F79$RY~QD41E$Yk>K@l+f3kV+v*oDmxSkV8w!t
zFF2v#w1U$MPAoX7;1o-xlP&J5qPc)HP7FGA@f)q<pHXmT!8rxzics1DT5z^)R^y!v
z>|A^0$a!L%!pNN)=UY0Ax7Z1=iwb5J+*)v3!Nmoa6kJ<yUBRUVmla%DaFxW>P5~}2
zxWWRXP`o@e5nS+GZ85z@J=$5P-gqM$a|*66xY-sKO>PiX3vQAyj5D$!|1h!}x@3hk
z(YVDH(<py?!5zvM++P^a^Ui|13+^en%XT5|2wJ%f_u8NLS=|&EVvxF!5I#`waDlG$
zd9dIivA`}#Ypq%TK4QDjrlv<VeA|7qPpD+Uz9svWJXP?t6ue|e$ukAd7W`K5d%<%B
z&lh}D@NvNl1uqu7UGPr9O9d|%yjJjf!7COR0rqNPu5J+e?b`H)73ntxWMMW7X}A>Q
z1pEri8os|P<8LYUp{@R&mAwztf=q<<?nEDbra`p&pM_jHvY<oblY&nRzApGiz)M66
zzOWWR2!3wGUYkz8v<<3@uWT9Vz69Xgf_Vks7kp=16NKXa4+TFK{9N#hefg7=V!Yw0
zo|~;{{nbLKp9;Cl>i$vir)+Y`awUHi%r96}&?s3@@VDjcLff?%_s`;9RQF#irDBsn
zqNGE~k|j%(bSw?6mMD#(*6F9V^1qLXXjGEz(qBuLEK}0S7HbSPg+<0my^RC8d`ah$
zJ|%rix|DP+=~2?Nq?;`)YuUXt4rIGup|uHp+;D}`5VKcl&OqresZa0HkXkQSEa_J=
zsAQ$mSmXYsG4BIPGa~5Ufu-4qC7(xmJ(_l@jNS|_8CJ4&$u=d!OI9vfr(~>cVU?1R
zC8J7KEzN+Xx%>!$I>rPKN0+QtvSw+dboG)oO2$~g6xY4dinnZ$+83H@m8@<5I<nh;
z)?-}Bx+R;GY+5qDWJ1XXf~{mdOGC|%)-TNtB~8S{U)e)pv5{~r*?4h*@j8ZYjhl8{
zY*sR<WJ?S1<|Wz}w1v%U%BJy7)E1${%B^gh%4}OQxg;!!N^JvR`;y&Cb}yMy>h@Q5
zD%rU-Rzk`phVED*FfM2_T-&8&R||lkYTw?e0#i$-l{h7?rM6IRmMGjIsn$xXCkdh9
zmjtCbK%qtyTTrS;o^4!`luR$#qa?K@i;}V=E6GbUB#BM!v&E{UE@@e*kQPXCG{C)M
z?V;$iXKD7ns_VTiczfAYp3FWaFWKc7om<?$<baYF^`_*&l7l2ys#S7u$sr}Dm7HF3
zXvtwE$Ceyda(KxRB}bRcC^@n;tLI0RW;4lyR;1<d2!)v?$Fzgg%k)0W=H<f8wQl6`
zvO--OCzYJ6iX|sX1%?{jHKi3^r&u6Gz*B84t-5L~*3UCa&Mdj0<ie7(O3p4hx8yuq
zMg)<&b&jnlkx*0T+xH5|%4X`PNPSVs#U+<W4D4TmO7eNBh`eagWhIwe=~YQRqK~>$
zMC+=Ot4r=Kxu@isl50zDE4jVox{^61H<jF6a(&4Sw!s^1DpraMsxA#xdP|9Bi29b6
zn!VM^-jP;#?hyPk{v~%w((GvnF-u$%A}V>Wl%nMEk|)$=$^9a7$-}n#1Gbk3Z7umr
zeYD8c#f%P*lssDUm{_B2gjUP6L9|_>o|N$~dA8)alBaET0rrekdx+UHqfQmX&>Ioz
z`H~lGf&bZ9uC~~{T=I%6VafcGS4&=#td@LP@_NY|CGVGfQ1WKUTP5$5ylZt?c0<DO
zwk&`KDNFphCGT0*%<o{<I@_b@9}1n4Pf9+Oz3S5V$oBiO)s%McSJ;UZpV{}Hm*&KT
zOtgq5WWOr;y5y&lpG&?GPjwKuWM0X)wy=r`9o7B5<cE?U1zSh60;o4q8QBL3!!Odx
zl;28zFU^w5uO+>#pZ|x2^G^Y0m+I7x#7TQi7nJ-hJ6zGV;-8X*vhWp4Rs36;NK~VO
zibb|}Syah(hl-AsG5c+my%Mdz;gmFGiOPT>j(=rOJS|<(sbX1Ma+%8Lwe0qC_UG~y
zohuXIl12z?g#u)4)K|BP?iKwj22}K@=vmRXV#SITY%Tc@eJXlY^sY>JQ<h5A$Jr_5
z6x(mV%Ir$gOLZjf46GPbF|=Y>#Yz=}D>FJMrmX_PLZA+*%$OpQ4!7+Kqm?UjndAZ+
zM3tpl)vi{Ls2Eu>s$z7-wH4P@tX8pl#j&=*H7dqb>{_u~#hMjs39pLHE7q=9r((m3
zjVi`gjH?)5F`;5zRbSOQsEZbzIL6qt^=v!qTNv6WVq(w+m080QUK1-euFMXNJ32Nt
zso1nKYZjXcfR5&R7DWh!i1;Yrx2V{%Vuy+yE4HfGTDb4r*sd~`e4C1GD<)UeI>gku
zvHF9imL`%Kt+ub2QW?z>al{KzW~YjsD>G+NnfAsNhuNiKo)!4rE2dWLS+Q5ew2Ed$
zQju0T%6Dvd6@G<laS?w7RZtOD#Fo^WL@T@>*}P7oiTEm@9<z$Pq7rzOk>|n+QduDc
zWx*8akacb8U#<UE>>-kNHJYN+Nzx{zf_(3aeIykXhgIxbv0uf36$e%9Zy`CLGNZG6
zFx{9f+0fZH;ibLV2Ui?Ynfu)IQ<N9_hl>;yM_0_KII`lX%B-YF?A4t(C7Wa5sW`?q
zJ4>C~bI>{^sxen|mQ^{f;`oXaDo(7p*mCxyijynOt~jUS6seUy_*HR6#i<piRmMW<
zK$8rV023Hz+Lq6<$ckLL>RfR=QR&=@3o0(GIIrS-TV{qG3ROk_UQ{vLzWiYYV+7jA
z+)FAht+=e>@`|e}uCC1O(^p6i6_K+P7FC6g4lIa(LSIc?BlPWu*XLARU-7Vnr{V^o
zBMV<~o77X~D{iW|*|u<t_+{g<sym>MDRz6sy%y^`Y=Ju~?y9)k=2hmN$^<S1x#mg&
zTbl&#(_a<$+bR!KJXrBiy9~(Fp7P&3UB^je93HKBZDV66AFFu0;)%s=K2z~z#Z!`&
zevPMPXEZ$N3b+xC$2vBit$42Dd0X-YTU{`Sl}cY!Evx&lRJ<zf-iOiq@LI*|(%I>3
zG@Ump-mJ_t^Tn3o(OcqFi|t#yE$}Mdm3m4MYNpk^SMk2=Qcdrg53IU<D}}Y04~3V_
zd}Py)Z7MnW#AZIN_^jgdiZ2$w*BYz-{nGyY%BEjed?R~erAznF>H-0obcxWsitj6a
zkTt0INv6A|TW!vv{9N%%#jm!m*da{CGNr#&{9f^g=wI=d40ugj&HRc56$>Sk6@Sb4
zOLKK2^y)k#eC?%t+H}20Hn4`84mB%kYlnO=Eil<N`m=Q7oQ#-e0X0k3EL*c&%~CZ>
z*DO=hsb;7=Nkyu)_`7J)Y)$GFN!Ie8{QsKHHC<}{TDh^rqD8N07O&4h=z?y0Z@d;Y
zJ{UpwnjV7C0x$S`)`qhy*i`$P#F0KVTh(SD=qtc#`qlKW8BsH`W<brrnjr$9HmW_S
zW~G|Jwb^AiP0rX5vqe^))R83|Rx`Y2<(gG$<1=WkAw}ph)p!mX>oxaWwKfNJWpYQ=
zjILR)X8oGgYF4jVt7h$*HEL!n1To%NWA!zrHc{U-Z7Npk(iPnevQDk9ESb39*xG2{
zIGe6()A2PE+A})M*R8QZ&4x7_)l3xn_QC|sJ7k>0$!7bXZpquYHcs6pHJjE(I5)HD
zB%5w7td}(=eT$kc?Hk=EFIvr2AV@!JGoWm1)5$i~&+Tkxdz((N=?*sCv1TWm+1aKl
zxl7HiHou!qcdyMXOqb&+ZPqxJFSBdh8n5Q~niFdLnxN*`n&WCh(SK+|TLk5wXc`sO
z#5GB6G%K}f%chx4bDI`5rOl{JRZ}m{pSU&CYxbzwvu3ZFBWjMcf9-A418VlMnSB?R
z->+u>#d*~|(B==a>A{QNA0k1r`NM2_xJ`c_YQWQTRLu<g=4hL$5xtyg^T*g!KWEiu
zT<-8s<83PjvxYQu#P!6QlWH!kxv1u3kwvGsLe8s=<vFG1R9p8no1VV7oil3AT%13v
z=4_ik$EN4n^wR5%@IS6ufTj5bqVrG_osdhfW5`+{(`a>Z%_TLL)?8Nee9a3rmy2ID
zx7FNUb7jp{H8<7VEU~P)rZ#(+ua!P(B(kT#1fIIMu4Ycn^|sR+Y<gpD7R&UPQauuB
z9S_t6lDAmgZ<V%M#k`~D&YHVx?y(woS8aAvC!(00AL(*qZ8^{dAotdGtzQ~ibH5d*
z2Wp<PnFnhgvYCf#^Hua`Y96V1wC1teZd|l~Jzg`ZgK_Vluo|kv%TL+&*J}TNjZ#VG
zv-Zuvp+-toSm#Y%ta(WlTWsFq<(gM&UaxsW*p+6Z?5j1eNq#I5CfYsi`j+U`e&bCM
zbChv5-l}=K=AD{%r3E#;TJ&!5Ud{V5dM)!wln-h?tog2HUd{h%KC1buHt#<cB4USz
z=9*7yKCAiM{yb!>hMvO~Kgxe;-|LMEe{Ji2Q}b<&-l(1S^!u70YW}YIN0hJmNyTdZ
zsQJ0(mzrN|ezWD<n^il?w0ETZpR&5*RLz1Ky=?#Y|E2A37S{YLgWsZKi$%6rqXjJk
zzY3_e8EgCpb6blgS}fUOsm1>a$p6=DduEvyomwp0V!0OGEtOPed7J6dqO;AYq@J!V
zy0r{cD$tH>j}|>`ffZW+QJ}s3J}vsT7;FDp(Wa|f0Q$A)-(o<Efh~r%7}jD?i<Mdo
zZZYKl*Rr~3r=(h2S!-dM0<>7U#VU)jXeUT}nGr2Uwiwl7bc;1xtkq(*7OS^dqs16o
zUd1-(`yU_ME2{mqEmZosj_p^O_P@rpShvOa786=*V#}=8V*M5qZC=v8L5mGrY-I6O
zJ9<>HJ>7V5cY3p_EicG7vl+p#MT;$4Y}I1x7Mj9nom$%f^lZ~IgP=yYwf;8ByKT#8
z`ed8x@}DU!GmAgG#Stxb5MUazTkO<g=a#YXdP1AorNyo`v)khLyW7mv7Sk5LX|`}|
z-nFT>_`Pp4L5r{3j3(-dTEzBcV$;;7nN9N+MT@dU)nfk^2ehc|d#x8tZ_%=OwV-MB
z9*gsPw%Du1-YxcNv2Tn0?0eZF6%#tj$lFx@K<mgUb5P5i&f848fNaS_TIPcKLv8*r
ziHbEBs&!<`+=X>ii=$g6wkdyLhTe2&oNnnUpLu4BV_L@Pon_NwTO8No_?DU6oov$+
zY<i+iPqOI<8{JZYQ(ByA-<)Psz0p>LGg_S4;w%fvjV*3!adwMy?9X$Rwz#szc`eRw
zae<JvQ-(`gTxbhiWK&@`yT!#8avgOP`j-m3Wz7I_S&PeC#^g!{^z*6~SGTyX#hez`
zEUv3d)UREfe^m1w!LVr2-5WMu*H|xU*J6P*t54(R7Pqu`ti|IkZf$X!2-4#I7Pm{5
zTHM{@o)#Un^QXmKHlz87e##qBdar$>%zZ6x)~Bo*joA~;dp!@dc&Nq0w!ni{6whlk
z9<e_)YCO95jh5F{_zC;|8Jo)Id9uY*EuOZ(Up~>WTj{g*Ulo4NW}a{H!s0huPHnuT
zA)v)8wplIA{odkLn-|euvzgahykRqM+Vm|s|1I8W@otNGi%ZV6na^$dUW@k^zyH8y
zK5X$noB7D5AKUa3o2r*jZRRuC*uc)(7Qg?}X1<cX*vvPJ-+$ZUyT$o|LmJ=P{11!Y
z{Mh0roBw(7n_q0^SDXH3Q+4!5i$7cZ)na~&;nP`pItyC-Eps}Z6{qu0i-j$EOsD7n
z$JKkl(NzEc<M(N1udIxWWQ7o!85wCuMTta3+<VWs_nve2y@(X0J+(wyQYy+SX-`qo
z?$cCgNF|E@^Zh(dzrO#+<2;^^=lk`3z4v~f_j#Wv4l-iw_M@l}MI>sDop2oIJ3dw+
z-q&60xX20ZA{C?Nun>)vqNp4-{Y;f8szz~ycr77?)uN~#@){yFh1Y0$UptCAp>5qL
z>WSAEa#lm<4WnojMdK)%NXR)P-#)*+-+YZrTh3m(^@=o$qInc;sKcdb6fL7TI*L|N
zbF6}2%5cucc=GID>!|tj&hSoVLc)Q*Z4}2uv8nOln_JRtBkiN;5JkTz`bW)YYaOHL
z6h&tyil4!;O7j&!)SU3)OS&#m(_40p;)5}fZqdVkr8!=tyRe6_r|<+}uPAzp%;xzY
zIuChY5&qhY>y80Y@KO$@E3WU;2SqVBinHS;EY|ZOQH+jaOw_Cbh6+y>4igTKVuT27
zM~a*x92Lc>q5L$F)1x>;<jhch7DEa7In1TbW^;hwJDeNE^)cKK!+BAh&+Ot?u~CeR
z;sSE5j4q5~d=!hLcp!?4qL>iHoG9i-F)@mZqqsDR%c7VR#U)Wpj$(>Rklu2YO8<jh
zCVs2P)%xX8Ol38T!i}2$0@!sT)0iBd+vNN|is_8-p+hr-B+)2hA&-k#QP`n`cd0F)
zhx!mK5k-=5&{koJ`Okqs=nK<PWTMDMk&}_OWs$tF5Jgd>6g8`-$$y#1P-muuvxKvS
zR|=_cRTT50xHXE~qPRMWYoeGR#eygv(%TcBis$JmULtgD)NI4Dl)0;UT@(vdmsrHt
zi`*c*k-5Qd)>z+UWS@3R)QntIyFH3KqPRDT`=aJl2@`u~6n80-i=wz&nfz0GGqG9B
zA%KO|z?=)^H7tCCb3ZFv1@o^f?!YXGVrdk|$Iv~72cuXP#oJN5!`QL{M6oK0)lobW
z#iI-*if8CgT|5@W<1C|N%%HiP<*r>6CS*kvPek#gqRJiJl~FtuMLP{QEU#9&EP`s>
zF=K?EWelTuGm5vOX2)+$)Ld-Hg+G(FR+VsF6zjv<xFL$?qj({Tjm$Jo?^Vh#if<CW
zBz#%;S@j5YUX{*k!q<gw2(PVfra+7aGoKRx{si#dC^oZ=$Iv;3_oCPm#dc;RGqXSV
zuPzSyTcdbCidmfeN3o5ujpClF=3yukbynwNhFdZ6Keht-`HAx6Q{iXA&!hN4<V#^z
z7iNAHH9s2rI*M<i_%@2~qNo)^?HIm~Vn-AQ*cDTuPvi&oLQ(8w+i4IvRNoZhF7|0r
z{2ImXD1MTMKeL6(PukM+JyHA?#b2`88^!M;`-B|k{)pnwsM({SGPiL8q=aGZkAh1`
zawhE`_Ww~F66dZ$BnHG#C5EaoWBYDXlgSlgs2IbMH6oQ_rW#Zh(u$n6N5oKF%H-8V
zs97V1n&Ou?jnGKtIx*CZp{?8wsUE2pL;V;U#K7qX{dti)KQT0o;iwoI%3&jEHWoG!
z{?W^X&Zk)n&0}aGq1P_bGKQmLU>UWJp-1%yJ!~aXSITXqMq4^OCWdx0eh(ZQL;Dyy
z#L!VmW90cTo<Wk2i=j&lU1R9R$Y_s<qYw93TJS`Ts`}|X_8CLZ82lL0F`N)XuNdqY
zoEUn?aAFKYVi+0&FAV1y$gg<0R?Jj`zA^NRncoWY=^w)Y@qxmVLiwN=28(kujcPmu
z#R=8PF${~Dow4CDoD(xW<cJtX#!TBhg+>wbQ8An<ewy&~P|gvJwr9q0mLzBY$98lK
zV`4ZrW_r$xVwk}GU;O+S#>OyCoL1vwxFF;gvISK%zb7EliqAw@O%`6vREt~^>Qi${
z442Xv!{sr=6@R*#$~=i-dJNN~8Td9MbQOys8gg3kVXCdrEsbsri5QYGq++HOv$6C0
zeeUgZx5|r|{byb*@I31zS5+}&W0)DktQc}J<YOqtP>Pv-j6%$8)bq4kiW`g^6k_Is
zbaq^{n$KZ~Cx2qNGKM)Z%#E2IEI6ycF9<j<;<z@4KZ2p>{Bk6Qt7C^(QrC#g7cLN9
z8^d*>?LrZD?>EM96AL<qr(?J|hFfA-62np@@Ya|)^8G*z+(Wx9hTB=Ac>X_zJDF1P
zdxaD(is5eYdqPRey5`{4eKOuJTr8xV)#*i@m>S$8@*uO9U+;4Nhc%YBbqOC9J|cWn
z_*e|fMIINf5I!M%Qb@NeMLG}1Gcl}U&lbau7*@ydEE`wd$QLB+ieq>uhIeCF!$iff
zE{63nyd1+TvfU8F#u#3V;dvQf5YiQYe87ifle~H<l=Ilwt08|ghS$Vj7rqh7`SOSk
z-;(idHfOyt+$`e<F>GTUj$w<urP|ie)%zk0^urjoi+?KoD27i$osUCTbjX+xKa<tx
zVJKg+(}>|K3BM739lE8@-->@1N|;4I#PDMbr^j(d+#D*{$*w7G?loeS-W9{{7=DW3
z=NNurPa8*#IDU;`PYjVb5XWyZ?2X|-41dS)dklZD=EtxvhSuB}V3#O7o2%m(_Orsr
zKz_a+l7BegJH!Fo;6Wj+{^cYU;;0-)l{hNKQ7I1E(vyF&Y8*$zjay3Syjt9NP9w2q
z9JS(T7Dw|qYR6G0j)rkGilc5E_2Q@>M}s&zDsKNjJTmmKaU4zJXd1^+@&A*Sf78W4
zTg1^aj<#_e6UWhUw4x?6Fph5j@%dkU=0-bteyorQVLXG-JH$;D?L%W6oiqdQEIclb
zE^&0Fhcw2~H;&^aKS4<S?s4=G?<pKw%go;S^opZ*sB>Z*?7%7P7f1g%MoK;)v>hDB
zz>uF5#~^X8e5pSqj-fK19LMlbXP5{#I;b$>Km3$9M#*?;sCk;mdzYGbWM{^4R@@vq
z;!OU2eN)VXQs=}mIu5=`923VF3+Gy9qJC~1=dqyU7#qj9I4+N4Dq}Umyo%y`w+rHC
zdVFCV<Kwu91;jIiaZDDOD7;uWNl4pEMA(r|2_=_`Tqb<`I5VP6iz5|>7snNGOpjwm
z9ML$OINUg5am3@W;;>nZ+D5oE<Ed13!kp0Z1_K^;;+yD1-1PiOA+Nk(|9_LtIs0*>
z<2cj8Sr#&JWaBv5GMcOgxj3$l<C-|~ar17aAS}jF5-G<qM}$^0<CrBrJCs}*Hz%EF
zHCGbyt3>7r`Qmtf92|63#PLKN3*xvoj_V|$@V+<}#&JEXUmQ2aaaSn6N#yo8ZWg&k
zc&qTXIJk(oLsO1BB)L<_k&YhnStR4#aoi(9$-N?cMR<Q4i^U%hJ|tWc$5N38h16fB
zAV?mT<dHZYjpMP<_VGBDi!&P3;lo#8PsXt_j(6kO9LG~}JS~OS<9LQ4vajaRqq>n*
zaja&uV!6ceq7>GIem)<^+Bnw5&1!`?xjv2!ar1T~@Sgz<=NAF&4EYLJavC?q@lqTw
zt4hBre_m0B(+M5ECP@&(H^kqJ<1P8{w(uQhyXFr8z8A+9_M&m@k@D6!K91uP@%M!v
z#IY@o598P_BUAKI97L0RZYPd2<kL95h~rBsd?x%nZvMd?6wUwQ*b&DMaeNiW*RuUa
zHRn5`j6rPa+xM)T#~TlSlzcavWE?xiDcmK}p+@9q5jOlF4!<xyYzTEDzs0ea-Jpe|
zE&LwGAMCCzRJHJD9QzobI1a|~SLoZ{aqJgAz;bD0F5aPUTtqX@ha|6Hp`wL|W$G}5
z)L}tX5~muU%HmXD5{|G?%|bm3^(|DFyq1O97HWvsv`ho14=h3I*RjlHgM8}BHpqbn
z7LJs$nT3XyDfA{XHnPyzLJ-4AIxX4M!cnr~u4dqtUNyH&6K)}S;~J4x7Ft{AYoVWo
zHWu1i=w{(~3&&V!XQ8u&<18F2<qpF3!n&2rE<{HQofv2hlP7`yU1ZBo^(pBZxRPym
z1$u&oUKV;t-cu>%ehxKzOTxI3pJ<_vWwxYPf`Om?WjjbXKsZo%l4aJFfe(W%(~gEn
zK2#XUhp7h}E@W3WLS&?cQ$oooMl9r~iJUGx!!qy0>4ZJ!!gl6N*Vz`%u`t@gUyaNw
zMOyI~58r&9XJMm-7cHD`VXS3_#c`I|OupX21r{!3BrRNIp=6<KVS<H;7E%^G3m03M
zWMKve5et`Cm~5HjI@2snv2dwnrmvS<xJ-ncqY006l1!BvL#N~lMU}3mTV^87qaZO0
zaSI6xNvT;D99dDvw#>OQs=4x$5)KfTwK2<8I$Y5_;#){t$Xh6||Ce)ahU6?{nYY@I
z;kh72fI?zXo-hu9WTu5#7Uo*G$};b8XUoZz(xLtwRwwP}5a(IATJq~c+iOJTTUcP3
zR|fR(+R%!e&q76pak#<4jTUaQaI=LCEM*I~Sh&@~5(`UNUKVb*aF>NemU$a{hlLUP
z5}`BSAaGFAZVcC?Yzuc=n8w>klr#5QxKEAfe#Y6t1D5#|g`*OeGxUVtTd{pTXki(%
z+QJ&k>?u8DVdtNbM^&XCw(y9YQ;q%nV-}WMcwCvlaG$oYLY#T>gvgT?R*F0&<ONo=
zdWH>+M}UN@h0h8bw=wcXZ6a$GE`wgDu-04VB?9jX=1x9OVX<<)pe*7sV}6>ni9TES
zk&$F?VBr-DA6nRM;Z+N-S$N;V2NqsuHtJgDtxClk7T#nJpu_NQiM(y$9g%m1n?u|8
zENl_)EoJ8FmE7@$xh-}Zn-y>BXk(hjM;1P2lq`H<;S=_*Fo!@m_n_6M7Cy7kKrgCz
zDLv2W@z>;ETIP7+|5Ts9vdk98*A~99%<-OYW&F-EyDJA8<9iD`ERax#&kwTYqHLFi
z-4?E}G2O;b7Jg>8Y@?EmU)Y6O*iR=G_E`9heZGZ1EbO(+)lVl~2<{!N)P0!TS!DzH
zla*?S$%=h!=?auJVGsW)X5k<9^EP0c_3uFohuCr}nwz^=MY*2k{E)lid{@rIR<J?i
zAnyFwsA8j&jm|cz+Bm{SEgQ9MQ^&YTQq4A3TvoTuH1cPj1+vXaiJHQGXP}Oax;8r6
zW?@^;HvK$jux)JAx6#1Hkv1CIXl$d2oF7D_kqB>IVzxB3%|A-$Z3_vHve8VE<}ya7
zo0WJ=@uLF?w}5Q47Uzge+qU-MwfQk3?S#h)+uP_Ma^af8ZxUGzj<eB)LD;y!Mpql%
zY@Bantc~MsbhmMyZ8mIs$kmAorKgP(Z0tXDC{-^)>?PjYMqun?qpyvAO7$QcgKhK|
zA0T8_3=}y@IZ5LX8$)fJ%7?FgL!DD>46`xZ#t6x2HPSYxqxta25MA*ZWrH&WlGALQ
zPKP$mv~jkLb8NFPVGqFXvd@x-R2yw$jE!?;q!nE~Bn*7uZWV*zsKJquogQc17upza
z<5C-!*|^BY1Quvl(*!2kW|){{o7wfn$`jTx_RRY@|F=P$ES#c%HlJqhd*u7p%NeV#
zk*SIpgPx|ekj!9y+E`^{HLHq^xQ)3suCig-ux*rW%w*=<aBU=PByHR_+0=9P`3D<D
zQntC?q!}+K3|<7=@L5+mVH0L-WJPi|3L<%7P5l(LC|(lMN&mKySvF?dxYEWP8^2XI
zrx|$<1M7Lcz9vLo=g2*rc{Z-L@raE_ZCqnxzKuI=++|~dZC;>oV7<-8waOVL?K&F^
zl?m6|xIyGb8#jy4_9l_14@PbYCAYG^HHq+H#@=q@4*A1^U{P`%#N)DySls%5)7>`i
zk*j-c+{Ypie>n7KvB(29mWV7BK4@c^$U}^wcFP%u3c4DCE$%TJ%WXVvV+BjOl1VRX
zMH58WH!^S2Z6i<EcvA7<Bxj|Kr))E0<ny%1GmNc_&r-+6_cnIeSYu<Yjn{3wVPl<*
z_0+WSf{hKf`Hq9%5wqu+qRwZdZMMOAS1m7ie^DjEByUnxc}e)PjaNio6}~29FGRIB
zZM<dUTN~feTO04NfJT{r0nqbzZG2(lOI6X$!uNz*gj<F0+xWo7HX9$>$Z+S7U#CjG
zUHFlWk0odI4s1V_@iXD)q1FG?BEGTB?Ds42XE_A0xs5k1h1XnD&N(43Y+=Uo`N77I
zHukWZ+1P1g7yEe|zuIOGlcOZpn7cU&D7TrwpBa;X%uUE+$C|%W9o;7~WL#vgjo)oV
z9KgXJHvVZC*>B?jeNY_s(TZC@!ls%z(4W8AxYWk~;SgY(A@~qer+4n;90w~nsOX@R
z10JCqt?q@cDmkd^po)X44vuip+(8Qm)g1Fyw7z3JsqUCf=^DbC!dk-G4(d3lD_&2U
zKkDuXIw?+zG?4sAVMAdfVPgkP95f9i`~=KF;EIPgnmMLvGhF)6QoNOeqviAZv&_kX
z)^gQG*j9Lqu$_Zr9kh4Q!9mCW#Dvif95Ox}0a=;5IOysi?IYu(n}g#WoS(wj6uLX;
z;o!jpmL<$U*3-eP1ZF32f`eWTdOJAL!D$Jco<JYR9JwFtV2Fdhj(MTn&pEtD)L&$P
zaG>xc;UFPz;jXXdz&XQE2PZoi=9uANxP$v#Lq<3l>EIN{TuX8)gLBNVJIX<}x!Ke`
z-N6|SPH@r7#hDJya`3W)R~($};2a0nI=IfkXa{2)xDFBy&UJ8}gGml9VHzEbb#Re`
z2@b|7&<h+~D8e3KyrTDd1+#MR$!m3MM<&XOS08W}{bGj8Z8UwWJK4b$2h$u};owro
zEIKZ8a5?i_BQjs6P%>3+XY=BV=8@?RW;lpDu$UGHF<I?wZ361h+ze0LMziIQBjoi{
zT$-_8V$ewkDF<Z-GaYyid<QuPdB@yTN#|(?8RiVLQPr3mSzDS%cs!sWe@Y6dDCEvt
zu)XtgBr=P&+QC&0<~g|1!5qhY1;A+VVe;q7ZJ>O$gKHejmk&YmIVdw+J_{Ud?{55D
z=-_$>4?B3o!3_>>bZ{?=(!ouv6%KB5aJ!t}A`GH^t0K&p(4RXTEOKzSgF7AE#d6oj
z0?b3Eh@&<Y?g`_=T)p4HV)^r+W4Z|HJm7$FUgBUWTT>%*lL?*B=Vfw5{*Yt-c+Tfh
z2ah>;*1>ZQmdleT96ZUE#qyGIg<}?~3}vMQ2K}^yXC!}0KCnbqIpz)5YWYl8^qdbv
zT;pJ^gBKiZl+`*18<-&#BI^U^{E(IlZ6!IV8ysF=bnudb-o%n^Ws2-4-ig}X`1z`X
z*Bt!jU@w#A;0*`gt7g8*XgK)9!KV)1cJPja_Z@uT;9Uos70?#pd+fe+h?)suy(MmS
zu&||BPi<q5C!LR3b`Cyru(kQ&R0I_}sB(<MXAVAh@RftF9em-KpZl<&AE_Jp(!u}e
zgUW>o3<~HQ2b`jOE1#M3-#O-u8^e9Pd1Qx!AK0@w*r`^$M>)C6!A}l;cCcGcSoc`Z
zssD>|?^g$W1xX40XP}G><Mul{e+La*9O>du2m9DdyEwwdUk>&=IOHJW;(&v{9dl6$
zD=K~ahp|$ioB;-f#l{F16<kzyP4lU!-lmd}Rft0X>mIR+YpMi2p-wdy)m_wcQQt)k
z7d53^$3-pqz_`_x<bY1-G1VMB>$;{xpj-OMY^M$@RYMnzTpa77JsrAe!XR9<lG~;(
znz?B1;wTvzE_0i%TDWK_2_wT;v8uClTDxeYpxY^wwl0p54)qxv+de<4VsFphtb>b=
zE{=E6-9;xCou$^r#c^_&R|(P;J@4wGn`<gOyV)wu&4tyJ_i#;}VM2OJpF;B9E>3h0
z?-KWM(bvUP7t>tybJ5?$xh~FgF~G$@7pJ>8!^KH12DupSVuXvqE{3=mCf|k%nO!Hl
z;5jJf6$_d{Kcj@R1euDFE>2OLM-g3|rc_gt3um@v<_7N+I@2{H&RH(bR{WWkbL3<U
z)2`+@nlY(k3WECF3_Rb(SQq16T;yV$G?~&1MJ{m7C`11#VPqz_nCRjX7n5asv1`6o
zqZLbMk|Ydk3d@u|zl@hECX5(!>2lXpLMkxRu5dBk#nmpZaWR8IxX8K4yNJ1nyGXh4
zT+@A7E?gH07q$y0j6C}{_8astsqA6|_yU)siSL?=sxk^U?V2qV8iSZ;X{A27;G*c_
zN*8lnlw6dh9O%q+G0VklNth?RW`u9C={YBvOx;{o6~0^K=D&-1iW{?zw#4}^7Pz>@
z#jP%`b#a}G8(h<YJgg6L7b*v?m$&qjd3B?Un_SZs+#H6^*1^Qy=HhnObdUGCxWmPr
zF78o_yUWEQrSxt#2VUS=$=rv`TEWN!8O!gyn5*>peiw^fJizA9`ru-@izP0WDwGH5
zvk29ei9EzQsonTTWPDWkyK36wtj|2g>Eby>euaxCM4l9`6taRnCGxb3XF|y;k<~)h
zv^6f)vTI79VFK%1tatIVi(g!9aPhp0PZi<|E;hP&$HluczUbmLkxedMa`Cc@SLEBP
ztS9^>dOh<m9+PnW*6MW^Z@73fC>j@UGwsbxpKzPH&7hNKRoTqqaPhuu-*d4={<C_}
z>H`<s*w!jUK6de;0^084BiD?K%qX@I`o`+P%0@pwQN?DVf9B$I7hkye(!~!hesu9a
z7hkb@yZGKU+YVp5_=X*VYu4rrg@w!03*48WKWt4q7y-qQLGV*e#*@Eb+v#E#YmUA{
z-0k8gb`<J`*h#XE{pw;5`{x9zB=DPyz3kOp{H=ul&Ys`JJ{Nz4Rg?~cl4WWB<zm0m
z%b;1cX!VbaNWyf*2PNNFF>;8FOLt-;feHyT)vTC6CF!ui@-q-d;7<MmAb}$isFgtN
z1ga%aJz<(Nm6^I4iNhUBO*v;{q?}Kk1nMWyK*G8S)Jq)hOs3R}{H|V<KR%#ZqXZgr
zE}cNH1e$OP&4ee=O0JqFa8v@#5++xhCrqPmnLrC!F?1Fal^Fqg(mG+9f0qQ>B+xd2
zV-jeWK>GwbNSS>Xb&gG#7R1KVF@a7AbWY$n*|NQG5T^piYZeU~FN5ovK(~ac2`usB
z6X>ou^hls*!c2#P(S%M|J$ff_V!}){M>6sW^i5!J0z(q$r}R=jFoFJ3U~C5{-}vn(
z-JYaO9wZ5^hAJ|{BxKp0%(QFdqULZpACWNq0}JsKX^u+3%$8XSGMb($fin|0D}l3_
z58CACp#pxL^c)AQs^+I2=Oi#XVfJmtD4)+w;JgIRPhe~U@dT^{#wBn;0#g&1mcWHf
zX#$reaJg1J7YQ#;V1md*A+wJ0;WH_LOA?rzz!b?Z6;jTBNe8<PK}SjnXIxjvcDj&8
zJ~Kl7XaX_uwer~x<=F(B1l$A?lB7a;GI99pBu^4wm=0|-3G=5C2AWGCFJU2pa%fvj
zpd@Z;m-_jcp>J%bS0=DDfyh~ylfYc&20OIDxGI5pOe4RJOkjb^_nHLeC(ITxUrBIR
zimUr;6Syvcg$Z1rFcagu61YKx{I&#c4Eaq7+$?^J@K)isY;l#$g6?)1?-1U}RJ1fg
zK8qx|JAr#d?p4LOPk6tO^=)wi4=7#aOC)5+!ur6?)rS=4j}rKpWz9YzfkzT}G=aww
zSf0S^3B1ATm%s{Ek_6Ty%r-l(CfhS3@<akps^+X@xCwJA;A!D%;WG)W65$38t@u0}
z8hIqRaV7JbeyyCZOJKd467zh6$n(M%64)s6qHvRtIxi*gviK{Z<W-T^66Q2D72aec
zP2imb-c8_bbrG!I{J65IE^OJXg5x&zaTU!7{$2uG6fwqdtH}Gp4}{wi_)uiKa?jkK
zb};fu!pvvBNaD++Ii2-s0-q)Dc>-S~@MQwMlQ=Pn|0VEM0yUGUmBiNxe3QUG2^>t|
zTeh7xk>3*hVXOI&{JR9cPhf}Q|ATOk@JHd!1a>9NYl7WElAlC=PT-eN@@oRyx%aLa
z^{@(&y~<K{9ltX-)S}7%6xk>ID}nu?{D8>ciNjwd97>p5#aM4ECJ{-R%t7+-PDKR~
zwg_&FS4yI?j8#J0s!1FX@@h#`7q20t6GotR5_OVjn#55_Bzu_CjCGTE38<Ge)uw*Z
z^gj)RM+zGX8wnc=snA5^%_?Y?G=Bu{kVL9Zq*`S(Pnwajg|MaY=p<T+P~KXkjj(MJ
z$B48O9-Bn_q#38ou4YTqCv;4r6BC|96ZZB=^U~zFB)Z6W3E$@b9ig1UZn8Q)iS8mj
zlISUNLK3}1sI#i3an8S`^hu&`64xei9j%h+pTy}5J!#&?4iNGs%VLfQNt~24gW4eB
zVBruUg+r4#S$tR$!$n3UF-l~lvV}UQ$jA-DQ$<b_j@35!nMs_L#GEANCe46*cG7Iq
zeZccSNsLZnOcLiNF)fKJk~lAk^OLw(`NIquD>7a<E{O|5`GqV{b&u4!D2WN7eByuP
zlajb3iOES!k?mzkT%N?G;+*-=A)mmLsS*Z!dJ<j|eiAbn)g)p`#FI#b{#!{nA-BV@
z-2XUFil;&y`k4-SK8Z}ovm!YmbqYxolPD!omSnbYW)ibR{*7l4?JL7@Ib**ni9JdP
zEBQQC_^XB22<IoUK!m^Wqr$=@u1{hUYkm?pByl5qhDK)k%6G&!CGl+1T-tDR61OCA
zD=S744<+%i3h{QL$Q{Bvg?A;fNaXIM*(JVL{GO!wRF=H~pZg@?m#~XP9uO``VyVc3
z(p;7V6<B$KPs~UjN#e;QRwnVN)E-M>c@mF{uMpDbz{wLbl0T(fS|#Jt?E3irSDZ<v
zE%$I%C(Ve=VV8~lxg^%8)vpy&vQEy|C$T}2=Y=l_Hws@A2II)fNxZ^}S_%B$C}%;h
zCb3QR|FtAuPvQ-Q%T&CV#GB%8CGob%J4w7N!j?`2KAUCaHu4sctx3EeDtr(U+J2}K
zWLmZ}8X^Cfb%5^$gr6qySrVTo!3|rg@gd=I>3@p$_e$MY!mpF~M&w)Jcfw$ru_K8e
zlK3%+ok_Gvp=AoYlGvR@#S|)~@KX{$C$W#&n8Yth{K{IF#BVGYZT<0Ej~&{S;9_TQ
z62B+$2ge{ytC-9`l@^lqy(0UQIKaL=1*FW%=<lSt_U9i~NKMWU$`yOsL(0<NoO6Yg
zxm1m>|Cp}!eIu1qsFFhC6q=+^HH9NmI5LHXDbs;-X~S1z)x@i(%tm*O6l$hWD}~xA
zvxulGVIA>5|1`x{PZDa@7io~fT>XKIVeuUkr{#?pghuVADIAqTvlN=A%$jIPBjcQJ
zzW5;(U&K#nYW}rxbPBCf=%2!X6k4ayCWUS(9G^nl6pl%uT?)sh%=ce>amL!nEl}2Z
zzJh6=GE-=lW``6yrp!>nr;|wM6pjleT~g>8au!+l6ndo4H-&yF^QUHBS)6DQ=}9BM
z0#2b<%5<}QdZ%!rcpo8WUmR<gOPknB^AD8`BLh=7DTT9BI46ZcDGW|wXbLB%FeC;3
z^Jrlta_+zg-(E4X!&2tsea`K9fQ`95JcSV{j7*_XZ?n;K3Ufw7?I>n%%8VnY2~QWE
zAv{xfmXNKII-^q<lft<voR>0Z0O&2>SMseQaY$n`Oj9y0g$q)+%){j#E=*y3%Jlpv
zd$=ft2}*Bw4--@19_Ga<OiCfG^1392$tk?aIHxcrg-cU-K7|+PPYRc(us($iEQ?5F
zYRdeHo^QCO(OZ7}mBRECW-zZ(xHpCSQi!Dxr(4dhg;olM6pAU>DL5&(5_&24DI~;`
zLSC$$65*Mvv`AK%5eBEQa^iU*)ffbyQVLf}QWjD&Glf~=v;VK=9M;uP=PHqTLLMHw
zCWZMaEJ)$n6z-Jpx)c_saI5(BLi&6YYqI!_!XOSei{J7e$!+4d3-9=k{4ViD!n=j{
z{Kxiw@f9gNk-}o}2U1v)!cy@^g%1jsrSK4&fH-6I2wS&uW1>!DJ|_8c;p4)8^Xf?%
zR|{9B@RZ2YLi+QJ$f^|hBA7-#&r0%K3Ts5x3fBn(KUvurXh*%}+?c|PDZG}#>#PH8
zFT(S?nDc2brSLMF6~7J>lDsOyuN(HYH0M>`NSTxK995_DlKd3jN#XkxcBJrb3Y$~-
zCWUWPcrS%5Df1&O2Fk{@mBHyX;`@rv2Pte5`7njgM79f=ijPD-PT`YK@@WdZwUSn!
zOY%i1|5D_CDSRdJwUFmLgG*`ZcQotA@7O@}k=hR_{K%a5(8M#}mF!I6Pzn*xbVs{V
z*v&qHlYimQLK=Tb;nx)Qr0`qHjJbbFzE}Kr;U7Y3{wb?{!au7=_KO@4{w<{Qf24d+
z$fFMMP{G3y9;$ifSK1Xl(^@Nerdyk#o~^QnDjup*jW>NYjReOAs(WVRsAnJ4k!B4K
zH9b_+o_sA2wL?w`JD<89>UpT|fty_{f(D-H<@g*a(oon)$gk3xdN|5MCl8%HH1o`G
z)7(P~4;LR5;Wprx9nEi)*)O&9aI`Y5m50_I+Jt@{E7I1(F&^4^;9d&1__%k(ag!mo
z_s}8K>?pz=p5r`p@zB*nHxKL*SqT^L<oSt_<C(_Bk%ps8ujMFdJv{XE%nh6;c<?%-
zzlUBdM|S?qA4E>{(8n{Y=Dvz{KhK<s<i-?lgCrTiOzsmI=;0&}gFG`F5AiTm4hILC
ztlsK}nPie-9)^1u!9wBb9S>tXjFj3b9!4?do;h7`x{%~F5q@uShKDmlPWf5lXA95q
z%>P>{JlDf{%uf%KJWS^Y9iBOWG10?V<>xXE1RgF>vGN_<g&xK;U7Y-TnBakxe-j(2
z)*3t~mgXmceIl25=6|D;Ju@c$tV%w`!=*Cv_%xf$RMnQJJUs1TnujYC&~#>kXD(r2
z&7Z;GJj6W2Jy;&*dAQnxO;;ZB9ts{@4++NKLyDg0FU-s(?zeE<<RroKu%>&&SGKd>
zrafdl@T1YJQb9>hgu{2yL&?Kj4_C2<v@!3L%buAP%v6-P*q`N@CI4*Ul^*7ZP{PS1
zXGa{DIePLC(KR0Cd$_^FjUE<wxYol$57#pZyu!`{e^a%5e`KqY#(46O5~m{E(7VaQ
z%^vRZu*kzLo*B(~9V?G%-RhZEf1BdK!TolTJ3QPe!u+9dnR>9hJ@c_}@O|99%Dwx9
z_X`&bnWYbSSQ7H39v<|tOvZ;iJQ2zt7J0<Oqau$9mkS>k(w`NqAx$DAPfD^fl#gnU
zXFRN8<@eFlH#xSNHQC1zKAvSMusA%d_3)R6{T|kNSnpwrhpiqqunKv2!NW!mQ^%V7
zukM^|&YSTF7PI$7@9^dSo0v=wFMD`}&CN5DoY#e~DFQSyN?iVsydn9U9^PV0@$im}
zn}zQRsl&T6-V?u}rSa;04<C5=)5AUw+dS}2=3O4X?il${^=G?>k37@Oe#|Pw7AO9R
zhfn3hVm5ZIxxSzi58rs^d%7>F<KZjLnkqypG|^YIO(HyU{4G6~pWjK1R#e{M;Rkv3
zql7yd=Y1w2YhdEWvfl0CC(n#}KYRE^<X6wk|Nro?N8~pN_X^GApPg-Uvkc+oFhowy
zgI5o%cn3WE?EyY2`1r@eK@W#KM10dnvF-3nRsJxG6Mm+he^%u<RnbQ!AC-Mn@y(d^
z7Js8$=kTAe*}u_4zJ;mgV`vLB_DvsN-8cPn4Iedq)bdf=M|~d+B&_43u8(^1hdOl5
zpMG*5a%?NJA9$pXhO9O|=IJhURse>@dzngg&87N040e={W<DGru8-zETKH(=qpgpY
zK92U$%13MY+`p>%?49?561#T+ug_&z$M|UH<2WB(e0)C6B;i=!G<Nny?R_)Ob`W+H
zb`o|L@>p_LANTzo8Rz2y-yF;D=HqxD-F?&V_3$ys$6)cEK2Gq_%SUe?C;I3oA%}aa
z@#*8E@Bfwb_c6dXe_NyNKv|t6q-01ye4NdU^>MO{!+eYoq5g3H@T`M;q>od4jFQ!<
z!ZUoFCUUxuxx8erk(oH18M@_1H|K~mZk&*e4&`HfoE!4<e4H;nR#+Yw>B!6feT?@p
z!$;J|MLs6@xWdPDmMQ-X?t_0iW6fb!U+iO&YQiN#R*A_zriA=b<?3ZVE|+AgaGEf9
zDbv1PWOF66N@4|w`H1_leAqrZ4l<JvepSH%=p6pov8_3c$>0(`l0H&CJl|ZrHkbeH
zZDgvG&*)V&zi#BLayD0#JXq)>=i^r&dwk@56nxD0vA{Q*kX-T<eUyBZeauuXy2i&W
zAG29Tjc}!JzBL#<-t4sS|18}3nZt}_DeJKGRU-3zTrI+{0}`Fh`7!q1*ZR25$6G#L
z=J_8V*Za8L$L6CWH~6^GH{${;|4lw__Hm1kTUnp$njb=q9cyL+oOj*EV%7O`?(=iD
zaEFgOeca_^k&hRAZ1i!rk9&M<U>W)58<TrkF8m223x)eXKJI6A_3?m@B|e@|+?IxM
zUM}*Wk7c3cA(4lDJQ7MC6?x3ZH#$7|xQr`=!6(K~hMFsVJQeb%eLN$+DwI(9Sv7yw
zgy&SyYkaH~StndC<aB~B*BJ9)DcX`fzmHAKIv=n2sKJ@DW)Uy>=2SUz{#747Z~kP$
zdtpAiI4-U^BCvm8|F1gsCUahs)wg}T!`$HcPquv@U$6*#v+41kk1am7`gq^R$LtTe
zDJmq{Cc;~Z=0_qQif<Qw<eR&UsPKu5p9(({Qb_$Tef-bIS3bUGZ_v)%qQhwOUsT^P
zViQb>^Sc1{+utffzVq?D$PVET!XJfnwbREg@!g^1Cy}37=&ac6zI0ahHy?W$ft;C~
z|L)@tAIPFY7JvHKr+j!hgTI(?F2T}xE{**@4*2++oj>bI8Z**3=;IJI(>OED4O1YE
z6VvFEMujvgrqLmdj%l-lS1FA;X>cR1a@tJlSejMRro*o)JVIDaSY22{SW{R_SX;;~
zcfMSxn?}7f>Zj2ljU&@&m&UPaG)$vW8m-f2_C=o?r_nTxqvWcIFpxJ(n;yHl)JXWW
zNTa0`juy5O2K`AJDYq3KBRPGh6<yJ{_L6fgKx3!0xd&`fJ@ibQyzMOI<I?C7y6P&@
zO?Z47-9>r`IpL(Y?2S)IqgUFz5bT}CpIyyMI`Y2Eu`~v!F(hqnli>QIe;T~Pk)=E!
zje+ER`70bGWJ92bL(^tghn*NZpOe!Vmd5ZjMx=2HOGlBP%FaJ+4i%8FQyL{Xtxiqj
zw2+@JGQWQ0tTfI}<DxVsq;XCfqtm!Bjqz#Bd&um~j!B!#4bDxQmw@M`aX!7}{(su+
z<1uH($#{W~5?V18><syt72kbNOylA-rlv71jY(;<Tw=O7A-{z6jh%nmG`%T8l1tOL
zO#E`;^hRc$b4A+pkepqd-#9Wzw?{_Ph^28AqnAcJ4J(bA^f?VX4JQpZjYQf^l{Z(6
zEFWiX%;tVtQbn0k+3^z?kJXi*Jfx9MBg4w9=1I(o=Y)A-L0A-)gk>SyKJ{m(ab+5F
z(wNIA=?E6Ttl_+Z+0NZLX5F?5k*m|VCXGAOxGRnMX)H+N)--NY@@MLA#n+~BUD~wJ
zg{m9Z3t2I45V=u!6LVYS79ppFRA4^yxjl_bJDEM$J5=0kjEmB^JB?LotWM*ev|0X~
z%)JqqZtdPQ?o*w-KaIs{JdnncG*(K&D!NqU(KH?uStfiaw0$^@M?xMP{&_5o<)P&9
zv{{m@NaKk#o)qW0g9kEs`sk@p=V_5=gxtbC>MwJGeQg!fqSvIcHjTH^csq^R%_3K}
ziL6r=trs$G8`5}Q4qp&%6uy|oCU!ykqW>jHUKYM0d{y|GkUqRF@`muuG+MPb9n?E%
zyqm@$c5WGLPUF2azE5LE8e7uXn#RXze8Sqri<K&w4dM40Lk<LKGs<ieewfB~5lTKv
zoBzy`aMAZ^8lR={IqRnyKEIr5!uP`LJURJSRs5guE8*9|Z-n0pzZ0@d*~WihuUjed
z54++teoSMhGGrI~>a_XrYIhnxF#>AHzohXiW2iSublYnz_N4KftoE|QQ62l8*~_JY
zkU9f;NA^kKFCndXj~T1tfi(V>J~=mgS2r>>jk`}g8G;NdWN=yrr)N+xgGw2U%HY%t
zDrd}f@eMLKGGl5&l?<w8a6|^xGN_(Gy$tGSP$Od&N?eH5&6tK?GlN<pwKJ$A!lg~H
zt|77~8DGQn03>wMFas`-Pt2GpR-+6WXG}-eB!gozXqQ3L435g6Sq9A|Z!K&gJUWAx
zBHWyz6F#jNobtAf<ZXo;HS`>tLHi84OVS~Ojv`$%=p=HSu(OcWo6Wq7IEyLpxmyOu
zOF|=sJu>K-!3m+HcLu#eea=^@V+t#Sz8Un(pucipgm6H{tdWOjFffCYG8mM>V98I;
zU<h+HWwK?cB+;3X@035oWTf0;Kc@W_@{t*w63V%i%2NuQA+x8dTsLw?24`llDT9|X
zrYk-xgNrlfJ;K=;oRh(5#dBQ7yz6H?$H;iD@VpGp7a1$$2ZL0g+65V0DE;xmi-Z$|
z6NS{_XP%QXxFmzg8BEFGHWkFBEYl3GXDwn`XD~H`Vg{uQre$!2gy{^XXD~zD6-G0N
zi3H<#T%67=5jz7XW2OP@ScnM;lfsnHldb<BolFMV400LdGbl*TqmtaQ<Q5S3McZ^U
z{?Pw&23N_4nHkK=V0H#qW-vz*c4$-x;zKf5!rSF)UItfZa7_mDCA>Cscn-5bMn>|w
z3>Jn$8tME7#o<ON+$6kNcuNMiX3W_(w#tuqtt$`zWN=3YcV=)G%Tf8cD1*B*cwD8!
zdVWs^OC`TIgZo$+#2*kYW|M4e-f;0X^b$!(XnZh(Wf?rgC}r@N<P<)V!J`>7PLWsC
zrWP}2xqK*GW?Zev;E4>Ll>XBhJd?pn@uxx`_=~7jAz#gWmMc1ZmN}yrZEG@Et7xyw
z;Du0geFhss{(J^O3|ZwiO8BDi%yt;q!pu_GOK+`@S2B1tgV!>6J%e8|_%(w!GI%qC
zw=;MrW0r>;CErrD=Zu1{1Na%vyBYkPIeh8j<_zA;U<*5(4Bl5k{3!f@-B$)*Ww0%S
z4;d2)Kgr<J3_cS7SQzYhe<uE=kd^224890Ccd;65Fg1$L*Ani?;G59)+YG+TV9ZLR
z@I8A5ZktH+hm1KPwzP3%X9l}6*e(5^LRa~-jXs0ssRJ$|_GIu|1_v`ZM6V`cFUwu8
z#T#%Tpd9`qgFi*~3I7r@SNCUdAmo3G{KIhdl9yX9^ZG<0S@1_!90&OkXvHilWwAeN
z7N?c7sFFq1ERM*Uy&y`s5@E(x%c6P~=VozU7B#Y{nZ+4doS8+fENW*lGK*8P*taWE
zCyTmS)XSQ&^%C_t_33REO}PJ`#gSPw%%V{iM`h70i^f@VIpjw?yG4bpnQpP@8F@Zj
z6gSVJMHa2HXq`pBBaOUe)(jSWj?S7&!tQSU3r0>)sL(cxW3p(MHKX(KS#;0hSaBNL
zi*(4Mqe!PLI%jcQXxlZ5F5<zOm-^lQW9&iBa3$%P#R($4guR99wN~w$1wV}+kTugY
z`p{2S{X>O;A}3`rD2u_;q}tFdhGY>08hloNvYZbS4i}CPQiuQ7V6Q$Z3*M;1grBOc
zI8AuEa)TLiRu*SxF*=JeS<?w~_D;=nvgTGg2FLN@`-2fq`OG9di?Lbk%3^mG<FdFQ
zi?6cynkAma_$*HPEAl}W7iCRAi-i-in3%=IEOg$+kVQgdQWlqFF<E>{7E`mBmc^wq
zQtdJpXvo=4ugGG$j8+yiL}J3I@Za-7@&6d@EF2l>8x@jSq_Vgsi}_i2S@>C$vzVDh
zI@HN$kqLQLBqucIe?*F*Z7F;Bbki(J=7#dwEE@4SLONv7SBcLHb*|2u8(=8svmlEb
zvbZseYh`<#aABx<eHhA3S==n)UBX+kxLxE{;cdboEc$tejCY1^7iDpG7WYVapYUEG
zH5rZj#e?`fkj0WLmS*uFn^hLCWU(xZhqBnjDwH)7wuiHLJc|`sJd(wuSv)4U%Z2Q4
zsK8UZe4dapjn9fanZ?R1p335BX|5JB^k=eI6}Cq%qbQ*#&&kOe>8#CSos8?VctMg4
z(tlpa#?F?zQSujsoM_P#hTBBfe$uxfKCfo+S{AP}lO^Ap#T)YW%`DzxbC6qF(d|1~
zyqm>l*#_}>Pn>>kVGkqc<nPNXDsWc6P0l~eV!Oyk!jFYi_#}%@#Xl2%F8o6HrI0%R
z%bF!T$(Q>g-(<~h9$(pft2BP6R{y<lhwumCkHVc{(`I+^6FW@q=dcT9N7_8{3zHTx
zpJ4y0*2h;Qd$RaVe6M`|UC0dlgUvy``tHV&zp`e%%o%=~b52hFv-q2JHH(8;9Lge+
z!x<CI@0M1LH+P93XIeMkk2AvTtLJkR$e~gWm2==0N1Yt%=1@hP#;PJm<WMb?RL`MC
z$ZO_MOT2a{;ZnU`4)t^9FNECLXpqB^Ih>lqX*tt@H_V|$4lSkJD2K*5G|8c94oBtC
zJZA<<hS)53c=ww|Zs7AFIXZ_{ISj~|MMvu#+T?H|J<OqP4#(usEr;WCXqUsWIdsn9
zxE$JR$Ba{*jyZG?A34n|i}-Ys@pXNC(IsaVBfMXi@~%0v`$yumGiBO6haNfe(}$ip
z^b#RIA;&G7!~ZqtEg_A4b7ud6rACE*IrNvGj027IoDm+VXrCk;BpfUplEYAulZDhA
zCNeyS5h5c)`6)S!5<hUjEF4Z(37(z9IXMhwca+1KB4-KT;)+ij)T48ln!~gl#^lU`
z?p)z{!t;e=h2wI#AcqTc7@x!ClCXtd#JuennXE#Yki$e}+Qq_2LKey;IdkTUImS|(
zlEbBn;bp?$eeuuD&BnzQIZV&N&mo<|47$z1$-&JbmP0%TD+fDw_&;UA&(rw>-)(&H
zTF0DLO5~8tA(extB=a*6&PmEm&FDtLZBMR|GdW~)n3=<@9CA72b12HgLQv0j?3r6e
zgLE@qNp-KBGcVa$${Y}9=P);it8(Toz?C_(l{zP9w(R&zEH)^<m!Btp*i^asJU@p8
zta}U5XCbc5;kq2w&c(X9SeV20ISiVG!Lx8f4makoEsqcLxG874-$i+YH|KCm4!7oT
zn}qZ8xIKqEa`=+Q9PZ5Ft{l$d572X1B!#<$l+f)x;`iooAG25dWg)E=i##A)lEcy*
z9?W4`4i8DPDTjx1cqE5)Ijqm&(HtJj;h7v($#%K$3E|_y6~bD%$dfs&6n`p*r$wIa
zfB5w2X(>Zi=ddP_3!f8mVM{AMYh`?+t1)g6e?j=X@F8``8^vE#iSS_3<3~nbQrqFn
zZn_E*{;G6d%i;AL-VlFN_!b*GH!~4=TSn@?lf%2>n{#+Chb=j5mGQG2-Vb%Qi+sS+
z5&2L^Pw4!kQ0HTjPuL5El0f0}9KHx8LEOGl9OmTlbq?Ri>f0QC$l*uv?}Xpyurn6f
zAx?jG=CF%RGLI|r*qy^qIb58_q`WD2Cg<lIev#&{IsB8u!5sF;_?vLAkWu|z<c}Qw
z3?=(=_)C0$C^?YB-#PqI)g)~@?}uQ=mB*P3C=cXOA&(RC=#@vsJSyeUHjiWSsGLWY
zJeucC##YVah&+zWqhTJ^B&nT8ojj`NQ6rC<lGG9gr9cdlP&beIlGhV5$+T(^YVvhC
zjg4e%nn&YM-b92x92H8M<w3WUv<M|F^Ef(>Rx-BEqfICe)R@e6l;qJZl(!e@EbNd+
z$57rW%x%WxI0?Jt(N!c!0_Dfc*gcOPp{t&utKNB>n8(mi-Y1WNA@3{FFOU8r1421t
zcv8p*<uO=%NGM^TC+9It#^HIK63R!2j10paCF7}ioR-Jw;%9`K^q&u-&FAbq#!7yU
zaCE3MM&w-Kd3l^4%IR=i$S=s_Lh<pT<f1$#<S|i3UZC`FQxnQ1>dhwSF-2uWADH=<
zij(lUERW0OWU4TT+w?qU<dMiDnMYJUP}3EONiCj-70T^A9Pz;O08^4&8R~d>_#sc{
zkrB^^lAK6hSP&M4r98@c%oLxMM~SZh#H*Jh<aNsbujiR7`BlPsO5N3YTq7ehA&Alf
z8Lt&ym&d|9t{1;Sc$e@-jskhyEFW%BN?GDe`>lE0#vve&J0zr^cmBsV&<XJFJnqTk
z-aPJ;hi?h#!~J<I4*3HjOBBjd@dxu*Ch|}o59jfSJl`mMG>^yfSf0n@c{~?}z9Nrj
z#Gep8na4_zr-V-n8J{5St7If!E%GdD&KhI2CXcm}tjpthk@cbG1`+1l3nGD6FN$vx
zzLdwyBCq7}x(GddRpd1x-BR*~_?w}G`S5lg@5o60u9CbtkN5J}lE+pV-_PR%k$-bF
zAlvi!h%uju@iWZ;{V_Yef+2i9$>Y;JKFi~CIi%zlkuQW_2EshP68T#AjqqFHcS5@Q
zUSx;x2jP!->=fB0q|WX<ehT@|`NN$y<-g{!Cy(Fq*el!Lg+axm?H@A!na937{u19W
z{6}~|_%{<+FS4z1<e-dnbtumzu}LF@6~gpZ6saVvTtJmjUR9)alSnm@>IKv&pk@KJ
zWE?pYwL{I;Gf^kxbqlChK>Y$56mVn#lS;UxgoXt)D&UwR+7;2bfF=c8U%(9oG%et$
z0wxx4aRJQ=XkNh30!}WVMFA}f=u<%70*)@ARRLWJ=vqMQ0@@VNzJLw|v{i`hgvS)j
zkin$wU2X7K34?;}SU~46Zk-C|Tq`w?ljNm_M!B1Kj{<s%9A7~9P@fCT6AFh{puHvR
z6&g>JaZ)qmLqGA8LRbAo1_%cV8R#I9!9qG2A`(PkSOKRNa9RPwB^*(}$O3|C5;aee
za8#&&dI4t?aDD+}B{{QzF(PLbaCQObh>sRFuVIew(ucYYBj-wTo{*B9&aI7;alG&X
z;e`bRRu{=QK}db(<fH;FDWE9H<N~G?kP^SNfXfP)Q9!hS%O$xYbTzerX(6W%(?iaP
z(a)HSb^&n_OBgKnodVnf5}|%lglS<y=+G;`FCZ;pPM8Tbvm*2)A4&=Z@I4e=l?o^q
zFjMk51<WmAR;V+(fIIjVu#j%AlKh$i=8McL;ObB_D3k>STqnu3q1>(-StuS<!W#>?
zsen%l_^g1N3%I3#RRydr;MM|eE8u|wmK1Qi^cM;55Z)<dRPPeul>6=i?kV8jP=0>_
z_k}zt*~JAsrs?$30v?pr6T)Q$JW{};tVJ?DENrWMp#P7___%O+=mX^|!dmxa0V@l5
zN(z)eBl5H`NMO$zk!K5du7KAIc%y(d1*|P#V*xKpXPxkQ;raqLhy*1|-(D!7n|?k*
zzNvs$WJ~^10WXXH8_!o|d`-x3-z?y*0=CQeb^-4cutl71-!0%h@y#kkMvp?4=|(HE
zwSf0!^+5sK3iz;Krno_-(a-vEqxn(j&&LIPA|7-dpBL~2`@<rt7V#zJ1^iUN&r<lR
zfbR<UUi|9<z7hFWNDo;$JH&Sie+cD2hH2jwN_LAdxL*qRwSYqfM2gr`z;BZOUBF(E
zKMUAb!0!e8AtR$5^gMqRuwRk`LJEVJ2l$VKjL*Ta*CI#J3;`93s31Zflxd|RDoYZ$
zJ)($eMKoe}En#(G?ILQ3)D+ed1~I8qMBO6lNkTsx6j5J1@a@PV8p;?nMuyl##^yz|
z5NTS(Q6hBPtZ3FmBrQWp>mrU8Zxu@T?LeE5w-sRpJGO}SMXWDkLlGT{=vc(mBBmA5
zsff-+oL|J)B91GfOA#j(F{p^HMRY5ocM&JbhvS7kh24wjA@Xl+JfVnQMbj-;Q|;;_
zTSl^f5q-t`34^Ld`2ZOQ3fbcgE@DU#rx$UCBtwfBQN+k1PL^?45yQh&(=F@IDUzQm
zq-0bPmnl!kPb(tGbMiBbIJ<~*q;{5&VT~3!H*`BjBq-(c#Dm5-u80XmOqAq;A}$Q|
z$BSGf<f@IKTwKJI&~{Q0mxO#WOHD%wbuMKLCBHnhWnNuT#PlK-7IA$MGbB$Ikt!l8
z9xEa)VhP<M>>?a-#*oig9Y;?T4-f7P#VaCPL{2(>5owW(khc5^AYVkGh`B{vRYb9f
zQW3L?m|a9U)R`&53dV<da%Cu=^Pl|xqe*055m(FVTH!TC%r9brICD72z@QVpF7$!I
z8;ZEGh)0WftcaV6xVeaXinzCkTSA>Xinvw$wjyq48&vkP&M+o-7I9Y*i)4GZkfj_1
z#Hij^#QjAqE#ko<7KgqqDdK^U2Tg{%H_JlF!)$c?l9aist$;@)530fPQ0M6)9xq}=
z5l@7Yl|?)${%;+7Ds=cv5v#;k7x7#XYs8-wPD`75vQ~Uu5y22o3FXfh@dA5;5*n1S
zv4|Io*jdD`A~qHAQV|~%v8{-gi+H7ow~BbXh*#wa-M(JLYa!>5@rL-D!XR$%gtl8m
z-YsHt5$}ly<x5YthC1&v4q;vWu!t|%r5CZih>wc+SUR7Enx8PjDwofS_?$&qJreX<
zrYws1N^0K=zZQO5#5bYapcKAi(ll4uQN#~L{1{d(ZgVk8EP~xd{KV2Pp<)R?7x7CG
z`-?arPkt?8ZxO$96bSwN?LTe*4+-}b@ux^ofBp(JgKYm>#zVq?ia033p^!mGN{81t
z5MhQ?Dxq=-HD#<4+Ey!}s`wG1Bq-nNGS(0>H)@I0E}@P{-4g1FFd**f1zB+<C;ug!
zSVEr?8kNwvgkwXUCMC2ep=Ak8L&;GkG%KMw)zrrZb(OvyT|yh_v<fv_i!g|`BFB`_
zu5`Fp44O>)5;~O7QMTPmIKG5VC3KeYxDvXQ&{cd?!^2H1NMQF8dPv@@gq|WN2>+dp
z2Z`!k!fPtuz9sZ4;j|J?FQI=414=l#gkdENl&ir)#{VRdL7`VeLix}V7y&8_m*iC8
zh!RGMoFW`0461HW+>FB+C7fBpxh0$@+p|g-Epm40a3w!SMrPm`5e7jY&KJM1gz+L{
zOBh$e1@uHC%PXTzOfCxbCyGocVOlLCzgWf~`IAeSQi5AXqKr#RxU7U~WmGTY@)D+&
z@O%j`&{YXnlyGYax0Nuxgc&6iN+`;cXbE-+j(AKMFToP=XPU71xFw`Y@JdK1MM>EP
z$)~MfLZ*al32DhG39ND@<o~bc^RY;&gmMYjlrUdbGfTL#ggHv}tP*BR_;2~nEn%J{
zR|)Byo?k6a!meO}_;n>L6uCCQ>XGY9xIz5p5^fZ^sbp4;%v)wG_krpB7RiIC-d@5T
zC9Ejn2?_5k;ocJNE8#8~7YXk!;hwN`=sY_+a(@YnOL$DS50tQ^gojFaSjMF#JXpfA
z(%~_M;Rc)b+ytQ8M@o29YX9aT=a9=Kq3z?Lt0zlXS;E>-{!|Iil(4FVrzHvIHmk*-
z3w53?9q#Ms&l+}U$-^bMP73Qw*dP+L%8ezwSi){eHql`TpO^4O2``uMN(mp7u&snw
z*|<u0yM%X2cs&f|O_4W*Ou}0tK_B~W37bpUD#?37#$-#Fq9EM&B@gQPhoR0VC2SY}
zsDzJ82(s(nn(%1}pM{zX@yn2Z6Oa<V3MF5c4$oJ=E#bQozL)%m5`Glf5!y0VJ4@Il
zVGt8aIH~)ILqG|?l<;c_2TJ(6ggw&vy@WqRek)<G$dkFldHZJxe@U`W7^IQD?JuD&
zZ|Ksd#6KlO%0St4_y?tSsPzA4YZc0<R7PdlRxI<+Ajan^WmGNW2nlIqs)N~Y(CTZH
zQL~J*%Q&ZuTGDAzM$0m4mr+N?x@9yd<4Ey(!usXIn<w<GVHr&%Y$R+f3~E%<GL9;v
znIzO~UOrr-f?PVfj8<iIE93YwT1)4cGTMo>5w<NK&VRZ+wv3KtbdtQiu!E3E=qy5=
zE@d1S@*s$=%z^5WcPdA^m(in)L1hdsqh}c>l+m}0ep2pL#)+Y;-Xe6{N95o9?=R!P
zG6smSaJgl1k~qU<ehw*PXc?o*IJJzE%NSP1NZAe#bw-pAujqrnpq?W6zqREw8P6=^
z^fJyUAMUs5Ej>Rg^nrnn79U&2xH86wpBvhqSH}6`^fPdH0sHVWE-T~0GRBv2k!&Xk
zCkQ8&aj^(zFF|=-BID#Trj-BRJ{3K@T=MB<%n+Gc#x#*Dgh6moajR^W;f!{yjJPEK
zrqPzsQHiinl4YdII3%H0hF`{pGM+CZT}Gyi<z+lxMz)Mx84Js}UTXO=%4N(HFO*Rf
zDG5zRX|S7B#@sTll5lnzSC%n{#i5)GmOS&yxVnr5p{r{|=KrTYkKp9IjO!#1A|E91
zhB9s`<JK~6l+{h44>vQ1<^OGE++N20Wh^e^jxz2n<L)x<DdR3_E(-Noj)8}a^Sx!<
zC;3U5E!5?SZhrP##*#9Yu?S?fw2TKunufb8JY7t+hs$`Rj7Md~wA0VW%7^FY{JP{9
zl|qmwE6RAHj3>)jDdp9|r^<M`jAz7G3F&8$UdHg*GM+1AO&M#;SRdN5Ijjr$UE$FD
z0t>W^ZzX@Rj7?>HRK~|LzEs9LWxQL)%VoSG$*X0&QO28PyjI5RVLgA?HpzJ_^!e>j
z&S+4+S@NxAykEw9q0W}_;n9!^AC&Q-<lBV*u28m@5BL1k`Gi)o{j`kFL_QaODf~h>
z?%_z__A43b>T8j2!d(5XjPJ|XQN|Bt{8q-^GJXs-e=cKZ8N15ZEy+*9piKou@QWnB
zma#`92q-AW-^=)`jQx`TQO2KT>=Tc_WRlN3KOiIdKO+AhRo4MEMX_|}3Zj0%N6txd
z4hkZYk)SA`2#5%ZfS`aPf(cY)cf#(@&dz2)L{Sj~Cd?=bD&~kegAo;T0zr}g_FebA
z_n)(;PEB=nb#+yBb<gZf_uplG{?TR0dR7F8;1K=gQB$yrAZt~P;Lr%F>GCkaiU<ym
z;0WQRWh%#GbzRmFT&1&jEBWw0g4z+(iJ)-=O(LkP(guR{1S!9M<iA<EVFZoJ^iuL{
z8bOOPrJ0cCf{e75LRv*|BsJFvD&3AzW}67wM$j&T_7QZ5pnC*8#N1J^n_#C1Itw9x
z7a?6E_;#=LtERk?*?UHCTm=0i=oK+Zm8t2d2#%&q{jb_Pf<D5J5$r2?tYAMu3L)nJ
z2`65<92mhMQ3eYR5gaNwOpy8<FJ!pjhzLfO>7#^{{=q*{_~-~uis0l3#zZhylrsd!
z(W()gD%%#Dn$;%7@;5$$)5Ji0f{=-VlLSwXU~;*%RAq`Tsrj@B&Jw;{@azaK5;9%z
z96`#QA!KF*vxJ;0IJ;arCxY{YpI@fTjbL6GpD*Ns2rd+|piF1$3(NS$5iBa>izB$C
zj9(hTWx_8nQ?3xQB!Z<vt`xkgTza*TWf5Fcru^8^ipXnGL0fbu0yhG$%tK9L!s*s{
z1c?az2$B&55&RIrj}fFI2qSnlg6G7R7Q8=#Oa$2oauMVsxGjR)BPc{rj9_g9H%71`
zf|U_m7r`3w@43WU6~VO%Ihu5JxkbJKe!cJ;1X;weFS+Ta2yTvGz3A&AW<t3|I0w;x
zcy1M)U0}sKBG?eYz2do3@NU7o1WP>kD0oWvMn)I+e<+ud_&@{?>hhro9*y9!2p*2$
z5mBhpCJo7wZkr=`Jc6fG^h5;AT2DsITiIJ8*ec?ox~czDi&#p2TEuM;JR^h@E?fzp
zkKly}J{9rB2wsZdqX<5Z;N=Kj5%HY}UKPR)ZjazK8Sr&cs0mH+Mg(t0@KywG%M@h$
zYO}Ehg%iFj&i5jCU&sd$d{~zDb0fn*31ju7=o4B)$c_khmU)bj2tL>47ZH3T<jV-Y
zieQ)UQY&AV`Ki*k5$x6_7Z~4_-Ti%;`KJheW++C{F^XRz_%(uxD5^*CTLiyHa4-TZ
zia#RQBW3<lt-XSO3i1t~eM0sNmRjexY=1{^K$L$3OWj8lheXXC!C`_`1gk|+Rmh=&
zC2t!3h;?|><iI0DCxt~dqNo`~(<qunQ5i+8DC$K~UktUQs1rq9;jCMdP=XDjXc$Ek
z6*Y=7W&K;)_<tn-hrhXqM@G>iik8CJZmTlq!dI-;QM8Gottjov^c4?T?S&Jes7}I<
ziK1^5oulXyMb{|0iP(b*C=$At>;CeB)ia7-Q5+>oZ^5GlOKZYD|AQYZe2`#2!Q-On
zUzRyQl!1aJO$G~Zrs-x_6vs!+kv-o;F<kUBqnH}S2ob6F$S6jMPW*%@PK;u-E>DW$
zR3RrvF-FK(wpivIC#2LV!tuI1tz0@Giiu@>QWU3`@ySBYh+>M6lHaFAaaI&tqSzY6
z*-=c7A{j*x#W}POUykA?f>F$f;$wdQE6S`W&W&Pr6mz1uNc8gr=kt<}f1~DxbZ!(}
zYR(g7PzQ_j3xr=7#pQe-n+@@6!3v8w*%n4|v1*ZRQ51`#=0zPo$L?lXmrBlMtfi)}
zh+=sZktmi#@g^USNamGM+|4%~qPRMWWz<cd)LlahRGN1AJF3EBFQSqVi^5i0-}3)o
zDdR@rNzQc3@KdF@E)#-2Bc#I6Q>wlqij_h_!L(q8Z-GiwPW{S9%?W@76&0hnOA1`c
zFTbL=R!u)1#p)=o6T?GMtcl|KDAq@DYZN!A(ObFHk7BJDZj6Ge-X!|XqOdPh`2827
zh=&Z)fSoP!-xkF^5`MchS;L7y%p0P(Q^;L{H2d9A^tOya?v+e-ZKI0ri{gGE4+xU}
zpb#?C)DK7Ti1;^^Ydxyc#{@S=F@La;$=?&A(78`apO>O|If|!5e43$EX>Ak!jNr3^
z&q?O<^4$xfyeL@G^A*LwJ5jtV;;T`-CWLLhuFh^(^*0z2LP&orinq%=L*@PVbh$H%
z_sjGTqWDnNKa!qw*~d|QqS75@9!B7&94Wf|T#&)c2>Bw4FLn8q;4Z<h1&22@cK9}m
z-BEm}G0w3+#>4l*e~9A8D1M6K=O|XVSn1-ID1MEipM&EZ{1(OUQJi68ijCTQ^OO0|
zMoSxeqSzb7pHb}NG-0ELjr~#l#l&u-ijBXcIH16Tjei&w71qNwElUy(Mp0O9?Wk^4
zVgz2+-lEv5HV(CMn2p29U(=$ItJ$F19Emi-5jLK$ZdKU0uBMgI@FblvT+>FSjRrOv
z+Nee0HtO1_XQPgdV=FBF^ImtckwApe@}zCmmjWEfqxjc=jm9>b+Gu9u6>b4%gTJFI
zEJiQ&p;papw9_b~k|egWaiopoZ1lHHN@;DQi;b=}+Sq7IP8;oQbhOb)rMm`MpY*pn
z*mzunm;6<SSe<RWSJT8T<#)5u-9{f9$Jpp$qo<9d*t$A+N`=*Xi`C0E38xpIc=I@8
zj@;!|ZyOvzrmki6H3ql(*(MntYnwDk4Vx>s46rfK#)&pY+ZbeHu#FL7qYguC46|{(
zjq7V#Lv54pLjGCV-<qn5!)=qMXzh_UM%g%l_UA?fpBgt&XBM4g<76AB+88f^V{DAI
zG0q0{ArCb?#l|VhS9i+hr`ecbW0H;2ZA`TB;$VwHnpRrWmc4j;5PlwLO}0%YDJ6|F
zZA_)3ZM<M(nvJt;tgx|?dfJ$7<0>0h+c?L@3>)X!IN!!h8?$W8wlT*>s=sx6P3v5B
zjlvllyks|n{w9{@+L&kKLK_Qg%(rm?^{lk+9Aq({(<~bVH&?eVva!&{#j+>uP@~c?
zEV8lK#zXy$7cQ|)7QIyPGQrCQuMk`!NQR|CuC&p7kU3p+8C_|^w~@55+(yKPXCr1K
zYNL90%VkvbH&JIRI32-tnrk?yX|A|!rl*8#&P$rQ1wZ~`mu+NhWNkB=LK_@Vxh7^(
zNDHT_Ul?rVY!qoOZU-u{1wpE0$)OB@RW`1*aj%VyHdZtIY}{;P9V3mFv~i=2n`|>#
zY@BZ~x^A$|1h>{Uj-$e_%jQgFEkCwyv9aF91{-(UxYfpOHilLji&3B3Nnz$!(<$2!
ztJ!$JrgazXQ)%5}<8Cp~S>3mo(Xogte;fDPc+AFT8xPoc(8eP+HZhzktgSVzhv+^{
z(+{h6-}blY%}3>W_LR|eD7SsK@q~?SHlDGu#l}_}PuUoz;ryfwLjB1`7ZZ6}y3w}J
z+IUWZ%0Wk+SM)al!0hp&jhAe|!66P_X1ZX|+SqO5RU5C__|V2jHeR=}-NrjM-nH=t
z4W&HrwvD$m(AX(<oKB&J%r+GM9tQ=#KNZ{i8hR|croTm}knLj|pV;`^#urK&pVYK=
z*x0E^_|(Q{szpwUqDhH-Y2zy!U#l(pivhDs-DFhI-SomY%ypF(mHE!b_cr!1UEBD<
z#*g%-jb9j(JB*y4git-!`jtBLxArKUezWnrglGF(e~5?L(pjvs*T$a;464nh|6=mD
zanR;F4JMP5ct9zF-Tz09W*?~!BcC3>X|PqrK~)D$95i)ssDo+_>Nu$D;4lY=JE-BH
zrh_9KR5&KLY~E>AcTCcwdX&r`vq~kaGyglN?U<25hq5h(J=NnHte%7V4jMRUNXeXB
z2AOon#NNn3W5;9zCJM$gQxM~UooeQwxr1&Fx;tp$prwPh4%(4eX|-~2q+^mN<ufW;
zJ7#3Hall^Czr;Cfw0F?SL1)Lrd<O>|9h2YqqpDrRPlU5fSH~n<{#ew*K~D$09rR(>
z9Fr#*e(WP#Im*G&j+t)Awws?CQIiU5Ob6>&2Yn@BW~H$(qqH^O|8y{bHgr+V#Xtvx
z9Nb9V91M0a#KA%b7dsg0V3>n5987U=yo2Em#?i12MmQMhV6=mi9MH(495Yp&C{v%{
zfZEcM>@ri$T<)u^S?OdcFvh`H2Q(?C5-NPEgYga~IG8B4Pm>(#&!J5{M-Q=>G$uJX
zT>>d*vTVXGGcwPl90#)~*1<FfXE~Ve;2auL>Gy2L$q+NAvlel-#Tb~OR%S{_MWr>{
z!5jy39n6!zXv6ay{GmDbe8;42Ha*|L1rFRwGjOQVh4R!z4j7gT6hG`Kh4XTegT)RK
z4txifIJlHN4wgH(jBE~;I=E8KrSexWM3wHANU@i;n|X&_zDk!@3sUW6j#&?I$V41O
z9oP;W6)`)}zb`1Ax(?z}&r{dv*_bpOB`-6%B^?9~RybJcAmt!*ka3Wu%`2=lDgCXE
zolVx_6wFZJFXtdHQ3Z|yW!L4ER#En+K~_1q*1>fS)-ckP45`U#wa5wjdJ42HhAS<3
zgM;riYp-=c;WXXN4%RvNz`=(OZgH@l7IyFy>pHm2!2=E+ba1<aI~?5O;9j=g*xKOW
zE;daGj#+*%eLXYC2xsunKAiQa@J6as)4Gq4n@I2!NQD{Q!4@BK@UVkN9X!SWtF*}W
zh=Wb?9feSH4*%htHQ1w?))rNK+`$tJ`wElXEUCS<-1O59wmEo-Dc!*{4xV-JoP*~b
zld;Lq<`z_1iv#NgcBH0>&llMc*D4xuuQ+&>oDSZ0@S20y9W%weAv<qpA2khe@yU6U
zD!r-LV?}1pcf|9agLkC{*A?tIfA4D$vEoM#K6dbfgC8Ay;$Vk^T@Jo>u+zb(4!&^k
zrINt;mh~AULAmsExrqvY#Zq>^x`||}$}WGy@m^u=cJQ5p19hx#nbx+L^u_e}z52zO
zlyeX{e{%4%gTKk<;1>tKI@sf2ubTLcgGd94@$<X-!aP7BG&SL$4)!_NuSli~{!-H5
zT*K(1N^I^Q2M0NIx~SrUK~D8JUt2DiGvS(rI@zcs6Kqx2^oUNUK8LwD+{Jv?Jf=9p
zMTLvOE{3?M?xKc^b}rhxsOh58MN=2eT-0(=+eHHx4PDeBvC^vNn!Hq(bp9pX&9uuz
zRNpm;m!(`5HgZjBZS0!l#;!GSjUC8*9+h#?!bNKrZCvnXmZdFSv~uz6cI!yj_?MiF
zNiw%}&FsVQn8e(x>K$Bkba9l6qg`}z(b+{e7u{WRm%;lWMnxCb#CBIo<|EdcRu30F
z*;Cux0@EhFL}!bX|I~J?w~Ib5`nfpHHFMB0F8aEl%V=Km9P1i{3qocgj%$wn{;rt>
z2XG2-O-^HHSu{v3l7Fa+VJ=R0G1<lOE{3}p>tdXX5iUl$813RD7o%L0{ArohgRK*!
z%!z_bK{V9KG8*R~4prJ=jO-cV8qCG1E+)E|<bpOCFSAc@ahhwA8x7Tp2~$fEu1PpN
z8F)1887`){nCW7ci!<pjy1>PB7t_=VyTeYggJ(&94#VRr%{u=a+P1>tie-je%nqLG
zVz!I(UCd>5o@-EPQTaJkTXNVsjsM0V%yZ3jz^>7Kw8jN4E_AVgJPbTV+Cmo>yIAfb
z!uWKt*u|ADu5xjSYnC6EyST!|rRv&cuE~wG35C<hH1!fGxzshSFcKKIXI5HQi}@PY
ztOu6KR_s30I87IIVY~2L#9VWK;kej5$Z{FOn%bCSDLL*U!9LPf2M_v+PgYFI9b82-
z8rgKpMd%{!BI6?GA}={vdfEDSA;G4ZdAP`-*$Xa;>ghO5SX6SAE_VrD>teNw>s+jH
zalMNNTs-Ka7n8q>n_S#1e65Qch47A^MeAJL;^IyY3K#3yO&7PhxSa!5lM$W%(ID#%
z*Q{!ovUsaV%Wse!=%c$`+~Z=Si~C%2|3Zf{sP2^+8N+10pV}%LGr(wphg>}D;$;pc
z7mv8u<l<=;+gv>A;xQLnTx?}#sId5Otos&gv#j*E;1g<*oqdv{n3EJoXlG+Ox`|WI
z8ou_=q0Q_>JzYFU{cD=MO-L6!FSD~2*IK-7d5K1DV(1+5uex~6#fL6Fa`C#0?JnNs
z*m3cOi#J`o?Si?H!Nx(&-&=}R`hvsZ9YqDR6Ak#j3qHW1K>Gay(b>?)E<SPbnTyZm
zN7`zKy2i1v)5WLi6h%=irz&dlh2oq&`ck9*D=MJgeJ!_s!!hV$w~OzXDm^sklOGp9
zFiJgC^YEjKpIq#vwl03=!ygyFbC@uSc3M>IS4n2n{idYKCa6D0-yWumAx3S+?LHU#
zUBJU39{zIiw~K#V98@A=#RD=R{ldEZah7NHvpkccdC75F#WOjX!?UUoc88aTc{tod
z9S?Oq9O0qDLro8r9;$oh(MJu><Xg5*4>F>-;;QAD1q|zQX;<4bW~Y2U!Kmk<zK2F0
z8ha)mHt<X+HYBbXF6lt?lD~;(mJLl+m%&Ecw(!uBVm<Ws(8|M+9y)pG?4h-XHXho0
z=-`=$ByGv|vDMBqBbUn1N6ZYAz?{RGuA^tNJ*VR?9=dwy?xBZgqLeoaym9E}nX%7W
zjQ^e<dU<A0)1(w~lxHRga&qSC<KY+&Lp==h(AUGU9{PJ2Kz=>4?&sk+4~%5mjls-X
z13e5<M}~M9EUU7oG#7uo10oy4<9I6X;RFvSdKlpuV=^GAGm(*=nbAf`bBY};O-}M~
zGW)Jp*duzjLJtQxtj2m~njYuj6d}Y<6*At#X&xqcm`Hzl@I53wobF+=hXqv6!x<i?
zc$h^EJ)G%bs)w^YoGnlF;#;7!w(jHD)^yL@qRwDX)sb^N^W1|roavd=$}W?0wud<$
z=6aaNAg{E}lS7&4=-l%?lS#N9WAEn6Ym|S1XQuuO*{+tpRC}R^i#=TJVVQ?T9u|AJ
z+`|<fE-5u9gI_9GvL}Ot!kKB8c(~HTRUVdlW_iF;szkR^H%1+;eT|3Z9$fZ9T17lW
zJ=mUcG>yp_f&7kV=1Sf*6K5R8=<W(D;UP{n_(zyJ&NqbFV&Ea=VV#Ft=yz`Z;9(V=
z<ssuCOI6uf#TXr(lPmLz0bWv>6^gNyo_X#>3UA&SoRqnmig~!f!&(n(JTqU=hP<n~
zUV%iraa}}1QKcI_+~k?3jyFr})7!0*HP+J?>^`mP;WiJqd*B>#hfGIP(0x^1Y>;9!
z{+)^tDsYd7dpQco>|rAfVp|V*Cb!UZ_euW!o|#W+s0U?v8i#5;;$f4AN6DZk8<bBI
z@s5BUc}%r92A}Y-g{F()ikOMdtsY+W@S56v(!*08o~AoAQ?qoNhiBMpT|VpKIS<c!
zSl`ilfsW{4Z4v!N)qP3uWx-b%%v=QWX_$xY%%vPhhgxrVcvD9EfyVdnwui4heB<FA
z>Ce7@>ET`4-^2T&d?xsT;D<8oN0h**5akm!v_tq#!A}LbT%;)eKKJm2D6{~r^p)^k
zf-L0?`?tcs7u@aPJH=jY-Nn<Gti`)>B5f+IpFH!o?9YO~c=*-BZ^BQB{rkrL@4EcM
z!yX}f1^@K0&%=Hue_iq|oxeRC;NXp+OAP;bILHhcLo0eA2E@=jh88g#5<`_3>cmht
zhN_ZZEr!ElI5cMd80D`6Px^?Ne}1dSP$PyTV&E=z6{3(xhMF-{#>}fSw<N4ul2BWv
zrMm10i^y3ohK4aTilM$r8~hJXW8qB%OZ-hGu-X4mO0Pfh4{kCX8AIzBI;pKTf|TDb
zhMJ6lm^rtCJp8p+^$sy~6i?|tO>&lyt}*nB;kX#OskD0xJ!0soDt!d0f3Fyhis9%O
zdY4-%b&3-BJ0^y{((~9-Lz3J-h5;g;7{fr(N2u-~*>i9VLt+>j!>|~Jmt~fu9WQ3$
zC96{Zkui)C&k2HTnnc3UF`OjI$uW$HVQg6ri^lyAergQkV>nHe^8_cvFj2@P!5J}}
z9>ZkeXT)%p5H>MI$eA%r6*5h5!=a}2v&%fwg`5)uUz8=CznL-267gKY*@ANfOFZWb
zC+A%HsEp5#;R4|o3N8@5s9d^G$i;$-VpuHX62VIaDebZtN>Q;ShNX;(5S>F@8N*c!
zwgeg{aJ4w!jNvUI%LK0xTpmLthNy5mh7~ca6z;^}3h`oy#Sj-x*RZ*Sa6g7*41w^J
zU`YqQrWMAJ7KO~27_!21WlBDVg7BhXsn)6(u8m=n0$_Cv*Tt|QhC3BS6tX6U4_8^&
ztMmrdS}S;?AQ^5Fa&rvpgxn&yUhq~y^4u1~?J?Y;OE$`PLP~Fx-6hHcG2C6|yeEcx
zg>MwRuS~zcY-dV)P{fA>9~OKhW?n$LiM#jf^062;$MCrDXJdFy$P+Pa5wcZ~a-NLg
zDdA5GZWDY)uw-rWJg>`_Vt7FaDKBa$5qVjZR|H=bd`<9mK{9L?@`hkZ;M>9vP2imv
z-i_fsc8Yl~VJ4;zXy+L6aTMbCD29*4`CSa3#IPfVZ)4aU!_F8!jp54}zG7(%pNr><
zvOXMurB;aSis9=Rz7Yd8`47E>|A&+G@5S?j;E#eo#qe_szr^rs4D;hA=l>SN?=kd`
zV?Z2##IPrZ&T({!V{Z(9GF``UcpUpw_W)CU4Eu$%;$JcRExe=vDF<~~H4ZBdNcbUf
zR1v~bDn>Z9x^<{1)yi~MKSFrjIO@ew5l8hnYLrWB#Zj}2SH|&rlYd_huN_C7GM%rs
z){mn>94+H$6-UD|y;&TM;%FR4lQN}g9K)L!HA>1f7rjNfl%F9S8Aoefb`WeM*iNu*
z{NH!x+v~FQJ}pIcjH8n%#7o~qbk$`~!ESMMFPHX+|NBOCuQ-kp@#r{?DVO#Z(npY1
z>Kn(gakIg7KT(d0qx6+TX|@^|$DlY)j$=$5gT*jhkU9(zGE{I_9LJaGwDSnzBjXqq
z#|dTn=r~Rk{vSV{q|4H&Lu2EZ7ROm}j1%#cI8KdYyzq%}OcHWh9211F^^#dm*X5aU
zOpfCWvdQ&RMC88ow<@bo)g>LuT4%>GTbI-0I46!7!e<Gxbf%D!<a6UZCcsqTZ%!QN
z@lvI81?R=hJ`6Nk$q^Tbcwrn1;<zY|g>g8dTpY)uI4+Ch@;DZYLTQ%@xg`GI?~Eww
zia3_Uu`G^j;#ew%tIGUW3TaT?D08*ELwtF;G%6$_NSE0{N?mZ{@N^lABO@dpM?#1n
zM-WFUj-)Ord5>-6hq_FcElEmAR95sHjn>St72{YDHw&uw%A70XSQW>$x_l^(hvQhS
zD%T0FiR1b>ZV<jfkV4kRabp}e>GI|{ZY|T-3AsgZz2K0DY4kSXx5sgZ5K_38%bmjS
zDpT%`<DNL~jbo!I_Y2-9ctay2gue&kcu<rTx+H~R^N1+KH^uR&@W<lVEadSxUJ&wx
z;FdVH#_^=^ZGuk;J}p?Qp=srrIG)wzb8$Q`gv8kjPJWQ}q9`v3z8uFZal9JGYjM0S
z%Ik4#kK@g9tv7^h{qEm%w1m%pnD-X`+n0CZcvlQ1H@zRn2XTDJ<WHUikif@rd=ke&
z@h}(dh+}_Q^3FIuB_7A;Wy<eyd=bZ&aeNgwucrSj`mQ*>j^i8Q-^KBL9N)&VJ8oXA
zZKares)14Fhd6$W<0n<*ckWyH%3^hk-@UT*7u6lkKZ1q)#%!sIf9P@#r+_&A6uwWe
zR9b?6i9-2*$8jKze{}i3Q%`BgACfRrOqIlc-^nl0lQpbrDmqM%JclQ6L>aG0pt|rH
zWlGHiDuve)tSwllTv|7Qdcy0MDGd^6D7=bdsYwD&6IhbO(xlnDxLE>6C2(}Y95>lK
zfwNm$EfQ#%K&yn=Ae6^l9hpGu1ilyxo)H}3KGg{{;rc&;b_uhuX?wvAf*l1r33e7F
zLze`)mho;0bQj*EOzA147yGC)iFzl{CxHiiJm}+?1o|d$osTuX$^6GAa3Eo}5AB!0
zanvn=0SU}aU|s?P6Bv}h$q9@}U~mFM5*U%d$OMKaFf4)N6BwQ_k-%-4xs~NJhnRgP
zJGHmW(bC6RqY^kFffExL&2DzFCib%`cv2pRp-zf9DS>1&vwbd4QW%@SxCAC9Fo_;a
z;M4?8OJG6*dv&VRcr`In`@3?3XdW)iy=r+z;pquXPT-6Lrm&&&t@nCa+ozjjpv}pT
z33C$A`3dvF_S6KX(M{Z}kI(<<g)%-}$T<njNEm0$OkkEM=O!>m6!Ooe=55WIkiYX1
zX3JI{++b_l`S}T4kibg`yqv&=2`orpMFJ}mxF~^z3B(eJm-rJ{p1|fR)*`uMu_Uv(
zOA@$L_+<%PF64>?t`xGQ%(GMyc+TThyah;r$TG%KBkLOB6v7`bIkF<`FaHP-v=eZI
zxPqj63H;K~B9chJPr#mP4ueioe|_*$Odv>@vn=^b(eIoE5=fULJd;3Hcup`cSSXkB
zMwN+z!)jFm*HYUAZcbn|`(D)?8A+#KC*Q4MobWFy!5aj5xmMl0QIIDM@eqM^6wA%<
ztME45Y_YpOfm;)}ErHu<x&$6e;En_~B=E3emEn440vpTtT|({_yhrff1i1Ys+3ri=
zen!5C)9M?_g9$vOOEQ!wk4R4zZBi|UH1W*|JS(=x6L=zlE#hI(QweM>^FLXZL;BMq
zZWDZlQCHs_c1bzUiRXF27ZP}}T$c>5B=BkiA2CrU@LB?|C-62G_6cm41>WLi6YC8{
z&YKDbM&Pi4Sjt(9NA4bDy~}>JFvH<JrUL#2kiZ8Cd?@+Uhpyp|$R`QxNZ?P#gRH$X
zfv>7sldD*t(%=bvF8-hR1`cykx$c+bNnlq3UyJg60zV}1jqq=!$!@{#1bMm;75h=8
zzX|>%_%qW5H-8iSRglV%^1Dj^5Zse63kgmcggixkQ5TDuZ9gqA&zu&-@%xud@wXs*
z`cDD}d9&jKK6?7-<>L?^ReUt}(ZWYnABXy==HoCQJoRb(xn@7!hTW{geH`IqN?Rkm
z!bf!<jeQ;a;v2hh)8mFdYEtG9RQjmpqqc93W~ir9R;lBoZW$+?RqFd_APR9(8u=z-
zcW`ybL)#^p25IV}SsCX>#4UZa@^Pe(*1p-Hmp`*1d|QjhJGSx7S&%(^wDrxXZ0DP#
z%3V9!`{3vH9ei{YrIT--<aZYABG^^1n_zdro9mcIaGUtT1E2i+INHZBAIJOX?W2#6
z0X_yY|NH3cqrYzsN8n6-tdAdbiW3{{r-qL6QSvF1Gn339AJ2C-dAnr5!M-^lV2I#Q
z-)#QR%i-*lkE?ww^D)xLC?DJQTa$g0flr|Ec`M}OL|JLHAkB4>kCTOu5gaQxu3Y+j
zRh;UZd2qboX@V1cO!P5H`00Yhea5FHc!sPuh5hm|)yFg+7x`G|<18O%`<UlrzK`iX
z&hatJ$GK`~hL4%$7XQ)lF(o+L2TzkZPjHTp5|KKe?_+M6zjWNp1wJnHu|UKU<$vMD
z3?v^*d@S;@*vBP4F7<JFS;A%ITBRyXq(qjMORw^AWto9Z^T$%g$u&L_jG``PXfO8>
z5l^&S%NFAJaD90GzdNh5Zp=r#%+tAw*>T!usVIS9%17uUUFKQgBO^TPBj+P8yihLX
zX-&m4&QZCtjIZ)>t&i6=v#%DB_<&B}R@h@|S=amKOpP0Sto3mthlY=veXRF!t8XT5
zp5?mE$1T3u;GKJ7^W4?_$5^-dxZTIyKJM{xhmQ?D?(}h&k9C#i^i1|*+PUB%s>B%v
zjOTlOZ1i!TkNX+?Rm~xWEP6%EWFXGtj5qNwV1>%8Bp&whh>uN-B_H2&AozI9$7Ua&
z`}o4g<3677@v@Iss6cINi;spp&3wMK)yI=Qp3-2U7q<C$x{UKcoM(hTEBIWQ{=ASE
ze7q>+CBY3{jT5h`iC2Am<l|$7^lLPrkL^A<HsA2^j*oYJyy@dDQMir#+vIF$_LC>W
zdp_P5{X-E+`Jl{3oa;=oeIl_uZ>6u!rre>+oy<Ah@L%vVK@QR{eSGEPTOYf9@bKAm
zOKTVH(An7bYo)Sp=(r)~yg8bbr+5tG5ilC#3z+}uTp#0-I3<anef+|)<Ks64>djTm
zL4nh|q8`Ir+m-)LIqj@JeC+YD*T<he_AxId(Km_xKK^0`PNGiIq`|+L(uEx0F!XUy
zb~{8AmRdrP{O@@dRg$P$F0BQtS`vrp@^HbLNgR<xh4AWvH3XT8OD9lN>avy~<x@i4
zB<dy6F^Nt|)GyPUC($5@hPrH&L=z#61xs?8Cef^XS)#N^qGb}Tk~lJnwn?;0nlp4b
z5w}jFP14NByyWlos#bdybr3A^u#~^fNpz9Sqmt+<gc|k`(oL{?^4~K-dg`*5V5xO-
z9<9sXf_=)I$0pHFlo3fBCuE3Vf58EQ0|f^qF}PfdW}(2Lq7xaG#PPz1mnmczDST8C
zCnRxVnSOE-qs#b7LQ0~>l!#^drzSBziHS)}N`fcM?wy6xl9-UhEPi;ULxmX0-1q+U
zq?sTl3s%u-CTAouC25k(nSxUVrwN`Vc(x!JrYCVu8K05F%rgEW|Cml<b`o=vI4_As
zNi0s{d`3|(Yhe->Cowl^j*Mr!^OBgK#05!QNE`C6&!ibp3xxCNI#QS<NqM4*_5MDq
zc~z6TFG=FkBrZ$ha_P(?qL?0e0vgu<t@>G4B+Yq7b@~4SKXa~XU75r_4u>SJO5*Ay
zmL+jb62B$!dlJi&h$OKtiCdD0vfU(ZO5$b))i86r$CT*slKcNNbh-XdB9=s)#++?t
zjYJYJ9b)-OB$MWJfFOxN62&A^x+EnOl1?I%L{@lCFrPGMEs>#y;0h7h&9y>S3a(0`
zdNb?VBv$M4Izd)hlf?DHZxH0udlFgqMrwY**op_!pHkmsW@i5NN!*&mFG>8G#BE93
zo-|9rCcUgXWVFWxxlGzX<MS>ciMx`xTlhUmJS5~^!Ht6Cxi5+P%lHG7CcH8JJxAl=
zBpwlEli;I*j|sBw<|Il-Y&?;~mL#?&@njO;%e+q|@pKX&C(Y9mj)HATyq3i4Njy`I
z@Mn{FE{W%pc!5Ghe1*mr@^YDn_e$65&^k(ZwJd6T5^p5&b`tL-@n)HG0!%)9OPBnr
z_uVr61NyGQdM}Ch%SB}4@53ZMD)W%x6X83O*qOwqNqm;X*GYVn#OI=a$rL2yizNPT
zXBv9&AFI^jF431&!?!|MRF!A;@lA4FeplA{ha`TaSiS<v{I4SO>9HP+5aBVJoP6oW
zU>N>LVowr#llYVTRV?Rt(_Eq^*3H1^Mi!Tvkt)_-dW4b-kPq-T(|Z!U_y30}G(f8W
z2a~V@AiyC38U$z<ph|$M0S*svM1VsBR10tz>((*{MU~b7#QEcbp&~%_0JQ_u2~Z<I
z%>b1FY6ak<2@dKKGi&kGutqwci^RGC>IJAD;ON>GPwpV);(gZe+D6Yt0U8Hr8lYK#
zCV@#uJZOxN8HT61H4n@}W$rwyMF2`>`r@c;%>RD_v<@&az@z|e0<;a#Kfr(h?E<t9
z&@aGo0e%~5*5@4pbPUW{9-RX85z;v@%k?gTT?M-db{Fg+NdBGydI>*D@Myu_<x)!E
z9m+8QZf|7u4RCB=-gF{`o@&w9^y0ukZ~-=uW(hDnzzB71Z~*phL{)QNHY6}NP(uR@
z3-C1G0t(C{h|>-pB;2^)8X17c-JTX;RDcr*>zPb=VqhH2-{=4*2|u|^8B;<6j1zK-
z;Hl-(@d0>W!-`aF0u6GUmF450X4dHe;sFu?CI>hpz?1-IQo{ht0!$4sEx^(MR|YsM
zz@1gCB`np!h-U|w9^jk+GXl&EOvLgPpjiRV4RAq#3j@p!Fo!Mj4Ijbt1m_B#A0Si3
zV$nQZ(gI7XSTpNcdoM8m87&B~D8OPGQ>6<9FIE$!KOim<g)LqY;L-q>(fb#ghAtPK
zZ&?tpBMS5ODNK(%cc!*AzrJ-<V4lo4eDNm0@&M5Qc3=)8=75R>;0m0x25&_Nw6&Z7
z_fCQvn0bUNKu?aNzhd+<Uka*a`2msvf&i%iJQ}8ZC-A0~Q5ptFvv&cqfyuXAdovaD
z)ELG*&CXMh+zJ!|6sdEFwjovoSQ+5)08a#172w(cYXjUEV0D1&0;~yeeSj~tzU9&O
zT%vPma|quMfT!5c(9QBq>~(-!1Kh@865#k2xFx`PIsI2n1Z;QH0dvGWCR?`$;F^;+
z^(5XAU;}*`;I067GtvS)z){1&E4Yys5JF0(hjm{W=Od;E>DemQW1>7%rav6u5#gK4
zlt%+x)5gq7{B0Jo$M@Ej09ymRp2GGNo(%9*fCB;kVekjo7T~P_ZwGjWP6_Z*fR_V2
z7vT8-F9djz5!>Ec(aid$s>RjL!*#6ARZZ&nXE0s~@M?h9C^i7qWAE4^QzB0xe50zx
zhkM(VH{OsF-we!&>g@hI0p1PpU4ZZD!2s_E_$I)&0X_)up{)0n!s(;H9LrmakD5jN
zL~w`TPQgzFIjlYt@;Ut_<jYd24n$+=E=l`Z<DJpYDB2yE6TY~xd`=1ThX6kY_=|~}
zX|Qw?UCa6@z|VnMiTx7bS7tK~)vD&n$sQ(cJ^~8xhmg~InY)R-!N1R8{uFVa;C{iq
z{j4E<%|Ws3IG>pu47e!<hNmzh1*C9D3cXY4lR}jgs-|#g3e{5Plw<}Qms^~^4<j?*
z{7Iok3WukR_m2>zLXZz0Sz0rN$`m-<x~5Poh1w|-OJ7v6>ZDLNh4v|QNTFT|^;2k(
zLdz5yq|h*B9+)>xnWub>gf|u}Jx*+rGS41MPyd>Ur@1IJCTq14XB)vI1zVR(+onv0
zY$qZ)DWRh%Bz7wE5brEv7eVq++iodzm)gX8q|mdB_e$ZY6pq&AQ&p_eIcvwH&^Lu+
zNlclu!gv2;@uXK;hLVp<VQ32JTE;B>Qy5T|Gcbig!UqcuDbp!%7!Aw(FJ($I{>T(Y
zr7$CfnJJu*!ig!Iox*f_2NuUZ{|y<P!bvHdoH8@Wm=q>T8u78Bj7#C*U)CupGYy@Z
zGWmIY3a1Gn&jh+&&zvWz*6D(i1<w$iB6wyBQ-w^UPx<6O_21)VX`*qx%>X<ng}MFA
z$#D$hSt*>G!h#eoqVZGac9L0(*^+jcBRS^@o-a68aGv0N!3zX0Oo4xbP|1Z-o(<i~
z5aMbfg+(bWPJs#ek`(L|9O0Lya9IkMr*K6IOHx>x!j+6P&*Fb)<RoO@uS#KA3fHLn
zSJQ^d>ZC7coJ+_rx?kWk;b_XdcF2lu3SJ5~OQl!}@f4CN1SupWgmp`gv;35K#>LB2
z3SkP@i$9%0CWT@OD^kd+xx66T%?Wvj(`5=9Mq;hrnqHa0suWhIa9s-5ilP4j>-;l~
zp5u9{X$NcC;aF3a;4!PKm9;6{C}fJ{+$08?Yn_O<2(B;JnmH0f`2TMTx2Ny{lRsM*
za%T$nr|^LAy9DnRyhrff6gEoEeS)RaS07Z-6De#F@{r)eDLj(GCgG2!uvy4s9QAB8
zVxCJsE=r=YIp&qWt-5@Mvw)DN1fN#?ZxiI%)*MRDrtn+}&#Uxh!50KyOyMOuNIYcA
z@bQ%Bucq+Y|EIr^!ka1VP2tZJ-b&%^6n>%0Qg|nYcT;#Th4)kD4(PL5=3)MW`>hXB
z_%MYZ6np&l>LV%hSqdMg@JR|gQsy8(8u`-{b~2B(u@>@h=PD)uxI4h-DSVN_mnrkt
z<Trv}3G#B6kgqAHp*g|uTV3uJ{7&$DK|W|=>5poiqvj_i*q;S?q~mWX{7wZ@*po7=
zi_iC4m2ItG=bBYLr;Mp>EIt6-m%@H#*ANXu{FTDrDO7~09)kbq9bo8IF|&YK!>GA~
zf>vl0hTtI~s)VQ-n%i&^4-HXG^ut0NA%w)kg^+=qysQzTCixGs`n0zyLvwq(R8JUc
zg{U2(PKdgpxw)$!qF!h+GxHk{<0j<o`HE|-Ax*7DAsUBh8lqW<CLxX)Xa09!fBBe#
z1HXBQCC8XPF05s>2+jYDEkm>lO=deXL~9|$nQEBRh_nmQK17EQ9a-ANN;WhPMY-Ul
z#rOpE@P5`0GtebO*AP#H*b<^!i0&cMAu=I)gy<P!erR6i?-k;x5JN)@3vqO4-umWS
zzI@U8A|fIBi07CPeM1}@nw5Wl@$?fso3lV@K2Ii{zX2fzh8Pr@uNQ0UrTxJnhN#x}
z`Vipw5W_>9C7B~a^CmnM7*7N8{m&4iLYxrd#L&ElJXZ2Y3$Eky{}3mK7^5nDdyOxO
zvuUb2F2pI~`Ih-VG#_z{;+=&k69gxQm=xml5R*ep73B;;YI|mAUWA(xnorNDz+L)I
zgu72nqmL>re%Wz$i0L8XmDV{@cwUGZLS}}T#kNAs4$T|s=ZBaRntxl)Q%@<GA5ajM
zKJl0vnwRr=`7`$);QRj}E)21NoD#K+#@EII3qxEi%AydLhInX@wOE&|cu9zB`R1pG
z%cKlnnZ7*46)Ig4VkzJM3~`kdxLTH+Jlfb{OlR|D6F=jkg|7**T>Oy`QO2+=;8P8L
z4jjS_;Yss&Xg&>Ki!tgv$Y`4oomS$949O5dh?L~8i2IF%wCd=8KYPiB$f@Yg5cv>=
z5G!>_X?*{m<}K=Sg&+fF6+0#2tL5$+LR_aJx_%8KN=2XOlc=@o)Qur-3UPC2KBl`h
z#BCwgsTcfw<`yxprv$~}?UHjxhz&w$0k+PqA!r90<Sr2@<n9pngy#Fldu6(f5^`UN
z`{{JcdVnqn@vtK5K{dp>kA&DHw#PXbLp&zWZWe_fN-!qbS$@pIuU$$ATihC=B8}>4
zJQ?Dt5Ko8LCjQ?;JR?m$4DnHjXG1&};`tCSgm_y)MF}s8;Z-^1CF$_8>b?@1&rcZe
zuZ4I$#P$$xi2jxg^`>-Yv@m8EoF-a$7oaNditW7+?}zw6%2PvrNx`ASFPO;uafnYs
z?BGD_Y`VaWFLs95ErFkg_)OJ5m$|+Q@r4v)D__d;i!>g0N$0Oad?RKKif=>nfeD-V
zt~5sYXLN`kLj0(){F8+IswRF8@rxpg8zV3bSmn16><B+``Xj_1N!}}1B@Jr+XNY|v
z_RBJVaV)2SH2w~8AT;0k8b>foS2rI39u!iW|K6(N(9Y(6Pj--rrK%{Dc4!(Lq1Dnj
zEN#Z};c1hUqWlmnZ6cgY6!O$aqh1>I)2Nw7r7G4EtV?Dg<g6ovUkvdB2VSyPgETs)
zO`;&)FbxizMrkxoqlubmD*o1KG!xRCp~A1g(rB4R>6@%pX&jk0X_?<X)7p%~Hfgj?
zqn$Xf;mbd1lVNBvHrGKiJEqYoZ9eg1izUswq|sF!Ax}3U-P7oiMo;0r(&#M>kCF~Y
zOCZ1B<i|LDL^&pnzG?Fr<L2t-b1i;ib6gtzX{!PbFJM3#1JgJ?i^*9GN@H*uCuT4@
zgCS`QO=CqGD<x!D8uQb*AdTbG7@o!m5ht-?+T_5IX^cwa1lARu{T-XeXyGTR`zNPO
zAdL|omXg0bbxInirZGN^)6ypI@e9fcX|p{D4L(s-h+NtIUtdg4<D4{Ru-BG#MjBJn
zCZDjaGt-!=wx*?VRvKrkmFbdC+cJ}L#Btowp3EmR#W_omQF?9~v(uPE<}}Vvo77E#
z{4sdg^jsNso*<bolw?PB7YM&7jfJ|rIE_ovxHOGLY0#}~Yq1!(&BA4J)3UUg85uv9
zr*TCZOVU^>`c;B$`8k*n8gpAs>*}<L7RKQ<3JKO)o<>9hiAU3BHv?Nm1%AMohL=W6
zeh<aN*5hd;((uzr%8ax_N(Ko8`OzgQj8(#P8kw~Dj-I{Frje7_d>RFb;uow%np7j2
z9$cl){+z}y)G&?JX<V1anl#=@<82jPpT>qX?o8tbT~d>^Y228`O=<JZ5#=x;+?>X`
zG;Wc{*Ng2o4ToDrVW8fg#vRg=`0kRPY1}Q&=LGqU(miS1o5sd8?o$V!P2>JF9!TTy
zG@eM~LAo-HO)}}j)KE(c>R+4ZKc>xBa$F=lDvLdq#^$v7Je=W2YcK-0q_LIGV$PQZ
zIA))e1SS@S1iSEb8r#z5`|f8XpV7rmQ8-=pd>SvvTrZ~04jb(LOKH5E#w%&ODrv8=
zVx`%V<y5^+`Fa}L|I-Se1IYMqGK$m?$2+I9chY!Qy?!r^&uPXq-q+;^il`6M_=xeD
zMw;*cq_Km!MVpfC6c2sM%TLqzOnu}fJI*Z>sMwcj>=qC4uY~N9CSNOnzoAvt5e6hJ
z!;0Uf@x2BDgXah7`C}SC$pW-$CAWZ(BWh((JA>cS_?^R3Vh@OCPr0qV9N=nbpCJ3V
zU&vo#_*;-4EdQfgEIpWpl`(0YKV)!-@G62;%k)EqRLkJ7GUf0Lju2iUSY5D&U`;_v
zs}%C|V5?3Bbu%VEoRC4i4C-glC4;URG{~S~2Ax#YNU%u;O*3emF|$l*`NWWDmN6N=
zV+PG7utf$fGsX+8GB`4W))}*B1*hXSVrxhH@a4~p8GwwO4Se`K*lM3ahm1*pj7&<V
zG|q0+r?VR6nxtC>-80~tio_lnlN<)CsHb2rLH6jV42~AgDD9mw!>vyS#|R<bmzoIg
zCwQD-f58EQ0|m)BD1$jo%+g{=#-#V584Q!y<1-j39^Ok1&tQaf<{VwRi5QhJUrd*_
zfMcdTDT9+UcqW5qGZ>S>*bKZ3Vi}Cf;FJvJWiVgWPt9l@p27GGPLlyAh%!+)w|$tD
z!Rcy!at3E+FjZzeLvTvQOt>5@({y=G1~W1^iyG>Z)5LUHo3kEm%bn9^%5k$Zn8l{4
zl0LVmr)cmwED|$sDCh!y&OA3`_I06EY4!`Gz!e!YFJG9!0$pAt{!24hsOIRJi>33T
z3>Ih17uKwMi73oJboyoDzg%M31o@Xp&e9C7%;2gFuFjY_Vj0aSfgEVdg*X|w8AQY!
z&A=AIFJ8H80h{0|k&s?sFXC$M5iul$`xzuN2r@`zz*Wty8H5?|+xZceRZw&33^EyW
zFOXGRIfW~?(a6g?+=8PhX)7{VnZYW?UIw>F@@m2B1R2S9>Yi~;2G?`o@cB<UmevZn
zQShb=Zq8sGl~I0UfDxhc>oaCm%u#<^2Di)mcVzH@oV6i?J2_Y~xLay$l#=&kaBs$Z
zq`=vbp5-UN{5tqP717T3D=Ij?DEYw*9%9UJ^G^*)-es`SO%nB}_{sB_E;ncJcm_|%
zM_V#@TBT;A9(C}^44x{-1Mhrk>TMabtqNOzE`#SYXq!d5EMCaq#SDJP;73(|DT8+;
zocu2fc}4Km3|^x<GT1KRZ_p7O6k5hppSR=}&O~oZ2s^?e4#Rgdc&{w&eYP$`eVD;V
zM3@}Z>rbUWZ~As*u#-m9oJE=3zTh)4d@lHf;Fp3NL0<{kCHS@AH-g^^?iTz`@Ox%C
z?Nazt20v#|CyTmS{E{)NyF;=j4gSjHFH`@X!5@k%%4bxwXio-vGx#%ueHrY}m>oQ<
zEdG+hoY2WY-~Fx21A_ku9u(w@1jzn-lgM3en02dUQ8kOX71p6yRLk;(IUJTnMHbbw
zI6P}MSXjZ0fGD3ke(2_%OQsrGljLhk&&sSxJGHWAkk-zcoXjml3Av;!ZCO@N%=NQq
zkVV5R8i}(NFZsu=@FrO_&6?dTn`KQHG|!qF7E0r%A1$ar*31#a`G+P$?#L`!tKBwP
zvl=OFnA1Ls4r+xhcFdv^@hpzYnzcHu(OE@Z1bNw&ZDq}@(Or-Y^^n><vt~NDp{8}T
zIEQ6%d=|a4=##}U((~9X`eo5qty2y^t2b*)uJ*IwtVB8evlt+25FeN|+Y@o+IXH_U
zlFy7cRC2g$0U3s?m9bf~SuQU}WHC~uqhy2=vN$n|(OI0N=Eh{r9CWhqA=)y6`yA5m
zykn(t#$|Cz7N=%Slya|t@oMh0EGCemE!rk#O<G_plO%zgL7kDs6cTf|Er&C+n3_e`
z9B931S)3)swzI`7re~4MBA>-MW$Rs*#f&UwW-&_?hQUQtSomzgIqJoES)9+Hl1lSr
zSWW?S@%*frXf6=EP;h}DlOE{{g<mW=i-a%En!5mMen}P#*GolYUoOw$iY%6hGby+<
ziz{WNtFo}gcC{{Pw`CMk#+M6;WDym@n>aE!iUe1Y=4BC+KrZkY*l~3yk%eEDK)<us
zK^7_bnl=x!NN15@$Z49(X3gxw?L^2{$fB4vgZjlRR%Fe6*1cJ5%wlC0t0ei_EN;$X
zT^6geCR$kKItF$Y*Gm~rsW)V?Hj5k8I#<^>ky#T2jldYbMXIu0s<EC9&EmGwc*)`p
zx>f07Ll$?^5n0@m#f946fTQd#j&#i(9EK0ov^WWJZwK1>zAWy~;(@GLBhe!dX7NxK
z&oUA$bNO%<k4bIfk7Thai$}9&Hso+%T@J?0Sv;=rdx9>Y%d*&_7}zR3X=-k|Lbj)~
z*p|gJ3iZ<3fC{i*3}*5?CwDy0SwP`Re#(DIIPLSYM7@&5tLiCj`<fi_x)fuEe}neV
z;;k&+7H5+j-pS(KEcVJl?`82mhlZB!ABf?*EWQ`=VHO`z6#JgVjx0XQ;`1zas)(E2
zv4fuqXW!HOyEBU~v)HXhsrFY{e4WKN8fd#@TW&b^t+E_-W-O7%QfB5}8KnFmQNL<v
z{Fud0irAky1!T=VDgDlk4QUE;{+7k>j2!Xr$$~pFv6T8#AC~@^#l9@|Ge2kXH#2t5
zWaa}|{KKp+oHrB)vp6J&+EgG1<jiwj1~%i9^10-zBDS8~l}Jdn9JmG`^I<u&_GYLY
zA$mm))pMvJobgsOXVN~G0klSC&J5~WY(hvK!McL=1X)^NNP`?23TafPHx_c(AggH(
z&2nfi`7Ls2nKOIUvM>C#60yCyaAeNR6s>b6p|#1OZO$adb`nAg_c`g1L&qFCsR|ck
ztWHC9&KdW0$r;<SN8NJho<oludgd@YhdDX?(BJBn!-+YJ&fzH4JvxWpIWv9q$zg~n
z$EeGFb2v7KemNW`nFDj^uhs`h6Dq?d2ul;wpd1G0Oj_nBqe+KK&afPQ8)O}y!|<Hh
z7Ij1pBXby)!+Fw;HZP5)6LRM6l|z_aI4OrQIgC~HlLfhb6Y1mFs4h>*;Z$imK4<38
zDLI^$!vywM#M1?7fk`>+l2s?mj8y52oXG>+`;nz*ifw8R({eZ~Xa12SkvvU3GsdUq
zaE{tyyEAf_nZqm^LEFSJ5uGb*u(Rih=b{`I3OS$CO1aj&9OetZpv1!mK|&Vf%s<Xl
z`(k!klq}`&$xjXr71mCbm*jA14wvP?N41ydur!A&bGRa>U8lJImuIQ%RXJRpLo{bn
zE)&bL9InY>dG6nhB}s|MiCkdNBfcJF*%HFKuA27bO<u-wi06>V!OtNnt7dWt)J;ZU
zI){|-P>}pQoQo02osJr7Bg&kl<#Q<HP|RV4VvL?$DLQR<eGaRHUz@|~oO!5tUCwO&
zLkF#q>uGuJvqa7ta#)+gjX87E#F>S8@}?Ya)^J#t!!0>*t0k`C*E0qhnDID=>!lp-
z;6TWuQyv>Qq8V~I{GP*Ia`D|c+#|J_)$h$=V-9cR@MaG8NuS54Ob++UhHU)-5g*Lq
zp&TAoqmM|)rm}=b<t*NGP~pcpd@8J`XmHJCPvo#gY+E&8pA=3<GsvILVOtK*NI32G
zN)FEoe@^guLGE+)f?9krhnIxBEXYMH+oCaF&Ed5iUgxkKVsSR17q;ij4q8<EtsLH#
zkRO@<b9gt0ugk5!moqE959HJLbLQ@YsqDiXK4NUBFO>6X4xgy49XafzDfHO0G{1kA
z!{<4Cp@BmkzRKZCjeXW?t*sh&>5`j6lJboj{WfQ|q}!dtcWU~327}T<X|R{}V*N?l
z{w(;5n*Nn3NbC7Oa@fQ4m`C$G_EHo}^Qe=@z8v=FaCqKy{4Z6knm76IZ#n3IAT|6)
z$U#9X59Cc+J4BF36(RE%nZ$T#-Z-(E;9+^Q(-#?N%p>w9-&W*}p{lF78iF<Rs1!m4
zYURy#UZu&UZXWgWs4sp-Y=gY<2!BoUCSx?zWuv@q0R)=}uF-fbakj{#RUSv?(NgNw
z*3D__Jlf>ZzAUXRo3^ZWy5uIe)PeEbL6^kotj>9K$>YU5Udp3u9^LX-&yM8LJ&zuF
zEXreX9zDsQ#|e3yn8#77+mA{LIXaKtLiz|ElSf}6$L39rrLSjJTHJ7tk7)YKVngy6
zkT=sSyD%`1L9z_jY=iUQc3zwpXuY9%49nyAy!pR%cpf8Vq7ivB)v}LF_@naw<}N-u
z7_H_e=W#|JC*^UnF303CPRQ82397}4kW=zFHIMPK)oFQ5kUq?E6Z4pq$LZo{O5_rn
zmf^p;)UXuHQ&cons-BrQTRpRAS{`RHkmM}7Z$=)|^JW%1CvUdOq^j)5%sghP*13{!
zaUQePmpOTpy3fnwd?EY;rR5-NZXWY=IbZOC5)bpgkOh<@WT7Az*p%>}*t<mX^LbpF
z$7Sqb9#@DG=CMS`)vC2rIF-LLZ#J2{DsP@jahNa5;~GZM$0l<wR|g}q5;>!J*sAMj
z)VPA4U`#MBm=NT!^7BXv56YBO9?V57qVRMc85x8Y&gPNJo89t>Grbh@DCV&ukCjq#
zP2Ma3r~rSf^0-z+4z$&IT$eZZ4vdy*8qU|}aYG(!^SCjOoAS6hk9B#>RW2eMZzM}M
zp0}t+T>94L8#sB~p2t&VnRn#zpt`>yk2~|Yi+;@GK9y3pqIMO&NBZ0=Asb~P?j1_`
z_vi6|d`hugN<E}nd`9$e9*?M}oAP)xkH=)g$MblC;UOW65DMQS9uCQ^3TYBKYM#{C
zS){%{Erx9p`%E6sQavvIX^_%i0C~KSH`_e27RS!ZdAuUwUyA?LJl+@bnj({yd_9lt
zdAvabij4}qm&aRqysg~wPTt(nkjTEgOV?=BFwA&I_JP#+P|`jU{FuxVyCaX!L}4=D
zna8JWw5G)>G!Dnz=Ne^S<jp4JTnT@b$F4lS&f}Xr{>tNT_F9sE<N&m+-Llems={3Q
zeI7rkwDgZT_5UevR?$D_@k<`R(jyElHN7v7Kl0d<$0)w`$zaw>i3?pS|EDC7&VKQa
zr~SGt?M=-PqRaz%{39U;1+4;5FsbH{0;(2pXaTfFm4aDUoXE6aFpr%nc20%GR~?8P
zQ9wljr>-!I#_9#sDB#xuek-760hI+TDPU;<wJ4;3(FK#?>l9G8fNljdP4Kdwh^^I1
zec=rXXefk^Zd5Q^2sSRDNdZj@XjU+@Sn~o}6wLHgda}{7U}keF*{WdlIZ}{ESM%|H
z8{uswjcv6npuHq?D4=5jog}2QC|v19w2@;MU3M*)d56icdjUOEy{F)@ghGxI+tHHH
zTa-Qp98)m=jI*J>1(TntsyPUzfa412U#g`$$^iuoq&*85T)-&F8KUlwESPzDXaU1$
zA3gtJcaAS$xOhegzFGU<_+;LueNHIg#DclmXK3*O^+_}r9|1`k)fiL2*aF5Ca0(q%
zFhl0D0>&52>T9MhPZK^ty_i_Qq=K1oPA_0`!A#{`^K%SRr85ecBHf6eS-@1`)5?^y
zh?Mc^1)NjHXB5EH$11Z5=2_yo1<WpB4n0x;|3GBds6Sgdzks;~%qw7i0gI(MU3ozP
z7Z<RofD1)gAU|Ftd|{b~i(xK($xMXsk^(MePnF*|?nq&TTrQ(sQ9$YKjw=heN}b(N
zz|{pTE8u|w9%M+%J7EFo0+tJp6wF?iQB}7Ka0+l$kz2UO3-E-;R7y|vlCKlG^aYcG
zfnZ9I|9p`xQ$V(WoSI<8d;x_5?$RYoiv_GL;Kl-0h_bSPRdkcuT0^Id#%fx!@b4e-
zOm_^h>kGI+PUksU9Dp2CH;Mn&0&WxiW`;)rw-mr_c-h2yN#?vsoc6z6mbtTlJ5;MS
z|0AP5dIm!4mF_F=F5sTBhW8e*kqmqURKWcO^T3C4_(+f=@u319F5rm*wiHYjeMG(9
ztU%hN>W`|4$K*clfc>}_$jRikRrsp~yru|wvVf;bMk`=j0ney9gZ2eRj)Xi{!1INF
z@6(wNIS;<b4i@lo0k5caDql)dTv_$ge?zY;;NO?n?SgLzzA5-t0dEVTN#7~p-7@~3
z5Z<*>;0J2@!va2H?qVytB%MvrAiNRYS-__Se5MZ4EI&x?&kOiM$d?)yUkTq;z}E$Q
zBMEHrJ5~8saJNF8Pg=fbY%DkbL@*U|u>7csKdH*k1^lARIfIR2zcVBXc(sVvir7=Y
zUM8X<`WEqL0sF+(xQPAg2$?I2_^W`w3pk*nszsBN|B+7*ipLTKf`=4Mnypease{uQ
zaWWrTL^YKXKTOEsMI0f7t6V-TtzI<QqejuhNzEcERaC2p`a(DoYZp<Q6G0Jmi>OyL
zW0stycy3TMnW16POmmHjCfjpIXu>8%G%cc;D)ug#xubazEhMmI5$%d-uZpdTI8r*3
zp|zOX6wU7aZG|&uc2H?&N$yxQ|KoR(G#Z(`>mqvBBDxjPy@(!?-&2rvxiF@Zy^1(W
z(vB{g&912}`@$HeHTp;tAA=lQL_aoE#1%yxS44m5c3BYvB<kcM#uPD7Z4D9}T*Qzf
zhDx`QMT{z9SP{n;&4UYSHN1!sDw@bGo%NKJlgkP0b%iy$XqMb37ERjc@ggS`&65z~
zOn_sh<TSN7PKupU#HmG$7iFT_JxxBEpi(~T<2szCo>au?DxEBNMiEnloLR(FA>`pS
z#2?4SSw*uJJzMHcFXEgcW=MxwYK5FLRfR4%SIF!l<_I~Dekn^kzlgcQ=Ls?%Sn&ek
z7nXSz5K$a16l6eNEM!p;i-lZLre9hFv^b<|xC~n&3G~j&B9<0$r4+lWh-=CkUM*x<
z(Ii+}dwCI&BBDjuMHJL8hmI&Bkd-_!CnPggL|m5VpDer)W5V%e^CVm8ZZ>CTFH)j}
zjI^TJ0-dj8Wh5b6G&5tah<p(|W|}xRWaDc9MYXtsVs*k@X~eB!*NRwO#C2+Sa}kdh
zu}1jyMch!t+9GabBxuy!#6Z&0I#qiAr-*fG@fNkXUhr1I+XQbHyyO4KdJpiQ%Kv}-
z^)Soco6Mwy?3si@qM;}hp+tlbS=o|`^nUHvdF@Gd(vXZYqNyS&A*3=&WR&0IejKOo
z=YRdL>s*iPaX;_pJ<dIz_c-@CN0<{X6D}7rV?{c+R^(x29#$zu-qeOXtakXCJaA}R
zn}>Chyd_-k_`a>)%^>ec@~)7F<tW)G{&60*=i!4qY+~kh?_2WB#`|XZvS-l-Zq36s
zIX_Yr6e{6j{nEnhkp512vA?ryIq%(-hfmZJc1xM{&g4GJ!{>P@?nVhWzF>=0fgH=j
zS9xZh#zH=jhrJShE&N8c_HCY7lJCniKgZdxRK8Q3)aT^z`#c=X!w=GDDnIAp$2=U8
z+D~~noM%=6JeNqXBY8NQXMVN7^C$MajzXHs;|hC%dC0@bJp8J#|4R5<9?r61<l*-`
zoRZ`;eKp#ip-Iu^KeO?tyh?FnClBZH@K>JM3u4KzC7)Mp7dQ&2Ra_L(s9qAWCjeKZ
z^N((pcY0MxxZI`}z>R!v<aeWh8`rsUy&DDH#xgUlLhfsJsj%Bvcv>5dfJGFls2j!H
z=9W2)<dlzuh0i}6m2{(&8#lSpz>U&UpjTCqGH#Sr*m81~7gkVO72T-hMrDTOrjXl=
zL2Qj28F}Qu#4OF~!WzOGgf-p9h}CkVwi|pZUB``jZrrE{>&lC}6ZNIZ1sC^WcniPL
z^1E@18_nHl;YLF@ZgpQfu+4VWh{|rWxy?iyD+W$lZgZRd+f>muQx0k3SZ*!d<_T#V
zH`+?Gm2R!II2UN`lx}A?y12~{*4~W{3d@*pcN;_6(TzLY=;X$o3c?(+%sCHdCYdPX
z@9M@~Zu50|2D#gfZf<l}5?t%`RFEEW-s3i>>`G}~daoP3+~}=Zql6PhR?YoxJmAKI
zZuD`ZkOzf5c*u>1-B{tqO5VF0{oI)E#sW7UapO@p#wgnUZVccpyD?nOfx3%fZu2X;
z$J}^ar7_5j!EQXEJ7u<qNQaGt&2p&Qtg6^apOi04fOYz`IIC==$Ozp9t=}_lGtnL8
z#%QI*+vhDmtJpZ?QGcu(<J@@8jqz?wP^h_XOr)~nVJef{m@Iidp8s@XisZ8-nJVP;
zb($N~#W|MEaN|YRg2uI(Zu5#9FFKj-Y}L*jw>fpddtpV)bDL!phv1joSjd*<hR2PU
zmBdovA|b=R;>N2Ef6a}>ZY*(|>CNk0GV1_5e}KXW-%vKVFwav{=LQb%(W`*V)zN%z
z_!T7JM$nBAlPlp$D3qnv7<MD#M%0ZM>%!&Yf$%O`(Z|_lRMc!pNjFk%q}^uPz{Zes
zBSVwe0a>;s&GDGAWh!LmoK5;o)dE{4|Esdfjn!^^?Z!85tZ`$l8+)DBON+G5jknxb
z@5bA1Y;j|&GPXeq@4E4hvP3oB)O)%qrvAPg8>RMv+bldciL+IF=*DIh0-udC&)eMi
z$c<fYe4>CKOKrQ`tom7QjBtlCyi=uWKU3K4#-~!-ql%-EXY>2ajn8?rtPWW%{>tG?
z6)b(fQa)L^yla~1Z{66Zw9dG(UxcZgbmKcW4#@dEn}-{R?Uv~_v#%fA_|c6+Y><mg
zKc(d%GPWbEGB=L9!M`^imHy8{wtOluS105o|3!E44*vqFBz|+_cX^$XoOR9KbXpb7
z7|y!!hZ}#oan6l@-MGqXa^pO^u*-GXjSISWrhZ9L{VlxcHvfj>jW8|V;}tjlahoLu
zCA?@8TpnXpSO^6?fH<A`Jjm}cwvH7vj+1|nX_g#i7|C@WT<^iX9`y2{hzCU#q`L>j
zJSZ;S+Jh1vl=Psc2elNil(3A)?30uh=TOB6%X&~wPV({|RPdmpoRvJN=Ey61P({3|
zkR6uF)g9j&A~!f*G@G?O#-cX&m|?4q2X#g22`RZzq`vSb4;qNv?D*ay($IrjMH&ek
z3!4ZT!)+ck6>lbF*;2?XwNM^fdeF*a7Q(MdNO>C%+IrB=gZ3VD@SvjycX(hgEpJx|
z^XL={oM)&Qs*?wIdeGT}E*{+NK`FH*Rt=Nr>cL$e)Az|~c)KZeDsbA|L&biNu&1)Y
z2ss|HvU+>)pa*?CxX)vH4O{H}9y}l&HU^pt=I|j#<-u?d9##x}J?Q7bBjN)*80f*H
z9`yH^y%au5<110DyT?3u+=C}P7~(OL0d^&(ILKo*2?u-3(_vP@P!EQAjJ0Gdq5_k9
zQuoUgX{FiUpH`Meu*CEeQf6<Y2hVsg%7f9&p$Fqs0<<1Hr#D7ndB0;NG*35_!|`%b
zK0#z6Yp00$#m{69Uhv?bbH<WP@nEV4r&i$f3QY50I-`o=@fc=!@S+Ddh0q{`nI6pI
zod(c9fY~0*@t~&<_xdo`gLy1=FBW+*--87n{N};$9=zniLJwAXu$sOeEb<`dF=NLo
z9=z&7M*KAo7JINne6C(VrUKs=CcZA=QV-q`$@9Q1;t@uLUZGFu7X~~CiiCuW#}Wy9
z5b>C^n*4S#iy|grT$m6hg(+cL*jw4iiu0{ZMzxGpDd(FWtngr^I6t*<FIy2@#R?jo
zH6E<>;A;=Q@nD??Z+Wo8gPk6%_n6l(c}*YWdYhG~F?0ik9=yvwNaOFpMh`wvobR)F
zH#XlB*yO<ontjGeGyAWLpWxufR5yFD#bZA68|C>=54L&Ci|ro?KNfBm+V6%lOS?Sy
z#Dm?6d22q`9+4U<?N7z2^O?x!!Y_nh3cnKW75e$v9}((*=fOS?_RGn_u|I%J`2kvn
zQm*eMKj^^^9{lLRAv!(y#bZ7Ib=ZR=9vt=HXJ#qC`4m8uTe~H>FKND<b4)rcrQ;rK
z&F?zl!Qu8s;iLz@ddv&0{3ZiGRdMrJobuqb2W7n|=fxQh&ML*?Ui{&~pES8%)6z;+
zcAfL!FAvVkx6reug8CPAU7&p~>iXMbz5>DGz39Ou4=#Ifg+{fB>v}JWc=3-1|9Wth
z!SzwfmYi*R4TmtFFu$;Xu%M6%g}f;2@asgPS=TInrZ1oCXbTrBx|s52mskleN_tUB
zlG0w3Vg6x0TVa3s+-`y8y{O>DGhU4HqM{d-yci*U-b-aKs(4XVPQE5wsffA3YI0T=
zvLtJG!IpD_7d5?DRl!xu3w~3mwik80rrFf>qL~-Xy{IQAB{zCe-;0~PXy7&9vS=jv
z&EmHR8w#m;s~7L;ix!Qg(?ocikO7-|(LcYbyB1!w^kRVIbhh%Mi+F1<+IZ2{Yg$D|
zN!p3G7j_U*|8_4Ps%Jjcb%%613GWnA*qO1FGO2X+;w~@l_M)2?edXKTiymG)=rwOr
z-{VD3FM5kp`CcjX67ti{_SZ-6^WuI-@_?gB-#+4u<RSS!?C4O^&x=RoB!86m>u^Rm
zQ2a439v2zp#W0b<!Y717gv`%Sk$;Ps8+lUvDKCaQzE6v=Fn^-`SGAT^=N;|E7%#?p
z@vMaWs_oi}u5n&G=fy%v#(T}Dx)^GTZefBK6D5D%i%BArg)ewv|5wGvsS-}}V!GFK
zkQrXg6?suOQ%LzNFJ_C+5kg-CnkPPAxIp-lFgwPyYUYFu`xP%<^<ux5e`&#MUM%)v
zn-?E>vBZnly$E^{QU;cK;r7Dg#T#DaNy2;KXG0i?*9)H)elG&-5q!o`&~>_;k@Mom
zz=_nf6oh<>7h&-Ti%}#d%nIXPBt)p0^djZ(v=<q1yPxK~SSIIk;c7456k)xu@M5L-
zDxqEAYrI(N#X3ng2^s%eBI~_)TV#VHe~10Z;qQ6zzW7Gr2acR(;X{XS7O_XktzI)z
zV&ortvE7T$z4*e59bW8|&K@szdGU$(ZXvVBfQ*enSQnpq@tGGaJ^Q=*lzi#MSJM2}
zi@jca?Zr28CMKF7EDe6m^}o{I=QV$^;gEX3i|@TS#i+bEDE*^e{OrXKUi|3AAxgYB
z?8Ol;E*v!R(EJkZoU{5qddxVFdGQO4l^4goIN>y1+CUCfzk2bT7r!fJ4!ErJ%PAL!
z175tHGhUpf(e|OJ4}W;^rxyi%DCEOAnqLJe;KO;fL#D#mE=c&d7Z*h?39kw-dvQhN
zAK|}3dt`U{%$NdUJ|Ug?eTa-RnQvFjlxkrguJhq~TSs#Sdf8=8Qp|_qK9uvJycA0K
zP}Yg3qz|PWUfPE;oLQ+oGi**D)~?_~MIS2pP}yfb;Z;rr$b089yov&HbgL>-O;}x6
z!-pGus4312H20yFcx@l*h}89=p-4U9jY4YH_u(e-29D%rkz0iJbm&&`M#9FzCO+II
z(p1QJn)%Gvj7eHZ(o)z;*xJ!)<3n2?+R548hr2{N_;9-q9eub%&MrQ5^5IVL&O*EK
z5bYkvB)a-cYb4=yw-4QX=q}A3!h3wM=R9_Pdil`Xhpm2W^W#1r?)Ra#A9ehAz=sEY
zc*%!_KJ@Y7As>eO@U#yP`_NbM4D+F%2vZsA!z1F43j6yoz=wf8JmxbKyum&^?lT|L
z8{{)nmx--iCoa48xm=vuJ>kO;AI`eW_viU9gWc*`Z0b+?@RZMd4v3N4|D+h<!$=?I
zaGK3HeHi7#Or^yt;JuF)f7WM)@-aS)m2;dAQ$?N=j`v}L$V49|`7qgs=jCJ)cG0~c
z=M<qmg&<CIbf$~U@Zm*A!g(OW&XRLBOM~YI3mC~fALje8Kyv1d#)M{{J)QUUvJZ=V
z*zCg=A71g{RUel6@P-es`LNiBB|f~aQ2YNj?U_-rj_hjUN6GShaQoo#!7Ckp1B&*C
zY8+&#$@qOf_}P89RQDk$osbXjiC8{_MIt^Vd`OB%*@HwFJT77nd@1qeKBPr5K4cx=
zoDa6nGDq^J$O<1;imVd8<HKqn*7&ei&bNG6FS3sIr?AN_ueT-H;6zA??e(rBd0z?}
zg&zp1v&n}Kok*y^)rW09?C@cy4<GsPu@BoFO%@JY4h!G@VahHaKA{Ehqn01p$}V=0
z-9GG5aeb;FmHqh4XFihlxes6X@TCu5`B21fBzt}MT3%Ou_(tR};kUwlKJ545J0A}C
za7vQzeK_dD32_Gh!G|N_KMD^Ce-a)RQpfEwA7ne~!_Sf&bL7WG==+N!IVtk155GB*
z-yI#saN376a-Ma3|M1~Yho2LfKHQ{rUi^aaZyzo?I+sK)3$F<Oq3sfRS($XHOd!l>
zBkjLP0bxO5Az@)Zt`lL3*NgC8iuzGZytp3~MM?-u3QGy8Us|M$u&l70ALT_V2<>lT
zR}!cG*7l}pRq>nQsj9G=u)45@A2*2D>uWX-{%VRHlgf4dsOQI1ehl~HMnCHN(bkW4
ze%$0o13y~$(bA8b{kX-ChJIsV*pb<;?2dVmzpM76k>vDhEYd`Hn;%U@nhBc=sl#j&
zTlvx2k2ZeualD_jjcor;=*I1?_I`BmqnjVy{kUCu?kKda`W@m7(#elI9p2fGF5+Ds
z$z6Wj?QmwbhadO&aX$^aguI2GelsN9D`#uI1>iRyV(QINz;C`E$ge)qVn65yZ;;b$
zd#cmNkB9tt*l&z^Uq6QUQHhg(KOXVpQ9lY*a}DsD)jfyo{(iGy=ZD9+m>tMF<)axt
z9v2xT94vf7NMEkvhx##$CC{0^AN-Wlu@YuKfnE4%M&*ac53e61{dmTY>3+=cW0W7G
z{g~><G(Vp8n;$W=OlSr<;*9ZQtlxaPbDST~`7vI(dclt=e(>9#6a1LyHzU#We)Dlo
zUX%QoEIy}>`P3CZc*Uf-$uO?WwS_~KsOv%z*NcA4^kYLim)nmcHNdG3Q=H|;Y?a|0
z;auT7Kjw=p@MEb6HDB^$q4>*=WRb`#!dHc_2^R~O2w(TZ9%vZD8-C<TXt!Z|WbskK
z56h3R9|1pteuVtk#6u(H&6mOWeXy>a67X$~vMvfEY=nNq*zby7`-#jC+6{;++JqlT
zKT>|A{mA&ST$Pwr>E--b=Er0Inv(fFpQ~+k^UX<KZ~C!9?SY@BT<OQ83$9hHBcA_J
z9@hA=){k|p9X~#hgn3vm@~-f0;RYrlGE2Y4cu)L&;YJ}t9q4WHze&yyg`54@BC@Wu
z@%qS*kNx=3k3)WJ*X^*xcKfkIe5Y`i@Dm}o`<Tx?etb&H@5kqUd@cDGethZ2SAOiJ
z1>mP|U=~(vSM~~soU?^*{P>owj!nIsYo9_f1N&(rxFh7p0YAQHf9!yREE%=K5(Qj6
zTAL=#ZyWyP$6-IJ1yDVJBYqt9qj&%%0{GdFV}6|Q;}<`U(-3hB!kG>gEb2Px$FF`A
z4WL-S*f;iH`u^s}?@Ij?`>Y>l{5b1J{(uSlhaZ3X0r7Kw{G|x5_;KEk3*wiAfBSJ!
zG1zJShnMBcTmFYuLj0=Gr3fjfrk#g;0obHK00jdmBnA3j7eL|vQKsa2Ig1Dxghk3v
zv+`b8!X*PJ6+ndmDh5zGfHDD;3!r=eWu?q!%)jrk4YSIq%x3Q{<0@6aRVjeV0aOW~
zY5@EP+_v&Aepi_h+J@9#+|>x+h5#A`&^Uma0n`ehegHQGP&<G+0n`nko>QLx?Ypjj
z$$Sd(#(=3`CfXo?n*+EdfQHhf5oYH9OXXGxX~CGcCIQ?QK$ifz2GBHsW&zw8Kxazw
znKsirV2nu%>9-7^RRFE2sU$iC&?bPka<&Vgy$HXwOy7C=4c_i(b`0PS@lHZ!gE!9V
zxcInhU1O80y8^g7fNlYFS3)c+P6$~P_5z_t04;l&_H$1FJyo{%3VX2<1Gq1M`{nGb
zunz>#N6rU@cKd%QfQKEYUGI#opY$JbTEYMo-P!=w1u!sx$K?BX07C;97Qi4m2MeF%
z`JaIK8`=;de}egB08a%F3?L+h;fyMPF#$Xsz=!}w2JlP(qXHN$UrzqHmf;$Z1<P{a
zkLQ?~u>p(=U_t;BrSn_><3*@Ro6n1y&j&CmfXM;85HLH9oJG4!n+=310emskH8p@~
z0rNP3wr;w@z9Q!g@fU?mXl4Mj#AgfV2<Hmt3Fix`xj^Kl02Ye8?8p}dV7IzgC3($}
zFAiXd`0K)@!Z(C@LU+K-OL=($@QV9{eqq4z<!64a0Kx&J0!RlC2_UMvO9T)LAnw!`
zbI5MR5rN2lnv@PpBNIS2fHwnJ5kM}0WdST#>a2GbCOZO~J*$9ij4`YXU{wICnRGta
zdyP$Jw6_A*Fo)_LZw0VEfRjP|8pPWHYzUx95Vr;KP5|$+rw36ki1z|`KY+gjxER1j
zrL`k~odJ9hz@`8`WS7y}fgOCa_!iz5Cw>8J3*e)G`6BMe0c;Q8Q~|R^#+;0(;NpaY
zyXCtA_#}Y60el_6Khs>hd23@#$6@c-qo_U&;IjZeX9Eb}%K*M&;qcAnOC~tip-~P!
zCCul(zX{-5wHfxfeaw~eb25Pa0elz00p*#caVUWA9eyx?AH;ujB(?$hNzTI@1w@Vt
ze-<7S9v7Yv{vx!eVZX8-Y5W8DUF1{%e~O$A;7kB##hC}1oj=4$sDDoUFX4IN1!3X3
z#`jVHmuazsxGsn*EFvXWC}?a2JIKFsvO8Rr*>MGp;es%qFu$;Xu%Pgf4yIMuA7H;e
zh%!Ob(I_brL{UXsENK1@SX@{_SW;L@SXy|}<)RKlwJ+-`Pe~9Bg1A}1D+W;|h^j$U
z3Zin*Ovd>3nVm$nAgTvZBWPL+n>39BW3bEoh9GK6&dRM7MC~Bz1W}ibkfUwT%v<UO
z%`XY~9e5gw`a$zQvJE@}8Z>`LB4LEL1aYe}K;BSMG0{drG?tJplL_&zn+DO0?Kz0|
zgJ>Q^iy+cLWP)fJL@VYti1rMtAZ>zZD`ID!-H^HEqP_zY4We%l{eqxv?-(?X?fC7}
zJCtarAnpvJbI`N|UiSpiMZBx<t|0CXqFWH%gXkg2cP>-Qyhym2&)*vM4C3A(dIiy2
z3VnjOPlP%T1aZH^xmtP9;rtHyL*fq$m(;kn8e$>SAUwjfxc?tS{~!hgF))b7f_R0<
zSL$?wY(GPI7vh73PY8cv8++C@G>BnAJQ>7OK}-l@V$f`53}>Z?kUt&72=S4MlM?#~
z(<nJd2k~ss9PAt;BpE9*E{NwG$#{|c{OlWRHi+4Zjge4!au6@bIVFf$PKr~5nC9^5
zLCkRYiy||HbLYZ-%V16rbAy;C;X+4qzQ}?gUJ~H}U1pot%W^If@*Lo+LA(~k;vkj;
z5z+0u9>mfh{6Pey!*fJ$h~x#~7V!w}67Y)qSZI3RAt<L6L|7yw<UQKHcDY4^h$*3X
z5D5`R#hOY6k>XwaU^p+H`pX893*yZnRs^w3^|f5c0pch1FV_CbAXWvjI*2vu=4`0;
ze8b**q5WAKG?UVGY;xTH7p@n+E!-e{NBFLgzv0^$#0Noq7sP=eHU;rv5FZ8cv69{#
z#Fiko2JubBYm>2UlG8k{RwLgY#Eu|#2C<8cs=V2m=TEh4<4J44&h<$UyA@=Q)3!eq
z`7DUf9my9WUk34&BiSqRweTC^w?XW4eD||`RxrKn`ydVmaftB;@q<!fLH)?Sz)ftO
zi?%J&;UJC#aWrU_;e49Vv!y9dUOy|yv7q_y((xcpsK3)d{UQU!q3t&*To=OiA^a|W
zDu~lToC)GAt#=Uruoj$j{|v&Oxt){bFX4Gr#|7cv!i&O7!plP1F;>~X(!c7&W?NBL
z$czgJA)iQoVF6)5VId)P3Wv<=<o10P386#?CFNB#gkp|P@sL?TP^Xk5DH}p*hnHb0
z+RZNKNXmy$!QmA{s1!nFIje+FN2F>9)k3H)UenR65yB1P|IPDjg-}}(`>*TFK;01P
zIr=w-Q2&2?Zw}#>5N;2nV;BuXxHW|9EL?A)Q3#Dgm>0tQ5SmE;p%5Mp;WqK6PHfFW
zXfEDD*izUkgw`Rn5$`2zD{LohFYLfXL+BX79iji*2j~<+H~HQvWX?N_bP1uW$X$;7
z?$EX8GTj|Xj}Yz=?<u_3k@N9QZ-?I(!u=sUAm@W2^l{`YI=l4xhR`pB2_a0B*CQc3
z5yFrV9u1*?2m?YG7{X&AJRU+$r$Ou*WH%h7+8i7*W{`8Im=?K1Ll~xbo(tj05S|KQ
zcnD8R!iAXqh-ZWXj&yRuzmstMeTG7A*Mu-yg#6hM#)yv<j&tN2d%MOvVa=-?;?qKy
z9>Sy$Cd>Ik2vb6sD*jz**9zxZYAK%l4B^EP=E!Si2(v_Hhs^$f-L|)B8q6i_TzOH*
zPQ4(6mqOSV!u}8zhVXI-t3p^E!lDpf3E}k+mP+~65EeV3UK3$=SR!KY_`MNAUI;!m
zfDqi0dqVKCD^)OyXr{%ivV=M72!s#}AryioHM`guNtkuf!Nme!$@U<xDD7kjvCy^o
zLp+3pcv6^h<Y|#i2w9PwBVQK6a)-YuvO;+IvU$MGrPG=a)`swD2%m+pE`+y2*cHMj
zN_u?=J3`nQ0w2}AEy)JqJHmH`?}hNb$VTA@A#4))P{_8rS!9cFtB~ceP2{5xK6WJA
zMOcG0xio|JQf0T}yGMlbnxl-7{5*s&B>5(UFGKh$guNkr9fEz#V1_ozY|}lmkr`9I
zl`<dAFzk0B90=jh5YC10eFz6b_$7psA^Z@+k0Bfh;b;hls2{>%h2ngP87@7_7*bxW
z$Dczu7Q*omPDsI?Nz#jpQ)ZjL)R|Jr^=k;f$@dH`e+Z|<PYc-?s7y^>9B|Ku@Q38g
z8($k?3;8RA^C7@OJ_{E@_&bElAzTUJqSP4nQpk)%Jc(2iW>o!$&JeDK;IdFqx#hi|
z(UhLIPtL!t<hQQnzo3Nz;!K+J*g_TxTV}$~PD)Kq&Wl(mYGJvBH!T#iP~5^(7KU3W
zVWFgjUKV;=C}p9vh3Xb+SSVwmtc6MzDqARLp*$71M5T`Q-?$lD!7__4ni1xlbLJ`*
zs#<1-Tus?v>9K_EY;!7dgN2$FdRVx}LM;omEp)Tc-9jA;buCQMqP3m^c5?3MMho>V
z+$3iMVQULFTewBMAuYeitwP&IH5P9oyiLfwH5F+lY%XjeY$<FdWIt_Vp{;m33mq)n
zF5aFcKh;!gM>$FEU>RyTL(X1sr)8#9orPV5U4<0hC33fA8aAEwvs9K31NL-cyVn9|
zXe?L?QNVSdh5Ic$YN5Y{2P`~jp`SGSFcJ$7Tj(n%p9oMt=`#WO42AjO^@zM0^)-EA
zfQ5k;p0F^)!ebU5XT8XmTTg5W-7A@c7QE%bszGkDF}9%=hFN&hG72M#nVlR~v|XxC
zTNq(soQ3Bsj8r_-f7Ze?;-f5#c9LesxPwIBF&4(MrgR!%Kp~8`Fu_8=LeRoQ3(s44
z!$O{gNfstsc*(*-#lWK!4Eus*=BQIFOtmnLorPOK7G_v@(SrTFiISO;&lS$HFk57f
z(0-6doq2N37cLO;@fo{Ab3O&Ou*fp|OI+K&qNJJCS1r7zJd-cButfZI;Zh+j0KME6
zJQlnbd<w|&=Ucs}54!voSZLhS*sKjh_KT1O%R<UR+CrF_w~$m2Dsb3}vX>P#5ymXU
zm6?Q)<<E>&xoB!OV<BrHXJMIT=B_kE%s)FdcP32{1x#hFu&~lXp)d-EvC6_~3)?O1
zu&~C$S_>O3d|+Xng|{rT7=PEodJAt`ct_3+LY5f4c;1*eu$4K_`JRRM<;4=?Wv`1j
zS=el0i*DgV^>kL&RtwuKd}QHcwR38&XlLg6Y?&3L$+2&zg<TddTexE36AQa7d~V?j
z3wxySsfEvERcs^Ae=spx7UP!|zOt~_!q=90;uD``<m^7Qkl$GNR$*Cv{rLZP@%<LQ
zvv9z|_ZCiC_*FH2kX{xJi~nHZN0CE9wvcB#nCGxZEF5<vM=ktp;TSuDe0z;B3Mb_I
zi=$%;f3tAL!dVG_w{XhBX>rDBEBs;MPf0Ea&sq3O#7_6TxUEUa-xe-fxFjKCVCwYx
z$HKpsIb)MQjH_%LVdM)NXYaD6V<Kz}GS~a;znpkbULcHuVbH6=1J{;X*M)I?7)`>s
zEsP>z6b++N7?r~)7Dn+f%7jrij1pm#44XlubQq<=#(+0pZH6#z#Wdkger2=cQ7(+~
zVN?jCV%YrekII$5c5(8+N2NTM&g5oZaa9SUY8W-cs1-)FFsg@9Ba9ou#?<hkz|^{C
z5y5Ef1>?~2uG(SL38PUMjl*UY$uoy_!`NTiL|!k98^frtT-_ALEh3aR5V<)F9-XDL
zp(DRlghD34sCaz6*$7wDFq(zYDvZ`)^SUMPg;#UlBaZ;FO!y*L*w`5!Zg1nn(>{#0
zVYE|zs6fll3^Sn)Qs_9-bw?PT!iYu@i{j2OI)||%jGbY038QNmBg1$mjJu@VBaC~(
zxLdrNu)EM6O?oovF#3kgD`t$pR~Yw)@c=6{jQga<a-eZIU&r-e7=0vpC~V9N?K~&C
zR}Q)!R>3kj8$iD>9tq=7sXZOW2$oM60~9%Lkns-;<1zU@E*vDJe6Yw9!XaS{6&WUc
zQb?VrM1~9b49Gr#w(VB)9fMI}j1J?~FkTDe*)Yb0F*%GEl<wFt#)mN>jB#N+CkZzJ
z7@J+c6BXN}FrMcvmvwpd4g!67cT>Wc8pcauEDU2>7}LX;5yp#Z>QvzP!h5$Xh0d8_
z%u-adg>!^+h4X~enIFaiar@W|B`=4uD2!Lape3P`!zGc|j`FU>VJr#5A4VXI*TYyE
zhDTxF5axy9c5*_C#2MZ6N~T?T!|+LgZI6wFQ3b;Yv7NBDhGB&fmTyGu%1(=k+C>o$
zBN4{OVQiOg(upUfCYlZ-6Gm1-2HY4%E{tViEDz(&Fy57Xg>Y3Et3_4{nG@=-31h9C
z<n|n6ot$rlv0jb;ZQ%ytJHkWy`yut;lji$EE;&C4W0UxYVQdxIETrZZ5zd9SiG1Y9
zITr99nG;qk$*wRy3FGGojzzGWy^@a<Bd8F;o-jV8RSDyB3Cl+CMHpX(aZb*!gj7Bf
z#$NHSSx{koD@*ue7>B~xr=0H(o1f5)=KiWOa6k&*iysvJAlpSd$)Df-6vkmGm~GyY
z=Eqg+DMuCm&tV)3<G7RV=`c=+|KdnahViSze-rsVj8h`^1mleOSx4s&kw3%coC$B_
zuQ1Msal!E|7Qq{||6yDV<5C!x!)7PENCZVAhFl5bA4&cdQgT(q6#*j17eW3A3Pey?
z%8YzKF>?r{V8rYL7m8p3Pe<@Ua0J&!;JWOZkRN+nxrWttO)ux_R^ZxS5qaaqBgPVz
z5SEOfln5oIBPio=u1Xkxxrq6(7fHnkDn-yFg4-g-Svi7RB4{XHC4#CV)r8fBHH6f>
zA%dC?uO(7Df;x_*ZUptjZ*(N}Be+Stf$(NW{y<CDtr0YmvvCB~wbJ1~wb`jzr_6lQ
z2%1IkRRnt@XdXd}2s%Y@X9WC(8BgxDjDTI0`Dw)%B4`sqTb8HZi)kM*r)%0N=B52j
zEp&+Bc9n3)2<~8M!<@{q|4G_8VusFcnw*eyiJ)r)cSUe_1l=MSq|)oo>WH9M1id3>
zv44-ED&El5Q-tSp?v0qgB)?L`bzj8%y0kN22C3k>UzPZPbRLYLPXrH%KQ4SYVqThK
z-ugz+FM>xRcvO)y{s9s67w@a5W|Rz+^D*HC{cw$5gClrCcgpAZLzK?~oCHQNEP^K)
zc?82F2t{B;@N@(tBA6Y)oCron@Js~HM=&XZQ4#Z-bzb8l7%l#+aEx%QuzpMPD2LZ`
za*h{H5Ka`<Y3Z6QLY?UmydXYBI8``J_+LCT<a|*$Q#eb=c;-ehFM=fzydJ@P2^r@i
z_5$&jgbRf)3;&Dr6**rOz9w8OWSmPy7>}3zR6I}U7J7vL#p9FHFANBSLdFx0Ai|1^
z;9b^21hEL-WTi(CmjdI@M34|q3RA+g@W1%8a^{4~gv*7Df29cHSr@@7@zugL!nMNx
z;(1HX^}@G>8-$GKy$IfqV0#2RBG@P)<J=O#2jZKA9||`M|BG|0oZEyS2|pGx&YdER
z=hFywiGL#8E!-pgFP_ij{9O2j@Jk`%`8tAcBKR?aLlJx%F{>vIYFt^f-|bUx-5<es
zA_s)u3l9o^5OyA9y1bb`sM~VK=CBA?VMii3N+YJ1N4SVS9>IwS9*&}K6u(4pGJ^I|
zbco{D2!5lvh?-vidjzK<I32+mMZ)opF>^_BHiADS;VSRXh}k5$D(ATf2GjmWa6W<y
z5&TWF%$G?cxEL{S9??)=Vi)85gxhE`0#_nnKi%ze{UcNGuaM6vTu~ruqRJOVfhY<_
zkw0oo7L(qY&s8Xj!ckloH71>wkeg%6OS@=QqTJ((qDa)3prTO}i=ucGC8DSsMZG9W
zMo}t?N>Nl+z|v80jafd5GEtP3q+As5=~UigEpPesxq>7W<;x+pN)%P2s2N4AD5`OW
zti9zL@~ti`!LyFE|KdDUQ#)#o8uF?m36o<aRJbvU`cd2#Mbjv5ilRXj4Wqa<ikp@5
zTck`i>hng1R&h0o8spi-kvDc?qp(^<SF<RZOVU!v2d@m+!nv1LQM8tvd1ICsZQCf?
zMbW2&S)tnxf^UzaV-($@=pMx#s`pNu{EN_H^Bh!X7Ew_%UGEY#?T3+cjhbVPcSUix
z>V+-;2L6FPihH8y$>gHuJQDZB8006lUdGc)5z^UP<UZm3Q9K~>pyS&|<RR9Swt)IY
z@kkWoqnHrIqfzvaVoVfcqZkmyz$l)TGV}IW6i<pjE*um!(}TgnCxk<ULxuDjCUU}M
ze*F4W6vGwjY2gUrNFj6kOcbM{7%e9kUzBjJ$XB2E!s9qc=Q)*+eWyGjFfoefqi{#z
ziDFU|lckm?d?AWOQM1v(_3xA@rYalLgwusHgf9wbMlnldHruKQb3P}Ex#IJL^Mwn9
zF9{b4xhADDFL2n6UOQ;?s#?Np!o|WR!q=l%D#Dt5BWfOSlN_pKZq^%xFA9GY0cD#L
z-K}~TfZG>bsuZu`3hKT>QS)ws6-79TEj;R9)fHhIsOLJL&lQg%5ygcl{*EFUMJkHJ
zQ5=aP9YrRJZBcv_MK*fvEaE#+<f2#>#qucLjADc2D}-+eR|;1}u{w%1N_uS+>!R15
z?$KJ>i=F)AUF)UETX<V)Tw2nQ()V3<4SBsE#by!8H%9S+_$DcTC}dbhxJB}<jwU4^
zN3lJMA0^ol#ZHlfQS6H16Y=k(*LFl1^X@42IAK4H;<G3|kKzkS_6fg?;wzE8QGDZQ
ze$5g)Xfph*Bz)hHe81!ST@(i#IlXvOynb+e$*FvZw;+k_JSu)ViZfCCEPhOQT*$&X
zA@YmxBu4?20OR>hlHa2^B?)6=v7D8VzUQL&L;O!wfjwGL{+CMNd=%VhrT)bzE=AEK
zhTCGe9K{tH(ip16%n<VrEqM&ri~p-6uClqx2_bdziR2d+h@qe(FBC&zadt_n@hTES
z@fb?PP&9^OG1Jj(IajhJV<;6v87FM%m>E8*RC1Nn@kpwbjiH=;%L^+AD+((KsZ%+I
zD&n>&s2)R&80yAQFNPZ&omw%}6t`2a9YdX%`MVbFA#Ew~#u)0ya7zpgW4KA0n~S(^
zj-f%!92iS!SYgKOoZlKlqZk_NUbx?AKds|7DLZ)67@Eb<C5EmsG*>)rVrUyfix^tQ
z&`Ofl!otJMa|-U_GR}4}w2z@v40p!RA%@#y=orHtG5j&qtSmUhGuzxiW)f89a3AGJ
ztw_l2M}c?6aCZ#%$M8T5-D2n-Lr)f_bb1KyiJ3hy2B(oE_L8u74EM1L3YsmfK_RmX
zXD9Js41HpFB!)+0cu1NL$Iv&1{Msg^6{0?es(uVhyRBO8AH#qc22!H<xlPAZ&QCGV
zfCj}dIELRc_&tLsVi*!buM~QxFf@i?F?<ro?l_)|;i(u}$I&K^;W0cN!)Gyk9>a(j
zM#hkfVOb2%#4sv`7h{+i!{`{EjbTa*Q)3tt!&qf<9CKU2JO$(E!|gb30z4=Ac;N)$
zMB($oNij?oc|mBm*l96Lk70%+_6dPiRb5Rvd#PY<c~%UwV@Sr3ieXL+b7P3dkceG7
zt1wTY<_mfI3u1UFhJ`V_9K#|B18g%Qi-oT`ny-oQM@0;^MErH((iq+l$rIAo9fL>Q
zEA$Ed!h)ks@L&v~7_1n=5=MoQ80^Sxj7ezU9UB-M@PEBEO-;6WHe;9BLFGGojFT7d
zeR&LT#;`4hk78I6!^#-e#IQDoRf>%|t63)H&9*sPEbDz;3~$M6y^w8Y)un5v^4^wY
zLk#c4%*^oJ7~T_kKZdO$8-*XluqlQQrMy`Z`#jqgacFwUXpaLQ$FMzyU2IM<?2tb5
zvomI%no)tAZJW3|hCMNSDh1wkdamn)8Z)<-zlh<>7z)HuFpjTc*c-!lF&v2D>lnU?
zVV{C9Ha2)(-^NU5VTAi7xA*kEkKtepM`AcC;SVwV7{j3$_=t^~*GgDkhh^yOXD&a}
z#Bs(h`LP%{(d8uecnl|E*JiW7#Bef(U)h5sIW7F%@jWHN{GV|oXK6RYA*;ot&nfc1
zVmL2yLC9kHJBEwmmxR>39K#jye}w-EuL@mpGc-U*k}r<@4(GJ6P#lHjtQyC4aa<oq
zB{_@4Q8bS7aa4$#J^W%4HY@5XF2Yf%MBGd>N(xH}OAE`yQC6g!kUIJFxSUB>jN|Vq
zW-7&ss2oR?`2Sg8o+qS2wK%HBQ6p}ia?;7`hB#`*&GtKaEhSw$jyfWBg_PH0LUGiO
z<EFT2lT9RVAbzv(7GXo-t-?ma#zHnHhPq9mnhKi<n+sbATMAnVX{MNHTZLu7L2<N;
zqkSA5;<#PHdxRb1=q_@Hu#@mkVP_%3b`j|s$6b!(?l`)Mb1g=N9^zbvkoSz^UO9US
zd;gEueR13`=L6K?TVO(xK5;xG{;;sGu%GY|A*<%mIQqxUUe*BNK;dJ;$A$FbM&;l*
zo=_4);+PP}MDd|<3=?7Yo{Zxuaq16`<7tH*Asi`uMmS11TKKGRjBu=QobWjz--H^k
zO!8Rc^KndyV_6)_<Cq-B3vp!Q$i*>*B%dq5k;vtm8aG>u)8d#O#|#C0MaXh^F^-wy
zvxKvSbA)q+^Mvz-)L$U-l5k-hFUPSc4%WzDJg%T+>8p<BYjG?VUm|>6xK#LtFi*%h
z-69^LHx6GM{{L^BL3!~OLUCBS7xHi%5%H)nCX742i8zuDPsNcI&&18SXolt2X}T0}
z&1vI0{;xSD@@5<>;&?xfjd9d%Yfdm0YT;U`L|4Vl`S8_otPxoo$2yU>;&?}7ecaeI
z>bx!I1|cQ9-i_lu$Jwc$Yi53vBDYLGP-Zs8@nIaB<JiLNai=1Vj~FK(1Pl9>b$!g*
z<UaxVwVyb)$HA?P9rD^4H@h767gT=Y8<+WAd*b*sj@Oe|n#5;ud>%(4fn)+-#PMYu
z%@b&mz*lkXrC~{+Y64%!@l71X62|&{8^=BxH1Yj$d`Ckk3v)m{ns+gqkM@+}!8m@1
z<45tIoU%Pc+o%QLVYa}2#)2J*<EUEu&v6`!<9Hk=<osLsOB|;~P6~h39sMT!U3f}p
zZ?2w+<E)&2Nck`EKjSzj=YPAh=i|5_FZMMCycox&I4;L=C5}RgYrDJu#DRpdf&VJ(
zRiR4~JDz;v`4cE0QbFGzE2!X0YM`*lb;9d~MTE8*i;=@<@dQe!7`Yw6sYOZgQo_>0
zG6|FwDVIR`1S*JE5;BI0iEHN@$tx$Wy-ib1zKs%SEK*%qBY_)4Y6_`eD}mY$uOm`7
zfqIVQ#sun%-z01xyxH-+C4q+Gw+ij4MUw<>OQ2~2%@XFd*)Ef>z4E|i1&2J&g*d@(
znLw)qrX(;mfz}DMN#MZ*`Xtacfp!VppTGn3t>kL2Xzxp)L&EIp+@3(k1nx+fHrzRZ
zE(vr>7|YCNd}qQmcy^_(3DXfemvZ$^;I0JjPM}-De7T4{_ud4$C(t8-dlDGIqb4O?
zd^fhIIGr0?xOyeb`9L<>jnBCFEQ6sKxqSkMm13`z9!lV0rlpK=7pt!bz4|54h_9C>
z@Mr@4B^;c<6A26uXE_f{;4$&X6Bxuw<dbE61b}3SqccKeXad6$cvAc+;nN8W7qRoe
zAdGONB+n!;DuL1B<Au)(#|Wu5Hi2;te=Y&8<0zaU$wcAvj_;%dCW~)z&MLD)rzJ2w
zftM3ll)#JxUQA$S0<#j=)~zMs`n8sMlY(Q}>;wWcTys=YT(Qngm_L!tOJKgp0wE<Y
zC9u%plRLOxN#NB47ALSIaqWB^{~P;S!mOlNo3ATBTx&4TOU2(vAWv27P9T(km4GJ!
zuOvQUQ0Ql7M7Sjz%kNs0-@MTrmL!ruGy%SX%J-qzRA%RM#S)0KLGrKxPx<9H!c+q3
z1d1h5Jc&#K*#vecuqT0B0?QIumB8u*mM8FL0xJ?&sf=-BfzRc+D7J0juAwH+YZ6$S
zz|I7AC9qCvn}s}F^i~4v#i{l-o3!{lj^y10-gEf-A{!I<KxC66|4`(_t*$L1TOIkf
z1U?e~*pX~cV28M!H>QY2CVQW-Ym_p_pFU0Cvjq0iyeIHEjei1P((JREDwy?xz0zmf
z<7udOYMZ6^Hwk>3z`g|bs{`_|3S(o3{Z6Sch}}>RB=9|rKmtEdQ%}mSB=BPbhZ5j$
z_EQ4q-gEtyz+pwgzIH_9sPJduu>_7gz9&R}N#LZ&ua10U3D@uJFZ}p_0;dx=!}`@y
z=t2T#6Zj*6KWQ+vGyj*!Ibp3j<}tx}ac&a+EpkzKNl4$zBGmkc4MvUUst`$IWL!zC
z(}TQxa^@GZy%i8Cm_(tZc_L6)c%ATiVUZ+?CSkWU`#ENbBuXYxD~Z}kluDYhwPF&L
zk|>=-nIy_4!Lz32B<HBQmQU@)D<sXXDf<htauQXNsG3AId6nksriF=zHU1}m{wrY(
zM$XB95;SqVY9{gWAY<<8BvChs21(qUM7<<#OyVZ#b0JngX~y(3Jbxu)$SS4*XSBB@
zF*k{MQfnx@HHk(^G)|&P61OGI#O9eKnkLaKiRMYPNSc?(dNfCkl4ggWuRK5hlz9x)
zGKp46v`(T;5^a;XCyAbPatkPl4oTcD-aZNTEY7|<CUHj+U6Z&giB3r~AL}f<Q^>QO
zlyni_Rnzdh#k&i;2|0PAyoWd+xsu<TM6V<UCh=Gjy_2{viHDQuo5cOnc~JO(@IYy!
z-$(o*;j?;ozMpu1;UmIFg<M`ye}MR5rTcgigOYeMiKmhnEcp=O6T+<GA1XdfI8-qV
z7at*fTF5UmFy@isb|{wis3b<K*q=>eOcG<07?;GvB%YV>xg^FXF+rRgU;leeN@8*n
zv*h(c5>t|xp2UnKrb;qRShb>AhTHg}Bs2ei^4XHi`5$@N{H|{+n)%Fp)#HLBUP@vi
zTU`>1l31L?oZ7Bel6aL8{_`tohVnpuvncD-#`U~T2=J-Rk|g**?c*AFBZ<5u@~2QB
z1$PpjB=#k-KM8LVz9c?M;^QRzNd(jyS0xclB9z36Bv!JoNyv8lrn*cxiHIaoVa)N3
zizI}}BvK-2VMdr0=7fxGSrW?~&h4Y;`DUM9;^SrrA1m<D)#@bHNP(M#YiTaT-%6Uf
z3WKjt;%zp2{wW}djUwdlh`gJ`dm`^U@;x10A2@td5+6Eza}rw|zExzKkPiyCC$S@m
zPm<W3#QE8#+wM$a7xP@iyd}E4q{%Radz7nBX_P9M-u;=Jp9{Z8nt9ik!mosTg<lK5
z5q>MA8hGp{i33UelEld*zE9#{5=W9aN~4#=kBl&h!$~s(IV6L|q-l<5e@M8i%t3^k
zLO&;QEQ#YuoKOa6yLif-k#o(pzk(Thj`YE=N&J??*(Cl*;`by@N%M3P)Z`+9ZJRg3
zdpwf_4Hw((pGlmP4at`>n@fL5pCi<Hkqb%uoy0{oKeoVsL@p(9S>%dvycTry{a4Pb
zLRSh%nMPZyfI;r`a`s*@g+eLRPvNE%3a4;g3T09#o5J-e6iK0Y3MEp;EEg3POI_PH
zql8P~l8UWV3Z>=C9NIH#o)zaVV!0H`r%)w@swq@Rp<)V^QmC9V=P+pv>@p-W4_vla
zjk>C(P(6hkQ)V-kb8mX_8>%%@xIvNASyQA|3bjS*IP$tF)DySAxWeFU$qiDtIfYIs
z+?m2HDKt!>T?*|}xHW}FDKt)@Ny^L#Ia}tUn31zKZ%bX9`P11ng=S9t%|%)WTc*$|
zh1TM2gl&cP+?d!Qh1(^$BW2oc#W*^qz_Eiv9#^&Y)8PUYT%A+6D}}pL=#m0YzjsZU
z`2ZD&-4whh%T}bjut&<Q&F@K>84iEc$Q<&MIDA2dn~?XVa6fM?gAN%ykivs0xY9rx
zeNuQR1y2gz6dq2YZwgPOFeHV3ijXl3NZ}FjM_DN;^BkcE54q8%&2SA&;W2qV&Kgf)
zus8?Sf||+OPa=k<Ff4^pDU6oylPNr%!iW@}N@2Jpg`PICv5-f~`HZmnZeyA4c0%80
zQ+PRrMJbF)VXPF!36G>*&!sRvg$Z)b7E*sA3)A6~QkX3Mf^do>pPIrn@#(@Dj{HTD
znJLT?v0KX=@wviz!ucsI5P3<sFm>$>zW?(4N(!&ai&JRc3$NEwSe&}H-@7D**B!o8
z<PBjSM*$HoDjCGbXj3?t!Vf6~QV6DyOd*v*C<TjZil6rzP9c&)R89^|Y(Knc6WD9w
zDJ0a!sK(vM=V!UnDP&SuMqvtB1<45qTc!&$2=UDnR-~{cg{>*9lrJlY_MZk}m7J?n
zSd+rq6xPZ4b_yF(cuRb}(B27uCxv(A+?2w5B8+@v3h#@v<<t3rxLwX4if?u_Ir?zh
znO1b0Bp(SsPGNfrI~<*TDeM&AmBJ??yHog7WRK83&+wV}=Rzj>MG9Yvf8|K_ihM2n
zCWUWBuI=aZ5rCZE2@j<3y$BDcGO8chclf-X-}X%55alTxPT@!jM<u5MZ<BVOo#JOn
zqEbGd!U;KlN#WlVuBLF(iRaf8eoNtZIZvf<(UG4{;f(lMNAicrpDCOZ`OA@?7r7w(
zTNqKImr}Uw=v)!`Ck1}Z!_NP{`;5V-t;m-~{xo)_@kts5(kPfV4I`UIp)?AMFHPgR
zG_Dt4oJNr}il#9tjnQdX6<x*BD4#|J`4&%`Pi>S)qh#7l4@#v`I&D(val!T8)vIOF
zD4RA%Nz0|pyq6cJvP`RD8n>m<G>uAWR8FHx8dcM%uL$W|O{8ub)kSKgK@)dF8a30X
zl?I<U4`V{*4c3-I9SIq*o)g23B5cwW-jqfIM}Bh}w}>|s-YRS)Y%FXd<R^$3uvr?-
z(-<sCi!@sDzQkJzsn98n*5Yj(N!v8qiMJPa5Z><ib`-fox5MCfI`YnGba8msH0~0=
zTi8w5-SO>_#yx5DOoJ1Q&fNOb4fb+;d#7<<8uzF1KpGE9I6!EdtUhTxB<I7zzCvcB
zUmA~yKk7*Oi!kzmB993lPn%(JkfXzgWly9rM9!hYr-Z}Ocv9p)J2^a!rzII794UN8
z$kZ9<v*MG4V;uQdk#WN3gyV%1(wLaW^J&=6J?&H`v+boZC5@@lStOj6#;i1Ei%(Bu
zhRBP;nL_)01m<B*8Ve;MpPR-!@%h39!k2`0bE3}6a@vLeiukL-*PM2^L{4hHF2a8C
zMjCl(xaIVu;Z0wA4~07R!2@3!e)$H{2&NHAo6|mFb`b49SZT8v$eo`^8c}s6evT|g
zU%2A(;<`SOHmm!jFeOZ<krAPsTfVt8mZh;gjW?Ch2If|Tc~~jJfsA~W_-f&rG}byg
z>qOp4W4*}RLc10i>K!@XP2)Y0_tV&z#s_I^N@Iue@L?L8c~fa@O``=jF<O`gyrG6`
zTN)pw&5i`W&(oTp07_#dH=wRw-7Ygyp(U==HAS&Ajb^1>e8X#Z8hg?xmO=3hK275@
znz9TEWbk<!U!?I(8s91dU#77)jj!o!;`)llN|Scxla)>jMzSxB{b?LX<NLIk&3;ES
zSk%a){Oq1y%08Her+|_Cpq%`e#v#T0QyNDV;o&rnu;-R_aWTuU)9=dX`Z;ZOPFUK<
zXc_qYmsXLR25J0~#>q5(RmCyFD{1^Duiw)+mB#5b&ZKcs66&8#<6IhlvAd-)ovQ#L
z<>cq3^S2}y#3`hgt#e6|%R<}tA7z6%`B&ts(3LTHgD{_vhsp|OP$+{U8DqMc!@?O{
zm%;TJGcMSJICpaFEtI0t;XIj|B{C?PLA4C3XHY7G(iv39prRDYWKdR-bGMn1loKy6
z9CG#QXg=l1pt77*GZ<9XRV4#{K${t>(b^y{t}JRu;ie24WN?Ex<ux;?<?z}fb%b?=
z^@KMH>kIjc;>{wrWYCbg)oFij{BpU$jNPi-Hp-xJ22C=!ErX^Rw8@z7Pd3Y-dB*Io
zw$7NIRUEDs8E~L)>6B8djCp1q)fN*QaN7*par#}-v}8IL7Q*crbj%=}K_r7aGU$}S
zaK@a$of-3ay1O#CJA=;RU4&hQ{Fe%SyNTb=$$SRg#VPC|a!&?5Mefa@mk1C1^v>YE
zjQI>2)%XDf;)5CV$)Ilr{iO3y1`n%3`P&rUIIm+*xgN=wPpmweL4SGiT^swo8~P5A
zWT5ad;p4(V84MPALO4V?RLD@nR5(uxpAz!Rt|KxSnZcY4=4S9r2BR{Vl)>Z-Ml)j>
zJeR@v48~+IHe+7m8<)YKsv3KhWbdL+$Y7$9cs^rx)%bvhX+0-39uIgSgDDwI&tOId
zQ!}tPey3&3n*9bfU`~2p%wT2)voe^ic<dOspK#p-*D)4_)aGR{KZDmZSen6t3|`9M
zl?+~${=y7i&R`L5WZbpVW4~BX!2I8qIe9IE#ThKgm}6!f7ycVrcsp-oke7ik1AhkY
z3_Oa>E96X`k^J9+D}!JLp$sgRKoPU6U=J~jpBo6ol9gQ13}P9)mBIQ9;w((fsj?X)
z#FN65FfGgo=a)0zzshB>EQ944yqUqO3|7l)MFuPXr$Fov5v-A9Z3gQ^IPm?q1J4_L
zJA(}w?8%t@+jlZ}H-jx1Y|Y@k4BnUihZ$_l;DZb{Il*aQ8A%Ce8<zL7IfECPTwCC8
z%V2v3J7@ti_*g+Wtg~1+vEP}&t_(iOU^kQC@wTdFZ-K?ml@1qB_KBTOGx&`5Uje_%
z;6Mgnh<_<$T3=<b*Wq7_d?Wl;xR0$)#9j-0pTWTle$d@9EVFITF@BWfkS!M;79J5E
z75*$dCOj@YA^b%h;iT|ap?x0yR0gNn%yL+m!<h`uvVCSTJBvTq05Z5IYple%4F1aC
z#w_Y*jWs@>LB1^Vi(gQ-{}x^pUdrII$Q2>={}K5&gR73jrLf3eI|p7Mi-K8H%c6P~
zg|aA|MY$}>XK`H?*Jn{Ai=xu!Zh&1H#j@aoHok7pVkw?A+kljp$fBgwN(oB~%LvN~
zsl(!}kVQqNn?>cUc?E-w-|njX)M1q@s`Ao?Ew|U$ZMizGk;M&J)KLsIv#6Ct?X1}x
zV{7E!sd(~p)kv4GqS@!Kn?=2>dG^ZF_)Lqh%HEVk0|mT0i<`5!C5u*aHq7GIEN;u9
zsho|nXq-h8al4}JXH0Bb&9Z2oMGJW`PUe<<pE@li;fx~1p&@H}L7S|3o4&2&?S$=x
z9kRGRi;m)*g^cHpEIK*-P7!<F)g_Crj{GhW9trNI_`3^xC>6$VUwK#0Ebh&sR~Egq
z7?H)uEbhzV{w(@uF(8WvvUo6yeu|_|77vN^&Eny#F|f7sOc6EFlS&fyqerrMG;7{z
z<+cnXr*L2vk7Y4j0sk8j9?ybj{|2!z`3gW5Psn$OaHw#Y@JZoQLc32rEp8hzM*a*N
zb{1nK9F@iBteKG5)_!aj<Fc5fmj7H9<FlBM#Y8Fa^8&mWoEPhYd3Zi+Hd|N=lXYJ&
zD8ea1zBn^A3*t24^ekqGQ1YV4Od%f&&QaMWvq)tzH;Z{$%+F#$7E#Gx%3@&_OS5<*
zi<h%ll*MAj&pf=6#j9Ck@a^hj!+0%ge!g}iH~+JEov~>?X`k!PQz(znE##?M4%S{L
zHeVKghX+K0S%gF^Vc7AFWX*Dz8Hg!|abZGepG8b(k)ciwrE|z;k;~%SEcRuwOfjs<
zVr>@7vv@O$6<Mrgoo2C``UTC6a8JoDVIEw!CF`<yD~pe_*q+6DCl4QG&DQSQa&E}t
zoh;tX;yuUrLy`Bh*yu<;5ZNTOmkgW5w+Odpu}y^LovGVaon%KAJG0m&ubb+*K4F8L
zWQG71DI3gg$@gUOsmNzpd@k}u7JEe)!<Sin<#295eJ%ct(5{{RS$vm8z8v!Ba3G8C
z<#i~FgIWBL#g9%{8l3L>5}kc6`ll=ot1})E{w=kmS^S*EG4bPB{3&um_>1tQ@K@n)
z!rz6bgr|jPglC1!{~wN(J}1dvj{JNU7sTxys*B>69N)`XToM0A_-__hMO-=4eIT@N
z-)=|+Bq@|bK@m1-s_`l;=XE(;FH%HUR9H+{Tu99lIg}K)^HU~=vN^QNp?wbJawwle
ziyT_!P$7qkIW)=Pwj3(uP&tPxIaF0Zj<Y<3W}=b-ua-00=GEoJg+`4WZpfi#4z+S-
zg~F?04z<PWIFh<K)N}ZaBK3tg2^$D+7T%J>A-(6zcy5)Xk+89lk42g~_th*1`;Y)L
z);wok7UNjc%JFTJLu+ySIYnD>&i$D44msSO!;?8Yl|#oI?#SWM9Qx<bDTh0A=$u2B
zoO!^(mdsv8(p63#)wW*_x+{mf6<aqat?oJW5Wh#*(~;jR(kqAFBKPHRzsLhQJnZN^
zm_r}&haAZsxcZ9s6F%a|hw=MA|M46K(uVZMV>x4HSptvCYmjiT@Co4%;ZUL7t~k>h
z&M6H|eGa2?cshp>^5s~=t~4@d>?8|+bPmtvFeZnwIWu-M2{r@bxE!9#nRz}9+IUsU
zl$;r7=`|sTiHeH+d67xN$-)<eoHx=wOwC~$D~Jnc;SAx6!kNNZLMqJ8VUGA*;XFq^
zUt~cJTrE=V<s26AMwVgZGQ5(*t2tcC;c^bI<*+!1v&!L;9A3|1YYy9TSenBdIfQeF
zC|7wocysXO;LgFL`+fIIb2No35q}PW9D+H7ayU8s+AAJ3baqeVa~4Z6ROjvl>mrBu
zbJ&<eJcmRMZ?aj+chXE(GH1*<OC}{rT9^@Lg*o9e;d1stl{WQR>}-lFb66!WN>+=k
z$ziP{S(n3G4qu=9e^h-5_zu<k{(IZ^C0Ra}7Nwn%5}`;7qNIfs(!SWYL}hEyDk{;w
zkv{Xzy!-ynyeO$i3MJXTNm?jLk&^#??)gl={?|3veck6d&)Ls;=FFKhXOIbaRwP%B
zd>|>P-nd-gm7`RSrR7-0I?=}|yuYx#ywNN#H}Bne6REE|_=<9TP>$8*_@o>w70<`Q
z56kh92yY6kD`sp}kP08Y*OcSaa{MgGTH$Bq_`Dqc6pqU4Xw@a>Y+-#lHi&;Ar0<vI
z*eL#$aFft~PeI?!<=7(0R^c|`cB05P<=8E<LrDE^%du1ZJK-+j_kr&ZY+3Q2gnrHM
z34A$fe&KkLv&#wQF3d*XryliNIrf+1cX=J4QLSSt;g51${fg-x2g~uNyf`%-)6P5=
z{aud3w3Zf*v+z$jj+CRWg?bi37GRlw8P~K>$udtCRV-AsP+8nxbEsyax`i5+*#Joe
z3TfFmQJ-+O`DJG<3$+!4e-KR_%S<M@@<7e{7MfUSYN3IJh8B*p(8$8k78+aNw^2Om
zhs#Ht>if^Lch)tZ_B2zv4BOH|nT6&ScsvW!Y9aXrI-97Kg<~wUrooSZ_zMgc{CEqk
zEnH@ymxU87oM@rFg|jWRv2c=w(=42B;bhC)=1#G2s%5t1vBp@LED_Bt<!4xEYoVQm
zGnq-vcKicR=taAI7E4jt9L&N+$PO0HvCzZ9MHbGr(9yz$7P?zz%13L!Wry=Dbh6A6
zAH#N5qUT%aB0@=53*D@W^|T8l<O2)$mhh?Hf7jg8!o?OYv2ZEttt>QtTqt_j<d7G?
zj3Dyv+}lDQ3)fh<*23i$`dS#EsQOvB!a{!wS6R4H5`SHS^~nblmWzX{;w!KqKP=sK
z76!5fE!<{dkcI0l47PBC6!=MzUq4LuM$3G_LNX)>J5*$tg_{D&aFLrW+#=%N_iwjw
zhlM*W+$AAf)7;?7%%eJEyJM_bTpD3vBpWV_HerlnTU%Id;S=ePvGA6Kw=ImdFwVkw
z3ll6%w=l!PM9bWR9<(q`nv*QtE5c|ei`*xiBAjaBevt=+e%^Q==jI$P8F3rZObfFt
zJSJbRv^*q2d;2hl2{(VT&UyHch1nwe%FMGWB~0sa3r|S-N!|i1Jk1Wk1K%t(;}VcK
zo%}i4TnqD9%*r7yY;u3svx?_A3(s3-2k(3#$qN=11bm@|7sX$)@Un$h#9y=Uy2z`-
zMb+?z$eV$ak?^8?k%h$;919T(?^sx(Oj_)#BIQE9Oy6>cX$U^$g)P{YnPRc4@X3o!
zAGHv(kg<@p5Vw%9khG9uSAp4y$50$W?7Adr*@w@$jg9L+7V?UG700`L3#^%1p`wIT
zc11j4$-+{RWy0mc_k`~YR|r24t`vSK{7Cq*(6^kNJn;0VH5NX#@T-M=7S>w$%)&Mc
z+bw)<VI8fLg-sULTiBq08!ddn(b^>RrJQ_Bo2gT>d28VPh<X0n!e$oD!d9!|?b6_e
z#uWSG!r$%iKMUVj_};<~7Is+12!Cf`mxXUF?4+&ZFUz&jk&(~h*%ysND~>Yj<h*`V
zqU=aNF}I_QaJPj$?CRYAX<=FA5XmpJoSb2*BXODfHw*h|6)haL@Oxk_4_f%c!U0;0
z!y*3gh!=<apB4^rME5pRO3ttTq7|xRlK98M5v5x>j8GT|qf*$|M&3;M3WkJ-7aiB$
z6tGGdRl}hDsV0T$VYA}Ro#E7}5k}20YK2idj5?CH45Mxs^}=Wr#?fK(?xubik(QyW
z8=CFP4Z`NbjfP<y6~-|QLcHkg!;R4OLyg16S~d|j6*d!=38~XOj27bjCWV@<7(>`B
zavmGT+)ANEcjLIQd8j`=jMibCAkC`UI5br6K~4(e<S_0FV@epOgmG#ZH-vFx7^j7C
zdKlfq=n=*lVYCh7>@Yfn(JqWL!#FF9_F>GdZYqQq&tqgAlJLw%_KI`DI5&(7!nly-
zYHSQzM@smsDOFS_Wv_D>=ZDcHY^?oPJo6_E{vf+6>xVD?G(w-PRIygcdk5?MqA+@f
zaakC>!nin$OBB_mVe<{0-`V`d5Z=vuhtVgDtHZcPI+usdyDD~9)>YrIF+Tl-R|u~R
zqrV8{SBVS=SIk{m9QI^Jc&*~OPB<`(K_c|MK8(QuXBmftF*J-j!?;VrVPOmp<7TEV
zr++--En(am#_eI;5yowjbBr+m?2xq8%%u4rEB9{I4&5EbJz-1;W1`eXgfT9R@nMV%
zo0};sZIr5Rv~WxqV?`)u{WC(E9Y#W9H7SgH!<ei{m}h$Vb3$@9+0-!Z598x7R)z5Z
zn;?uA!+0r-Y0{q=#;h==hcP2;&Jgg874NVQh4FA0v%`3d{k(SQkuV-*ud5xJ)6KNz
zLt0>eJZ#>5)0c(f{;MYx;gexJCGvETpE)AW2<L_|PvlwQbHe9^%<X)U7laFh3z-e|
zx|hRvC5#ned=SQ~VZ0W`>tVdXPTQa&&#V*X#C%~IHit93#U8?!zhNv2V{sVoa6E>Q
z3S$ZDmLpn`mkXJ$En<Zc7V$fq6Zl5L6|YXH8Iv#`Mk4U#3?UsxM$TnnWN8Y*@B-g_
z7{!1WXlE*g-sfKcB=JwLWt=5Bmxj#(GM&7Zhw+|-?+ZDlXZKzi#)oo#qyn;s`1zzh
z$HnR}J_%z}7+;66CX7$RSRclQFxH0gSs0&(v5sTEc4#wqUB*l*{!rpAZ+|BAMHpX(
z@s%QHAJ|BPrpF~(7<O8I;mf++9LAO~z6oPT7+b^G7RGk!tNuAr<Xn_>&iZG}v`Ezd
zHjJHN917zvb!N)HQ~c~ayTbUMRl&pmg+GSzlgMr<90+3%TbA};_=|9_@K+(d_KEx!
z#(t6C1Nk4UfslFgcrc8mwEx1E-9qH7K<44^Fb*q~e>9XfIyk~xfDPEFWTTdi+BPcN
zc%(_FhK-sws@SM%qnd4ISr_Vb_v&`V_XzxsfMxk=C}@7atQ@Liqppn&4!&?u&qjS4
zpF8GfuMKQ8v{B}uxr3u@G_o<*#ylHG+h}Z~qmA=yG_ldt#)&rgd%I>-wvmUqn%ih$
z;}{#q+GuH4tnrRnZ3@!L29NhN8Q{5seEDnRcpI&y!$ZtYP$sEBO|C1pv2l`(lWm-0
z<4hZ8**Mk4X*SNV(U#f%J9IjWUn%qz51CO#wX@9#;)bFf{mhw2om+(3+c=y0da>BS
zHj6(r6zABclBsa6(&fE|D;u3`bhdG`jazJ-Z=;KiD;S%Nt~R>a=xO6(UV7rVz{Z6(
zSL014yW8kt<09MGmU@pE$u@r}-o~XiF1OLw#$`5o+2HA^+^Epo24^YkpPYU5vCY>g
zytq5PpK{{IPc_cO`rEk5#$X#a*cf2rY8%(uxX#8ktOs`Q0U?fGs#T#)tA%Q_Fpybd
zyU_C6W<9^FW+|-68*L1+ag&YVHa-|&ayZlm-`5XQ>MT1mu;?)}3YaeI{8k&c*?7>#
zG#j_uxWmRc8{=)<Y2z*iv@zPo-8S|&4e|Rg4mw77kBt$k0Y){_Mt8OB-OWN{*lJ~=
zu`1f6cg^5xdF03h8xw6zwsD`0Nz7P_(7iU=G{XETCMw=B6Rkp1n74+;IaQhDX#lL=
z`&k68|FcVQHqtpX-Np<XkJ)%!@z1pJF#EraS!$+-l%GGEnN4e)9WgVH+L&#d_ppqX
zeTK7+Cu}@v<7ovS#CwwnKgVEN%PWWG*m#CLoThk^8JJ~FLeJWG&c-$y+ig5=W4;a7
zhG*ji8w=RJHf$RUZM?`n%yDPqB^xi>c*Vx6ytGH9PnA&hm7&+z2dal&S8^Pl%pnWQ
zHf6_n%f=!bi*3Bkj@_(cOV~R$ww8sK*m&1AE0)dx^Aen)n9p)`2FpfaYKVJ>92*fE
zDH~}UQ5!K;Lc+$^%}kKEjV;YWG!d);n!cnm!1c+DjVwnlBeAiwS?IfFp_~fN)@04|
zoqJJL%7L@HS;(d_;qbAs+Qug~mf2X&er02&jrVN4uQ*rOV3&?G4Sm$i?15j^EVNn;
z@u7{6ZLG4fwpr*SX|i3`Yn_mUpYN@)@u`h37@RsbKBFzNu}+%5Hw&>fXI2TVw{fUh
z=<jBs4eXr!HmaE!`&@|F$gU#IuW0~lhc>C~%s=N&EMt|j&}R8=5pEUM;A5<fZ)_Z~
zS$EiB<69g1*hyFqHomj*BQ2YaT{ga#o%w+cs_%yWeUHy);oUa&*w}01R~tVo+FxwM
z)!aM)iaGR`Bm9pg%gRFgZTxQIFB^Z`_`}8l8wYLt$)-`y^p}e-X%V`V-)=Mu9a0&&
zwVr+Buv+0CS{2<9`n3pM(INx~l^is1(9l6;2UQ%@bWqDdRR`4^RCiFr!IrWR`_DE#
zvwu@&ZoWIpLTqT-z}gP#IH>DjSDESd^<??$JLXuD*L1oFyUK0_Jj%h*4jMbgm^X5;
zMvDMV95i)|@#kCP^<|+AWuaz{d4tTQAz}*$Egd}NnEOsE2gf+L(ZLW0$2vI9L1$_@
zINm{P2WL5G@8ARnCptLY!5I$PI5^3{$qr6Ya2m#%&CORlqnd?IWrmxFPLrI&s(y1b
zcG@~<=a~L*rem!1(ap`6WyYE`5B=OQbT(^A-RxWk9UPqF7(39WnTe1mTC+qQ9h~Q&
z6E96L7?!ov#X(mGeH>iwpqqmW99-hyQU@10=<eVm2R)S*e@)xN!9Pmzh+?b6pFXG_
zs%Qf?vv-+;UJiP*Ia-7`_G`B=r@Pc?VRle3^}Y_Sc5sb@eh#j1@LE~uN(cQNV*{BJ
z7UwE@$<z-}shRC-9bD&Nu!9>M40Oz0k8fjniy0)%>(xvQzLi@6`BuFw6e|nG%R)mP
z40CXwgDDPfaxmP%Xa{2)-0a{M2X{KS%fYP<ZevZd3u#7oJ4tPm4Q60ai_q_NL&Nz5
z<lr6$BOQ!#FoJQmF!Om@a+Z`W@(6eLRWZHSuiLQ>#ygmx2*)|ds5|k-G||B%2luK(
zg)-A&Jb6uKe^5MA9o+BWVF!;mc)-Df4rVx*siIADFx>$|nY+L8Ijp&fVU~l3SS`9u
zbHwpTK<1qHoktzacJNrxm;T3<A674K0i5<UH8(z5xhEAf!#*vwIS!t2FxSC62abb?
zgJ&H)=in^|Z##J2!F;K`!RkWj1qZJv_yPwD9lYq^CB^@;nu9kWn(OIh24|L;4|`u_
zD?4~yK^`p&%`P*`O3cHXijz5C<Y2Lbat9ViXw}d=91+bz^He`er1P$jyFl5>VZ~!R
zW?MU#I9||9BkCaLpyXhwgSdl)gFI`@LDIohiYMbBrGRPSHD%_xo^_a2&U4E7pt4Yr
zb*@Kg+GqN@QuZA1+etpbEpxEk!Ab`oI(W~)`wmt(_#g<vfb1>o<XkBwVNYh){m8*;
z2cOUm@LUK7s}$jgGSgD*u4|O~TBZIeYoK0eLBr5z>_RHkgtE{&$1G*6mje5w|KjgU
z2b2E^?cqF%ZOZ$pgG~;;mgZIm+e9|g60#oj{LX0-=V05JGzT?j$W_dZ^&8#-9DEzZ
z{F8&79OIn-(>$`gs&G1g5V@hUxjX;J0jN&}nfcug_Q=ccetRAK$^o(hqgP-b4GwEN
ziF6YC9sKU#Kokd~_=ALlH;VprI{1@K7C}6MLk|9OFeid%BKVs&*}-KI^ormgPWx%t
zBd8wX+Z`aHW&en=$(16gEN9yRW;;QjP8BQpRVCzOPK^j^M$j&TGo@cEg4z+(@xxX!
zw`oRFH)0H6Jt0Ybkp{ws5gaAbD1xI!8b{C~f|lY<B4{eYP|ZZjB4{2+_^PN?z)ux9
zCW2!{jtk_+N6=dQga}TIpiKlPMR0Nir$o&0FMJ~A+hj)0g*8rYc>)RfY0^Jkct#LU
zTM-TlDx4KT`v}gCfM=o5=?7;F9U?d<VkXJw3OfqV6Lu1Ij^KQeE)iTD!6gxNm9v}h
z0^x<i?!q2IMtD&KJp+EAlga9(Y^-jkZfVo#>>WX$2xdkwD}u`-=o`Vr2qs0)FM=x~
zxH5wN5i=$B7b@5C504046)~%S1JsT*S?sr0M{rF9*G6z%1Op?uErQ!47!<+vYR%!o
z!4cdT!H@`U2%4CA7%F~~kj`QM@uHEuIgsBXa%-gGbcH+QyeEPY5!@+$R|I#9Fcjk<
zj*MWGB;%M*k+H%tLSM(n@sdo4m<KnGR))Pdg2@ujh?rT>eG#*WL}gx6BA6P%{p@B4
zJ;3@2cDg<o!88S#F7&sc_$#^(MeuM0k4NxC1dl}UXatW*XEyuN-6m1qsyOpuH8wlV
zRPU1!^In_R)2ipEBDh6P|NS-dFgJqv5xl?=$Nm2iJgbHve=dUOC1g}|E{I@Z1WTBC
zDZCiL%MrXH{!+xe^J25U8o_H3ERNtEWvN3?ydD8Rt7Ix~MDS(=Z?Pxvi9@(Z$b;f3
zA#x?QPSenmh9N$Wlt*AG=12tL2<!-)AXj`}?AHU|7S*h0*6yN8on0sqL6YM%ie^!y
zB1lKDDT1#f$V8Bh;DZQOMv#jjA3-UCr4bY&C`RB$;6==9Xs&Y(Yh&7_ck7Bx4&=)s
zSRTQ95xlS7!b2=M_vX)NR?xOoHLH27aN2pUJbxI$M;yx$e4?^{9Kk9P|A~yt_~-S*
zng~9PU}FSdMa)a{wGj+G16=TF!0*2z_+0wygiLyU1RDbWMFd|4oOdPW*591Q%xq?-
zir_CA(g?Ojuq}e08F>WTsUN{l5$ulOn+STuLpxN2IeLHntzz3L{7$$_$aKFK`9b)j
zkh3qoisA+^7Iu$@Ka0FKf?p%}J%T@^!<)jsh?xohCM4M}!h7NYpWJ7R`N6>VPmx1`
z&S4sV4w)z_M{z_QBNPRqreARc(LDN%&UsgrD5^$rbQF!Frngs%qF2l;b5)O;ZdN0T
znj*D?^@X*Cb%b?=^@RQcW`igi%6XKKku-`L8%4saiG=+dn~%6F@i94y=23Kx;`}ID
zMA0&e)1o*%idIn^6UB*9w29)_D2|Kb_$XQ{EMM;T)P#hwoe(wWpsuWKzN=lx)qp5Y
zj^dOkPL<|Jy>zD9zp1nK&IoeVF^aYUZx_Xx;%5bt_EDTI-a&Yd@LZw)2I{;hIz`P&
zGFy{L@TGQ_D7r>*aTJ$C(T!Ct<%@(DM$tWr9#NPjah}F7tzrq0_nn?n@E1ldjpDK>
z`b2TLguR5lqu|~%hT`Qfoc4{PUldo!mr=2?=(V`N*)4Nb6a%7I5XHhMu8!iGDCR|t
zA-Xn->!KJP#h54tMlmRgyI6IK;rb|UjABR>gQK`X67~>YjB{ud!=kuTLPma5)L2?x
z!zH1@%~9MUeyi}dKz_T(9YR(YAA32n?vZn3pff_m?}wwJ@T+lb6yu_p5yedTj*ntu
z6qBNuAg6!kEz`X>ipi2N6l133z9^<hGF3>){UQ%U@u0{w;q<`QFW{^w9**LXC?1l0
zd0k`SAB|#m6muov1{Fs2nE2zuCxjF}De{!?Y2h5<GeUnXu(_X=^SLOV7n!fIz!rHy
zPR7F`ycoqxQ6!>BM)7hKudomBl!ho?jheswEQ(@r6t6|`dK7O&@n#fnMe%kN{Ew3V
zW`t&w`?1*r{eSDc6U7p?HCKDsUP{H^q`?n8xF$pSsDUQ_a1?eFj?#)m5se}iMZ3zT
z>G>=ckDA9xHaee?xfe7QMVgW*Hbs$%A{)g=QG6UlE{c2<ZWLY=1trS(i&10$NqG4i
zOV~wAQ7ny`zecjW%cAC2AiPg4kD|m6{DtoeR|r24t`vSKylhZtRTQhESQo|mC_af|
zO%$I+@i`l-in+~w%0Z#0&b3jq3fEWX-BH5Z5dVC=A&M_l6&qEqFO?Hk{@I#n@fJY-
zHETPHol$%j#g-_xQa_4sqSzL#xZ`hE4E#x%zeK~*?NE`wWsq(a<?UQAv@445qxdO`
z-SYiGE&gNl|GpgYw`%N(;&)EzqxhMYxn1ZNMZQ<~tB_gRC-R$cztA^6z8zpZe@1bL
z@x<{*9DhaeH!CNG4KW;!;vbIm7zV{~gccx%3u3r12E@#a{n!|ei=k2sm1C$9L)92s
z#c)gv+lQlC4E17QrLl)pkD1rCHH0-|s3k&4ZIL>{x-qkNg~IwV^JLT@W*W4i@F*dj
zjbb=jys@xJAa5E&Gx4%O(maM1;w^=2bO!&kvw1w>cVzrp@c0;7$8c5*?PEA0h7)6G
z6T?X=)WKsyd~jfkpB%#}F>~``uRAqn9vk^zX*SjrJ_5vWdJJd8%#F2e%*+zo#c*$@
z(B96WO$S3~#>`{g6YLc+bck{BALqu*bb?X&J%ohM<{e{ZqRaX@Pw93Nc8=kE-^nkm
zW9Ta0Es$^nVfPq%#Lzc}elc7WL(dp4i}6-#@_8|<E{02E@W<&&{hyRwf_KT@G4zSy
za;f>hIOJ15gZQ(}D`L1ZhO1+^CWihoTqU&ujCN;;J%qDdS~LINcdfh_@Vc0}7jv%>
z@4qbU^)U>N!ISR|G29qKB8FrPLt+>j!)r0T9>XvOiQ%yr9*<#o%p7ae0;Z~Oj^UOV
zZjIr#7-lh_dSJOdhRLjC@jFEB6y6oX-7(xFJ|c#3A|r)V9u>prfR7Ow%bIVEi>sNa
z#>X%r@SPaLq=4TWGh^RR>%JJKNIo_2y<g;k7#<XvCY&Dl&WK^AI8$K^4=Mi-3m*|a
zDx59k?+jQvcC9C3;2-N2#_*(C_Nf@2j$uv=&&15(e$U4+H->pJJR8GvF|+KDxFnQ4
z9Ab?z3BC&7dcgdiV15iQ#K2|11<YH!5Wl|U%0M$cV!X)i!IL+HFAHB0zA9v|dn0CS
zQC#iyrubXpZwKwWNMy0_9pRD~-VJ=qMXVUYBDT;GMubseOz4{$_8D5dlq4A;hf<nj
zN4+a6NiJq4Le$Kwx(YEAIW|>et}2S_PV_CsuvGfw%S4t7-;3dWc8?=RR>bf@%)FCY
zsoGl?!-p|^QaSXId_R_jSrx--3dPq7X?E7c@M*xgQSdYI&xQOfmkQ7KFduS$5yO|X
zS8+6qW22JZ8N+umd=<l{7`~2Sa}3*P24mO~GaHgw)my1w)%=)}qsAQb9>X^=?1<sp
zn3-15i*qyH(Wt;e@uH#F6~p&2{1wCBG5iq2k1-sG;b06u#jrbuJu&>Oq^ap!m0#qf
zv0@$WRkV!fR|)sU@SDhfA?3fv@Q1iR!Jy<%IS;W1DwF=Mzr!*7L-QU-l{k(t&bYBN
zmEvapkGPo|ki0IdNJ6iwaa5B|b>X|3V6(_I<fKAPky>%o4kUF%>c&w|q<$c0#*T`k
zQ5;?3=o-h-aWsyjT^wh|(Ik$hahx8<8F4gYila@^r^Znhgl!&23-Ol1R>ETf-(%xA
zF5t(Dw2tEhkrRb&geM6Z^T{Ho2-%r=yF4upJ{z)Gd9i)l2AZt-v&7GhqoYXsIL;1y
zJH&BL+>E<V6!5$_I>pgBj`O9!u#AdNtn3E<7pZL4ZmjA!cE_<Njtk@HPR%&JiSx11
zG{l$eesNqB)IiTTE{@}pI4+IjvN&#vW4P3M#c^dE{l$9=`^0g%2qWnmN56nyA;Jt$
zewFy3I0lGZExblZ-)rNzF5m;>6~mVD>m?j4ydjPoMTQ863Wo`)$%n+7<G3Y`m*RL?
z!dv5bFpg<)+!n{}aoiEdopDTzV^SP<#c?<DsdXFTJ<=Z&$A~yaijRt$r%pyo13Q{>
z#XmNVaq=A>_)=j)+}w5<$-VO86ot<Y3_CfF`{I}q$5hEFxj!He1cbYHrpGZOj^`wq
zsVqGf$KxWiBz!22hvRre{LwgOD`_Uj2$>c$@Pw4-C>u{o&6G>Rr-jsfMr5v#xt$ls
zv(ls&V|ZSCzVHR%0^vg8i$dO%_cjf^6344?ycfs&622CP6GtSD*W-92jyL0YD~@;N
z^|p|azZ1uzfG=jxQD;~piJv-k%H_1;2#eT(KC?>SXdLM{GI7Ktj|aX9kz^dHK*H}w
zsGp6a5JyqMoG>2;y<U32__}eFB=m&7kn*K+E{kKi2qhdrE8_S-&b7joaeOTDVW9Jo
zNQc^?Re@wR(+c>SI6e*dveBW>#6J%t>qOSau|ebup<iUC&fS<_NwO)9#e517r+jl9
zTg0~pl5HZ}g|u=z;`mnlr#LvF;_ZMIW~U_I33tWuy$ECbA&wu#{dD=42R^s{9LFzl
z><e`E#__B8z~0~u#lNTg7RUZLPOKH;BL)p7uLE%$jN`QgUQgi9I1aHxCh&9uf5q{4
z9QPzJBJqDKqKD)7M{ynzh7!j9Fsn$QQo;<($_Z3SplSlu5*RGs>Iu|Hpj!eLBv3Pf
zS_!mC;G_g<Cr~GWvILq-t*-DWVZ8+Ei!=~2iH0KVc#TAk7B)_xNdiq1W*|3{goHXg
zRDnTwwMgJN$y*9r2`N7&fn&x0T?si}&ejQ>AaY{hONEmYI3<BjlAJ1Rm%y0`oF;y{
z@C+eiZY#n(oF#IOu)XkXA$2+=Dn`?}l5`ZF7x*%4XYuoeU4&f&U(Vq#6z`QlZ;|f8
z9tm6|(o=YG0+%FksrY3=M$4pq>?2A41g=Wpa`C>xe!?q+RK8LbOEMskT$jMr;@1eT
z75a5JP<)W^dZBMIZb;xpIfn>uO<<_VFd-wqDS_eQHwThiMEs6@oA~Vs+#zzO@Gjxq
zLVvz7GJ#PEOiy4&0;3ZclfXpzjunneV0;3p^DBCV|2fZugqd;iv1L*M_a@9cj>!o#
zO!$iMzJwXMQxujtoSMM>;tvFp2NRekzT_O!|7RvJD}mVwJSO2o2|S#@Bkb^v%_M<C
zjPp9GJ(@6wW1q#BzX|hb_Cx|tN`LXl&~wv`0+orp<|OcJkk&H^%oU#(NVq;jo#zsG
zUXuBN{DlM-1bm^$i^7)@cv<8X;j2P^J;6xcNZ`!`Rwb}Hfwwp+IpIvePT=hX7D;V!
z0!ujj6L?2X24S<72iyvJG9M2)yK@qVB(OYz_oNU_Af7-XfmonV%bX1OGTMhqp_H8I
z1TrGo1ab-F1064cLcog&xZ?hEL`i(9(ErAYku!VmC$K`o4}~8HR|+|gVndi$zzKXD
zNc>*<NdjvUsGCH+BtA`GZ33GT_&R~l*is36k-(P;tV>{h0vi;Np;%rf=P$r=X^VWL
zyuJ#o<ruxT-kiXe1dv3fB(^57ErDMW*egvxhVA12OW>OXb|mm^0y`7<K7k)3|4z6|
z$VYX5{Qj80Pm=ts5xP5pJ#um>hR=rnRv%h;4ovRhXU2Y2f7>S=n&{tTsP`xEy9gzJ
zByd3dpzu%OA>m)bzlDc|{|Ju=LrG)vnJZ)YlO`=*RYcfJS>aX1s|l+MYY1x!YYA%$
z>m)0_AFQ85gCuTC;&#a!3QtSos3aPRADuKm%w<Av@CfK6nk3PbVU?3MLT08+q<Io8
zL|O`436Bv{=h!5U3;6LOt&=z*keryTm>-@LNKO_xMR=-^HtKX`>5L@WCecou85=5c
zW)f#5(LRZ@<-9D3UP*LF;v6~8O`=Dj-!X~vlIWB~XGPmpa^~>-B)S9%(b<i?h^Lsc
z_#%{am!{t<E)wUww`UR;Cvi#AETLQ~O=ij0=}lo01EqPnu)mNBeVLH>6@lc+B>Xd)
zt_marlDJy@nm}@`$aO&~gXFwkI9Pat@J8VfA-4xGxnbfr3F#aza&r>5h}<gl->cq{
z#GOe@OJaHwcS(MC68DI37>*FRS2$A0*hYzr7LG|`Y!c(d$0spSWP;GQ8<UdeByewp
zIRkvM<c#4yktxEd!uy2}B=Mlgzt77v<V*@@GO8pVO5$NTpH1SqBpwlGoR5mk7Ct6?
zT=<0WN%l99r-gHb&j{xV=LuP48oK9`m@nr$NxUHPl5l~LX)P3a(MQe3Uryo`IbRKQ
zUK4pei8n;v6uu>VTgZ48C9yc*G`vd!{;o)Q5>_Ayi`YpxA`xL!7!xwKcoK<#^D{cW
zVxTaSL^g@$8MMeCmqb2^FH_i<LLrGFD=>xUQ*e{;Xg`zKmPAQ0yqCoLNh}p#CR{GO
zv6`_$E0XviiO-VwJc*S_e3-=QBtDVCN5YSVoU5<mpsQzAW|nZ-N5W5&SerDD=N~pU
zb7ueE%~v7ol31U_#w5N<VnY&NFrU)*OF?C(%ZqVtlKkr=HjD7KzJ=KyX%sja;FoTk
zcx<Ov5;vr9V+!9Su_K8ZDb!5i+az`-Q8|SwDSVg2t|Y!s;)kSJKH@Z<w+#QT!A(sh
zKPsO;C9yk+Jxc56B>og(TEB?wP2yJ$WbXW-<xk>w3HJv&8xi^=i33UaM-4O7L6%W>
zQu0Gm`%CzD5{E_p3Bn!`38jD(Dy2-dGoT-~s+`q?{(ZRt*Z))IJAGDctrTjfa6t+e
zrcft^x+%0y;e-_GrOboI@hLo4)9k^kpF)Ea8Y+^bgiVEwQaD<qv9O7d)y@nwOQ9@<
z<|(vD;aJHjY?(r<6pl%mTNT&axr>9!7j8DMqK=ae)8esR%-8~+{38i#yJHG%#7`2Q
zEM#n_q;RVEX(^nZ!WrV{3fl%c?L^KLo+WHAJX_cyg>yt0n{P(^Db0B)bPD91Mb1y5
zi%3^tx4@VC*}A9DBZWRGT+WfA{VJTnUL=K{DO?<AUXsG40lzGTUIFi&s`x&LdFY#}
zSUPLKCDs(KNMSOkc`5Wy;VN-DuT5b<z^_i>nt<~)@pa+@Qy3(2y>PIQz6?tolETmw
z?o8pX6o#d6Qwq1Ha2rckCp0{Tn^U+YWoF}k-{vM9%Gm_BE4OzDIT9Z|$;>D?n(j{F
zo)n%*VQvZ|QW%-SQ_>lg!f5uHs-cHd7$ZqtjkU2Uj7wp>B-4cxgcF66g!c+33t1=k
zr7%T&s_=f{1A*^@BGZKajdex}Gv%Bmd`Rdw?jtEP?Pr{iN;q5inDFrwo)CFb=tsr;
zKb^v0J_V?LSS|D9OVjbJNacy4&Ci%^pByanQ+O+dw^MjQUJHZ^g-r29k(Y!or|^o%
ztAX!pBCn_LhRB<NoY`0;{z(dJQdpeAJ1H#T*i0drLMnywK+{T@CnhGuyoDvSg^n;H
zj0$5Z#6=S9<f;ueWm*yje=mhhz_TJbVV-?Eg(B_0oJ)nCkfBPc|J%v1Ov2@~DuEq-
zKZO<QR2_H<XbQxYDSRmMk&u#)Q&=UwTF4C~6n>h*TE(_O_?fKMx)eT_li6m^q#au?
zdG8BM@xPE4JMC8~Y+@~?kxJw16gH=Dd>XCO*pk9l8oD&<rLirA?I|2c;h;kOFNNPy
z*w4FwoI89W&wof^r}%fmUBd5$KL~#m{v_Nj+#_Uueir#9g}s5~SCM@}j<VlH{s?^e
z_{Q$UfPYHzR|<cN91^}YABR);N4!qj*!d&kRm4MSAPo+*N@;vUA3g}M_}t9Nw*XS0
zezi2J2fRiaHN|TQYYY96;%~jEpGJc;j*+~f@Mz&tX*3e?4|(Iqvm6?Ysa!SGB#ox>
zY9=i6)r2jC%tK3&Rzlz29-GE-a{BK$PDta#G<v7eN5VE~bV{Rh8YiW3vLvUZ(J_tl
z(l}L#o+jbxX`CU_HjT4Im{z+q&P;<JH=QMHFRaxqRJmKIgLKXjQsLaR`Fxu}cyS8B
z-bHeL8eP)3OgdeKm!xs2NVhaD5V=s;UC1Ck(zr;xr|@E-UrfJcsl%ybuRx#AhL@+&
zH;qwgj83Cp8dsz-LcUiD2c>bnNdGjh5*Z-8T6m3+abBCob>ahs+z>?}ufb{DEy)dm
z=8YmlSQR3}0{KlM!_&A~<d#5wtH^D_+l6<eai_>#LZ;#y%zM({b~_%RF*1<*Q?fCv
z#yX)X5{^w{T-w}X#-}UZCQnFXV!$Vf+?&SaKyqK&?AqmP)~RXSuNWRk<Eb>B(4qGa
zrZFu@Yr4n`;mkB<i995HSjc=nBJ!wkb{da~JT81f_@vN3*WzjMIcYp2GB=HvMCJ*f
zP2;&Vo=;<b8Ve<PLAXHZSBO8FUX;Y=FQ@TJ8m~(7u8_HUEsfX3-w?hjd`tMYaFKAa
z@Eze2q2Ei(#VubVw1ti^B8&=S!niOY^q;)aX=KtkoW?(CWYfr{aVU+y(#WS#NMmo>
zd{9$No2j6ihR31DLr7@$(^#6u+B81nNaSY=Y4AG>e!sjtZMM$7$MMTmAmNHMJ`h<c
zT$9F!9MoJSN#o<R*_%YoRq`TPoyI5P$4dUG__{I^+vjQQXm6G{)>bhax!0+atWRS@
z8egQrEhS&3v6Y5Bjg4u1l}5Lw=F68&yalAOISu|Ilke`gu$cADSIp%6Bz!yTA&u|T
z_<?4V@uxAPa%g87-=@u`5%Y4N)9=<s`8&ptMz2;Oemu^X&OcVek2I$U{lXgKM@DJv
zPGgTk{Ve2+i<#uN65O`r|6S`>)!{zjZ$jpIKaJZE{GP@iX&gx7U>g2j-#^o6)zZA8
z%2y6G>>T=A`h8C|AJ?$Y@XM?t97h>6$>0Y`kU{NC#mY}5k;=j<!m1fm6R9p_3^hb*
zW>8DS@3D2n>k8`$saZdR2I36^$x$MWGB`Se#+i!0J^JUdG|iZP!cfhmQzoR9Ynef-
z3`!oBdS>_^lR?i6F3#ZC435j-_zYTS&^cqgPRQWI49>~mT!n3u!O0n%B7Rb)VlC)Y
zInU0ZgUD$aoG!w2&k$*wK|7H%1Nm7Z?KAM75d95`)aPa)V#kc>ke#G+UdEi6$t4$d
zIabU08FZ1nYX%o)&^=?GU%F**fe3ZVW}%1pMN)gWQbj<n;$9-j#aUdE#ibcsmO(E`
z-WT>3_7Pq#>?`b-!4(-?nL+;ymS(^QH$D|!l|e?n%<X^-uFl{ZdS!532IDdqpTR)+
z-Yp!I!Sxvo79SRbx<TYd;Sk}_435&LXE$XqJcFAhyj{ptZV|aPgWE)EO%K(d9=ap&
zy)%Qmg5Y(hnmW8EgAsx6$P7jWd~^n5#K&g9kCds&&z2`-FfoHAl26LuUXd3wn4H0V
z8O+JxnGB|6Fg1h6<aNJrMg}uQ9?0Oq45o=Q_30vhSs4GU3?7l>At5CXv!5&f<c~@?
zTgVbUF7kx%N#Ro&JT1bQ|BZ8Q2J<DHCwx};oRD!o&$84qPqHrrk_8zo3^*fsDT9~g
zd?kZ7MP3bjU*iZ0_#6Mp=UWoKoxviJ#TmRK!r1%@XS(lZP%fdBL0H7jASS|3vz-hg
z;!&Z0{8T)Hgq%sP^Kj3PcuL41zD`!ooG>qBT7?XX;%z5|+zdSNl8}4bsIW|Yx$r$9
zg{&5K;1zOykikk0zzjah;NuJ~%9_rwDudOu16drG#V1nRl)={`Yclv$WUcTsA%lFL
z!8-Bvfn-AlUx<GhNH%8hRlqrXHfOMf-Bl@W&0t#wM`&%b*iM}c{th(1$>3lHe`c^F
zgKs6=nZZvP?9Sl340cKKz3@lj4?<4u{MTg6+nx-5m+<Ede#u~O2ES(Tn<UdT!`vs%
z6M?t~cz?!BJ30TfxmeBhe;LmM8uE;a282~dawvnpGUlxiITJce14a8FFG_p@6|Hs_
zl|&e@vPczS)hw!IQC+-77B#cr7FmY<c%1ntuT~b!fN!_!NT;r_UKaI58VIT1Fl($|
z_ftcSBsn^Z##uB8e3@ud@n%_+i8L3s61EVw%;HwPWn*l|NWu~wpGE5|&XMzkEKU?T
zJ&QIXrwC6Ho-E`tAcLPOewxs~f1M%TR@hERwKGM|61Hc-MLPWJTNXMui;i-hm&N&k
zyi*pP#d$AaBwe!TDkp2ZTNW2&O><nBMUOzgJ8NFHbh*xd=qb71d<=eR7MEqwD-ib1
zqE8kz3aDAY<yrL2;?BGo3;nXVB8x|}nC+(}94hRe#Z_4h$l_`_uMsi`^K)&$ughYf
z_#ol+Sq#qNhAeK(Vu&Q%g2EvG#bH_8B(LFFj25B7%_6r5Z_VPiEN&OSBWqSK?-9RK
zcvlv8OUU&`dhr?|=g2HZN#Wo1%rRMv&0<^@<FlBM#gr_jW-(FS>0W70V&&7IX^Yxq
zNg8ndhq=;@R_5ydEFP5nfvnl+>$l4^Nu~>D2xkgsW${oJ4@=X38hS*W0e$CVQu7<=
z@hqOm;>j$YlCW_OO>%fTi#b_5lf~RD{*at`n3u(pEZ&v#*({#R;`uD*XYqn0i?Udd
z#X|8nvv@I!m$G;@i`OK1S@=q};uJE*<}cd3F8LcmS`t4?Z^=oWx3lIvH<HDH<ehBA
zc|PS?SXq3Y#X9P62xn2qqL_t~MI?(v7D)w(W)T;O1u<~M@nX+ONs<+&1K*4Yt2ZZ-
z59AzTZWdk^A7rsIi<0Eavv^Nrsc@OlAB^v3v4Vp_kD`1F>5~toz~X$8#Yb6uoW&|h
zRtIw5n(-U<HCcR`#o9prSr8S&a?N3V78~UCV-{az@nsfUve=r%#z3FReU-%~IlmTe
zX8Q)8!0_eQHVMDUVu#3fqE9r6zZL&3i(Ogl6#sc_h}ZYxKM0u<Kezr$$WK}9&SFm%
zKg)M-7Qc%8BIH}+eOdgL#qUAb{aO67!?Y|d$szt?Lw4ps76-HVQ#yyU_($YW7Jmhy
z{uW`nN3v`o)X!DS`H@2n@k+wVIaJA^Y7W(Ms4j{B7LPT+6nUAGuX3m*uiC=8In>Ej
zbWVRWNj=Hg7SwN$L&F@7lB7`%M~hJYZz-DQ&`iSNd6ebQJcr+M*q=iS#+k#+9A@Rv
zDu-io7@EVd9FEQ5xE#*O;oKaK&!Ke=?Q%FXhZ7XZX*ryp!-+Yx$(bcqCUlbICkszu
zaK1R^EkJ}X5vXuR4sGS@f8FD6&p1nxvxU@YpR2fUc96txzK%JZm&4^b^v$7D4xMwj
zD2JXooS#FN94^S=!W_CvznhR<iwD{;SANF2OV~p(^WlQWbTA=a7w2$k4wvO{i4-Vd
zzwMPn?;QF_^6%Zj|L~3Lf&Fs0B8Tg87|7V9b5#xla_Aq#z`sdeox?SLa3TAZZy)|`
z*+DrB&f$g}t`9=_3Ee2?kRX)*#lcNE49{Uo4pVcuIfq+vxI2e?q;sqA4%WX2^M8BJ
zoR#O7?#>+UlALu&;fNeY<}faY@i~kN^v8&dR?Ya`Z!Fta^)n%di8)M`!lXd|-k`0S
z1oiKe+^^*O#UIRJS`H5c`hJ|#<(!c-|Ak?|qedCa_D~KF=ddb=)j2$p!=pJY$>H4`
zX6Nu&4hwU5F^9)<cp`_nIn2x9Nk#Is@F}7HMe3X!p2-;_Hc@*^Skh<Z`+N@bMV@1G
z=qDO4$jJ;WU?l`Qh`0>?QVuWY@Oln!<nT(M^P0%3%vCTR8!R%Je=~=-b66zbw{qsu
zkHW=4sCRPkm((a^_b$)D$|0LWP72{1VmZWfuyb%EiR2LVy@FKyH#-RlQ^KT5#|YCo
zWH`V_nH2qs&F4^Hi|4Q+hhh#cYgj?3;N?)tVX2&cVR=|h^EXV`<vF|;j56lm|EB2!
zX?~Q$${apq=M2V(-)TRVuP^*0hp%$jl*5`FKFwjRyw>HgUgWbJJ{Ms^Y>N%zUkbkn
z<g~^c#r+7s&S7&7KjiSEgj;g>CWjs3TXWc!!*)MlfDJWxzm;>BaAywR1tns-exrOZ
zFAlw*M1B_1cXtkZ0?zyUFFEYZ;nzU2PlVe<smZ6U-*fnbb|#N5c^t^$AkAGKC*|>H
z4u^86nMbWW{!)-Cnjik1!{HqM$>B&2l_g<3A)U5XNlx~B|32%F1^TwxYSOBjM>Q!_
z&!a}Z;#jRU6O32wJnH1pB#)+2sGCQFJQ|AE%cH&s)hY&89!Cd~MnOFEZ7d;crWuXD
zc<Vfx=g}gMW94iqY?a3``Tu)z@l7=Qz;SsTpEtjOU{t*LBJ~96pD6T8bh0>o+vRae
z9;eEAS{`Qv^3(J1E4Hm9{!RHz@w4)1pU2sGbjah}JUX(-+6u_n&dFDd!SnLyB<0RR
ze+c+(&06g$A@#4#qgx&q<Z)ph-6iasM~^%%%A=Q@Jp;{4L@v&oSqFQ<rFmQ?3FGXd
zIR<0vokyQMF8@!Ru+#R-;|ghBna5Rm3=r?1udoITb+shd_&PEXoUL7#$G|)WNl2ZW
z^0+>a!Fk*u$&f&PV;($IiV8#X7?!X2g4-X4zAd^r(7Yv&Tg7h^-X6&B5Me&=%H!@l
z?#W|B9(Ep19wYM@rLu(c7@fzMJl@TtJdd$?j8mw$h2!&hIFCp2n2^UrNhS%W3GdBg
zvIsMIpU9Lvrsi?K_yfWR|5F>R&*_2wj67zF&k{Z)<cmT^#p}^L=H&5A9<wEXO!&C)
z3E`7MYCe_6)8bqp^25%RbAfQ4@Yy_`6QRQMBJ=ZjA&@ZOLh%>#cqxyU1NrMBuLxfi
zz9wWJdqd<+;aft+O!*@5#lm+2`I0>RJswoB{!<%tGSr%?p-3LlJbqyP>lZMrrC1O)
zo<|~&WFDzJ(s^u>Jd;OO<dZydB5od@NIs8(2xBga_~W9K$NO?F6)qDlrv>Bszqp^7
z72+S{u`-Vj#Tn1XA|DBdoQG9;tQPn0Cfr}WCXY|^SS#U|it{t^&+}L(vR=4B{moD4
zi=ZAhO8+Y<_+DR&Gu_R3Y!Tm@$F@AS2l5>x;@<=k-|T#w$4<q@u;0mRm+*U`ANh}Y
z{FKLTrM^e<zlA^N@r%e_A!GP8kA3353HRsmyT~7T913&}<Z&=>-j4k#WGHSh_)ESN
z`Y&e>=kZS-NAf&Us$%|Mr2quHl1SwOD$g;Up=uznRzP*}S^AWtRsppOm{r6>Mbs&v
zZUIXQc(;Ih(z&L9YYV7fK!XAr7I0Jn7ZuP`UX6rZghvY-7to}DrUf)BpsawC3phpc
z<^>!l(xQNt1v5iyRlqR?99uv?{?$ttjSo-3rSU($fYt?^P{4@=v?<^u1@!Mby=t3h
zUf-nql2Z$4TR=PMoL0c;1)L$?x1&+xSzc$#$>N`-bV+!%FW~Gz-l2eV3OHBJjs<iU
zIZw!D?Zgb|5#xMGx>q$H-ZF-+1$2|w1qJ-hB_Lt<0(yvSJQ=(wzgVHD-?xBE0)DB;
zWd-yS=`HLN_+Bo;q)R`A`iWmrz(`tv0{V+w#m0(;C>c<|)sm3!;>W*I9$3I25sr7J
zdwl`76mV<7+-(O-enSB_iqLmR0Yd{mOys5lhKt->0DqLst0SLr6rB2Z7jV0L?-1T8
zyi4fcJMJl91hZ7Yr~)1<;PC=R7ci!PsRi6$z}SL$D>S}<2?aCv7$+w`x1U(Rqyp|O
zU~<8nz(yTjB==F?$$XDLrC`>meK~gqK2X4etb_s{Dqvax(+ikUz)Xc@CK)p|Nq7#x
zU7=6|F8deo2zweWzf$xc3>oKaIr#zULVo{Mz>@{MRKUvxJXOHc1w3EC`~v0_@Js>o
z3V61Fxdrojh!4dNHZ!k27br_SzLLp3r>OWE=!F6n6tJ*>7ga`j@mL0bM>-3_ToGR>
z;MD@&D&TEZ-D?HBUcejTT!!_PsrjZl*Z_TLyQqN0Qb<oW$-Se(?$wHMc>xxyw}=Od
z2uo+H&@R9!AR_J+P%0o=K&*hcB&h<@Y+~`GkSWrhXT*zvB+Hr)c)oywxNr8U@6tHv
zMzfTItAJGntd_#^0#+38K>_c{`M!`n&{tk5=SS*PA1VfVeH`d;xP4N<ngZ4puwKGX
z3s_sgXF*z@OXx@C?}%njHWct>0UKE@K|B<GCBErD`d^DPiOmIU5%*W2w-vCR&H}#S
zI4$DRB6bw;Ee%l-Cls+$n!gsXPvpA-c8Pp1{Gos!3;0Q#iT*6ITewHato{=C?hS_0
zZw2g^ut^cWi&QNd8~%s*fdUQ|@Mi&s3OG_gsEEIU7!DWkx42&e4DyehtV1Y<%0kL3
ziBMie#MiG@M0Gi92<r%I3Tp{#3psD8TSPsd7jaY(jf!YcL_<mZsE9|)$+Q|5jfLSw
z?)x?^qFE7TMKlj|jwzx=z*`p4D&W*VR{S{O@j^eU6N_jgXO|*QD&piK&XJR;oFdY$
zh*JZ}X+@k~#567e1(LQReC2m$AUR8<eGz8|k`5yN1n=A;ItKFdis&TXS$KXRr#<W%
z@NPw15bz5{x);%-h>MEo8OSeY&NY8yiCEIhis)6uEk)c~MDHT{6fvlX>!p0T@G4>7
zBKnD3A-qz^Qui0}Yj{8rR|oQIe0dSq1(Jcqim^F3kPI*4hJfEFGDJAEh+%>JrXUp4
zx>;>X!t1soMoQ;);T^&|g?9<>7TzNqA!I1O5l0m<x`;7FjFo(9;5)8}@kLB1Vqy`K
zikKY8?+wyry|JYC6*1*Mx$?`-Hf8(|s%~ep(TkX_;C_lT{{P<ia1oCbah8krE*>pn
zb`f6{v8jm1ig>&TuZU6+PZaTF5pNaob`ei0syBoDJS{S(h-ZqJTf{s$7Yd&(;yID$
zh4Y1e4qp&o5J+Au;-w;9mXkSuP2?5ft3i2R4}9Mc@ykM7RK(&U-YH^<<bM3bcLV)+
z5#{0*yN%i_T!dYOqxzv{gdLur081wpgz{&$i6WAcq=ac<CeX=><b?Sm3W2;>ge&gf
z_gSK)MJzAkJqecuC3?Sz6-9hm#74=PlMjkmDgL2wbrC$j<)b1#E@G89pIJC{q3{za
ztPwK)Pm5S9{#g;9i>xbRL*To<SaF*77n1mAGXGmq4E}Wyn^_w!PIj@Sh^<BJ3&L&_
z*;&N)Alv^d;v3!qRD0hF*$RGd{7%Zdg0SC<{2=_Xh@S%a?jrUC{AZD0gnNa*3i;sn
zTM_$d|K&U){6ly^cu@Ff5r;(n3Pu5Q@^=x3CHzO|mo(%8E-JaG?BZBAcp`97+eIB0
zRVAq=tS+n}tm&ebh(AAR&?Hn>PF7lD7xl#J3mdp-=;A0Bja(cZ1mSeWpRsTej5Cua
zE}FV%=Az6+OX)NhQpb<Kg<CPlqokFKW8~|9LB<r1bIrTO<6X3t`~=~N!Zt$cu&}2D
zyq#;T+^H^3lY}*Mx@+w18N#+ge;l3ZR;)Ok?V^K=i(Ope;v5&}Dh5W&%h&Aa;yf3f
zTy$2P7X)dYFVe+DR~OyfiakjFAi7WqF^29ger^)#;o>3}JsJP%P>boIX{}AoT<YR7
zrsd%}&*Zt6i`x}pZ($!7my7fj_IJ@w<O<=HLca$xm8)C~aB;PZYZ#%tZgO#*2z_sK
zG0?>zmFs#JgO#^`!``5JU`dBaK2$g?$UieS+{Mju-s0l6AkJGAijn*q&mHo*)5Tpb
z?sjpHYv%SNU5s)uLfoGok9IM}#Q_%wU5s@x&PB>a+QoPm6I{%9@q&wqE+)Bn$i>4h
z?sYNQ#e*)Uxwy~86c_iqctCxIMdLNqHM<mga_alFc@~>=fvL>tE@rrx>0*{^*0TI3
zME_Bd3;07Pgtq(|dW6Q`#T*yUxR~wYF&9s=5nb~n!Zp~(T|B{2qqoc~$nEM3Bu}%M
z%0g%A8E~$Pc`lxH@tkW`3z;tS!>3oCSI<beuj6^wY?9>T*a8;|spH~Z7caVa$;Im~
z-f;1<i&tE{>f*Ja6=?1TYGJBF$i&7Kk2hVs<zlgmcU-*fVv*{Z8*-Q#W-qI!m8WW$
zLF5;++=b;L;v(uIEM?n;!&=&4BILy?qVm(LLopX|7YP?h7hAb-7c$vqR6JCHY8<~*
z%ect8_|nBj7daPs7azL#$VI_L(ZzBX?<on_h3BH=f<<QSEtQZJwahg?8KL!NJ@Ah6
zzKazuK2Rl7&R*vm0j9f><A`?+E&;h%<zlUi&s?l_@rjEyE<R-ux|m!sa^k!hCaVm~
z>vI?DTx?*MaB<2UQ?&JppDDJHabTtWG}0`9f8}D6i(M|hck#80&CH~WZ)pEnd>7kX
zY-d_kLyMFI5AEb*ou55c><$;-y4dOBI~9#b;xik58!_hM`^Nc$iyvL=b@3}xbg|pT
z9u9wvJI2E&HRhRbYWRBsl3z3^_=k>tE`D?IyNf@ludm?gyPtzXPjfuSk1?}r@%q!n
zAsQmjSn|JI{7t*+q0GZ!7yr;`d#LT<h|525qKb#A9^j#pXZmwxA(vD9MG~6yTHN{L
zp}L0}9%_2#^)AcEf{^$+OoF72hq@jbdN|5MJrDJjbORxm%K2jvs&P?;9lnu=qdhe7
z&{V#xnZ``Lk~!^){hw;&M2^1Z9$I)f)x&8_*F!50tv#IJ;TR9cdN|I*@rr>pcF}Be
zF-t5$n?|PdpXi~Dhm$>=BAt^wV`R9>y;qOkjGwhs{X~<{=^oDT(B8w@9@<K|org0$
z@QivEpH}NEFR=gWpB+4$<KbKn9i_~L4i02aW_WREpQj4sAy<sKvxoCNbn(#DLvIg#
zJaqGLfrpDdT;kzE1@G>mhl*cc%TpIg*wZs(ff>Fn$nB*bF7wb!_0KXcikqDKqxf<U
zeLeK|aFvIC9<E?+6^Z|c4yv*KSu=kB9N^(<57#J@jE8w<0S5+a)B`<?@Gw%r2YI+&
zWUz-DJlrVG*lzJKM0}`lnD8dya3OVW_A0(OzEzUjgtrUt2z2iBaF_Vq!h3|A*l@$o
zC=a7O<Ruv+WMd^fjP=Y7dYmNVJxuU0(ZeJUFL+oW;k_Pad3eafWDoawnBrlohX*}O
zlkfe)2ZVfM&Y!O_tJ6KqkYuKZm-HPgh5pg&JmL9a507|w#=~3>k9wHx;Rz2<O8+s>
z9RBdQIBSxj_^$RT4^MlT!{%;mx*~=CI}r{L|HbP(56>&evmTxk;jcRA%h#s!<zx`9
zWG?jZq6bHkmxOP6c+11f9$xYAs)yG+yzb!*^#=|se@7Pkq5mqMFD%~nu*k!^9?Cr|
z_VA8}B|-e`Hh#}x$6&9pBoBMAz5n~qm#@H#MS@UK4>1pMui`B^^Xcm(rH~S)J!As?
ztcRSqe}pm(c)>$a5?AO6{dW+{JS^uZSb@qb@ScbFJ=|L|7Gs5n4?J`)p+~9WnRKN>
zeJK3M!^a}4Jamx$>R_mT;$e-4Pd%*l@R@W@F5z<z>uB*xs9M5$37NzJ4;wsu;o(aU
z8$EpMVW+&l5^ndf$-~#;n>}n5*&^haV(@L^ek=daGdFPxzwxl+zjChpd)VXQXAiqP
zeDC20`TivQQOF+7fV_4G&R<0K2`S$z@@r7Q-#qN6jgs(>K!<<e_2W6{;ZF$<36BW>
z68<eb?BO2~#>`M5)gC!Ys1)$ZBDBWUN~m5!vl7ZAsUbY7gqkJPDxtQVb%l(fPRY!0
zSUL4ds9!<@$^E*bZ^KfBEhTRxucJ$79E5Em($q)ZXhe=H;rJ3-1UfB6S_zL49;-N6
z@YaEjKN~+m&J%@gN;v8N_dP|<Q-!CMaC!-6l+d<>b|tiz@J!)ZLf#OWVIR+ygigLG
zI49ueigXm7C+t*0=fL-TkuJinC3Fkq7nE>e!2OMme$FpqZaGse;o=f5DdEx*E|c2W
z5_*Z;A?#g3pAs$)Vz^eMZwdVZ$rU133i}JMDq%q2d$q_lY)AFv>*O3*!XT0BOSmb}
z99+T;;x`J12!{r~!$kZ@hKt`^!YzUCttH$R@Y{p5?v&)N67Ckcr-V@=BLdBlBAhL-
zo=1z15pv%YCF8`$moPzul8GXdgsj8KBKHZWlrUA~{t})kVQvWz$oZgfS_#udW(c1U
z&MaY;$V0-1g^viC)}tlN7Jp3mcpzsDJSqNEAbDD3j*#s;uY_kyNH0TX8J;WQdB(HM
zSh@KnyimfS68@6rf)e%xF)S?MMRkUkN_e@1S4w!bg!f8#zl7IHc)f%aBP`*K65cE!
zT!O8DZ<VmPgm+4KJBViyt)Kevl0Z@}@-F*W@U5REiEluh5~3x<N{C44hh<jdB_t&A
z_gW;y{Z5-HAuDG|m@A<uk{1?)jKPoJEx`*U48Anr%Su=-?r$_&QNjl$Y%O712`fwZ
zu!Jv5*jU0xC45}M+7dpK@+#q)5>}V+NeTWp2!5_Um6v}n{=9^Ba(*FPFWgW9@0-jR
zFW$lZ?2&&}!q-yRB&5XO9I{!?E$mbZwVh5$elFpg5_XjEeF;BE@~!Z@l6fB4S*rM=
zd6$I#vkBw;v4q`{{3P_JzI(*|NeFd*k#lbezlu=8xx{Y)-(SM-0so_f1L6k*$)6&u
zioZpwE=9GaI2;(^e@g$4tnYxDqG-CF%k!8(lH{CB1eJ`U2&kx-Ge%4(Cd4da7Ddbv
z1LlkwGv?i$-HE$9Gdn9{1Qm168NS<h*!RctpR=b<O?7p3byanBPfyP*R*7!qOdKL-
z(oPHEO@hsWnI+fBVci@C<}gUa^#nK0p=A!Ogs-1NFCndSXd|R;4xNQicsn8O1vki{
zgOHAm(oVVm_vMN%B6iK8n~?5;JsO-n8=SpG=_A-zuwR3xzmNff8wzgJs6|aS$zf9w
z*)O_#a1KLqcsYkxa@Z_~&1HlubJ!w>p*c*=;c!ug<*;22+vhMmhY>l9%wbdx+vG4V
zhtWBV$ziP6wiKipx5}BBjtGB5w$7OaOokI~tI`QMj2Ax{GUkbmT04lo2QPD&l*5j?
z+$o2hbC}$yvP%xT=CE51yXSaN#|Zyl6YORtaIYNp&f&lu4$5Jl9QMuO0QH^B`%$F^
z&Whw`Ez+k*2jT}y=R?JFh=}CLI1iH!#E;0~$Q&-vCF>rQ!znqOn#0jKOv~Yz9FEQ5
z#2ik_VR{b7<#2osCp7x_KP4%LKVHsI(aAZ?T*E<GqZEFcS~)X^vvN3H_!)v(PtVR_
zRu1RpaGr?g<S<(ZC9`e@&tHQ-t979$7v*qq4wvLGCx>~WT$;mWIn2%B@-?bZNLK5A
z0<UPe^{O1M&f%IIuFc`z9PU%C>vFg$hnt08FL*-^H#W?hsWd-_J5+Q_4!7oTTMoDD
za)DsRlQl|sXAXCXez)K~4W5kQ{u~|<<vGCzb9gL=$8&fnhlg``M8t(TJSv1QO8l=E
zY~=|NpUz=X4o~LrlrAZjKbAftou3tvml=`OpBLqY99|UiQVxq7JS^ppoUi8a8uLaT
zgYtMihc|NgB8M+?cr%Aw4%Hl@9P&97atKt{7GzyVNHK>}gTkiW9K0NSQFxg}ERnFm
zQ_i8%D9v<;b6AqY+ae}8)N)93sO$2rH8?4R{7Z9qCx>M@EYIOx1>pyR@8$5me9az_
zEo=Hi6&YM|KFMK)C?7YX;!|CImc!>_VBIX{v+7^v@O2Jt^JtgHH#vMOo)&q0m&5lt
z{F%dFIsA~rk2(C3!><zcQw~4>uhE7Yl=)i@zvu9WirC7U&iy-we{%eD1(V_b&0%E@
ztJaXPW_KW-Ov$D^n)6sIkG1n?nMbQU)=}xYd92r9BWKnTBJ1bTI*&GaGlP&wnDsP+
z?eo}xMJnx(N5?#R=Fv-+o$~0CN7p<$>oSwsEsySb^bm!jG9txhl6&XTCy)Ml49KIe
zc>1luneh{DDB?!>)p<CpyGes{Qz0Y{&SOX($K`Q+9-HN{c^<pwv0ENn<S{glZSxqP
z$FMwx=dq=#j1U|xI5Lk>l218Ql8ufLJ=0;UJjUj+bspP@I4-|>3ScSuGkqrHF)@!F
z@|Yx^?F6%;?Hl|%s)?QRn4HH>V#wMe8_mn#E@B|Edmek_F*T3FNy%fcJPyp`pgi`@
zV;^~Kf5CkP_iOku^U(o$Oj)BZ6n?N64pobX2>)M;hlw*&<A^+t7SEA+9M#Z2>%z1=
zjuGY9Jf;iD+R7|&LLMjPaZVny^EgSRq@N~aMjj{UF;n;{d7LUFlbJPox+rJlab_N8
z2|qiJSq+P2JQ<|SbH#9J9_Qt8ejXR(aiJ)e<Z+P@@?5+|T`Eb+oCf8x2G86)E^pwO
zDXz%lO0iv)$JHvjCXef7D+;+bkL!f<^cOF0$m7O5ZW86bJnrXRKpyk+xJ8r&dEAl5
zt-@~;yj_r+Fsys0@OuRB5+w2N{OWhR?rl)GfP5g22lIF`kEil@Nc4q*4>x!o$(xOL
zR)4fXc`T2|DJs8u<(zFIk>P1EJS(^;k7tBrt811%m&fxB2`_N$YdySJlw2NpAus3g
zN`vRsJYJKDUKiz!2K~+a>XWF2JnTIF&0}RA#XL%REGLhuIC(^Q#Cf<4`+GwCJc0%#
z%%j}ED|u8K_|&de(!k%zqb59UQ0hY7%411`^0ttrd0cU!8PV_R@;$-#8$2K6@uBc#
z4a!&dSRd!{32ob;tYB6b{;A++4f^Loz7YIU@T)w&Zj@5nZyWe`d3-PY2f-f&e`=Ke
zEabp5jFP|R@tZDxZ<PKa<WIrB1pgNNN08CGD$kcIaB2~!6@da;6wum68yigpG#79}
z0Vfu)Rsm}luw%i@9qSaZZUGw=uyFzF70|MPUIp|npj83u7tl>Stpz(2(6N9v1+>*=
zy8_x5uz_%X8il9YD2>1DW~Y<rT?*(dg!F7=buFyk@$258_b8yJaE|LtLZ1TqH%j{o
z=_kl-?EykI6wDghq<~Ee*sOrf3m8~HC;shA0fWWB*Wr1|_u_}>lENurivorguuTEu
z3K%B($O1+Q8D7AM2Iu_l*60Gp6fm|y*;2?>f;{D(z45elqm)}=+cxm+3m9L(gaRfu
zDBBgxY?UcY9jM6;Dw<SS{m#oy1?*hF<N|gn;8+#yTEK1v99Y0X1?(=$-UaMaz#hW)
zEMPAo*+VhjwC-ELexgjFg@v${1JrJ2)gK-)&jpAdtkS~@n9A0LA1atR=y2gj7I2i1
zBMPf?(a{A=6XlqKdD5N9B*I$k+VldBE8uuBuqYEncv1l~3V6PN7YaDJfSCncSHSfJ
zoWc+-;F1F76mVJrrx$R6>YgEZb^)^rII|(`EQYamGtMbswut8mp4*5ewn$CR7cqNw
zd7<!&1X+5qkZkke(gH3oV4f(K6)?BKLmOUEz?HhZM(`@Zs~Mk-*rwmF6)}s|8w$9Q
z_9@`W0&Xhc<^t|6;2tr|7recITZG(Nz->afiJI-YEGXa(QSKDHtFZcgldPxI`Q8E^
zDBwYr-Y0m!Aa!_1$if01E#Tn-9%*<adx!2Zl~TgvvK!L~ar)vZ(H9l)OaV_fc-XaP
z8~AfVI9@XMy;#6Y1$<J#3eguA5Ef7_;N=2dDd5!tUMs*Zps3Q<3wX1DobWf)7YfPi
zvLHwu_~eCuVMe4>fKz}kx+~~4c-Z}H*F9)ZxM5N$pjyDv0^TVg61`SHDkLr-5t7Yr
z^+v5FLf#VO7<pSrX4`iQcu$wh1>Y~=Lm?jsQoW3AStII5`A9_{3-UuQpBC_00e=?o
zmnfeX@Pm*q3iz^suL}5Dm)|ww^P2*`6(!r}oS;7{{k~E9V*x*@^ydP8E#NodzcgC^
zU6<714<T7Mx$*UP0sk<i+gQuSzXhx$zismQssjJ6N!vbx+1X}}j{jxXCfnqq%*AVq
zr=^W`gsf|0J(W^Umfu>5zP?~4p{<Q}HeR&xl8yE@Hn4GmjT3Eju+h=RHa5oD=wzd_
zjm>OqZljBht~UDG=qDlF1bYc~x6#8!PurZ(;0(e>scml+^%2aJ>~CX$jX|PpD7dkW
zO>Ar={Il~`cWqM}14W@6ZhmHUi4PWWh`st9)h%>6T5zb1VM2!67%60gU}oe|!YP55
zV}x&MV=EhDg>St^DS5KywzaXdjmb8~+n8WuqIkBqv4f56glBA%gzqG{qirTcei|zq
zrwsmGZ0u^|P#cGdVK*E5*x1*`?l$(IcWmrsV{a9)-ONpy!u0ZflxE{V8wZKu0KqA0
zg3SDle8xJsQTGrbtb1t3)%kp?jcFntPNxVt(#BCXj&5*L0{L^w#>dz=*2Z)j$Jsbu
z4B7WL{+BJO5BX2BagB{@ZOpK7vW=NGP7(9PHcqv1nvHX8%(ij5jWcYVts>Ss)5cj1
zoZ~UG+pGqK0dsBxzre<MHqO^2*?8uJ)i1PhkqsWCVYcKYHMzvb92=L~xXi{p8&}wv
z+mLX%z4~49OyMhSTxH|xMkys^89USAIvdy9xY@>h8#gp~ZWO}Id6STg^A;Po+IYmq
zLL0Y<ez%Q#Y}{^RfsH#Fb?>Bo8lR58i=2EG&*X38J~2Ebc)yJYY&<AVb|-Up*2=?T
z$j0WQHXgI_w2ehJ9vA&d!6yV+kyV}&o`uab4f=C7o)ymHM&x<k#tV({lFccLZM@78
zSH#9eykg^38z0;F#KvnjUbpeKjiol;u<@pis^sKs<b{Mb3N~yTjty6oqK%Re>hsG>
z#ykAzmS@8kF%YC0*(|_SC13O|H~1^|>XkrbBes#)sHx~J!PG{*!I=di`?5roOd8vI
z$HoVuyes&gjrTP=GGo$=AKF-^qUC}g(S2*Ic2?N<)JAg=YZdXCjn8fTV&hjEUx@iT
z8{gab(#BUdzP9m=h~Ek_in1oM7^5aX*!W3BKMIn<Crv*K&%F7Yjo+EuZLAdW4;z0q
zIR6wvfq&ch$2LcvGU4p?ss>MsBHzFVie@h0YBn=SlP*c28fzD^jxKu^v2GFT716$k
z4T@-4L@UwT7O{R2t&3>WsFl5RpS=v8wb-s`?DJGdt3weTi|A5BS21@gqI07b88RDo
zE24W5Jw(q2X4X^c!_`->B6=6mN2UFW=wC$NhJ<Y8HlT<NMd7`3Hb-+HY*NIgMeJ0>
z&P5C?Vo(udi`ZIhgNqn0WJnR46|s3k+E5`|6j$Gg3~SJ-%!ndJ>T;CemPL#%VhsD$
zSOI3e-b$sMt+o-ez2G>(ZHpLR#023Ji`cHX`pX9FWA-9ECG4QmNrI&BD1`LMMeHK{
z=puG4VmIN37qNR0dlYd%5mSoTvxvQl*tb!4Zz1~>SFcg|nN14Zk6ja;PR}fVpe_$C
z;*cT^5}q0G&>{}g<y1jhAd3?U$$Wi85l5=%D8a1z(~3Bzh+~VGUc||wA18Q15hn^c
zzPS1x;Urzo5X|ak?ambC6hXGdc26(jj3QoUdMV;e(Jw1vZV_h{akegJ6>*`Ea|CA>
zaW1W)d&cubp`7!DTtF9GZ0x|_MMYdJ;w6G}8l0CZZpm<YgYr}n^NP5lh$}_8zK9!&
zxT=V&b$Lw@*A{VI(cED2zB0SD%)YmFV-Yur=fNUwE@FNW_v!MMB5p0>jw0^V<!wdW
zE`-ZbCRM&RvY?0qbujX-BJM8Yo+9oou6~}Ic_HiF|1!q?MLZx0RGa@w^H32F>++Ez
z9xdWA;R}ms?ri%0co9#C@?;}6vRNa`=VW+VrHhJqM#!^*&lT}}5ib<+Vi7MDu~@`R
z4L%yqo({7vo%m`IuNCp77+x17y<Ef_MZ8%=u0ipI<cla2VHZ)<rBj4kL`gWKg6HvA
z*VARzS(+%&Whlr}P6U-AszpRa#6`Sc#0NzrG*=PtG<eb?-YQ~A5%o1hvF_VNEN$>)
z-RGcqw?TQ2TIr1ChZ&`akA*A~T;7P}Pl{L}%IAWgGXD#qd|D%mYT{osV)84MeqF>j
zMSNStcSZbM#4kmB->CIt5kEBWtolzyGrMK@uSNV-#NS2yR>bc`{2|Ui1^?F;Pow=)
z#J?h1C9G^nTP1{+WZKM_Q8KdtFPlqPtAt%j=2QP`m#|LBoS)oOaNQEx3n67aAuUU2
zC1m}Q!oFlay49uxp3!YvGXKlaPL#9e;^Mhz$DNiEI+W0n%&OH_kVmIFm(Znzt|fF6
ze-A-^n!9@m{MtXich^%gdkOXyWD|X;-Z+a0_32l_SsPjXOBf){H!NYJlKGc3HcB-%
zE@6`rrtx62z9&CWJcCLYTrz*CJ*0#!sci|Hm9TjUTa?UcF3KEL!f8ZG7*@h?5l578
zfMx#Kd895U>dTFzrR|uK`JO7ZWh-PDE8@fwwk~0t62_^gH@C4?j<dE^>*Hx>9{w-k
z!m-wjxkfjhQQxkF?MwLZdhAfbq!P$a^>!>_CrR76gvllB*TyJ7c<x->JO{g$uv-at
zwYGLw69<;C2aQJc^u<^9Vy_bRE@2-Tjc>Z`TQc9Z-mirHOSpQhbwCMsa=EA^Go^&$
zI3xU^5)Llm5E*B>#2!i`w6qSB8f2bY!r>(xQNocW97V%QCIjYZ>OY4&jH}+3osTKu
z*b;g&40sHH#Ie?Kl6Jfx8#+PAi6s*oC&@uG)Mz>fr<8DN3D<mvYd^zjC7fQu<ts36
z1<ojeXWFCKv~nh$PGgoZixJEDD8@M@%q}6RpjN@TC7efnD%hc7Ucx=Ugc~=+mnB?4
zo0o7=2^W{}Ny)q>%un@RQbMU@4&Rb<P6?Nma2cb5Uw$s(238b)c?t7`Tp@U+;8ipu
z^%Q=cAZuM)!lHKOQ^VIcDB0yrY@&n*=-CqHtLPTmzrk~>klO@r7hF)n9YT8Wy>jVx
zR|$8E!pnPv+*`tZ4GP&FEa9ONUMgX62@jX>h>D&STv)=B4bDe}JSO<K;1hz>^C=-u
zXP1J{2(ra|lTqV2T|O`Pg5ZmS6WW^6mrHn4m&9Kw;nfEInvmB^c%wnd_;b3<mr!WX
zZN^~(Cy!HtTY^`DPsv=Lm(0I{1|^g^e)$#963BBR?{oEvN2P>n$^7AaR6@*1D4Dn0
zOwQ!TKTAk;Suf%35=ePVaEYM3jp13k2F|wLE#W;i`o7=?f~0>aWLXKz8<dYq_*nSM
z{Vhh(3PwKvYhJJ`Pl1;3c?n;X%%2)}<=s;YiywlfVqcZ;bqU{;@NEevvupfxLkZsr
zr}e%s;fE4_EMaUfOc-SS#9-#}c)?!;dHJi5-voaz;g1HLt^8HO-zEH0!oQ5?0G9<=
zS;DFkKJ(0Au^hm`sV+`)(ZWHKgSvya95g#v%fV3&j&`uNgLNEi?qCZC>pED^L01Re
z9JF-M%0XubT^y|MptXYz4*qSj+BimXI|n?zPNc1aL-Z}~_6{~s5x-E)&n9<ivN}4Z
zFJ$ZFm{G=0cAwhC;`<Z~U=q7K=;5HRgMJP^Yqt13?Vb*LIpAMoQ*3X?1VA4Nqz!NB
zVfA+~z`>>t20G^B+Z#IASfym%i265~R}6@6;+TKg<|oGosrAjoGuXip$Na&)+td6p
zH>*=gG7ohy%)!nMCOa7JV1$FM9E?>(3K{8Ol!MWYR>shhT}-VlMPYN?FxlF{HV!6<
zGS0!aG#52-Fy6rg2NNA^=irkjt95s4pPp8#Pj*v6_nt-$e><q+qwTF7Wul#ARVr^v
z9qg*h10C$<V0Q=mIM`Q|Jsj*MCHHjjSUZdIcWE|N_I5xc)55pvaz6+AOa1{4rbs?{
zDE!lA^E=4F!StPjLmeD0w!;L;GgY=S9pO3NChG_XN3y8d%09+UIE`vJxY@yc2gf>?
z?%*N^7dtr4!SN2xb}-Aq2@Xz_r%rS5LJ#XC2PZq2>0kz9srzbC93ZFAs_GQo%_i>c
zX)&BmcW{R4p6TE$HBI6|1qrpHhIHjQ4rV(zmzLoRzYf0XVV&pTd|lGKPqep4xlldg
zSJ`Q$OB~E`aFv6r<)cd-T<&0=gUe(|%ADKiHSsG{@mGc7l@7}KFZgT3aJ_@?nyqU&
zH2CK)Vxvj#lQ(a0aHE5p#6}_P4g>oZ2e&$S$-!a=w>h}o!NU$7aj?L_9V}v(9o#7k
z-0k4GRjck2&XAyldnBI-|A78J2lsPyIC#*(L!z_ei+fxD4!3S-VSaShLI;mJc#@`5
zV6ft24jyml|AcfVkrDE=%=?UkXB{k3Y|t0f_BjX7(_ao=R1+M?#THi5WZ-qZEo#Mq
z^Rk0iDAPg3!K)5lb5P`<bMU%@H&iPx_@;c3b1=21bw`ucmap^k`~MDX#*9MiSIgMV
zao~zSP@FJPcn*A-f*#LC9CZ$5RVD|fj;e!1!Xs6T1?Tm)c57>fc1?XxMP#%raqu=%
zlZy^6mO6Nc+0VsVF5Y$U9$hK6_Z@uT;A0L|UGk&)?CFONmN}pf%N=~=An0qA+gRIl
zFn(D<WgL7hW?p{g;7j43JNUxEQiTmGG6-4v6;s>*qc-tx9DJ+rqcQ2P?;ZT$;78T{
z!@-{pesb`$gI^r{>fkpAzdNAaI0G`4vc$;C>)Kj;`tX;7za6Y{cxnp&Nanu|Ryv@|
z*bqaP){dI3bz4~+Sz!Km(d3#O$Ws1@P#}}i+OA2?ZCz02I>Og=O@?33MN1d0T&(Y+
zwTm_`_>a9Nu_&s^kcB-B)y_qG7f}zhFkm+sEgfBSq9_+zx#%ou0|mRd=<1@Ii|#J^
zyBOf2hl`#r`nc$uu{Bw}T=aHLhG(9M`&bmqfi|ay)lUpryM!CM*w{65&_<#&!!T4f
zaj_{C?qXt<S&>2pxftwXh<Jv(7~x_w7n{4-!o^S#hq<_>pLJCWi&=uTD3InI>0%UB
zl_hDt(c&DV<~Y#K7;bDh*2UH?_I9z4i)~ztBae$+U2N-u#^0Xiaxvb;1lN3yc%qB#
zT$8D2WR7tzz=%(Bv7?KfC7kW<B!uS8`Z!t5vGq&juiab|MXbBKi#;TBPj-zfe;3S|
zlom8we>PeBy4a5uT^#FTe-{V1INZe%E~dC<K0VmQAubMdagb}K=IOmmzGdA*T^y$7
zrb<cLq1Mw_j|qWZrp`wyJdT!zM@dvW={Zf5`$t;ST^#4)#H<UeRvq7nv=dy=V)PD;
zaFUA|E>0HDOc$q+zpd#kht-|^4Z^wRbQfp1817+&hcjKA<)Y-madEbbSuSpMahr>C
zT+DWHom4&7#d$8~y13lM`7SPSF-P<ZU0mdXk}3A$hE|uzhKy47i1bSp?U%V`$w6yy
z*!nH3d1AiW#T7!Xba9mnE<ec6(ZssfsMfVA<z<U5*7XY48(iF|qMKYZLCkl-G;%Zj
z+soAD?-mzd_cLSpb{7j=JnrHN7k8*G!}~!Oce=RC#oaFMadE%o-z#{ZAT^}gbXGPC
zKR^rgHj*E5@vz!`L~M_`Sg63D?>IIelYFK@n&L^~)XK%HE}j<ib1t42vdG0VE}nJ4
zS%709yOCk<UXbL)E?#u;5?gF*B9M!R**%TLUZ%lEn5q0Vj;SUq*KqplF5YnQX5*5Y
za01P{D7dg)OyV-$HA^Xm7WJpo^DQjbh3DcIjvW`ii$D?nk&BQ{bg{(6+b$|DsxA^2
zHR&7)a;#BE?1G7ogD6#h-%?TCH4DpZ!I0T%sf%}1^da-Vi}zf-&jh9HN+I{jQw;kL
z7)3pd&dbEiqUEv!`}nboPh6}J{VO_@ePk;xJ{RQ+7hh6g%dEk;<e(_dbn}|6Z(Mxq
z;(HfAFgC<V>t%lA9Py)zpG5qbe%aq-iJf~|Tz|4%D*u~{-(9rx(B8uzF8*XD_t2!}
z{a-HrX7Z=S6d3=ySn0y@O!8#iO#UhtYjd^PY{A248V=0-%^ueB(8@Dyk#lVi>v~vE
z71xnuI;Ev&Qbd*kc=NSEleNBw)*jl3p{*d*qs^H^C}aZ<9XxF8VG|D>J#_NW-9rx#
zojr8%OiCnASGCwplFcQ|0*NN->7kd0{vHN+=<T78hrS;AdEnq;5Yl%v2-{-67}C^#
zL&@35GqJ?Q9;aIBz>&47hk+ipkZx3LkcZ8v03ZH(7~+|cIJB1$!l_|%@z7I@=b@5D
z`Y_LobW%oo80BF;FFlO*Fvi1)9!~PGrE2Z$VX}v<JdE|QwTEpyO!TmwhjE@61><GL
zZ9S9rDU-7>dpbdV;TYWB!wwR%lNy~Qd`Axq12UiA(ahKEAgk=+VOI}FdN|6%Ze;dw
zfQKm__VBPLmErb|hrK-P?O`7e`+8<2Ii>IF8yu>U1sLOSf9XRz^LL<!gFGDS;V=;o
zR_lj&=C+RJGI7GizlXy;a}RZdbY^HV?Jz@fz*5@L9;T_5alMe~9**;Htnj?Ne7taq
zI)SclGLB=9vQEwLaEVG!_At}KDIQMsFw4U^9!?Ye45ob{r>l?5$qazAJe(~e`^AoP
zZlWf$J)G;|d=D4U)V+-U=XqvA<Sa>@FZ6H`{l(-jn2iN4U`S!t=6JZ&!(|@kdbrZV
zRpPna!#uS@&B;%9Tp|5AcCPktjfWdN+$g(U>)|>N*E86f%rfJEE@reY>S57<H;I99
zb+dw;X(aQ-tsZXk@QjCN)x_<B4|-VO;SRNar-yqy+^br5sq}8ojBBdF*uKxh{bHkT
zbcgYXhqs5C>EIy`4|{k-RUY;5n1_YJ8F(DCk2ADX@o5iF%A|A$g)lsxQd|723XQhN
zGk5Wn_MC_3JybkYJ-p!IMGtR!$gxvBt(QE!#vIaYE%xxTM7`qS)ka%$o6Lff=6zk1
zH)IEn+?eUzL&1aN!IdU7j_sl7fs;PdT}k{@iHdpbvc^T|VN*pT^$a|-G-dphnPC*z
z9Hfzl*u#e&mU&1#)MyP4OC>7x@Rk~4RM$B=dYWbM63^TrQV!Qh?|67uoRs;Vhxa{v
z;H}<v;0Vp`IB0X`jpZIb^6;sc>1*2OV@dwR!wPvn8{kYzehbt0&pmwM;Y$x+vCBSe
zA78Uw4rCv@`S{kucg#q>3Cr(2{NSOhk8VDG^zaiiu#fe8{OsWu534*_K7RG^n}<I=
z{N>?y=|I!{k;SC)_R?Y2-yZ(q`1P<-3{)daI8XPqPSUtr*~x;B7CzSUu{LG)u$p`{
z`({-}Yj73E^vf}|j&Iid><)KGIGR}6(nl*F?R>QNvA#-af!4m+h@)lN_-HF4hdjfK
zJ0a}U20l9a=;Wh=Z{~M8i!wWl&G^?h!9)3Mu5&-DyN@0!+Q>&wAH96DnBUMxZy$Yp
z^z+f*M_+&ST(+>ixqoDO<lPM=Q^Ek>+(lAhO6E=3#y&Rjv8e<O798kfkZ&S~UL(vF
z07HC}*+|*k#}+<@`WWV8tdFgIGZhY}p}JV3e2kEfM*3j1Jgz&n(LTmV!!3PmCHV{<
z(<w#8Ha^DrnB-$eAKUsE?_;8m?bJFWijpVz=5B%u!tH%?3$}wqu{v=w5FyV_zL{_*
ztIIq4X4;~=ck%TXc+E!0?mqVLah{L!eeCIDFCRzynC4?|AN#1*p+5HYv7hXmS!RD9
z2l_b3#{oX3NIpGFFK`4M+|c0=b%#WTF|*lWKBh|A;XaO36{>fH>_(oW#7yB#Ysb(9
zK2G<|a(B9q<9wXx<0K!e+FHl^IDxpl!(Ou@e=~fX%)pQY%A85R!#YKl=YrFu=w|CQ
zm9n#(anA5@rjN5kndRdg-%P1z`{1SrojBV!3$1e-(zpg-@KeYIJ}&feyN?AvF7k1)
z7_RqmiH|ux=J~k7$E70D+H-we#&~No24SPr>T(}Vy7#%#$5lSA6(?hxs$T8m8d-+3
z4>{Q!;dQ=QGth}Q__$G}H<9AwRv$O}n6EyPjd4ZD4&Ek{vI-5t8_7F--09;PAJ6)@
z%g5b57BXxk=N=#T`*^^|z3jNuFeXyWJm}*g9}oL@gm&(11{zZwLy;;mY_jzjIUn=!
zgpVgB?Qua)RZsbNTGAG&<5Y~JgFo_9{&PN__wkyK*L}R;<3%4YH)7x=)mluIdYExX
z{ppTZe7q_Ta{GmMb2Jp?yx}9~o7)qb^i4)%`_=OE8WF5sWH|X49AHQQ$A|0VFCTyV
z@O=0_mibt&wgMkD4f9YslzmiuRDDD~Vjqe0&wRm^ZMNQKieQANKI%T+^0CCnJ3ij^
z%{D0&d)voS>d=058lm6c^YOlq4}5&67Qg9dUEO4IMK-Rv?4)f!^6{~cADF0peBxt;
zk1u_Er4;e0#@gqEs{Xg?e!+Y)z?kUEq1M+vzVXc}=zH1!Ti@I<eaCUC5Ml&grCEu(
z{lw(&<M)Pne_^gxXwj$N_q2YKe9qL&pMR)nPMv=;TAEEV{Kv<?Os4^Qa{r$LkQqBb
z>wuq6HCeqWK(i1Cwg^mG<EUIKz}f-U3rvPtM@3{_H!$~r%u6&5H~m@$Xcd@&%+0zi
zNZJHw8=zx=P665lCeLpWm>G?A+XrR=#?E#KOgg2bN#rGA=Kx&-bPdo=4RsgfghC6m
zl(no;R<8iPMc*VaX}?c^{s9IA=qqABLFzDTrL|#TZtdCVMnX7okbmRA<V>!?{^)IO
zDxC+a${;DpRyJc#0~{M*dVnng3=J?Tz>WciQMV>*s{msI3=c3Oz{p_r(~Z%RFe(5|
z!MGa3o{GY7q9(jk*gC*A0k)UI;{t3OV1gKEJu35DFKc{Y@&iZ8!~omTLE2MdhT*;z
zb>2ay<I-!V06PcRE5P0XCI@DY*j;isx9$>P*8sZ(X7*%@l+5_tL#2$LJ*j~9B=-rh
zZ-7Gs92Q`|0Q(0xD8Ru14hS$Mz=6_mjy#gB_Srf&W)G1Z8gRVsu;|UH0S*svbbx6A
zjtFpMfTIGFWLTF~vRR24o;jbF$H@L9(!4ataq>H(WmbUWSu4PabVPvDW#JhCPG&FK
zTc=2wnSse9G%St7Rm!OWP7A<w3+<c<KO?}I0nU<!lbHDflli$D#&A8gt#wX-*#XWC
za9)5516&lCG|r7CYI1&n3j#A)a3_#jF-|U)5Z?V=5@3#S_K2Kx$6Q^06`GN9d4PEV
zt_W}?LnXu(A+8E=b%2ipd=lWA0M`b1J-{0Qt_yH|fJXy77T|^eHwL&fz+C}u3UIRo
z-X37SkXr*YNN<s4n0e^L+eBwaxENa?oK4>$gk8Iv;l!~M;K2a*1h|(SQPKT@x!qvc
z^M;plD3je`#fJhs9N-bQA~r^HwxS@UoW}z^5#VJ7$&)mDfM*rkPdD0Kq`0DaDe4&#
zwbFPl!1DoK2=HQnmuPnOx3_7L>M_Yv4UX<xmBC(-9A3T};I)QKX1_NB<N_=eB_E&=
zAPG<lU~?!1@B;X}<SvKI;)so%a)oeR$2bp!mjhJ969#7ON}g(fC_pU#va?(kW{W85
zz@4j9wHVJ!0@M{|41>2s<V^9l;*h;yXX%J{0=ygGy#VhA_&_|%#qgo<WsGgh*pNeY
z7p+e|l0Y`Pf+LhkHN;vWJ`?eGRrx%?7joa10lp3Jorqrr_&UHh!uha<lL9v)z7Oz&
za?~#YepJy<0e)6ps>cycZT%KzasF$7-vUhK!<QC@PPPAF0uS()YORtt{|@j^CZG9V
z2)#pQx{QO=3V{$ULNtZu0TXYC*d5Lzv>Vyh4zW&%E+M*xSU1FaAv%O6`?U<wN=Q2m
zjrBwG1f)%9=7QFt2}RBbZ9@~Q+_IoO`D-6y165g|J(-T7nOQoiI!ikXVKVF%qI-w|
zAvO%rBSg>8tjYU_=5DuFh`yoOIPD#xPiSTVE}OY1<+$!A$sFUf0ArhKa2DGr#Ks{u
z3C#q=`#ZX3(-4C~3|3nMr5>F)L~2uq%|bIV(UMFcUvLD47#8A64)YMhLyQP<K!_=-
zH8R9DA;yIm6=JlS9us10h^^U{gm2Z*hXUD6DnL_E^0pzyhuDn`g_saxqL?R#*p6aD
z>=<GvQFaJ1NeH)6sTl1^Nd2>1x^rl9BX2!O+$F@W;v`P%?Ga+n&^#5|FT`FU_72Tt
z!J>T{Jp0P*bUkflwhnmSJ2Yz^>Um&@gF+l1;)D<fhd3m}Q6Y{Faj5D}6=X*a6F(o*
zA0FZevPn12(MO7bF*z+m<RCK($f~q6>rPkEaiN)@sqKlhe28;HoJWdf%?NR7h|@xx
z9Ac(4r&gzgX7h^LQq<|HepZOHL!1%fOc|Nug_3FHSs~65Wj4oMv#}LJg?-N~aK7qZ
z7~&!!7pO(5eQ}6OLd*?ud5Ae7E)8*+0*1{ot+6`iK0-dXnx~4yuaIt;Sk6aRhqxxh
z6Cs`q&Fbjd5c5Oa5}H-zb*gfGh#NxO7~&>f-rTSZ9m)>!F8kIHw}p66rMHJz5aM3(
z+`(AoGv5$*hq$xRI-`g>+|%$ZahmSF5ce}GWNK0<nL~j7eJI4kAsz{_P@Q_5z6;IV
zN1n$dkglhm+@2zZJ77<RcsfKaL>gjIh-X6NLgYg{%j6*8uZ4I%#0w!_3b8oEixNUx
zQ4XVyLSB|)uY`CtG%HCKG4i<&K!mn>T|(Xn@g^&3j^N%AomB{7(<31&A&MOG($){*
zgm6Q6aw}togFUOohPWCDLWJy^<S+(knQDkgD$#2(yU@-`)FO*$YR(b7qhYAjL%bW}
zy%29P+w`=Sgm^o|QdN9MkXeg^jyB}ehxbE#5Mp_VkK~jO*@VosOq^y7#+{!KpXl=Q
z5G!Z_Wr@#1Fbz^MMlVJ2c_s7J7a_jPN_A^bWxfvaO^9zpe8-_z#))NoAL0k*oH9m~
z@neXeLbNWUO&LF{2{yMX#4o~s4e?uu-$VQn;_ndu(B=)EznDC=g-*LMLTLYgWyY0^
z#ujGuQ4URKm4Px^l+jd1%d%PLP~qk>)-Ge6vdM>QmCb14y4oajF|0==`IK4DuPM2e
zh^)AN*<@NqQCm@ZmeH$>c4f3LV}mj}l+ji6j)I-a=v-d?5P@|$nmDa=DX-qG?N&DF
zy?Yrw$|hIPk6DQJE~8HwgVj*qGWt<-KG-dzzbMpp!!ia)K6R!t8<nwf*{rcCjh!VV
zanmvemNAH0HJKYac7a1+NEw@zvAOCpbqp<Ii}LC{3O?8xCR1?cqN@CjEStQ#M;W8a
z7+uB~wqC}>GPWyYt1`w)$oMk0mg&epu8eJjb0BbmP2ILFn_Yd5Q|dE8{0x%q%h-Xs
zalx<dOe&jMk7nOd*2wnHcP?Wx`ODa~jNPb}>QWTtFp}98Z<-iv9432~u~!*;m$6S7
zhm>(>8T*Qv!~dW%_A6umG7czXO4&^42R3{`-FV5~@po|9ED4BE>|tf_2KMMOrj;?Z
zjKj+~qKqRY@F@1KgE`MYRau?u2l7)0bLKH+99zb8u^m^&@ntic8y+6Y{c|;PQW-PK
z_^6DJ%Q(4=nY2t9PnK~?8K;(UT^ZMxaatLtmvLzsmz8lw8E2L;yNq)s_AKc?tBkW{
zrAf+u=ZI+bRhq5y$~eD_i^a@#FDT=}GA?2uDLXMFIGLK^*<@W(#+<UrT4Xc7W@~O4
zmzQx>8CR?NyfUs(MV8VmSBl71vW!Y^Qra~lUQ2uSGdbsmGHzs4mvO%=d{Y^>m$9IX
zo6DHb$SmX5GHz29T8~Y0?LiX_>|<2ALp{2)jJt$T{@wD(J!Ra>(WHFK7Rk?z2nOu~
z>NN-E!ZIE#<DoJhZfN^R8C+g+rNmY^5a`xN%XqAe$0eCVfQg8mda8`4%W%u^%2-s!
zGiAI{#+zk4TL!)PLK!bo0qWdrJujX4lz{?YQf$9c#;av4F5_hl9Hv~Z4YK6?nwVdg
zdbBq4Fx#RsInnJh@-j}LygHdvKE)OpEoC_3;hr#a=~*2tzl@-aC1t!_MyQ5j>c%Wl
zMx_h}f3=KAbUumB+{8(l#;mFJdKsw@dY}G%i&=;RP$vzRmhp~?K9rH)m5}$<`g<Dw
zCY<>ER}>CXj<{uIEY~FmHH$teV+GS)1shcGsp!9z@jH!E#^+^xQO1{Le8=>zqOS<s
zS>I@+e=RT21>dTO`HI&2fyrNH`K64XnDmspepWtY(+mc-_^YZj{J6vR2Sb-Rykc_r
zUmUH>jTJOi@Q-A!EMt|Be;MR@a7GJT6+ryV=L`wT<k)PknAEg(1?#A2tqQmm$;pdi
z*R5bZ5m)abYUj391?!8*EZVw)Hp1HqwyR*;P9}@eT$J3QViJDe3i?&hv4Tz&bgrOF
z1%1TawSsOH^s1QUX!nZAJUuGtsUlYA9dR~iWy_4-6|=cSJJ4w4>|eov3Px5is)7wG
z*r<ZdE7+ofjVsusf<YAwu3*!OS@{gCm_-_mNegobvr`;FL)6M<6*K8@3xbixk;{WC
zLq!>0!LW+y1xp!VTo#U~m`Gz^MpsPo+^T}Hk}!tn%!N=a<!@cVHWf?|g|)_2ux$n7
zE1+aXc;;o!(M;?UE7-1L&VptY8JUwR*pb33IJSbFD&PTio((>d?N%_E0xRI<p%pVh
z?^?lbL@L;$g8eGkzk=^tSbJ8mR|R|X=z9mV>In2Ghuz;tM%Y)7L>_%Vn9nFHm{P%k
zIwXHk1(!5i>*)<s3O`uHLj;+c4y#~l#oT?c*OYd61xH8}H%#dLSNRpV3XYbx<5#Vk
zR>467%#(MvGQENeD!8zM<D~iV6`W8p2k%d$ABCJ$!HfzDt5%&{!ORLyQK+0f-ME;~
zk7yQVxzj2*UDeMJJV)?M!LtO<u3(lB8mFr)Hk)q&G$`i@IlqFkiY}_);tHOr;8}LL
zf;kl|lqQ!}a9IU+Rd9C&bEU?-3a(Jm<+NuP@bLDP6<j6b&u3`yS@x<`S66V2OmS@m
zH&k$=_^+$r`ikLaPk+~5)=lEMS#{}}ac#}qaZ3d}Qhuw7ZWAQ&_6im>@H>RuS%Ep~
z$;E#K_sSy=Rm`FB`{<F1nGWuk<!P%+d0*3HJ*dF@i7$dx@JI#k4KQkCk^d;&&0By9
z9_L_}s!vKKt_(T$pJk{k;GeEwQN^5-=ZN@%Co8yVSwV>|*8Ki_1us;<Q}-`&m^b64
z3KmPxmo<35?qt1E!K>=pYZbg+F|QZdEiCr*4dHJJl9&^c7c2<cg2l?}uLC(1xD|NP
z)2|??;7IN>{9}c5Wd(5sE8Cje;q#lVig=jPtIRFjoT;F7Z;KE8>)ou6nyj>fI>%##
zi4oqaV2PZ&ZG^Yk5c5WajUv2L!Mn6cTcam`?^V#2-LK;P3O=BDD_BO|D)^XTqrhIS
z7JCme^Ytectf=723ciweKCR#j#tEOP>5`HBxsX;$T-loxUsL%CR*C*i1>bV;3g7)W
zi|u}2!4DPuDA)WX`X9o77W_r<SHa&Z_+6@I71`FG;{QwVZ^3^m_*XnsfWoaRP{jpR
zTv$bmDw?X8P{qV5nyXl=ivCp$sABCZ)~TXn6`iVPZNIKy8^QGiTMD)kT)&FeRb#G9
zKKa{<-cGQ+;09H6_%Baq(R&JZ5$r11O|W|vJ^stzOZ47?eFXbf(Qgf&4XfCwis4m^
zQ0c~kLj*Sw+*EL&;Gil7uThseZzlTYf?Eg<tzy`Jc}9vpR&bQyXu&apTUN2vfBCl-
zeH+1Xg4<Rxehr@Os@T4YBdR#EiXEz$RK-43>?_V41$PtNNpNSu$%4C7vFjRgsQ>Pw
z?;*IS;9gbi{a>E_L_b(?f58I;rwATc#X<k&KScCH1rHOPTE*dO@Elde(N&yM#i=Tt
zCU}D2F@nbmP8U3`isRR)OPx;?{UpH|f+tro^S?Z&i9Sp4bip$O&lEhXinIUAe~#$0
z1<w^cuZr{6;JK)Zi>r8}iZ`pcq>4FJ+*`$cRa{!dWmVi*#Z9U;SMX}V%LV5NULkm8
z6<4hxlYO~H^lJsL6TH5P8~)34v*-&1=L_B<c&p%TRownx{yRj!Q}8aqyQ{co4W9d}
zc%X_!RXn582L&G!d`R$N!AAraR`KW>b*b~?qCX+{q~KFkJpEsuXGLEu_?+PLf-eZZ
zSj9{K<$qc9R|H=be65Pt*Wk%jk+0&zDwb7IsKTxyt|Ad<Q7{lJ2|9wVpjU;zh8*f2
zie4712v)0z{>xJneW_q7SQmUta7h(!|Cj$A(ccw(Pw@RJK3Icic@-a3@tr8t;bZZ9
zA^3^l3c*hWKda*NHR_W8OVPg){95pvD!%<M&-bGLAo!!;Pl7*J@yi;Vzg6*j6@OIm
zXBB-T^oz`L@vkcWu9``Ti-B2#EiO_1sp8+NxjW#ou9a1+q7cpk5fGt8gr*2RA~Q!f
zM_4OD+X(F<v%Fk8LaPYtM_4Dqx)IikFmoJQMwoM-x!XOPAF1H@<#ZgGcPBYxc4~=U
z<IyI<!@6N<A7O(C9V2v#Flb{;SZNJwYjuds@`H=C&Jnsq=o+CL6=-YLimlq3$$BjB
z(~q#sAHhWCMu0De_LOeD1bb(&t<@(o%kP=GTkjv?d!GD}&TU}bJs6!wSsO>#B*Hie
z;m*LG-29QA1F1}e!4XK=Ji-<chD6wmVznj9eW5R>niuqjM%X4YcMZcNcDNvIGD65m
z!BG)L3mGH0rQlYAeCu$mRNY#TZ(DO+@mdSB%B61X{`d$tjyDtQb`iFZ@OgwUBJ2=h
zQiN+FTpMA>2s=eMF2eB<c8)MP!l4lki?B<CT_fxhVc!V5u`PBa!rgrPhMNFwtUc&H
zp4x)7eLHKf2zy8RCtPiR^>1hG7h!+eKf*x~4u~)%Lb<I)=KHmMkx4jMRfr!F;ik6M
zV*Q5{A52e;a5!zQ(jy`q8R6&%v-SS$QHnb9ka_cVMw4k=SxKd1#ZP6XM_?)MI8KOg
zA}dBXH^NB~W<)qG!s!uC7AKWCMbc(Qu=?Tcw$`Z;Mzk}V34~`vI5Wa5^_Tyfc2<P5
z#moqQt*ynI7s}_I^*Iq}iv8PJ=S4W5;Tqvmv0V`1Vw!OpE{t$dgkCz&!$s^}TN;mF
zLi=|xfqhwoxe>02aHVRwZLP~A%#*FyHU6?bw%^jaD#FzfPW{t*y~*OZdu$@Ei*S8}
z7bCnB;Rd=m!W|Lrq$MNVENQn3&W~^_hZVmk!&`s|tWM1-`8E;R;(`clg}ordUF>g!
z$0Ixu;hqThMtF!rjKRrxmeC&kUjVSDx>x1cf29eZ3^XzyiSTHI$5gaXkX@#6D0y-h
z!|-H;ry@MdkrLtQ2-IXzgl8C*?JRQAYt)mGK*O@i^ATQ9qonXM3%tdoL<ni32(LtV
zHG&<X7~!=D7q+wBi14O*{kq2Ko*k`RguH|l)Esr-kFC(%L`o|1RK<zl$|f1lq3gqs
z5HPU}GMqFNb*MzBM)-jIsuD$bH^O@o5=TfP)FPx2>JgTT$mRN5jL!%Rn<c8kyH~zZ
z&RvBp+TT&4*rUnBKU;ZUwTRFl%OWg~@JWOf9M`H#wLgx)!Nthg_D=)(V@E!X@R{Vy
z8eoVt)Rz&yiZE1fuYVokn+R=Uw2kp?gzqB!8(}5w6XAylzee~?KK(JmFKYd#2tR8)
zvZ1WwjM(S@vVM>7M})s3{4KUWHOk0CRmt{`qA0Ucs-e1y!z#wwG1iHJ7%gIxADUy6
zK$?WJE=`(MUn@2iU_%Uvbz`)Ov3`v8Vzd+|iJA8)p|vQ(+gafPBd}eJ_A&az=o@2$
z7#(7Ci_tws#~444vO2}++-R$dkgl;YAb<1%GZH2Ah|!Zu!r=V%ip{*%Tg+3Mtg#&p
zy&r4E7#L$vi~%t=jInWyO~kWNY@+v@Q6{1|jy8==@+ponwb-Nj7;CTu^5$`~7(-&S
z`9t|xbDPH|Xt#*XW)a8Huo%N*jEFHZ#ttzi#TXT1bc}H^wk1!DEn{r0Mz@koHZfM0
z{M;^OvOAo1w~5Wx3X8_an4r?_V@y=9x1;=a#>iB7)D%o_Z>-9SJI2^4#sM*=#Mn8;
zWC`C@b*c6)jkc)jZZUR`u}6$O)scN;>?O8+bUClt+B-H|SlqU%D9`VwQZ})_7&!4A
z7@M&`^^S-!kIx8Xu7hJ7664SqhsEYd?bH~D$0n;2KVEYsjmB-XBV(MZx<|!k7Cu_S
zr%65TWgQ!1dW_>@98bwHu3$qkP881!L8jc3Vyx6-vKO^5I62157^lQ$o9omVv-n|$
z7^ks!d<q=nj2P_2nK90i@_dH4sEu`YjM+oYI)@6(j&ZK^pBv*mA)KV<#5h031u?oZ
z&o^5a#%3*aQEWC7E*88*ke4TRu`Z2qnRL6j$=YI+@!I8*v!!OkE2Y>?v^fu!&@w#Y
z!Yv>oZLMombZw05Vq71aXKgo#?Zy~9RzW$V$;p?$<c|4*?BgvlZjEtUY_?Wzk8u|V
zV~hnc?uc>UNjP3%d8Znp&h*+n((PUb9`}A1TJAvWKAGbF7!SmFFvdeM9#*@4j7MTD
zB!7%oVmun-u^7+9cs9o4vcMv-QS1}Ce3EiRd0LR$nCxQ)pA*C42LJQAd?Ch*qP+C~
z@xL15wHSpMHZy<@OS6^NW4s~GHwANo`8DePkFyw~B)TK$3VLgBQn5gnp<r3CB3Kn<
zWX3U)7_}HFL-!*b@e%4V-ioo=a%{fbSZ_&;ml7;a@OF$|u$Iz&G2V^wUW}s>9G&3(
z7#}c|CD<UrhcTAL_&vrSF_y>pD8?r-R>b(2q1eGXe6YzOe`?A7X$&60+Uq#8$;^2B
zO#b>@@QWB<3SlsO731p|-!ODnt@<{`PeQ)qAd2yWaMFJiviM)?nEvMXbBteN{K{zj
z*ZQqdL^c)?{u$%17^^tHB=|eVKQS0=y*rrP!f`>1{mWs<^}k@y8jKtyXg$PgouEZx
z@^({VhJSN{wS=slprsHJ*AcR=;Ch0*Uue}RUB5wZlbCVwEBAjA5VjLsu(Q=6LB|AB
z5*(PIQ-aP3dL-zXpi6>WGd`cbdZ)B&f^Lafb$1tB3iIiwUI_+_wQe0~ZI_^Tf<6iQ
zCg_)7Oa8e3&r&gOkzhk1tUg4@MuHoYd4RP^f=$^jp8^OD5*#eZeL~VV6Z7VRq)^CE
z;ll)n3yu&RDL6`Sv?PpKLk?BiD#2LkMtti8+Xx>gxNU;*377{aB$y})ao##Tr7y<N
z1=}asA;F{sJ0{pk3_tPDe}z!mK0+oZ*hR>$33j8w6YP;-uLOH1*fTM^!Te<6tOKou
z{9^(x5?WZ}-#3RJSbbmB+OHvP{{#mJpS^)8Jt)D!2@X$iL}Je19g^VC#5@n;!w%l%
z9i|AGDt`W@Ci(fWhI7i196n9fWZm&iOK?nrn-k1WaBPC<3C>G!euCo?9G~FK1ZO2U
zA;F0WPET+~f|C+lJrU(5^Bx%m&XDkv6U-EHiXiEyCOA#_Qk|(_yF7+*1SgIYtg{o$
zN^nks*$L*fuxf{3d9%fkZt;(GZes4~D4BPWV|i1V;KBr#Cb%rYMF}oWa0#nOdG60Y
z-QL=tXIuwZ?{_w*O!wc&nw#MA1Xm=uGQry4n)4^~67x#+34CHsgLJg6qNkdzo9GK>
z^#s=_9vC*)Cb+JFU!ULx;WsuY46X6f=avMwCRmu@(FC_8xIMxB2_8tWAi*68?qORA
z?&Pp)wx+JMxaMIicO|$xG1DTaVBS&kNdz@t^p|yCV%92rg8X2DhY~!T;1P<|VWF9O
znrCY47Y(vRpD%bU!Q%;@N$@P4o8ZX=PbXNEU<TI)9IZXfGw2uP&D$p9jb5hj{aWI=
z1kWdUA;F8ZUN`gbf{IP+ZjKAy(PYu`Hg6>oypmw~GJLcQuhQ=wt@(SJtn!*7=k)|{
zBzTkKJ;C}*(RwNJ2@1sPXkCY$pqSvsnlWZ6fg??rN!$cpf?aFatp-0qzzk4BpBlmh
z<pjSc_#;6jK~-M(HbImiril`~n;=QdAqontGoBN3xFQuBy~f>!w-PK#OwxW^#HE5f
zN5P~1tnwa{e}YdEtYDP#$uIMNf@O(055w?S&d^fbj|F)Sjn5+aXm#rW79S{oDp6k~
z_>%kyK37WQAr{`lQZhUBRf4Y*e4{?nP4p(|nX2C<_+Hh2NbpmFpA-D3OTM7NioXc|
zRbwGL8$<nnlMYni&jf#op+gOS3u&sMxrTod{F`89f>q4(vM_5|HPd$p@<Al0D(aA(
z*j%fIwQFcoL)#kGsbO7JSzmCy8d?hJqL)f|fUQ*xm*|lY)oWb?AJ`FTS2Krm_>^;l
zn%To?UjyH8=VO}80v&7UR72;QIXcp<X66eXLg*r~U2EW17pO`18hVJ*vxZ(m*g<AC
zKBDESvTqIjY8X~C`Jc@FYuKb_o-Yp&=Z1nC2{N&7Tr*xH+oqxn6dY8;;2MTVz0GRa
zT*T}>Xuf{9g)WC?P^YPf*D#`nk!oez8phW!s)o@ujH#Jr-j+3N#jtEL-_00X!`AFt
z4dZHHm#M&RZOt=N9-`nN<xUjG*Mu4-O8Cw-Y)6?jOsZkW8g`I7Xj}4U89UQ_Coz*w
zlTN0#dZ%)ini=B^&fRO+qlT$99A3koHSATxVX_R3vv&>qN#;JH>?_DxEZV<j-fmzF
z98klQ8V;=Cpc)RY;Sf5JV@+=iu^|Qqbs!sO1SU6DWYG~d99hFzHJn|;Q8lnfq@N(+
zN7pc|hGW#|u{9h=N9&Gwdd;kXDd%{qtusrMd}0kJ)i6UnI$e=)at$+UI7QV@t>Ltq
zIc>#S8DvBBG6UueR^%t(7$iCgGpmMkRQ;+NX4i0T4Hq*kYdBAKJHLht6ax&u3q@ft
z&<Ga^r>W_<IW=5b!{st5n`0ko|I2EaD;}l}wmYweE2J2e;bzE{l1cj23|g^WTQhG#
z-XQ$C8m<>YhVz;&zSqN?b5jjB*D$|^TWZ)p#Q`a9t>LyBzNq2L8g8#)K@HE>@InoD
z)NrSI^mGk(NzQ{cJXFKoHQZCfy|Ur`QszFHoj&40Ag0_06o<TgxQ0g>k-w1qH9RTK
z$7H(4Yj{FpnY;L^5iP(dWhB!wPq9`Ta|&gV7@iS)R`5AN^1RYyy{NGeFcsJEQVol1
zc)5mGYADoT*YIi$uhsBo4Y?X#XFTx9FGrjrfs!eKp_Nw$iEtIcrcDyyyG1oP3>5~I
zddH&$B$A&l@EDd<K(8B&9AUz;TtlUXk81e1hH4E_4R6=5w1!xE)@n$FB&x-+LtoTu
zc&mmbiYwERVJ51HWG_v>Q^R{TykEn+s>s8K)a`>BKCEF`4a;R)hB|d-kWe5iG8(gE
zW1pzX=QXULa2feCb%FXbVAwQ&++zBQ$*_jrDf*=NriO2sY*Vb0;=3BYuVIyh&=fz^
z@Ouq^)bL{sKh^Ma4ZqazYYo3iCWDhrlZ|mmgw~^QqX{!V6MhYUiH(aNCTBAID`%}_
zme4^#(y70d0;!pBTclV^NK=aD)MOQwW^Q6B^<Ou|dZ{_5-7!VW6s=OUP0=pJ`YCwS
zs*UQlPR)eExr~r+9kOD3(KisC?jwc24ypO-7m-dWI;ZH8n*84_MfVh4Q<KAKRZ8fQ
zqGyU;l0XMhVY-{O7<i1;zA5^p7@K126#Y{SNHHkI;1nB*pKKecQ7XJ~icL~%s!L{!
zfnu1gcbX`W0XZba@Dw9bY?fkkm2Qz@Xo_K}d3=9%vw0nWLCCs%L66ycWQs8<woEZ9
z#b}OSzCteDIKNZvtt5e_<6?knY?ESKirv)uwkq0=eM~Vv#ROeW6!cq|LqR;<v_pzX
zV%{aijwyCZv2%*aslF7a6Y1;`UC)L%71Aceca>kb7}!0<9x3)ru~&+H8&2Gts`9Qu
ztz-twf_6W4w#jsDN{RzhEKc!qii1)doZ{jXm!vo(#i1!qr;oVuPcc=lnVI776h}zf
zi7Aduaa4+9Q%p~Bw20GE97Cje_3L}oiq4`Pj!SX8`gMXJ+ohwKjaih9?vql?NO5v%
z-lrpx{o;^eES-{?o552h{4_xZ(ithvOmUVj&q*;m#o5AV39>p@Xy>LlFU18ZE)<a#
zrqRw<u(8F9MC9^=%rpy&=7_Q&#T_XwO>tR@xhXDBaeay#Qp`(ng*3S)#gz<<6j#fD
z6w8iq^ic>An)KQf*QI9h!x&&-^Zm6OQ{0r|7KVzNxLFpMpPDtvA+62qMjiOOEyeA!
zHtFmm=Mjd`ohj~0@py_SQrs;^Kak?V6!)aKm-?tX_e&tX%tmQ&3VbNV!wdk?A5j2M
z{=#(i`+(FcYxJ?yOx%p9C&`)OISxiS>**BFNYzDx)Q4i96;8$2uje_0Q~ci3dQrre
z7#<8xd6V}7ucUZ2#m5ZV6tAUtJw==%5$79%UWzwU<Wl5Q6hv_ZZF-+7(N>MY&UGo%
zFO_%2Kvk)UpCU-jVm@T@v8)QsqTnPO<Eok>(s*HXahX9Pf3+0vNJ1)DPw`fYB`MyP
zah8h6ZZd4xJO212>)jOZrFcKZ2Pu||fkE=28d{cu$KiOVz}+e`f27jM{D@o+YXw!(
z<vMkImg4gizoht8lrNa=Q+%7^OI?1I;%j<PYfFX=mHbZhA5#1%t-eoJ-@MSXKc!~1
z^RxOzP9`O8d;Ufjr1&?*$`t(I15NQqia%5QB{_em_(uq59NxMzOJ}`XmBOl{xsJ8!
zKphm-qK>AzR+9QeB%8|yCi}Z~-L%VBFaKxBb?YX{uUALQx;cc&6x6D2!iLssQ%Bo6
zW-Y-vOUweVT^%dx__U7pb!<>ahdMgeacLcw)zPVr&UNfp$NsEaN7p*W)Ujn9-RkIG
z$Dld}*U_Vno^@<k$3}JZs-t%uY^z`0%vOEs=qrRcXI}P;OVj>!45*uP&Kxxy2%NZC
zx^W$wijy(FNgZ5<F`Kc214ZP$Jl!{>j-ho7t79{DZSy*|pzqq7G04N2jKJY_vwEQ&
zM%6K*j*(QAw-P-q-lvc_x^5B_<*>!A>KI$cq&jx2W9vG$sbf1eG)|Bvno!5Kb&Ri@
zd`=-e*vwHgQKig9q--yIhq}3G$_C?3b?jWn?se=@$7Gf6%1cG{E_HLqk+J<BRbK&h
zMfJTs4<QPY3W$UV24Ep3NEjHHASwu=m<U*aogj*ViXEuv&%o{$yA$h9*S#}0Ua=cN
z<$KO^x&QTkYu&Zio^$ruXV=*$X70>^1v3WuDDoi%9N*bGRFq>27*|;P4+zdLbR2Wk
zcnQpCIii3G1xznsMgbE=e=PmNQ=kGS6);&PM-?zd2u*Qx0ml@~1U<E2Rs!{Z9B`uN
zkff=PW4{HQKwF8)$pxIGhSMZ1<z$Z}tFJIA^Gt?T0cSG;3piD5&tOCqa9Y9qdFph=
zfc}I_|ISv)$9%n>7|vl(iPc%U<hWz7oh$sp0xl}xJmKdTaDfm;>0;&(sef?+a|@U!
z4_;C*Ii$XFyHxQ%UnN|eun9$7P{0)hJj^PoaAg6v2)U|&s|#4DXt|+)8w<FmfNKl5
zPPK~)xSk=cT?swTA6apL-y|KmKIeZ8$p2=B#|GA*zSgY;+*ZKt1>8}<k^=6L%!>u@
zD&S6yGCtr<CU+OiMw?Eg%=glX1uPZWeH<DEJW#-c5`d1b_sGzt**TU89}*?)#trGC
z1w6*{mIB^WU_V~KO9i}Kz!TJ{fTs$0n&DT#^94L39qI9BIfQkR#@=bk7o^LJ3^~0F
zhh}7t^+SwT3V6MMHwt)_z4Wn`74TX?uar?LrXA=<62Do%TLrw$zB-v@&pX6hm=VV+
zTI~G-J}AH`z%Agz0zN9>^8%Jjn2+VVPZeXIC=xgp7%HDB&ME2_1$?P-QBVkdCB?sC
zJh!yIR!Mz5%mK^3Y>h-BUIBgqQ2}uQftr&QV>MI)WJvHJJt-h9pjbdjJh??;TBwh{
zjC=~_q^|xHH%Et2q<~rhiH+1oQvu&{bl5o2#)<;IW0J8k*v9t-{J;!pql=9n3;3yk
zH3e8UelFmb0{$%EuL6Emg8f~c(v`mz%*u`8(NKS=kokF~kW~e&F5qwBBw(2R!<4AY
z{{*QuJ;<@lS_T7bw6M|6#`-o|+Gu5?jg56}lbu@ICeyA%345Bqa*+P2A=Y}f$vphE
zwaqM0pQb<LLYEK!+vun!9RwMB^@Us~UGo1v8`#*;#+JJ5YNMNt-ZuK!=x$>p8$HFD
zJ@&A%v29Wo&mpNGd#|rody!INkY*Dbo7(7Sqp!pu4Tb4%V>26@+t|W3GX--gLyM3&
zoA4QC(hRUM(8eGeTS<&<Y;ey@JFttbSyCT3q~Twf)oObiLu~A4V~pr`u(7L+p*D6@
zzdPC3S;#IDzMhom`e8P9voXrX?y4Pbn`A!1Hft@85n6JjZDv&tggtERX=5KXXDsby
zW3-LE*^B-lLmTps1NF5*Q!8s<+f3G6W9)C^02@cxm_Yg2*2Z{s#I6svG1fN8`49<A
zV$O`?Y#eHvJr}#CDQMNhRLjf5WmOhVv~i?u&S#F3Fq3Rdv2nDG$u^F%&Dk<p@kbjT
zV`C~Q`G16ZryWco!!qCA%tXiAW?9Q0d7flrnvEN5+-T!u8`Eu^Z{q@WJ;TOnHcq!O
zlcrF~se<HCZ+nJ~SvJnKah{FYsyfrgS+<#K=kQYNG<I<|ZK7JrP){uM0;gt%1Wm`n
z3vFCvV}Xq;Y+TH!<Cni|%$1O&pC=XO+qjG)w3T(KjklG8=$$#et;@yPWOAu<rH!j?
zEVRwvl&-SPq(cGN-8D9@wQ-$@8EhOKi)>uak<N9LXeb7~aFdOj=>;1v+PH-gZsS24
zOKseyhIiVy%QkcC?KbYPu~>pJ0E{(SS$Er5LfviLXRn?6?vW|(wauE7(Z!s0zqF%B
z4~QY(_*b6@9-_cD9=GuXWmeUrQlC<B?tV;iGP$uK`+CyG(>9(_3_N9<Jj36!3}DIg
zyp0}uIYvFy$$|OgB^xi>_}s>F8?V@S)yBIv-m|gH#%ng-Qp4BP%NsV{l#X1Uafs1A
zbOD8b+r~R0V-(RrH1GR1KCtnzjZakmA=4ude<(kbcH<SJpGud{1ZlVWFk$?BVdG01
zjt$qwS5o0?8{dczhd@D+Fu&O{7Y9CZDnj)=8-a~b41EqFt!g6MytIn7v3lpoq6}<R
zv{7QFa?sO3W}BB_{B2_uGp9N#(@iw8jT$q#jb9jDHoj#pwef@audwl*h8r1Dc#gYz
zmiy7hPqvviS!k5i{PL@f-)wVV=1&{H6H)9@X11*l79xMySgEnhbv`4I`Ib3kwfgGd
z;2#_R+W3#UFugli&*5j!00*rcw06+KF{!?#AlD=`H7{w;byPw(wGqM?roYIRwQW_h
zzJqp-nF#8C5Mz0J$HXV^&2@Cp$w6laT^y56Hxm5@f?XYKD1;5!OE(AI9W$+Pwq*b?
z#r04v#~r=d%Rz4k2Rk@Kg?$`s<6v6{n>gs}U{eSE9BkoWO9%ZOGkhomt+APd%^kBn
zshgLhasb6}u$7q5uzT|rpu)NTqEc+NwPUh0oxYue!47tJu!n=~9Sm_W)WI+j@8Do3
z2Rl31(J={}t*GoSs-iBtI_B@>L>N*0?dD*(c#>v>Xhu31<(RpZaY!}UoY{=7-;<Jy
zV2p#&4)%7iuP*lyq-8k&lAf~drxM;{V%z;49N^$Ul~A379P^Lw`gW2VqOlIfIXKxd
z$?8xC;~h+PaFm0?<gW=1COSCWG3k`7j?jLM#;5R%<Rf{hb;2Z>lsIXoh}Cfpj&^X2
zgQ;>E%a3);WPNBaGmy#Qcn2pqIMKmL5^S1d)(`XxjX+;eLeflkFvG!2+R(vl$IKU}
zIyj9!<!O(D(<LFBFl;DK-B7cfwQmuh<KRpOXNmdQ4$h%odJ>6N;=y1&bkA4qMGh`@
zaDli{&I=u!v9F2qOB~E~u#by<UCeWEse=^`zH>0&!DSBKbnupg%N;CmaHoU299-ex
zN-@02!Bq~fcCg67^(tBDn3?(-NlsC(b#R?Zs44RpAq%;exj|;UQB7FLCO12{g?4jr
zn}fv-32%4I{CkIEG7qDRiJkFJftfAucCf_3;|`v1aF2s~9X#ORLAtMDtNR%3N>l9d
ze%haJT-3&JDZNH-I%e(hkYmm>X(;}<Hha{;V`SCK;*D%34NCQ-gQpz4?BEp#Pdj+V
z!3z#vl%t<zBs+Lsqnk0qlOM(v_sHyyqP|pDt%KQq@^;Lt65ut#WzwD2VA#Lz;0?#*
zF=i6JiHoZ7_qKyisj`E29K7q`J&Nk!69pS%fD`BkG>g>y$T8FR$BtRuacRfBGee8I
za0&OhgXIof2Oi@@#0=VkgD)L?C69dV;2SlkF)1_qWn9?~9LM~ZlN!}c?K=n@6djbL
zQ7F$Q4k8D!v-WMtRGb_rTgp%zVoruL4r+$6gPMafO{BJrY6dXL>gVlE${6&^x2okH
zklP2^<a-A{Fd@5W>*7ZTKQSk}CQAAH*}-29Ryz2_!LJT}Q$u$BhlAgRQ)cGRKcz4I
z%SAX_{q5ji2md)(<zThQ{t*Ew7ie*{hRNSGmTcj!y(<dW<bi{CF!Hoi?>y)xP8C|a
zSjRPLGCbP2W=p=VYvPkt?Od$yVha~rx@hmBgBot^qN9sW!n?cZ?4pZ{u8ocuY#X@P
zP?ro9`iRD)O}e=_=TO6zSz;r#?cth{MKAYs(aS||7kymxbJ5?$CNBDlW>bkxCcNX!
z1js`Vp1_maX0DkCHfJw<r<N9AOi%+{40JKX#SSh8Q4#Uq&Ru&0bZZyexY$-~>-z;-
zk`@>&R@=K~j^oJ^*B(2%*vZ967o%M4>|z%eLtP9bH`nCM`p9Bix_&no!(EIJPYy=z
z^y{PMmk#DwX?NGG8TKT97kh|?Cj)FqgHZ9&F7}p$bTN4{R`+u;#>Eqqgv2fmaB((`
z=HfsX2dVkVE)I5ah>N3KOmQ*R#W)v7s)}q6b#a)B!(EJ53G*=79^qnwRGa9UEJ_{O
zHHQNi4>aH;xoNVDOsQBxK1aJa&c*RAj&U(nteB>b6=i(^LmEcf2`)}_agqoaTGL!J
zT~Zfjct*~27c*2f)5U2nPM4;qsN_@`ys4FShKpGYJYCLK6*<pgIJGp(S~8)uym5IJ
zy{062u8Z?r-0I>s7w5aUz{PwQmr)F6eis+HxR`OPgiJn{i0wQVb7?*1J<ZxgE|oR-
z#*fQgETDs2T<_uv7gtJvYg}9<<Z2fS-L-p6Zs>UPl!<75PwQG2*SY58pK(a37!Nlz
zB){3kjV^9-&AU?==Nzq+pTApVI!5X3F79x#)Wt(C7Q499#l5t=i@U^OiO5KQw<M$`
z?@>9|T@;%d-6xG6aLsgozoMFjq<_!_UlI8+2b$;~X~;tkk1~4s=PwtJ(^mSF2Aj}9
zPq}#7Med^P;u#muy7<J!r!Jmz@w|&SUA(1`c)`UhE?yPG7hSyM;$_KJPq4HAxh+$k
zd0q0n=9<%NJ_PcH$Y=qI`nHRATzn`djJ<b-yf65k$Qb$5;sXv|z0L9?Reh`~Ml7BC
znTyX|#42Cz;tLlA7q*KpRl=bC+QnBgj>(Yx3V=M$y&Ks&qVZh>E?gI0LooAJBIS)x
z1d)8ovCrG<Y{gC!7paS)Sd|1bb;0yS|FV|~{pI3c7yr4axoC3n1Jk>UZ(Xc#@x4Nk
z8TdOT4GLKwJKRCjn?Jeu*~K3&{&evRk)GCX6604v_RieG(eyjr#3R{W)?Y4Gx>!vI
zG5Nb#B{GIO*Ai5jB5}O@qe31VGRg3Ajf-_XGs{>W_%G`gp2=^mJhb-E(lg1kF48(G
zCs`YB?TsP&h!L`$+O`#JCrBEWcks~B!?_{O3(?6#XAeL5_}NDn4;y%9^fBr-^w8DA
z`aatG=tj04ZuM}RhmAb+@NlAslRRwfp{IwvJ?!J5mxtaSw(+p7hdv%Q@vx<b0Ur8_
zVSf*sdDzrLKZ(K3Dbp7p?%G_JTL^N5(!A7&<8h!$wi2YugUGg}`G(QfDxr1^s_i@s
z_OP>uT|6`2ZSP?R&usP?*h4&XO2965^stj>T(eVuGt4>l?CN2thfyAO_b|-EZXSkH
z9VI>bi}{LVbnXZbBR!LI=oi90JnTt>dl)UVlaglStVjQHZ%)X5_w}%!hw&Z`^URz$
zMou}H0(&^X!-3?cj@SixQebw(UBDq8#!9Ji9u5_Ah6+a<`EyJi?%@azM|qgyVS<N=
z9wvEa4M3aJ7iLF#Ai~SZVnXJW?Pw3jcsSm}2_B|;IM%~);#^;NP#x0LBbj0|yqV}|
z-f13A_Hdzxi#$yCFvG*yp82f6Ob@4cnB`%%x;RzvbZK{*aB@3C2=}CP-y9ETG5|CN
zDcD)6qOyFgD|<P|Gx2|}hx0s~@8N<*#FCOXeaLD+FY96tmw33&!y*rJJ<RiPrH89L
zT<T%IxGnH-nFL_WTrO+#x$e5-uJFwAkG*s4%4omZ!$J?&s1?nAt%%vz$J#5M-^;pQ
z_9P{v<pvKodbr8M&7!}B!$h|=IU=YRX=vWtJ>20T^bmPi?BPxiuX<SK;Vut%dwA5t
zV`{sEY(3m3{2mYYs$bqIt{=<X?_sHjhdeys;X%)=@fb^dH)B1UJ<KpxL-t6e7|&Ga
zaSu;;cv0m~dU%Rv^zgigr#(EQ!e==gc#l#qk>(*PKUBvR?+dD``<hzQ0xx-Z*;~7w
zB>z{~7oSYy_g_4`?qRuyFFd^A;Y|<kd-%Y^TYUJ_!@CVDy(5Nn69*$-gUQ_Wo@Y)w
zImGDP4?TS1;ZqMEdHC2f=LzhB)~i3P_?i0s+%vl;4jEd5wO@Mp%7aTY(q$gL@!-g_
z1x2haoUUPr*6%yi<I3Zx=RZ(91R`U;q82n`>>=TZ@bI^X)I-t3FCKpNQ1XyT^6x$5
z9?FvBTMrc#Rz1`_bMJ%lFff`}u6ciNo!71K@SWnB1BbnE$o$~pN9Ihm{aKLfG@7@5
ziujwd5NGqhB>eBpKOX)R8JDbF19Q<%V#d-c534<_@nHG*M+7XVrWE5}jf?+0(8#=m
zj~2d3{_FZ^>7$izCWUo;v=%~p^3uRoRvVSn`L8Fut&euTdHRk@QGQZ(@X^u7<vtep
z=;Wibk3D?sDdH|ZHucfZ#|Az&RF7SKY~-T{X8{p(_f5cXgFrs~ZS13$kKU^4>6^Sq
z`TO|T#5eOuU*EWu2*aKtapz0CzmLs)?BHWZADjEw!pGJ=w(+s0Z}ROR-vs9X9|Orj
z`)l?>|8f9sCH~Zcm)lB=?R{+LW3X>lt!zaP(tSfHs&>1?ck=N9bH0zE(q(7Kxr=Y6
zPBIy$9*6rFq1xSa$;HD+k&W`PJH=4f%xn~chqvrvFCU|QO!INFkG*~D<71+aBYo`a
zV?T26aj=??@o|6zqvHG1;4sOJOb+x-{1Z9E$5<cZeH<qGagyOs*{!ZJ^ZemHj_@%-
z1mwfuuX~VYB+VorlYJbo+M|3-@o|igsXmTY2^Ay_e~j2;eH<t47$NisZB>7l)Csco
zi9SwJEwd1lGY9f?A2Y<{0!cN~$LT)KpgJ<hsXk8g&5TTUvkAMH<zu#wvwWQGV~!fK
z@J!#Va%pP*n2pczajuW^e4Ov=wvlDNg2$XsjVKR2$g_?MeOx5(T<l}6k9j^W@y()_
z9kIJhiHrGVzFE~X5?EN*k+%b`@NuP&FMNFI<0>Cl`*_^P6FwIDxW>nwKJM~yt&i)Z
z(d|AK`MBQ4%|34Naf6Q=eKRrLB)upPjZav&Ax}7O^>LfJrZDXB1${Du$Q?cw%XB=k
z;c4pKK9=~nkK*~b$H%>DLa#Bf|3_S#Xoe*lKH%d)ACHP)sgH+fD~5EV3pV+`<Vj-U
zkJa5LJ3Q&*DIc%-cwO{QGsu0s=;Ik5&#L4(AI~fH*p{panL-I)^6?6Xq>q<1lo(N;
zv@#iqRm;?np5h$zhL1NHr9M7Vr*HXq$H%*}+uOc57bX3BKHgW852%G=fQu_mG}Nvx
z`Nxc8AD{d9#K)&h2nt>H#V(f1#WXK*vZ5cq^6|BgOboyAQScG?2z}TZ=AI8<RgMo=
z4x(Qu{Qr5MtjH(wk#b0CcN~j8Vefs-y*%2#s7_02&PRN6A7vjEDb?iTTMh&f)D*Pj
z#xAJN3Lihn2;cemUb@#)jTzK@5J<y;$S*#ARgYBjHy^(<S_0f2;13^v`q(AFt^xk?
zv68tiFlqd65w91ZZGcriRx|(m_?JmOK+6FCsn!ZiCR`(&CSouAAuzKoIkXB)5^EEf
zrElv1>jY-yPu=U8ft2e8CeQG)U4Zoi^bN3Sfc6181n3%|TY!!MIt6CIyg^{bDN}mq
z09^u;b(!V3@T>Q@VPF=4oWZ*X*eF1+0KEhB2+Rbuae$tI@hm0bSY{Y-1wyCvQSBzw
zT8A^N{dxy$T6e2ofc}9wdmk8JGtq1rn6>xj0k$A>J&D0QNoNfR%v?a#m|h0SVp|Dv
zp~8N*QSG(?whJ&g!1iLbvseuYu%r4V*$!$#)yQh6z|8NoM%|J_0}Kl=CBV@Eb_+0^
z90D8=U_^kC0rrt?M+MkjocEF=X!AXENn}q6z&Ib>=xgu5e5Hsk*f%f{xSuE~!<fM2
zNlv~8vI%Jdj1O>dV2&3UU1W7gfUyC_HRzcPX+|FNvg$AuP6}{%fFq>Kga8u*94VX}
zc;DpZK5K7Pv#-gbKT18)^2Y?28sPi@7X&yqz;OXi32<tF;{%)!V1|fK6g(-wG$FJP
zRXADdPnSLETpofk<YqQhreLQ9I6c5w0nQF^h8oTeFh^3&3e4JxDS|d9JX5t4hGBM&
za4r<j6Xm%9-q$B87ywL+7pnI101E<K6yV|jmxyd`fO)FoShzI6`~a8fl5KgS#TzJ;
znYo$=ELQ}$GQjn8w48EPfQ13B3Cuaq)$$+%n_^rW;JN^d#GFyxPET>yGYKWXQRO!W
zxT(=8`QH-YR;kYnPn)x^I|3}`U<t87h&uz^6~GSQ1h_lEk^rv-cs;;90qza(On_$t
z{4c<L9BTm{4RC*e2Le1K{tpV$cT3rYHorV<WXwOT?r3~gJtmqbC|H2U<r+#`Pr^?H
zcv`h=!coRQ0P<n`=K?$*;Kcwh1$aU9v_IWSJ9F}SS#Et*tzHq%gvPFyiIQI9zuw*m
z@MeHdMe|mGw*!0>n1v8)-wE&@9Vg;<HD>FaKVY_z%oLbbq82pf#|nl|)C=2^^0NS+
zt8jUMF9UoP;0q-jGN%*24)9HY0s~dM0}fcOtEn1SEM)5j@B;i6;P(K2fFM9qfNukY
z0ipn<09k-ouBWDHfJE}wPxaZn$QaNY)N_@yq#B@1VJLvIE3M54sYx}KP~a5-z6<a(
zUB;6`wPFzdDC7sl2~RM7l6E{aroO+ZifaBUgwgd!fIkDQ8)Cf>e+5_>zzTs7e>3fi
z=HCFT1N_ryNW~ehOY|>~{{pOGxl#eOV5nyutrj6#hgc^>%Mh(Xlk;gGT8VR9eYM;s
zH1i9ErwVODlcn2-=n$fvh}RFz&BrG0*ZP>rqGO28p-EgM>lB&^h54txKG`rt*ASya
z>>Z*T+lJUVH2Hj^5IsU{8Dc<)jYISdv1y2Y>Zq4spAfx;kSAr>Bt&0{L>H4k4cK2D
zv39f2JXA(x^AKBvYwx#mOHSbjh8PrL2l3e|#MU9U3o$q}lfpJ3whhf02#s$}FYDjc
z;`xt=hlFN(LY`cYv3IUFc2xOJQlI6!P>T>lLvyM>EW~c1aV{-3Tx6p{>>gr7h>?<q
z^mT4~gxHf}hi0N=oYZe$GD~yd{I)0d39)a86UAY_5Mx3d7UFPTs^s7hhlDsF#DSr?
zhee+J9Tb`mvany`V?&ImcD=1}^hId0A{V0cY&{rAK%*TI;;0Z)LQDuTF~pG}CWV+R
z{&Wggag>UYW0><_s3DFC&Eny>5K~2StRQt^A<aUv<3pT4d3qab*KbCj6k=M4lS51o
zaYl$)a?^|ur-V3F_)Ph+zC1XM`tqGlp;<GNCz;S1v(?L-5NE2E!|g0JIXlETLYTFv
zml0BiJwL<+AudTwlwKI(BK8&I)EF1Dka&bsBg_pkj{zT{O@vEB%n$Kah_^#r7UJ>{
zcZXOKVuAX-HpF%E{uLpv3~^P6tJUek5Z8ojR~P&973KQw5B<0(#PuO=4{?W@-w@)a
z5H}0IF*L8ypt)`dajTfzrjTPs;+l#hy`FySyTZk4a%YIUgwPsPhcx$uxHrTzA)aO1
z5ci4CV~n>D4=|8K{9uTsAs$j(@!>$8+i;jLDn4#u&V(Nc@n~ogFP+Qf8A~1y@dU>s
z4*)|v#o?n7!TE?y*e@Z)doINDAzl~%7ec%k;*}7uhImOOFKZN&l8zu}w&JK<rbu{A
z64E~Gt{(Ppgl0APrmV_nd?&=aA;J(*i1!$%A(n^uBE$y@kB>uq65>M<f20!fulxE_
z@=@>gldjK0vq)eS3BC;RRfs|eTLfRTd1o^hFgtyt5=!EPa6|JHF7F_F8pwW#AO!!i
zK_*<C@-T{8P}Dd?65^K-zlKOd6gdh))IyZRid*|~h>Sx!H1{|dz-&%sE2`z5juUHB
zh;Kvu5aLIvup-2FA-)gIDwo8}73_}Z|HS$GNezD%H>LuL$3^UKA$||>FU6BR{|K>?
z2|vW2oB}wk^nV$;k}g;kVzqkthsi-7zNdusj_y=<YdBd%Xc57R%owSAt!0E(kxBBc
zBa@Ihgc&)!tgpS-jj&#Xog(ZUp>2eA5&A~hG{XAg&^^LN5!y%S5TRp)P7yYUuwjJG
zs$~~lA`|&co=hgZmD5$_bXK>>xQt6d4gr$&h|FZc6S<8=K$rE5&?`c3UG|BvNn~zD
z50GHgh~m+<{UY>_%(MO5lAxuvS%fVk6U>{d)fSOSebk6g#0`irFv6e+TSeG9!Zz$~
zQ#0-uFeG3GtN;I((aX#2A`FhOeS{$qc92bW6s)Hjrd+0LlI_C62vZ^)9bssMVeB-*
z0TFhKFg!9d%jgIrB8-f%hvXS0xVu<!C&Iq?04@3KNnu1^4{w(59bumc`$pI=!Wgw;
zdZD4%iZMyC2@hnG2!};DJi@_|nfS(u@{kB)BNL6ZAx%U>9U5W0?8AuSBt<hG5n)1v
z$)cz6Cq_6j!lcM#c*?^c`=YX>=j48r$hcrQMm{3_$q}YTI5xs@5sr^=qBJ@|Wc6WA
z8V3JK5vE1v`&?WlQjEIwrbn0&nGbW%q}}9A#@lHTPLJ?ogr6du5n)z@$0IxuVRnQ$
z5pIld6TKhdEN1Ko^CO(C9xtHlBb*cA+z96>%+9CdbY#u#A-kjS^uk3Fdv1h_BU~aK
zS;&AS!92-aA0U@SxLjViA;N+PS43DC;TjQK8R4o3S4U=b#0Ms6d@4u_6J9HVMG>x#
z%v64z#u4AISf4t{nNdwgQ2m=D+!A3)gnJ^~Dv@rFa7TpO8dfFoVsdL`-6fvv>rPcM
zhAHsf3}6l6d!@qt5gv%}zsT$jxoEjBGOHa<ofPT82oF)12unG{G&?iX8Zja~8sRZT
zLfsv7G<h=kpN#NSgs&oe%|MFqOoZ1Xyb<A9N%9h%7~#1H&#UVfBD|<_@?^lUM@Gvl
zDp@A=$^6wwYv5MaYbviVKi-V+R)kL?d>Y~H2=8!sM))AYyP_eV_tcys@kiNM@?nIJ
z7|bG|H(5w4)z=%W{Y>S{BYZA|hGN%WMEFwS!Es6(^7l=ILWCef7{Qic^;M!1!Bs;q
zf-i*0wr&s(oG3y}t41hCNFt;WN}{0*Oxi`^l!3`D6HdX{dxa*7up+{D5o!^dRP`-A
zu4GO>GS9FH1^8aUMh-v7s`m`G_?!v*{W-!f5w?x7U5sBN{Kl*sqg{;OBm5EJ-w6N7
zN`I>P-x2;&;H}gpW#G)kQ{`0=R!8_JG8-S>&ZC1EoNMSrMrMqbF{~K8g9$<2`lJ}G
zVlyM~*Cs~m80+Ygre;Grdfgc7#U{1VKJ10hsjeTReT<D`^o-FVHgVWhO*+Qt6r*#D
zE-^NUv0-dx77hn)`N^EtV@z^7=CfzrVswwOk=XW7TT*hckc{-bVlyN3kFi;d-ZA>b
z*d#{Z7@NlE$F4UvWb`=aT>ks%Hr)f|;(YTMTf`U?W2+cj#uy;M2F4~mQgWW%@wkAk
zxcAvwJ<>1R2;r8{jA(xUE5`OQ4vjHB#*i30kVA}pV(ds;#TXG|WQ?6->=GN>?iQOo
zziW)4F^0uv6TyemjE-DuNfC-ST#9gbj*786@z|u<J!0%Bgwr=^>c(MUjFvF;7q#PW
z-xvqPI8cTA#TY|GJyL9%h&lEkF+U_W$${28m~!r5+K!Dej&{>7k5ydi92Vp77{|pp
zKE@F-Cd8N$<7iryuYij&DaPa&N2(*TrG)jNeH0y}$8ovPCEH`v-BgB$_8nKYvW`^~
z#uzg{&*V>tabk><VoZxML&PVGfNiI<Tte~=R6SG8j7`p@@95~$V!RpStr(}rI3vca
z*gTMbTa4Rd%#JZ9#+fnBig9_21u@Q!aZZeRF)od9ZjAF{T*O7bEOUO03u0Uto7Bf?
zn%c2zdW7Q9Q}pj8G3JVrvCUe#j09A6z8p&Yve@kSxN^RtA^G(&u8eV2jH_cTjB!nj
zYiTb1uZ^6^=Q=UuT8qsW31?rg^Vl=SjWKSDadV7YV%!>oOKUog^Eho)-}Kez=sRL8
zj`51x-WlVr7)xV36yt8m@IS#NG46?RudK@0W90DPVN~J18286`AjX5Vo8I-rq(_9p
zaH@Kk>cn^^#<MXVjqw-<9Ut|H@pz0U=qxS*8SU~WgO=R5LSP|1^0Ydo%jlrzV!ROJ
zMU_0y?)3O2X<mx)vI^N3o3lF>z8Yhh3hN>Cn()^J--ylWB?Wjp#ycEb33g2IZjAS0
z{K9l6`QMM>#BgJL5aUByzLoV+j89{HrbO{^Y@TcSBsSY^cKUgY<uSey^Dk)L7+=Ns
znr_n0l+I=FQ!x6S`yC#H7Gl`SNL-VUh8(;YevGCV-^K`HgfU7nvKWy>O=RsjHVb2_
z##U*JB8AZt_~c9-^B850Wy!!*H+iz(iZ1CO-d3(@c(Qy2BbEt2#*Z3z-^KV|F5td{
zCgu30{eMzJ#?Q|}n3R5F@{iFqLAL~d#P~Btn*{47_$$WB7)a0}!QU}f#rQYIe=%0a
z_=o9N(a6mOJy_q5lm8lK{=}p#ip^wB$j{NXOwcO9I@&eU^>wec)+O^2OK7+C60}Xw
zAwkE)WVv>UNn%MaYyAZ6leK#pvgHuyl%R96Hln(S$p#5FRHrl-Wgs^$`)Q5t2{ua5
zKfz`RdL-t*s}!ksf{oRxXM$ddnLC&{Iart|`mmz}eO0?@f_{lPfu|TuhK8Hg44Ws|
zBEeP(woZ)8woEWk^duM{nd@8ZK`Nw)wn?yUg6)&Ff9lyz<%1KmH>q#QIa*0JgnVSr
zof7PvU`m3c6Ei*Sl3@1)d$6y>46C7unG}X4*e${E1S1lROfZVf`4841dN4*0esCp2
zdB|{2GD&bif&&wbmWlQiWPaE?!9EQ!>Ql*n3C2)7Nyzo{``Yjxl;Ge5hbK5f<?QH?
z1Y;A7qYDy@PjDD**vsNyWqFr`d>9W*?`%uYPDn5@!DKb0JV(l6ljL6x`TGCnj#4d?
zN&O-7V{|z)!PErDCOA%)^!qfrFTn{3PE;_Qq;f_M<C&Z}SWZ^S^aL{!lk-`~AxQ(C
zlHgSJds>3o3Fag?U6f}em?ea5c?!+Zab|+E5}cRdd`WnAf^!m_OZ)5HHI(q@US^}g
zb<_n3E=+Jyf{VqW?ne%Ps!UNCOH5O96U<9+X@dETy%Za#xGcft3BF74eS!rEu1N5D
zf;SReDJFL%xI4jB39e4CFu^s9y#zNVxK{pJBo!C{*C}G@+3TBieN%#)6WpHQjs&+P
zxHZ9TYQ>?=doFy4lrdaS*NfGP#<^30#Moo}liQL6_at~a!7~Z&rTPgTq8UYeUxND+
zJdl`-L<JvAuv9W|h;fo-v~%S{$Sxj9@OXkJ5<HsVF@-CK8>52VJt<c7*Hc0$RsE5Y
zXX%CRX36wYg69%EpWubW?6A0Wd{K_B4?R9W{&Ip>61*zCmL+(N!%E9|x|mvUqsKJ(
zW`eg8_z8jpZzp&s!IufXV*XF?UV={&e43aIJLP#l!3POGOz@FL*~j9>ofoaa)d)2r
zLRWq!X_rgi&zU#0o%}+D^ac6QbYE-KI|;rKSs{U)fREU5om{uMD|(OFRqM%m!!SWH
zF<-um62y!X{X2#X6ER6Cx$c;h5@ZST1ZDZ_TMk%um!OuQN&Onz@+4f{)l&+yF$-6y
zQ;PRPf*+YzQ<FD-O7L@nl}zT$?Y&HrWRqVK{F>mm1iv$_@&6afRDUG+Q<Cs-o7_0+
z2^svWD071KQnXF+PlA6Fv`o<|H4FRy5<tkB1XgOEVB`R2x@Irbu0?7lh5CNEb&58r
zNp9<ip1xyq{?<*wgA^j|RL*fk)%aUKMSGQSpz)Ff9aD5lO#pOG(IquA^<qB%pJKxl
zT~l;R(LKdRYQnH2eSL&7I}xE6JyY~baczq0QuI#IC&h^=PD-&!ioPj!OEEmfrYZWR
z*dfJ^Df*|_EX7tSwob8miY-zMl>A$=q2w7LVQ9>HUxOOb@^Tv~zFmsJq)E+7Ip}n*
zW+}$@A{#<o^w>r{Fj&4*id|C-O|f%|UDCBrFL18mKxUfaFeJ^e)SPn?8IfXSibGS3
zPcbUR?kV<5F($<xDfX09`>2<_QjAWqw{UWxVD<AT8f0G;GE`W&e~JTAj8(~jlsv`3
zDGs4Q^qeF^i=EP>^a9t|#K+OvvH(}_hov|?#W5+SrZ|GGOffmdQDQYQ#gQo{rDjg&
zh^C<&Dx$ylvePLkjushL)C>k5;xVfqs}go}e2U}fP`x6c{_OV&GCl>Emg3|T^JrDc
zFg?W?DQ2aZk%Cb-lQEy-R2q|u{}iXIcMi$=ltI%`nAs`jq_`l(g(=RIr_M=nZi=%~
zoJ|4vc;}&JUB|yIP?GafoG+>BLB%POh5TKV;u1+nT`o@7PV@|nxhWi-<XoC!z8YSZ
z;))bkN~FtEEJ)4rg9CxOP)NqcRVl7cu~6mg<r=D^Wj0eB$M2#P*Qa<o#WN{xNO2<-
zZ$#itDeg$IIK|EMG9Ug=aVv)gm)5CSY241})y|hUpxNV{^4by^<SyZ~#@(s8?@Sf$
zQ4?x+Z)(=zJQ2N*h~$4D#iJ=6OYvZer70d#;lorpHU9x86Anpo*sZ_C|2RLcS~~8@
z6i-Ma`j?g@!BZ*t8XO|eiss!E@1=My#q;Eo;>8qiq<B+RFQs@T#j7b^76*1gb(X2>
zwG^+X;G|5Am~F_7Pob0GE!Dm)$R3%@nSb7qvQ+2&6d$DcD#h0+K2%_TlHyYt;UgLI
zV^NYDf1HUvOYyl_El=@9iZ3<p7`i6@HIBI8`6fjng`Xl2rJceRLJp2HAze(|<Ji>K
z{lXNH2vQ~@E!E-_38ms+d-|_kcaff1H{<Z9J17zpR7bPGE2kKAl=;%!xq5ScEk#p`
zZ&UN_kBN#Umh-i!D^h%y;(JBf4=Mgmu}b)lDSi^dc>6iUFT#Iql>C<Bcj12s{@E!1
zE5%CTOc!j(-)bh?BDxmwPl|t2{Fh=4v$S4(&00%HYe5LMD59m1R)T!Igk<X!(MFf+
z3a&4>UJ-4Dv=by57hrYz4vmtIMRXG0S+Gl^e1jtDlx)>ah5d`@Uc^Sidla!rgK}e1
z3hyP@yHVb!!J)58Hf@ym6EbdFYcnC67qLYVTM8c}I6!cqV5_}M&f#yXBDPiuM;0%)
zD`Ifb%!5al%&Tj+r=}(IIe;NW>`=sxMeJ0>FGc)X#Lh+RQp8V1{LJP>{C7GY+{hYM
z#L%K?$kzzpr-<6Eh~Y(yC}Lz0ql(zShy#k)y$HVZd34cyg@?aAbh&2{dkI-Q)MD-4
zMeL)?TZUTu3fWJPRbv|E2U64`UM*r-5eFA>ND-G6ad{DAix^kLj3Q<hacB|ai#WQ7
zV~RLT4UZH&yoe*DDOdFmceExHF;V5eSf=+$MNDp1dsGoqn$=Dfexl&9MI6_R^7tZ7
zXhwNb5!0I0o?OKAX0@jjacU9g7I9t?r>T67;ORx2(X7?1B4#&hb!HJ~HLE?lh;y3N
zo-h0o!3&DGuo>k=MO@sBa&8gxn$=!f#QbKp3yQd+h<l6pUlCUpaa9pF7ja7wSBqwm
z;KCxVX~yB&BCc!3;rb$OXjXe;5jQofy;b;~g0~fMdo#*Aidfu?@~$H8ZdSXbh<lpV
z-dDu^MLb!=Q$;+W@<#+8EMjT1Ru2{NaI;pA7V%iK+Q*A{qFL?J!e0=4rif>oQ9f71
z^UWw<EaIhRwJ$UHo7KKn#Op<TuaY+ii|~r@i+HPuw~P3!h|i07N3|aczFWk5&A7c^
z#0M&`$K*#veB7+|lOjHCR=ZsIH-cXj@ntj0uZsA(8D*geyIHMMgxjn(C?YJPS~PQX
zr1FwrTtw2WRa!)`S*xswyjg9zh)T2Cn((F~zHLUcqKNOB(flC%M?t=>obS^f(cOHT
ziOIxYZT-evQACRpT9)uf5q}mDth9!of-Zb5Eq4UUIV+3!yNFfFW@`jjGx-<suW%-}
z|CqRx)$7nInH&hg`WxN(uK1Rntd9nuRmtSQ)+MY{GP{yCg6o#BUdcRjo^>~O6PWYc
zm9TyZ{Qd=(E?nTXFQG%pe5j?PU?;)Of?Z13po9%e=vu=5B^*#fw-UOSuuTcumatI?
zJxb_TLVpo&EZC=no<e#F_7?o&U-NAg{x&J0uS$q-+N^3b;R8z8T*wxJTMCkr_9Psr
z%Rwb<C1mSH?Re(@5(evXXbIa3*|UVbN*GeY4kheZ!s%Stm#|w2I|<)ea2HYTDx3{T
z!(Isa8?MU{CDhAVGEya@1a}wQLy%2Ii_gBg+*|lQf(u6)tL~@rF@pcs%Yh=8K!25R
zu<%0!$Cofxl;Z^1{Lm8E5s||L4{wwop-VEHDC9`NNrEJvT*6Tee2S1QcptNs`5^4E
zB^<}v3{x^3U&09`+*-nIC7f8oNhMrV!o?*_E8*l4E-2x`5^Af>2WY03Fr$Q-Vs!`~
z(c$?|38$8D8s#aO&rh6F!WkvZDq(gBb4pmEch2<SQ}jGQE8*9f7T;7)GKTJ1C7fL{
zGwIZA%$#*@3FpyGoviaq;0WRuJs6Yg$``Bj9o}<xwVWk*;2-Of66Tih;+i${O1P$k
zYfHG4p}VV5YQE<E%LFeMTp)Ob;FW?`30^I@kSgmlTSxQcM@lU!q4!3H+w~>fP{NHR
z+*HENCEQXnuj^mJCl>UHC4SqBA7<i@Un9D`ggZ#q(b}w^wYY>kOK6*+U52|#xVwZl
z8P?6Pq=X3*a8C)FcCwD;I~cWwytjn^m2h7P_m}X12J(s$9xP#L37?ekX$cRN@GwnO
z!doRgQo^GpydW}K@39g-*aDC1k_q975}qufI^No3SF;d$O65-rK2yT8jaJW<@O%T`
z_IvBa5?(6dWtyUd*En|M7ng4VWm+hi4@1;P-11$m*GqVV0_fXDGy=c-^L7dEl<-jr
zAD8fM3GY!JMovqM#3XxPy^sSF;D@xNK2h<=p%zOh9_8dmpgt?%bK1Oww1nj)e8C<|
z@YL|j626u?B>qa0u;DkVDhS$gpCg<!{GW(lLQq1a5(at59HM)>^&VqgKBrqq#S%&-
zR79CIIFw7~(+qhD?{_dVlP7mlRfc^DO``c$klZfibEnecyAr-H;fE4_EMbjme=6bU
z5`HV;cV%Ge_>0PatwVhe<qzS1m$0gYKZXBQ!on`rO5yC6kx#g~gnt?(wCcYl{6{0V
zu$IomUQ-Q$l>r%AWN4Y0iGY2z%8bhE=(4qN>cXn`hg!7%dKqqSh0O+AeL9-O?eRSJ
z$<RK-b{Pg|=#Zh;V5?(>Z#$Ub$)VIKL+1=#GHj4xP-a%e8)j?oFZayQRd}~XN%ssJ
zHSiu8HWuDPOXyyW^4>!FWY|PV-$wbS8TtwDFSwcD<{7rguw{k;83r~edC%88*f!4k
z!ZLS)DAHCLww7$$2(n~bAq>&&GxMpbAsKea%-)R}?U<Qtb7W@H)K0R}&VsuTW*C}b
zScZKv?3-b?48t>w%CNf#_*vu;8AfJikIy^Q+=KIm^&T1a%&=F6(G*W#EBmvfHLNW*
z;8&_Anh%leo#A5cl9>53jL9%I!#GlAI3UA884k{n4Y!tUXB{`fIxsWmlN^0RJ6JCa
zvku8{V-M?F&XQ}^l$iN594;}4kI!(J@cN8@gzyQ169wzBF)1@2^O`I;Ymi0!=nTiO
z#|*i&U;t0eaBPO-nEW$5BgzvpoJiwjxGKX*8KzOH4D&OboMC!~xf$kVm_dCvur6kk
z-Aype%y3GEQ!|{FnRBYMGMp{sbip$+%n~wNa88CZh49$}{`G_O=jigHOt;-R1?cj;
z4Cl+^7pVL~L7qQwI$#ri42WL7gf`@(J8i9OmC4EV?|faB;qnX%GF+h;pqwXmvaZ<B
z8q?3(wVxqdw}*9ghJ_g($?#}~YcgD$VR42#GhCNpQHGl{+>+t?3^&jP8E&FM`dQy}
zF`sy2!Y2oQlaaG3H|e)#xQzoU!yQy#r>5qhsgwC!9VY^&O(J(?xI4pr8SZEP&u~wM
zd#MX?Wkr5<g&%pG$Crz09wB@n!-E+f%J6W8rL;VsEbVAMfyc>$%&9eLKG9V8Scb<l
z@S~YeX6A#BPh=n^+46&Tw9-=<p3cnIb13Tl`pV(68J^4Ve1;b?6f)QuUd-@PhW9gk
zkl|&TE5jQc9T{HDu#B8Dyq=lG#%KI{W=HFtqs{Q=ffDiG55ij+-p=rDhW9wKGV=|0
z>dRj)Ie#8%ozU5I%@6i{nBgN1!wkzae4OEv44-EBj6pciYTJM9M>ENp-|HcyB41?q
zGQ-yyzG0{gvB>!=dO@Fw<X7sbBL$$5DT$N8%@AdX<!dj4pCM@2mUDE-tkTIC@K}8W
zGs%!<DAFt$R_$c%GSs@|AagdzPH8v(F8a>|SeblyXqKarp_<{hmBu@@3{6ao8CKBg
zId0GKU54*DI&#d<@k53mGmOYFGKbgA+MvJn6RTQTKQnXkUtk%2C7%qxEBSQH@rMv5
zqLo7aWT@|I{l!e)!eZgy6feVSnzx13Iydkijq87D=L~BoKacuzlgF&w;1KNI&U|UB
zrOI0g4rph%t&^Lnp-ql;bF3%I^;O$ec)Mn8+pD}ov$mabbk5Nw#|AmJ&9PmM4RdtO
zv1yKeIlARWY~KIcBuDog8|CPc>js24Y%IK|AjvpXd#k*UAeEwQ6u57WMLMtO-{7`&
zj?Hpxo?{EO9Vq%Og%4=PZIH^h`v19Y)8IBZ$M!jP%P~C1kOt@VTU$Hi*fGaW;<KyT
z?ks$lW}Jtrd{{Hil(w!ZO*$&a?m70(u}_XY)Qa1yy>c@;_RQCQ1nqy^2;?TAahBOv
zRr?9@8_E}KjWLub#{oGG%rQ5|JYMofSdP<koRQ;TQ67?GY>sg`4$W~)j;T4u=Qu3K
zkvS&iI6TJ@IVR+on8WXE1)a@vJ7H(*kjKp@bkok(?ADl^<ER`{avaS_)|-@Sovo(M
z)_0w)@A+T#&eo6o|8I`ta!k)LBggSMPRKDW$H|P(&en-JPRg-<2Wx;Hy1rx08s3Op
z)!ACz+4_e!pgUVLbDWan)EuYfKo_e;7mJ5%ExTCjcd^=cu{w0II(D(Rubh?R5@|F$
z$DABzvM(O;bI9nci)ZCHTP5cRo-646ZIR}D(Oe*Sq2NV=7YmYr9M0B_Cr04=mbI{(
z^=23AvK*J^xFyG}x%n#D0-E<4bL0LB1}EJir(Bie>KqGm)IS?{og96Qs;;GZ`Th;f
zGK+FtufiL0+$dyp3#(IC>!uvbS6Vmc=5v;$+>2qXNrBszJ8~>0WsduD+?nI99Cznf
zl7kC!{zdVnZWgx>90>R1xHmVqoVb=aji24oO6>j|59D|v$CEi8%&{~#r`DtPF$eF=
zA&jwyay%?C*y$re9?kJsqvUZR54W}E9dG`a$(LR}mE-9g6z>_1P0q_L4SbFvn&X8W
zFETBZF|>@Aa=e`5w;aFIO*vl8;WCNkSeE0p9AD-5I>+ld-k_Coyv20a!Wz4k`Pv#^
zgvG@8Hsgm$KrViV$%;|Iv@iI+;0J;%{7}e8f;@uwgjV9m-!+0h6QpH67qVRN3&Af1
znHayxQOIHEaB@7Wk9u$!K-aJQ-aHdX!}76nKSz+`dqzl(Fh`W5DaW_DxgQ-f_WD~F
zb+qWUBuA>OSY-CgkqKv#tP06<l!a6p<$T15wY41e6&FW3eYb*B07nYn3Cx>@e1jAJ
z_M79U9KYoFH8%^SclmaX4%W{(&XxNP-q6GV?J$9FC(iLFol-`RGXBc3GRHb)v?=57
z9IJA)Dx-DTJgLI_6udFCS{C>x$G^E*O#UahCWlovmnfs9kQRd7`<cSK*D;Vr=Hj2X
za`?}?b<0?<jBaIgFJr(AvyE+A#z?(jxm_9Sm(3i}Ua&(M9ffo%V*??q>Rd(_;oN=j
zazo)=1$p?)65d_)R~lr>AZz0?dX~|@jLpjERYvbJHZ7xH8Sfu$Zmsqyo7?X6^(JLA
z&-NAM&V^r)r^;MHu#3&h*rJS`%h;ui$2*$8q-|L?pTZnaHuKBCG6t2gRT*2CF{F(7
zy#FgmWV<r972b1}Dd%r+8QV8%^M@>!?4ZjX%h;(=&fNs>0CFkC5qHisYgie(l`(?$
zDVvoQ%ZC%6WD?hBJPz8~YBSgxRmSdR>`}&^Wy~sLb{Tt>F}jQ+%9v2b-et2*JD3h_
zX>77j8T*#8Um0V{*uRWX%=Ts6th{<a*?fQYK&r_v3-hm<T<QyXnSTK;V{F;1Pxu>G
z#-YN;3mztTc%zoXkVAfA8ON4Q(mPUCqM;_0F<JOgWlSmKXyIHiv+9^KrZz6?CC5<(
zCL&76kG~5NIZ?<-WlSsMWZ~1xIJHqbL&!|QQv{i5PZM&wAUisvy!H($bILfgjLXYd
zpx8dEY~Ee@V+*qnJ-du^$~c#S$Ekr~Eadz$E-2$d;fxJdT_k+F)ds($jJajZQ^|b6
zO9cz7OzmaDiSToi40S$}z~oHJTvf)^WxP_ss}(F{M3r$#1#>IrxbNCB;xdvlt}B}}
zkVR!&PpSA!)IjToGHw)pld4`5yjk#;GHxy7wlZ#~iRdZ8I|LV(ai@^G%6L!+3GQah
zw6&J#@*Y~CjJG(62;L`1n)_AzfZ#gwu~f)If)5KmBKWA_V}fMzxSBs9`0+^VsWP4}
z<C!v^6~W78JSXG@!RG}j3A=ldQ$QL2wKq5$624N#t0Gv|j4Wwqy<Wx}WxQDix20ck
z^jX$hWxQR+J2K9@jQKJacCcv7CwSmc#us$=d}EdmI8NJIAC~b^UA!_r5%Osnp9}d+
zkjhe#<-%{CYZ3pfo%LlI8+Wie@rkc8zA2+nhF!)Yo~UccI82rFav5$JFSfV#yw$jp
z?u)KRP)1lbmr)sKZ*HXGZ&^DlEu+W?tYA<Dr7|-4u|oy9kRJrg(x_5KwT!R%Q2i*2
zJZqdTJ6KIrzl;@Se8&OBqu{P))xB9;>-#cpy54lh-;ZVdRL0L`{8GlRWvp8<M)<9a
z-^*B2<_mZ5M;X-U?=n`E@u!UZR~aj1SgOpv$Z&NT|IjazhXy~!GAjJb^fG2`FUv+)
zg%P-pw>aBcsGvm!Eh}hM0gX@QZ7QaV))lOy@IFL-p%`=o%h#(IbG5CQ2ya)xHN&j+
zE12BDYA;bA<J`gK6?CqkOT`R_UKK=Khg2|dKBl*|HWXRc3fjJG;<;M|-7DCrf*uuY
zT)_!^_@@G@Ko3&p%R88l!jHZQy(=cm^{HSJ@$6ecb%eE9#h7u^3i^p>e@V*{x@_|b
z-1gQM6>M1n<sVRi$KwLN>e(_XY*oS56-=$**b1g!hixj@xq@9P*jA!$r!EEyQikni
zjUj?NRIp<OJE@})mxF;#+wNMyQ1(*6STz|YxOWA+RWMvu8d1R>6?EnQBk1%BMu{L_
zfZZ$DrmYn}Z!EcI1$#-0ULCB_6%f)C`>15!3ieZvV=CCcf&(PUT}&@b{uL8r2USdz
z(#QwPfRuTw%iy)QW-K!99#_Gk>T!Gphsm~wS1_@HBP%$ff(bGd$;geJP7=XUqMt10
zbOeXV6q;K7o-^Azrh+k}tQBfP$&ahx{0c6p;CLx}LIo$vStm*5)2TuQCyU|q3QiFX
zqhf|Mnkf&`jHe1YjYjBT(fgF=j0$FnW_AT<N-DORBX2S!&Z?N`J)7JrCO@p#!D6VK
zTfun}lDUXsaG|V0GhST5MZ))*Zvu=zBJ(P^w1WF8Ah-DyTvowN72I4wdq!OaS2M|1
zu%Ln~D!5XGBxBW83_Kx(*HmzA1>18gt>1MOEE4^2U0z?o4HdkwX3dR^E0yqYm6W%L
z8(H06!L6dXO?^G0+B+&(T)~}^io|SwR|R)hFjBQkD!8YDdsRDCCI1sXNjN3Bzk&xU
zc(8({6+BeI!xcQDF4!HpQJzO7Kk>&ZV80JD`E%4)@MHx~i4{u%5kFnQGZj3mLiX}9
z?aVEJ;PZkn2)-!zQU$j&Kd2!ETUNnq6&zH>!BxCo!5bB{sbbwK-mKs)GOU`kKrg(l
zs0b@~r-FAYc&~!@<))y54=VUj-v7FSj}(VrF&)h}<Nf0bKB?f-3O*AtS$$E#=M^kh
z)LpyCIP|?m_)@hDq+QyYtk`zG84KU2uuy?rfg^@4GlM#!JTpgH%n!a|jKnNqoJSSJ
z6(kj;8jNcyC^Gp=q~9vYq(Vh7ub?be%&yzKVP?Z>1+@yAD)_d7A1nBYnW}@uA+w?a
z=8f;f<ogPKsNjB??t4BQrQgru!;t=^VkRl3vR^A;Ev5RMHq<=zM+JXY@RzhE!5usi
zs^ISmRxym{TC160mAC(?;NJ><*&P3|AvdAQ@La9^p(Yd(az_inmQ}Q>ni+={YhA@U
zRg+#8F%H{X>s8UViUCy&6lJ?AI#tblLCW>3XkSH#s_{<8D#)2~F6HdW#eWrDs@R~q
zcHZe*#fDXMt)g2M-K!?=^{HZ`s!8}gbjd-z<v?rWDtcCNiEPqK<-MzB<v_Od<|Zm3
zKDUFlse~b)epU1*pQ@Q_Hm{o5VKP4fCdw@Z-&%w&bF8?%vHzedwo>8NYQAR`+f=b_
z72B!#;3~G4;$$_XiXB8VqKX}b>{>-U%qX~%l-gNvmnwR2xy2KBu^lG3TNT5rCNtBX
zZ_WoJa3qb!CAthnyX{`Z9>O`beSMuV(Oy-Iu43;h_NkgoMVfu92yQWk+D|;kRIz^*
z2UN{$$a&3hTYv+rxOSMuj!1t<73WIMv7#SW#i6<!U&T>XOp&yQ2_9a>5keR_6RMaf
zdUkYV6_cu%tT6bno%K$8i}S+KRUA{rOtG5Uh>+=W%CUmSRdIaPMCJ)qoJjfkU^)Ni
zNXjb6|713|tl9iLx_mlA9H=kd!~i>`ic_mNP0dfQVonujR&j=8qdc>!n9bPZ6MeK2
zAH}>5hjp;dlC)>5>vJU4UfqoP{GC_D`Bhw?!V9aoSja_!tQ~DxmsBygig~g;Ww=5e
zU0TI_AuPE}RhL)I6th64=E~|y)m|mYRnyf~EMza*c3o5D{{<{AffiM9eHHhv!2ed@
zhAM8X;-_!%^S8LEikqwW@mrIcxa7Nq;n!qNUvI7AwkmF?iK=K<GbLNBS+lrmkpES2
zrx4<I3AtNvNfr07iz*J+-M~WxNpqiS@2}#4DjuwYe3n-6a1|tYsKJN$Bf^)rwjQnG
zF{;KPT*Z@Bd{)KhRXkP2(;|4Mif5{Lmf2gE&sFifkY!c8AcQ@>T*ZsRUlM%0ty#^!
z(x`n^$kd+JYmE{fHj>~C&H{~+x2kx%f!CYATg7`-ysyF!s`yyQhk_pozO7z95&o$l
zd9v;DD!yPaRI#FpFIDby;8gJy2XYnPG$@@a3Ju&ALJ7&i74B70zhp^RMOH=5guwBx
z+C;D@nEoH7F6&+>3uoI}6&2ytMoC?}CSB5T-&OH_75`PSMkPNmXIAkiBZL8?lAo*i
zwTj<_{~|~Zl&vn_@Bi03AO5Lgl?d4H$}0YD;PoC?SMg63|2Cs%xur;JB?!S5g5=P$
ze#v_WHLN4NO%3Y_Sy!+VAGhdfwG~eKx;*RG&|W1SYUo%)ry4rfuvyInVHcJ65!|4L
z4TW^Ap?eJ*3GY@j$1*&l>!C}YlJ%^a)9;N1N9)L_SIrzT^{$!cm)I$Po7B)(^qUH@
zq@R%ff(-A?g=|s7mNg8hVIU=JLWd>{s$r`dUaaAz8n&)sn;I^x;i4M0tzo+w4zJ;e
z8V1*}eGLcHa9|BXYS^KM;Wdm9!yN^85!|VUorQd)ecY}!4AteZ8g>&>Hx6Z^$4AyM
zs)l`3zIzRO)UdbkJ!{xY$mp6Gs&(y%)ZNERGTFC={X{cHaQ~XQ*Hfn)wXt=O3VAuU
zhJzdUA<ejrtKrZZ#?vp7^Dxnn?TN4^)G)Dz<7zlwg-6zKw2(<POcsZubUB5VX(rn-
zbq<2Z3bOaf?W_}OII)J)YdE8ZlT<#vh8aSp)o`+q9mQv6qt&T3oFbh3>s_4I=xdhB
z&#vK|8fMopN0(>TaF&q&vq0TY=c@30!SkBwenAcIN$ZPixJ0%0*D$w+c{SWn!;Lju
zszS<tZ4L8<Usl8AH7pQ*rQj6}8nU{ohO28>*eJP%hH7Vg(MOQTbu}zf?e&6npWal%
z%{AOr!`(I9Qp2sPx>N8r!8>ZWT?o(9$b`Se4K3<sSyID291)_qSFp~xUVEQP>Nwjz
zP{V^YEUn?88Xm6UdDT85_+$-F)$nKykLmJp!6zDh)ot~(3d!f$8lGw3Wd2+OuXp`I
zBMx7#;guSGs^RAvUKPz3HGEmavKn5i;dPa~SHt@?yivoOHN4f}^Nx_W1?k6kh15O!
zK@A_)@L7ZMBO#v%e%y!<O899bs)>JI!}10_rTwaguWJZY@=c@M5mFGe1!-`%QR@lu
zX}Yn-3t<gW4RH;L%D<~2t)W;$twCR^q1?bTA-QDZ$YS$K4OJD^{n8}-+Xnp#A$7{{
zh5sP<V{Ppm^ouV4s$nJbo^bN~t%lzl_#ZX=*}&<MzZ-a)Cae;^x`uyh__v1tYCscO
zG?@&uMpc%UA9Z&#Ewt1n`L}LDs|HT7*J<FCb6w%<HA>nxp`Gyc8zppH$0l^r<>rE&
z1-mz)OM_;ECTu9YYonxF6ZY<D%(an9dNg6<CiHC7ZrX%i4ZL>~`Uu~oQPP*)@fj^9
zf0gtX+)QxVthM843tev6gaJYZ3UZbi)P(w2+qwzcsBqgR>>-5H)^<%8ES!RE--IE;
zcW9LCC}bzWotv;rqkPvU3>7}CQL<YTh6^9jC>beal;G}7__K|XlcwIY341kRG_BEu
zeVTAV6D}0ZzD=0cgp-@FpDxEVVSgcX<pE7Nun7k>;ov4rZo*OYZxhBgVSEz~Yr;6<
zT@CX?sk`px6Xy+=!<%qK6OL@cq$YE7b3zj)vTK=<#x#2nE_xH|hCb&1r29^^rZnN`
zCY+#7k7>fxCLGuF|ET&7C@6}h>%Al;=OhS75Q!#&fQSJDMkEL-21HbXfB_Lv0ZAg5
z1tkZ;fFMT1oCD^ZQJ(>JcV>2Hb~er~^54G0yzl+z%&AjdU0q#WU0vN1x(DOp_=qo~
zo5pw#GL{T{6s+r#mgW`S?pm?&aa^S$9M|ERq3VsX38GAjW1^67TuhE1m|U)nV~Xfg
z1*ZvK7svH++#r00;EjUQ1=*sT;t1D-H;XbeqTdq73wN4@^lfq6F5)){%#LGD96b{_
zGJ&}wT5;HM+!4pTIOfN(AdZjY_#}>naV(1C37RO5JL6a!$J$8pU2)tS$9-`ui6~3y
zOTzDoDDNyZmcKua2jh4sjt3%ozC~<V9Ltql701I7eT9%m;s^_}>`GC><mx!qM4Yte
zx(Ht%$A&mID*0#}o8x#aj!jW+XqFH@9$9Hi98bmZavZP3u~nSUM*Q32cv|>&!Dk|R
zDB-y{o~KDgd@+ufgzOLu8L0ElDEX=oQr?f_wK!gn<Bd4pjN`qC{+5t;LVm$RTEyOs
za$9RMCFKKAK8)xe3E4#_RK)l+qW>1hXK{QU#}{#Y8OKkee<k=`#PhX~Z{qkiqJ(OH
zAIA@({3!U}w)`B&FA?XjaqNz8+W+@B{$Mhq>=E*(;9r7&$I+JYUy!Y!9rnf%kN6XD
zBqKbm&WWQ=!uV<`j&vMu99|sNMajhB#{uDF$i`8Kqp0FJMh_vOxtLp0a-U!zSdOD2
zq*03)uYZN_7mP_}-C0IGUR4sP8r4!w2z{0G8VMW}(GM0<Q?Qm`ZNcxG$Lc0fPk8+V
z4oRR@0u7XGDA*{0#tAeL-dwP$U^7A1l9_7iYLP(8i1JR;SnC81Rq_bIHi8`l+a}OX
z$YFx*1=&Cf;nh*eP6-??q_ZID3^-kccNOd=*geYaA>?goa#R9y7$OolI)P&nI5vS^
z35-f$w0L?aFjz>R1o|d$TqI$jkbVjD7cxNb_$Zh5JVE%N1WpuklHkdL?8H-qguZ=h
z0;ef?dIIMQIU|7~37jeX>;%pca+YA|W9KF?R7tk<JR$V1(7}c&Ib3i=0wWV9X7ai~
z2z`|jE==H}1g=luh6FB7V2qfr7Q7^ZD}+$;r3qXX;g=^cHo`+4#wmGa0^=k4RSA6F
z()7zU2~0>}Vnm-JWRl=y!E2=qIj1T)O_0g!C`}70;x{I6a{@CHm>%WcBxFWZmOQtJ
za$5qkBA#2L+}lN&EqF~`qtzV=%uC>z1fES`egX>;SgqWJ2`m!wh~S+G+?~KZ!WRqP
zmB11qO9lDy45i&G{2{^n1WCMK$OD283bL=4MY+opcv$#3k@v1hU}coMDuJ`68_8=D
zSS#W>!7T}_Phdj=8<l)4;(s)OO~N-vls+>4<4Qh}z>^XE4lO*MQgUko+k`wVxLvTI
z7Co21^Gd#xzzagC%&Q5!7~wmFyp+IBAukKQ66J<o@tTsa3%()vrr=wGZws=zcZIx{
z!21b&Ae?o5BIHBCj}q7=<YU2b`AVKo6Znj7mcSRHlk%02FB1rRnUt>+2wU{6vbe_k
zE`je8_#uHGMfo#<zY_Q<fu9rjC4pZP_=EHWb}N?>xZ?Uv`0o*g@q}^+!<7tq{#MqW
z1pX1iA|&n=PM&xI3E{~EtORV~jv(1M@I!5@=ozV(Kqg`45x!XQ6UZiTUD70T3FH$P
zl*EZi6cQ*Va6}Sak|-q*FkmLpCW&$a6~^HtS|zbBfqxTdlmuT(?dKE7BpM{m>m<G{
zLJ~ETsFg&Oq<QUCHHm6MstX<@wi?3Q=$+TW!ud{WJwIjP%ikpGB+V-%imIDLy(F#>
z8%5O@C+RHMFlk;|u~g$Enk3OwVyQs0q<N!6=H^MXkQ_c8WwK=w-3P{qv`(5AXGCtU
z#Qx-$`P6U++9uI1X<oX8S$p{YH;ML1bV#CO(!85vjm#y|DT%|A=$t&@1GFux>zYKj
zBq)tyyVIUY44`F_=%KoLCUImEM^Szfy_4u84L{*qfFzDh;&Q#=qL5y~FWwsKE32|C
zly;n&+%Jj#N$`mfDZE%I^&FT4->H$!TvDDd^-f}?17nvYacL4KCvi#=gJl`ob4(Ja
zCUII4rzdfSh!iqJ%8ZbnXC^WAMVzG?S<Bf;oFn{P!Se)%M!DxFF)YG|3(3xmQInBL
zT#&>lS$lL67pYN{c45+N0|~q4V)YA&>~ZRFnJh;0UQ6aA#<IuNoJmPcPGX$!E0Y+n
zTCNhjItg|k8)d8^$^^lQf;1`VRE9ENT^O4p;#5I8*fa^G2VS4V4I<u{#9c`&Nn&~u
zHz{{U5_Gn?tR;z=N!+3yp(F8?C|`HZO5)ZeZc|z6aJvvTYIYKH==o|CTY5(l^Z3L*
zdNVsei3PGYwOXiJ7K!=JBo<2o>6ErK3F>@z689v*x3_e;dy}|NPPkmf?^jv&6dU+J
z5)US^i^H57=#p3_QLLJ(KAglONvx3Mm4XyS`5aBFlw7S=tVv?6)L_=SNcoLP^M2ti
zJ{aZ8-y}9Au{nvy$Z2DpjmO!29NiYGT6i*vElIqW#QRA+#s1pA{{@cs2C=P4Y)j(l
zB(55dANt0g;?ZzP^SJeyB%V#;xup4wpWnAXI@Wxp{5<`nYHW~p6TFzj4jP|>ou|Mh
zu~YcV5#<#juO{(YM0q`lH-x_#QQk`8ZQ<`kly`;fsuueoi4SRB?%-<~`-pZ+;_D>7
zp$+SsZ|XiyVqvq`CrNXf<v7NF`W~PE2!1a3h2WP-d?kcCYsm0z65l1UKWV<6{XS_v
zAl#QUjrt*pAJyca1ov>X3ZW5xN#a-GyCcePLVg$gBZ>bA`BU&OL6-VEiGPH1;}w&8
zlZY#s5G*8-Ou|aSR?-u61XF@6l4iFG=cj;7W+J*TB%4G|NIs%-H!j(VN|poz!EzE6
zA>n7J^Y{s9(mWO*60=O-!7`>BemS_GqMC*3mg)L4Y}BxDkY&zz{KUe+7HV3!$}&$0
zYFVglVNk=^&3x@^p{|9?Ewfj;9;I36Y~ctC4J<UYaF~Vm78+S-Y@w}%b{3jgnAsam
zEpsq6i!{;+PR%Sdx6r~uOI6L<4;6BVg;qjZ3x;3Mwz15wt~cm820y^&$>i00n+>5I
zEOfNc$-?0l5?x~4eaUX+C%fD*$nBZj`@^q8yIAOI;am&nS?Fe=yM>+>j<n22k3B4N
zk_@*$v()2!hiHL2#rR?NS(b5+qb(d`;aCg3EcCW;n(X#&EY`=u2{eU;zSPh{KMVb7
zoaV9P#V|mS-w={QNK+3~E|C+Jb&B9gf+U`7A!HjYHkLXyqA>S#v7KRIh!9%o%t+cf
zjQ<wSVH5NensBIv^DSIz;W7&!SBY^yAiq!@Mjm#wg%K7;TILJV3j{B=FiOa1!3!;1
zWSRFbWEd|<WQ?*d5$rbEbOE>J^4mySY^()Z><S4VXW>c<<1O=rFu!50qK{Fz<?3n+
z*I1ZfVWNfg6i(g#jZL!5SIXBkjL{7yTe#N36bn-=OtWx@g?a2~3)j<OEZkz@1`9V@
zxLKaSqnYljANz@)08tK~|5%v8+$OO-!_5%jRl3X|vn<?d;Wia<s~E2){dNnpEzGgZ
zm$9Vqlij(N*``W_9X;Q|0t@$9xZlD;3yUl)ws4n)J0&C>%i+#VmR%y^y%v^QxLZO<
zWbQo{_(gX$?V2Rz0SgaWSSw~GAF}X>g%wIJv#{L4!@^mR7Go1uD!IxsPXkEgPT18J
z)>z;N>fFsl9tv4!fo&l($Kyr|I~n?_n%qa#3!5ZivxUdlHNs!Cu*1R=oB}Lt5oH@K
zAmk~*t=55)0k&Is#=`R=J}dZ~V0dCcI0j!3CB$E1?H1m(@E%8sg;y-RY2htNW06-a
zyk_BbwdD;#Dj$j>d^=(z{?7m8zHi|J3m;ne=zkc<^WSS1y;}UFP#}HvQwyJ2_}s!5
z7QSRqvQf{*R~Eje1Pi`}Z!COk;U^0}Tlmhx_v|kYF1i^vcWgDb<r$b8KQo&V7!4Rp
zf3fhZg}oNymf1<c-0It~ThZV*3%^_VgU0L@%kgQ0g+DD2`75Fj|67!Q1osF&(arQ-
zuTHT9owh?Psh+YJh;(>@ZNU+q5=;xa7CiR5HhS=!C~{^g%EG@E_FKqvlvya!6WHoj
z#(Q~c7U7GRA+Ss^-)ET(m1Tyz{rf9|U8WgInvvfIY*e*T%{F@v8Az+xxKEo9IWP3N
z*=#_lZiBngIlb1fagdFJZ8Oz!I;d%D77(m0NGGhr`9kL=)wj{W#xXXIwb9T<BOA?a
zw6M|GMiU!NZ8WpZp>P~Z3?1BUw2*6wK4$dM<}Ga;VxyIf);7N6S%pWM=J2>?Zqqo_
zHa*2sq_nZo)<!!UhuLUvn{6Q71v?0K7VIe4$;RPA$kS{sju76(MpxV1K9I<(n}}Rc
z^@uoo3OQ2nD8Zv`bB{yjUN(B$7+~Xg8+~l_wQ-z{euSJcd05tQF&?(u-!|Ji7ywsQ
zjZM+sje#~!uyLA=)0H*IMwflD^&L$FJJB|atCMV;EaViy!GffpYJ+>>i7;+|&<0O8
zi2czeHpIr6HqNqfwvDT7Ty5hV8|T^>VPm9?^K1;YalVaVHpbM!XU$?Cc8M*hWo9w%
zURiQ^Y`BEiWbn5!%EmYwS5jbuSnZ=?GY4a|Z35$kHZHPpv2Ehm7{SYJTq5LB!OH}z
zjEIq8tZh~iM6M9A{)pIk+f0IOwt=TE(BCF<*>7WljXT(hHYVDbWMhVnn{7;{``MUc
zW2z0icWmrU*x$^=F`o9hxdx`$xQ_h%mXEjI`}bdO;|3cy+UCSF4tZYFZ8J~Z6j5f{
zxW&e78*^-P^4=`l?Eav%Tjiy<iTQRxmg2JNu&%KN`(kt1*s3wgXJ^f~vB1W?91AuU
z+E`@cP8*ADbHc-&$Hi(mu?L&QUK)eDY<$z+{3&b+o4^;}b+Obo#|+-hzTo>`K~9nP
z+jzjnLpGLC&T+8^ZG6uKM*A2KbfQ^UX|Wg^**vz~Hp{1nZPQ1O2(A!ZX=9ZT(pTG9
z6X7hlo~^L)gNGkIY-ICoJeR`rDQvQ_*~T*|Je$H}T>R6jHXM4djVEm+Y$R>7e%@l^
zDH|MjV`W$_7`EEj#;#Wt+vOq834g}MvqI>E!yB5>_q>uX*mzM0U2BJpmsDgYDK=iQ
z@v4olX(Ai1*?8T?E*l@)c*Dk<Hr}=Io{hI`ylvwh8+AIy4rWx*Js^FO?}^%R-n8+7
zjSp>n#89C9YkcUjm&-yvAJ+F#Gx<=6UCb!KAaCO{4inZm6<;v6=th!vRczXcIz50V
zHvBNze4W0%QS4hA-`UtrZP^zzppBnx{9>DL1xt-$Kic@oHd~)oXxZ}!_X=&quMAl|
z%#j`2bVv5PjX!Ms!y-2RW8+U7f7$rkHk;+&lB2qMeKuWD{a32Z?%+WmJ!5fd$bAQ#
zCUl?pTg%wqa*Q#}VmB#Dq$q^Fkiyd`H0Ebojp5qxY-H#>yfx+=$EQFxvWy`%^6XOw
zPdX^rDB2k9;6eu_8v$dlgJT^Nk;*i$gSrkXHul;0*T#Mu)g9Du5OV+rRUK4waQfUB
zU%ysyz$bNA>%;&eoZLCLGKd}I;9v)}9MpEeZB|^3+|V*s(=lzKGq{(;HZ_YaY-FBs
zvBr81+BrDPL47GeN&^QC9W-*#Sd<omO$3_?HgnM2F<)%n!GWx`O-s=aanQ;^YX^rq
zXyc%*W2U5VUB`Pju8a1zG*dqf)!sn|2i+WWchJ#6CkKZ+=<I;ujt!~O!fX;h!ohd5
zV_h6{bue0Oq{8$!Hen$nzk{9*j&g9cWA^A#jUyei9HK9oHa3s#7;5HjK0IWNy`<g{
z2fZEianP4Z2PZo?#X&!s$iV;y$2-V2H}%poXVk`_gUrMBfsR>cvbqx-3}U~?=TCHS
zQiPLju!B<_oW@RZ@P2>OiPUr5u-F+6s6+L+rr{h5JL%XC&T??JgL51Vb1>Y&xem^A
zFx0{M4!EdhjqI#?En?dTg2xw72yZS%I2h^R0tcfUqY_QTK4nV@X&)l9+s7_)aIu5g
z4(6z(V+5~taEXIU9bD$%atBvAxZ1&32Uj>4=io{;jiyUAHG64ktMQ^xU|$-L@!!D&
z2a_C3rkB<;x-n~_gBDsRQ#W=HeW_;c*c1m-9ZYj@or4(;Zgz0JgBu)7cW@Jx?_^BM
z;x{_xybGFwUHnJUNMk&o>EIUjyMx;~G^!ZlEC;tbpv~EjG&qs1H9!fqo5jvQ!I*ch
zTK6EOIhf~QzJmo0mO8kbr5r4Bu-L&};`v~hxv9L9uBh$3OXN$ef{kq|$@e(8*TMY`
z9&o@GG3!3Z>~Lo;r&O{X)G;<-fw>!f$iXrP%N;!IU@e&)JmO%5gOv_e$?<4O-op~|
zTJ2yB#Wsrlu2zgwtJgc&;9!%3&5n6TztO>?^pJsO1|i#M>BD9|CT$;g%$&|(_@=&|
zWvjQ)byMh@!cz{mI@m@AwXt2w*krqdzm+8ZjDu%|Kj+|i2QN5yku^H_jMX`K$-x^A
z-W0=52QNE#MNxtUUyUTZ#!-yeht-Va*B!G3rawa^-Os^?4nA`5j)QmU?G8S0@E(Iz
z3$rfbmn4J?NA&;j<R2bEvx{u~VjnyB#4(R<=-XTpV-Se+;m$7yUpV-M!NkFr4!&~m
zJ)Mw|%E31r{?g}LR$9&I!>vy&!l{QZVyM`U6ewH$EDhPkv>qY1{4;mAgWnwd8MWwl
z2Y)#DPt;Owl6`iT89^Lwe~IV6=Ue{cV2^{n4&n|HjJGLNOCjmNVtjCr6SGab@sI}x
zj)Rngw34nMtESuVA_K3Ch`u0+c?N%)%fUVeMGh-T3j`S@$iU*f%8Hys{#Dj~2LF@^
zL}Wn9RL!f3C?QUI^%QEP(1_EJ{NbP!YNt>~_`xaEOre(W|JG7Bg?bXzK=k@46RRnW
z47`XmRPKa{u_h@rO`&B9hosO<%v7v}kmf2C>daEDQYJXCY?~BXr*LS>tf2mTk=|A^
zS<zvUoc1Yni13anbV}jy6gsDHL<&7p=&7tOg56T+8gcU2&+fwcNGh!T$P|uF;g}ST
zig-8-k4>Rh3cXWcgbW+CzmY*$WLh^ImqNc3#-?zEiu4y8lEQ#U!tp5#OyLA22MG=q
zJTZlngq$o$X{QL`peBB*@Y7N_UC0>`4<DN__skT|66NfOeohMKrf^;gLq)kDg;6P-
zpTaODho>+ig^@JoAaGV<JS60_LQ$hrxG;q=DO{4mMUk|Ng>bNhParQ%;WAM!r)3U}
z&6aoZp;>q~6orgSVO9#arf_8n<HdQE;I%1SE#w-(34-LGC}dI!lOsy3o{17ul$@Hv
zG$GfeaJ`TlQkb5?O~P*!WSE_i!p$knOyQQ4Iaik2hEHjz6-5o=yP;Y}=569%FL=A)
z>=fn*nVZ5LDa=b@ehT-e@IVR+QdpS6k`$Jvu!xSA!d)qpn;TnQ$?rc?pq^Z@FcecV
z2makD+>^q+Dcr|`wejQ713Ue>@}##gg3*5-OyQvvR;92yg=Hx$PvMaiR;2LyP@~?%
z(u7EL;T!J8%9L4wu!=o=^P9rj6xO9o(4#c^JUPeLHU&d`gNknye3W+qDQxEYU&$u~
z9~WeRVv#3P*uuy!%2q)VN1T9rI~jr7ncE<iuVs!h=KcQTI;?<qzCRol8@2>5r0`<O
zoUQkvhaD-rl*0QSKJc(J1#Z26IfWO37?-Kf>7~XiDZHA(Yiwf*Z=`UQYo1TOnKJN`
z6h2i&Z*jTHU1012p8qWPZVK-Sd0+4Y!4Cz=^HB=BBK%_^Jc9nS6h2R3V;Ya9@kI(>
zvQcUDOXI5)zD^-v-=*+P3g4y>XV~Fu-xR)2;ZJGugWw;6KhnY}{G7rsDg2f)w{pLV
zPK9@;%<t+>(NB%3@b4+}45U6{H~(u6wf>LTcmVrfvL`8ji}Ftjds5h&GJjVmkrxj-
zNN@^B!AikSA+K5}kSAa}DWp<Jr{JcLRdG)+lY*ZzPfDo|pPcaEO)^tdPPshDh<HIb
zkzxuZ;rx#n#a2?-rzUqx8?*n*NS;QWH1^Yn(?A+k(x#cU(x{q7HSrvjMs*?NuaP!S
z#&`q->*cEZ;52H6Sv+1|^@jfms+&f=G!9Lpjil92qfr`-g*Ql>v(_7?%?lR_Y?4OP
zG+L%{NE*!~s(BhM(&q0ZtcbVF&GiQ^KFDgN+}32{EvN3*nZ*{hO`}~JozplXjl<IB
z(EAQ)bQE)Y%Hbg`GIb|W4i|;pMC<V^g)Sm8WKk1dUDIIGh|mJv)5iIGq|q~tBhxr4
zjib}(okpKDj**aK)995poxZ1<`3((A@$n9;BPBdAyl>i^R6s-ZPh&tDlhT+>_0kxa
z#)vdVrg4I5A3~VMpfpZQ<0KlVO6+8cO`HE2ZID)j(>N`S(^c20s+y0;&QOx_SzV|z
zwLMF@=SuUlX>B24?s;hpRc>gs^V1lX#&DWiCz;cvd>wFs^tn=!N2M`3jSJJbD2=i7
zisrG4(-@;3yew`02yjUnmx`YbPd#Zd&QOGxs}{EU3gwPdlHSh8l{C@#G_I0XSEq4}
zDw-gf6U9s&_#~ff*QPN=xp#^_HI3`jxPb=b+?vL9B8E=L^Gt3`<K{GGrZGK@o0K&}
zkV^6&pp<q?8ne>4BaL}d=2kh$>@;pm<My;UQiHt~uV(&YFei<<YAmhFj^M?t`Dr}N
z$C7C*kXQ<2a*@;{165j_#$9PFNn>dm52dk;VW(B>?lkUGOKF^Y(zrJ&yQ@m<{xlv?
zl1})b<j^50b~!6bV^tcfmHS8<E94KiH8KBRSScbE<6jciq_KS@)~h*d(^!`_zgnQp
z`SOchupw=N1IGw$zDcE?N@J^#&4Q1m@pu|f2!B#luy$TsL}5Q}qvSOHWmsTEX*`q0
zM``Rz<JmNxOXC&kO#bK7cqxsY>X#Qd!1))UG<HY`b7`EHWr6qgdm~b)<g01Cmd5L8
zyphH`X}p`pn{t4+=uQeCZ0XyQPs1`$ycbFPFpc-q_&`Yp8G1XVadM}5KUOV2r14`K
zpQQ0=8lR={c^Y4f`3vQKrB0^~U&?!l@aY^MvVD`rw_^KFY~Qogw<c(ifu}P5l*Z3#
zq&OJU_$7^BSvHNmY3xqpw>18f#-C~YuHt_P(scam4a>4a|4QR;#uK%Uqm2K~pu)`J
z#pi_aG!kjpsx+y7B;8U}<Z^|s%ctB_!;yb7i@2LcHjP{wUK$w{WZ0)2e6@%S`7{b?
zRAjv(3#JjIQRYbJpV8XI7?j8p&O1ctEwsQs^%|2g7jV(tMGqHMTvT<@$VFop)m&89
zG+p04aPCSC7YDgG*hNhjwO!OvE}K@%HFjg5=4<7;u9-yYiNfE1kj^I1CmV>lp<vj9
zO<Xi}(ayzTE}FS$uB<k$iM=gc9O9ytYobj{Lj9G4a$37MRBUVlYvF4Gjw$lDRi$iZ
zdlwyCb5GaVMMu|+1;)3-T@$N2sUW+F-t`Kf0x{P`SLxZ!HNT)@Ptk8Vj##9piz8i}
z?_!vXqg)*A;zSoGxj4qfu`c?%7~rCpi{8}MH4{3U*~dj+RY5)PKJ36>OZvIyQE)g%
zu-@ZcoZy-eL45|g;7@R<A@v_b3(!B?#!jZHE>3lEnncm0Z02D1z+dc7cX5V`vs|35
z+#!TQD1kpP;@^%~^*Juib#b1Hp=uiCb0%eVyf_$XH>x_^#RwN;TwLN}q}VQSG0Hvg
zufWlgNl_OOsTRA?#k^MLeAJ6YXYnw!Ug~13411Ytrq0W$WGfR$S?~%M<0SS<Hb0Wa
zR<m~IUhU!<*ZfLpf{Q<0{N-Yzi%BjfySUcHeRMV#Q(W^4x!YXa?qaHoX%cdss+-~B
zdKWjS$8Qv6x^mh36n>L@hRDq>X1ch=#VprMtn7tbS%n_1GR`n`aG5b%O0q=@T+ES>
zxi0RI2hLNYC})0TM&i5{x>)4mP8W;Cw$#PlF79%%#0B3|(1mCU{;KI7<&ytiavpQw
zFFf>$2V6WzP8Zu;Jfs>~`(_u*Tr79-u!~1rtZ}hcty`h0SILD|y5@}=-^~%ORzW(|
zIv4B3`KXHxBC^JfvI%Ex_Bb0($|kzH{xbQPi^u8e8W&HBpTmJYyTvu@d~!aeEZXO3
z7u#LD=i+^KtBYq{yy#+wG+~S)=W{Clyo(p404a<EFS*$1;*H4QFH4hG<=d|?wlp`3
z)z@6S?waHBxRPNh`sAA~-g5D_dgmP%?`kk|;ByKKC&#s|VjsBp(8bp-zL8Bna`CB)
z&s^+s@v)0fqPEj#D3kN!=QIchR7C$mny_oWQgI?Q`?oH>bMdQ--D3OR#SboiWFV4|
zpIrPb`Y(d~Av+z6gOP5`!{UB(@w@2!nB)&3{}E*E6wbvAb@-bu<YKUgQ$6f)v6pex
zLt_td7YP^pUBo;jU0BjB@4}WPIhI`)j{GMjnQ6gq6vLV8xyZQiU1VM4RQAjU=2$Am
zUN)J>oEBUZU6f>Y@>g60!l_%CUDMF~2ZtkZpKD$>|Eqz<8#*=(9uD$MsI20ls%L^H
z1u`yG6JFgjLB57(o-wk42YaaLp_Yf*9_oAMoIpyhBOb=&x*qCz;9uj(Y3pA<4Lozx
zLEAR;%o76&Z{ne;h<#LPGY^M(Xz!u9hZdfh1zJj4YvG4@XeEStQu#wYwDHhZ4AiQf
z<j}ild@f2mc<AV%yNI1Ug;@_>Jsj?#Gn>}hJSt>BIKnegmrE?x#e!6?o2nq*!$VKu
zM|wEM!?D!a!_lgawex)<A1_doUaF$EAkD&qh^b6p&&+_wdFbb%zlQ-HPV!8IWY+N>
zPLL4RHIQDRTc<%DPV`KS3TJ<^oh*T;M4X(GPV;cOhx<J|;Nc7pLp)6Oa4p$ny7N5@
z^Dwwt>@3px{SOuJaIS~*l*<ks>Vd!TBSOX4Bf~w6@G#E9l^#ZVxWL0D9xhd-qdZ*b
z;UW*CRXa7Lsw{P}XQs$8o*Bi|FbwsVsR-#~JzOq+W^r!4LOAd87)e-syoU*VJIVjQ
zd$`)eHL?#~iwu;*usKn3CaDTapui~}rg~T``ZN#MdALLP^&W2UaI=S*9&VJJn>@_$
zFkQJ^&xa9@YO|Zz#kY8v<zcpGZaHsdkz-=FdAQv(2g`?xWSWb9%ifveVXk^SY%+D2
z=V88w1s?cMy+u)9ETq?I%Dz*!W$Wn4cX?RiVX1Vu+rvFVD2KPP4F30e;ERv@JTu(*
zAsLH2=;0yuxQ8tsmPzu%9v<<qTm@-?_hYdY^jqn(QG;uhht(d|c;Juhc^5z-)OoFk
zbt<x6{l3979~*G-!#gR?(T{rA<YBX{MCQjeiXV$S;RzL_m1qhY;VG%{yog&pY-5t+
z*E7HBquV^|;Tg4;oyd{?oO*MRey9F|hZp($$HPk=-th1ypZ|DxS#n<U@QM(+!K<E`
zzc~EaI$G>?(b)>#vlG7M;T;d}dU)G2ahv0dY^1-ZXv5*j6$mNw+sF77!A{->Rf&C9
zHTIFl?=BA?d-%lD`O+Rf^YA(2n11c?g@-Rad_|*)vN1ZG`5O=4dic)6_tciotRwpQ
z9Vy?2kGj;9<)P3&dH9*(I)f$|^O@o=jMWTuy6O1U!*1zGReuxmyN5p_%6~lk8R36<
z_*?it5oM2uy%8SwkoYg&8kPs!gX1CPA@ER^ZfOr0A=J|q;t3vC-`K$yo)ye_$O|F8
zAfzZ*^32-}5_wfT?Dx#u+<g(}zw|MQVlE#t*2oxx@T!tQ)d;VaLG=jVurGE{1_x(Q
zQ<MgRwKAxkL7j-FUIulAH=l4oT74y{Nkbux1jBlpX3#8yMH$?gLGuh+WXx-b1sSx=
z;E)XZXD}dxK5fxT^kW2DXK-i+Z8B(^LAwmPWY9H(!!qELMqV8=<`~TOf*mq^L~rPw
zGB{k6&Y~P4oLLT|F2lac9x2#8gC0?-o{>y)9wq!}L6)LS>UnI&%yGRk=uIUv=$kRW
z;OR%6YO&)o#*^O|VqP(ilVZnbFfaqFcWhV&CuB^Zrky|4E3iQsoS4B$8Jx@})AI$1
zoFZhf;HiSA37($88A65#lCxFw7~xq;o-KHe;JJe5WiV98`GO(;@QfKUBQhA7G3Ux&
zkinD;re-io$<cxrW^j>^tu130XD~+iB^g|v!PpEgRq`@HJ{+cyD>4|T<fII)%wT*5
z*C=_F;ME!P2{+lU<f+0n4L(71A`>%sLmxIw7KJ?5W-vj_#HVF&M?}9)$n_cAkim@^
zOwZsZQD$c_L&(gKQ*cog^JVfa8O+MyR@Hu+=u}`v2Qc?`)k~f^qR$m%)uhZ5Br-n(
zHlN5s_HS>4@EeT98Qhh@YZ<(r!4kRUh72}lur!0aGq@*%dox%iKi|pVFJyTJ_h-y-
zdmw`cMd{MOjN*qfSf(Tg7n8gm&ft-#?1~IlMmSH|T^-?TGFU5oT|`+gq({rxqZv%(
z<N6Gq$Y7In+nm8;8StZheq_S`yFJ}6_GAWIGI$|_7c<yjC$_h``S9r}wp9GvGG-0)
zv>=h~LY~RsSs~8}J}<cRB*VF9I(De`m*_?M$&P6VMMb*3LgNcxbDU`-dz{n38yUQr
z!H$d3@*eZM5FX?Ib_VZc@NNe0WpG;-w`cKw1|P7Cea!IjVFn*%aK4XWK6YjBaRz7m
zILF5)8GM?-K|T)l@mU6+XYfx3douVUgD*4qF@v8n_$q_1Gx#B6KKA4F4dX@<-)77<
zsJhx7@?FO4MfzS0ZA5%*VeID&eql7@Q+>f-GiH;>ZyD@XGR9}c17p8uaB<RXX!?T&
z*G`!~C4{B^VyhR%{?3>$ktlO-2Js9k48Iv9GT^R_Vg{uQk_-zRX#4lu859`SxT}KC
ze?&=TkQU+!lI{t~2>KahBYG}_yztA_9O}s}EmV)mAcJxSpXfylk1?c@|FY9FW~WSb
z-)xeK`GAiqK8{txX%m{Ls*h^E+2zEB{47|*Hzr~hVND;ke01^A)kkd~b$lG=qrH#1
zKI-{s=A*ff`o3v+1K$*(5Ze4nzW?>n$VX!zO(@OB+J$Cs6jh=cMiV~#5r4a=R7)R+
z_-N&$wNxc1WgaTLjUY?46~bDGpP()v?BJuLZ#HdpqE>tg<Rk3X&OVM1h03sX<m~37
zyN`iBPVmu#I<u6IzD)Au2Oo5UqkN+|h44Ds$1y5S{8%5og!hgp-0DR&j#I;r_tDQs
zf8q2H(g(1jfiZRsWwQ7nA1C@a-NzX|PV&v3oxwDw_V}Fa;}jLVRmoE&pS^#Y5Za&p
zIK;=9O0uUY?JOCAI)|Njt_;YEXs+`lYN&6#l(o?E!+nhKF;eX!1B+kaW1NpGeT?#r
z2afh}p^uAvT<l}4kB@rB#`w5I5-ykIOJ&>3R5dM3u{05_P3O77$K#t~^f#6o@0-nT
zSF<@!#;E^Q9Iaxz#>WI76D4Y@;3UDxQCD8;V~QvoK{Oq&X+Ey=alMZle7ri%5D9M-
z&vZdjc+khqK4$uOf=%;ri=^G=<8~jj#B;0QpAtCR#~dFEd@S@a*T)^oqI&Zpv&?6c
zwYQP2V=LHki+tSc<31mE%A~Auu}a<LV~G$_mio9`_&tL3a1!tL@c@0v$IA=NkbKa`
z8als^hh)HIK9>7<Solgo_Q)eXRtV>|K_*uTUo9B!C|oDoKI&tWko7(`D0ice#Tw>R
zo>gxak<s87ogm5%dR%?S!Lr52Q}pL7j?H4Lk8M7F^YOcnr+sW!19$m&#>cZhUZKr>
zJf{}DKsQkC^MdSjs<*?(P7a@erm-(cpR;-z{ACSZHhI_n{jd3WM-pCF!7FOx4Igj%
zc+1DzQj&70Bq3epT_5lHcwY|l0fWC{5&dcsH&ps&&n7#CoQ$p?lgG!W4E{d8_VJC6
z&wYI1qtm<?ork^lrEm74c9QU~6bBeazV-2)j~`X<_wtiY(v32I5Ro?IX#GjP{j-l>
zeEcdp4fr3v1?HgWZuXG=;p0CHWmz=K;!huc`S5&XeEjW$8&oN6FE#P;k8d_<?(xx3
zt&96e_(=M&e58GJR_kmZPGkpmBFm=e$sABz{7Vg*ltkZ0*2h6v9GpeYN8U%-N5#i_
zuKaxzeUwy|NvanJXY6G`T7YmL$2FhiWbv<${S=!uSyi&ADg@aB`&Fwc$*k&GvuBn_
z=ylYGfwX28wX&#}Mg1&lXH96WBYp-Sb~>X_-K>e9RDfOIAZy}7<E&{*!z>z!lVOJu
zgTtYTlI*7DS+vOF@GLrK(K3revgnXS$E=yDTV*weX3<)r4$Yc?O!<t2ZB@Ko7Kdfg
zK5GUnFIGo|i4ZcPQl(B=GnY}%BPcM7?pZTyvn#u1(JgDH3G#5uC$(bq>%r=>#!4*C
zT8@<FN2#Ktvj>j+?Ij(~&tg~>y(uA!zF8cX#pzj`kww2O`e$)s7AIvfAS}p$FXfL{
zav<#^gf-Hc>E5&e6*yVMQ?kZeXgxM_u<%o}I4x@^)R{$wWN~H|=VozU)=Z<+lh;`)
zdv+E>xh|5P!+i|RqPg~BQy@?7CEM^UMr1K1YnnVViwkI(EXHOrDvQyw^O!6ylua(8
zm9i#c^W0-jB~*{DNNJa3ajA;4BFel>by5E-vKW`eRasmuO|HyhybxARwFz1Fnk*({
zaji_sjn5OaW~c2WC24A^H(5n$Xjd#_)Kpb8EsN{2xISwZD$}#LNjAA5iyN~zQl20B
z_KYlU&SGZP>@g30;1)@{Rd5!aR$jq?L(iF=#hfhO$l}c`=4Nq67OS&Zlf}F&=4WwF
z7WZbcfP-3EEzM$K7K^gDQ{KKfi@T&4r_?2Kbt*q>or&$VD*gO!*(BNB#K8NqSRrP5
z)cvyO1G4jjSv(~AvMiQo@vxMn1!(X`gp;2=zA}=(N;28|YuUgoHf6C{a@J?DLHzvs
zopz?tHj4Antl3%22uYcbW$}!79;d14x>;<=nm%O~4fRyk#Hj6@1>~aJ1WA8db|$i3
z1Nqr3p3CC-EMAZi=$xd#n8hoS%$DxR;w9lbvv@gc0y~MUg5!&pe^vH>EsNJR7}*6A
zlXxqOw>jh)fwOo=YJW@<NyxidyeG>0S$v?Den>qfkVg0@i(OKWKFQ>#S$vkoZi!;@
z^DKVlkkQ=qMHXLX@s%WeoyB)qe4oWP8co#gTh&EXe~>GZ@>3Q+ib$ND%b@Wy!{ZM8
zA_?qVw)$t@2*_!FXE4zL1%If>e+2)O+J9y7x03$|9xb?6JsuZ+5VwG3krc%ew6k!s
zNM(`Eq9Tf$g_lJjJfj+OS>&_uv&f3LSh0&yuE0<%yp%;z7i~`a(~AhpVy5+ohiw05
zv7a5C19CWHca<T#t5nIMY7U*3RXJi=m1;Ru&tc!3D*w)@QX_|hayX`Am18?rIXH)!
zIW(zLrD>fiwQ{JP!)jDngDQ1$sGCFm01X1vBa%Zp4>yknIW){+PY!!?Xp}?a9PZ3v
zF(u?Mpib<F9J=JtG>2w6G|!na%el2>4lRT;NuEP;X8$9vRynke@I!NGBfPC(yNG_6
zkoJNd1Um|L5<Fb6a}EO~kTSdGFj2&AIdspVM-Dx6I5mgUayT-FqsW=V31T>!7RcdP
z;XEv^mykX=^cB*Z`s<*o<CN^r)(PpC!<!mnY{>CB@Jcr^e=#^y3Jl8OWU*0`6LUBz
z!fQ;8og#d&;BPvH=yY~d4#RR7p2LtF&dlMwi2tk{&WZ4|g|L=$h45#f6h2h=`4La`
z+OZKijLhM}94->^0>M#&Je*{-kno=rEPingm*jA%h+_n4fy;8ZT=;|>e!cHNAC1l7
z3K3aqTn<+XA1`=SM88_dHG=D}H|n+M8k>~E<Q%TeVM-3Ol{GboX*tZu;pQB!i^|@Z
z!}Y>%5d81SpVM==DdGu_-<+Alt)ko#(P!l_xQeNc*KH!+E=c}4Im{J)hv0%7<_RI^
z{2X}97m<acEQ;t0YRB%%VMz{8iLx|@yM?S1yeEeh5$C-*+$a4093BwzU=GW2ST6h_
zdbK>~;fVhcAv{Eg^e}6sD60fl=deb|T0yE2wrG708*<nv;-i9(3vLqJoWo;6TBt2g
z2!B#=i{MJpw+i2u!_zrz&*7OIKF;Bj9G=bLIeKyqZ{_g3cy{FQQVuT&e^GGODm18W
zl-ZfXD>=L>;>#N5pR6?Q@tP=a2)<5jH7-b}zrCHqJ2`x)EK=Uh;eFxk-}mShJ&o88
zMBxXt#6QZJx^{^|SLeyMpXTsc4&UbRT@Ig%{uMnOu`h&wDLApt0b6~o<Tny>`2PLh
z=kP-gzvb|I4nHdE=Nx{?;V0pIRLe6AS?RAi>=uRidHh^tT5S6o{6R_%e@FB`bNDO5
zIYtJwi1D~Z^8X_ui^OwC<ZxUb{qjiWVCB#*kHhk?#ZWVE4CUmIQUFZnkj){dELYGI
z%;exJu#lPZ^Eni9sFpWpEEjVq<?wF~`^69lR&po{;l5FZqkTE^Hi}5S#<7@ctdcj~
zK_c=di@R^W=0EuI=4?Iw#;&>~lc7c)2jy|Fm^qYa1lCw9kJ@?EksRvNJde7<>*Z0O
z@js7-c{CNJQ67!+Xd*m3Z!`4X5H=G%^urc;w9MlWQ7H4!JX#5F9Z^`kjqtXDp@jBP
zZZ{zv1Um|L5<EPQ&UqXmyh|Qkg;0JNg;;g>JbL8OQ}kn_+#~ZiO8C)&$3*l{)n0k@
zjwpTd=qo%F*guZ}dEA-DViAwe<02sg1y9IhP#!1dagvf32%enBX?dKU$0<q<&f`=e
z;jra!I3tfCd5jS8Ou@4R*%xdGue0+wM-=cEFnJK3Cpa{Z^Mwo(94<J0nPC_y{!r&p
z!YOBT9vA+P<csqdlgA}_T$;y}Jf`Mx8Qmj~@p)V&wy}9!5tXH%(~HK*m#)m4chgK#
z=GA#jVvB@dlgETSCaMUXjTfhz$;!P}L?$^=PRrxEJZ9!`OCHzfaYG(6^5*jZ3b|2i
zH{~%sZ&nVRVF|;(E^gqv19>Swf0~uYt$EB5^KF8+(=B!Q09B&hX6H?yVDY(m+@Y*_
zc`V3dq44>Fd|u75Fsemtep4)>W9td_U6OWx9uMTPL^uU5&Esz2_XyrAc%NX{i4W%S
zP#(|c@d71Rk1fk%RUWJJSS}tm;bArBkvvx9u~InMSUWXblgHXTp3GxQ9_#X0uiVE3
zH{|iC5K7o6WJ#UaraU$arv$c?S-c(><%x*?R32ONcqXcSTOQk$^|aJurIZue_F2)N
z6Qmr{U(91i9^d5gZ5}V>u~R}m&*SAhUdiLVJl@aa)jVFy<IOzYQts=5ZwS)tv{;W-
zCg{DL$2)nvD|#={`P!Ovj`R=m_%M%;^Y}!$ALX%2NH{OIRe=38(&{q~I(Y&$<aqfa
zk1zB1O8oS(sq($Am1Mm%%XfMFmdEdTe4ob;dHhIstrGh=k6*;|lca4>sb5vaZh1>+
zNf!TuY<a}<NaXQn9)IPrM+K?*-y9~4{CR}+5~oY=RW1v1)sc)iojfc~0g}vu%%vL>
zN#)IQk<Ib)$k38SyjFytN0$5r*ahVB$mg-KfJY0)hJ`#j7SO4HVjiVDf;`IX!~z-?
zP|0H-Lw5l+3-~vW{drVZ5tfP-P_<x25DKUw;-bS%?bNWEl3boqr5X|cL52TYN7X8r
z`J!$CwS}-$9kDS2)DxwC0mLba4QW(BV-XK6ph>}e5yb0|0-6@ktbpbPv{2cWg8Z0)
zD$#VICapvye`^(_v^E8_m9%!sYG1%%lu+w{=~${m!SpYC`S1cd7cjbj3kx`+fG!1`
zQNWM_y0UlyeG52F&F@~o(FGh+K#u}?7I379M+s7saCt-ISW$Wl_KI>@QJ)B>x%w5*
zzkrhpIJtlU1st!eL4pGdI3eN;!wzMh7*RskJ*9xtL>U~>PZbj0N}OH*mrpEpW&vjv
zaDkf7<k<zBSHRE$&Jpvuf>exIyv{FRc)_d?hW!tHgec4%DI$X^2lXh~jl_!zxVV7X
z1<Wa6OaYe^a6<t%(p)_Gvw$lL7+=6;s{L}ovC3lZ6$OkFzC@eXu2L?0WLg1NNBA{D
zCKNDH$fSrqxqxdUd`baRBb;OTx&p3Ok^`TH;!<#W0XG$JtB9<3hLD*B+$@CKrda7M
z1<d-NB;}BJn<%%_;gy_Qz#RoVP{4x)%qw7i0ZR+GyMP4+EG*#80u~p{|9lx47O5a5
zu$S*DU`YXCE$m9J5~&i^VD3Ey+*dGbD&qG>wGh9b{!qub=tGjTvVc_uEGuAn0S_1O
zh<af~G`<-6SPLP)NM9}fwFRsbvWBBrt>a9zo)w8$y>_hbAu-;IvC}tcX!K_kDqwQ~
zj}`EE0Z$b0ZUOIcNEXa(>9YkqSHPA6o+@CgDBA_M74S4U^=EBDUeAcmJ6x7}zJM1B
zc%^_>3wTlV9R<9^QF)xn<+ZbbmqiaLA$*NaE8<&%Zx9MOr-?ZSBjkCzfOjP49Nq$`
z_V)|;pn$In_@;ml#s6smpB3;?0lNzLSQOUy32SU`YX7yF(U!>P1$?R8F9dn))%%TN
zUq$?^?%M*sQ}VY0zAxa10)8&wmjZr_8vc`Vxw;N@`&G%^f+2;q5c$1;KWKc>|197y
zj=m-_{)qg4dD!p&6tG8qM0{@nap8%Gk`%)3a|%cma8D8U7LhK%Euc>keT(quW(CwK
zqHfW|d0$?%uYjxy<_gFcP$-y{Raq`nET9yP;-G-BiU2%^s-j#v6-W2K1?*?C2ozDH
zh=YnIq*M{CRzy`HVf3gjoOe%TI5?u$5>m5>#;XpjzG{oY074DxkzPa-X<NUD21WCo
zKtn<1HWHl?wP_K}is)R#5k)jFqD2vHi)dHGo&55@h}K0jxg1hNt0H(y!rBLPFe}MJ
zi)f>)<&9#6-G*{l5$%iUR5TNA2MO;e$WpA1*NEA%!<Ea?N1iT4bS>go@pLPqdl5$#
zag-Q1NB1bAXAx{~xWK4>YwT!o9wSI;3>ut(INp1S(mSGW;eLc7`YCyR5&er8P{imW
zE-d2sA_f*Qq=++%I6(|27ja4vgM^=0#7RZ4I1SEqTDUG6T*RqGoK`dwDBH+-PZ#qU
zMbLEQ;Ubn6IID=Wix^Qf(dHa63@zgPBF-)1ydo}dY%D-#Hk`<?B8H2H#-xxiYa~@_
z8oQu~QS7Pev8M;b*g&kqMMYd(#MMPyQ^c4eE>XcNi@3Ci%Zj){NmhEfkg>)8TNQ+%
zX`JY^;dph{Rf4RSRZLLU<RY#WaUvaHZfsH!be^#7Q^YV$aB9)4pr|UZ>xw4su`M?g
zaieml(;7wGTEtC7%qZe!I+8klCS@vK-6A%s!K!a7;&ytMD6@;0Q^dR?=1YgUBHkfS
z<6@h2y*DtnpooP<EK(M&&G^qNv?RM}aS?Y>=c0N1wX}%4Wj(U7qHtQFg!@!>V-b%Q
zaeomH6!BmY4~e+0XlBx7MXXSAIekO>h#xNE5#ju(I9wyGEMip=tBY8pB5TFZ4=Guk
zS2zK!7jZ+;1a?|rQxTix&o7GpSP@SZv9*ZDm3%_*NkO)Bi;%AEOslsEe^&5m!R><2
zsOqq;=Zbh<#1{lviq_z;+Mya>65LtD%SF5**P{1^Bk}bj-YDXQ5?(Cf%_80^BEto3
z5pUDg^}mT!5$_c7ZV~Sl@qQ6M7x7CGA4Ii$SHy=!e5B+q!EcKASjZ=Wp9+2^__^R0
zf?o=LCHS>q*u~WRTP5jK-wPq-ha!F~;wKJXtug31Wd1eE{i}%GMf|4Z?}QQk4@C_6
z_Mf7JL*VZs{wZQl5qm|ni-;GIC?Z*e#kOk(XN?^Atc#vc&k4QDDT2e0cv{AE1wFxy
zGE}yRToHXr=vzX*h(Zw^O6XWZv4~O;)k~;RGTs$%ycDrteOE4`A~p62hMp5EnIKT5
zWEx8ZrT=@DTUA-rN@i3t>!1=2E}?k|ElMWf*DRra2@Oi9RYGl1>XcBognGhh2aXh$
z;>FfAETK^eO;t-{!6q!LLl?<OX*6;(RrlY1X<0(+5)Kvd5W!X@vj*EBnQcTltc12D
zv@4;r9*eOq`XL+AzGVLA(&t=sD&g=FjuvxgLGpAf;RxYf1iK3ImXkM<-G%okp{I}|
zOE^jhOR+;kA3i3c94n-kU~gKZnQ8BFCG;y{S_#*c(4Q?W;k*)tmT<hf<HQn968}KK
z69fkdQa*d+<PuIT;j|J?5pl5KfBoe25{8s;W(jAA-uE2yfbJ|-#KnIJ=afurw3^1w
zErCxaLxIfVn*V&3;v=0BE-Yb~@ZlwlC}Cs?7nCqc6xOnHfN5hGDp~xZ5-u*`@)E|1
zVT|CVf|r!A`pW}%aF><Lz5urU3Tbs^3FAu`C!7(O-Emb3SC=rQgsCE4Q!-D4NS~l2
z)tgwtB=(e4om|4T!u|E;=_18aA36!|<E}5^h7#^6;ocH%EMa;Hx0Z05gxplZOd&G_
zZx-a)ww(8G5l%U?=(>84OZ@f{=9MtNgxMv`5yRXP?hq0_j$rf2wxEQC^ncM8m2hVX
zi%YnRu3OzqzC06#JS#Le_4?E(xs;Aai|MH;v-Z@D-B-f>v{eafN_e1z2PJAn2@eS&
z&%-4wD`9yFltT&O#6kKa(l)GOrI=ThOvK<^v$lkFC2T3-sS?(gu%U#_B|KKb#u6SC
z=cdwu6#`p9WoYVfR(-sLCrWsd{iT4zaZTHD>SuLZOW0PzGbKD*!qXD6T`(N`;i!DB
zgy%JQ!!X4K5^Y7{J4$#-%m)S7Ddc;>mrHo1gjY*=t%O}Ad|bloCA^`m_Zk0%u<Cb&
zye0UyAXmcg3VBbEJRH{_2>&pmd{jbXP4u5cl&?$pw1m$}_*|4P1-}psIVtBWCBp&r
zO$pyBN&0sj3+nM7O8BvapGx?-1gC^l3BNETa#ZrX{1SGT@LLIclw_&jS-gZlOZbDn
zt%ntae?>C?7Ln%tNBr}2!qp)gVtY%7i^7OOv6Pck5vv4S2pdacTDV_Awggu=JIkXF
zD8SMU*b6xZ{}T3b;FnMkPpO1JNRd&lw(%&6Dwj|Zk&;8ovhCO}N|gXr1H=L#FcSd-
zEVu9w;Z-d_^#C;jg!+Wfhr_NvSj;sA$yrNC?ErOz)Q#x%f&=&04Ffa^Fydc~{1=S_
zGzoA>1+6M*8lYK#Tg$kujOGDa1b9B+$suS-hQNfi>jSh3&^o}$0Zs{UXn-~WdI#te
zplyJ5s;Fmx!veGq&?P|E03FyIe()3E@Bkf!v&o^_guFTjI70OLN_Gp-Juq$@=Jrrl
zah6Ha`Hu{6RDh#JB<0uu$57|!X)`Ik0-UP5s=fh^3vhfSs$XE{%}{246(7Kt<67Pi
zRPuxXgM^$I;H0Qjs0RIWFvSKK6=1a5cv^rn1DqxN^Z;iBX0<;=koITjI6J^Ow6GY?
z6&xDid@-CS$mw_(72xulp8%;kBH_Ypr1&oo3}@{N16&kfQh><;E)Fn8nqM8@k^q+m
zxFW!~0G9>0Jiu6$q7HmX$NS3AyEx-tDf)OdkhgveI9CbZqYY)(1m@0eLV$?@_=8TC
zV#9lmid`FE3f-Wq@xZB(<Y{8&#B?3osOf-{`wanZ3@|;wO#xO0SQTJKfSUu{9pIh-
zGu6Pk0qzKJOMqGQu>iLPm>pn_)VN)>gw`If@IoEJC^s*_`~Y_bSS-#30Tu>WBs_cu
z$l5s~2=8JS2Ur^E$u{z0+o?QP;P(c&FTlf5?)?EC4DgVW4^X`pF<+C>GTC-{VAfrf
z$+8qe<dFa?#LSlt3{9&8tO@XVfF}a16@5d1jRDq0^4AMt!AApZ63*aH_uCxcF(ui+
zkiumHR~k=>xIMs@08a(js^qo+PX`Cqr8Exxa0BN`Wjzz%Ss~9!VLH!fe*6<)2S;cb
zt;=|c!9PGHz`g)42Y4mGmjS*C@M?h90_+O#ae&tYydiIVKfs$DFZ=hu9pD`yZw2Pe
zb5eM{tBT$eWQ(W?<I)El(fm>_z(<n6eQ@jrQa+&__`pZZOnw^RGf{}sZp`{ZNecNo
zz&8OB0g?f}4e(un-vj&+;QIhS(Eb5-Q-=UQ1^8LgXg$txp;xf3U&yJ5!9Myeifj~1
zuQ02H0DlMgC%~Tp{!)u3^)zMKn|lK64G@=1J~W_MO5i}FdUONg7HuBD4`2sy0;E*j
z4d4Yx2SzxH@C{VRT+rL_Y=B%~CY@4%e1JlLqLLvGwG9Vy&3dsQKv`MrN)it&Z}^o?
z8THH9Psc6;WfK4oD&ycXs+3W+jA~^QMQaFF7i7>Qg%`tGO;KtKl2WT|o|X`)Q$}5h
zBF?rGQj-Q^Ya-ZCu#sS6LDt)}jAmsM8=IHWQp6U5EKY3+4^ff~hnCT%j8n=OTt?e6
z+Ldv58J){!A$pi#C&Bh*bPz&%M<IM%L!9u4GP;z}r;NU3bS)bXJgSVN%ji}{_p+G*
zdz5jc=sZiXXW1OIMOP0$0ATJhW%Lpo@ng$o&A?{%E`uvQ`dj#z;y7BMjN`@DuZ;de
z$j0e=U>PTragr#5A~`2Y4h8a#kMLv}kO;%zsb!qT+%hgG<McAlD4V<c^UD|_<Xpis
z%Q#EO*=3v~Bzyuu$mfvfMU<hmgPzb1izvg(7$KZ&WFA$<X!c_nlghZTjEl;+yo|A8
zxLEMgGRBl~iEutpWf4AZCA_SB;92n%WsEE18ZnT5Wf|kkxGJjmzfVN376VUooFF8m
zPcGxyGHxtmx`<QCm{!JhWlW8vc~bIvC2wF$o0zJ3aglRV88gbbCE~ofjF}N0J^~8i
ztTMuu-d@J+GTtlW{W9j1F}IAz%Xp%!vuDe=vy8>U=LyaiTp+kma1q<p)C8rw%2=XK
z+)&2SGVU&8jgt4UqB0&4eqR~)m+?>;%anXT@WJwdH5I*r9lgAahs)q&M&i6?twN=}
znGRNzv9gR+bWY9Gt5ueVz=!vtYn5ClxL%NDLxCI1cvM4Xli=nu9uouaaKkBvoKKeV
zLK!cXv89Zs%Gk;Q$jz|g-zJ>n?&&hN3+K=?cVT>GP{woe&*vpDtd5?)gCmh&cybmH
zvQzM7!B+&C%TVxI8LyY|hA3|fzA4DM-cr@HDmmW~@m)a<u@B1lu#Ado{HTmwW$Y~@
zUdG2|d{V~OWqd<_VB{CW=Vg2*gn>7-=NC$TS;kiy*K7-)ntofxccTAM#`mKCT*fa#
zekkKdAq);bmCY&8;jHv)8NaCrle^0YX35`032!J&b!Gfn#$RRpUB*8Q3u+VtI6oT*
zXSa|uQAV<ig34ND*pya=Uxp)!tA<lrs*JQK)R_-~N%54VC9^_E$wgMmm(2~4nThxn
zkaA0c?D3$CGOMd)PA#BW_LcFkvi6rzqk@AfCho;5Km}EVSFNC$5Yj_|)hh??j}ES&
zW(AEZXe@?Wg7qt?T|u3S38!@{s3+ooZNj@b%4twRL(%!9g;NPBO)6+!K?@O^3O1|!
z-!n1R+fqczq^Q;v97-Mb;evf=Q$gDbKCj@53ffh0SOqgG{IL|;SJ0t?0TmoyK}RB*
zl8&vQQw4`t%>2^1g6<XcsNjeSx=1*u%dQo4tC+9Q$q?F^!>wlpM~mUe3XUR!9$-=+
zt#^#*p=Ejr?_EKkikYYSR?trr;>U?Xf&E3{NyRKOu!0jRxVVBb6%4B2#0rK~aApN3
ziJ7Ga3pu%hQ-p*~IJJV)DmYz~Gb+Z_Lpu4FtTlaiRs};VIKP6knJcz)D>zR`I4_6%
z!zvhF!KeyGS1>}klrU13A#y=P*~nx6g<lj=Se(n+k$eSQ!KD>Us$g;jmnrv(3dRY!
zTySh8?MfxDuHc#q##e9^9cGm=5wB1gN}Eu@#Q&dutx8R+;JON?2%jp*BK`Q~X9YJX
zd6VFc6-*aGnLQ*te6dC5nHAhp!KMl}%lNY@SXjX#;kQ<BTLrfZpIyP+3ht<2j*<*D
zG$yZk70j<-0c|J>M-cmwQI|`vJ1baR!HNo2R&ZAZODb5dvRo7`t>8X7QU!NcaE}yY
zDMrY9D{!@nc%Xs@D|o1aWl=8cVx<iDL>jb=ailyfX^#jp<c9jJQgVF-t1DO|e68R*
zLHaPiQDj9MBz9v3k5&#W8bed_A;V)8Y_H&%ig}Llcm+>X@MHyBRD5d%+eCk=f>*vi
za1+O>pO!RQfNwFLt>C!|UM7Qx&sXqb#Y~s9{0mWAc8Ky)1v@L|s}*XVyvFdnTES}-
z{6DhZ18R!m`2wB3GqbZ{5+E4`0TqxWN>UM2L@_G{5D*kp3@9inVn6}GfH{Ey1;v0E
zFeg-!3ZjAuBl<H(%mMv&_uanpt?&QNJ7-Rvn(FH6?&|95I6bTC%u97<X`Ojq2E1I%
zFVvYA>&!A*NMoxgRv+6J^Gt=Ws52|+96HsX*cp*CFV~q@>dac@d3BvxBjnY(`v3pZ
zT`<plvM%X0g);N&>dbmJ_OhKXzgcJA;<7{8YWwXv^G==lx6ahnnRn~VhC1_Yo%ycL
zyjN%5uQQ+3na}IY2X*E{$@xT9{gLpG>+ISZYj$Iup*_se$ox|VDU_8+;T&dvq1P|#
z%vV(JDfO2BwTR!;G)7L=-S>6ohdT3no%utdKT>-%m^!mbilT<84L12-=o{<IZ*<Xc
zxGKn!uJ2%4_Hvf9yW|ycio2OvsxyDH$h9Emld1fp&{uCZWf}$@e%a*9_6mY3rIoEo
z5O+i|Ws{9{-LmndC|@uq$R@zdu!0z+P&P@~q-9eqo03AqvWdzjF4wR5FkNPnzyBc8
zpllkJO_Q=|S~iW!W()B*E?XBpMmHp|*0Q>5RyNHQ+CrhEuODk?h2tjMbX%3pmh}H+
z(^@>+2(}SyTQ*w@`LEw;r`Pu7`aWe_y)rY~3F#nsamndaHrtm?=d$TiHhYxKo@LWj
zK|3=8Wz(%}x|hukWz(Z<dX-J@ve{9gJC#k(vYqu%ARk`xPgU~=0euwOSCDj8*6`Y(
zYgZBb3-&9U-GneSlQ2N9yO-@A2d}aj$a)dwkg^#hWIw^Z%Vr-TgUe=LA+!*tV(X=u
zvwztfP&Nma%|T^za4j@z8oZ>DJXu<YDrkt{VS@CoN0!advU#&?-YT16%!cUqmCf+7
z8BsR3md$NtGqP-sE}Qeq=7O>rC5BVVW_;O<E}LV@=Gd|sQ#L1*&A74|TQ<j)&GF(H
zk+Ut1^}+!p^T6DmNY$0i$qMBRmqnoVG6$ID@YJ$7y==}Xo72QIp=>77*nC?Aj*U6a
znN&7smd!b3Go@_KDx0&#Ho0u~(6hdP%tSJ2=a$WRGAF*$rO=Sra;KKfg=KSP*<4jN
z7b*J1WizvErU{>3HZx?&nQocGS)yN7HkS*zMDSAbaM!HXsm(5%D@3QyWLn%$xmvF`
zl+BH0b4}S?tJmuUuUA{k%!bT2mCYQ{ZxNg;c(Y)(^vb(>m~E~Du=UMTv%ORB_OiJ{
z$b7*Cg5;^{&w6+1b)n$hg7*mCTQ+}5)S|MvzibvOp{L5`X(0~?J}CH*;KOCJM93q8
zj|x5}__*K`f-K0B<@$Y=XUgW;vRPR+tIFoNTIlmamI{7;kMly=yjV8N^t!xkRxnpx
z>peNwVBctNYy73MdAV%fDBD9IuawQ|vRPZU6Je&crfgoVNv2yK!e90A4`^lcx`_NP
zfOSnyKI_V6JzKhP>iq4pd8cf`iis-b-Ll!h*2LwGiZz(`%I3$i*;F>~m(2%d^I_S1
zR5o9f&6kq-aoK!Iq--{p%_pL88J}&I5&3*3%I7jR?mv=34@3A>*?e0z-<8eRW%G?Z
zE!`}ec^2z?#rlE1u{IL;#&doWv94^&W%F~{{6argHoukaO-g^4&F^LNN7?*Ib<q)Z
zF}#&-$5!^4&r<YscyyX<o6F`O@rPXFk+h+;0a&GMT>1qXNm>7vpbb|HRQ#+lZlP>@
z73-pX(Hn~rRO)yA@)c7MUKC`HU#isKq8wLDQZWZgep)dNDrSd@=}|Eax%gi(tt+OD
z1a46=%_^pOCcI*rR7_JQrv)(%gtD!=77A@uF)f9#kD$i3teCAThVFuGlWQjQDqAab
zyNc;hF>NcRUB$Gom~BMdwqi#JpEk39`e4!i>m52)%=Q)2Sv;KtX+P{|yHrfqis@FV
zUyNmP-I<ne7wfiE74KLvJ5|iC71K|#dR9y?X@H#Ed+l8@eJZA}f_7$cDs~rxm#(n?
zA_Fu0YjZm~+O1*+R?J=%)4yT{RLt%bvxlPW$+Wlv(99k#B7b<OHK9Qjvv<Ypr@Gij
zY=fDikU!fw?0PcC&Pw0EVh*U-(I&^7EH&k@$Ol!-!K#Zx1P>J)lGToOMvkbMBP-@i
z2WL4LS~0_znJRArG)Gm;@QN8<F{euAh>97bSj^H$rG9k9j1of1Xd%Z`%&|2JH8z%I
z<P~s&M2@eR6Dnq$UQeu;lWX*oglv0@IYmh0qK$Q0#Z0J}A1da@ikVn3r&r9Pin+gH
z&ZwA46?0p~aOibr#hg_!7gx;8iaEPtCM)R+E9M*_=T^*l6*EP6r|lemRd;^HTu?Ez
zE@qfdHcXu=opUqjqKcU&=IMenDs~-)Y*a5D(X5KOgjP{8S1R<<in&|}HGCO!b-K02
z*`iSMG?=R@=IV;MStYurVy>;2>ni4Ynum@(aA?XhQuqxlh++}Hv0`o#|4g?&bS~>o
z`?F-erDASXC~>Zy&65Uhub4Y3W`4yisF=Ge=AMeVvtsU|8F1xa%rnMWQ9G7w_L#)I
zO6xww%_t-e;^?bl9;lf074v4rJXkRgRm=+&^J2w3Tro>3<~hZBq+%Yen5Qb{>56%*
zVji!UCq&;Y$?FGLT|HT`!{a^WXP&8*>siLq+Gf`JmWuwoAl(bIv8-a2SInA<c~u6s
zqGDE6%u5xsQasc!yY-h@On&(#3jHl{KC4B1Q<_{`F|R9>*?6tS_D0356Hm4tPWSRw
z#k^fHpI6Km74weRKCGCJ*b7w52ED#lG4EH*2f|sEtbNudWp2~V-iG&a#eAxuje?)h
zq3L%3OPGg>`HWssi!dxHoz<7(Vcc&k<}2Y}SIjqbgR(%DHB-oU3i@7<>wcRm=BEn(
zcV@P%nx8A?mx>9hCeIt%D(1I}sfz9Qiur@~sVe@nV*aX_e}w;CG5hy&Hj9T2fl06L
zU^hzsRVaNXjiD^OBFLPO!pEudQy>mzj9WEc)%aDDtJ-Er!@fyh(=)e}#(LyRRH4cb
zy7?6hot3ThQdKKIRTBy!CyhK-(0~56LDg(g<xhWjNt%tqr;!lWev_(cD!gUYG^?8C
z!dq1B4Vl)n)p|+llMfAMtEy>j6S8vJRL#~^)4j?s%}v{?X;(E}L~mc^r{bn#)pV+I
zWzuXXVh3i}cR1=`M1GP$yqo50+gDBJs%<jtBeG%=^0jN#bW=o@BC~-W(n-%M?@F@D
zp`4wl2kqnc5+{khtM&EUSCpNrW|t~I%;!hPW`HQW3HBGHglyxF$?aaFa0oQe%IEF_
z@6R!Vs%G!1ov+<hHTzV};41%PWoA{`5u5$0yzI-ITs8aK{F`H$R_Gj9H3wDA;Z<{l
z1Rh*9hgQuH;fDyGtgmhl6HfiJXq-_VS><hYW<-^DXqaJi{#7%)T0gnYhMi>NNS;-2
zbk&Ti@=&qW|7by06PqN59Bium8x98#W2$DXf{v@2aYBx-niHz_U=m|xN<L9^ie(;7
zshaV6J-^C3#JI6#&eAIdPN<sGtL6;7POREfrhF#p^-MtuWdBaMD0R-R^7b}!PSs4Q
znsck>ylVaAf}z<FFCy8AmkX+9s-j<5<v&Nv^r}4sdyy#257}l^&Bc19sc@r>;~!f7
zB~^22)!bM$H&xAL3ca#wuB!6?nDtgYyK1he;dcBl{JI+DnyR_BhO^^lD%V^4tlq%-
zs;xfFshV4>=C-PtTjRXBYHq3FY_Ric`24E5UHBa}O7`W{0=?cT$g(V~n!Bs~w;(TI
zG0UrFMU~g5m_@Rv$ExQ3THGa7v$$#=sPd*?^H9}1Om6_^2rW3!I9W}sdiwT96!B3(
z8XGO=@v3>EYM!j}zDKjP%B%dWtv+2f&s2HKpIJE97IWGp3;8@(HOI+LUQoKrm><V^
zk<LK}yzf>JZ|7cFHLI%Tt*UvuYF-lOnkug%F)yn^U#XhaYOwTdoaHeal)ScT-l&>&
zRr6Zayspf1(8VfXDb`EEn}RfztbVyGl(pP<L}$x=w`w+2&3o3fSrg5C*N0WEVws)}
zdO7&G%3BkyucM4ls^(LEGF3Hy+vt|~C0&+8eO5J}i^5!eAqu6D;p?jTj(=HK&^LnL
z+Iu%`=6|S~A9)8eU#n)5wDA+2zv5EuWMFQygU!F$hF|@?${!8eg0J4oIbfV+XgS~c
zvuZD!Ws})lHUH2>J7Bl}Z`IV%r8^)`nZtZ4(1CF<qn)!=N?yZ%suCyUD<7U>a2;gC
zjE4<0=O7R<@1UT#WXPfrZffeV8;=|`R4TCpPPizEDJH_R{FB%~uPg|E3BH9G8ars>
z@cf`<=4m~e89PwR&r?7SS~%bqdMgKA98iH<I^YkAw{y@zue{g1y$}Yqaj><6&u5yp
z4yYeK?Ht_F-){SE<6v6~;inwBewNI9Ix6D!f?Rj}x2df`KAlD3vQ<|H-5hjxu!Do0
zMC>6*o*f;~Lijhj|Na!lUAf*2b#SnQLsXW&f_ppI*#T{kCEC@&?hf{F(9gkcqV#t#
zKnTs4416*tu&0B)L?0;lAAOL6jA0)KgIQ55rWg(ozMtU!f>h&ynPfrRjq>ongCPzW
zG+xBR931Un6lFR%!oiUo{5u$-=))WwC7$69+KjiJjh4o9Ab(D`{o_cMh-Uy)P0Yh+
z2V)%^=inFz$JSCGqv%;fJKn(wdOcZioP(2uuv<CN0h>H$<($Yc6+WjpSWxRAPIYja
zg9#2Mil3op2;o?p`zie4BPo*{a6Hfaob6z;gYO)C@8BE<Qyi>t(5~d1>tH??y&c@^
z;5-NCJGj8XRLPm+;6eu%Ik?Kf)uK#uaIu4#!lw()P+{4%&2n&wgUcPvc5tbJnEGW5
zZC1aa#Mdio^eY`?I?on_uMz!v!D}6G7)j>qB$@aPqTlG?CLyt@cTjU3+)NvGaI5GG
z1aEV2yAVp4=YZV-ThkpZql3(ou!64c>fGtzF0m~Xyjw6kal|h8c<%o?Abi}xA|b@@
z7qVFJ0l^0yJX8yPSjZB=M+6^r@R*P%_ObWq@_9n9PYOOI__Tv(gfR43A<sEjD&%>=
z7X)7vTqa1)<qo(mN@S%ds~o)K;AID|IQYQ9hYnVY{+ff=9jxIWYvH`=V670|)|=h>
z`-X#cV%s3N-oaZA-gfY&UcX4K68OC1;NAa2$;$GcC=7kS7W7e#@+o_P8op7;CpDh`
z3HhuR`gukd{8I2M!LJ3saqz8>EGIuO^K2#t;|w-A_=&b*tkd|}!7p^V21SEk9sH(x
z^bCG?@P}~6;7=i&9sDEYF9(0KnP&&5WoiF9C_AVqv`&y6Up5D+>Xiv)wqcYg3|t{u
zkHb)3uQ`K2NM4X#5`#*-{KufJK|6!UAU0@au%$s_kQy{LXkyU7*dBpTBZG#*`I#QS
z$lF4Ab^@fS@MZ?hYYgOXA-tu*G4o6&VRRp7D-qiWw*EiNWZ2pulh)o~8-tw;dKzqN
zu$|bt8gww|XwX@&<nJV8dxPw=!3=g0aabd}a@ftFyTJ|yJq&gf8^=OC{gNGhAp?`^
zRg>1opmz<=MD;b;xkj1hI=dS5GoXas3<eqOExf<M0E68P_R#A<K`M4nV|@sj`Rv89
z7%aYz!C-@<42H9$2KyNdF*wX%f5tL6SaA<Dcu_y0K1i?kO)z!s?d;|dgF{83C_2n+
zz3Xs;BUPJ62$GG99zzX=8F2E;Y-BTcA|nh&k!Uc|fI~P^j#d<|sPpw0gE0nU4UXkU
z<h=Ql1AxZPabh6n@dk9Ebd|)p9d@Fzz4`SDJ;~r?gHsH~8%#5pZg8r>X$m^eV1mI!
zgR^RKP8TxCfP<nlXkgm+q^L6uI1XgjcDBJ}gL4d~i1S=ydj}@Uhht+hWL?tv1{a87
zs=<Y9Sy}|W$k=}ELFSwzB7=(!t~9txY%>imGvKA)lrziV5)rANOKBb)<ZvTip|e?K
z2ARevik%~)Ty1cT%1fMU+LUmu!F8e#r@Owv*sh%8&l?SH5<W+8uHelEw;1c^$(+fY
zXK*_!J&(ilxWiz+!3H1i`B-3ZC)MTRbQgCSEHrqKR>RF-gL~}E9xVL52KO1PF?iKr
zk-_~2PbiheDiM=dV(@_Q2L&Gze7F{xb!w03^-;mc1Roc?xa2&^;!_m{&loH-SZ?sF
zO3FHV!QeUJOAVf9>RiJqJCpPS4u-y{psWj9VeqnYwNheN8NBp=>X8TYUJ-q@AoI+s
zUu!@GzG?85!E3@_7bNiwgLT5!*C-2ia^5z0ho08{_7Lw%&ZmUbq``Z7ec#|igO7xN
zAbVp%d_FeVXz+>bjj!~9P3GA(TN=Y>2A>;zt0)ZmLdaKwUkXxtUmJX5z^0c);c)Id
zgYOM~sKxq`s(aJcH4T;K`m^YN+KU<Ri|}9VRn4|*_?@1O=YI^i07XvX+2HVRh5l=>
zS;#+v<j?M_sk2+YsEEi$#B9^3tapJOHje>ZzyrDiI{-eAgH5YF5CD0g6|f~x0E$3E
zppimLKnx^62t=@@JF0;#0@oQ*F%WMcgach>m8Vj-02%|$faX9G1vM39Lpb6SJJVzo
zJ}pFS3F}h$WGCuL-wN1TLBv}NX#?vM_}W&l?P{T!#cl&^3v4H12cQ$Mz3`5L<mn7_
z0nVnw2bf9fq$|Mua}2=N%>flDJ%Am7BY~m7PC!p!FqH=M0(t|x0sSSd53n<^i}1dJ
z+~Q=$b`{>QmQSwmbACDi*d5pl7zFGA><J7MTekng;VUElr;WXVeH5B4wlIiBvY#ji
z0S5#7Gu_ZRpeEr!2CE}D1UM9S<bSw=hKTJjL3%|VPGd7ULP1%dK1?{}j|7eqK3t+k
z)aaR3j|N5oqeVOhI93Q5nFprJ-G{NjalrAw3BYt<1~3jdk$R@O8apQeTqqb1oJv&-
zXNspt2)*KIzy#n7V3L9+ihjCq$|omPbS6zmAG4nYJ2Rq7VY*!QoD7@;Ora?PQ-KSC
z^MLau;euKwnNJGIW?mPGI1M;WR(D@>dmj-+T@1_w<^neZvw%y0tAT5POM%OPD``da
z{J?BQzd}|@nc0}12zL#x5)T)S$ayVroj7k2@p|9};6`9g8)rjr`}rZG@ZoaP9I>%#
zX!ExKw*q$o3q`yQxE;7d)iF<X%Dv|K3R(c%$?DMV1Lb5^$CJr-1NVsGe)@mlKG65t
zM*W~p=@4OUvfs}XvKU~t9{|`7QUebG4+BepM}V#_y1951c#P43&w$5)CxDNXnJ0m#
zfVY6Rfv16IfK|Xtz_Y+}zze{ON^~jkybz|_yt!S0A+iiu4vxXFQbGKc5{cQSDl3TD
zd%UIdGVluUDzH{OtEo5Yf!fx>6mJY5{u=N)unt(Sx}b#7TojULYs!x@*g*i<vKxKf
zA`br9^f)LjIqw1Q3TL_-B%c|3U&sf*hiWNwuv7?>`&i{A=SDGn0y|Fo6yU^)44(sE
z(1p72U3>|A1^fd1D$cKg?|~nLe*=6Ad?&l5C_eAYXa1<rpMXt5NMEGghoAMzmCxT;
z1fUF5fcf<Qz~8`T;7=A=6#kL0<wUM$R{8t`{0r2v^>L)}rD4soqWSO#vaIhcU3z@S
zg>kLruw?v^Rz`PS%dpcDC+8w?(b7dL7kL*27paQ|E{b9ZT|_QQ!m|!2CXb9caq+Bv
zV)*N6&Ud%-pKfR*wq`E2aM9RB6BkWgPH^l<JDY1{5t$Pv-CWEqT-(a{%;CV>#a1r1
zb+Mg`)-Kw(XfGZzZ|$P3i*|aY6Z=r>37JW6BMIbTGbHTbq7x}DI@ahbT&J^(E^htm
z3e(E6LEG!@Vh0z;xH#5D4;MSS*u%x1E_PBvJzey2?RcJ6LCL*c?CfF}7kz5E>MMlf
z-d$bvbHQTnF3N5$`nwn)oiifqg^M299VVHL4Ro=Wi$h%uaWTln-imdAi+yU6_jNH?
zc-HUl=VE`oW>w6BAL!yBQ4V%-NG%puYgs5((_x|vb8!?)?cxX*N7i_Ty2$j#Y_nX$
zU5rrBD8Z2~juygY+y4|bS`@}&kH-9rad8T($^PmE$GJFOIA2c`a)RJE!C{v;C)Gkv
z7Q*a}7jmi~vwE6~3Bsu;4gk(@G0DX<9-j4Zri-&^KQ4ZCaW=EfkCj|Zbun2uU(azd
zMfkZj%6Tr%ckzwmFq9`WE_87brCCF@);`U}WiBokK3#Bzi;G>%6h6zvB`z*?!Hxc1
z^~pIK{+_&dtLV&jafORJIq-IIrHiXv%yBW-#nmpZadDlC>uDIFbFB;h#)Y$h<%`T1
zwfY-e-00#a$>+o&8|U|V)(#kMc5#b~+g;q@;#Su#i{0j8o;WjuVGr2M*u$TE=957|
z#JR8iK?8@|vI||@?cxC!54yO=#l2!!?BYHli(K6AT5r#^vKGhnJ>slH!iQWu?Ba13
zPq<j(;t_g&7mw9aU)a?4k5mHFdbz8$-X|6Gl#8c@WCs{Hbm2gk1%J-PQWtN#c*n)_
zYzQvax_C{TFS=OaVx@~^dS%kfg;2MvT)gCBjb2}N@rsMpHJ-84?0Hc#^WnKW!dDe^
zd~@gZ8qazmZwRhq{^=51I&bRrtr`yt{;u#(Tzu+cgNyg{`o4<~U3?_`1Ge|I^=W<V
zVxx#`8rj%`eYDMni?3-{E<SVdxr;C8{9Sw{PKI)=lHc*MPvOq~7R{V*U3}-_M;DvK
z@V$#4gs=r=W1DQq_mhjCYZ9_cP<blmHy6LV7~^5Ahd*5WNjK<WYY%_9_?w-Mhn#0E
zd9#bMi;9bX<aYiQtP`Yrq$A=}Wux%yB$~M6S?^>#WPaF{5X$j{u#992JT&ys$V1*k
z!9&qQ$wTZRk&sZFk??8y!2dXo_C4z!8z_hsn)N;`<`y0rd)QL+CQQ_`i=r(&H1lj{
z+FY-xXZs_5kIbN!9$I;z4ym6BIw7`|;xbpQl_Kl0t%r6Z4)M_5!!{oJdl=whTMyfL
z*wMpI9y)mF=%I^;t{ysh*k1gdDZzJG#o1_trDh(wdFbw82M;|w+j6-+#w4=Z;Q)_1
zoL{Z>^w7)0&Sdb=+e04@eI<}VcI+X34(BM4&#oT&dDzXf^9u$s2{s=VkU_h9*u%r#
z9`;dMdwSR_D;=-V@IW@UuR)?@J?vl)`+7K#qCD*9VSfc3pi+>5ZXugKB-&Ou*ux<n
z4wYhg<cw9o3@}m7wGZ=fxQ8RCSPvs5g!G{vh6^87qZ~zwiZDVHj*Y3VqdkoBFj|yj
zJRB>8rRI7ILn+6u3wb!+!-F0k@^FHOaUQ07nBn0>4<~t;L<jESWDln(?nJ@y9!?W-
zsvwsXD2mSn5C7q(dpJYp%Icue@;S@H`5rFtaJGlZ9?tPF#lyKC&J)|ueeLH1%oTOc
zZiqV1PJ>KU5*K;6Pzc>f=2E74paL6Q>Rjw$riU9m+~{GJhfBnEm4{0`Tt<C*c6xQW
z%#U_B+p{xJB9zaxt`sv7dcvzcT;t(dwT0_ET(7!dMP$hx+sJM;-sEA9hdVvo<zcRe
zn?20)aJz@2w{mXraI1&gJaAf_37^UX9<H^<J3P#%VkbKbJoYt~!Y3O-(6KM{aJPs1
zJS_5Xk5cDHsrM>lR0Xqo%T%l0`<ZhO56FIKna(taCu*nxuGBH~VGob1q{Nqactp{O
zKPu!g*)w0C5YLl>PYFIPnC0g=4@+r9K1TR>o|VGP_&CtViyoHQbkV@aat|v!{N&+h
z4=X*a^6<Wg4?Mi&;bjkRcv$D*6%VUDto87kQePwZs$gdG)X(c`M4SvVS1cwWpY<Nz
z_VA8}H$A*1e)e2sre}NC!v;~_qepdYyCy%)m~pwa`k{x9JbdQia}OVj?NdSWZ1nJn
za84rZ%u(r*&f5IK!<Qbu_3)jCuf+4Uhi{~-|HhW&<o5da9)9rfqlZmi{kV(t?EEmZ
zm(2=)@$jn$<J%RP-#q;8;a?AR68i@|zlXnt|LK7PJVxiUS+)6(=$uW{(rAih4;4`;
znLJhDj*oPq{g*l^9P+t7Jm2;p1s}eUKrkmr)5^R@-Up|alv(sq@|i9oAF+?buiyE~
zlF0lOHOc+lhCUkk=;UL2A6rOTD<50>XzZhjkETAF`DiJ6b3x{z1@q=xm&IS4^L3pT
zkcn*N+o^gxv9<Qm#>dt^+Uk{UkPfP~rVQ<UY~y2FAKUrp;G?5rapi$#Z@SiRAW|AV
ze`g<EeDwD*Ktj6u=;32W;oW?6_pyV@m3_v=HnNkCo<4T=v5R<m`RL=LukhZ!?eh5N
z4%VIhE`XC<Eh6peqo0r6s3KWc)=2m5W6QO>k3AH3Umtr4*~`Zu9|QgRMfl9N_x7=m
zkHIw!XBF|^n%I6m_E%gAq(eB!$H6`h_i==eLqtE+xBhCd&Jzw1ewbj^LXY$@l*N(v
z7$*Ls6q+TS(MS3?+Q(ua4~Suuj~PBLW+r_c<KtK#V|<MFajK88QuPU9JI+V;W%TjB
zU8}U&^Kqh&lYE>khEoJ-Fgyp6HCVQh(|k<uF~!HZJ|_A&-N%_e&JyPtf|Fz$uc<F%
zrJwC%vX65VM4O={XKf)nLwlZ&^HsWwd|V)&sXi|Bt>@%23)PYpkV}`-6gpkZ(>3Lv
z>0_3UtEG)gd|X=7(q%p_ui>+Oup7F<$CX@%mo)Y`6wBu-MP!z)@o}w>>wH}A<8~i+
z__)ExjXrMnaf^?el<piKbN%`;ITgiWd@EBwWup#n^>Lezc{DbiRoFbr9!%maY(5k9
zagUFCecb8eE*}eh+)c~Z%rsk%qGI_40Y^~O^L<Kdk&pZ7Qq=IND>86`%)5UdROr(_
zp7HUJaOUJ;A4_~Z;^R>tkNJ2~^v7$VPY9u?Y~V`%r$nL5XMH^9<6S9%wzri2pSr5)
z?L{BUe7x#oE&acb6+T|}@rsyN`dH=TCE;8W&kW-~|He7jY9DKqimy+S`Kyc9e7sI$
z^YIpSsAjm%$NE}MvIV6!z3M;fd)vo55>8*iQ%M|U@%Vja2Jid$fL&66h5<hG@ezgO
z@MaDl``GB?j2tHA@QII4ee9LPpd9|^<1>~hhh1~{+{YKR%p4lz@Fkt3k2)V^A7A_U
zhThx9?>@fu@tu!NK7LZ(zW4Eij~|6+jXJB8wl_FG`}oDjuL`2up?bOfF=Bun%up47
z`1sSuKMMWJ$KOIWGZl93VqisNF6&<fk;s`y#YdICJ%?Nl4l}R*!p*_t>~cRli|pWN
zR+XL@Xc$2bdErqG1tG;8O2lg;w1N5xDa_fGL#i~+ArV_P0Hzyhm_wr+I_0o^4qN2V
zIEO8B*eZu6IW!e#iyWE>VV0WbkR9+K&L+?@hgLZ-306=xwQQY3n;f>uVcQ(G&Y^7%
z?Q&?J!+VSEpoI@L$s%Nf9G=eIt|qx-4jppVMUzOFrP5iU-E-I>hb}pE&DHl}l+!I&
zzq8OIhaGe1okO1-cFLh=4!soX<&IX{Hm&B)cNOd3`1H-$`R2|!yK_N=EBVYh>HTup
zooeS6uwZ||0fIDR()SR)r{F-rF1j;h?;Q5Y;p7}n$zgB~`{pn#hof@XFNgheI4p<5
zS*RQi%;C@+hUCCpaTaz^j>|R9!8yBkc}NZyHn%@uWq#(l_J`LEJ6U){4oBuNG{?0C
zr(fc{Io!P7$I>f_GjX#sJckiE9FxPbIgF&V97g3Zn(`ATZfAE(8Eb9g@E_|(xlY^E
z8I!}<9FEK3cqPhEJ_nC;PRL=S_Crq;GLCBG_;VL?lGqrRIUJwUdaOR?Jyke0c3KV-
zqzB>?b2weNk!xj7dS(t!P$!%M<ZyNllXEyHhih`UHis!WoSVZXIb52<c{$KOPo)NO
zIA8b$g51aFRT3BFFfE6RMVX!h_wHv1XYWi4$+q%m<}mC3N4$)7BI4zOOk#EpEG!W|
zSLSe44p+0X`ZyGlt?!Y3T@JV8aBB|N=Wv6PyHU~S=5SLEb84wD3Qro`Tzh3sZety>
zedX{_4!7rUM-F%9aF-b7=deHsk5w><?4}E*yHG8Zaqnhw^KH|(N5+4z;C+INa=2dz
z*%k|VAcs#KTlR-@SdznIl1#CW2zit|TR3N*U=tdan#V;XGc){T4o|T{b9jd3%3);=
z&#IzX*GqGFu7+=Lo#z=VhYg8682Mrj%W|OA(FT^w9%xszrB&izox_?OUZTm#a=vt&
zS41a2R|a0qVJ+pj&g&w+CddPYG)PM3^M)wv1W9}=hqvjObNEVz^p2YFM>)K!*9~+a
zqFg`Syf4ZJf*%TIy~D>+(MGX-BKoJqbNEb@FGK-10_aZF|7Nki&f%LJ+yGu+UGBFz
zl<900<vYRebNC^LA9L80vxD2ebJ(22Pr~V5e$L?+;lGNR5`Gi%yWk&!f706sc~65P
z3i&68e{-m#4aD^q{c%7(<TksJT2($xV11FJEV0wMo3mF@IA0*$4{T2I3T2A90D(d|
zm}h7qu){^tivdaj!T?c#%Ue2$csM7D1GH#mSBX<mGCedB-Xp+{0k)9j#-cO{&@@1^
zz_!yZ18gOvxnK*ymH}D`$*it*fHna-1=v2o)}ptsg|-dQPI&gen{5JYtJm!UbO_K<
zI2%4qm!kNvv2+%(n;<D&gmevTH^Hq0Qo4(>Lr~wkcM8xmz<>a|2k52zQz88V^cLPn
zu&?0Gg1ZQkXICkW$Zjfof4ydhul5MAXMpztydPj-fV~1-7vTB;g97Xw;FJL41MCxE
zaDc-C93Eg_NjNaTK|=Nmu)h!rKOnHZPiyr=2M4f!Ck$|i5Y`t5y`&5Y(DF1ptU4mV
zkpV^p7#(0}fMKfikpYehFg(Bry|U3UBAFSN15sK9pQ9;IH{l!;;Mf4i2RI?Xm;hq~
z9H*RQ!<cL!!Q}`d;{u!*;G_U2i-DBKH2!4QNt2^|Zc3iY6a&l(a7lm(0VW1GFTnW$
zP7iQKfU^Tk4lpUenE}p{5Dwazw=Avf0LeK4res0E|J#o<Ey^d`1p%fibh_aF{8@H@
zi)bV~LD9sS#<IlL_&Ge75#Zv$&Jkt?_4|e#PS8hPs)&~dm>u9U;j0@vRHju?fU5#r
z9pK6UTu|cFlCJC;s)hT%;-oa<oCmQv+z{Z#08a&YI>1c<<^)(A;DG>h1Kb?o&H#4>
zxFx`?0d5a)M}XTTfi^iW&>0flSdtZaet-pmoh(x<zkB7}oJCj|;O+qTDb_u*z<Y%=
zpWJK6^tLF#{UWjos2uM1Jy_#;JitQ%9uBZ1z$3J%0FNn%yEaUMLmG~#`2i*~z;vIe
z#d=Z*RsBqWX9K(%U~Pcs0xS*iQjO>N0Lua_XPXM}A`P#lt&~CfR~_@VBEZT3t3>B;
zlm+3Cj{;e=mjk>KV701sjihDuPMr{WEx_vm-VE@Tg5HpXb<!2Z@>wr>!&9BNYdLvW
z$UD@$Mp+y5%HlBH4><UzkIJKQ9v=nxIKZC){tB=$z$XE|3Gl6$KMn9%fX_35g4vM!
z3*ld>fqxm)&$HMHzE)by%y$945Ad7VehBcRD(II0n*#hq;}Jcpk^k0^Ii{sHeibLz
zjws}JvHd|S+QpjR-vKtWi^;>!;~xc80#pP1E4(g1nXXkQ;j@n)8O6!llRa+U_DUuX
zuCZ|LOq`ZL$W(H91bLM52=mD2QOMgZ1J*^hGEmHeeP!0N$R9B@j|O?fc_jJ&Pg)K0
zXvDPC-U+h|Fk+KDn&z=%9y{gHERW`SbjYJ)9xd`{na4KDSgSm?%wy|3+EQj7t@CIj
zI#bM+n0SpOaq6dC9_{mXjh(L<kqGzDx2^GSCxnzvd2F9Y_Zq#kkgkGV1SzCjEtIM3
zP{VuV(J->|d*;zAkG=EQCy(BF^vPqlJo<~RZyvh}**TA0gk<^5GS*KN=3zh{y9*zf
z#~woV6y%CrmTkhl@)(o{nVD#o?qKm8D7bGP`w7`Uj{}5crLIpdkAw3#B#%S$7@|;S
zAj?CB5FU}ok*t~`wkTp~9>enZq<~KgI4Y0fd2CTY;{rzHF*1)g^LUGGfu28)>3Ph^
zV^kiaCH9y+#^rIM@M8tX<S|wVi*Q^X#|uB9M&V-qNqL-{#~FD{%HtH#PZJzp<2jY*
z8}+H$1W_jDae9rC(a)@LUMS=&!L#$2EaaS8=#)Ip6@Ffga(*5c)bOc7xL0*ijWUgP
zsC8qGVJ^<&>O8K=V`d(+@^*T1NglI>Tq<~(;N^nZce_^zC+C%UTvfx@xz4qDT$jhA
zc|67@lgABtEXd=|JZ@CFw^EZWotyHQlgC^(BHy_=k6V~?&4##TObUl*Z05J+F)xqX
zsfs-2t1&W&aS3^1jh{KMcb&T=^WHq}6S6RmyYsjwZ@VN`2OBTl$f7*%&*Nb+EY9PB
zJRZ#BA-!gO3T3i+G79<WftTd*h%!kDnZJEJk0<hYDUX-)cruTt@_0Uv7xH+Tuv&d4
zk7p$<+i-j?kEMFeb{Hv~a`?QM$MQT@<grYlq+~%W^H^1*u%pR(nOE{yoyQxZuc?K;
zmdC4ktko;0+w|lV@_H?l9WGzj>2-Y`+_~l}&;Pug$4^v99`EGwZr=9(8)(~kd@TIE
zJl+>V`UiP@Si{+@HnM@_@kJhAiufrd3t>}Y=x4$|uTdENt31BW;|Ec`$>Uog<Ydry
zd3>)|;-pXlksn3bB$!ct$>Uf0oPstY^Y}fFzw&n6{)Y;c)#jhVX#*Vf{Vklu+{|7e
zkAL&1%cD#mUZ`K~sffYXYn7sEbR&f4J6$23;4%$tC@oj8Gn$})ypV!mQE**Pd!Ql|
ze<T<SGFBoaEuevr>`Y@L;jAov{o15}rUi^DU~~b^3TUpN?gg|cpk)EA^-4Ld3fQt>
zOWj31^;W{OvbPb>)`D$o{Ot;8U%)m6Y%9w4HTrf!Iuy{cM(I?*a~Imqv~!KpMMzh{
zZne-I3g{uqjs@&mK)(WZDxjw*y$a|nq_=X_N048{Gq*dl)>LuCS(`lIv0DNC3)ruK
z{R<dS!0w8;kKi5!>{-CTf<1c5!>D_SIH-WV3-)X(n>I5^4?t1N8#{v)y073TIy`nj
z0S6XvWC249IH-Vw3m8(sVPZI>fJ22a4-~?O2(9Jt0*(+pYc&*3l@6oxFJPqT!v#kO
zGS-HsPOH1>o7mAJ@(b}}gq*}|7jSF=WAr*!@VEj;O*X~j^?HKfI6)FmEbzFsLxxid
z7+=6u1zcUgsRf)?zy$?NEntE;&la3m!082?QHy(K0h6TX|88MAt5AP}YjOeSh;2#%
z=TQ|Z>A3|v7swpf`3j{eURc0I1<Weo5>ciJ&Y;cktVqFrn?{9PEFyC|Q=+IJ;+GaM
zyGFmPfXfT^lO-m^R(yr%R|+1lrN3(mxVC_&3wWl0>k7EOfQ1xZzzqf5Simg>+$!dq
z1m_CQDcCL`8!X){3Vq;h1<Wg8fnIMf;En?33(v-`ncL*djx&)vMZZgs6B!!JJq6rb
zz>)$UDd4^W7AfeV0`4zhvG4~Ac%WdXirGYlTfoFw92WLrF%aSDnn#5{UceItJSLo@
zK_>lV0Z*|B%d2O$M1CUAviTISzJNCiSX#jI1-w$gYDIjZfE5L-Ea1fgmWg7uS9F#a
z?0H2he^mi56+jp9vO;O|nanK3H6p%N!0QFPTEJQsM4tb@)ZZvzop>1QcMXpj^j3}X
zUIA|x@D7tMI`7iY(6;Gw-mu@i6X&w<`vrVZz=zC00UsBzQ4#r#YNns8q^u+A_J0L@
zR>1EC{87N?1$<G!4`TjO@LM(iuL}6OfNw;}yjG^$?_|T@%jCE$lUdh~1#A-MPl7)S
z{v!CR;BSJNgg@zyF0-1+7x9<qe;2U1fPaKn1R45o0d>O5g3F}Ls&J=R-!B*;JlyXJ
z@oIFxh@9|1Fk3S(6j3aqRJ1;sI*f`46`JKL7M=*Eg3Ln$Aq@rjJwoFmniSEkgzhCY
zEppI>H;Z_yh~`DKDB_GFCKb_A%%>J{S`n>^*s_SNifCQLUPTNlqD>K77tynbUPZJm
zqFoW4irBu0_C;)?h#iX9RtQtyP6!(*AHH_1(fQiBh%QC!P(+U+x{BVdi0(ChGIz+?
zC|SfEMc+w~h2_YcL40}_v0D-Si|A8C-y(J{VwWOzEuvqsem=tJ<R_$iA(AO-faL5^
z#O^hLr0-e8K)q&BNZGrHeTo=X#8E{IE@EHGEaG7C>?e4D;QqC=n4behVcbKCIJAf(
z^g2ZFup$osKb-$%=}1li7$p6WNFl?E7*WJ=MI5h)Ba0Ya#4$x2UBoC+INivGi^mo*
zMwGFFS#*lZkP}2av51q37$=;<8FX?Hr|5Njk(+n*%vlBqC&;=c3TARn7qfq=&D)tp
zoK?i^A{{%<E@CeK@FmX4)I4ti6(?0arHFHB2G#0$f|>F!5a-ldPA)9sB2lIlG2NP?
zGebgX+ZT&xrXUA7vx;^Ubcx`lMO-HO<$~D>r7I=p>LRWw;ws@;d%w1b>xx)X#3Myq
zU&IYX++M^TMck;kbBnlH$W4NC1UYuSMF<OfTM@U`aJs~KHJm<eeh~|bxUYysMcgU+
z!XoZ2;x6G#ebZv+o}%qg?qvpKtE{q2pZ6E(Ht}E)4@v(_h|dFxNPo+AojJpYMPXWx
z7V%gSD~ecI#N#49Tf}okJW<4xdVQ*hr;B(-IM1;#s}z{I?xjUMU!=dS_coOFLJ==g
z8y7mf=7{yegRjdKnt7O2MZBcf*NS+#h*yeuRj;cB*9cNbmgfvvOZ!wG^m-9*h+&<o
zV7>6H$lT+8yNGv+FeRXbcNO$0VG$dOcu)2Ie$n<jto;uZ`k~-QMSLt|qu?jD%IZ_6
z!F*Q4=QW%8qKGex*i^(%MSLY@X7W2BUl;LBjq<G!=IVPPKM4L<3(Z==&qe%R#2-cc
zQltM`<PLAW4zm*dS;Xcd{t@vn!M~LghW@M9auF37f1O~~%TyKQl<NCU=8zqbTY^`@
z_9ZJnvs=GpJv=j$D<LQ$U*euGiY2rtp=AlB62cPF5*jE<R6<-rQo_+ZZ{OVEraa|j
z1!*XTMkOAu<2S-~Y{QkPZ2P!z2~A4&2x!w1nw8L8oY{UoqjTH0RS8>`uuTcumbj*5
z^VY6}_9gHbK<g6Pl(4mkZA-|m_sPzgaEm<KEM7C#*{*~RC3GyIla*kNjY7DT{ok07
zuboxWE)vyMkee4&!VV?$C}EB$JC?9h2?I*ly@Z}6^b&FB5_*@=r&ND_rmv7pdo)WT
zyNGR9$?sRfZhGxs<KJhA9Yt_OeUB0@E#We%qJ)7Z>{Y^`62_KrTnT%Zuulm`mN2x0
z!6ocl!a*e*EIIoL9w4~CYLiXiK)q&~KScPD5)M;}hnDJB3lA5ar!tNZLTky|DOEA7
zgb^i-6#b|Y2e<zpdpo*>(Ip&H!YEdK?Mw4x#WO}QYl9QAk$(v%lyG(llNB_sgi}j6
zt%MUxI7yU~OE{&3@g;1hL-k!!X-sPr%*lij&M0A02@^{=oyylq?5tc2J+p+fB!o(4
z{<F#cIVDUfVOj~(OE_1d7nCryg!4)`zhv7rBl4RR!V8uEi^M|;%fg4EW{5(DStXu3
z#mrLuK0=o6B?`^vXqOAWQE)cdO1M(^wSrd(UM)yz*9f6WTvwx9U&0MFA{lN{1!cqj
zxh34prgWimO9@L$c)o;NWk0tGGWB^S++M;RCCo2jLCuyZ<jxWvlgztHSXjc{wX_~6
z;U3}l3f?EUNbr8a#e$T;M)9EVhXfxMTq5|0;G=@%q~CkIhCflllfs`8d|L1s!Dj`Z
z6J#v9%@;~|v4k&6_^O0uB`h!DQ<ZB)2`k06R&bTz>JnZm;bk$f7h~gnr35-FidrLv
zR|PX~{F?CB1>X={SHgNBZ<g@BkhcWi7JNtWUBL~46#JeKR>TKFKCIC{D&gZAzOjT)
zYB=@qzZ(7-y^!!PY82M^*Cl*Y!apVaTf(;`d{@Hnwb1WN*i^z#di{az+BiSb(aCN8
zEFvkt3i(BlXBU~n-%8+Q{8_F7mGCD$p@K;No0hM3x4A}Pbkggny$~iuS@cRRv|6&`
zJwE(=mu&gadV4p77s3yb3lW62jWdX)AR9yZ{Bf#N5Pva5Nl2)OoQy|8xbq%|_KZiu
z=t3F@lG0E}qY#Joa=QNDGzrl(#QjaMxCxqtXik9*5jI4N5G_OWNU&pqRw1?w@kxkJ
zLu?hIb%^mHP7To}#MU8>32|(QwxPY3U^&m;hiDg~eTZ#Bdl;!}h;AXa4Y6H_`5eiI
z`k*XC#}H)hBw}{%m)^c}2;SJ)CB(%Qhrd|u9%6?OdxY4NISH|2NDq%)L+liyXNcY`
zNQhpcJzX<{r&BiDGcd&aib7=PkRMoC%K4sMdFUs4{}2O0>?SR}-Q1Z%-MV&{d|)GI
z_Yj4F#!H=nA@&Nfe~1G@3}O`+XP*#*Rh+#A$;_hd8`?uP`-RxMyG@1osO`;xAr1<0
zSct<z930{h>N&)a5Pe6QNu8aCW2f7{HaVWwIDZR=$2^V*ab$?0A%=z6)Wo@KsME5c
zv&gk45BqMmr&jo>*Knz2gy2ZQqXns}Q6WYP&u)l4ncshfcDwV$5M!n4;{=b-)Xuvr
zg^UX^FlX=Mr9GS!;^dlboI-jddvfEn5EDYY8R7*hHpJ;6RtY~N#H0|nhqxoenIX;!
zF+0Q+A<hmlImGl3GeVrBB+d(Qeuyc;&lQ}k|3`D{{{p>UC^$95R}HN8E($SCICDh`
z;l&|lisw?nSs^YF@{a4&b+nm3&$DcoiFmnS+{n2y#8n|~2ytVGt3@QwbwaKQaczxq
z*=y$d8qVZys^K>anG<5J5GKUrZV7R#UT+IAug3XVcbj_Ye`bD&1tFdZ@ob1YL);}r
zJsM(Rh`XiOhiFJ#0t#_oh(#gz1CD#C+cWL0Aoqt@9O3~Q6-(F0Ij5(2+H;O{9cGD@
zIBN?F9}clZ&E%1g-<djWM0{4b4y)#|5RZp=BE*v+o}ziH>UrveHyG1$`1$8EuA!*s
zYS!{%XlGALL*8rTJg;26Ao!2#(3X~|fh-TPBE(9171yCjC){or=e!i+WtHm{!Pi2p
z7P3b0RYB%wEzMx4%^088MSMeWo#1*wGQ1_^ZNYa0-wm-r$a^6^5JCy>GjFv&4Sgu$
zM}i*<ZWLrY`d^68Lbx%!7@vpuLOQ=P!k08BDkQ?#2w#WzCPb?UTSoXc#CP<=Au1uh
z5AlQee-H7ake>xN3H~H_Ie#p!mhwx8Uqk#R;wr})AzSnxdi^uRUm^Yuu{p%QA?hf6
zYs2$SJf!zeh-NzV=No&jkM+BGw5cjq5FsB~FYQDyk-fgbjo?M_Bjh4$Gy7iT&>ivQ
za76Fa*V(t7vv{b@Od&!Vp+SUVgi?esLKGp6kVMuQvZ3*E4^~{Iu`_3|q32<gh7lS?
zXd0oJQrsd!;|NV6elBMP(#1_o?EeCK@aOLlT8O7*1p27ep2NTA+^Zh}ka?>Jtt0e{
zuv>&S5w?!7gP7Y!XcwVVgzY1=kFZUI4x(=>$RxIlaOZfNli9A*)O9-6=xg=kxy})~
ziP9xP*9h;mbOtwdHo;k->~&`WJ6o6ABf^dmc8bt5!Y<<P6`?ng2z?{)&$c{(=k;`Y
z@Gi;|EW*0mIl?9UG*vaYt4hQ?P`CXf>=$AG2m>PQE^Y4-VNis<BkW00qR<)c6`|E^
z-pW{Q&-;Ir;@}AT3i*30dv_ik^{S(-4iAWMV1yA7Mn*U&!od*^k8nhULn0g+VMv6-
zB7XJkusR4Ey4L^m+bBk4i#RgE&<ICG7#@LDOsnPz&tZ}6K)b1D;bAJ?*78<EbF`9X
ztYadKiZD6?>zYP2)ivDZ?9CqmN0>g`>iIZvo*dy6A;(8Jp%!<XkP`(@itMRl^79!V
z;XJA+!l@BXi!dR=#0Y0aI6K1W5zdG(DZ-ho{ifDqGlwk5;>3E1v-&%{`FwJOb0SQM
zaBc+lbUb=`XKX{?8RF2uX#DJsFNiReH4@>{2p2}UD8h^g7c<d{GpUC&O%bO@n9Poe
z=NY!Qji^<3=ZdYJnUU>nXQ^I3X=^TvaCwB;5w2j9No^{;vG#zGhAqz9lNUu+d-idz
zig0y=Ya(15VNHZrBU~5Z`Unp(l?XSe__sxv7vaVTH$|9J)6dO9=Bjn@P%brd3!7(C
z=hg_lsCnt?_6YYxxHrNbtbzy&Xx<U-im))^M~k+m=6Hr%(mY|cPb;TaYjZbwxTC>|
zd4xp~9;l^tKWn^(^D=p+m9>ZmMWmlu65){u&qsJ6!lNQSS>t~!!s8L1&@0WRYwGY%
z6Hn0zi1JK?XCpipfkG&DU(eRjQWa{la`K|s*dMJBvP^I}wITkMj2Pjih@X%<FGqMq
zp)Aho2>fV{+F;{q#+&7s;Rvrq{2~coM|eHL8{*s;VV#h-BD@`8z3?{$d3Kcf;qwk#
zdW82Qyem2>8-y6H{6zRL!bcH4CNjcwXk}f{KW*)y+>Jx+ndi|Xtgb$Z@M(nqMfi;6
zitq*9KC6R0Yy;bfrnYsybga*0*;$X@(D_IBE5hFqzKigEgkK{3suX_^{3*hZ5jIhQ
zo_gNc_Qg!)=LlEz<6r45{#%4UYPtQLIc#E^D(Qbl;Nk6gvu&<6N2rTXj_^;7^Isuc
z_p8(>CPp=a6We3qtnn$`>vh80d?;aPBgc=Ci*a>~Yhna3@-YU+*em8~QWRsfi_tzt
zDMl#%Rxu(WO$Fl^NsKf`1HEn$qoEK=ZWQCcd!JZ|jbk*4?Rj$6a@n;e)J&Ys1zW^u
z$wWB}XyRm-nQs|ms~D|gw285GjJ7d9Dz~1QMc}BFkUn!|;!GQ1wu!NAjBYWy$Jnlx
zdWYDK$(fCgF*?QAK1SylU1D^NaZo#l<2Rm3rqf^!nIGB-+F9lu7(GVc7(HU_7-Odx
zJ!ABW(L2VjO$<8=7KCi<FBoNQY_F}}ImRwZba(R9Qtuz5UyR*i+}P6IN4gr$IsI(J
z0US9TV4XbiJ;c1HAWJkT#@;bbh%qk4KCx{JLt_k!F<1=y#@H{${xJ@SacGPoF%D!w
zVjLXfkeIhRSii?+a(`d*hT}YPprODMPjU{6ad?a)$PnY`c1~;NIkEi+ecj*@hB|z>
z>>MTeqXdTwju0HlC^0t2c8JIU9(^qHJUYfPF;7lnOpLKHj$=M)Gse~n8!R0!$Cl&U
zI-C32dC-Y5PLimpF;0$gN{qAhI$rP$!Bb<L7Gpw;i7`$Wg&!|-h)5s1uo*vMwRgfW
z-AOUdjB!>BetE%5V0t&T1~56sIWeZhI5)<5G0u;9Z>M#DcWk!ai6tGF+V*$>Gg+<D
zC0-cgq8QU+OpkFHnPbd|adC`UF)m@=POwpUNO)#!d&AFZX^E|0rgf<#vnQGz<BAwp
z#<(g52S1Awt9H@}nX$N!bsE>kxQ;C@hLhm>7&pXtFUI?{gcvu)c!0uV%!x5K#@#CK
z&4LRAZ;5ehjN4+&i*b95J7U`xu=spv?em%FUk>Y+ue^_!{*cI>G46`7P|;`fwY@;*
zN$!bpZ;bmyUlim17>m{V2CcB&HwR!W-NvTQLoqv0yd2{daV`;jD#jx*9*yx>jK^a<
z5#vc#P~r?2YdCG>Fo1Xi&tWT|pL{yTGclfx@m!2mF<z3NSsJ5}u`coX*bWq5U_p2U
zNRY@fA<JW|s8LqN;1rcX-zPR>G&y?F)ym9kF<uw4CdR8V*4hj^Keuw)?QFC0MvQd|
zeJ95H7;naSE5_R~er<2F%3^X%#cWX8iG7?6uJdk;4dQ3(pnn+M(0riRuVZ`@<HHyq
z>GfmgC&vF`Y}D%~f?03!neZ<JssGP~a0dNljIUxlge&)SHu{F&ynIV@jqzKI-(!4V
z<NrCv4>5j>u}PGl1hc`mtyWC|eqsJ={4ByBG5*wRo#0=B|HSy)Hc#IC;PgDwP-$)}
zYZ(8Ma;&*ea?0YY2(rnW#9rUlKEXB#+yq{NCJCA*@Dt<`+ZQxU5G2Sai1b<zB)ycN
zD4g9fU)i+7#QJu2e{q6DL1}^pHGb-ub;LPlqZ(xkA&nDWXyEYoJ<Sp{7iH@NEre`Y
z<7_FURl<v2ofVt~=(Tl%HVJ-gYQNNWVnYwmHbFZ|<NZIHJRZ{3*|sL3Yl7{BcM$BD
zpi_eFYoVQ!`jrP3qzg08)f=^=Zer*zxPu_w=}rlHCRo@2cQ-(<1icfCO>ta`J_-6J
z*qq>>1Uo0#CBc0O7A4p<v6HD26P%QwUxM8d^iMD#!KehI6YQQ~j|4{~I5NSWiS3RL
zNN^zYqgaf%mykgT_O4O(NievE@0(yh;rrJpD|U4bN^r1V4-w=77kv>$@i{cX5D^cn
z@gJVpR>q*Aq6|xLln{1g!xM~1aCBl@D;c_b&PXQR*5P{B`}Sg3JJUHP!LbRBSCla<
z0!RMB$0`;F5>IhMp`Dd~g6KrX(acgyIXS^82`)`=S%UEiPEBxbg7XrbmS94HGZUPZ
z(8J*L1ZU8+643LrcV-K{qm}beLuVQ6M`v`oXD67P;G6_g5->{_=>s=5pK?d%(c$)A
z5`S^ME5QW`rYD$@U@G;T;GzW65^%^t-$;X@L&%)=o~hF@buLaYGr_C`m)Od3Ms~7;
z6B;Uwjo0{)bKlgtJi+V)Hz&9y!4(OvOmH3DdxEPHT%F*W1lQ6eMw+>)ok!oio1q`R
zr?c&j*^l3l;Kl@V63nI2Qs*XG3mk78FVe5lFH!l?R@QHGfOl(x+Y&5DaA$&f32skt
zM}qlMFB=p`EUa8k&so?Oo1KYGox5n93GSh~XjDg<yV-dAICP=c>-z=foI_I<fmymg
z!Qup;s9qjO@L+-$6D&*cP=bdOJelCB1WOV;lHkz<kC9nxWt`funeYhr<B6TWbDsMI
z<8l>LznghF!7~Y-P4HX-Hb72={%U1wVQGTr>1vu<e@o&EG$hRe*gI3&@&qdqtW!=_
zCRmkVO@dbwyp(Woh*uJ<X6i$o>$=-sV5!z8Y1I=)8dmq(1g|A{J;57R|F$-%7FO2f
zO|0!vha4iVPw-}fw-UT99y-Q%61<z>!vr5C{1OfCC3ru<2MMn)wj*lV1M9k}>s&O(
ztZnA-#}*$a*hmR&?Q#UiQ8YZe;*>a_Ciq{1&!`Gz{<j2QB=|DHcL}~v@Kw#`ze(`5
z@XYeR6>b|l@BgP0OE9R9^NZ?qQ-Yro{G8z96ReqWG)u^4MTE@1vU$4BbBXi2B>a)!
z&jf$buwiH4e@g<D!0d6_@^6B=1UseZnWCJaqA0CWRE2~oqLlZQz@)rP(E2D}&=vFq
zXYw0K9zIMFq{yczq$s8+rJx(6ifG&P2A?;fL$<?9jv>h$r=Z%KDteM4P0=7l!xW8D
zY>}dIibaPyQ(R{mml-{W^0SqnCaL{uX#qEt6tTHrixe$|Q0D{XF}6&xRf^UkGOg|@
z+N9VzMcWkZQglqwDMkAf+oaeoMTgXm@z%rE*S0L9ycRV>n_(4m(O~-&ol|s4=>))$
z1A7pfB3Bi<F_T(A$S5UF0ct7s5VB)xS9{Ld-t<b*JH@^!_M`t-P(MN1MqeR2r`Scv
zu7YgW%r>9hQuG&v_<$6<*YG`3dIMV*18bDMQVbHlx8Od4g9W)ol}Xz_#Zf7SlbGVb
z6bC7kK}V!GIK?3;4oxv6#bGH9R}hVmI-&mAOo*^O(nTDZ+V%FKDTbxIPSDO}=$FVa
zLQzJiI3~qN;bc2H#i&{;ytSSVEz8NVB92LUQKY3DpW+0XSp&ok(4U?^#r-K3r#Lai
zNhwZFaY~9yQ(Tr}e2P<3Oi6KWiqjaBIH#vLBgKRi6H~fVJFsN!@PBHPQk<FEFGk-O
zW6nx(c8bX<&Pg%2vt7RC)NjT=&SNJTN?7okY3(}ar8qz31wPKq6c?nt^Ub-CFtzKV
zQ&T%zr_Y?0VtR@hDK1W7C-{!NT8*RY?|V9H+E`PkdCZ~^wt|u!&vUrT=kgS@Q{0&1
zrW9ACxH83cDXv%Eu40~3TthqA#<t&US@6zQA)B7CGxUDdDz9qf`r8dD@2s=`OyQtq
zPKvoH7Noc{#my;hNpT0Wm*UnGx22eu;`Wp-#TM#-W=>0E$FW?coVD0AXlEBrnJe}M
z?8WX%u`soteseH(cZz#b+(&y(vB#E%UxnYBT3^i(&QRXM%|VxOjvZj=(jOo_#fB8`
zrFe+-LeH7v@e~gWUn2O3;G=?L8dw!QA$(bi<td(I!`JK6DV|O7obYD^neNgQ&(pwC
zyqMaxeY$Z@9ytr9n`Ng!3*<b70#~GXHO1N#D^sjW@luMHQ@oO5wd9cb|DozEz^ACb
z|G)bJY~iyzGn+HJv$G450xBf}c4B~Ffe02Tc4BvTcPDm>-7R7_U%N4}z~KMBXB~h3
zpJ$%)yywiheeb#Vo*SdW>N3>n4Jl_$e4g)c>rFFc9S#4v4R5xU=}R5VG4Qg{SB$=D
z^fjZe8-2s5>cE>F`oDl1yS^i!`rpCt9lU3Oe%`?s9lYPcT-A*ZJ}~Ad9eij&aegMu
zd}R1zqdK*r9R9R}&lGKBsCR`Wu`fILs)HXp_^E@hRg@<DT?g}0f4-HL?&Ktu7B!#m
zJNUt(r*3z6Go#L8ek%EkfuD_jYIgws+CjH$=EY8#1syExV6hyF=lG+8KTW1nj=u~n
zlETj+Cx6@Pt{VU6Am>&^RZ*3Yc5<}P(>dqrfSxWn*Q;ujCA>tArE@HkW62y#DF_|8
zS~>Gw&gl?!h5L5OXf*CRcU7<)Lvswv(UBvUBcH>|v3$;H7(YjlqqpIL(ZpymM=3|y
za6LzyqheT2syRZ#k<nVttyceghPPqN^@nC|u}-;}x@sBdZnQ^^<qY&R+RJGBp8r0E
z`x@<MR3U1N)Zg%clrzx43PxAVv66v7Mh6=mVpNk~IbS))@Ep76*dxa(IY#8zJjWI}
zMoJClSTE<M7^@mxBgdLKRx`Z1QGIG9ZUJR2dtJxq+D4Vh;;)-?+Er>~{Tv(Q7@cFo
z9Ak5Anq#9J8|T<0#~6iDbUIuU-oFRAu5BOOy<xZKGUIZL&#{?#D0{VLsbfPoWYUU~
zhK2Hf%N*O}m}~-D<(QCTqT#J`OfsPQ*|ry{o=?fKZI0>2m)q@f?3iO}j_q^okaN=+
z4cnymq;;p|*vZ6p&Y=XV`D-LIx?4s|%yOt_mmIt1*iE@HGOJgu9_m8cJ#*}p<AfY1
z=GfaR>H#?p%(0K*eRJ%WV}HXljB05^mHFuN-4g9VIS$TojPVc2acGVs4eQfkid&8&
z>~*23$}I-F`){QIj>>U#j`}#4Mopqu?8qEzV#nn;-hc)_QvO<dJt@b@#<?uVDLGEf
zabAw|jdNO#Gu3c%oSx$hmBqxYT8a!%hfd3!o#UJw=jM==ej%=<t8u9>eymeQ*>Zt7
zR}3%Cabb>&)I7B=){%L(Z}$E|=8_zj=8*YIi#{s5Z7MFYm*==5$Cc*rsvK9RKHNJo
zyTcAHAEail%kiq}i8D?A^N*yNIc~^tV@{)bZqB)N;n_KE$#H9r`*Pf$<F*{P=eWl{
z-C^`DtKoMVo>kM&`xfcB+g|nGu6qqUm}F+j+w|)LIiASzWR3@OJe1>M`H<tW9FOO8
z6`q?HXoB--+e6#HAP-d~6wjw}JZ=0Jay*mc*&NT=s{|g}IP-PJh5qKH+2?b7Z_&`}
zi#hZ&Tmd~VneZH=FB^Tu=%g_7T8`IqykYt9zLISD^QOJNmE&y#@1(i(ZjSd-ta;ho
z9RJJlL5>e|e4FDtDI)XsYoi|<{lw^}Mn5z9xzR6jZg<U>Mg_hypsDva_H|wk4d9jV
zseb1B96#h(kYk~J`Z34PIeszxQ;zutl*Ug6y2So!#r?Z6f6F1JO1wST_#?-k3MEfA
z&tED9GJl)qd{VllcV>|_M)fReYw|~T`gh5*Se{OKI_FXMx@k6hUN2|-Ts+Sbd6vwx
zRG!J68}>{2s9j4PX)*4!?%CIeWR}g-HBZx{<<TuqN1mPYOwW_clh3nSp4Ibq!AqV2
zd3TwitonYQAnyiX1qGL<WLU3_JY~Zbqt%oj8i?}LQcm4KoOgCeIZPCRJgxL=4+Gte
zUOvhREN8f<(O!9a8|Y)SuhD)+mp9tqs9b4aFfi|y&sNB@VxBEm$X?LQtfUBQna}88
zqeF~}IW*5O!z&vdp7K{QFe1-L1EW&@ss_&a%N5)jdDdSkyMCTE^BmmDs$AB}ySBNu
z(RK2yYhXR2;;X`MkY}_-bwi_@=Gn-=#zr?Ws#J_IFxKdooipPMjL)-Kp3Mz!V^oq`
z7}(P2Rz@cnotS591Cp6!U_mFBtCRCgN%`C6+0O9xd3G?cW1eXSrW!raoa|&+ZkMfO
zcFD7Ap6BvBpJ%r`yXQGE?|xCYN8a_4`{$WqU{9la<=NZ7K1L<5uYvtk{kCzvhFZ`8
zc@8tC@PT=!^bRt5u+c+|9%^*{s@cO$@(80x8a>LWygJ&zF-DIydYsYY^PFHnR(Ba*
zPRhHMdvcyr@|>FIv^;m^xjWD4dCpL^$#YenGxMBfVwdJQJI^_J&d+l}o^y?PUfTy-
zK$rPKzFnB-qC6Mpxg_uUP>s*;#Eq=fy8jB?Lh4(cGMAaF%axM`)PrktmuzBJ=efo>
zx97Pw&vkij%5!s`>+{Uab3>jR)hhMZKQdo0mX&>24OxR0d9Km5g1#lst$A+CBa`gA
zi8GRG6d}Im;CGm}cN$e3<oupI_uA{@d1e`q<O2roGkU*K*=iol^H83L^E{I0QDbT(
zFY}Q!$!5c{kL6`2cXq{DR)SCDc{0yaCiZlmXYxF2ST;BLFAXWGE2?CqeId`BJTF`G
zd@;{#125&deG|9*G-*=il{~MS=J`3V4wo&o$eZWwJg*ym!|0nv_34C;%sYABRb=vf
zk>|ZU@8|g_&&PS@=J{Wq5AuANcRScsBASb7y+E}~vuWkt4zh%(@pjI9n&&h5kjsqk
z$egobR;C7ZbIQgq^L&-(yFB0L`8v-xdFJK$R=RPE%-utr#ZPYMOvuWPr|G9W{2|Ye
zd49?>Uo{H%^%2j_ZB-vMqf`ZuMtW1bG4uSIce@#X%k#S$oz{P)$vqbHSeWOJJbxNf
z|7+2wzYGifoo7*sGxjO#aYf{Q-lV6KM`vRmWv}8a?y<DTG9F79Uz{ZkEM-*xds;T-
zhaO$k1$cBAr(iT^H1FYg_=W?c@<(nb`Yzm}aY`O#0~MoH4;^W5i;3!qJZc_wk2v)~
z_r{3du-C+>JnZh#!*gx_-hkyidU|Z>v6V+JkKP{Zc&zKu$D^;uFprfzx6;wi=!!;{
z_vmk6fYE_QS1>9`87)^z@gM_(jSguujjECiZ@=o2PXntM9pN!D<&QG3s^``y<*lC8
zJ=RFSuIaH>ir4o3*%z^1%Gub!`W_n?7;SXJ^y@|jG*XqHn|O@z7;BtOjc(>K&cJx1
zx=d1Hn;RC`!hnu%Oz@cKaf8o|K3jWCQr`OP=(CNdVE`X{eBv?1(|!!D^0?Y#JCE%>
zj`lc4k{&yH?CY_g$5fAL9=mz$?y-}{&K}b}cJa8qtDF04(xIWOMtw3Q?&`U!e!W@h
z_VC!#V{earJl${a8bxzJW-mFnjlL376Hr5tU44I#86Jmv9OiL=$AKOPc^vF%annsM
zeyL`(De({wjh1C6(Z(k&l4?`d;T}hL9O-eCYDFivtUP!|wzaZbKG57m^N2^u9P4qM
z$2rP;kK;W~@HoxmbdM8NWF9AboT33w;^x1Xx7<p%7Mc~MQ$0qlof$0im$v<Toau3v
z$JrjTTJ+PBkkX>3tD9e_e#**pp2ztfmv~(2ae>E$9v69BtXG*ywN+rKn<K~sEj=SU
z*wkX?GLOsET9qw|n>OYhk=d(rX6D$8_77`u;pk~@qIZqQwH{A+Jn3<r$Mqg}d)(tO
zQw8dAtH*5~H!6!fZuYpvbGro;J<S2No-5mq?4R;PX}R6w4v#xkE}rX&6pGC0H>{S`
zGLy<qGdN}My&khX9`bnD<35l3Js$9Q&_f0;&1;ku%5$Z(>rmHaDAkX6JnHe7$K$Fe
ziJN=MDl3gAF%1dwgIu^zc|7g$hR2&8&v-oR@sh_JkLNs|_jtkMMdg60!A5Uq_44Lq
zwQYO0%4LBoUrl*lmg?|$)#EkK?cI{P)-JDYMr5?oEvulqp4U}p%*64Q$J-w7d(2h*
zRrfsJ^?1)?K`+<+sS2rNRXL^7|L5_6$A=ytsqz>8nZs&tgDfGM6c6m|O6OCL&pf*O
z^zixI;|r-`pT&K?^!Uo-H;>;vzV`UW<42F5Jmz_P>+zk(_exYIbLU!_@7BpGsy}!f
z(k-JQ)}@8a!FJc{e2<?!e)0I#bF)HKS}ljY(laXqkt(ewiL%x%klOcH<msM${_yzI
z<1dfDRnWPNww)~1bgf3Q)xU#7+dY`|!Kaf?XP;ZgXBC_TWX|p4%c$-K02<^g_r}Wj
z<Flks(Wm6Il+V&WIiI}GGCs@tboJ?GPPFczB39K^v^#ueU6oaBS)g%+HvjneK7mic
zM-iB@Y*t;l#uckCn^nV+6IH^pPsOM16Z=$sLZ8T|=JUJ^SGGA>Lw!Y036WbRs-ZxA
znm#Qb?K+l~Lzz|{;Cjj9YcBHQEa%hHXKkN#e0urx_8ICk%%_h}U!Q?KEBN&DS>C6=
z&j6KL=S-(YR`J&YlT@h8O3I3JHqNf-vy#tXpCO8m?EhY7kRmxKTe9_H?YLXCN4C8X
zv$D@{pH+QU^I64bgwIHyQ3_qw&OhB!os1jO12W)iXrwB)y3ZOuYx=CE9MdTVoj&O7
zKFI=qRn?_Mg|)8FdOn-`Y~i!M&jvnYe8&2W_O(%&jeIutxo1LF3zQdh%F3QEr7Clr
z#<82IXfzVmwQoM-e8&51<~v=qLx*eQQW_cowu6u^+R|q$X?UN>J`;Q<O7r_n@;Pnu
zteSJ%@}nqeVt91o)ZG-HZGE=$*<SH4X0<@3yizBkVUL>FX*E|9rut0tImzc_pPhVm
z_L<>xfX{TFU3~WP+1qDVpWS?R_t`_`sQVVIg{tD|KhDa8J$=`N_cV>VkI%k7`}yqe
zI}NF}sZy2`0p*)if!gDNJ_q?6?sJ6C!M-*UbEwZ@N}6r!k}K85g{I$R09UIy(&s3j
z<9v?yIa=}2`mgV{rAcfjMaH5etoooto!~o*sD^3^^hAqTu~X(0pHqD<_PIoP<#W2v
zIX>t5oZ)k(<bBTe`J|VNp<HPcr=4Tcd%|kD=lPuPbD_^gs_+9cvh!SEQB{(sYpd{J
z*8n9f<#4IbWj<H?T;p@O&lNsb`dnpkP@>dw)fs6>FL}M{xz^`8pX+^QTAZCHwnC~;
z3R;6$ji_((xmishV8wu2qy&6^_gUa`o6qga1fOSp?(n(O=P{qheJvAY?(%ua=V70_
zRpor{Ri*X0-{%3jt-0nY^?RSyx-nX^oSwNe$~@?bIHOk$@*nYeRL!l!t?6i4Q*}=(
z*NU@@A?jA1@OjebDW9h;U5c<8f;JUv44^r}b833ZNuN)BUhsL*=N+GSeP;W-<g-sR
z^Rm^7IjW7_GiOb3zc}Ab#tp3ls+s82r_XB!UN<Vv8$NFue#_|FDPL{#J)ie|<|-OK
zT5MAOE2>XrG9UPS=<|`!$BKzIliQ=5KYpp~TLavzL|fxNlN#~)+2<FZFQoi^zV-Re
z=PRGDeZKLTr=gS?%(cf%OaHQ%sTRq`t{U>a&ksI7`OH^K?2|1F&JNb<u+Il(s8Mig
zwi-WZ#phR_-&9gvGf%cM>i*<b#u;VoLMeag>VQ(fpFV#{$p>@__*;$6y1YfwMOH&H
z0olN<W@`7Zl#I-GoddcAbPMPRSS(=ifF%Q#3K%)kRe0@_Tq1BSbgs4l1uPS=Y(Uq*
z#X;kxH@ms5@7nezMWK~4nVqHOh9;R@Kt8|=@B@N?LV(sp)QB$J)=fXPx~*}};oD?o
zoht`a0^)#%WCFr~dcZf0OcYQH^qUNu;}6a})zvK=%ciPoqk~IYH%S6|1@sPR2DAdY
z2lUX$KcHv8gkok~-|QZJvIjKX1Zqs#RZ;1vJ^_6L1_TTY=ohejK>xr^1f>7fi)jH-
z2H{TKGLu(yQ{bnDxTs#(IkQs0pn&}YW&{il7!t6Rf{??2VF9ZLtP!ws!0<r(Kr*8O
zRtXppIQ69kyD6RA-j4-aW=95YDMYijRRgzxrGesVfm^NKeMDx>fVBd~2W)0O$l=-n
z>jbPDuwKBX0po<DjGEQ@0UIbRnM?yWu@%@ba7#HG85P(#V3QP&F)&u%+R-7^WT^|y
z@imd(T+RcxqT1GY0$VB$Ixc6M|0f1)9k6%6J^_;gwh7oJVAp`j0aFy`fT;o7Dis0S
z2ka2IQN7F*ni{K0$i&^&2CA;p0(J`6Ibga9bdc-URPD93M)h#VK5p9k&FJiI0lNq6
z8L*e-*dFrGMut)vN}VF6-fjM%j5f3FtNfpx-7j#aX6-Ukb<zfYEn6QDaA3g20ha_E
z6mW3BNdYGZ91?J7z|jH61RNG{c)*bXM+L42QC1wGV)9&Fdd>Yf&(&T{xAhzwa9qHK
zgIzT~Ug}XMf`AhPG)&SUM{QqrZ;dAp*&%aEz^SUA0T-y$0!|M&GvKU1doA2(S!;7=
z1jutW@UsKX2{<?4ynuG+t_Uby+8n69K;s;(5#Q0uO3hvva8cmq3t}o(>U}N^xGZ3%
zm;twjnacyN2)HspD|h;ORlwB&nk>k}YXYtfxGvy&#kQ+kFW9qhR)a<rN1@@y2EsQ6
z+$4Y0cmr-$>a6l>hu%$t+^|QDR~deLz#W0M%DCR-PI(@1cfdU=<xSj>UZ#6dEi|hX
z<e{QEOUfbO{(uJpjwo<sfd|#z&8o9sfrkPfR?QE1R9dCLQUx9hcsyWEz{>$osJOK+
z+US!;_4<^7r<Fzn&l+u84D|JRdwn6`MFX>qzGT$>gxV|yuPFWjZw0(+d@)}Oc-`<D
zDM!L@2fP#TW57?wd^h0ZfKLM6v)A{H&NceKfDa6OX!Il3Z~hZj8+;n@RlwH)pP7I{
z{M^77M!z&Fv&J_DzBM|}s3hAyd}puU8~wqlV(0(-fS--?x6xk$78>}~=x;_P_Pc=v
zM%%`dKhz7@>tCsiLRl1$DUdC=Jnv#uK!4;F?Np$%0Xf&RSo(GG0!yS=MX+>%WeTiO
zV9f%{7U)`FP=UcF(5*nTK&wDUfn0&SF{?(s0)BzOaLH)FXwhgp!ezsXNyUJ|3JpXB
zY6a?s8>viOa5kd0!^D`v-3_c@w1?5<3iK?{t3dAp{f#64`xxj~pl`~#LDQ%dxBVPY
zV4!i@uPdfsS4x>f3Jf*8n$ckeoeOZ;sAuH@!wvsi8%Nmd$O5AbteQ&7^VL&aoRD3s
zz}f}2E-<OUItA7(FuuTMCa|8-^^Hn$0|TRtD#Q&9Y-Duf0-G2ZV{~kRO$&@GFjYp>
zMT^#%k(IoF=;j5sFq!Yee`@lU1-3GdzD_7G(QrEz+Z32=ulp33lFCdkux*OBE3mzA
zfgKfAft^$Sv;sRBZs(+mRZko5Qef8tyV=)0Qu*DjWF@nwarQF0cluS4**C@VM2cwt
z0y7FuBOPG$K%;s+$iTry4>5YE(ZdQHZlG<7IjZ0WHrj`FdV!-2A5+jo$uW;BaIyj6
z;|rW%_{0Jy6<iM@rXGP)Qkhc=oMu>aZGAeUz?lWkDsXne?L)h~z&QqlFDP)XVU2>$
zQ)|-SP76G)sh><+#=oe*#RV==Km{&KUCqyA+A;$2<O<_oSwQ3Gs|s9Q;F?rYV%HkJ
z&QdDj>+N->(Ho3v;C*v}TcnU9mX5f!z-_9Z6;`cqdx1NY31yBeb7z6O3Vc=I>jHNd
zxTnC}f*Wt#Yd$|);JE^`3@gv?GjM-_2U5<1(*K4ZF7QZ!M^pZj>IDoxo^qZjFs+X(
zP(4o>^XUT57|_NHF`qa5j?otiyl7yy(Kn2~WOR<vmsN`lylPa=Un}r>iZ7j+dDHM)
zM&CB7Y;1@AuD!lj&`B#-uU@vZ`~v?g@PToJKQ!=BfsYM*V)WDW>t_Z&H~NLqFOBxl
zx`3=w1(qw)v&g)HTbKW~pkw%aU*LxV<sy|LKdLflOj6*F0zVa)U*P8gzewRo&lmVr
z&!FsY_PSB`tRx?w<Q8Z3EKsg?ayE)T3;d;$EwXfxzY8pqZZFcMNTx`(C_56Jiq7Jp
z;fLgPAZX?u&g6L0Vp*-QELLRkB1;rmvgksb(R7pL_RvwoHf{Ztacr3)%NEHO@rraU
z(yd5GkzCQ844tLjtqr%~Swmk9S2STcuXDyP5)>&EDVm=eyvgjK!GmUb8s3-W$rLw-
z(x|vvBrMV>k`#%G)QZ%L#EO!gEppAR;Rb%$LCyyaQJO_sMY<R1QFK<6ixX#fe8LtS
z<wS#9O&Q+N4o?Y`S*}d)B7KVVEz(bsFX5M1zDWNfrx!V+$bcdPi|kfp_aZA4S+U5b
zMYo2od|0W-s3NNt8B}C&ks(T~u8uJ})TmyE6<OJ^oahl}m7>nBI?0hKUs%s-_PTD7
z)eVTVMp3pD)+(~Lan>=~UgMTm0_zo7zsLs0-zar8+Q5dX@Ww?pDKf@h$EHkq-u7pl
zW&Zdgn-$r-$QDJmDKgo_wk$Hyz*a`(WJ2nE>y$Go<xDBEZINk3b}F)+F?T4kW0CDs
z0Xc6cUtp?bpuo<lKf4&1Zv3{`uEl>=^Y;)aa=67)PWCczSdqPp>|?I>EpkBW&wd8>
zH##E?<v@EqsK~)Z4oM{sP5qaj$_kaH!abtMkwuO&nUgG_qYWQZ<X8j86*(dG;rRdf
zaAF$P$>!=5lQ}h&Jk5aoKeNbLMZPNXb&<1+oKxi4BF~wVbBnr{m}`riSLFO67ZkZr
zu2LT^DspLxFD`OPisk2JDZbo*(sHGNt5W{eY22<Wa=kGhEHbmm4MpxMa<_4AEOJYc
zTMgf2^k$>-|26~4r8|n;o-*}%r{Q)j((66;dY{pIjn4W{{@h>Wf&a)qROI0zj~M6i
zB2O52)aYaXarI=8r;RE9pE98MJY%38?(;=nDDpqcz!#1GN|9HK%uZdsRAf$yUpAlH
z4qr3oyG33v@`m9zjlNyfjXJJvw#D8t{O{{~Mcy~gT%(GNK7CN+Lwo(G$Y&N4F+VoW
zCq_R_g+Dj&g;B|TX+Qy~?tN3#2`0WX=ktup^Y4qgteY++7Ax^%k)MkEQRGi^HNVJj
zsXsp#`6b1_rhdx*-wiJ?x-hK+f2ESy5`U+7k%3I<pB6{S<v=H+osH^M@zk@p$tc20
zlvuLFQuejO=+Y&YDY0yct|hwt$5lI*+W9Gea`q{2RG)$pg%W3%IHyFhM5)BCCD+B2
zOZxd2%a`b1qH4lDjV~X<5>bg-iMsKV5={efiG~4%)ef{(qK9$1r+hhI&aea|*2|L9
z+c<rU_BGniXgk#dN(?NqQHhO9tWaXb604LLQDP;N8JbECDlypb5TkAX<-@QNE2lEU
z(;OCmWQlc*KdQv4B~~l3dWp4C$u$hD`5*aq2CiLlU5}ivTVlNu>!<RgOKf1c{dL3t
z;7v-5DX~?F2_?p+@|zjhw8S_A<Bhh1*xc|IMitPO>8FVXrj*#W#MbH8NhP)^F*%Ku
z<Q0MKN^D<ZCzIJBm7Ho|N28LNmhu(o&W5L#*u_9Q8j{(q#O@{bP$rZ(s>IPH_A-G3
zN*q{XZ^Qc--M7Sk2KF~PBh9yVZX9Gx#qBTy2OB-a=%H!M4^L%|C~>6Wb~KJDajd<b
zR^m7VC#90dmpCECCmLuwIoa?jB~JYh^K`>!7*$NpEOAzf<w_O)T)mdK(kl6RCC)b>
z{sjguEOC*6i&Oq3B`!65S<1P*^nd#Yt}5|xiAPFYUE-P&*Os`h#9bxsE^)nudsB&<
z4a_WYgMk~3wv(V3-eRw}m$=n{IJX&SXXza!?)=ZIzTQ*fe&gJm%FilspW%P~e4xaG
z>DPzSoPV^$V<o;W@r`|Yyu|Y*UNHQGWJ)|`_~{bQrf#1xpqM<DaumdiC1#g+tHj&J
ze5u4MC0;c=$LPyeE9C06)YTg$UQe<3Z>Ctjy;I`d5}%a#w8VQQ-Y@Y%i4RR+Zi)Z>
zM^eJ=Jo%`^$N%9gPul#?N_=Vj&r5t^;9n<_`N}wwoLAyo>CZA<%Y0Yj`x1XiMVI(N
z%D==y6Z^^N&n12_FyHb}ZhtNDTZ!LGEJ%G*5UM=?#zC*bf0Xz$70~OV5}7iKmz}oH
zmZ3}+!+PyxpmX`39zh(1vRL|6zAaH^$udioS-Q+J|KUqgU)#ZTE7MUXEEAQ<mC2VW
zr;=WopiIGD{qjFLO>T>2N~uiSlQylCsiypPuGZ|eS*BhlF4M5r#AsWfO<Sp}?gr#r
z&oaHrY+GhKjr_~>DYI^w^~&@u)35Bz-NVZ)U#7p|!DR**SfR{{Wd<64ut!#6D;X9T
zWZ>r^ZZE6$!44@i)HuV+Znb*lva|o|(}b0>@xaU~Wk!@4S!Pt3HOj16X4NvQnf&Uh
zq;`Uh@!Ynq+ZJZlDzmnIU8n5K&RPWvZSJXU4DxpUG8=oDP0NfknGMQ}F0)~ojl?fA
zrp#DXrztM<P0H*$)B(*6+Z;L9!k;+f&F#c8o0ZwT%ob&~EVEUa31uBBbO#4C(R;H~
z<_z0;D6Hc)TbG$sW}7mT%S<un@<)buO&FDAt^8g)J+pn89qiMgWp*qxwajj1b}uu{
znA45!WOQevawt!BF}$nM_DRw`R0+%MS7v`>?qzfzqkET8pmL>WU(0QQ8TRSGG6$78
zz_6HY&krthNXpT65$%+a(OzE<D{D^+N0d1-{d#nnqf$I}*UT}7r~6J=2ASiPs};Ic
zIHAmmWlkz{a+$}=JW=M9GN+cgw9I8HO%<^UvBTMLPA_vtnKO-Zewho(oK@!RGUuoQ
zcgmbw=Daep?MqUR4uy&8#KDDSE>acM&Cljgi`3#@EdL9cd4n9*<yx1kVwc_O&)sFN
zEOV7AfV+2BC$^lx)vAqV2e`(-wMMTqdc7K8!&&)mDF1U7;KnjH8NNB?+*0ON!?zi|
z-RK=g?=&i7#a#xz%w+B<b8nehW$r8Uh&<QX4Wkd1d8o_-hQ(}eP1nl8!^V+KK-&@?
zwPZeKoVLJ|Wu7YYN0~p%JYD9QGC#>%UHe()xiTM?`A8*R=7lmZmwBbkiz<aqnb~Dt
zQr>E{rISnk9L3+(!NpO7dbP}JW!{v6CG)zX-I002nw3m*a@#X>3;k~?{@Uhh{CCQ3
z!R}p)+j~aeH#*no|BQZMR2Bvm)5m2#Df4BSugZL?!reIAb!g^`GM|<CyzKr^sZCId
ziTu}MrRdjXzA5vq;-m7~!g1zV=r@_n_lAEc^P|d3muYA>g*JuSr!8k>=a>1}%321K
zU({5~{8r|7RYE((FI~DoHA=c=WLAr+ssmb9R+adx%->dCOIKJ_CR3qHg~cjlD^Q_R
zh0Yas2ZD?wimG;8Xl?87k?tUyY%+^iSfav`6_%<vT_kU{!$i9jgk^-$?G~zdst?Ol
zTy<Ku;<Bz?3LO=CRp?zIS0P`)Q`@mRS*ze14vZFz7LAsSN~~O=Vz`=e!U|D}8@@|g
zz2Yi)T%ln=I5E(y&@#~7Xb+>y8I?>=CE0FJ=~HpL`o&qXLSMuEjEcE@h5m*I7#*1M
zSEz8aol};pl`0IXFxb2uVsvFu1H+6;MwgonH@r&98DU^#g^#o~LMQhttX^TaD!W%%
zLq$;GoeJ+(SgXR?70wZmp}xYp6^^WMRE71F$&#<IdxZ@ujIJ=D!o&(2R@lfQxp{?+
z4Qy(3lL})hj7{UOilmFAl)!Pu8DC*DmBrGIqeoYHY+?K@jc#RBI}lVHTN~c7!qf_r
zD%wlQWaDgGVY>=b49f@ggWIQghYB+8wSCsMmTAV{xx#b<I~i4cRE63yyBKFzqw;5u
z3VRwppu%1T_BXn>(R~z$KG}T@?`L$DB|%=zsPG_JfdeZXRN-Lzs@KCR9AfxTqq>!-
z9q!@wdW2E=d341oRXryfIHtm}298Vl$4mdGSZAM4s&I0JQ&P?u6;4g@X%$X4JbRQg
zY3e!CUeBs<_J8>2R@@1K^D3NQ;erYmR=B3ZwG}R^IK6k33RlYCn%*T9F0F7`h07~k
zp$J#pU4?3fdbAf#n<88nAPc$uhWKi8u65z-DqLUT=?c$Om|5Y53injFx5AATZmMvb
zjQpzARxNL-aH}eqt^DfP;Ny$jut970cT~8u!d(^at}wjm{x0qI4#_mMQC3AP>+xvq
zlhlq-ZQ!qPUxoWCJfK!4^=|aR3J)6)=OF`Had^alA}oh`eav1TH~NIpCyhR3R07Xd
zc&@@r73NfUzQPL?UaT;?f)@R?4^102weT&kq->)wvsN|pa)nnayrnEs@^wgGy?|+t
z*Nnbiaoy`172Y(hrR3<JP0BiHQT0$NDP_WYCfTz}uPX0Xm@Ca@x%5?quPc0@_9)}O
z8ghk?4eRx@3ZEGMw1O@kTxD=Z%+HPUMTIX7tnE1_^RnMmm?ynjWvMFPR`{;M9~J(r
z@O_0JD*RI6*9t#Y_^HDD3O`re?NZXrT5Z=hr!W3?!!30UPiEb=oZl+^USWZBd*1C?
zU1-W&yAJe8C8*uJe^vNfdcI2MDvK&)s${EBb=ji*MJhxoe2p!&`BvL_)Dd*4vRIYH
zt1MA<{enhKI!~&sR!!3`BW*yEl3%*YGF2*7s#TV)(zS|TC8*M^N=KDkm3&pd`gPYK
z>h=b0^Va!vZB)=UY_IC<^U8!mm131rm2wpwM%EF2tr{rKdUTRS>k&(Aoeir*Rgx;r
zDzz&0Dsh!Y)vXX|%|en|ywjdf^*9=%>a|s+dzBtlmaDpx=E{wBgw^$HU!MfDFQs>t
zK2;`F*``Y0D*dW#Ty?Xd<&CZ`Ra~Wil>t=-R$0NA!;P+3Wtf4LjLOL%1B0s!NjXES
z=xPXkS~=ykPoJ$)WkkvuX<(GmRjaI)^5t+%!|SG;wW_S0;&lwP52~-HvP=0J7#MAI
zL!%oRm2aC=8Dn^?(XFa%YG9mEMRI(V%~HI%fh~+~sbU@EQlV!;m5IjOI+aw4CRhI%
zVeVLEis5aIZfA7+^y?1tC%xfws!GlHI~m>C==4-_7uA6jYv;)xRrXZeLN*WCtIFP0
zo~`m+m3=G@rz^uX_*Yg}+21&aS2?1}j4B6IIWUdqAyp1Ce6Ud+H`CS~rRdPAQ>uqm
z(I85%N7~n8s~l(Gs47PrIL4@|y|k#rj<?s7s+?fpM58*#q)#VTImKR2t-A5gX@*xD
z=C(BJ>lszfta4VBv#VULPgS=);2fhDS9KpC=T$ks$_2*JPvkE&aFJ0he`~BI`3cKr
zMK7sxY1M7T7rv~@ylSQ}D05|1TZy=@%KcTYu5wM4TdLez<=QIORk^9k%~h_iGPBAJ
zRc@@hZbd^)ZIC{~_G(J+Nrg%SDCWm>a-%zK^1rRh?aBvPc&gk{<<2U1Rdw{(9a~oE
zXy>`MZtC7G4dd0IbgukfHR>wb&aKTwx0Re%4^(-u%9B-|s<M6Wj4ncdsLI0%y~?9i
z9;@=WGDQ2VY{#7%sr1zo(oThpww=FY`r+v+&*%x=PEqMSQQdc;;GVDYf)rH9;vp|q
znO)_(D&JRmsmh!x?^b!Q%FC8arS!EbucY`@16qg_|Me<wRC%+?TZ(p-cTySc{np4$
zTT<Oxvt0rGew7cUOiW;|%GbaL%4F>iY-A^2lKt2?pH=zXz$aBcHK2L10@CwEl`pG&
zWlV+sb(L>i+3~G$wChqKev$i!>Kb7=`N2N@QRUAnKN|k2%KR!ntJ2!*?^S-aYAoU3
zjMENIv06}Np<2NJcd@6wDj}kOnM@{hrT@3I$I#58D(z3=WJ3t)6w=uQ#OV^Er0Mx{
zZsz;BnI%G&4Cx;-AY`eKr9%oK#gJuE`CQ1dhP#G*q!axi9roIeRh#BRyb#~`if3Rz
zp6kYmQb^femor)ksfE--sv%)W6uPcTP82acigp~*2x*ycA^|JYX6SD1R%X6uzi#gy
z(!&I_E4A%Pv}Z`KklrDELi&dE3t2wY4`TlDSuv4w-A2-uA85{3HM&B`iXkh73<_B}
zWO&G6;}10|`60>>^JkcG+DR6F6?+|Nbc7OOwPKXL>e5k#wOYvPA!~%J8M0Bx#vyBk
ztR1qRgiUOnkaZ2nHyxQ*40YxH2FBUY=xC!^%N)rl8k>ZS2^kx*seMw0wCk0=jtd!Y
zOkw5Bj~a~W*jLDwAy=qa&91Ul$n=n16ccG4qZ3264w+<ln~)t1=<8$yQ$n^iu$|HE
zjqYGnGO|{QPPNx*Av>k~ofW8k+BIaikds1A4%t0)^Tb0!4h`8OWKZdT;~Zdg?~r{$
z_6^xDWdD#Ep}YU{72JslDIX2wX4#NH8uCDsKPcqjkl(wxt2m{KrM2YwVIfC_9367F
z$sA$yNTd3yqa~up*z55j#~L`!s7_aDbgi!^*z1WZvhHr1>nS0p8t3AW(?U)UInQ3t
zFe>@8L(VjOmeB)7I8V+A(FS#ab3-??*3HuAhg@LzLe*`%2IQj9btoFiXz!>bFEQtr
z8okWu<wlhWSB6{_a&^cxA+LtK7IJOKbs@Kf+#Yg$$V_FjX4V=IhUk!#ZiJhmy8=RP
z3b|Q<N?2t*EUQaa^;P}jt<nZM{-ANb@>z{eu?@L1<gSprL+&x=<H}xb0Sb9EM7QzC
z)vS>FjCsF8QF~mp=)sVO4X6n}6f(-%*P)X$k0@O2v)5qH<mJzH+5>Zs+xz-d$kS?}
z+VmSr|MP6f3zp31Lbv7qdGk%e+K;_xbXK)jIrC!3Y?BdILy+4!Auor#qI#lxTr*lJ
za9g-9ljfHvA)ki45%OlpTOn_U%vC;zyc6<n$a^90hiua+tMRs`KQb3+-|TPOxLJmF
z(tZ%~p;TPR$5I^~ZWTbAVbmlw&Y7Ca%+}qTLo=U+d>*nOWMRk`Azy}W8_!Q6U#Yr=
zd>^{8(>EdWLcR_8PHM_-y-;51-al1iRaD`5-E^rbKZcC^J)@3tmNoqO=GD(ee=#bb
ze+~J~@b4){+kun=e^@}BBL1|@6z8vyzf-&@Bonzz&Kkw2M&06cj{X_lb%|Ka@Zu?F
ziHIc)E1pWlG7-y0+}mJQgRT+XA}*<MX^oDET*OWhJ4fUrJaaNF!jA|dMntY+6e5Zd
z{UZiMlp=S{SMSJO)m4tDL{u$4t%&XsVMG*Bi`+GFdg_r>vD-iuM>HZfo#<>(icAvG
zjF44f=R#)6qD4I-mW${a(aVC<nVt5oBn>e7mE9h7)g{dc`b4hv^)=eh=<<>KU$&U*
zOmh`rV8jcPU4E{ha3fZV7!)x$V&#b85kr);h+&Fw)?IB^(v9?e+z>(zznJR4DiL4&
z;i`~=)4u(Y5u+kjjaW@Fk6d@WdW2fp2+cYp)`(a$VlB(AbuHR!D@#XY*D;w{)*ht_
z){ES}Zl!vIh|v;@*eF7~=*L9Pj49Qzapd&ICPvjF2I~-?VbvDhMmsJ-hjGS7Y!<P3
z#1;|TMQk6jWyDsI+c~DpnGm^Y+Qi89yb?xMAj6Z4in&e1WW!TZ&bARU2<y<+4k|L;
z3l}lf5~69fhMFT6IB!SqnpM%LJD47^iyj%tYwQ}an@XxiuNu2Y>=E%!#JdrDM(h=F
zLBxd-dq?aOabm<t5&K5$7jbmNF%kPm%!oKN;;@JVA`Xl=DB|D<?PFJN>m;xKBJpH1
ztG#W9sG4c{OJgma|BW~z;>d`jjH#BcA*fCksBY-|j>f<mh#nhpoGN6*36b09sr=L-
zCLNQ}QBWmEBY&MkJUQZ&h%+P3ia0gmG*#n>Ga_WLRdHxoqG`2^2^zzz1Cm|q?1*zB
z&W$+FvPkn{sT3J$l|?e7sLGwMSlLYo7e!ng@j%3bssM^W#LcRl5tl_=9&v5Nb&<~O
zb7jQU5!Xb{&U}^1u9`V*wd|61(n{lV>AmsYGY?1E>mz1H+^B3(1?%k2PHGBpL&VQ^
z%0ml1S`<*ZtM%O)aa+XQ5%)yg9&v{nUBq3HJBgqQEZ^Ffj!HX;qtX7oswb*-5%*hl
z6-S?>19dc5$<a|kjo2TGcvy`{*`f*`@o2<T5l<_&5syba5%FZ?&O^ykEiJ7Hmp1iH
z>g$g5>O8_T5zj_E7xBF6!`4|PQxgFtQ?_?SKvNYJ@$86~B3_GlJz`G8%Mq_cysC<1
zr#5taO!=V5NI&bKlN!hy5pOETBHp(8sU;X4ua>nzQyUo*G}llX--~!ZVqwG|5p&gc
zBEF9J#+vyD5g$i<67gZgN75C;+`mp-7t<;8X~buWr`BPU%;#$OY7r4%Nq&G^Q&U$W
zV~Y-qXap+@o9@_|7xArpi1;z$yNK@<gl;MKGO};zc#iJd(QUUsMa+-*T}|F{;OB^6
zB7T+RAa@2z8Lk@sTcjI4-P(s5xC|qzt}4op^t&Rdg^0LDqsHG6iz3Q3*ER=~oV7nw
zBU^(SooeK3cr`lL=u%^;8cWyE3{k@~%?%f;v3QLoYED_H+Ampi+FQ**efKgomaWlE
z3ctn;cA!<&xNFVL9QC!-J9EjTY_8^vNYWTxbnQ=#phmGqNq*W9cr}4S&GnBu0HtQ4
z3-qLRWO1t0s4A*8q8hat^%{~?p6GCvE_WTO!&BWdf3J~M;U+bjHG0%ou12dy_nONY
z9rbFTY*oF|XiyoVVjbk8t807L=u>0I8dGcZt<kUMI=jg=maoyj#s~#eV?d38HHOt#
zxyA}LH!5DK#-JK2TH2L?%7MW(hM3!-HFxq+ziCi~l(9>`NkE<Wa0Mj&uN>AKZK&&5
z)$~TyShdDz`D5O$W-_bS+z}*Y(Hb?UZ=Iy^*Q&9$an>=quF>_3N^Jca8>Co@S0Qdx
zW2+hyYHVC%lbSoJBol}FqcJtc)|`!N(;DNHs6~smuVls>XEUSvw0Vs!QoN-B{iJMS
zjjd};s<DmvrWPb6pk|^rF8hY+yaqqYiYb;Y+t%Ef`t6KvZ*&KvO8&GOJJmEj&m2`_
z=Ni*%>{ny|8oNmO*Vw1VzBP8M@sTQ6jlI+h)YwD$HZJqM+yCt7Ydy1j*W7(yS^JfM
zsFbjl)sFL>>Q)?P)Hp=JSxgS7ai9V552|r+igiHvuo{QgIHJapHMjFw+TiVhPG6}D
z&|<gDzv3KS<Cq%9);O-l$>#R>8Yk2^vBpVyotBy1$6XDlrDXN;Y9OkF(nzP&IJL%U
zN|YV-QZ8*U*(prDo?*;0Yn)}^Y@_F-lIPYqFU98@xWMRzMlUjYaSdHYDz7f9ak-jX
zom`zOYFt@kzNl6TYFu68#Tv6~TvOxP8h6&XtLA2K*VVYmfbjJ-W~TUtnhwx80X^D&
zaC3@psc~zK+wAprqjwnXHP+4JddHc&?e!_6_td!8z^ob%8Mv>;{RSQ|`k>LxY@*km
z2|g@MV$4U4%FoB70SrH3^hu)%PSx^h!_OFfw#IV?p0DwO0lC$&`gX)#QU$B=t?^&3
z@k))4YkX4U)f%tWc(=xTHD0%`Zy9~V=$l5{KD=%C9i#GDn<d^)@dq{Lrucsbj_s8B
zFy(w?;G}BiQ)|>;ru@%T#|(dwa+G^t8UETNzo{|Lz%64kOLucux+&c6RL@Q3ht$=N
z27aoc%S^PN<mVc{)cDoPT}9ue?kd1<_WHZg1x6Rv_#>71v&LWQ0_=5>QOs4QPS${Y
z&=m@uQry{q2DIWYR%h{)zeJrS4KI~)maemm;bl`!*E-z{%R@QO*YWD?9kWl2Uni)u
zah*--6zUY~tX60BI;A@0Iz8+3GKZBqQJq?yYTb1@q0x2>>vdv#?QW8dI!${`>L|E&
zh%Ms?%dMUs_Gvj|$|lykPM<m})LGFueU0|7)6an9mro^y2h<s8umAeCQk`LSR<1Ls
z&fq#j?Ca3~IBCaIZim+yQD>xmTE*fZrk+uCXPsL$<;Z8fu3@ioySCc3^nabTEP?tY
z<~nuOt+QU8_06{p)8IC!Gx|UN$n%ZtlYqP(Q)g_Q<LVq=XVW_4>g-Wx&pPAlY*uGd
zoo(uDUU%K!ggRTu3MBuv`LoVebsk+W>o~GCZI_*BU$-`@yU5!7$#u4?v%N8=7~R(B
zk-B-Z&W?3<s<U&Qsmg8XfBPhdnzQRBOo8cjcB!*lU8ktr{Vlty&S=g)A$x``Xzp(E
zGV)7uFIAp8`x|GUI{Vh$@MFI^i+$^K^^00pvQ-{+@iXcipn9dnUrW?6bq=a?a9w-(
zGK%&gbq+O84znyeqOR*MGl$om2||OVBNb<vo$DN3cR!gLD#OJh_aAV9W6d|&g-)n*
zV%?3;uTr!P2%lZ&<T|I+IknDdsu)`5t#f+%^$dkFJ}WUjI*+5TXVsleTi~2J=hiu|
z&iQpNsdH(a3+h~0=b}0nE4_9@rtX>fuCp5u>Yr0O=dOfbR_Ain5Y>&k8+ob&QWvA4
zk*>eiIb3Cedc&*hTvO-TI@hV2h{?xJKU}Yv)VWQ$*Ec(}&J9+(#J|zNO?5{7p1HZs
zEh%3Iz;CZ}N1dPR{8H!6I(OCisLscA?yhrBo#*SkQ0Lw{v+6uq=PA|0I`^CZkJovi
z&V#B&=G#Mc9#*YW<yU$wD}>v5BJh~yRmC_@817>DX=PNMXX`wtT56nL+6bf^&?t9#
zm!-ll)|p-BjXH1Ec`42FSL@8F^KzZFduCpde(ULk54Zo>y=F3VWd*8pW*UdLR72{#
zU+3*Q@2HJv^G_W;68pep=GOUNoevcmaq5Vv%#oi>qhczCpVaxZ&QIq5XLUZW^G%(3
zb-t*hq<v}pIVP`gzpC@K)Sb<&i?Vvz*B|OAE557qecc%Z<p0t}e>DE<%VqlY%*;1Q
zg{ZH;*7>bYr<l$$zt>q{pBB|wXd%wmOux<_=Jro1Qp-0*{%;d|%6yO~nb_6mZ0sUK
z?2;)UPM4UD*cI7gF^k78VoSs<8M9Q3@?Qc=#|-G7T{fm`%rfSQtOVjKb;{drv3v9?
z-&FJhdc2svG5ypF!~`*gn4-cpv69iI(Q-^BrfRruG>nNXlv>Qm7KDmM9>y^Z<F9U4
zQY5i6Yg}U2wzOip$LRhRJw0L$Up}*(y-GQJq%nhe+uLX#qy44!WBSLe6|=UI7Betr
zM9fJ0x`NS_jIJ2}Q<(?F42~HRqv|>=X62ZnhPPcSD~_Jw_NpqqO3Z&N_NbUO%qt~f
z)tJ=`uby&#w4|+Rue(X}$E+JOA!cICdNJ$AY#g&m%my)|V>V31<drz08yQs{79JBb
zHfBrXY#K8zX7iXWRID+Z#i$ObblSlQs}R*Z+l8gbZ1w*a>((*Tlz}mmVz!By95cnd
z-NABo+nDWQwzqs%xO$Y~dIWZinQAisa&|U{yT<GmGd(8mk=?}{s-zBGJ|nuj3G5j=
z&AEpOv~zDS!}4?AnEhgoZg5P4{bOb*N)0AAI3VUg6<>pO8XOdJaLku6U&R~}b7;(k
zF&D)grcCRbJv`<JWr*#DIx^;{nA2m<ke@Nf#GGakI5y_E*tOr2VvaYCn)$Ob{u@?C
zov0$P#GY&%wboN&PBpA1tk+-c>xD+8_s)zt%bL&GG3Ugb8*^Ta%1aGO@@*&QoAV1&
z4=;|nB<9YTyNq*bjCAP@auRd7an!D_uy(3ye`U;7F;~Z26LW3M^{GI+M6OeFvzW|O
z<1(Pv8)I&YU81BOZ#MZ`l<hIM#oTVMcUXw>LE-*O?~b`gRXXNLlTo%P_wF@3E9O1}
z_s2XC^PrroUd23WZL?<dVWVoukHtK0wNXAx)u<9GN}^B2JS|;h{^-*)u~WrwE1ogW
z#hM54Ld>f%uNnWvnAtHenXnYHyqy#Ca?C51Em8<_`;3~r#vW2lF>l1YY3fduU%}~7
z(0bl7c`@bWotSrH-ivuZRyUEEYx3etxhV)ak)I#Ld>Hdl%*QdG#C)!5wtVK(n9pKX
zw?}>|GJ4uUe4$Eisrx$So0x0^8qACN)?)rw>=f*GF+ZfK{$A?His{FgpJL|6{2cQ~
z%%3LkOU%Ml@>c`DsTYV@5TnE@(_Fq;7pX3z-D|X|_<zSNGAEhFKbl$P(y2k`2Dt|L
z23;B~)^KBnjs}aH%+f}eFuJ5srEaOlKk7n$E@RAPjdnHK&8V7~MzD`a`8V(zG#j)U
z1PyIMcK%lz3{d_w+^9*Ol+1~Si{%ED6iYH}xG`kZpw^(?aP2p-uW`dE_J-j#&4*WC
zcYS^L20a=KZ?KAeT27%f7}%hvz4mI*TOKy(+hF+y{Tqza{htjcS~U<BP|Z|5RC&oa
zJu5U=vB63fv|a}_7~Ei}CE-e~{K|*lovstr2yK|Xu54j#9y|VshEpQ~s~dA<gHZ-n
zHM&}Z6Kp(lo`tnWgEfu6mQlG<#aOq&dJVQ}FrmTv4K`@7xqTh2C>a=IbfX3v8<0|!
z!%Ykew1-$@8*FNE7H3?8@%DAIhU+D}XvwMMqPj(cE&r9VL``h4wMqV4e<s<hn*5Xo
z+csnX%p9r&>c8O)c4@F{gY6sa&|t>~D)(vf-@sI(g-f$y?%ZIyy$ZJ%#C130ZVh%<
z>NHNaPkS`jtHIt4_Dm(UuC3$b%He$)?5l)p?0tp%^_%L({taeG|2H_W!NCm<QJv|W
zIjDi=8nU%sVRliO$aHm*3|}(C9;O;-t89libVEhv2&Kq4k~~Tk!|vKTw!v`?uCcmz
zyvnG-Sq;v%*AtDNX7r?n{vnk)xxpz7PHni8@7k&-L!S&vr#GBIOwl{TB+qQ%77n(~
zp3~r5<6P0;JOh%sw88leE@*IJgNqtm+~AT1U;XB;bdz;Lrm8PB5$Nug5+tnWGIMyj
zQQ6GJxzg}eMz1!ilLFT^xURwV_Igu;n;XnDe1p*&jkfo(-(vVqqqjD=&A{zO?@;zO
zT@WkVWuA8#^X>-s7+7fQ0*c#x4eoF7Uc&nc4>WkN!IB9}CGL`|hZ?%b%dIFqtkP`o
zXu};dd8)zF#(b>7;|88Edc0QZ)xNYzNdqM5u?BB9ct^EM3a!C&4W4iCLW36@ywc#+
z2D2Ny)L>47mm6-`OVcH#XlmrHa+1YQmmJEx|5}6B8@#E)k~Zj^c|+>A=q$rp2bU8q
z)@WHriwgr6X5Lj5(%#MnA1N)0hBjSTwVW%@8+_1kX2ZIEOx!D@xG8BLH~6H%XW}bE
zHpzV2a0d;v+#t)db`*cn;7gTbgRdLze{ixi?%OFdW-<5QH&tN0Dz@_)&I<Rf95(pA
z;U>aAH~6K&4~Bm<`jgT5Mzva`o%z2u_|0CsB>diBfl`z>w|W*f__M)Z_Vo{CR9APm
z!`}@SHOM4n6IV-Ryp@SkD=hl?g*?<g5Y49Lwv&0%*{CvVvDDAS6P8Hv>kBhWCoGe2
zM8c5?%O=QelF&@(Dj9q2NGK(g6LR*NPw*0a!xAne1ctQ=pjSP`1pSV-jVt!4mQXbi
z8jXyqj3iS}h!Yydaj)j^%Js6XgzgDzB&?axBXRntPeR{><qY>U+RJEfqYG0TQNM(h
z5(XtKpU^*HfPG!Ts5}{HKz~D6G3BUJ8*F&xgy9K85*^lX!3|4j@2HU;YwtT+C1F&;
zstF?!Mw(1}*UijaM)IpAtZq!zZRtR9-o7cjR>Il|J10y}SSMj!6PT3f_lvBbuw}wl
z2^$zw@|z`$PS`Nv-?VIGpEgd|B$XLsV64$ijgB)qUjA?40^K}ei{$_IgUNO@!34H8
zI?<@av{C9Gb)7IdVT$p$Pjrzl+p3u-|7^tCUE`d5X2*o73DXjGGO_mdEjia7t@h43
zZCBpKKJAsTw}D*~c1zejVGny%h<m2_sSH=F_DR?`;ZXa!U&8(d4o;Yna6rO=2?rTR
zk_xDuwDzW~_7<;0?5oQ0FiY&=iQBTJPcoz&r99MCKMBVt9G$qG2FDmZ*66CcX2m%n
z;lzX+5^hX5DdFUVixMtQI3?lKgmV(kO*k##^n|k#&Q8#QI4zgRJatCGnTZ?c>xxwA
z6Db@qwUJ(HQs*U{pKw9Kg^6pYQXPthTnT77NjFbQKU|V<X~I<rSId)x%hi4pu534l
z0Ztc58)&UZI!6m4x)J&s1)Xqx!py|o?Dza)+3S=jTVfLx=XBH9TBf`y;pT+<rLGfh
zNw_uPu7tZ2ZcDg5;SQxeVcb-=GNRRCIn-LV_B%acyCd#NxHn;zqLH{BP|IyHJ*flL
z68X%rZsAFK^1+0Ml&*x?2@fmt6P`+VI^ofT$5aFfPpZXrWFA-Q?01&x$kay&@7T>P
z;Ym$BlkjZ9a|zEUZjD$RtqV(^i*_5EeIY^WU7B3szLYR0;q`<!5?)StCE?YC*Af|N
z-QujSAyxip0HC#6g{apz743v~65dsNx8LEtZ3)q`sR~FvwW6Vw9VKmU!v7M6HCego
z+Q<iq8$9%B@?pY92_GkXVwI=V<kN)D5*E0|$meRUN=r5Kb;1{hzcl)lQFToE`c1;T
zgl`kROPHVVbHeutKd8<p{FJ!;$ua{f&I(jloonq_8x*xA_?LuV6MmE0PuyazR@fyu
zC*!KqP2Dou=dAV9KN9{-=x8Fl<zESZCoJA%i6)B@GEF))>D+WmJKJ=-Uofm)WYeu=
zyV&buP1l*~23iTIWOX<Al1-LsvTT#C_G#&+yHj_WrfWED!=q9pKf5)ZCe#Ai5N#Xl
zl*u*8H}TBRph=;L-*h7Z<?zn>i-GPUYP!*dtgi}a+KZWT(_K(pX;N(xHi?=vo3xtL
zn$(;6%MXc#7`w<gyQl^U3QkQ})j-x@#kqSEUCF*&)AiljqTHkDEb8s$=AP!Zm(kve
zQj*b5kG@Sezv$Owc?128u4Ht8(Sb%+FuJ1AVv-$XV6ag+A7Wr=`c+vmyvfH+K54pY
zu!_+UO-42u)nwHst2Md1$vsV0Z?Z;{GfZI3CTlg>-(?7EH(962geDX1)4E2-HQnfR
zJz;y@pvh?CY-n_Blasq-H!{4j(M_6+u}5)`!%dATj_~*<zo`3YvU!s&%(pF7piP!s
z+NmIooRugom+x54Y~5s1lf9a5^?aKqlbh_+WalRPXyv!b_U3lmCfgZD0qM~v&A4}H
zBD$l|sYa(6ZAWH$liizctfk28Vo}=F=x#=pkUi|H1okx0??KmO_EsnsqVT>3_A`2d
zZhmWWV3SjtoZ93dIZ<xdrxDsv+I05bIWjRdIjqUyO^#@CQj_DG9BDH8dV+zYn)(3^
z#~41g$#JTUsenS1yd(uqG`>FRRgd^$DzT?EIo)EbOjfv?oA9!g?3qo@YI1gybDG@H
z<i;lFHrY&PyP90m<UC8VUe9lGf$=XidXXypu#EU^dTEo(RJV<(;I6QMuCt)8Y;skT
ztBrGwQRSO*O!V3&KR@8WFs%YK5uIsNKHOxIH%kdv1QcO0Z?%};(d0Js`F5i!4t<iq
zo%Z!EqvGhfx5>jMBRorOs>%KKs<c0#+GQr$2b(-(%wGCuff}sgN1Hs><Z&t0CNCT3
zNuv^Y)?)aS(Wjd{WBhi^pKJ1blNXx2*krC0QIpwCUTX4clh>NeF|S@xuIk!nqXP0!
zkAOmXy~$fm-fr?n8rGXlBq@P+n!IbyCHbCl-ZvlGacj%y(+9@<F#YtAfp%D*Hu+5I
zuEje#*U;n(^JLi;UmEze$!|@*GOXafZt{&`^#$_`d~5VOHMCUbhbBL!_$LGNjsC30
z+eAn3KCsE)@2O0e77LmzZ1P8wKbvG*(BiKqe@pY5%&z-n^wgGiG}F=v;_S})SB{4L
zEtdnGjf$y9ulgg#V#ZnAs5ncsSTe;+wOB<8w#72W5tcw#!`)Ju4g)!((jHz5zeS)}
z*~(h8MWN;Tf?|tOi*n2CJS}Q1DlONER9h^e5rt80%#&Wy4vl(?MvJ87)O&1HJ>xFw
zce3vMvO2_8i|#FYv{<f1-xmE^^lZ_qMQ{19m<-MI>(B@=qkHmoY*0IR)n#bqarqYg
zTMTG1u;qHj-*$BO-DxDIot7HO%=*jy7h|OsgIe6ZF88d<;1)w#{4tzAhcmRruoj2(
z=g|JF++ui(g+2MBC#$p=(c-J+_<A`;wiwl7P7hx0!Ky7*QzX07qdTj&Sfj<;sxvLt
zY_V3$Z41Ay#o8^_X)&$EPA%4Lv0jTQEw)wsTWru`%NAR;7~NvS7Gqm%+G3*?8@Je`
z#h8{G707tLTiyLcY{;mrHtVV{9^NxMuEqEko3~ttsO!p)l>S%Vp6ZN62ioj!i<X;0
zKCKnu786@^t&!2r&lZzfY|~<Li`jj%Ysj))&Acvas!Csfqh2E`^WAnWwr{axi>WRB
zSUmH7uj~#jH~7@Vc8c}v+C!@@SkvB}TTE|pe2WuW?9yV_76-OCsKstAc5ksyi+x+{
z(PGaQd$riR<wl0uTjj=__QQ9LcC^t>hKT)I?B8NWivz5@w53hKxiP9PK(PBOR9g;K
zp|m)%#ZfH|ZE;wO!&@Aoyp@T@b0?Tovd{N&`w2BSe_T6%S{&2j*cQjN+_-U`{m4Mo
zOv}d_v1{<DZF?uSIH|??EiPzra*I=1oY~^67N@p2t;Ojr&QOsJbsI!wS&~&jQTp)r
z%+nLIx~1^!|3}qXKwVXQfB!xoFaT+3L51h`z30}63o3RiiUlen*n$cwDt4eEb_WIu
zil|uF-5rSC-GTZu5s>#g`*?WyuXWa5-`TTg&z?MU=1jD5Nh_DOa#^cev8my--m@Bw
zYo(~trOUANB|g2CD^)<P%xvYVR<3SkMytj%e6elIHLY%SuEuHmYFCAQCg|L3jf9ob
zS*={($_=f|mU4Yr405A!<(P)PN}YZX3(RTdrdDol<(5{SY~?AdX>(h-TUEN1TU)uU
zmD^jnqm_BB+|{bn$=v_tJ5|SQu1qaa-xtz(_djl6d~YlFwenCa5332Q2wHj26smMI
za!?ROs^V5tdZd*{)tp;-T(RqzXqy|+-)iYmRaeb?!WzEt)2%$yijKKh(8{x|JlD$0
zs&cJ7-^vTEyx7W1DxiPeyp6tgWsJTxv@AbfHvg&`S1YfzqC>);8PK9Jv+ALu(18pW
zZrk#DD{ojmdDG}St-RIB+h(w=)yVT=qq;=n{Z>9u`&H9!<-=A!YULN}zErP1Ht>zn
zPmF%r%4do1=LWto`lZpYTKU?5HrXlow}u72Yvp^xKO~$V4gA!~LIXc1{P;8BS9AW)
z=x;`UH~NP<a07oC{oCjwqlczljCz)+YfZbpeQ7KIwz901lsS8(X)z$L4hAsV#%S9#
zD;ZeXsAN`2vuc9d8E9`*UBPMzzoUUpMmrnrVzjH#ZfUw3khawgTz6BdXTs@~aOB%3
zO<!~NGrES+{zeBFmCTxH)=Kc&1_q`XWT4e(JY1AyHqAO|)=iU3lTTAfQ#66lXemwI
zfF#Rlyfl?G)r3<spjD3YjcFr|pZEp_#*KFG%E)lj=wPEm6rBZJFU`<2v(wy|X8kl9
zq|u_~3)5_<&OgoMv}<1*r?r{Lfy2{mnr5>!6V17Knk~}oY4{0^{L^f2cq^k@r`bjz
z%`kIrmqwfAr6k^uALHTXwL_X6)9jRH=QO*e**(oJX-1?OnP%6tJ34rIkQFtIO0!4W
zy{t!@jDUROM|g}e$EMjU&E9GDNwa^N1I&hf)9hyfSCl_6&A2oN8-Ki6b&zS0jAEDB
z0*9oTutHqoA8L~FI?VVIo0R4VV;-62C<9_@av)B^(P@q`=CNsxH*lO$`AW$NX--UY
zQks*~oSTF_#lSgfrldJF&1q>)PctpenQ5jbGG`=KNzbei?hdT8(wv?6#>(S_2%l&C
z^Am$FNWevDE>3evnoHAMmge%bdkbhCsopH=C$C5|J<YXgu1j-enyb=WlV(PmtJ7|Q
z@oQ_kb?I6eGS6m^^ok$a!!1>snPyg+>(ktjc2m=fG{A1__S!2$w2$?JL8<NAw9H9!
zlUhfH)(khNxh2h)X}(Ikd5pPf9!>LDnp@M{mgaV2-j(KV19up`)95@24FB(r-FuAl
zkkNb7+-E?(_osOv&4Y<k`r{xEr+LJf@hZp1(>$THr+GKclggYlFQ$3P1fEV}c_z)X
zX`VCY^G0KBFC==T>Se>PrCDI$6{D}FnQtJD`gOw!`*xZ)(!81GtrdKirzke;J@fk1
z==*6tNb_Nuk5-WX*zhN2q}FUpt)9<}`FWZz42UCbU#IydO{WZ<Gkk0OU()=V=DRfC
zoAZYxr9UR2eloBy&Cdq3v0AGBm*zM1#u--5@Ozp+(kwIIKa)`Zr1?uV#GH$aD)u-z
zi_<Jgvow(u^WPP4D&s1Eo|X(GxJ||#ZPC`8l3yj^w>PkAhIR&&Z!Q+Yt0giWGym0)
zE(vEqhOQa9W#}GrGW5!@y5Sy)jNjst**il&<MheUH_;=0oRBrltH05>$kxng>4>v`
zZKDH?#wC)@kjXGT!<8Ab8FCp$XV^1CK0_hHdKrdhD4KjFLp4LmuvC=|cp2hIYZ>Yp
z1}DCa3_*s_oPHvsP*H|vA`{yd(;*qw$*`_@i4!x|*Wf?HungN7f5Qx$WY{#rMu~=v
z4d|`9nSrg0Zk}O_Bu`}9md1<~Zf$s*4BHxrE#Kbo2&1xaxPcuq?3iJv3_B-$3GZS!
zRy8uit{HYqd`D&2eFb01?2$OfWEh*_gbXKU*ek={875^oBEvpO*h4eyn_<5U`zM@n
z84fUfV8W5Y@rDn|aIk?xELUaK1anSIBz5bzQgK*@!;KTC@yNvY=nO|0o}6%``IrPB
zYv8yH$0r>5o|NI_4Cfi=6jgWwXJ<Ioz_dj2Gy|t+n3{0TFdzfYG;o$tDU^A7&dG4@
z3Y_yZTwu-%GhAxmBBPSLIKw3g*7w(ChA%gIh0$2&RT-|%@Mwm|GF+2kMuxl1_u35C
zWw;^3Y;(?Bp*GGk&h=JXWao|MREwT#U`~dc^a@Do(k;f6J(9fD@NF4x&u~Y=pO@jz
zm_OVdTqDW5lDO_M{=G);%W!{&2a-?^8F(;><zaI^lK3iVj~jl@=o1P5Ndr$AecI?V
zMxQmRorBLCkPR<ncrn2*8F)FvD+XRQ8t2}E46iE#vs{zqjSO#Q*f7gRS>DR<c1BkN
zLY8+jyqn?A41Z;KFT?v8epYkV{7;4tGklfd>kJ=d_*ivAA6ywe$?&P+&ok)GFEKwe
zXK&kcC#QZri+-6wA0Qoma`>AJ-(~pT#J<g->;Lp=_CtmrGyIfcp(NLJJ5cl~r(X~H
zTGS_!b~fp<tzR<yn&E#LepAn%;g5{lSE#U>wV2k~eMadUR-50o^!IONzRjroV_;DR
z{f^P+_TmgnGAzyTZ-!+VQdxI8r6l#t>Y4hdjoa@gNgbEhCQI8aty$7pR?4z+mL6Gp
zW?3c6s#!W`>5`>gmiAdXX6clrLl$i`)5qXyS@*t>!l^bak$H=Lbr&B`*si5(mTp<P
zXIVY#HumZtf%_}e)$LhRE_EH0()?AgEWNXCs%OnCeX{h;(m%_9Ed8>qA>85yGg{3U
z|AWv(&62Jy?sU+lZV&HTS=P3&1G5aux>A!pqVX+P0+}qeEcGneEV(TCEQKu9EczUi
zZ!t?LOW6WSp*UXFjle5eD{IXMTA8Z8#haZQS(nLS7VS^;vu@fd$htKN8gwaCWMP|G
z1{)A(h=FyCu4{BX%>o%%-{=NLRr(U%ILjtkPRep}mQAy4mSv|bJ7?KE%NAL7P+isF
z-{>|9m1Qf#3b=LF{U_3BPy)k@xxLZtvaVi<IXvsG7F8<rExDt4X(f#KyJQ)WWkQyT
zSw?2rHOpRE_Rg|fmff@Lnb<Ze%N|)qn^W^_njO+22X)B$ejk%%Y}Q@Er4MkG?^Rt}
z_A&iZzJHc|v+QS~Gz}tOnR<X_^?~BsRNgpMFl_`ddQg^wvmByy>0gNrs}#kdSq?J|
z$7eY_%cLxmP5%)lc4U^LvhHqEtvr#i^lN*d9$9#FmSZd~mFclrjx!~~%B2%5tSme+
z%Ql_eHDsr#0%tit%LOX;teb&6+o-^4Sx(O~Rkb(Ev@B<4IV<b#*iu}o39EK+_uOfY
zR25so=Om%dHE^EMxGG*~_|hyFB{COhxg^2*MRi%0%d=czoGXn^H>%sirCHBa=G1oA
z8CkB)az~asvs{;DW|r%-+>m8f*8Q!Mq*|p~(_`)3nMJczIuf&UoNmlAC&4!vxY_8~
zJzC}(xYg)wMiu0C18QsYvfPzrL6+B*_AK{gdD0r)y;<%v@Tl5?0mb`}+DL*QR94$*
zCl4o_N3y!uJ>|?xIFD!DFZd@C{!>|=7B=7Kv%HYyS;NmI@>2Ms;g_?#V&J7DmRGaP
zH_qgdsn@dTFTajhbaCk<I_n$X$ntKM_pD;PY4k0<8rr1Z&boh~@2KY6pWpY*>$5DM
zXZaw@hvxh!%O?g@i$1n~N#N6jqaIt%FS2}XoG%mpSJE)Zd3}>`zO{1HB;F5Me$29N
zj`ec<lx3kh-W-`6KWF*HQqeQVuLhQ8`PabzvixR1Df->OA6fo1@K?hBJIf-&|0JBn
z29~Jp*h-IO3BO&=^|~peEk?=F#(?;34Xl)7<%F|Jj#UlEdfF%a4mnmc+|g(!qn#7q
zE(W^h=$3H08(7_Fj~wx$mznwnkaMd*d*|qrqi>FW=G5D>zkxM!x`oH>ni-IDowJ@b
z4Xl-8Z36>yu5%t_RG>A-D|Xtd`sZwpx<!}Ex$ZijqhO$D)XPyaP&TTiDU#7sF=sVL
z&44)j?UZVm9$&ExOa(djdJ1zyIhr}w%7&QlV57=I{j6Wduz;LHbF81^v>d1B*dWJ-
zIS$Ra|3n+**f__oQlb}n&h<ZA=GZF7riM2&y1CIUj7mVeiPg((Z9#U(u}zL`a}3L|
zU5@Q@49~e)R?XaM-;@4d+;6K*)H!I@bjKV!<=8pLE;&Zz7@2c>qcln7=7(+LxnA7U
zwrtV#wT#)#^zWWyRE|Azj8<Xg*x#7)9b;gu(fA7cy$tVdbe|mi8raXMTB3sJIl!C;
z<`|b_yfW6D;vZt*;G8?bSk4Ivf1>irPBlL)$Kg39<v1e8NtWA38dbI*Yv8CHlXDzx
zSbf?t2GqmHz29*;jyKK;IZia7m!{Ut$oJ$Nrx<67QT-1R^Hjs?{ifzPBgf0CPC2IK
zI5Wqb95>}SE63S6rsuda$2mF9&2dqVi*uZp<NO>K<hW3EK5(NK^)MP`DP!YDqq0kK
zT$<yu9GB-@r#)+|8!t&rUfSM%g-XBamOiS=U6teN95Zvw%5hDO89A<%VL7f};^x3L
zR@BQ#kAh2&=EJYgaYK&TId06k{q^e5)E30oqZ1<~sTOo|j$3j(nd2#|PIGhImgDxE
z+x~W|sz=jZ1b;`4J99jk<Dne$a@>{U{+t_u+@0f|9QWq9FNfZ_n(va4%0^|H-idm2
zHsAv$sR=7NA2$4`T7l$q9C@JDI;J$TeOzsPQR)fvmD&^5OI>PX67|DR=Xl;qU-%i>
zroT}+o->XH9!ky&YC%2Sf29|dGs~8}B(H&~HFt8SAH165lN_Jsn6J8R$DX{FV?mDB
zbG(t`O*OY1@8@_c$J;sH$?>k*LfVbDl~Ed#Xh^BQFv?XW=L2;(IX+SW<=nbW?NU^y
zt@<Fb>3iuM>6A`c`7EiW3k`gp<BJ?$=J+bd*Ezn+@x9sqO^$D^pp_Qwpcfr6x<$?N
zey#t>@uT|x96DfgW6jv>Kck(?^mC41)c>2>-*fz7;D1JcGb&@$O#U?dcaFad=yO0!
zRis5Z_byXMu_VV*bx<BnkAHJ4Q`Y5~n%AL4wB*?^&qjI3(<YCfcSGN{c~;8PDNko}
zuAHa6fmMu3VAVYB60E~LIwW|tJRK9P51%f1y5=bvr<>6}dHUw*o@aG)_Q=yKk?)yz
ztF<+^+1of8wJH_;#LP1&Pivn3c?RTJJMV6#SN^P-ceP@zJb$)r(OFf(C$~ur%)9=7
zu2uDPo=l#6o<g2%-VM~pY3*X(offM+(JwX~_gXY1-CNumB(-;Col;je1H3$yJXOQB
zJoP+{ylYJwE9&G`eZQ!!DWV`xm?uh7v2LEG;lT-Kh=FzTT43gsuV>DoM%PbdHZY*d
zuyLME@{GwdHqWMcHd7I3D{h|6O<?;x!}Dxmc*{In<=HycV00U!@&EB*dA75x(8RJ*
zDw`Gc4koa3nA*|6PI-3DvrC>4c}5yXMLDKhi;f1`YLI(zD2QU;&1~4+=qRIm<Qbi3
z&pcX%E&-inqA#Pp^6Z`GkUSIeZbY%wsFr>5?k%PTll$h`&+z_64=^gP1M`ea@c29j
zCHUYxTCy$yRe*_kj>vOlo<o(f#yKp{;R&9UXV$^)c%`HAOwMzn@sCb?k27$L(PQ(d
zZ&8XQe0-i05*f9ilk%Kw&Qpw@YIKTGeKDP8K%w+@J0s7uJm2N{KF^tX&dM{_@=d0m
zo#&#&{&Vu2Yxul8=NnMhae;vgjjFfQALNVkTq3LTTxQHUc`jF>Yk^9hYw}!?XL_D1
zl`ZQ3t(NMuMHzdmrD8^&YnApq*XOy;ESzbUERH(_{b$q)+hxmc$TK_7jd}NNsNsit
zEgc<jzgv^$z65WwcyG>gi<GFO`ny-&t%@tp?RoCV^GcpqRlT(ZSY?{$@jUbL+-01*
z)u8h32-AD=+?#iMnU68e_n9#|&gcPE4^@)B|LqfhNOepvf;^Apc{K0-Un|o#{mZRp
ze8Mb$R!Z_bndd2UKAq<o1Lw4N3Av(|qtEAgA<s*BUe5EPwP<x08rxiECxxoVRwtk@
zK@DT(=Xov9=cYmSFUa$O8TPsvFU}iz-ZcD{(YN!wljmJCQod()Nxf(M_f^ncQhH?k
zhj~8A^KqU}@_c3uK}q;D&m5bdzu(?;J?(mQ^$cI+`7+N}>aPZ+zRvTl<?uIox1n3}
zBzj3{?Tv&b`9q$X=bFrqd49^XFwf6<jwy0%kzexssvfLBp}_z0{FZ0c0__T}A^ffu
z(K*#p;16|x>eEcW_)84@ZFG^*e~d0RsyEtF1OFOTaW6BFD!2+Dh0=iGHb&bTU8%sz
z1|+jefp}=t-pr8vY6UtNj)QkB(5XP@0$mEMQJ}whbuG}tG;}lC-RSB@6-sJ*7U*Tp
z-bVWt=wm=$adiF68RG#3(&k*Vz*+^?P9z5z7?@b7u&ssve~V4Ve6vP#iA=FTslb8)
zuNNp6@CuA5Fw$fy1=cg;t43=D>IE7FeDfV*G%y+&4HKQs0)vecCoQ&l9pkK<*fX@i
z`UN&9uwj913k)l;QGtz3W~&057}%`9<^?u29OuIphPO;O(jP~$wQ;sF8gsTwWOgdB
zeSzWT+`;IMMrBoOm^ANfoLv&zb}g`5f$0UVEU<flQ3Z}Ka6*AS3XCprP=SL@e$RqV
z^kv@yV+xEl&R$0Mw(N?Pi|$uo{{rL8>j0yQ@j%O~<@Sp+-n_&)q`-s%M-`Y{V4^V(
zFEB~A6*w%(VaZGK2=hHM2`FaF7d_gT#}+uoK+HdG1<4Z&oK)ca0v8lGxxgvrb(Ya7
z1x_z8wZN$bPD_Hsxq5~<rxiHUELon$*!S!L=M*^CWEA6hmY=aqEO23g%gpzp0v8*&
z#AGi0zuGQOG+bdoVXrE1b%Dn%W3MSNqre>n?ksSv1PaV9aHC1iEO5PnSxLY+-W!s9
zn^WMX0&@%8THt1rk$JZyAU0K&-&WxEM1!1h?#(mK0|g!|a94r53*1xS-U9a(xId{m
zadgXRtni@%j}&;cz{93N+G74=NvN3fM1dy@JS9^Lyke5i7=6CL3k9An@LVFV;Cfy(
z-<Jx!Y#@#__KIzOwZQxWuO+^5r0TEUP+wZ$H_Oa73%pg}?E>!<c(=e;1->ruUV--u
zd~N}y>VpCw75KQohsKHZd}8?10-u>xF>`ss73zxuUnUx2-){>1Sm37u-xm1JyuL5+
z!~ZS%*z$$u`%8hJ4a91HT><~DZeN{Dks(F?Ebv!>enr+O@^^tn>Z^;aQskcki!Df-
zB1;M^EojtBOVRc7{~CW;V!8C|!Mx-vYh#0j+ZI{L_%UbIBJGNFFS2@(_C-1r=~Se%
z39MG6;|h|oe3v3!i*#FoAE!l{1$q?eS)`Boiqp$L??iaHWZ$BD-^tm($bcfnA|;bq
zvq-u~rpQ`F)-E!z$e<#v<`suso{AV`i{#B$apjU&gbRuOauLt?evyiSy3uNpngOYe
zABAcpoS;Z(I5OHaZE=heUZ=>qMfNx5dPRm7*{R6RMb<B}L6I$sY*l2#A{!Oiw8&<r
zVPm747?mC=5#8LJig$~md;i86BInjcwkfiGk>N$QEi%l+wp$^rWMX3kb};^q#sA)k
z(k$jKMMe}ETV$^yBa7@>WRD`Fi|kfpcatBL$j7SUP{Mnf@0cX6*mrMp?rT(>eG=dO
z5{`^HpvZwm#uXV~<cOj!O5mU(2P>8$hZQ-*BqtP^Xh6}$F)mNV;YB7TYU4;nk220=
zqcQX76=aSpa(s~|N<3NOgd!)ZA(WuRNkvY!qWP)FDMh9fd9=u5MNTbpT9I4L>+~X1
zi(FphiXvwenPzG)EOKU%vx=Ns<UHe?UF4i3qheEIv(Go*3#`;+Sj@br$i+o2DROC%
z%T};6_7#<e=|!$AGONh-MXoAxwZu$PO0Fp~qsX=9TplC_GZPtUxS`1GA~zMe*_byP
zos(E10R_1wk)Lb)<=Sp5a(j_GiriV`{vr<)nP-xB7rDp4T}Gwk-bBNFN%G_T7k#kE
z!{+-?A|rY6A4$SKu0kpDiRJT?MV>0Mpvdd8q{uTS^Ky}Ai#%84MRUgHJzwO7#2Is>
z^Q9zRuM~N;$b1uc&8U1O7Dp}oMv?c5ykF$aB5xIW+hpD;@~+vhmbF|`;DbcNM+QDj
z()h7CW64j8d{*T1B3~Huhaz7V`O5HjMZPxhO_6VtAj|d3s_zq~4Exb=oFbXAu*lE)
z1Ss-rk^dE0WWK){{nMy|{BGb6qf+~qfxi={1pX<q*qlp@E-SLM$iGP{mRpi4xjsQp
zn-XnH>{Vj#5-XKl$6G8>DzS2jRZ6T{qFsr8CDtg>zC?!--Ak-qVzm+-OLQ%{my4cG
zB|4YrlIRpCPE;ISH{*-hqeM>&(#L2oqrHvB@}hms8EfcYVnB&>iA;$#ORQC5kom5i
z$P6@~SmNNViBrM#WJ~0YlQSC2h+ioE_eG<`mP@Q(VuKQ1iAsrTiCT$B`CvinM*R{E
z1F=;>i7?S1j$$8NVu%T>XDMCB@VZ9j8)w4M#Hk<~me{Do4kdOhv2lq_N^D(Xn-ZIv
z%;qJwFtAyYZ?b$#<7~A;ym4~2EwR0M4J)yof#ta|JaH;UJv)^cSz=dX?p$J*5+hd7
zFM-`k>|SDz5~E9uGO;)cQ9XN>7-P(_|JR0CW*@6Lr<ORa#J(l=E3tox14<lTVv>bA
zu*5+n4mLcl#CQXWRMsA1_)w!0N=!8UaikJBERl>OI-<leC5|m|WQn89YjTOBSCENw
z`?wOvtG6$4vikqT_e2BBHJ@V6DG76VzNuE6UgC-p(@RV(aYl)0CC)5yL5T}XoK@oN
z66aZ{bBvyARHnujik@$r*b?zCDsf4POG{k5g5+g}FJFNZYq+w+RVC(@xV6O9C9WxP
zLy6fXW|X+L#H?7}=uD$=EOFG*aJ?~O=Zz(9GUptl@|Ez-C2mOq#$vaXxV^+ZCGIu;
z9VPBEaA%2m1|$~8a(CjCs{2aZU*h2skCb@8_z#wN$bf`n%`ttn#AC*P{Qs70Y|m3-
zs{WVRrpz-Xp0$e9TIM+eUzhl%#PcOyFbyx3c)P?qC0;7=a!Gqqc(ugqCEh48zr<@L
z7MNHZZ>&GYZyH~mw-SNnGVhl7sKm!5-YfBbi4RQRL!)u3V?Cdg__V|q#{bNy_@7&f
zRAFM7FH3y2LYq=>d3{^r?-Gkjd{^T85<isqvBdvM{8r+pM9(iJ7MA#Vg|Jen=U3yz
zX8c~_&qV$Y14_bQ2}d&jlvrG%Q<=_XmXuhk{=Ce}W&SmpmNJxCRw7mYZ!{RIZBzcQ
z4{vKg%;h<=N}2X$I+R(pOuO=beP*1})l9gf(dF_A+oep`GX2V|QKnm&?qzzG>1AT8
zm+6s25vNY_z033|)7O;8dX^g?Xa6z-%B)>xV3{>7>{^KiiAhNuB&LHB3)5vXW%nY>
zmZ_AfT990syn#ZQVwsZRav3iP6)TKstxUblhGjM?(=f?qnZafJGJ(m5Wg_D*HzNi^
z%B)vrXqk1&tZR~S-H?UroBRewV}s+I6y4aEn;G52=%$HPo0r+bI9nRsD&Z?SDcQEn
zF!9UGEVEsi?Jd>Q$_zJfK$!!}>`-RMGCP&oxy&AAMwi*8%m~xAdzq1Cb}h4;IhWfb
z<#BRG89&B*mKjrK?=t(88EgE#65lvEvDm(4_A9f$d5JIPa^G=f#+R8~=IAm9nZSfH
z6Ac_}^bn&iNSVV7A8GXPGLy<2k@&`T#%hI+O6v15WsWU#s)-#}=J+xvl{vZ03C20m
zvTnIC3aIClGE>ZVIbYzkGN+fBYWy>dE{{>ZD$p~_oK@!RGUt>zx6EZ_E-!Olne$Ef
z;xZSMxv<PdN!aDerAPRZGMAcHoMWO_l$l=U>N3|D|4O4*nZe6t6m~|LYgf=2d(A3y
zeVJd&{IARnWoDOoxy&nNZY(pW%zb6<FLP6wn=Rm-Wo|KWYnj_D-{vMYDo*3=W$sAw
zGq!eKnY+r|UFM!L_gdIE-q<(B50rUOdeniJd8o|8Wgai{M43m*JX+>43#EKh+T*N<
zsWd!kUQex{R$kAl^Dpy~F`qB<f`J!}#u^l99B)itEi=E&=ViVq^IDk&W!@|Eewo)T
z$XjLJF7rm2H_fRaaqRDy^Ic2qa(iO%L79)sd{XAaG9M-J#_9dkoS!AkSYA56Ec2By
ze>D1anQzN{XZV{Whrc)H4@MP486v9Zr!ou6{A_&1@=H?gQm*H>GQX=A_2}jCN0~p%
zwDD-`@mHC@%Pdv*ZUGk=U2OE9B*rC)PQ|j!aEs@9`;<`u@kR0e>)TiISlOeaM<)|l
z#iN}^dyiGk84GtXyxIyHV!rfr_UP)-&AhrKLAraaZn%f%-a8UrE-%pAqmM_cN7|#W
ziS_pw;L*?U8b)I~*EGC#!dc6JGz|0@l-M6@&X`xxqvVnG$eA<mQAonZVlt+ja4H5o
zqw=jLd|~~Bs(Um%_vgzu8hGxHdFZjAO-hgOV2>dlohx*yu#U&N9`AU(>#?54P>+2S
z%42<x4Lo+!A9;=cC9DIVJvR5)$neHSH!-@YQ7w~@jGiq#wo!~8TN+=Stqg2!RQoZ9
zd2DBRgwgFicJSEI@NmzqM%LEdoji8-*u|Jya;)Ei`je}Fg8JvHB_bn@zpK&8Vi)i3
z9;3|EJ&cYqI@)7T1Nz0RROlIN&b>VM3x03UovfuF%KLfj@A16H3myk}9OyCAW0uD_
zkMSO-d7SQXkjKFuM|vFPafrtR&t2?zxW`0Q5|6{oIkS!1ysSr?N%hxHbdtvr9#e39
zU4fyTpX_n8$BCZK1LPQwV?7<l$O)cXXnLIIE{)Q%(i5~gQIDNIt<zNGb+X4P(&KTe
z=Wb4saxK7+HeKwiU#?o#`*>HTdYs{LvBxEzj_Kn}k8?fFGsDjEINReKOS?|IscFkk
zTX%PiGWL9r3p_6LxJV}TaXWCeh50kv@T=vrT5zScxR-id=5dwB)gG67T;Va@<4U!=
z0q*XY!&+OkTwzB$BuY09Jl8LEjmHd+YgH$$1?kKm6`7Q4Rgdm9(@IgTroP_e29HNP
z9`%^*aihoW9(Tx$&Z#*bw|LC;xXI&Yk0&)#-P7%mRgvjm<gFgJ>9KXKTG=9<%8ENZ
z=6T%balgl19(Q}(<8iNo+kziu(UzlHw8rV&-CMK-_s;EF9`Jb3;~|fS6=Xo__JMAf
zZmNs>C9Nu<!a8SdM<27?d&=W+15d~pX&(7sDeHdrr#+tWc-DL+|D4B4EzVb`^k{L*
zi=JB~Jm2U`M&*3jz$+fFCY+59c7^_$ny1I>9&Z@`Eu(KHG6xT7dE2mOHRL^y_dR~~
z_@Dij{lMcJk8eFb^!Ug)9~=GL;}Zk=b^EEuXR6q?$}~Rc@(YhIJ-#x5uhk+3x_|fb
z(xV>iJC7f&SNY!P4@nObUnKgI$HIj3vw>ec_a9j+tbX(O-D+C93V(R~>9JHxder}W
zZVll-X2ahei%do}O+~59U+l5Ob5~-y1%aL2(xzn|sS1;I<YR@F3RGxQp>4%2t?7TZ
zt8%Ig>JuIaQeW7;^DCRM<X17UYK6IdQgXJhxE@SThYG7DxMPJ*hU4Y*T`P2}P^?g@
z(7obHO_i;`INJYfv`2-W2E^%Ap?8Ho75Y}_XUsK>YQ2qo)xLD{gMeZjP+`p^#<eP}
zE#u8Os6x6z#&Bzecu``uLasu-LZN~xw$`ht^_?=RWfJaWEp-A?Sgznz*t5cz3Y7}g
z3d1UFS8?5Yt-`t$)~irAXQP5&A*c}QoCo75QITS-Fu3B{g_ctED5m}lT7nVoPStfx
zM)y4G#Hyi&*RQZa<-Y~+8&=q;!sZpWFt3e`ZfbOsirX2gqTkG%@%s5KE9|S2%_?lI
z%xvpcE^SkBUGBCOw~SDhJTa<8&Z+ygY+qq`h21QyQn5pYT`Fk(kMNEacU90%a#~pR
z3|o&$jWEfPMt7~aen53qOUQOlG>kH^htbhS)u_i-*vs&d751*MkKu_j(!fDR_p7jf
zg#!$aGkTy=^)NC<&v<j{=&FMa9Ab2W(a~ewX`gxyt#Fuegb%MUslpKzcfYe%H)-*_
zm`AB{Ryew1w;1TyhYH73IMx!PtKKIMa;qOlYE|b(EhknuNtK~avChdAPN^`X#<ex3
zR5-Q5{3@?iIjzF!6~3$ReTAtNcNUzYc)P+G6{cD3I<vxs6)rM-meI3~o@4af3g;O(
z->53s1r@i~KtRvM#=OSpB}OkbdYRG7jb2e<x`8W=US;%Zqw)IK85ORra9xF&6<#&|
zETfNCc%s7f6>g|7yTXkX?x=8Qg*oOs*Qji`$-vDOZb>+?+FO-l3FmeL;?GkKsH#+W
z&^UKjxYxiviKJcx_ZhxF;l$b=GUua4A2#}k(b)GfHH0Kjo;3b*6`nF63!gUdOoe9?
zPTW+Vukb>J7c0DE{8tj+mkmgv7H%o{d~?2*_%1N;dWAO(ylM0;qp>k+HSbt+c(=lP
z2HvmmL4^-1e59II;dAvl$?23ISNNpDrzZB6rjqRJlrJiLS>c-s->U9uuT6!o)%%&(
z8~XL2Yf$vUUAC;9j!0UX3Wl}(P~k_b(sQc(RAHeymMTG&pDX;L-m=Q-Rer7TzY42V
zS+&Y<6@IVqcZEgj|0{0QkRENF__M-a=8SKxjSrvv$2d!jE;g#+-%>UF3d_u?uv&PZ
zsyaO_MlmX9n<{M$uVi%PgdZ=|Z&zitDjln|Pxu`Sd@v~0$v~Hc-`Ri`?Mr9ZD&5Ta
zxS8FfO3y0UD!D4Xs`ReXzsi6reUh;Ks`ND+AE7A?YgCh+BU=AiWnh&-Ro1Gqc9pSq
zq;P!9<7Zm=Qzcy`^MCpA@sIf`g(@}ETr^s);#DabR)?mD^i--;jT7q>M|(*`>&9#(
z!eN!D%7s-fs?w}7xXMOV_sSSjb>CL&RT)}k9TQ%+ib_WVA-%uWud+eaEv42P{tc^c
zX`&WU%c%v-TARJGY1pL7rd2kpvU!zh#@V9EmR0tzazK@>s%&k{QB}4PsIpU)ovRG1
zvYqjFFuHw};mT*7@owwWG~kqNdUmY39a{o2W|t}>tL$23gay$!Q~ccw?`~8hVO={C
zhux#f=qh_w8B=BND*IHC*Vrn1#bNDk;&{2Kl&DYGx5|Er5^)sifmOy;Io6ots~l8i
zlHr4^98%>_!xM~7RDCG8EoK_7$JQQJ<#6-T(aN$)3XiCAq;ZZidUTb^2DIW)zIu+S
z65DfJmE)_NQ02rbr&O6z<s_3l*{CEXHZHk?_0%e-SD9*Fr&ZnhNeP^hNXA(tlg>;y
zXH_}7$~jfeHO~1)&ojC_H!eu@TwLXnDl@BS9iY0YORHR2<*F)|nf&Edt}rlN3T^eH
zD#ipWsjI8ZuzGckRURDzshwrlic@tLk*g>*#t@w)<(mAjazm9DNZr#lHM`1<#&ky#
zbxytBDRonon^gy@%&qcNm8YxRYPIz4D)&fRmD|mEN0oU7?lc-V0kwj=R%nU$R(Yt(
z!&UC9a=(c^VDv%N6FbaydE0r!_>Wh4RKT#zmT%nXo-odnRSvTT_)L{&jq{4p=ZrqD
zzQXR;exb^X#(AmA%Lb$;?q}2sy_#^;<1MK2x|&Rl18cld<xO=LH3rsrtIFFdkt%;y
zd8f*|Rlck8z2*FSRX#KDew7cZd}#O+qaRiIxQdQKReew;)Ot>VPnDT%-6-YrDqmFj
zvdUK`{B4!54an;o0}2>F8qABS=Lh32w7T)5;h(DL8fba_T;&(_|A~g*s{GGz9O>@~
zU(Ua({9UD8jrKLy`7BcJZ9w>+DvM2WiP5D-|E;pDN-B|QQ==up)Z8Lf1=J%`SE{jc
zja3rgRSm=fy<1Wp%-N$x&l;=M=vbpujm|Z?8^4Rut~I)?pfhd`zxGV6ZoaC+il|qO
z-sW7hMxPpe4fi+Nuf`e%^y=3mVQCm(9O0O=R?Y1!mUEEtx2&;Mjn*3J8kri|8bfNV
zQzKU+U!zu|UZYT>Xu_2mB?ILeo`JY<;{uibsxjjvH){Abn#Kuggf${dTI{QBr?EY9
z4mKH?B&O)PHP)}OL5=l{KeYDWf0npo+0dAq*Vw4W#)jkWZj&0Dno}M4W;LWrU<>2K
z>D}6}^zU6`8{rzmYHVlB-D_;0`0i3;c#R#*xuen8;GJshyn<84kEk)yIJ+9%&8WI@
zMWJU@jXjJbJi5l7hQ}BkoACECuxv?cpM<lof&Gl`Z&a_6aW%%*IJL%U%1`Zbs&TXd
z;e%@&Qe%QSC)PN;#-tjDn)9$kCf<vEgfc(j9BDuw0@5(K=C*sR6}qhf#~A<E8pjzp
zK9N76#)*bcGJ3MnQxe}P29zPEt8Qy~e~oi$Of`Il(P>7{G%A6!3}`ddxi!wKacPaq
zYMfu=f|~nq*g&U)*0`v~#WgOexo^4?+qgLsO}OdvQ>WDGf>&){x?J@(-tcAMiW<`m
zh<T*}&1Ps&adpjoIbLIWbhw|&;<_47)p)wb%$k-%r)Jf-zQzqTW-A|RJW%7t8gpcc
zu$qt2TaDgqRLolp%r&Z^>1_%B_8NC2_|6*h46ofK)v8@!3ICoN_Zq%0@s+{{6W_;b
zJY@Lcg!71jM^$#VF-^jc8|Mk5Pa0Je&(wHUJxSeFkLPMUuT*R2QJoiRyjbI}8h_V#
zspf_;pVs)S#>+Kcsqt!!`89Xfz`HeGtFge!@$DL~tMjk%rn>!_`$E@T+|nNIIOUZC
zci_J!rgRYZJ2f{FR&=WH@0pVKjecNMIzO!Okzrk1@UekUYVHaHd3|mXeOKfA8ei1-
zvc^|6zOM02jc?V1o!z2c3EJMJ`>$trbO&W?9!B$oKh*fK#;-O0SL3G|3v2vb<Chvb
z3QrRqn&i}mBjt}~KXl%mj%fI;#_u)$P^2|?BBCyJmBHG)rkUqny0)ORJK=wkIt{x)
zk~;s?SX^UC!dX^hX@dV%OSkJdQ}zGkTk0(9?6%akNjPl{tW;;^I;$8~zo82;^@XKv
zDedZRb4vR<9SjJsW}u_dPIWpb{4RC68t!JaPfr(I(+jKD=~1U=-R=49Rd;iw={mjZ
z^r_RgPQN+>>a1zLYt&uQ=*`|=YSqAP7xP+HH#FcGRA=ov1NAwt4>7xbSA(3^x|_ie
zM>(l7&6sf3Xs%A)fcXEmq)K(lb&hH<xq(-wQs>+{=hdm!snt1MJN_)vdY!H6Y+a{O
z$FCEZhIJD?p@B%$z~F>G#K1a6wE=cL14HYqUuOfu8yS@)8`fQ+3v6thO^j}u_-<xk
zbE8|-*;3iw%guX8ej6F44%xi6H9V}&c6GKlyrWSG3^%Yt9bL{Yr=Fea>}*VNcBwO>
z&Puxc#W=ef-OZ>Zcds+b@E!?A$4Bg0XN*NU*66`T_o}nEfqjhbYg9(=S7(322N*rj
z=s2U}jUHrFpF$GWb4Z;D#u1)acXQVQht)Z}&ZIg=)H%M+33YcL^!>UlrtUiYql^kn
zHgI&EV+<T?RC{TUt0S7%xvy58rWrj+Q$Tf2F?@#6DRoXYaGFZL&Q!zk7*(H;@%U3`
z3#dY#X<h<n893YMIjTJNsd#>!3zX_!sn6=}b$?-<M<t-N)Va9MC3P;Xb9bG4%)HC$
zZsc~AymbDvHIpmqOjlvafVuA4N1c7@y85N5tLt1-XGWcCEr`AjZjpY&5}0XVmeK2t
z-e7cgof{3zF?v&-o9pfi^l^Ix=9=?Xqqi9q^Y%J-7{1f!yo7(3f!^&?_nJ2KQRB4=
zNC~O)K%EEcJXGi5y4!21cbtA?s8BTR{7Bt>i)kWG^M1;Z$Ll;%=Ot@g>R6tv^JUM}
zQ<ekkYx2kV&(wLg&U1C1uk)ge>Ew3lzEF2NTQys#cz4x*tIl={bDdY}ylSD|sPm?Q
z`E_11u%OQCbvIksZhni7PSu|&bt7+?*ZXzeuJcZvcg-pOdv!NUETBgtjSuR4Sm&cU
zAJ_S$&Zp|lG|@50b<X;}(2g@5>neNh>6iMv&KF8Wov*C7+_%Bkb-t<7(trlv8uPb0
zzt{P$&i8eGFwVj{KiB!O&QEH#)+ehIE{tmV#e9FQ^FISRv`2lfE@anDKoa=Fn5uhA
z>ins!uJd=DMe6hGEViz1L>qUsj;i9}+q;?PcXjXf?k!8}{A&T18BI0Z4e!#XN7>k>
zLE8pfH`u1ZN)1+S(4|4w2CFn!wZUo)IyPw6pnZc54fod2CUH?&B^qDuEYPVz=Z1T0
zJFgAhT(tMFJ8N3bZVkFOSiM1y27ZITwDYS$F9Wp(y&Lptuy%uiro3;10R|MXUxPJF
ztiN#-@U=|Knhn-!FlVW=K^%cW4O$!I8x$I(8#-gTC2R7TM2|Q*!xC1IVuMnHYNE4j
zprW@xA|uUuBpk<5Hyaw}D^>Ce8iWlZrB_Vz6?1Tdp$*n=FvKLqS*O9eW~w4x&&1;3
z8#LIs!6pqhOnf&=KrEnmW3X9+%^PfCzFV$fz*dR;whe|g*uBB12HQ2*zQN87c4;uY
z!43^}Y_L;<lkJ>g4R5a9yJb#W*9>)5_6eH#Z!ogKt_^l;xE87gtN$1JL>=zA%SVPa
zQu<4%RP51U&jw>G_R$S)8|;2Cjcu@3gS{K<({Oi}=%ZM}dzJp-T~cap`c<cAzXtnT
zr~?`t(qKY^1I;<E!T1IT8J7No4aDiaYM_g8VuQntd1xYYSOYZ#dFh$d;D`oC%5rNp
z8v2TPbc16Wd@zI$hj46z;~Fe!u(ZMP4NhqAQ-g&KPE-}u{e2BSZg7&arNJo;*Zt0J
zaASihR(nrva9V@Y8%%9*W`nbmQd0?@(O{Z6g=Ov84bEwBb%SdfoZH~M23MHx`3){e
zLS1O~U((>x1{XEB*!XcJjMIBrgUd}O))|+(@bm^(8viPz5*Aa*oY7#WajrF0*R2qC
zmT|5(dV|q8)EpIVgL@j>+u-H~nsS`m;8t}_dV?r|@!1Qikm~ju+#yp_DKSMQp#AuF
zHkfC^cNx9gs0vyF_cge`!IKT1YVbgV2OB)z;0Y6u??aZK51aE5!;dz2EQv9WH;yHy
zPd9i*jkm#q2G2Hl&Mc7)itBmRG1K#c>3PwpG`wU$!Cz^(vCykV1?EfM?pS#}NzS_#
z{0)<Tv%y;p-fr-YITeL8#5M@OXOiz5{h+~z2E<o%pP2lYMrGBf20k<Td4n$!zEpjs
zSAaRcY4Cl*|F*$*3D*1NhXnuFaCdS^p`M=`{Av7Olvi5(Y4m>$ep7GU;udWDZk#{V
z4D}{$+oF#nh5E~a{B3lR(SM9CHmXtazYUgI<$rI88@;D|*7h0b)8d0q8=tm5-F;T~
zS;=Q*pAJ5&`K;ozs!uzg_P$$3p%`^st<K!my*4_;SbtC2tliSlr;|@tpKiVz$#?eY
z;=3d06^pusZx*|M%9`KSw~XX_9njLlr>9Rp$@uj0>Fv|Ur>~EWF;O3)H<$j;KA}JI
zO^0>VMt`3HK5P1{<#XNml)4v<DD)+DXD4?=zf4jrgM3<jx5{O~5cl1k_T2}s=R2J7
z$@=b=!<<jvI0c`gPsw+uKeb)9?6>_}%4V>%>C()Z`UT)q^{M&PeKro+B&6ZvD|G=U
z2LwK$&+R^U_(VQUpTm3(_ZjRn#Aj!pU3}K@S=VO^pDlgX^BL;1kyJ@ozW{tT@Yztt
zv`K9^*cEy_r_rw^wTaKBKAZV$Zju`0Ymd1E;=ft~D#xvSw)WZ1XM2;`#%EifVLtkt
zk-$2(T0qMQG*K|zX9u4heRlF)TM)-p106N5dkt!-??$KA4O1h0M*8gQv!BndKD+ts
z=`+S>cb`!{d-#mDSX3Ob4Kh-(#9u38efIL%+h-r2_51$E*O!i#OKFZ?-<Xoz-{%0I
zgMAKB5%`Sr8SitD&%(K>&-BB(jjKfh(|SAM_-EV%pNT$)`tJXNIEwel9?onXH!;cQ
z2%igmF7i3j=O~{kKBxLj_Bq<;c%Kt|j#1dosbhVPvpm@icR+z^qx3J@Gj*a0(dT5J
zQ+#Bq9`QA+FRDbz9z}GT&*?sA`JC-D)#nVKX+CEvqq@7#E`0*)CJVhQWtbG6)h%_7
z&$&M5`JAs-)5~d4E=g=cZ>R7AABm|RPSMX_pG$mZ`pojV)aNpvt9-8Zx!mUppXokV
zng$tjz_gZidb=o;lTvs<$J8}GGpsDG^SM@4NIN&}_qRIjHEiNSX}R9#2A`XJZuXh&
zbEDO<IhG-R4@f<ea{2jNdzaW-eCGPx>T{dqySg=CaaPDnN%*V1i~3HVc|Je*{HRvr
zGeP5gpZg8mZS)?Wdkx6z>-AC(_&n(Ik<Z6I5BWUo^McQdK9BgQh@bL#+UHT9$1LX`
z_j$tSN%PvSCAD*l)rTJcfoIekn3n=R>+@b$=d0&=W6JrGs<h8rK5zTH;`6G{8|F3N
z=QW=NKChcoS*J$<WBrOK*7K(MD#`EoyzBEptk$Rm-d8J50xHOd2|o`0iF!gS2uXe#
zd-;5x$SArmeZKPfI^lfl^Nr!yhVOj7SNm;AbySt>=E~wHH3xOM0jmW3Y?>GQEb;lp
z=U3&Gh5gg#FQ4Chez)9H)PJm?Q_jE5`H#^>iHwYq{-tUN>gNLpSZ4agOa=e-7_m&7
zz;#V+16DE+R|Zi%Qod?HyMT=XHV$YX&><ijkPBEXpkqMafPMj;0y+n*9?&D8OF-8^
z=U>s?w4HK#%L_wO8;?neeyCZFPN`$dsh$D70(uAZ3HYvK>h*J5MD<N7f%d1i2&~pA
zwMIbyfVBe#1`G%gbIpLY)Cr&7GOUvmZo9stQadQ1H6R_336NL(Naq!LMNUcGG|?%{
z2NVK)b>IQTfKq@LPzflT=2)9l2~-1W0rh}JfQ(mkdSu?pQ=A?t?>eO=42S~O30T*H
zHv<L-3<;Q!$hfH0r;Sgo7cewn{eTTjGPYa_4@{-@&!_(FnA$Kv!msPUQoyDGdj;$r
zuvx(70Xqlm60k+UmI2!ZY#*>yz}5lV1Z*2H@B9{-BnvBFw+ypvksfjSTQ&|4*dbuY
zfSt^1^r`>lh7zJ{mu07dj|dnUFe+dVvu)Ra-2!$uEDMzzqEaZeqXYH~7!xoy@%^J?
zN~znogUcKhgcR-*uy4R&0fz_d7qEZ8K>-H`91w6|z_@_%Ryy;C{8vD6X1WZSk~&0L
z7cep4P)k=Fuhhy{*2)Iu`J{j&0*(ndHsHvBqXH%e9Brvn?2=TLDxjYIEy!^J#|NAc
zaH7Sl98ij+O1{!2dDY2N0;UAKAMioIsR5@2T(05>I6Yvh)!vH(&QO)s^2LC21EvL>
zY0k3(&NlGNx~ce)%z4HUxG>=SfC~cTC8wTyhNLb^<mJ4?lwWG}GNWpMIzMN6z?A{l
z23!|#mGNgNXKajjb-*<V7AM9t17@j20-gxCKH!Fcy93wX&JMUS;MRcK0_GU!rhuCR
z_tul|E!O;n=LS49(e)B>KY6=JN?=~V9RYWmQ(jNBccJ!eN!=CjbPtE`3Ai`lzJU7!
z9x<^80v?pMfQMyF`_!6xzgsBvdwqMS*8k9jdNklM^%%Wfw>)Eq)Gyz)JQ?s*zyeF@
z)28RSfae3ANi2ERv?=Th#(6p5m4FumUP{s;FKK%<V1B@BNvJrPiZr(N^?)}5-VAsv
z;9ZMLw#kgQ1KzP9!qO9mde1o0`C-6EDzcESAs+{PqD)g48t|zE)K{x;13nM<LOoc(
z_W@r9d=>C@z&8PtPDy>#-i?Knx7TU^SKw}jJ-vgwD?~m24}q?^;irIwmO8y{HT=-q
zStADxtret8pVY5PV8CAie+RnMhTjAJ2>4UUOu0)-C8HpEn|HQeT7$_&0sjOn4p<Vn
z@t$7yl38t~)Kayn&TieKQgpdZjHg0cLfVIP2qC0R$VwqAhqMh{&5>A~52CAttQxvk
zLp$?|b7_9R|K6$+UM-}Pd37|ZTvf4lPV`8=TS)hi){u0_>LEQs`iBe%=^4^1<e5&X
zz9GF8wXS^$-CVBX(qg&WR(A&X3t1y{D`0gA=0+V`LLJ+yv;M>h85p|Hy|pZ&*LtUP
z?5*0e!VU`2ji^d~CL|l;hXf(HkbH<2QVA)96hlfOWlNXxP#;hm_i@KbDdCD#SA<tX
zY9VzE`%S;bPH_gd?UT}N1-c<oGz^JC)(aUbJt2cbhJ>sWA`3OzR8da-vqc%WuCm&5
zv+kN?xYFIH$p#@ChHRufZ@Q7>!nXen%O$LVqSC%;$YvqOMI0ZodB_$a&xSk~vZaz7
zaz@CskgY?u2{|xiT*$T|!$Nis85Oc!$o8R@da_H%@Q@usb`04m<i&kb8?59KsI+M4
zsN}@eV?@ZvkX=J|3(+9+FYmvS?RT9U>natpYLAf7A$y1H6S8N>n2@m{dxh>SFAWqm
zESIEme)_4Yd95vK?E8l77qY(;hHi|Zyb@JDi*DA>T@EWSKIEW~V?vG%IXL8ykVzp&
zgiHvT7;;$1;UR~HZV`(#OJ4tp)M`}URN?g@qh@tv$WbAaLyiu0R+77&O=23NE2Wxp
zl%$r>92atY$SEOHLQYW8gq##|a_H8~bZP4<Nt{5*D<TCyHRQCA(?h0)Xl!=>04Jar
zdvtKVYR+<=DX)+@AvcAb9db^{^pGn<&J8&)<l>M^Le3AlAmqZ3i&R+lX`@u=YfDrO
zT=hqKE)BUX<noX!ESKaZdvwI*l1VK}ow7?kz*Qkvhs+F_6>?3;jF4+XuCsa@e>18a
z6;NfQYNM)qeaH<VvqNrFHM7Gil?tg+_0tEqGDN~Rhuoru7V<#I+>l#C=7rp)JPEly
z<c^R#L-&qQnNI2F`XW^rg^Fv--68jc+#7PA*>IGd6DzZWK`zf_jI#Z~kcUDZSM>;a
zIOLI#M?)S9QAeaj%lc-~XS>#rYe|FDs<u2C@>Iyv>Izi7J=b>hYg=D!QhVj`?%#*f
z^}K3=I;e<MB3=x6DdfA5??YY=c_rlikPkv$4VfSEX2@G1uZ1iKc|GI}RocbQDt$&N
zE@g$9xlUt~wQq;K6Y_4zduoXtTr9Fj0`K%n=`E}rkn_Wkk3zl(`BMFV$S3LzLOxgS
z>DRO6fO1LIQXhA>=r@gNP)2<f@^#2JA>W4XrYFU&vXC}CszvG&+s#e=5b|TlKOu`l
zehOI_@>|I7AwP%w67s8x!1}#0-BaJsaL1>sy2>O~9x41I<j;`5Ll%Ynr5@5u-30gB
z;%jRoajj5_mV_(~wNHkYh=0xCWvac}`_{|7HS``ycW)u0O+?#>l_FL>!gWEq4nT2z
zm2$HL$~4)$YDBw;Ohh)KeME<d-VuEwR*UEu(Ji8TM5l<(5nUp>MyQlkCDcy!NW(={
zmwf45J)%cM&xl?MYu%BOCjIKb<*TSA);FSG#M%)9Bi4xMA2A?e&B)bBRc7UYWYj=J
zRfuavZZ7L4b^8&mk?WDtkxQUXW>y3FBT5Y&>Xw4!BJvT3L`;Y%L=+>ojTjbDiYP~{
z7cn%#i>O2d5n)6%q83q)XhiPam+IE?qm`hFTP@U&xNQyhMX&utkpv>viC8ycaD?t9
z9AZ?nQWNb4f!{Q+@04oW&#nKIs`Vo_P_G`bMZ|^?8%1mqv8lzPup5ihu|*S5dQ;5K
zr8bMutxwasq~z4QZ_9|SBDRj$MqpG+m!+u%ZQZlC7M-r1daP6GJsm<Av3<mz5o02T
zN9+(WGGf<=9V2#%*g0Ysi|d6=Qzx1|x{-W@8T`5R;SH_-jMzP5kBHIYN4(OVQ4x3T
z)uMzvt!dJJt~2RAzeO>Qjo2$<oGIKpVxNfpBK9|J`$l}*J0;=imI(($+|e&}pc?N!
zj-$+xsY=v%3wuz+!4bb0M@;3?#E3&9j*K`e;;@LrBPK;0A;a3FG>FnNElpXddg}^H
zb)<TMPL4P_;+TkIt@Ncqk6Pl&T3w^IIl!&fJ0ar4h*5*tV=yO0oE+(vM#eQcC1Og%
zKM{)~PK`J%;>n1oB2JH(8gYHZ4H0KVOpCZA;?jsS6-C5(5$8voZT6oNajpR^CXq?1
z8w>Ak37e@4A})-$DB@z3NMC2L9(8M?YQ+*$UAipd@`$S=u8FuJVtT}t5m%}By1ULw
zYZ%lCOI}#nt|_}25!Xh{jF=U1o$69&H^rnbPQxc<pc1PFqB^7QZg#|tD!7QdBj!Zh
z6mhHSZN$wHx0tnaRbI-^PN~zaohrMuW9W93RK%ST^CBkymD2V)={&EC%kY-A?nkF8
z-aQfbMm!wxNW^^+_eVS!@leDAsx$VoSg=p(KKq5L_1m&X10gASG~%&{$JIzJb~UI4
z`mJeKSM1y?b$w44(bEynM0^$Tb;Pp~&qcfy@pi=X5idl%8Zlp0DB`7vmsK-O&)+|~
zES2%1O0{xBS^ZkXf{526-cbGT?q2TVD+AwD4s>yusVr5i8LMUg5${HP9PvrSdlBzP
zd>HYOHE`LZP#?%_%Uk7uQm5P1#sAcz{ygFf1D~0UIs|S1`BE9EB}{si+d_+P)DR+m
zH?i*`zK>WK@pHrv#`!VgC*_{i3RQ;J+PEaBlldj$SM_)izo{YErUs2^-J9!QcmJkJ
zO}Y9<#Ges=Mf@GH$h0X3^p@A;yz)fjYNc^W#L|eUNwdkn5zExIHd&*o-jkLl9h-D&
zLX$R4+BIq4q-|4!QdVxVih@}3b%l+<s!captwc=<+^qg&O%j@byjE+vN~jvBF83n6
zgPL?{(z8jgCS99!Ytp^R>K0r{)1$RdJ!C+)7ESdlczdfSy_@uD(zofdPVGVkB%r!C
zt)5cC`!^ZTq|~I`)GiFxYLaP^ZL)TgflXSQq?HOAtPW~&>H#h4rnE3m8uSWKMk!lz
zGN4JJNzu&Km7uD|suk)<UR=wKowNbaYf@<vm_W5jtx3H}qv;MC*HSU{ld{ThqTWV2
zb#3bj`f5<OZ1S36R#!8)$&e-^jk8XZb(?J2)LHJV*JNmujhk%JWPN2<lMS0}WMaxy
z<(}>k(RDmhGHNx~QZ{X}S(DA1Y|%tbW5<<SRIG|oXS1t8DLJaiTQ}LJ$qr3+Y_e^W
zVNJGcvVD_}*KlKCRU!2-dhHHxqEb`etJjCD-AM|Y?9yaJ6a59gVO)#WAF7gTL9f!K
zbprDnExR_^t;z09Mm5>H$v#c?XfnFVm?mSJZnL4fmpxUBT2gvXjkFF*0rygNEp}~6
z5$)S#zb5-PIl#(AnstBf!p&R8_jaimXM@J^O%7`EMUyX^9Ngp(+0*2vCKH-WY;ty!
zbDA95<gg~kH#won;Y}trIjYHI%Quz95lxO%ey;CwOnIUtAKm1bCdW28PGRj|l8RV4
ztkHsMf?AE}iA_#wa+->@$;s;cn@mxiF`fEwlPU@8x41$HOMYsTGn!0ma;9|la;rY#
z)~DJo0X=7_(DmuMY}vU@&TDdIldGDX-{gWOmo&Mw$%Ur;q9zxc2I-fnaYWL8S(D3~
zT+w8D6K!^I3T<qoo?n0Am5SX8sjHh@(_~hY>zmAIa&43An#?q{`V!ZT6|p7C1Qm@&
zp$c_Fli5vfY`U?KVpLmDCBNezXZ+1gZc(jh@@$j2O>S*+f0GBA+}7mwCU-Tt+ce+N
z<jyAZ{vT6U0)9jFzwh@YLiRnf6Qb;WXYQT3ckViK?|chMw1`SXk``%CwD0@AFG`E{
zBqS|TiIR3{Q%R__QTV^-9rOG5JoCKIdp_rL_I1vjbEev~Zj*ui&CHy?@?j{?SL20h
zyePE?v{=Ci@EZzG0n>H?6H<*O)p)fU3#+lH8jGv(N;P&hGdq9i6|eZ_c6~OYXoud?
zYP=?|Ua#JL!y)6$cLe4V=i$q$@m4j~RO6#+EU(7f)mT}LRn>T>8t+zPMK%914Su{}
zkujch!n8A<424m8zZxG@V|6t?RCQ$sP9bYM3zwm@V_~*@T#Zkvv6c;ob-Nm$Rpaw&
ze4+SIlbOca+k8~wNB$?elX1AN8edi8>uP+%1j;McF}~W<H|Fhut&Pv?tMNU%EDIei
z{7{V_*$OPwvaq2VKUL$;YW!7=jn(+M8oyNI*J^BHuc8pQ2-z6f_3>?ya|zbT->R{-
z8oyWL54B~+VZ&d$OPtB%9G<E8yBgc7@ozPD$cOFK_(y$dlpFlRH8W=?i+~-kg(}Om
z4i;QAXtK!oFfA;O+7|Y((9A+}3w12iwXm0kh8Fg;P|rer3k@t&A2_#XPSO=I%JW)R
zS2eQG*g_KvO)W657%Qro$vMm`Wb~5K!a_?6Z7u9=p_OHZnAR5BSopJk71PD|P{NrH
zgCJ>Vp}mED6k8hkTPUWNRf4>eh0YdS3uy~oEOfQd&q99--7Ivs(A&a(7J69N*FsMV
zy%Z2jhtAoA8EvMW#YBJlSm<kEe+vglhwYI%j0xZLY0HOIae#$^w6$Pa7-V6vg&`IW
zw04(1bCS)UzOmFy^b!f%LefIYf@7IgIHrX^X^nhibt0kv84I3;gDf0uA!{LL!M6}t
z$Xh5_C|W34pr7<D$`eM64rh!qShi5H5L&2_|B=t^^V!F;1UZ+WWT=H<7Die)%))RB
zhgcY4;ZO^YaOJ19nI16O9P$`pCa_f#jIuD=!r>N<P;QTKOu;b%tbz26oi=fdg`?@4
zjYDjVwJ^@Y7Z%o9IL5-U7VfcduZ80*jJI&1g;^Gkw=luNX%<emFww#Z7EZD-)xsnT
zlP#QRVT$sc!#zD`^<!RfO2F)5tWIV$ESzHDRLiXL(KechQj_}uh>YQM3ujn3$HKW5
zW>`4W!dVv1mY*zN)<CL7^}khT(>Bkua6V`L7G_E(%2*~ps!^=2oLSAbaFK=UE!<$?
zVhfj8xYEK^7B01LnT5+OTp_oNBx6NC8AMc(h*w*<#=^B0u4AQYj1woBCO~;q^O*!H
z-)P|`3%6Og-NMZlZn1DHE4kk5Y0HN`GtPV|zQe+u7Vffew`v;S#Q7FO-!^xyB1ZM$
zJ`49-SZv`H3lCU$(8ALep0V(dg@-LXX5n!Qb6DsW9<?x6F{fL`<bO*#Q7J!RaYGm8
zS$K-2rg(BSBZ?0z3CV;OiDxZ5XJNjDmn=MQ;ROpX%0t>R4~Z-_#+)^LfrXbXEVQsl
zzA;5n+PRZ~V?<OgOPDAN?^#%BVX1}JEWBl5xrNs)ykX%@3(FYi;igyT0LP)05oW|V
z__C{i+rm4n`4(2N?!_&OabU$Zi=1j=t1P^4;UfzlTlm1jY6~A)Sfjel9+f&geZ%_3
z$27*qiBBwiYT+{rpR3(5ECw14Z5JL{#kWo-@JkEp*m2otXX7giUt8E|VV8w(EPQL>
z7Yn~y_|C$53qM)dXyJQy{uX{@x37%)iZ`P0^a0P*YaVju;3{@{KU>&jVY7uT>@kLz
zs=^s5dsGfpRAzn>f3vXF!rvCQS@_+;AM7nH{Pmx-(?h;@F#l)iRdKt8e=PiKVTWbj
zeHe4D9dQ|rgr&o3&js6rjVc>^*=T43Hfq_ZYhzCvwQbX7?O~%1lUbGEjE>%}ImA5d
z%<I{xZ<|iLfekiQ<_`ySHcW<2VIv!jZM3k_(nb>-O>H!@(cCsQYB~Q<sTV^g%{Ujf
zveDW`8yjtHOy=;^(o}Ee4~vq`hvBkl+S}O2#$X#mY;>^E(Z+r@`q=1XqqB`3HukmA
z#YR^f-E4GM+}L)Q1U3-*!x(b8fFbs@(aT0}DbUCvhMq_DmZjg<#{M=2%Ju*o{cQBN
zF~BzecVH1vpXI`2QlH9v2HD`RRTx{&u@9sx=7x=e4a<gY!?lsNk(6&K8;-J+-7??r
zm?%Ev85^FBtc{%VhvmYqn;FH@Vdk)6FiVRzN;X0pH8y-3fjlhBH%=6pQLHc(2^qu5
z{3>nZU>iei46}EiCg6;VpH7$?tjtj_G=jy=6&@Q$*f>;tr0_5ytwz}x9dqtsJJQBc
zHg2|Yi;Xchj<#_Yw^p+Mw=vGf6dNbmIL5}YHYV7ZsK^{=V>}Zj&dCY$nbG454)FvV
zlUUZ=ekNPyB$FIPEb5IZnQG%?8>iVg-NrN<r%3ZuAsai>LVu!coNnU`8#8R2X`8W_
z#SwK@)Zv)Yt9F8=e2$HCZCqyKavSH_IN!!>8yDHQz{X4)7uuL5pE=W}w-GW*<Wb$Y
z*v2I`E>)gW$hTL<llSu&1shk|xX#A)Hm<U9wT)|RTr1x=+)#m|3A3Gr&ewKEn35Z8
z+-Tz_l}?m|NY1cswQ(Ewt=V|a#_cxlurY_#&&HiL?y_;8jr-;E-8SyAaj$KD2Tu>9
ztYal-@*lAAppA!YJZys_8mlfxpC}cP8u_C(=Gu7D#yt7<n2pD6JR#1S9QCEFR4j$3
zBz)S&GwKJ}n%KLtEpQsl-s5>2FW7jU0oi!b#(W!#Y%I3%l8ps6UbeANafs?O<H?5|
z8Y9V=ykcVs%ge@6`k-u~oZS?W#@7@sD>Ij}-?XvJ#yiY>8*kZIE~~dy*7S!Dn+(&)
zxUI19o{g0@R@qpeFl&8mMC=ur5KdsCU1S`uKd`ad#)mf6*!alC$2LB(&EU)9R8zW`
za|$HUu+Hs;B%iVAaR+$Q#9A9)vI!({YZB|&`Lp>Xabyx-+xUjvP7*zm_}0dE>_3y(
zBZ>7kzPIt4jjb#@p8vJ+vyDwQezdW{#!sx+jT0MXbwy(LI}z3RY_{=><XeQy5NcBX
ztBmBo+xWxAzczN*_*25aZEUmgmpC<}EZuJ7A7vN)XXZypveV`WimIf^`CW<zg>;3a
ziDxazqY$Z3CyBaA)7$Tz#GXmiOQLZSO_HcD<-LS-)gWn-L((vbM)HB24}EBwM6)DX
zCDA&G=1H`WW=lDw6Dm+GavPC0Nwkf9h~({(XrIJBNpz5_PO;mLap?4<vv?O_S4Fs6
zY)en}O`>NKeiA_vy^`piL^6p~68k05CyBvH3`wGI68k67KZyZJ93Z#-g!KHsksO%B
zAj$t1=g9Uz#o3Zob?neqVyQr7CkZ!+ToU;t(o$f0y(BU*r&{(uoVEoSi*at0V%sR_
zauQ(@HAz(dBR?pKgJm2o94Z{1#IXP9(C0&v7$M1_!jZzmgrkH}qNsVej12LpB*r9h
zN)o3^a&!_WBrz$8u`-TJ;uw)*lb9evx5p(hUi^3=J&9`C#5hHhW6h~aoG3m;cv38n
zoSduzohD?&PD|qSB(9gv^jP!4B+d|@5lhY#IZJqU66c7VD?CqlzVHI!OktF<jQK1X
zXD4xy2qhOMaf$e)Nn94iM-~3^B(6x}N=dGg!qstGxF(5fCAlt6FC!o2zzs><D65-<
z^#A5q=e8tnPvVgz9%cRH*AV6*o09mQ!n=~VTjU-gb?#*x^xj9!`=$Rt5)UTvP|_Tj
z;#sGMlbFN!KVC)S#>Qqd_S_^MOX3@LSxG#e#51)MFC_6IbBVXWCGlhuGk6Ms&PAS1
z;yICLgwG18u&Z9x^D(Ex`ANK##A{4Q5(|=eIf+-3SenE_dHYHdOOjZW#NwoRn`2f-
zb&Nkp<Kop^&%FC{S2<5DaZ@)>=Dv}{n@N0_#F`|QCGl1gE0TCGiRDSWoy0pyyqg3!
zX)r%Ii{?+*nGd|*X@Bl&u9aAs#Hu7dNMbd+j;aLzw>Z8V-cMqj)<1bvmZwA+)`O!G
zA0_c|5?>^-Hi=J?_%w;nlK4D{&8-q0Ya6dRJW)k`2E^!bdHG9r{z-hrZa-;m1!3si
zoz5V5LnHt1dFwv>Z-rTk{4R-KRVCI7zZX*eLlQrVZxH?@+?X`;v7d#TgqwvFZV~w<
ziJx=|<2UJV71Fog83%EGO8Ya3zt}lzoc&wEZNlwB4uw0C*vYca;E4=&C6P$sBNrdL
zs7e7T?C;<J$BcBfQg||jc`4LRfyejuNTE&&byL_gg`O$&N}*l~^;6h8g?1@4NSV(f
ze42>tl|sW58i_YfnSJ<??dM$+O;czldGi!nrqC*d7O`8-ky?wl5k|NDw2f`~NvnMd
z`=rn#mUKv=V+x&QY{uI>M7pNXErl+z4&~e$$I!b=axi~`+cmMTcyv=x?-ce+;qnx&
zNTE*(eN&j6!img>6b?vXSPH{a=$AtO6s#0%W)Y7(q%bgrLE>MjI0lPzX={kc*ZdHi
zGI>~?0u@N;Dw#qtg;EMB={QnwQ%I+f5vQws3Z6KfWJPj99=a){Oa-Q#N4)8qFHa5@
z1}T(Ns4xjSrxT{kFwLhXg@dHPsXL8yHI!kAkROu5$P^AsVT5!JP2r*j#%F$5Cyq+t
zxD>{xFgk_9rEo+FV?~Zsl#WVaj0od%bP9|-=UV*GKTg79gvU~!KbF${Li97rtK(Cc
zAb*&aiBda3I7!HqPD$aU6wXWG{1m22b6N_gq;Rr0{b4*$P2sc@PETQa%G`}ZA<<0s
zq;pmZ+(|V<{7m7h!A9q7@pFXd3K<;bd@e}g!W3quFjI2oBr|O`^CX2!Qn*yYi&;9(
zZhb1y)nzGjhMI(5!<oZZGBVP<KZUDBZb{+R6s}3(S{biP;d&7|iGsc%g&QTgNu_pk
zgetGwQn)>ZyJG!2MD9%Cn-fil{0>FDTf%!{oqJQbPyB!BdLV@dQ+Ozahf|o7!Xqg>
z`X3*nn%Sd?snv5+cuZ~|7d|13!g?x&r&HLG!p@XA?D<RzYuIU|@N5dtrSQCjZ=~>M
z3NNJaVhZz9cqxTNDJ)K5fo$n&p~%ZZ9@FdH$(+%9CANJng(c#z#*(EX(NVtFQ=mSd
zWwGu1DZC}VJcYMK-brDV$h*Q7LI&}k$Vwp()!skIg!_Svt7DxHQ)Vv#<sYZ;3A;O$
z!l!XN`aXrvQusWDFC<wP%h!s0Nhd0=uVVSvBHswVP2oF{^|3AM)ekBBDB}j<?<xEg
z+ipzZXYozK&B86hUxdF3e-myMvf^>i%pc-^#*%+po6+ZQ8MmddUF4tG_FopIR=jtm
z(1t6z4q7-!IH+>Wp+CMx5#gBIGio`g?O+cFbsW@n(9l662YWiG=b*lW1`Zcn64&Z?
z)f~t9;cqVoyrJTjGpfdO8o(Df2TdF_b<oV=nwVL#d(5ih%j4}_meG%8S2wF_>7bQk
zE~@J8ptWNvSbHH!8<DmS_Kqd(M6Td6po0$L9fe(log8!);fx}xU|k(_lO#GB+QTs$
z!1mPu*V92S2fZEa=a`dUeI4|nM8{Omt!@6eeIE~&b~Ue-{T%dnaIlM^E(SOl=->ed
z4?394%by(_?_h$1!48HvIM6}01K&ZQAS@cWimM3N4w4R1;*JB?L7M4mZ(c3=a4Q8j
z41CWI`g|8~kYzzQ$Wz%t(Lu>Er*c?xcqWcX8&=17%k>1V#FiaY9E@~un1hgkIvC;L
zP{+&_4`Q4h40XUS;4IT&jB2gKa0iDtX74f6g?|%6I##{G;%<`gQdMKRCV0;?%Vm^<
z(GJEqytWI6J2=9@kq(ZcKQK28^T0blOtb6Y@k72Eb0#^~!8pgvf;fU7!)n7!W&|8_
zLXcOiFhzXzW`wyE!$5gjf1-mE99-t$a>vX7CpkFF!P(4D2PaB0#lchuCySpX<k)KF
ziVjY5aJqw29Gt3DaAY6Tr;1bA=?>0tFvG!_D$RFmnJZ8}u4T3g^U4UGrsNvhIS$Ts
zaG`@)4$gCMzJm)K%yi62L!L?G-=8;(sajFXd{t+(c}9LVE3<=399&Axwuy@!v$90x
zm$(kV6W`T|Nt>#8n=TW`Ip-A)Zgy~sgDV|e<=|@8t6jUUb#R@7Ys6`6-NnpKub1&g
z;SG#Z3$u2?=O#(`dF57-J00BR;5PBwh19vj**(L*JC@wTdQzu~+Yjz_aG!*n)7~#~
zxW3{&<ltck%N@M!V2<Q3I+*X^5%EVI%ysaXgU4ljPWXgyp72Q_gJ9@SIe1#eXM~hI
z%QmY-kw5R?g;@UR$>!_-OAeMW(;O^d)8Ga<2MZl@67xR&VtA2*#SUI^%xQ57*#>8F
z8CK1K{m)Vdud&KG=EjdV9K5Nf#A2<q#4-nOIcAT?AMuyFcjyV*lxr3)RycUi!M-kf
zx>)I8m4i+$I=gt^!3PfhaqzF&=4uB&IQY@QhYr>__{hP>%)ni{);ah@RgU%T3z1KS
zp9wz~vNo<|lT@AjQiRRnD|!31gKt>#<<<9+eCJ@jS_eI+8rKy`h#MUI<luK&Ip9y3
zS(7)irqwo;;b#Y%9Bg*5g@s!?@vDR1l(D}EDd9u4tujVV{#5>$xe)*VrEve2WScl!
z-*yr906QG)bkN*I3m3a2tnFeC*OWrSHJ4mfxqz!z0C)FQW89rv$2Cp0v1|H}y5f7f
zs3%h2#a=ENx@aIH)5w`vBXMRCja-SP+a|8*wVDb^nu)MOXvsibv~$tkHS2Y4bX8hw
z7j0Z~1xj1RWN#s+nQmtvaT0bo9aQ2SC1Khr?Bb%Ui|#IZxaj7Zn~>S|*;A#pJB3ZP
zQFY>8tLkfAIn~QWKNtO7^mehIi#{&;y4c^v0j~LG&5E}!Wx4_?f7Zn;3^LjSTnuE)
zU05y#xftwXh>HVV^M1{SOwD)o&5jp+^9poUY1>88MaqTanp=O_B~r*;PmC2$K=Yv!
z)`zr<jMCz{$cp4#6h!hu>fD<)nnf8)E_{(7wk^A;h=;<OSbmU;$l)*-!(BY%;#n4}
zixHG7-wt&#(#2R8<6Im@$;3owZsueIWRAHQ?c#73N4PlB#TXYyyI9dGag=NB+o?UV
zY8v;N@@1rbVlK>uB<yfF#2@40Y!~OaIM&5+F2=LYxH#FxG}pW&PH-{F#bg%~U7SF9
zeA8wJZVzxV#l=Z3rn>lcMAh^Y5@WSHh?R!}7QY%WyH0U&s*4$}dBZ);#py1lyEwxI
zyUk;pn$raQh{<B&-g3I4lQUhM<$|}XG3Pmc@oxNcU7Y9Q4%eJ6Ip4(vE^cyhvx}L^
zjoB_Pa&e)HS*ko7xj3t7TAjGq<=&FSB`z*?!MidT#APlncX6eQt5|ip8`;IRwGzL#
zPORg`3GV-KaSi>fmAH{|mkX@Bu5)p{Yjy{bvqjv%Sk<W_=Sa=T4|DGa?MS(WRgphB
zcX6w0HZ!wIGxXbC)9thA@we|3-s$2l7k5ixITH6MH+UaD74CC!zY@YbJsxoJpo@oO
zeAG45fQMOKwJB?k$Ron%b|&UBz1$fqd|XK56E2>N`8<)QTs$rEvd%9*$12K=wJzRt
z@w|%{T)e18z0k!Xk@>=xTr3cIS$KtJ%gn&VE|yC2ig1aL@>gAR4v6HnSn@i1C%IbY
z;w^GkLKn-~NZG^l&Ijcf`-)l`JGyBwWxl<qgnvjKkyXO?U3}nTwKzLrs<F=@@>$~|
zl6>OgQ^p~UH`Dmc#plfDG^V8Sg^RV!v9y`=GBdwa^jf5`&c#<QzIO4Ai|sD{k>}sK
z_}RrK7vD*3y^HT9|G~vZ5!RU>74r=)eo}AADt(?~3Xzdv?cMC+Hy2x7Y;p066n>Rg
z%nI&)VgCH?;tv;ps~WK1{!>l<FZMRg%?DO~>|=MaO<_gj#lJ3gxM-9%efv&!{_?F}
z+RXVAY3z|koiwV_KpM5urlRsgEw^UXPMa42t~)UZ3hSn^XWI1S<(X!_M+qZbKaB=y
z>?NNWXu~vkpn##62-He6PNRven#y6bv>DWB+niykTVn^+GL2Sgw3Y%r@0~^)@wRE~
zEz&NHE+XyI*hi#8diR@GM;SW_I}4+4%Jipe8r>x6E~KPK8vBa(6!sEwdQ2-m`^nfx
z*jKoJ8V88bwqF|k#RmunrZGrlu#mYyf7rzxNTbqgrBO*EWM-z3lq8kr9z~P?j?fi?
z+xAogGii8|(3oYp#5|wIAN&fCMp2|B^o5iMBIPuuK9ZoZCXKT@<Jh!Wb~`AIgVPwA
z#;`O-q;Y84+!-=FZRTKyq|Mz~to*G8n=xo)8i%EER2pN_7?sB8G>%B)$TWD9Fbi>Y
z`^4d@5_~OUM@m;_lF5~yG{&YeE{$VYcDyyTR)TkGaW$3y@8I;C-g5jsiR=Gq^FA_O
zc)W0eaH8;pG$x5m7E-fG%fv}(ESp~SKpGD+U1^-GteBR@8EMQ&;}jWB6`mI7(&=eT
z7msEF%)>L&I4_O!B|J-bw(uO`xoNDdZD#M(ydaH>)3`+PnQ2^@#w_vK!i$7aN5O&b
z(ljnh<EAujPUG@4u1MpWG_FnK$~3M@<Lb1Tb#U51Z@D=3sx~~Z&0d$r^=aIY#*Hk9
z?&j5rE6;rIV?SVaDKs)uf?LwKHI2K{xI2y8(zrd%^(EYy#w+!!7*9U!`z1P5Cm08E
z`fyL0gFEg^<Nh=_sbHRS<%dPUS8NV>b6S}=Je0=6X}p-m{50mMqCPETeSRd3M`J!W
zjmKjCcp6WLKN(Bri997_dw)jc+1U2EG@g(73(OGp)i1@8S40-1@v_K5;UeK;VYEKU
z_$-m}RpC-rV3F5_v^DR)X}rZslELvAEKlQYw(bnNXYfuM@21f<1Ma(9k;Z#zZq7he
z2G+L3$~3-CW0g9bRcXAR#s_JvPUFKgK4+Jn#+o!fO5<a8CTbo0Ud)Lfhhz3pESgU_
z1hC3!OkoGe3C~)VFZ=v7zDnbVbya+K=Iv*^HIy;rmuqG?N91pq+iWRme3!<0^>RO?
z@gvJfJX)RGkj77GY*E#UR*5&#PYp&tOSnn6Sx6_pr17ixZ)yA~!mzfc@w@ya|0DMN
zuQdKnV_O>ACE1b2KO*dG|7EVGOeG=bt$jPw*d+<Wjh1JTF|!VCXnCkvqE-gAGuR`8
zIvLc>V9yLVx#g6G_m`5?%a}I;K5a6npFx8R_L8JUEN>{%D1*i#O=5Xdk!Be*7h(6p
z>PmlFX3$C!&OKUZaK%_7<U`xNGv?KdPdkzJ8SE2FI*4=>b`o~Zpi6AqHDktfI_!}#
z_akw%N@mR9wQmMJGw78;Zy6~WAhMsZkFc+Bf8hbbe!~7j){TK8gM@>H^k+y02gbab
zHBj7+CB5rcr800b;GEgbfQt-AWRT7vlfj!@`N^P=K~X#_%w>=lVWCi=M28s+&0tst
z0rM(jhLTEV_f6eAsmGL35=vf^!9fw>L9op3yX%K%a7YFtGB`8?zSK}TdPf_njN(=z
zN)D5&QL)?6B8SI5utbhzN%0oA492kB`4?arDH)r=xR@U!a%=|2#S*@)GZhmucrb$*
zT@w>CI3Z(3qDdK?o56V*OlIB7V2Xs4PZK#wI5mTlML2%Z>XZylmGQI;&K9BY^bDqp
zpCOzP%g@Z<teB7QVw|5NBl-CmT#&)d8QhY=%nUBf;NlD}$(Ys1SsBdE;38I}9cC2c
zSjGz;S?xKhUYfyW8C=dPngKsJQoadhyE|WDsCi`u{D^s#>KpUqY9;@g46YTqPI$fW
z2H}mun}obLnoe%b;I<6z&fuO5ZqMM34DQU}t_*ltG*{2K0LAq#*0g2q6I?!J^zLOO
z8RrZhU@B^vw=iBB$<cu;RD2J5va#9p@{kJgVOB8R8aF3{N5mf$&J{i;jP8hgGJ|<+
z@<r4u;;9UtW=7>PGmmF7cs7HTS**(9xeT7qpudL!9$t|DD>8U5gBLTH&m7K}IV7Jq
zGguJwmor!x^F<<yGk8U0iSX6fc4-E$iN7v<LwMdqGvVa3Ovbl_%QJXegz|UTM~QRq
zJ&h|fSd~FX51l-`pTP$i{F1@18LZCW!wi1PU}FYrGWaNi&olTUgO8PpPlcZd+05A@
zJ`?91^^tLH2J15TDuXZ8uKCK$M!^#KI)n8Yd@tcQ8GI{O-w8QrzTeZ7+7cvwkc6}S
zA2a4%Z-bD30QotCO>)bTjvj6n-;&wA&_uTk{kIIZvRn4Bhlk(UB-LT=WU3R1KgIvf
z;4gN$>Nz=Mp+DOs-=4ugB3n2LWI)`JG1G6pBk#%};h7G$$^$&q@^<%`l(6$;^7-yr
z$3tBY%{(;su&0N59vXRQ?4iDg1|AxE=9&d=2BR`lx|e76i!x}wS#V0+#53I#i=(M$
z)<DSl8J)%!9$I?Xo5~(qd1&pK3e$$(n!k0J^UHj>W2)PFW}w-SO0@T|kB1H(*w!xA
z4VHZ4KAu0X>29#IXF7I1y*zXg?;1<GdFU?QBbMyzp{F=w8@cK&<9;6c#5#RN_V;i=
zEa~U%-Vr^}!ypfLWN~K}gFOuKFe8gIvpA5N9$xe?--E^EcsSR?c^;A;QXY=>FxG?P
z!DWVcILJfVL&k&WA*(E656S(61Gym2G<qmaG<$AYMg^7&`*{yV3KbdO+daz);<%MP
zb5A4F5=uhOY1qLYhAPfSF%^Ro!xYL$55ql-(y_QhJdE(nrh-FR1d@>R-S#jlco^;B
za1Td#W=e3RXRcphLGa-!1mEw7V?47hmT_apHO|8^9!~Z!&BL)Cj`MJWhe@94OUEl*
zPB4yFLMC|lenMiRtVrmbRU+EhFqvVg0!;DD5#W<NOcmjWS3Z=S;^9;eXL~ru!)YE)
z_waO6^EW_xGTp;jo_U#NY|l`fXLvYMAyUH3+?p_9u}X7l$Mrp~FP-n<0uT3ixYxr>
z4;Om4&cpQ{W_g(H;UW(gd%Q!&^!co57aU!6iSmm3Os?>7sS<UWXNIuL8IxLx=($oM
zUM0L*xq6L<Yvqt>WbW~U_zkkX(ZfwD9meXV+KHPz^M&Ph72hqMnWx?A;Wp1Se~#32
z%Yg2X?VWOdm-yXrao@-M^zgWcCp<jh;X#kX5FYdJ8Rv3}Dysxr^ur$Ju+-?SJUP=z
zL=T%AukvP~=G0g!@uY`&9-d<MdS+6}7|wP~%Vkco6Q=PQmNM7>Jv`^(dG`MvJ|1c0
zL_YJGA`c5Zw8^4v7B72P=;1pL>pd*;u$U?J@P>z1JS_3>s)wZtg=NJ4koAiGyr$^!
zDi5>Jok+atVVQ?7Bz#Nwz7n-u{A~~Kcz9QwZdZC(p_;(T@SX^LSQSgiKk%^H!-pQ$
zsGfZ8;UmVMdFAOvm1q4#K8@4P_c*?mvL+Cty2Q*}s|bAQVI9?2OI4G<_VA6OK_lDI
zw@j(B?t2NhdD!mZ2M<4b*uW~`nOWKI@@FG`5cyecbCZY7>|vA@TO?t+SYv;c&Tqo4
zLKX_ki};6!KPCAqmj5k6TQ;13JnZtgv(PlFe?9C_>)RPu9`+kmSs;r>Sv1a~7P+?F
z?vXW}YVGXqzNJnUb+gzri+Wk?l{MXReIZE$5pIWIEuxW6LrG|)4^6UYDL<QL(M*0a
z1Di|ILP(wHwXv1LYMtHPzwMnxyDWxfF+7X*S?rUAn?*W{4q0@}qHh-aXVEDO_CGzc
z*f)#LS<{bo$)al(-LkvCU$6pmiK%<m3`5jpRqvU_Q+-S|W9{mdHKTBE;eJ{45#bM&
zC}h?hkcFif_LKAeSq#WxU>1X-XtV#%Vo27sg#)wr`*`!&i%6gO{Eypm%g~cqq+;%f
zFo;YR9?NAyBC8x@gJomC?)XG5i+mOZ1ym6hvnXZZ$9W#ad2TX1yZb)>klspuP!<Qr
z!sx31p^~#i4#{Ff7L&4=oW-G8jLhQrtT{Nz%we<-%VJa(qZQ(@!o#yTB8wxl<{fHG
z7Ds1sl;r$ALdjV1aakOb#agujBIWdo<T%-qkI#boBoi21t;9qn{{$fmh?zsH6SJ6_
z#mRCqC5w|(Ribvs@7>d~rY|~Owx?uqDhFI1{+f_DO%mo9^I>`xXZ$By&dTC!<{@iW
z7UzhZCp=de?Fu+Qiwk6&nZ;!y)W1+<mT<Q4BH_itON5tZdD~$X58_e(a^|*fpT1I7
zS7mW^7T08PZ5Fp=ajS&aWpTX-^?UOJllYCon^^5d=m}#*yiLa2g-_S2iZ-tF8lJc-
zi@URULutGxi+i(Jk~JSz?#tqSk%htsvUo(~!7Luif)lETWt=0VkxuxP>d`FbX7N}S
zk8?gRD++1F=Lr^f7W3FrB!5QubQV;IoIm>?ubvlwLHJ@8^Qo4_0`~lpL}Aetpa1#4
zNLGu9B9ZN@vHsF5UW@tbSum673Cs7*ES6>QmXg0bi+4pRe_Q08EKh)%YOq4a_hQ>#
zR^t6EK42@$;#XC<)meO&#pmK53fBlf5`HZFMEGeI|28#W9{GGB$v48a!Y^5?MQHn#
z$k(c+k^Z+?d>7lU&*J--{~+?CaD(tC;YQ)l!cD@>!Yx8p{@=3L%Bg1FbY;J@j=5ET
zWbr4vM04*Y{$dxz0?pyE9JXb#on2xMJ#+YnNnppDL-QPVWU(`gIyuzMVON%amoZ)a
z9>S`enRU=;o*ZiBP&;Q@T=Y;#Lfliz4TUt;6R9t3ki%ZFJo2hh4vljrwoP(qD*wqN
zs}?!5%%MXL9dl@vLu)x~mqVM_2k!K1D^4eS%M(VReH_Vs6gOIRl1>j{=N!6-bj_ig
z2*aYQ?lCt>Qv`bD&^w3Yau}b(emV5Xp`1e{hrT)NpF=)}LJkMy&@Tro2Rn!UISk05
zTK){oVUWmyabyN7GD8$e`X6N!F(SzvQgH;F9NZjoGNy&u*prN$d$BQ!Cw*WV$%{Go
z3WdBRoyhYb7KU`5!^j*C%b72d2jwtA{vVvfP?2H6;c>nlB4ZQ^@lg30g*7UNBc(Q4
zI)@975HdfhbCjYwCWoVQ7%P5^aGa0|?BS0Uk6xLN&tXCiH{@_*4ij@YA%~ecT$sb8
z946;*at_mSI5Bp6k^-6{WE!W&gpoWYhf{MnPm<GwGlZw-F#SLIc1Fz4%;794oSnlt
zIh-pVRS8Bi%E0p_q~{kX$rR3#<nkP@$YFMDdr=M-=Wt05m&TII;+&@w`gvszS1H`<
zbGSOziGsK$hifHapw}sx)Q@uhrW|h0;l3R1&*7FFZq4D&*zIjO+#!CuF!CyLNVj+8
zaJS_5#QOKf@sAStfaDDE!5kjS;o%(S#F~%h@Q8R6^T^M~b9f?$z4K_7$CEkC%i-M|
zR^;$h4o^#YaSqSKe!d{`tnfLd=y`E^#SmZ2VSWxTNxne1Fo%~#XdC_PZxLIQexCSB
z4ol?r)f|?IFm+3rlR3ODCvW8NX6$*CX$<A9SaW#}Z^!(dSna(WR_3ssU0)8Xa(F+7
zpK{ok!v|9MJcloGSS|ix4r@d{%Hfk7K2;umtZ*61XDZMrml$)BwK;s5!?$u0MP?nH
zNG;07uVwX(Fp_+i!}=V)&*6u-fHvgtBXc`?(@~B^nm^~TIfpHByXilE{*uG5Is7Jh
zR1LO@|0VoAhd*-oGmdH$TgL5g*=|!>DEwE(J@TlNH~svM9CmUD$Z_qGzdr}~sAHrR
zm6_ODl2BM%`jphoW6wOA<<UHkda><ZdDItg5KHL1VIGZSY%FXdq@2Drm2V_`T1eh1
zkCq~oF!a_jZzIw+)^DH3K6zB~2=nNWN5?#pd8G2_lt<@0dgrm9^t<HIJ@%n%9^J&F
zpy_`P8TS?T%%fLq%W#>%J~H+f_7(0gJV4klzx!QyKpq407?j6g$*c1ilE;DK3@8dK
z^3aly;o2e;IwEc!=~$AHx3nrs;^mReBbP^B#)9yF@uwPnE9K!!9tbHZ%M+^A<Z)0Q
z$LBF2kAw3Vn#ZU-MoVp&aAY3CrF=;2c0?YBiqrEbpu=P&KRnhsM&yV*j?CkzJjUd4
zbX+cDW1T2&<7ABZv3VRP<9K1@`NTX<$m6s;PS0af9+Us0e_|dd=P^x^DS4cf$JE$1
z^6->APK`?;@-322mm2ed!ZTt%BX-LP;aPd}x_WjV=ZKJ>D{@{Q=ZkO$5rr4#F)NQ<
zdHz}kvsntA6A$F^U>+Ccad94(<Z&sh8T;NmF3aQcyjiQfRd_`n*NISaWgb`MakY%s
z<Z-Q>@Y*Okq%FzyvbrIU8}qm+kDK$jMG`J-@}UAB5-Q&&`Rzg)?-03D_}3h>C-ZK3
zeor3vicoT29{0zbmy14>$HRGin#X5(%*o@CJeK6Kkas}x(+?{xf8Z#bD|{@E$3-ZA
zLgdLj=7~Hdd^)y$M&w!H0B-(_<uBy%V$A2~@lwneh`cOZC|s1sVi7ujB@ZG4eKn7z
ztXGnA!v8@Yujlbb9&hHcERT2dSdqtDc`VQ4?L6Men?1&yVDRoZo)o)(Mb);^RkL^q
zlz;xsV`Uzz@_3&<H%VOIr;3|_`RRloeYkOy0}yw5ug>GcJl5p#Q63-X@d;a8^8~lI
z@gojDadIV=-_yBUk4LImF+R`Z>pZ?uRrx}=R`{iGo$#wXJ^<!&*(YyaIe*RLw>-Yf
zW4(;u=dnrT2O$-H6xksBDUXeL{LH4Rx4-DklscR9*pkOD(usu8Yv$HG{>tNT$$!t|
z4-xABnFqJWlWdD6|K_nh=Ksil+U}5KXDsJAi>d-pK+l4itDDZhfO-Y9N=#l`!aWM8
z6Wi7m*;B{`RhCr!f_VvTP{3XVG%TP|0gWZ;C~P8ZQ$SOZX2Rw|x@u8COYv61*0G%H
zu5HEljwS61XfM7`Ea_0-rD`Sud^$<kxqvRQZPx<2iFc1BJqp-YJbH)anrg2CdKa)?
z0euSSTfi*^+*-i?1sqVoAq9*mpdWLFUlt0m3g}<J02v1sFsOjR1+z{?+aU!rq>?kc
zXgp9lG};9u3n&%fOOh&}STNHbr(l-U+yc@CWF*NI%qJL6YFQx_=v7{Ft`ioN+YBZ8
zW)T#$;8Q?FaiBbuCY>Ba&Da(F<a4k*99qCI5$X&V;a8_a3m93zDFvKbz+o)$0>&0F
zu7J@69A3bf0*)@=2>Hfvk5n8OnWN;KOG)&K$y_hO2p?0xu?0+(?Qy~h1+&^SUJj3!
zB+9Xg1)RXL<M-bJCKqs`IIX5AXXx!oENh)o;kT_QS5GcrntX_I=ClG%FW^#1rVGz5
z;2e=N3Yei>r9Wp%a+WX(`dsDM>;le{@caTU5Sb|_7b*fQBf6a>IfJ{XV7@F|EaN3g
z3!}t5zpQ}E3y8ifTv5Q41zc6Y)l$2ufNKi4wtyRCq;K@+I(dG5EQ#WCW1QrhC8v<j
zZ3Wz3z?%guV?h^iX93R^@LU0R6>zuI<`r;{YTctU-YdLMcz*#8h&(8qBYdcUhee{8
z5Fe3|v6>sp9}{_8_=NDuxQ0Jfz|)d2ZqJA?`E>hy0WZk7SoosSvZ#Rh%FLG}Tp)Z|
zxKK!kj6jt9R|;5Cz^iijhHRG#sqmV}>v8@>PTneDc>zBau(5!*3wWo1PYU={n(qof
zP@Gp3@Scn;%9RDI5`SMve;9$);vWjv2tN{jER14E&Cd$>s(`Nx_*@n83#DtV>cE$A
zO;}d|zY(xXd?Q<iNaw_F3;3>p^%8zxz>kX94>CsnZ-~R9^3Mfql5wlN-Ta?aZ;_K<
zWczCYzllVt_+4s$6!2#Of5mbX@pl2+3fNx2KLzY6AW_7>vF(ok_`EZYOjXfzWqcTu
z$Y)}$B5D`0M-g?3rVr#(S0su&mFpMLpopM^atV7C(XfbA5l#_}ifCL!hax%_O~YwY
zMC+m%S(+9xiA|pS|3#V$TL@bg(MsgT0aa9JQ#4=J__P(-Ti8z6zKCu-2q5fOo#<3F
zJtt>A{fp>aM3<tO)pRYQj|h1;k?uwG5ZPDQQ`k$`TezPvn$pl!Um5oo9w6)|<TjfD
z#ogbU2Np3%e6Vnc@W9x%TEr6C!er6hkHH*vi`+(z-X-uFRL<)%MT{%rm?FF)vdpm}
z^3oqIEC>%47K<o}_`*O~7FLAxJQS%B9>o0{+TA)dwjCxiTzH6Zgz(TJMvBmf!$d|2
z>HKh!BZNl^sdJRb7~#=Hj1`H-reljZjwMyZf+EHjaeNWC7jZ`s6N;Ev#05pnEaC)~
zbrC1W^=h)nNkyC}GDWx|ZF-5Ru?~&Xia4c+Q;RsQh_j10r-;*K8|@64UNl<>=;RCu
zXB2U!$XUY3H`-G9+{l&i{QuZqSj4O%t}WuaB4$f|x$vSQE-vDgp(Z|;NJ4UH5toTa
zU$H5<qKGRcxk`9-5!Z;&As?z;U&IYX+*HKPvBMi<1v<Y){MI6FE1K`-k++dU8t*LP
zt|A^Q;_)KxF5;dd=18B@xqFLd!g;^&z9NtBC1y`dJRtHQ6Ee|E2p=lqVd>MBVLejB
zqeVm?b7`DgM3g^I6!Byc&r5S2D^C&6ia#x6G@cP*+@k0`7iUXke4&UJi<n<DpZMu*
zgfADdu!v1XY%XF^5sQm>zlaa$P+q-J#G6GdDdN>4mKO0^5wA<m$;tm7wr+lsTUNwd
zvRYZh@*;Sj&)YIa->n$jJ2Jjo<fWR46-B%!W8{{$t7N3r>LNZY;<F+?mt+mS68T6-
zO@4#>q=-+8=IjiOd`P}1VyzT@D&or`))ldy$&}7llJnNGuSLEQep|$MBGL3<DNp_u
z(QaB5FO-P9{gJhuJ6qVI^+|nW5kE_xp;Lj+mLh&BqG<`uO8B*i-`KB~Oh3G}h~JCY
zOZ<-_{wyL<LRAU3Oi292^5Pd>_WvT}+ltsO{!h^;@JDhK^4U?uPRVykZmCunEMbq5
z$-r7A;}xIUB~VUMM<LcNVb2okl~BKg29hvJQ4)yJ_wk0Yoc_?ZaS2WSBWYejixN7P
z(5Zx$CA2DGAKA7pp-l<x#TTELSaf27*tUedC21#|#c#ML8b660N~Y%@GsYM@m(Znz
z?j`gnp=$}<q|B_Q0^`8SL!Es~=ve}JuhQ=A3iDOgwBq~YekJrNp>N5&$nddB*kAkr
zVLxI2*mi)(z!C<D3>FR%9w?*_)g|+>jKnS>Swbq7XG(Bl?uw*^rBMk_BrD7b={#RT
zA?C#rO5(mS^1o6-Si)B&d|g6K2?v#MS_!9@a4;RR;gn1@8!A3bNa1jiLrNGCOAZy`
z4`&Z6VN?mDOE|m)PVDLSh!T!eR!=M8s1nAMaBK<3m2h+kV@nuU!ZB3Vkvg7-<%>2q
zZt=yOFVP&n$Cq$?36mLz5+;-|v4j&!n8do;%Pes;I=ZTT>%^Qs=5|NE3vjAGrG%48
zm|DWgiZ(a$@wJ`rm}7Xc;Sp7vVb0l|Qo^Yvv(0{c7qiQep-eBC5&4D^ZY<%95@wWe
zrkr0PJgbDWOE^b-w(wjblXhMS=g0hl5@yEyLXlZQUYSVEi%Pgy#!F(IOGPd#;qq9*
zou606{HhYJ7QZHzTwB6*;@8KLgIXkRQp}$%;kgoSX10`YYYDfN@Nfxpq;`7=cS+|C
z8SfNw>6lTvyM%jWb+7Ot;eEpUOL(A!2gO+y%pC4hC34R8h=h-o@VLmMCGfPu+>$xD
z&l%biB|KTe(<MAp!n_imDw$p1Jo3gPy(|c>lKrg{(A<N{EvDRq`h3Z3VtI#ZCA?6=
zizUowwJ%{&35!cuP{PY4bH08dz15+07CMc*m!8+hy;8!G65c4`%@STMVQC4kmGFAW
zoKj)2p4KNZ?6@lK#^-ic)>s~JTUNqbB`h!DZPudd#Qi~4dWb1~?mP^-B(`ghE{!Wn
zSi^?E%|9iqEMZj%@0YN;gb!IudnZ0%R>Lgv@GuMa4U#Y{ZsX^@JzI9|`lw{~Mt&^(
zMEI%jvl2cRq3stXtQG%KxK7xdxAbuSU&6QS+<dh3%?Q4fR{*gQaeB<5kbQUwzm@QV
zj6Vt~-%!F&;v0oO3pWWj3%3Y=5wbnf33FqsT5FY$-$ni?;ZJtj;=6>@`CDY0aJ%py
z;lIKi!kt2H`c3$zuZR|x;G>q0+LAOC?%|`3NL?QdM5w%{k9sk$FT!=Cy+j%c8wnfx
zXd=S(tN*QQHIt;duy?0KD<7?WT<7C@A8jP;?4yg1w&HvHXeZKM*g?3DZ+`5~Xz=Oi
zqmzW>{0)6qAKiQ$>EkFL-F@_+m5-v2eSP%wG04YY-&BuYJ_d;N7E-dGNFN`4ee5rO
zfRFyZS!wC#n_iSUJRHHTyb&Mho5c;*f69mWNcnJl9O$E3ZY>|&?8ovN&mq7!JFk*H
z_&W?vNL(Lj-yHYO_*mG*te^169-AjOFL^$)zFAn#(I17F_s#te^rz&*_c7GRFdu<}
zsQ3tdb9+hIHyfXLhP1}VH?0!~`8e3eolUE*Nthp3F?vKsX1M&Mx1)U=B0fTRsBolj
z##7oJ=3|s^UfiOuw}&$bS@Bv(Zc=4T#`ri|AztERtdDU%PW5q`k7Ils>tlkCi9U|=
zF<zN=ypqF<D0z^a9y05gV<-5SBp*)k&5HVDMSw9p(Z>`YC;6DF5U2U3?VRl6W9=@c
zTb>8uI}{1i%bm%m`<U+I0v|JdGx<Nm#|$55iZjHs<Ovf+SH!bb3g`GZ*T;FRAuUYK
zoUfo+IxN-;ea!N4k&lag@Y?y=%;bsY1&y}zbyqD%sL74Z_E*O0QpN2uAD8>M!pD^=
zk?5A)t7LVxZw63mUgP6hRR)$LE5i-4y<L&KQT!(1&B9xRw+e3)&ehhJJ6NDT?(%Ur
z<0iLE?>#;q62Dh?AG;kN4~Rb~<PlD)@!=Mlhb1AOBl3vwQ6F;|Hy@AtctVnSKAwy<
zx$P?Q;i*_cf9S(AKAw#w&oMK#Gyg>&^L;d(ie^*sl8*&64#!Kw@iHs9k9jqCss@XE
zEM|48;K&MI@v+3mVF5-3c-6;JA6wa>sot{le9gz}KHl*0CY!UJ_|C^NA8)C}t?{wk
z$J@SHB6#1&J3ij^|9|hw3g1kUR|?+~@<`w+5q=)xvej&US@5yi2g!%RLz)`lN33Q(
zKJoFXk1u_!^YNLF&wYI1W39sC&2nG#GUxiE*$zhy9>Ms^$JcChKE5U4VtDhaiA~KI
z$5D(Y^*D9m5VqdO_db5`@uQDTJ~sQ<;NvGB8-4uDuynv=+BP%7a#-Z9S6;c6tDV@w
z>gwZHAHT7T^!<XvH%D{cN=Hrl&$-qgKK}I4H9)rjf2k(#5ui?hzs0u+w+sIfvUUF}
zvO~C2xXVW(*uADvB?4hBVQnD~)iR!S12hXvlVs<xXMlPE>IY~LV6Om;12hT1BPx&A
zscIOYQGoL_ywVl_TJms1ywS|$M$^Egm-)l8YaXCQfR+JT1!x^$p8y>Kv<c8Qz}^Ac
z1y~Prs+7YhhkM?6HG>!O1ZL=GBjQbi9RqX<&^bVt0PU}=n%%`*5x`si7PLxS)!Ce>
z<eA*=itWGvgG71=_YKffgbC>tpm)so3(!ZruW<iZet<|nVSnKOA%8kHIKU9*JU<u)
zI505#ht0b~pr2O;cyL^mX?;>o3K?Q5fD?09Bpo0l;>Gf;NKTj+atta4X4onP@B;+m
z2MNnUT2%ss5sxM8X%7xCG{7)P4vFQ%MOYjoL=KIOBV#f;z~KSzF5{jujtERcdosYh
z07nKmD!`ZkM+fH4kcR_|4KOai)d8*va7=(>16&f|(g4RXH&`D6oF3r#025en0VW0J
zrE(B2e~Sr?lLMS69rCyJ$~i^0CkdwtX?3#5G~p=$PL1W6DOJ-0oFU@{tc~(yMu0P!
zt5d4ZlAOY`1Dq4!TnXu0eNO%ZoX?zLku^))%kEu4&y@a!0T`260cHodD8R)MGM-Uv
ziI)YqJirwJu4HNIO^3Cb9m0UIRXja<6{}@$(_W}~t+Mpi0JjCWPW*Zy%j<>!H^%%X
zk(&eD5=%IC+#cYL0QUyCFTkAv?qZ1qxQF$jc7hjb5jmCR5im}z=V=yke}D&A>jFH)
z2G~4tkrt)d3$azQ;hVF56BBdPoF57BXn?r^9t-ezfF}ZTrw1n_yvd~X#42tE<}C-y
z+9gu0s-6n)w4!uZ8P6~W0y9y(vW({fJRg{gBQj;Y5a30&<uY29F`u<1z#jqr46q=;
z%K<(M@VR_g7~u5)Zv<v)u}HW$z$*cku>TLRRFc<N8MsSISEI9j4iSGdz%to>7~rh{
z%LBYG52^V!>tTQu0p1Brx6d)1DSa=%O8K*jxtBI)Rie!{T%aJ~OyGk6tEJB~7p&WB
z0(>M7KMwGT<k7(WDWj*85%ifYmlLfo0;~<pjOEJ!KLq$Oz`6im1^7C^H}YY<LZtq;
z%q#u^Ov;?Aa20~R_xDuRw+||82(Tr<F9CiEura{T0X9i_Gy6k+>rb1{D~u{Nxq`$w
z4+H&GiTW+T)&Re&TbLvTE*VknFLwJZ_c9unu`R&%0JY1e$Kdl%z|%V>fBp@yL-E`h
zV3$(LPvMkPha)4Os<H_kWz>>BGm}%(J<6z4MqNqvETdl8tfJ6W{jwP~SelGsgEICi
zo04r<Hb2Iqgbxd-N!b(uLt*u6D$kqApXO!r4V2&9iLJ_LUB>=p98gA^GTN5Wv5ZcN
z{N7B9ew4thXjevix!p(DLC7z;M>~nmQtMI1zKT+pGP=sPn~<sNUN$oXlAiLmx3HIN
z$@eQ`xN@?OBz<Mey2mv3E2DoI1IidEA?JS4c6!#3L1oxwB+D3FHe=$DG7c=88z~t|
zwUkLL5eChiVXdZGstkv&x+dJRIk=ZDn+ng=EvTyU%E&Sg%gC2;I6GdsEtF9yBNQ(R
zOJ(?F{Hg=~0fT1RSvOiGhzzl&j6<b%knrF#hKdX;;}DVILh468jF9uWwW~&!ahUih
zDY(0ghofWLBg;6djI(4lri`P@IH`=OWsEIjTp3d&Kc<Xh%a~9GePc|B$0?rU%Q!xc
zB;`@K6XoQDGA7B2^2w5%D2$RrA5Jb~S{Y|Zc#1R`tJBLkHFkAcoE6hWqO6!9+cW<o
zIlGK=$~ag4FszwnoF|?0CAmO6ir9r^%qnAc85fmtX&INr@wvE+OX9F1P2%N}ToLOq
zbjJBA8Luwmnli2}<2qLLGHxm3`Z8`P<Hj;>D&vu`iW^t%d7_GaI4cGlI5(g0Zx^?g
zaa$R;mvIMcdzG2Yu>NzC!<}p(O%gmn%7>Fx-gv`QaD2bFjQh&?oAEE>{xTjY<7-Bq
z+dkP9??^mS#-obNLuEW%#+<Ub?~XkQd;1-|5_8MAP`i?rl<`;@uXCA5_(T~`mN8G9
z!k5Z;s*I;)e1^S!884RcEQf$HmUC_V=*07~ia3pQGGA6C_4um`*6lK0j(uBL#v*ZQ
zE|%IW>{6umY8gw}PHD>rriXc>j5o{pLhWmr+UANf-YerRIxORDHR^Yn16=%<?f-gL
zo;_Jv#;P(tVO@0+@0amG86U}?)n$BG2A5muKOg2TJFzwDH+X;A$MS~_mR6t2|IZ}(
zTu33eJ*<^KUzW}2uuh!vugahmqy0@8->Regu8d!l`RmL0zKkEJP{t;9k8-j>A#N<=
zC+4=s7hdAQnEYG@FHzy-VGGOA+I`#4eD2gj;#c|hn~<fywT$1z|A-}jmho52Sx>f?
z@lP2oDrUg?w~QTSG}vZ>*jY9+I{MJCf?Z`KDyXUe71XU@&kAZ)P`iRXDyUNdw?Fay
zrFAWHrjLJ>;*^7voRQ5F^(v@eL4ykRs+ijmr>7Il3ij}PVdNqq-(q<6VxtNgSJ0$_
zrWG`+pm_zH%umtGe_-9+uTi`Mfoq8^D`-_g>k8UbkgFiC2)7k>74BU@y9(OV6WwaK
zkAxkB9fh5QOlD`1E<!4ItDt)YJu29@f<Y4Y6!sHRzgGpl$t&n1$^NmtFXODRsB?gX
zH1-!6ARHJAsW7;LAu=9VL8=0$f@&Epp)I6ZQY1=(EA9!?!i<oiWJMyif_O~@2USoM
zFA05NAS??jLWUBGM9vQuKU6rhf?=`F@CptQA0dpC>2{=yhY3dsM+*;+bN;9b#xQ{)
z+z>}sFt&na6}(l!xC)M`;MIz$SI1Ux9N+HwMUs`IYhru_Q!6-PP}T7jOsHUD1t(N6
zNt&FO@->!CCVC&7Ea8d5DHWU~LJ!AxF{9_n6-=w(lnPF*;Is-Zs^H=ZPOq35&UqD_
zU%_<NkgCKP%zUk4&8Xl^*`6glTX>G}Tw%1jMdugDIJ072-*~whB^OFEtAg3`jTM`I
zUQ#jZIoDKhZ3UM~ftr_zTwcKy6<o=xTRU-;Bv%XBbziD`Hm<AS`U>u;;9kjZsNm)b
zZmHnL3T~1sdc}tUG2d>j;I0bpuHd!`Zm-}DIic;HTsF}y1ksWsH94(fTjRwYB%Dj|
z`kMPHX62c}2P$~5f`=-2SY<K4f;l2j2p_57(F*2P@R(Blcm<=IR5AHOCz_XQa(ez`
z1@kI+s)DC0ct)<cC65ndLS(o3tc1^1@VsL9f{ZT;|F<jer3w~ELJwcAU}4M`Rj@eX
zv1AFWR#%h!rAoqU71OJ~t~&5W1#hx5sY=uyynAV7c?EB?j|$Bj**g`yTft7nVMPV+
zRq$B_pI5L_KCs|Es9;qE@3XGzpLd`BlX&E~#Oew@tYA$AA64*i1)tDibz<64RlF3J
zy&PRN8=Ux*w%V}4RhKU+SX;s73bs`6Wd-Xh__<<6%&#i=x`OX3_@RPtD)_d7?^sVN
z=+?zt81e}>QS<Xh;{?B7umk5Q@*gYMP{B_XY^<1@pxEg6f#cqP6Z{`BU%vPul1}LD
zCicCp60^G|eyQMBRl>h2_^pDi75q`bpB4PhX4u#)G4cA)OSDyn%b|QF=a05ovHy-+
z!8VcY!hb6GH<s_Hn6+yrbC>ch5t?>X6#^kH)@vh;wL;XEoSe#aLevex|M2b^qE(32
zp=smwLevk@AOt@!u`M&ndxdBinh~v0XnF%CuyKec@~5e=nXq~6bBhoyW6t5bO=#vM
z9YgQ~P1_KAhiDg~eTaQRbO_B@!(8Gk2@9*-)y#!f9$}`MokDaD(IrIJ5dA|82+=J>
z_Ygfo>>HXN@bNc}oMuPZlM+TOL@yEY-qIPxg*cu92*JxF`-a#*1b?%8K!|=J*q~@j
zO<rv=FvOq`c8FwX>Li;UU-SkuPxuND;y?=7{|HH}5Fc(gYsg#cCq}MI^l=iY5DaBr
z>qI(4Cd5rO<~N#Nh-`=nAtr{%g~*5Ig<@#PA1PK9LU0o3hbV@oXY1d$suaTE7AX!)
z+^bB@5S0)i^Dx9gAr20~HCt2J+L}?D|Iy&rRZfT4#}1RX!$Taxq=_FXWLSrW7#Z`!
zLX3*}=n#jCA0cF7sm$jn8OI2Z4l!0_T!>?sd*b7T)I3fka(FzGImP&JLWoHrX0oh9
zOlIaYN@J_|ZDmS`lR})Q`Y<)b$s*H3Obc;Jh*LwH7UG<4RSotvw^*}HahkNCR@LdO
ze*6z(6Vo;EIU~f3xJI2B;;fjTEpkqXb7KkTd*`!Kh2|S2Yb<?Zrp*d5JH)P#JsmD$
za|rQih|fY?!a5mZQHaHC1tBgE@eKQ)5Lbk_GQ>SBtPod)xSEZKE1aPjO|A)XbBJ3c
zxi-XgA+8T`gUazH32zjqKHq}*knp)RH2Vqf2yvTqD7jr~RJb!VL%?0~oGFc_sa#kf
zzfXyJEX4gG9tiPZh=)QvD&fPzN8}qd=Y-~6n01LhlgyPZ8#t{V7k@(jKN(_Ph^G`8
zT0I@&z9we#Jk!PK(cyEfnM^)+frfZN4qp_`XM@$=-IthrC5rfRoR)=h!k}LXu_VO1
zAy$NVHN?^oZ-jVLwhZny>AxPkq7Tc&Nf_c=;>(pSZ;Mm-PPn^IdoRSw5TD2^%9+wt
z(s^Ie`yj+>wn}jZ^s!v6QJg;#r!cy0m=%@v_H#C<5I=|56k=_NFGGA2;#)ai7vd{6
z=eTsD#4>3N^t%x2mHhAH=tZ_a$oQj>nj1p=6k_9lGK#{@vfUxv65^K-zlQit#=nJI
zL;R^gf0vOy{}JaZo&OaJw}sd){!fU1MWVPddL%m~iSnna2B^V^8XQ`KS~aL$gMKyW
zUxPhrP^Si+YS6g`b*aP7yar7~_N+lYk@_`gP=me18`hvv&F)?Ck<U@8o7SM26!xw`
z^BS~}PHSOH$y*8Og!(M6HZn4}wl%w}5P7>Aw3l%o*>(_ij5VWxy40Xs4Z7E$t2CpO
z_NXyECw(}e2K&~aXAOGQnAt_28q>}87UxuLzZ$cdf%3lcbAMsf#ORj(52(Sw8YF9w
zs==Td46cE#P=>_*Gq?l)kF2wRmYaCr|Gl3UhYHXZmlpQ|#Y?fG-K=CKn~m(=(o)>r
zDei8?zPJ>3cQ5Yl?yiOZlXseXF8|*-Iq!Mqo#&OAOeV6~iCL{>a&40?F(*eCSl^W8
z0%Hth*K#@q6xgu9Mg=x5u!XX+s!a-vEwHIMcMWk)HY>1sAJ587wOg5HoJloSObuhN
zK(UaW*-Pfco$<x5Skce>wqBr7V3z{B76=M7&B??9p@ELcR)NU)t|#LHiRn|5ZIdpO
z9^0*=jW4jZ=_i<US#4uj^TVV9+ZNca!1e`pD6n(R+0k;_DR<(0x`yvoV0X>Q1&%DR
zM}a-fWPf9duvdY-&2}G?`<h<n`}G+K2NXE4z(GcsY~}|SIHbU#hDAQifcn#Q_~Cg`
zRYw^<wZLfwjxKOafn!ahb{%IxIUH}EPbhF=fs+iMT;P<v-<(fL?UB=S6BT8cZH4U9
zRA&`9yTCbx?Ar2w1uiadZXvslno{7r0_PXFpumL%E-Iik$wv<C(vOn*9Z*;|*WIJC
zD_9v`QsA0GcGrJtfy)Y9Uf_xXR~5Lrz?B7l`YpSW*RT1L?RRbcLrO1e>0WH`h_0zN
zT9n?k1+Fu!14MTvHx{_5!2LxYC~|XwTMCptDjv5MxJ?I?$Fg3w>euZBew6<LcPQrq
zcNMt1z-I;C&?jK@<8OiY3cO$7KDjFJg86?SkNB8@2Mau8;9--Gn0(Zvd&ge6Jzn4m
z(>!VNsRB<Mm{#Cf1L8cRz1+^0<bAHd^QP3l`Siy(RlR7(`%C#z|8jv>48LkphyQB@
zUN`(kfj14jRp6bx_H6@trv0t~J$sjldg+4#A6p>d4{c)ksK8&lbgQVKpA`5s&rMgk
zpBMO|z?bIXI~ylo75KWqH+htAwTta7Q0M=9<7lM)U_fK$XH8a`b-ipJ)A0DUz`q5p
z`O9yG?5i%n7x<&VpGu&>^aB6L?ewnO=g(Fv{abrSGl1s9VO`ty@0Lc_Ji0*b_L$Af
zMw+7F(a+1~%>E_?W->6d$1J&KRu3&suBzER=8(QSyBO1NM!G7KaxRYn9s@lFiRLlC
z#{wR6o9(<FLp<iOSbC}Nlm1;pJ%)MNHAA4#UuXB8^Lgmk+xhgSfu?;`d5rK_!ee2N
zMLZVuvd^B*@lEzwPmy)wvzUke0Jyl9{by~sXYcCR%cz=Nm-JZ5V`&Sg+pDAX7K*J0
ztFJ#VXZbAev4V|W?Wq+#R`Rlc5Uk~~vX`wKJEYUC9$v-FM|!O4Wp_QgA6(62b&pXV
zYnYQYz3g{w-J7TtdS0PD{?$KSYkREYv98BHda=i2BLnMsjP_XH@EDH`3{0KBOB`(i
z8+&Zxv8BgW9%DT=_1Mf~b1%EL(ISw#NY-lxx~kVb>=qVU7p}S;80S&&D0-9>bl&WT
z72P6v)*;8+Qq1E9c1;bkr@p>NRY$JJZ5}m`y2l<KdwMiPRuq}rh;4dw<kN8I(J~yF
zjB|ZrAT`<cvd1Hi-(#BbCbu>@!Q=&3b!}t*6=IUdwmII;WBVNMU|>g&oeb=3au<`k
zn%vFg?k43&FQ4q?vA4&`9;c|^)Quj8cpPfGY+sN4JofiEz~exVgFFuQvagEhp;N!b
zyY;wIM}el$*N0~B93EyS+P}wmO!he3;|Px<J&y7?+CzOFl6_lHCR%B8(dvx%K#uh|
z&f|C+z#1wi+97#@N&Sj?lI^1h?Y*f}724xMkBhY5bqeq}OM&$97mqW&?CFQbkM{CY
z%XXdZagN8i9#cHd^EltjR(RGSw!xq-E#-H(p1S{?P5T#E!uRS-VPjsI-=G7*;}VZc
zJudUO+T$9J%RR2}xYFY)4?Te0e{n7v->pTw5B{@j!?nBgB?1khsUFwrp!2xiL+|nG
zhUo16-MY!rpOK%k6{=-*qYZvVxyiuI9=8}6Hb-_C-flS@SLFC2cPKHByFBjp*t*Ds
zBKLUQ>#<ys<%`@WE03o=rg_;V<pUm1cs%LxpvOZtP9FAn)T&hbh-oxuK4zN7^P)zY
zYNZ!=%Bpm!_Ke4~ngcaIcs!@$*W*2p_npu6x?b>j(eO(i@0iKU9<O-3s-0{4H%-3o
z@rD6;mQNSrEswY5%HAN7RA|+{Ycv%d=L3%qP4kh*_Z~lZe5`{)`_AJtkFPwww%X4<
zzVP_cyvd1+BI%re<MFM>cixQOE0sX+_M^v7=0TdDJ$~`{)o3odq_T2-@`uNtnwE>q
zS<DXMzl=7!;lDkmd;H_^uSZvrnTpI@q`L@3`W5M4%;L(G^XYPPo~56q$gD+XGe3^w
za&yT`&Q)YUk%f(*;=m#c6j`vypdy2d%w1%jBEyQzXHn)YGNi~*!}8;txVZD12j|=c
za_tgcsF>{qk+m&SWYHpv6<NH<@FGhVS;`DY6j`E=2j^#L(=1bD+1!JC_QqYI$cjbQ
zEV7o-Rw}Y;k<|>ZTx1mkBTdRghKjzr6-VXXq*=o>N^flgl_I`@b&9N8WW6Gzi>z;&
zEsBgOvVq}^i)>hABkKp}xi_m#ii|bRrbRZ>KC-y-zqu(DQOqriY*l1jt|<!S*fZd~
zm5P*e57JbN)QY5e^7SHNZq+alm~7@AT6t|$BsM>ZNx4#1ZNnYo^yCd0Z%VhbCKlPQ
z$o5vXjp-+u+&1Uzko!Nl$c~10DzbBtT@3GLQh|2O6W+bZ9!2&v{oY0PDYBPg*I4z;
zzD4#ga)2rKGwCup(C|U#$B~^pq{yK~4$G5QtjR?VxAcxMDW69cIm*nBHhGN6V@*2e
zClonRqeyRN7CEWN*Q2rz@19Z2E=x`>a!Qd?i<~BJ!?N$MX|~rj!|BEBVX0mr)0ykc
zVs<(>%jDT6&oOzf$tgw7Ga%0S1}-pp@?Y6InHLrLUy+N8TvFuHA~zPfsmNtTE-!LT
zk*P(lC~{?ytBPD*WT92E3;sRm*6Pr&FPJ^H)!9csA6%<sid<jh2Bo?}_YG<HSEITf
zi@Nn6jrW4ClZxH?t>NY(w-mXv$X!KlEpl6t+cn|KXaBBt)O}dgt$%IkiR+Lpy5&&s
zDc!Bfzo<nTxv!XAA^bBcd(lWgaq9Zylp*Mm{_Ndd4;Fc-$b%&wD)DfUM~XbEKS7tW
zTbM_SyjbKVojA1qTam|$JW=GyB2N{0uE_I6o-Q)2$TLNrRWpO^cMx6BuBD+8XJ55b
z4!8W7ojPAo|4h$5LAalO*wve#MP4cLW|6mwylQ(;Ca-DUu-9eBXcf>RZxrd$quTSc
zFZH}#<Q>gyB^D|1Zjtwj{9R<aMv-O={oqpM3j-e%`Otur9~t=A<R?WwwNdn$NnLO2
zYcJw_sX<cYn_~9N<f~%#tV7Cgi+pERe--(@$PYz+x1vVKk41hiW*0d>X&%!8$o4$;
z7wz-~yM8sj%zx9Ny+$^i{xHp-+B<qpOAkoxL4gSW6#3VxhLz|l(Ot@(T@NfliGGIX
zC}p=5{Y%VbKv?f5NX}ehmJ+j?QV&dYM9fxV_EL69taqgK<JX*}>~y0&HJ9zX0VehC
z)1VTAOW8Z{bC<F;Y2`|Io)YuQd_uND=@6?OYSA?&=PPB`@bi~gpu~cu?6o4jb)zH&
z7P6wAZ!cP6u@ak<7+YfT62nWZXNip{u|$cLN~~OBNy|qmEo)#YlS`MfUA9b#2lbk+
zy;#1SOS{Ah2GpDttx=j8Rx!;QmY)2KEU~I-Rx`P}N$E$G_-JI84A(4W&-2$Zz2=a$
zORS@gwRwBp(u^zQ(WPt;u5W25lQA;M@rETfGORAz*tyc;ZzVP>5tm5hO`qH<;gu*F
z-ooUTCbudv&iYLsF)Wm_e;+6@jkHpUT8Vlo`(dJ7qEgB}oFxB#iE1hP1uet<v)8DU
zzqW=YACzd82yKtFEG51B9a$5KBeGGNmS~sQuf+Z(Iwg8a>{4P^?GanVX1s;ly2OMM
z6H9C(@bAAnmY8I{v7O0nO=@9V_0RUoyp%2Fs-Dq~R`TNSRAOf{bgO{wR+{lJa36EN
zyU9ID>{-hG=Db&ly{-9rlV7v3Zp8LAg5KEIh&rIefhCS9ajYp1Dse=KBTF1y;*b)D
zmN=}$N%l`njox&DuE{oZ4>u`|UU)mo4N<-MZyt0b7O3C4yN@ezd<p$C;*1g}SVxI}
ziuK`%CQmYXvNc3Eq^BB3)6{7tPPc^BSnUF}`b=Y<RpM*|*Vxx9&UNFz#CavoFL6PM
zn@ZWAm~^XtVTsFapkAbrU*h5tmz21)#AVtG`m;t?Ht*@HXS#RLZHo@rC&|tfSCqKY
z28{4kC9XDnjmfDduQhp{$?Hvud4qu)P3q6WH!BAVeQSw3OWbAnHj}rTyrY!;4yECA
zcZqvS+$W`C*;hgDwGpU+r{DPW+V%sb><oBYEBm6H_z#zOM0={tv1J~$w!c{7r4o;o
zc)XOYwfjVgXAC@P@+p(jKW$)IX~s&t&sy=hy!LqmFO*o*7VLew#49B}E%8~2S4+I6
z4xf~rIMl1JTj#&6cIix^`O1LsTP408lM&vr2EJ?ZJ(KU7{J`XgCe@IS41BCZCfDc>
zo1d5XLdSKP4a<C4;ww#zW#%sPb%}3E%vNUhGT&MPf0p>G#CIBXC4MlC4(DG>{Al<m
zlRw)L^owClRyvM;GtKWN|1c>lRsC(4@{GA?dWnBb^RLOS@{G&=?s7JPi{GzIf5SSI
zW-=h>Gn@G=R-DyLq@2TwvKmlk&fNc8rj#G)2O1ufYvw64Z<*m`MwA&+W@woO%Pf?8
z8<u;Rugv_07cl8s=j6gUXA$$cXqm-w&Ek2KCCV&WW|S3`!%}5N8fWP;%amEx^eg7I
z%avI^$151nGtZTB&B|p~G3>7K<ZV@RwOX0g4X6`TwMLmWjkcD_^~$VmU>%d|nsgpU
z8<wB-%Z$mfnzm7yjmzv{J~t^dwoFteF0*Nw%|t8XmD#+^7UgU%-O3C%)3e7M$f5M(
z@}4Z3zEq}M=A2<O?wBfN0@I7^m#OBsW}sfCVZiM;ahheqoYOMk9>XSOCg%FoK-*-e
zOi!8dhPO63!K8jSl%dkw#)^|n%Kx@ywllnaPLp!SGCP&oxy&wQ4$Yanmf6dCMugo=
zxx2|dOzvq?Y42^Eeah@xW<OJke~^LwO&(C@z?`fqZ3mY*#H`%tI?QS(mpR<P5oM0f
z;~r_6qjGb{Kd#L2WiF^>7ZoRzIkC*WW$sh|^y@mQ%(Z2%D|2!=t39R6sbx+pXV+t=
zmpP+sZ=}TCXO=mu%w=URFLSnbR+&r6Tw3PbGE?Na%!OsnD|3FCw?=f$Go@RXM*4)%
z<sWwI6J`hf*{zBFqB8$elEb<#F6)70w`P7_vX0Te9;S3pT0YzL_x{p-MVTwhTvg`k
za`qnG4tgJ8o~~q}u4~FnEi+8dg{E}tnV4RZ`GYQ<0Tt!?GPjkvz03_|ZY*<CnVZYp
zQs&k&x+Bm&)h&$X%n1{+CuzE#*B{*OD063-yUN^M&fbR74UQhQ=^Yq>do-5xk+?#)
z{&+i0Q+=5SG@dJLQQ^Td50&{!)1XFgnMcaJUgizW|JL(5zFsNwSdJer^F)~^Wnxb}
zo+|TnnQ2!0Y?<fEJfq`C?-6xnuZ_v}`7$q9ty8{e_$8Aso79`?qP<$?wQ{zalPgNT
zsSYpmX_?Q;yj|v<G9Q=uM016n{FHgWoUN1ao)rbOf92!@bNHbtKPu07PhPd!R4e&;
znJ+Z+Ta_*<<Vs3+fg$jXCV%aV3iDO?uFUtEge%Nc;fFFmmifKRADUH0cl~5hem1G%
zFJ*pJGI>!aRxR})sqIfwQpqm!{wni#ndxQzG3CD|#Z+QlmCS8-B|AF^INN@vRB>k0
z&sAYSg;^@hTFI7@n61K`=2qm{E6iaWVey^MfmZ8^gDMO*Z*!Y+NQHT<IIp>KRti1T
zlro>c!U7f6H=heuSg68^6;`USa3%X$M9d{CEK*_7N_HW=ScT!n)J4?dmF)gPgb}%B
ziAr`aBdev%c4;dvV{%!Os$H(a@;P3?Xi~0RVU-H&S#hL!liM{atXg3;E4mw*)y;5J
zZndUWt)+%oChJsK*EB9|m)q#vn~Gy9Y+%I=D{Nv;6lJ3d8~3pqYj{(WoAuFeSz)UR
zM^ren!ng{B3VT=Br-E0ZSYi7LJ5(rDC|B6F!gduZ75oa#3SlL?<EvI^7^s=gx=FX1
zifRL^Qra!~(T}+mwyqFWh$|!&QmgIsF=<z_!$HYw>*=GPP+^i4Cz{;Gq&WJ_fubm!
z1CrWytgussT`TNXVQ1~%{@M3LcBy0&rhtk9yIXM&9V4^P_}Yk+dsf)1PtbiU>{ns3
zY4*<}9$Mjm93N=lpb7^YIK<?>whGE&IY)QshdY|-kE(EVg>y`EOod}BoKoS`3ddDA
zzQW0-S4W*--R0IoIkCb?ruVkXdPYiZr&Tz;GGo;jDfN#eS)E~4XPP|A<k>mrT=Ouc
z!g&?Wub@RyCfoWaZXuKlHD)vdD_mURsHxfWoJ%TPTH!`JA6-`A@(Nd1xJG}))s=sR
zD=S>3p`xGa26m0TynD*J-FnVHxPRBw3fES+zQPR^uB&7(MCpv6pBQAN)fM!rp@4oU
zk-SNVaD`hc+*;wb3b$9#LL7S0S4X1W!qRN7Z&2!ykzN$POMm{=K{Sz(6S=3ty%i1{
z&*bskSK<B&&(wIf#sixCbzJ)_;`302hc(x!R%eY0k5+iA!rK)d(~ub0^|U6R?ykq}
zaC@SX-ON5|@+p(rS<+0C+X~NCc&@_B6<(?Ee1#V(yjbBS9l3+D7cBL{x%}u%r>9;|
zjLqI}f3?DE72ePRtNz(K`z7dg?be~$F8fY*$J4X#fa_nkYYp#ur^36MEA*Crh4&16
zZt{JTADC3_hZR0D{Bf@N#K5N}KU0(Qcgw%1@MX^V%78m5d{g0DD}HD4`#x1aR`{vH
z&lP^DFvQQ^8vWIJ?6(TPYcd&_y#@M*c8a>oXI7uTD*Roc+XtWN75=I4Z-p)&{o`0Y
z@K%&9j;c-=x_Gv`v!3zk?=zFn%s#pd)>Ec^Mr3DjZThuHZ|rOD%;qz@&p@9+K6CiY
z=`)wl06+V*pDsfF9oN13w9M5*N%w%YvI~R3K6Crb<1??1-mv|%r(536dp`S6ow`D=
zF|7Yb*HE7y_3=la`F!U0S-@vOpM`wAiPx>)-E{q+dsq!x{aHp<dhK&jpT&GGsc~tI
z#eIhR9AD#v8Y6s`@Uzi=K#e7Rmh$PTGQP^vKFjz#sA1-_tj}^jd-&|>v%Jp=KAum}
z&(0<*`mE<O+Gi!7m3>z68EN{pd{*^YP5E1Kb(5p4i_}XpbW&hVtJ0&+wGFJ}v#!xp
zrA>Ot^?f$-+1O`{airP6XG6oz&n7-&eKz;m!e>)6-^|Y*A35_Gv2xpS2DZx03&s>j
zhk41T>=XMWR$DPy_wfx>P1a00pADbDr|A>=*(?$Hv<&o(>u~DR_SwN_N1u*5*=K^!
zL~|v=c%QBFgjLkGjn5>XZS$^BI2Um{Gf@w0Z+rz6-pQ1^`0Sk5ioC1OZn^pHmX(y^
z@8z?%&qY4}(+Kq0*XLND<IHeBpF?~O_1WL&0Mi`kbCA!$hFxNE;=o}(lYNe|G?ass
zl85^o;d5jjR~qq;_Bke}DFJDuKi+(v;d6q|i9RR!oNSuYE!9)ZgUF{^QT)?#jSF<9
z&soMl+h>Z;c|Pa(oSWzAS}NxGJ{S00X!>5I%l~2>4yM1;=TZZTa)ZxhK9~Dk;d7<W
zH9k`nH?O@q&p}K%xz_a8`COlOuhUB^){Q<l`P^)rTYYZxxh40b+S?7^k!$2lN*QXq
z%ja&Nd#vhSpZg8mmor6sz_8;#?DL4vELCQ$@~F>aKHvF#@AJ6N6FzVFylLboeV+4q
z-sdTwr%f}><TJUeXRT?yIlSQWiqES)FZ#S>oR^K@G8FAKpVw`lIul9lEVbe-pSO+w
zrO!J)@A`b|^O?_kru@L?L!bBapw8PzJ|D|fuI$Z0;B)I(=UL=0ETW3SU-^9P^G$B`
ztpVwk!w;Gpef~DhPr3dNpPzkxvEr{jzZno&Cchh2I2Za)odt4@i#6TnA5E=3T~)fP
z*}OMX6{^_`)2~W@)5umuw>eicSF<@mn%Sz%US;hn>r|Pe%A8e}(gbT(b5$8yWmuH~
zRR&fWRAsQ~hnSqZ$~;x(&HcO9xg=e<`KrucWw9!YS6QISf>jo-vWW2)vh-x4&6zA}
z8keDK*KpG;QO(X=BTP!aWS+JRm#MOBm6fZkQe`=FE9Ht+manoxPIGNsDX*2QkyTc$
zvU-(Krd-WD_hzz&1zoesT2?E*OV7!5tE^Y0TBTNHbd~k1Y+hxHDr2f_P-PP{+0f)h
zRW|P9LFT<p8(U@5Dw|m#=Ra$&k+-Tc&Va~DsZga<rCi0UQnWmKlc^ZZw`Mw}^DnD<
zm8eQwrBNlQ(llmRrDYLaOGQ>tXP8uJSLswqjoBMQ9ARx+SD7H&DxX%FSY;cdJy>N@
zm2In>QsvYt+f~`V%0X2QuChaw9jokbx$RVC=PJ8b*`vxXX1HsW-3;_5tdtaG&nkPF
ze%~s4SJ@|TnyRw?v9Y?J5u{P^fZWM}efHoXRgO0Op;Zp6GTHDERgSE3xM3ITsN7aX
z=lPf_$C{txs+?Hmq$<Z(Il(k;2suNS$;r9?v?`}pnOf!ADrZzVv&!Y>`K&5uSGlmt
zMODtJa;_;as4}I>d4|t753XsFu0?LA{IANzRW7rgb&1JK`;c8Sk}|oX%9X0Ba<%!q
z#-!V8E?dd#OnFO{TdQ1O<%TLZn$Mf6+?=;UCax3Y_O>dwSGlXo-PZqi7+JNdy3;fw
z-&5t@D)*abm&tvGT|*wov8o=b@^F<$H2GI~vC2zT9;@<rl^2ZjM3pD2Ja70Zlh2rZ
zy2`XXu4~A%Ri3jd*HQYx#Q{l0dD*Jos`7S~SE{^P<+UoWoAS*nZ}c&AeCP8W)4yNk
z0|W0?c`qMw^7&zvkF0;xUe`Y#=YCZCS(VQ<XVzG!#urt-)CsP}Y&E{B@^zKJs{CE$
z8{>ap<%cTYn&<EO`2VrWPgQ<5&CgYSsq&lQU-NyfpuKHW!hcxppM5+`H~*^YU*n%D
z|5oX$(OsioEt@c<r<R=pgnL`9;!HJWHiEFWS!&t&LSXh9bLe`z#u7E=tT9)O1!^o<
zV?d38HHOw0R%4Kn=dLl2fx&s8d95fvLoA|zHU*u}2=kj#ou()*G1V?qW04w*)>t^V
zRn=m;__yNlJVWQl$t7znRb!<ZE7w@M#xgaQ%WdU(*&NHy@-<edv7$LqQK6lORcef^
zF{;KIHCC;$nkBZn8Onp>i0qPF(`wf;CoXx(b&b4Hjg1YgS7Wq+^-Yecu|bUuYuSm_
zIdMKWsWG<3)-@*7*tEuGHT)XY8k^VHqDHYsN#-@SGACY*aRv$|od>1Yn?u<WbDD~A
zTpMdO>Q;<vG-?Djnl(bpUrt;DC0jM3+(WNEsgc%b*XY#fsWCpcl4qIpO64%I#x^zf
zvp|z-Y+GZu8oSrnuEzE?cC4|JRqfEngQDzQV;9r!YSQ_1O_SWC#-66%+pPAo^m=pK
zr^ddfcTG?-`}c8jV2y)n99-j&8b{PPvc{n`4y!S_#^D;Y{jwWOJqOS)$fe<3hYau5
zy{DdXA64V%8pqT)R<8PYo!iqD&DkxEerY|fmc4nR-(>X~kDdcxthYdGoKfS<8Yk5_
zxyC6qPOWiTjnmcMeq94bWOuTAjOhAkXy#uJ&-E+qSvAhCaej>pYMfK!+!|AAoTm)`
z>AGuh=J|tu*;1VPW2v6lY_M1Ng*7g!@xK}uEAv+Nhx+%1ck8BG@0yCNM;3ZAa9NGZ
zYg|#|O644N>nF}l*UCI7$*XGIS<8NvxVpwQ2Bw<4(d4xzuQPdljT;Q8vEpmHsm9Hw
z5x&L1tu=1THMbkMqn5p(BEnr(yt~FdHSWzh4;i?x#{IeG0Rs=3)FYRN4Lnlg(Hf8C
zoTm&tZt{s5Pa1GhG|Zm1;<Q}(T#e^-(CK&B4lmSrvBq;L&!@ap<K-Hk)%aY8*m7O3
z)cB~zw0>Q$)_ASP>zcT%jqe+HqsE&Cq<pK!+lJpU`L4<LOwOU_Cwll_LqBbNXi{Ho
zR!Se+as5e+PX#7*EwM`W$VJbWzNqnKjax%*3;C+X*EKc?7#r|Sjc;o#)L`KT-_`hD
z1G3H$b$+PvquNzx?K(fz__@ZAIz#LHQsdVe)ah5}Hw^|o@UQV#jo%IbVNyyxJ^S16
zKQ;a}Fuj(ou%W81diHEhpu3)#3%g?fIy2RotImKrGuN5LYUijktAW|-%$^%MKhAbe
zt94j%V4cBr<~HS^oG<-6rkU5I%w5D`b>^$Hbe(1D%wK1LI*Zm>%s300T-fA7xt07Z
zQlHU^#Z9?Hoh9oGuQS48xy0mrsXVj`B>l2=maDT$oso5xud{-guViw?+^77Dxw0u8
zUNy&~>a130bz_R-wl(UknQO#Xtaa+FTPLj3s<U1_JJvR<vw5A-b=EgmW9n>FXX82>
z)Y&kPD{nI2q|Vqnn;K1qQp%wVB(O!DE$dY3_;t3bGtOwGIt2q>ouYYjCN6nNZDk|K
zPt`!9PEe;-r=CZ5<fhdM%Y&0qow&~Kb@r%})Jf}XQ)iOV+I7a)*}6`rPEX#|t`!q<
zKNAhen{&8ro$c!ERA=Wp+t=Bl&W=WKRxSq@cNaOds@=@9%w2Cd=AL!-vf6`8?p<f!
zI{Vexr;oS&>l|Rk15LUFWbVMhbq=X>s8t<SXL6o@Zw_J}S?8!a&(?Xa&e3&_sdIIm
zYw8?Z=eRoO)H%1#@#f*=I;Ye*q0WhUf1cDQ=&6QJuXBch(@e_$nRU)Ge0FZ7+@yEg
z6sx*Ovd(#R&aZQUX)ZMBTH)lybuOuMd7Ue)>Qa-J<uvC_?Yh!5SLJ%w&r|DMTj#Di
zch|Yjs&1@vQ=RJ#-(XT6M83JsEmpk4<gImXt8;svx$8HV&z(ka{_m-CZ=J{LJYMI%
zI``LksLsQ69x%>>CY^t0oB1*2qq%44MR=mllct|m=P3hE=e8m^+h=l(oIGFWg*t!L
z`Mb`GbzZ9TVV#fayj<s%I&ao_tIn&&f8FG3eQe(_?DBuR&O26ozs|e4{=NT>mJdwt
za`?E;Cz`kG{8;DHI-k|~y3RLsKCkmdoiFQrmAA|J@0G3-zOD0Jo$vc_q}L|rKh^oU
z&hHlMmpZ>{<~QtWMbH7_a`>appLvF^c6yzE>I`ZyxWT`5Ew9O}4Q6Z5-GD|m|Igf@
zUxWUJXENywRV5%fiz!`k_6Bn_7+{(?8`*h8oVg72@&yLw8sWJc%xC<08qC{Zh~c3P
zhV|jNK$7!Y?E(!JG$4(uTBO0E4Q_65OM}H4EZ$)21``?#Z!n_4h7C4qutb9;8?4-5
z6|-H+<gzB0Ho1&RIb5#6@(osKuwsLiOzC>Bw+Z5mY_MvBwHmD5V6_IT8*L4fqw>sq
zt=7yvuhU>%!($q(*I;ym_4BG;=e=M9tCEwA8*I{`+@R86Y=ccr?={%Wz!nX*G_ZNj
zmxrwyjB8LZjq4&w2UJ@$eJQW?8&n%44bld+2K5GEgI0q^gTOe=#*DLSuLou2S{F5l
zjpK@r&~DIU%8p6bqVYKvb7F&S8l2eRqz023Y}??_28T7+uEF*V_HM9GgB=>|sGe-F
zn;GuZVCM$A7*-UQfRnp7*rUOo4fgtPo{r|C@7rL%1_w4c$UN-d;DFqfXfEx8O(Xsx
z`5tt7X(l%~vcXXe4$nD9<eZ}$9Mj-<(;sW{xSZ45Cnw|@IXt<+DGe@ZaA|{68=ThQ
zoCfDMINdmBnmog#i+)yvv-=d~b4r8r8eG`mq6X(%)de|0CeA7g-QeQ?qra@d<qfVg
z{S^(aY%taERSm8-a7}KaR=fP2yw>!>*EhJK!HrhD$)xLH7y8x)w`nG6&=qidgF70$
z-r$V}cQ&}I!4nOhY;bpjdm22{;9)brx553npZg3b$^#7^%<&BWR(#ClqkXC#?}MLe
z@N|P0O*75pvkjgz@Qg_%`MeF17p&--=KR0Z;N=FdG<emjUdsu6Id3+2tHC!7zHRV!
zgLfKy*x(~$zT4n^1MivaopL|0qT+ts;FAWQH~7Lv&ZiANvnu&_WPvXmd}Ye7^Qyjk
z;kyRkH~6K&uU7km$)8OAXi`yr&VdYnYw)`j|2FwYgFhSmWzog#+pg&i{xOb}s*-JY
z009dHEF91;pnt&NAiG|jDPZP+IRfSkva`c1CT9zn)qrfZ&2HHFpUbeA0|N&1(MvNZ
zm@%u&9WYP8ya7W3<_nnLXhTg73ufGmi0=|xAYj4Vr^{Ayk$^=5RtXpxuvoz20m}v~
z7cktIO9m_zFd|?HE6R_{O+J?nSjLo2<3cPSutLB}eWI+`hqH1Y{i*@01*{veUcl<6
zUn5{m1EczwtQD|!z&h66-smpY=z#SDHZt;<fDHmR>|^M%>dkHAyf-!tv|J$vHaV!t
z<^fv-{21_4z?K191)Li&C16}YAz+VyJp;UeVn7<u4k!hb1DXM0K*eI!0_p*NKs68T
zA~viTm{ea$sZD9Oa!nEt1;keDZI|0qoq(Qz9RhX?7$2~8z@&g}jX5D;V!$?rozLE#
zyPYYw&#UCq^^yoXIc31k0lVb=;A(dZ*u78RO1W3S-T}u392c-pz`g;81{`J{_EWzF
z92BsBzyW;%DU*Y(s91-Xf9G8K$)-Ot;HZGZ1CFqwYE>oj(Ye(z|IO<7fD-~v4LB{}
z#GG?-z)88eY){Gca&>yZ83AXT=1h}k<+Z(;$mASTiho|f`2o)bJRfjDz=fJ`1MUd8
zNQ8iE1Fj3WIN*|iD+8_yw1y;?1za9*Meae~Tr1?wwdLx7Ypix^er&qXjwyM4z)b-+
z2iy>FW8PlrWqwP*t!8`MfBie#I|J^L&wxh*?hd#o;QoLI0`9dy_w_Mx{09Rb3V67W
zzPG~#9t(Ip;OT&AMtCCN$$+N}_tKo7X9AwhowznS`9i>p0q+F78}L%V%K@(&?G=-+
znUsfD^ENuGHv-<Ys<%wOZMCX$weJPIAMi!MmjNFHd>HVl(LM_JIN+1qr{lYh75*&X
z^SrlR)mO&+Cg58GUz-&FyMXTle#nbTPn!#^+Mfe{30R}anoWKU_$^>ylR-^>5BNh9
zc$1l${AsrT1pFKDm*KwyrW=qSmy&#THKCbJ@7*S)cTxH^XUy0$n|`(?vm2PD$*cw(
zO@?z=aW0c{HfPM?1Nv|VH<`Q1h$c%knWxFTO%`mjP?I6Xk%#%33~e&ZY~|K@p1;Wg
zxf7>ZxXB`>S={8JO%}@ua^hMv+%zi6WXUE=HCd_2%1xGTvW!)&U~<_e%Qaa(Z=>_y
z>tsdaIESk=S<Q+go2+VlksW{aCZjB8ohx0$wVJHmq~4^_WSu7KYQ}D|MU(ZKj5a4@
zo2=htOp}e8Y;2khnrvvGH@b_f5Sy4@K$=YrZ<aHq+_K45O)91t*QC&-WZ26&#k@bA
z!*Z@y(Qi_1QtP8}oS;dw$+k_lYZ5kT8DV^r$Uxep-6U?3<a^n*y3?fRzdh-^ZQW#o
z8BT1nO_NDE$JIL9?VIe-WX~phHQBMrPV(Gjw<bHAp_sem!1cMTb~itJm|jY!-@C~^
zP4+jXIQur)FUOAHf*z22JGjXq8iXMWhaB4EuqH1zd8NtZCWkk<s>#(&j%adZlQWx~
zWmZQuIibmkO^$AIjA@Q-a$J++bDyq7F5F2?PHu8qlhdvClqRPd=$nlAXZ%-rc9V0O
zT+rk~)1TYqJOg4*$(iRHaLu_$xXI<Fxwy$CO)hP6S>DgGax?{X;EE<!=KIcFh+flV
zYLf?=JlN#gCf7B&y~!O-u5WUKxxJ;yjZJQ9a<dg({(a@GO>WDpoc_)xcQv`sly^6|
zr^&sB|8G9h+@I(3P?Lw7JkjJyBR^vDF_Vw>Y0=}RQJ|-qJl*8ECeJsSX3A%pJezxS
z?RD~nCNCP{rQDCp)8+GOlh>O3)#UFcuQz$4$)`;|Gya=R-fi-p;kTN+-Q*p^a@*_S
z{U#qa`KZYUd6nFLZ1@wCeOvu`lP{Wl-{glTUs~<gO};Vkl}UO2Hn;jN*C>{@ADjHt
z<Tp+7O@6kjUo`pWoZggNlm9UNpLwmzc6yV4n#>Y1YnV;=|2FAoKr5T5sP`-hXFSGH
zQ6~LEW-^V6+GaMI{LdCLd&s;YLqg^VnKNWy$e@t9j3DL!11_lKU@OiYGEbPDQ`{!K
zBMc20W`qSy&KENOf6YZ(&@|3)k&s10b`IGkWU-LNLpBcCBxHEVh>%esYlJKjvSi4L
zAuEL}6|!{5vLVZbEYrucyeZY?O|ybY6{S=-9U3c}W@N~!A*=MU5@)rL)lK6(xK^wg
zvX&{=H@SAmx(38w$AD<-g^acykkVO=3E3cI!<@O10hfa~V?#C#X@x`~n}uv1QVc1D
zY!R}hF$*DEg^bIsWYRY!FOO9Ysf5%*>c;d#ss@yUHfPcZ2|}77VZM)ChR&zMv004|
z**YW%NkiHposgbB3Am;?pA$kRhHM+MUC1`ZQSGFh?4oZUvO~y@Av>AgDSI0-BYMbg
zA;*WD5VCv79w7&Z91^l;$X+4)o8jIj_cbZ2eR6NgWWPRR_<)cDLk_aqzI}CQ$l)PJ
znEtSk$+@{)X*)9H=#XPVj{2|u*pTB)<MMR!#E_FhE(^Il<m8Z3Le3AlAmr4L(?ZS)
zIXmR^kTXKg%xzuwDjx^V2{|`pO2~Qn9_;ns+dtA=DD#ku&B;Z5n3sfH+Q+l=c}2*T
zA=iamA97V*J2m9$kZY{ydc(<U&6_j4A>^i<e`DU0H;3F}N|%qUZV$O5WMs^$F?WXC
z74k`oPg~p_a*xJai&~3&L+%TirNyi*?hkn&<kOJPLLLlxDCEVEmqH#^=#VEvo(g%?
zLOh;Ff6RblJ&^<9rwu<7@~nYrCY9B5A<u`rkTca?t~stJUk-UC<h_vhLtZt`8zFCo
zycY6$pPrQew?f_yc_-xE+_UrGyt#Ae2UaEh#~~kve3UaC=aalv#m_^&2>B)C*N`vu
z<8R3KAwL-5>yU2@D5zY08}ePBqHKS(;?E{U_{sK#5^((ALVnka@-4bs{9&BGLjE@J
zr%8F39`cXjfB)M?m#2Kv%1#9RP4;WexRRf##muI0fkd9I#q2FsX)&_J94+Q-u}F(W
zTg=sBK#O55=4&yq#h@1Rw3ydy2e+8Jj}t|aw;`qx9@?65uOTe|^P7IbymkT0MEZqV
zENn`bu;gMb7H_dki)C93Z!yAZmuj&@Zo6d8cP2|)(KTeb7Ry_4C6g<dTrqF8<E(5-
zXS-^P)mm)OV#5}zw;0u89jjf#q%vQt#hQkltu$-r=Igdtuf=F9uHRyewO2I9bpAJL
zv2ly7T8wM4NsF;Y-rVG-EjBaI>scmSwAeCNs;H`h6^kuO2E4pi%T}zk@N<oF>kVCR
z(P(i=i%VMsEt)M3ZgEJ9utlrIwk@`65w(cT$%Gb3i_~zB$+pQ(AJ0l=e2cB~p6rb^
zvBfqmCYfI2*6Fuzu|tbJTI|_k#}+%8w_RK8Y(Sh{{_AJA7P~u6{@e6kE%t7)e~SZ5
zzfX&OTkL1~C=+dR;-tWVEe`5q?mFSn7KgPst;Ojry-UO4Esk$-LW?6>9NFTSJd>kZ
z9BsIFF9;ml;<#Mdt3S~+r?fb!#mWE8|J0nUl+I{zW{V3<b5@J9TbyTDd7jha+!j-;
z=#qEN9X>zzd0~r-oQcVcP4768m$kUO#lz}~7FV>mvc)YeZf$W@i>q7QXeQT~ytc)4
z2Bw+^#k$^#H<;|3z)hx6hBxO`x3#$4@VzbW$ZPLvac7R@?d}%$Sh2Si_vsX1ng?1u
z*y5qQ*2R*4F&}O5Sc_L$yxQXN7Ec)Gd6Q4Jc)G<j+sjXx6#tnP&syzsxyJdCPu0HA
z;zeuSOU8LQ??V^yHB-LX;w=NOw|K*V^YC_ycUrvP;)53N=KA*x$g}hCVT+GU^RY=O
zU0f05<g*r^Yy3nU6Y)ihFI%h{v0B7eExy()8Zl?YH!Z$x@pp^qExv2<eT$!4{9@jI
zXz`PQA5FTfBo*S<7QdPD50ft3?>YXn#b0?#9bfXF7DV)m_}6G%5#3QX^Y^wzxPQbf
z5wk|j6ftv@&CjkylCv3EoY_s^Yc*HIfQS(hOGFHe7!)yI#QYJ1Bj%2nH)2S{JZ38=
zGItS&=H7;xH>Ve2frteo7KvEY2n$6loZI%E^%jd*JYu-%UBhKATbI(35lclZAF)Ej
z(#BcVq&Uk&GtO?y<r-(cq7_$(SSe!VKKZD2q*b}hSC1GKF+O7Jh&3YCjP!mTTScrD
zv3A5p5gSLW6R~c@7_(Z><mia?Ev|FoB1&!$v0>hmDynu9<8K<VnSrsn)#g^*!lZNJ
z+B+_y5K)V$M|cs%2;VrWEk%?gD!GXZD!o9}lupx#2qNN$B%&D+MzkWLJg$q<D`k>K
zv?DqZJ-O%quTdgTh?p3$XT)9++Zb(!h#ey)MQj_fooPhdK2Jj)<asA6?xN5JcD5Wu
z+bv@Eh&^&EF<s^^tGy%ki8v(U(1?8__KP^snEU7a19Cs&%kZFxgY!OjnIC4%BTP<?
zI6U9`uJ*`?qpZpmC6A3bPRDY@ml4NDoDgw;!~+p0Mw}FJdBhbFCr6wTF(u->h*Kj@
zi#RLdZ1Zz^#2FE1=02TU*Qj$$d9F#<Mpt`&#03!-M_dwdVZ=p7_+Ot^h}PRDmquLH
z$GP)xWyDnxw?^C+adpHs5jRBK7%?^C+KB5SuFr$IOq_H*c2mU75x3+%ow8TnZu&bT
z?uxi0ccR+6BkqZ~H{!m$KYKl^)|o#T@leFe5wAo%ELy~~=HbzZ$0DAJc-o4OM?4Yn
zq+vD3HCEo-Mffz+KhvjHgy$ljk9Z;C#fX=z%JCJ~b%^Av5wAtO7x8|?>k)56ylqTz
z-i&xF$1-#g--&oPcjfYz{2=0^h>uPGVZKK`iTE_)vxv`4<F0vJT-OOQ{3_yW&6Y8P
zV!ny^HsX(nKO?@2_};wz67hq9pG^K}QijgY&-tkSHR3m``aRdU-2RIATT^{Z|Cs3!
z{}`t`=HJ{;S3G0pcYOL3XNs9QX7-plOgT%;tTD62GiFZ5@0D}L%oQ`hm@YR-2L{K?
z9Wx?kiI{m}=8ai6W|5d7F++{NK+Le1`C{g`qVwrG+<90qW+98~W`0$PvuMoX#$U{&
zl&*(|$Jvk9DlTdIWnz|%St@4fc*b3ZGna?uVpfP*F=qKZuEMQkc;%Q?47dcGiR5ZA
ztH&IdaD2k3m^ETPi1{#PO$CiPE#~x?wPV(anHaN8%(^k_#gt;oF{5MFkJ&tCi<mJn
z8^ml9Gd5<!n2lmK&ci86Z#X5nsp&T}*;l`1%vLd;=|vkCQ^+~W*`-~~YgMeo_%U%z
z5>t(-#WZ8Wn0ibjCa~_6f7gcs&O^&QM7d`La{AOXJu%~B+A$p~s!E0~$*oN@p^u^T
zlVY}wIWXp+nC)V=kJ&wDkC+`|c2ojJ-pS<7F}vipE}}v^&%5O#aL<^%V)l*M&zO6g
z+$XPf{QXUNfXQAz0td$&5_5FSF)@c)?c|ulV-7Ry0v!=^WXw^f>5cB3h;XciLClFU
zCmG@Rm=pRiMG*7km{Ux7>VL<cb8<$^nK8G=+!1qD%-Jzl##|M1PRzNoin-Wqr^K8e
zb3x2`R&=(?=Rzx9l<zpFzr>WPz0AO+CY8+PF<0b0<Cs^+Tw}F2#!Stvu8+Ak=DI%F
zYCPOvwa)6Mn47J5OU$h?xAm!VO&0CWn7d-0iFr2W?wEUG9+tzHdyV`+%!4ua#oV7q
zah_$aw6#5y>mQAIEaoY*lK%0SCt{w=Bg#r9&g$uyX{L8Y$>(C8k9j@jjhGi=UbNa*
z%=1ezFZUtKv-q#Zyp}6nK5xdnWt#U)z8&*U%)5CX%BpYL@8^5rqnM9%$R~_W_$21j
zm^l;XO86}1^O(P4{*L(~=F6DxV}6MFD&}j={4w9=t#)pm|L-ic)BG6oQ_OEMzsLM+
z`d?yx%?YmIy;=Pc^JiYwtDGM5Ps~gSGbj8T)0NOK$tHho-3b_0EEmqn{z*35Yn#Pt
zXG@sfz^uuPI|A9d&~unZ#Q_Ne6P8X`CSg#*;Dm(|7EYKuVV;Cx3G*e)n=m9{Xdd0g
za(*P|PguaJ7R-J25>&fL!lDVo6Gj+kF_Vku`8X#^V~K<%6PB`CnLE7$%O)(Buu8(n
zgyj=fNLbluE1F!%q-&R~dJR`iSS?}AgtZb@*W{nDhINi3^p$HTtYi7CYp!}dIG^h$
zj7exGbP_g5*f61(P)gV+VPoTuOV}h~Y{C`^TbgFmgv}B*&-aDv4d+c#MQvO4iB+)Z
zp7BK}CsYy|2|<Eyw3^9k9~05)d2csOA0@;IVL~gXxrT_Dm?q8rORofa62>R&nXs4D
zZk@1g!gdK05+<5v8<Uev%EX<cw@=t1VHdeF{f-GcCG4DY<kkh1+$~{u)9;bj_Ew3u
zcfvji2PYh2wfiRQpKyTT{Y;AE`s%=hgK`f}d1%662}dOyoiI7!@Ps20j?6hOinCSD
z&g2-YJ+===v=b6e)F4S&J>{f?lM~)ecrW3Ugi{mlNVqfMw1m?Wu1>fn;f#bc6D~-&
zFyX9(v(4KS+Y9F;oSQpWXczswg!480@*_@}TqI7yWeJxjTx|SH5-!d6qpW(n=!%3Z
zjc`@I*JSQC(WWL`YqhtSye{E}gc}pCx1x(Kc~ip8xyE^xhg;3zZ3(v<==FJ5!rci^
zCrnGYC*j_N2NNDL^ZQIbkZ`|&-Xs;`VI`mNc)}A2kLI<H8IWfYM1InWPvuIdmwYDS
z*@V{;UQc)~;rWD@5?)St!I-jrF*lJD7xa~cS97HZ+MKsH65h(K-pt$ecEUT>x4q`?
zCw!1FYszdXA0~X1@MFSH2_I|nPxvz7tAtN;KcDL?VAzHJB9E(xUmN}=;oE%QeV6ck
z!Vi7;E-~2({G9NM=I})K;ryELTf(0Se<l2G{69>(zH<D(6Q-N;pWMHzb+S9n&I0{X
z`WwKc3};H2Ic1i-C{ACi*;D37StMoAlsQx8N*R(eG-W`_Kr@-g<e-$nDRZYY?i%D)
z1K9bQw~yyxDf6W)WSaR?7D!nzuT^_pD;!wZ^sYA+OIbW+*_7o>IXq>FlqC(1NM~H_
zFJ)lqlw}M!LpgLgET6JM%E~FLq^xL$EA{a&vg40TS=G#C*lRl~WsQ`hQ;tblGi9xm
zi7DHptevt>N-3qBvTn+HDPvPMO&OiCe#*w?e@w~-DI2D2)F+&4W^X48Y?8NPvy{z^
zSxDI;Wy_SUQpTC4Z%Vx$yp&>|u$wU|DSk?vlB85qYAHcV(>&Bu8hz4mtqxOKDUs=2
zO0FxMOjFucwRK7-r6*;4zKfl?lQPscA#cT`lx<V?OW8kVyOixyc9E6&*&$^o13Tss
z<zZ*TuETdr**#?+)9jJ5XUbkFd*^Lb6qlGIOYYmpk7^G{IW*<4lmk-^vZ{kk9%52_
zXE@o4N2DB?a(G_lT5*&W6~!@+O*t;*nv|(2$ETc-G9~4_loK`ir<`fzlTDtQa$3qM
z|Mhly${D%C-sI0pIop)yq@3G_?}DD6a)Bu?OSv%RqLfRl_&<{uJKSf^zqF6$@{}vA
zcxB2}DOVeI4e4#swJF!7+?{ey%JnHX80XfM8x7oS@}}I-+1_GBdAKd*_LMtP?o7GM
zlxmbXj^^aODfgv3p7KP>{V5NmJgnW9@?g$?D0eQ0GJiDJKb8+I=kv*wr>yE3lTVwR
zmX9&Vk$g6{dLiY-ly6eL)&GA}UQYQu<<$$i$7*HKlsD4s-}kSkyr$6=WV4f&P<vfn
zp{F|iy53BAE9LE!cQnJNe3bHT%6lpAr+lDYKREm5n*I;2|19fo<N9;AKG36u<~~mO
zB<0hT&(zz4v;T(cn+xg$txKlG*5qG{ttsdiDPN}9s+$V>l_n6aEN4<50{AZFd+mZY
zH@5j9<wqUPZAxu^O8HqcNt^ZC{G!QUQ*N7KZGKDnT@!MfIooI@!#^|$>jnNcf2RDE
z^0!6#C*|Li>4p_li{^E;>27Dt{%vT}&#?5aR(iQ|>mo`svpD(}K$}_H%w~9YizS*i
zS!sRaxlBK}%>V=94{S5Y@RM|DwZpj$Yt6%X+S$UA^R^jcKsa0Zzs>w@7HhM3d&cUi
zT2F6*HVd{{sLjG=yNF3Glqcuf7PX=lpVZ&~hqqaw&5CVCv{|B^ty8gNn`I0LFJ;W7
zt*8$QEZb%|!=Kxdq03vX7WG}pz$$G<TJ6ehM3%X>RojeevqqcMtZH>*O7943wpqK)
zI>uis_pGXQ+pL!}70Z#wwArA|R&B<$+0be?YO`^hJ#EoNt%|=%o6Xv6-p;-rGPcd8
zZKTwuqLTt!D2mxmvE}Fs?QA4_rup7hc9mXTRBlsgb4;6K+xpTj)ix8_Ol(s#X1z_L
z%_$QzrjDARP0Rc=+u5f~LX!gbm%5@haht?yJ7%kJX`8lb)O9NMv>D%?@%17Vw>Fxp
zwrMj-qovJ$ZMHSOYIke1U7PJS08F!Un_b%MnAh&qMk7izZM)_^U6kF8vxmCN^n110
z+cb{9k737@?f!Z3fHnuV^<_W~HqB&{hqO5~Cx|So!}8+cZH{Pjq!o`gDZ){CCXReu
zo8#MD+0G8$6WW~E=A1U?wmGTI$!*Ryy{b-Wb9#<XZF5>X`<8*e`k_8o?HN{eW}CBe
zy_7D0(WbPy)b!`IIls*XZ7yu{KQp<=8Ja7Zh<tIIOZq6Kxy*LK<!!ELXDd&Nrnr(<
zwYj>@HCF31Q_b+&HrKV$f;r0VdaHFNH?_IB&5|9K>TpY&Tibly=9@ORwYj~`8*Scf
zb4Qyy+dS3g={9$@xx3Ay?d-!J_n4H!`wiUN<~{=(j?O;+@qiL*^N__-@nNg_V!f_M
z+DOVu@-eG@+^U{v^JH%BJWR9N=h{5q=9zZ3MCY@n5zs{Og6+FkOryQ_Vw;!j@DzU8
z_NGF-YMj?hzHZWuCCy83wRulN(ahg&^NxXc&Cspss`Ng{^ZBsNM{PcC^NDMPj_%Q2
zpSJm|&F6V@)J7>?=E7gL`O18{#(vx8yEcEd`CA?|`D+fh+8<5+W>N|N)aGZyznJ{h
zq}r>Q@OSHhKTP9R<#mf%Pj91Db_aKuyTd<i{%vQ=DR*_4sl&`2x;xOJUnjd4aElxF
zH|&bDbeOfnTpb2<m`zOm_}gKQ&W!K5%xM}~X>)5G56t}xG9aa@WTlTs%+q0k4*KAT
zzAG_rhanw?cF-qCw1$SZVIAh{Fu#<2)(2j&!$KVv?yyLQ#XAh|uxKY+Cw4KDn+09M
za;QxqMwoI5lkT%7A}rlunGOeaIJm>I9hU2`MTadrEN|(p(qUwW6%4OvZCT0W$|kk=
zu-vZNVYLpUJFIWY)jO<XU{r@SI;`2@VjasSHB}0)-Qm-1y0i(e+hIK&ID@i&lYGPG
zv@soY1v0k71|2r+u#tHaVUtd_UiZc(*R~e9CABv-!e$*d?_}SK)pmQ-y;X;C9U2`1
zt1X!HJ9uiE{`_mjQipPfieY!&bj!?EJ3OS1znlKWJ-h2xTqf>rb_hFc-(d$edAlxc
ztqxI#xI@xme21-V@1!O>Cfl9t)Z=zyPbXVNO1p1Dhlw2~<-1Z%lX9E9xNV2+I@vd0
zq*Rr_jvaRDu(##2bBA3z?9s_Sb|Av89d<Xv-K<s`w{Wy3$vurD+Fl+07?XWvV4n{A
zcG$0z_4EE64(RaV4qd{EqRv0ic7)R$(&5k!=XbcE!(q1fkM3}cfypKh?{I{HBQ5Sx
zhBcUVP-r{0!>JukGv#q6kMD4T0o9(^;UvQ+n>@v&JF-siaE4{2l+Ls~r*yIpmz>q%
zY%88);m$RVQgxY&aGplmM%gI3u){?i9_#S9+-lTyxS_+19WF7$t2$iW;nEJ5b-3L6
z=L+i_&1tgLc4gjI+H2QzxVFP}9j12B^@%<oAm#OTXuD(9<$RL{q>d?(wd_xaTRYri
zvDDJrI^5CWPHW)pW~dN%S*^g`N_9*Y*UhN+n*KiV?c25f;I0QcJgBkP;o%NV8}N^G
zc(lXele%<($WTgQZ30hpc)P<p9iHs)REMWK*`oa~ba=6ot@bm`<TD+fH6YD%2A(%5
z=1U!3Ru5Yaub3RK)x|r!nrGY5Ctx(lwTkA%Eax{nyk)ya*lFJF@LngoX8zDZzpue&
zIe%at6j4!hg(m*TIuJAobofm3Y7hN;_`Jgx>gqvV|8_V^W4OZ)9e(WaRfn%TeAD6E
z4&Qb7-VSixS?IRnj)l87U${%(8`3&dT5Rg44nJ$(b@;QxFCBjE@SD=>WUE^*7j>^T
zOZTI;`#N#A*6Y?9P=9s!yTf!%_!?UMvvs1hkg|4!fck&og|hFT>KxbALw67KWZ#(3
zB1P^?Ju~$%a}OW&@No~b^e}4=lY2P4huM0Vy@x^%UJrBhFlP^I^sr_RbM-KwhXs0A
zu!n&?4C-M%0lPaGY+z^)bN4V$5A*i$dRNzw9+p_AYsG;XN8P1?Cos&I`bL%T{D$=@
zhlP4rxQAtXSgwafdRVk4yLVVdwcTBd^{{vk!<CO+GL4YWp6okWOBv@ud(N|DPxdTG
zN==DN8&e-$(if|>vzG5+g&tNn<%&JonACV)*=$!*L%OqGTBV1PJ*;Y+)q1iMlQ>!q
zOE)YEI?D7~m|DfPdRV)MO?$Fik9B%jw<nu~H#E6k59=Ekt$w!463H>95od#*?0!dJ
zBeUJu^!kFvCOwQbzP=}-pqpt3>HCky*+SC5Rz2DIVw~Y026WxHaJMelianIniXL|C
zq1;2Ihp30R2frs9u1#x2wTGJG_GF`7y&YKd8$C4oWp^3cL9c4vZ`%c`Z5cSd|Nmp^
zEWqHXoi={=Ytd4t0);|bTnZEl6k6P!;!sMtyS??>Q``&1-Q9{6_u}sE?(Xi=@6BBI
z|M5Kg%=7MKl1wI(Nj7Wl?|zd@R7?0J_9!u>#GWN~9_Y+lHp`bvR2Fon6+0F14Cr6I
zGFMO{G>fT4>cq&f__2Wzqnr`c@LGwiM7>0##Qr4?DA6p@lJcgx^l6vayX02gof19z
z7WT^Z)JWN<<km2fk*)SK`7P`VU1A<s;!vyTATyUZ2bVa+Wd5+f=^d8qqnYK164PXp
z5_gt3vcyp(&M$F6iK9*CloF?wIL7d?C5|(2e2EiFjK+E6306fnoSszTWb4O=C}^#6
znhBp{^z;&E7&z1D*(J^@(RHnGb!V|-hZWAXr1OmGx71=@SmL4*HyG#Q5|@;?s>F;E
zml{U`mzS7s_PNaZR~#AqijoVG!dI4<V1EU=y2LdluD4v*8oe$rp||})Zg2fg&hp+^
z;wE{TrOI`0GjL0ZTdiID*;u$e&pWf^{^6*uysO0BC7vnqY>9hJp9f1kWZ>Qs_Zd(p
z-e2MY8v+`qI(=B#E$N98kLEIu8PLDpH1r-Xxj(#Xlu45(OFWg!JZ+}CL}A}J()`U5
z&zE?i#ET_fGUlsB_1QgD^m2(;OlP^`)yoxLv$lx;dWknI2*`W8ztVfl#NICPj&<w1
zCEhFXeu)q4^g|n%(nmjrR(#MW2jyCyl=!s7@?}Ps`Ah=lmJ65pqQsYqw`C~vRf(@l
z{8ZxSlDkm)Mh@S%@O_DIP59*n3f~z}oczJm{?U3<op@uP!Y?I$wGN$C;x_|-miVj0
z?}q=dj53#cLGpi>__xGu{oTa$j}4aBR&)XIuO0;j*h1M&qdM(Tre~SnW%`tvqs*LT
z<}SO4r_rGn>6okR2ABQ?Fpu$-G_QePW#-E{TFc39eaj3Ir%b;x{mU*U4=_4^nH>if
z29{Ak&}vOrn(C$@Ww)MRu*@(6L(42scENKq`?rpg9_mpLU8w9r>m!p3!^<pUnk;IS
zE^c^4nUQ5im07Ipe#s|28$)K(CCYBfShCDgCcm`NWz_|G3aHFQ3%R!MJZsi+W%QHN
zUxpV}D6?XjpiEe1r7~m6Y*J>^GAox^rObpfYndjBFmL=`7+ZGB)K$x@R%Z1w<H{}|
zpFXCrrhzreZVyNQOB!!Fyx6Cp?Uc34?&@H@GV7OFr|f1xeLQeoX|lGn#s<dO$f_vo
z8o_LG;<`nNZCrL!r_8=tnayR%GCP&o!X&pUvvrv*bH&uOZOZPdWMY}^Ov7!<Zred-
z(XvWQsqIZt_S`|n>`~ZFVZY2SW%evnGF5lATvA}SGLxk0tXaF4nOtTM!}{x}Ogg2E
zd_y`rYwO8>DWJ9(y;f6zN+|QW{w+IemV|vX_&8fHMP*`Z=DsGJlxbV1q-AQRSZ1_t
zsj{B*Y?NslvsHH6vr=IEz(U7zsj+*R5A0oLpR${Pq>Pw4_A9f0nFGpb*>j*eNZ))g
zd{7y=@xi8pHgXTO>}t#C9)-ip98qRlkBJ`B${bl{gvUsaqsknu>OAL!$CNp?%sFMw
zH4Sg-SvaoD@nudZ^RVseoKoh*GAEg;CzsuS=aoy#2`#`*wSjP2nbXxHWzH;fR++P9
z0g7*4QIw<>VER*u_EgnOO<w1fIbW_@Vd)ANl)13X$7Mc|w@BwQcbB<G9bM+qGB=dD
zvCQ-`mzBA^%oWxsIhA%QWPcr3YCPHuB7Bwg@(iO_8@<NpwMMTqdc9FCv~DtRyEXP^
z!?#%Bx0bohPBmw#Oi9YZGt1mj=FT!&fa&xuGrQup@V#>8GOx*v%iJ%4GEbCw(md+H
zGHZ@<{`rt>Xq-pN=pVlFs7K2@Rz|C=$8(OnQAvG@g{MrVm&!bCK-r%u^K6;t6a>uM
z#d+RTeZlC9M%B?TTi2`bS1jYJMzwx;qs*JuK_8USH&@>>P2MZ>w)x&WW!^PO`H4DI
zq5l1{yV9IC*y;J9$*7qhmFc$kQw9GrJu399@VSD&B5j$U&0=4c`NoR+%1&jyuX9VP
z-@h&MojK3<Ci8<)@qbiH`?$J(Df4UDEftCt^h4+0%KUA1R_(tV_@m69W&Sd(*<bo7
z*FSdpuhCgX3l%pgBp^z~jbC-5=o}U1tT42~0u|<}Fn7g;(7qMsF|bIl!Uqce6-0Yk
zuK6nTuF%IgVje%Q6A)Fdeiiy#F5v+N1{$5;=pdtmjSev?1ths(g<%yIGLBZZ3VI7y
zSggY06^2*bth7jlMJtS`FtXxykfie{<KI29pjlgoWOOW1;kX_y>IyGus!Dj73d>e_
zvcgjpmaDLQg##-bRAF?56;xV<?JKNUVWkQiR@kV*7|Gie#5xsLuCPjlu@zRWuttS7
zEorq1<0|gAcRE(Dp#NM;UbqX!SC~*?Et3?d%Us*!yJG9+<*#R8eI*%C2@>eaZ(L!M
z3Y+GVTN~J{!sZpWsPONg!j{I_%4j!>vTtLj+Zvr{v|Hv56?Uu;R0u2VRAJ|en}W*~
zb}=Blhk;!y>{elt;oU1tuAoU-siHD?cR@R)!k#8js<;`an_4lB1iT8>3jTjGN<ev|
z3hJrMdL&ja8xTJ=P^<9I8297adWA-XrZM-buy=));dU<H$$NjF3j0>r-}tIxzyH)I
zZ4da*>A@8asW79$)fEn{a9D-&D{f&kwZh>QPN;BV#m#F+81v`~(+o)9NcC*R1r|jr
z(PMJ{vGOs)$LAbnKgsafMo+GAN`+G^oL1q?Tt?SBD)V$ZJ;SJSY2kgARiPvu=Ttb?
zlFl<KXOPSV*2W8sbCIZlODbGZ(NC=0aK5y{bd$NvsLHwAWRzFORo1%yb>B4=uB~uK
zg*z);S8<os8hy9exVyf>4Ha%Qe3N>_g1l01&c%dpwba{;-fnc}e^T$N@Tf8GHY)jh
zD%>mI$V<CF=RZ*4!3qymcsS=glFKMpSF6V=%r{5j@d{7mGE(X33eQyN<+<4PY=!44
zd|BbE3eQ(~p~8C=w{+3*Vue?8{8ELN%`)P@Voa@ngkP)hdWAQP^QO^vD!f(UZNr*?
zB%^ufT{{&J=Y2&yJN>Z2Ck7<*krn>2ooaFQse#Wl1sM23Zrsxq)h+Pr3g1-tU7ccm
z_pQ;NDtu?)d!y>pA1eH4xI44_ob!Lt`07#k)lPp?z_fYx&kBDTM+<D_{aeA@bB^(k
z0)_EsRluW%F$*3=1KnAmr{Ot_Doc0bP|{px;kk{<)bkja*Ql1w^Lh04=wquR&5ZLK
z=<CtXK!2kH^3;Le?Ei~Na*#1KlMeA1>M?dJ_ht13JolT?1wFUY8|JZ)$HE@NJr?m;
z)I)zA)y`F~72W=fj@SAY^x1Rmk7?A8^4QRGGqSEY7W3SoUfg2|k0m{p@>tqqRgcv?
zmho8DV?~dZJeKoV-ea`K3aY55yMwPUv}+%1a*x9A!wVXu`UTz?kCi=Ek$N6V($<_l
z8-8#P_ZKsLr2Y9t+?s85k8vJrd93ZRhR2#7<2@$GEXBe{J=~7du03Y|W?HK1A9?F|
ztn0C!$NC-;(4~RGl-9Hh4JrKDqcDBv!Ui6{>p#>M2R5>{Y;1HBqnpZZ1~xakh0!gI
zZe>($-`Zmv!`){pw)5ED;{}fwJ$CTeQAYOodTe1QkDWcv^f=377mr;%_VU=<V>gdU
z9)U;bvAf4)kCI2(bKkMw!()oap6dOeF#Yd>c8&DBggQd~RdF3e)x%c<#}(3%?tgIK
z4l2Afpm_M7uFKSSkw@%N_h@(|D$t|mk$H@nQq=PjGORW{{~haoB_PYl{!NdTN86+0
zxj#axuE&-x=qg@)A#a(vtlQGu$75fQBehWX*w15sk3&2T^*F%eK#zkw4))Oh3Z;NP
z!vELrt~)MXxUh0R_f7u8Jf?aa?s0?~wR`d9KV7OSI(Co3G|#Qx@9sOBbF{}X9w&L6
z>~XBeaUREeoS=@j|0K!|YMrV$(bEgpZcBDgMFai$ONDrx=5e~GUHYQ_De#SUU;<|u
zxyKpu$#E{%uYC(==i}>qk8^T-uE%*f)|yJA?*co$(Bq<<f3e3UIlk0mdX6tMaJk1n
zS|R8Xz;i!{zsh5V$JHL!c--Z2x5u?M-f!^Sitf66>|bx-SpEOY<0g-rJ#I09TRpI!
zhIH3~%5t0WZ&&Yl++p}m`B>2{0=F&}mQdLDxYy$;4IhvDJnr{++&uGv+*cnp@SxF$
zJRZ*Zj~JLS(Jkj5^W4HuL-GlaCylS^vdekK<5`dAJf64qY7l)tuJA{n!noawTJXr=
z8rN$6OY#AazdT;{c*WyYkJmij@_5^Fy>9LOZhj~EhH>7smMRRs<MFP?R~j!K?|HoM
z@rlQ$YN^ME8owSNn_<5m=0<_)(ytcOp$GRXC~|)0@wvwr9$#AYko~{y>3-!PF=4r`
z+~6CJZ#{nY_{HNpkMBKx@c7Zfpl;A>6iDotz1_I@$wNa)3)-XPFdn}tN_hOC!+z#C
zakrwbXH~48GLqk(SSb9ht~a~Q^7vQwu}NI+{f#YX3ss6$sM4d#$SR|%^sF*RmHDd-
zsxoJlxvKQ8(x=MYRpzNOZ<StEcgNw8f-|fFxGquWlfb}&=IB-Re`HP8Rr*!wUu8g*
zOZ&Lkc)k9nu|VNZ`ycecDw|F!-fxnFs|=~KP?d$N46U+2l?AH|tMcbKcMCvqSYz<h
zo-QEYut)J?efGb~B2^ZxGNOuZ6AW6maKdgy4JF+!(Pfduv=y^hmBp(pTV=T_OH^61
z%2HL9RvXQ8Wa=II6$XrTy|YXe=_atxsKWA9Mpxa|!3tIV%BMJEUH6mF{a+|*7f!Ky
zOqG?Z{95I=Dyvi(TXl<#tE#M8Wwk2hs#_YZUS(XB?W$~FWsNFpR^85zW=8GUC@hSx
z^6u(|2~~HOVXZ1_S6QdZx>Yu>vPG5ks{Eq2y^OAJbOWOs8og@Sf>L#CY^R&ZfCe@*
zI>(YlC2d(H)YCpyCRW+1$^rVpx`tkrZA@mZD`%IGU0D!bWXa+VRd%ehla#EwDL~;%
zRI7zus_bg5n{0Hq>g*k!Np`xsQMJ9hv%N=^DaP5;Xem!s+^$sds#L4^RkvYsc9o#&
zE-`dWld4ssDsh#h%3f9Wu98}6t4g~{&2VP4ZnR;vX;dXVGNAC*s6waemUhBjx=)^Z
zM3sH3>{n%f;~Z%80HeR!4*Wre53X`Zl|v1y%&AolGpuPvr-$c!-LUKCI<m@9RgO0P
zNk)&!WsWs)T$ST<&ItxiG^zqmHgJm3Q;nWx^mL<VR5{bYSw`O;>=e-Bi04!}*Q|G*
z#*u;Zjmn-E7`V{rMP~Mkt6XBIGQI?KOt;g^s$6bBoGT1mX>|IC;*2U+SGlIjwW_zu
z{Z+23x+Rm2TdG`d_y(gl8okNr%|^TT!EZGz`P-`8p5vJY?x=F7fxB}4-3IQda&OK#
zX>#F#Di3M|&6@Rnm4~W4Ty+;9qt+-qQsvPqFUdm`2dX??<(VqaR(YbzlU1Io^0eYr
zKNoD}jrtLcwuN>3AdCvSZ}MD~=c~L><;AL-m#^<%_@r;)8e5!PFu3sU&Mr2-T;-K2
zuU2`j$~zjHRbDqUzLEQ|))j9Wek<p^Z9rl6y(;e;{-VkURX#NQxzUe|ep2OQ1JZ5y
zGET!!?ew#5YN61b#J|jCzS0=1@=cX*bIx}LG|B23LD_#W6a8rPC!;?bmEC@+>Oa2)
zf!{S$s~lJ3_!@tTsovBbkd(g_qjX7_GCk#=D*sx^uk<L)QncUBJsMH)Df-~k!>6au
z2LT@j%;7Vq&mTU2`po4sx6f3c!+qxQnb&6{pN)Nb`ON3Dw9hg=y?y%l4D(sYr>{>x
zpFuu@efs+h@EPbczwa(U)J<#5?=DGnXlB%|g?ep>&rqKQd=~W4zOI(jx*XH0LtXy_
zE-2|(*k`!UD4)fA7V%lsXN1p4pO*)6Wk0t$GerNt9_BnpcRh6bX>p$=e3tZCN-Alg
zsDFOh9+!&MeE|s^yE@DIEGMme#`!GoGumg2&&ob4n5rxKtmM1crM%i0R7TBr!mId<
z^;y+tHJ`&K6}7OJ$LcDtd-qCWclIc(;j^aCIzH?AjQ5$~vzE`=zPrDp8CjCjVc3w_
zcDQYu!g@aI`)uH|p|4NnyL-6Dk8s;Wy0xm`I%}rW4X;gnHub6c_|nQ}bDy1kcJbN5
zXG@=nKHK?h<+HWVHa^>`U+iLEZC7b}_D`!#8M8F7u)WU?K0EsC<Rfjh6p^F^w3JeJ
zNJjFz`t0U2#b-~SNj|&#O!nEs<Uf%$?0$FLw{Ww*Utt5V<Wu&k_;^0un{+Bi?Na&I
zE#&%9O%8lQpN`L7K9NuClljzr65m}6ram>Zwz5lsn-(j|?R8hK;nVbK`LyL-MR!G@
zR4qAVK;0LU=5m$2efIG=(B~kZeSP-x-4l!l_`E*YrS9(|O{9YsC(5hx5B534=TLQ@
z@1BZO6INc|_2a<26Q%7DKGS^e@wwOMNS~v8F7Ua~=V+f}d`|H>Ro3u1PUB_Ptdo3>
z_c_7viAEnERQS!dK$Th??UunO8~=fM3#a*<?sK-!IX*$}!Wlki`kdu+SG}NIlJs<o
zb5KFc=5u|{vs~v(&v^^o<@AC>3&Ik+$me38>t%4COEhp~MxPlz(|s=Uxx(j4^L#Z>
zt-jpnCzYJ<^s2G?TldvI*Z5rPbDex?U}5^;f}S?{yr;W+GIo^9HF<L3MxUE}Zugn#
zbF<GaKDWxAJ|B*E##cv3Oa_#}=Um7+_8mTV+VHvCr?gJ-E_rMZ=e@mbTG5WZR$TY_
z-0$<Q&wFZ@&x1bC`@G=ukk7+DPxw6P^N7!*K9Bi4Zk~K!A2-T07@yeC)iv<B;@@8v
zo>E8qJnQqE>iVPbj3UyI!r-wkrs)A2Mb3jqIwgk|3orV-B!BRELlML06`xmqUNb*Y
z6XX)wkWoX_aNSf;`EUBX<@2`BJ2GQ`=f-k8-7{5D627vh1MjPAe7^DdR@U(O$mesP
zFMK}s`NY=^K0fpLw|C*HGm1UeE<CYTVXHocY-&+-gF@j;pRatrmL1e1XB5{R%kHZc
z51r;##q%Cs{LbflpPzkxF@Ya^epL4vR#Ah779=KN74@qzfAjfW;o1t{!s<F(<xDO9
z<@2|OL%{w4|413dqJRkjvwV$477181pcp_v-++DrJpy_L%o8xL;(x%L0dob+9q{eO
zMfIS<k%EbOQ-)HA);!oNV7`Ff0eu1&N#rwfA-(d@HK~MeUbxUdU_ii-fS~~c1LhAH
z6fih&kx(H*&M8+^!0Z}dSr!ObFko1~LV??8-F|gv`KiMSPxf@-U0t(q;Fbi#tw!Y<
z5il}fg@6?UMg=SuuynvO0gDGL5wK*yQUTIO>S>M;mHs;96^hu)1}qn_e86bwW`3fm
zqLxZ4wM88*x>CTHfYkz44_G;1m4LAUtLoH-lBSyhHdSc|=%%yO8yB!fz?uPS-3`NB
z>!hu2Mm)KwOI<5q?SM%Ey9cZjux`Ls0b2*G7qEW7CIOoUY!I+vz(xTZTP?Do)}N|Q
zbCyD`)K)p01#GT%1=@ab!BeVgXvn19-qAcIyiLHi0Xqil6fiMhyMXNjb_m=^S7}mA
zhqMxwS$Z#6*g0UAfL#N2lMX#yR8;e2IyFQKYzZrpPY&2a_76w{rUdL6Pz~?{N&)47
zN`M!jARr}W$?1C*<qR^ls!&u30>XeOAP!JbYmS;d=v00;fT$I<fGnUL&<Uu^NdlSy
zEjfdBka{|W1#Yx5)e1FvuYkP+_6gY6Y^9w6SwIHwKH$-v@(u_%FyMxO8v{Lcz`+6M
z2AmggNWh^1#|NAca9F_9fFlEr3iRZm3+YD$Of#T(t3w<eexq=-F^`e^8F+Y5;Wz_I
zRRCXP)~w#z{0TTI;Pikq0!|J%CE(P6(@ab;yc@k0`MYH*&I_CwaCX2sCUaK6r@Fmm
zHU3*H4EVVyf%7eCdcb7?7X(}wa8ba;0ha_^8n}5xGCkUkcFWf!qLMEUxFTRiz}1%h
zN~2c=sMu%QvnP~m0<Kk$1YB>aYV6z{r=(LgpO0<|xH;e<b#A~d0k;O+6>zu7-)8iV
zfZGFR8dk>cR3&BZG>&G#dkowgaGwE9aQ6p1VE91|0W*T+WlvFA@{xc?16~SvIpDE?
z#{-@TcvizI;K_ie0-g@slg9D~^|*$HTu%37<w$ap=K`J&cp>0LMS~u0gernbK;v3I
zCTAA&m4H_R-U@g-;I)9)1KtRDQ*m-kL5DUIG$<q{7g81fEM0gf;N5`t0^XO;+Za?`
z-38%8wvbcd9|e4@aF;MJ;S+VDf?mV|5uXKou6P@=Xvh}<Uk18Rp&0U2z}Er42K*NA
zjlyiePm05{W_=g%eZUU^KWfZQEsAsN8ioJS@5ej*v%;gq3@i1BBZ|KV{1NcCnqY<e
zY4k63mgVhA{%g!x^2`B+E=NEDg!BmMA2J}MXUH5O^M>>anKNXrkhw$V3DJzBDMk}e
z|EWbyVVbjUI;rT-nl)cY?~uMB{X%ql|B1yuA%{&XUaPBqJ0>4qeDMUAabU>&Aq#{o
z7&0hiaLAC5p(gxA@4_UT{<`y;sA?G&vQWsvA;UvAQHps(T=04oHJM6Y)1R0lLPmz1
z7jk~csF1}%_6V60vUtc6A?t;#AF^b~QX#8^j15^jWSNi^LRJh}He|Vw<wHh?v*Wq?
zTK+S0xQl!5^e?KTR|*+psVl3EwwBh!Cx4Tq0@tb`tA&gYnIM^vaUpAjtf`XizKLWM
zixmAdk;w^lg|b%2+9B(NtQ(>WRVAq+O+Av-qFSf&&kaI044D|RUC2fu8;5KWvSr97
zA)AJ57P5JW7T*7^=H#^wxvK86OE)>>Rv}x5Y!k9==;j3ps5x8PT23oroyx1X57{AP
z*O1*pb`04mWap4wWIbJUPj<^ci7AHb!dY3g=9v_-yIEjz=vLs`(wBfnlT;PhGo%!9
zP{_d{<&a89BcvJPg;Yc0kVIY)5~#f)k(Hy>xD2S}nJz|Dpv<Up(vVt67E%x0-LZ>p
zRr%3UMKw^VTC8d#t`*V_**9drkWQ#~;@CT6A1hNMQ98>467DLd)BP>!fRF=2cSl}j
zez%YlP`66*5V>^72_YxS14E`tCgkXl!$Xb;nHF-SWtYWtD3=bEDN_p^6LM_GaUsW>
zjK;pMo@6>ryP7mrxFk;sIXUEvkTXM02{|?7w2;$fpT6$C(wt*wYpd-+89`N?6>@gS
zIU(nU+-eW7siG+Zoxx=U$>{WgkPAcJ3VA!^qL7P2?hUyw<dTp}Lv9GUF=TqkWg#;{
zt`508<cg3h<qW2$?k;u9(PSzomzT<J*MwXfa$U&v8g8bEDiU8*?GjZOyh$z>GBf0k
zkXxi)$Za9Fn?I;INgjdK3KgsPd1uI7A$Nz|qY-DDGrF3SJ83<juGa!aCEp+NK*%#8
z&xSl0@=(a*Ay0%n9P&uWqalx3`MWMNdkG=k4)kUl?MZ9SQz1{Q5R35AQ{5^mS9vbv
z`H)vaUJZF6<i(JeLS9xt8{(!3>7$0r6w+4Rq%5z6ydLsK$eY$X>b|ZEshgCg$B5z!
zmBKqA?}q#t@>j@vA@7HL6Y_1y2O%GZd=~O~$VVX`hkO$9si~)m)ZV*#xGSUAS8~-U
z8hjD*r6PaG*9ul^xc_B;w36!-DX;1z@4PhR`;cEkehv8{<j0VoLVi|o?on94E@?H>
zNo}nRwdPb4ezWR+5BbA@b}ZEeYC?D2_;<)Zisuo%BK{4Tr3fD}M?@i_7(qmj2vx1s
zlor_P9nFv3e%I5#b4JV+F?Yl~CZoRY8u^v&oX%2UyJB&^h~5zcA_hkEiRc^AFQR|s
z`sHwo6|$#_Roj(CVQT(}K@o!^hD2_iDW)X59ifobwfuq+!z2(hG-jcQg(J?4I4fd!
z#3B*9M(h@`XvBz!2@z{WjEoo+u|mX(5sO7E9<g-9GLehwOGGRgv6M2J(bNPfqps2V
zbJ>XHB9@OB9l0l#WdSLp7^q%QMsc)=T`6Kr#A+%k()&=X5-~PnRV!KMlI9xk5>^{U
zWt?#lYecLWF+Or{e~YOyMOCAKd{{$o?TB?Ewv5;+V%>=KA~ufLBw~FTBx1vejUqJU
zb@xG0OUvDj2D+OFy5>^1ZW^&!#O4uOm<}3BDp}UkJR)tSfHc`UVw;E^B6f_}HezDL
zb`jglq`K8O%qb(sQ+KF9ZTRSPr^qd7c8=J^fC`kA<OXsx9g`w<kJv9_|A@&EdqgA=
zX~dL>JtZIEN0cJU5tRrpa#w<?NQZRmHeA~{rz}?tBEpC$B95r{b*59Cmp+n|<+~nR
zi^w9{5go}yG$NW2t%w8Xcby`wx&_KlWJ%d%uZX=P_KDcntgQ=4O|@fpDoRrGi)<om
z9H8tG$4Ie=gCY)&I6UHrh(jU{jW{e~YUJXcM!JMG-wCT0d5bP0rbQeXaa6?75nATS
zGD=bd1vXgR^@vW7i#R^wl!#L!PKY=$;-rX^H4yTCmyCQ#hq_5tJuTw&h%>DFq@fN8
zbekqqoE>pa#Oo1nM4TIOUc{XdcSW2ZaY4k@5!Xaq7;#a=Wf7N0TpV#p#HA6_^8%%w
zEU$&DitWy=S43PX`$Wu$_;y556TNz0jg>2^cB%CH*M(~%u8X)i;+BZ(BW{SeG2*6(
zCu}0ns~>8zN|w!K<jaN>ZjHDtVrIl0@>{))s4RM<p>N@Kd(c!>Ykc*$(S3KsJrPev
zJQZ<o#C;JDYq&++uMiROpbTrCsq%HG{I1)m7yeza@My$i5sym^*})>D9QE7VigI;@
zEOnMl`gFuI5idr(6!C1ta}m!+ykOQ)7O5l|-9MGHX*)>0@N&c}5wAwPW-?lpNpsaJ
zs_RE-u43PecuNs4;*W^8Bi@PlGUBU<cO%}5_&DN|i1#Bti1;w#Ba0s0jJoFS>MyG1
ze5%EN#OD!Tn2$*rU2%{3%hjUj(G56XM|>0UW5iGDorv!uzK{4pWlnapm3m53mDE!!
zw7a4K`*XxE5x++KW|r?RkmNaPnu^^@kD3oG{2B3=f_BWjF@Hz=qaYvCGv?ojSql3x
z#BN0-2QI`eQ1`Iqjp~vSWGfkYj+i-P=8Bm+cF%aok>v2Y6{{+`K|^in6*FH<|Cj+W
zy<_^s^o{8kyQr&jbO^|2M0Kdxfid&P42l_SGJ0J?6Y-a$W@|2GUeNd7Vit@!Bj(JQ
zVG8~+yT<GmvvADtm^EX@$1D=FXw334qhm(IjEq?_W~rD_v2()3VivdZRkeD2iP-H1
z%X+f*BZ|W@%fu`jvz*Duq?%Q=ucBv_1!PRAu|mv>F=Jy^jaeyXOw7tLtHewl=7xYg
zQ`T0CWC7V+bTt(fGcIP0*u{KpA&NhEL}C1@PFOn?(rQA?TC!x!RxxYGtP`_w%qB7G
z#;g~!LCl6RGO`x->&MJm(Dl16ramdSxU`Y_%dRmW)n^}KHjCLjW{cQGTBWKxwAHMI
zftFZZeYTF-CT9DX9juMp#!QUa&aevX##=oEtB|{6%uX>o$LtcjXOI+y<g{v$7A*=6
zFD>Nelu0qW$Lt%kU(Do~J!0aRBxXv?o-tlbHKt^Rmt!hwnjY6NKT*&YmZAKZASR57
zVz<)Js1#FbT-npD2V@-GJx^n5F|C+(Ocqm*X~Z<G?_>(S_awyxq@;RN<DwI@SIpiq
z`^0XAsY0Z%#<;q#I~HWg{bLT0pT`^>b70ItF^8!WP1S>A4v9H5c5i%Wfvu&xmNY8l
zx@`-G#~cweE#^p*RN?AG4MqW}t-&ICjEo<1Qq0LQ$Hg2Ub3)9C^4np~s!~834(fMx
zhlY}hJtgMUnA2iTkKJ<%-GL^b)Ph!}X%wjNvtrJUc{S#>m~&#zjk!H$X3Tjp=gY5R
zX2e_&b79Q%n9E`=in%!El9)?PPu*u!Q7Tj6OZ}+Yd+b%bJm!kn?QLFZF4Ub6HT$by
zWX7vwu8FxZ=BAiyW3G$2UL(j#(>D9?UQT%_rbA;#m%TT~+!AwZ%xy99H+7|6zUy|e
zTB@)k1@4HsGv;wQvuqo4x57)zgE9BS+#7RW%>6b-RI+R(B{dmo`jCZnJQVYA%p)<6
zYT(;SNjs>TM`X{(Vl<ZJ?K0goz4jIJRLt`+FUUh;o{4!@hLtNyRlBT~RvJwTn^H_#
zy%_US%*!#a$ggbT(@2-YC`kiW6TMDfk9i~JmzZB;-i&!G=JS{@V&0B<C+0&9keGL4
z-ivuZ<^#FY%Fc%6{_Zka<!EFnJ}6Xv9P>%cr!k)?YFVI=14vBwm?Wk{F7##0S25qm
z{1EeX%r`OL#(Za<ELT^1rN2hE979#8Q9s7~6!WunjrJu}h=z>TX5FfP)38!_PnaX&
zkC;Cd=M_U@{!;Ld`Nwjp9QTZh-h%X8d-v-hFQk}2LXU(8hB;d)AWNp(q5k|%jX4wM
zN|-O9cf#BW^CZlh&?|9!ym|<*+ZH*7@=936_DSfQ&@Z8X;v%6MuHm5Zu0!=|u&XWe
zCk#sXE8*{i!3jeW9!+>GVQ9hv3A-ljmat&Lu!J=d)=XF^Vc~@35|&RGp0G&5Qi<E4
zUDW8vgi#424F71mh>ImGZl_BoY;C)s5?&&4d#X}cJD*}MZ34?AESt=JN=-7|P0P^<
zD<zCEffW)~G@#V(y}6YWR!vwfVU>ij30<aAwQsq4E;%kQv#Zbegb4`~6E`icm9Tcg
zrU{!Rtdp>A!iEVOC9IdQzGdIQs4_~)RS%iHkGgSQ@+Pv(P{&lND&5@pTdA1|TO@30
zr)uD_16=Ahd9G~}x8Ey{sC3vaVS8zquw%l`rqv&NIKGaZ5>#~;?_x<hos_V9!tn_w
zBuq}&BVq4^eG;Z5?3oZJBnhR2a)O@_SP7K`FQIA*blW0@wFxX58Z$E5ZG{xm_H~+2
zOK2oC6S7?My7iz09<*)YRzf?WldzX6>h0|CzkO!aqSooyH(|eosR@TC?4NLe6?I6$
zfe8m0KG>)vRf1Y7pz;q*I84V}4(kx}2opOh;pl{E2}fGHl%$G8kFnHa6OPME`(Kjs
zo|tfw{6Aqv!pRAzB%GIUe!{5<rzM<~aCXA!mhp^)Gp*$AJ>sr1aw_R|j<xYzqta6x
z$y|_dVZvnzmnU45aB;$=3DXlU$<>oVBz#rw%)(Om3Uh!ftwxn2RlAnII^mjxI}+|p
zxHjRsgj*7BO}IYchJ+gvZpvG?{sM*1)+*jC2e_=z?a<NYFt?e&?FlpUp6Ygls!&_*
zO1L}WeubBWdlK$7CGWEqNucYcUAsM)@Q|WP!XqZry``cON)ueH>-N;+2~Q+^l<;xF
zlL=2Hypr&0!qW-QBs`z+Lc+7AkIH;bW<S)mRL1PyzIid>rG%GrJvCsvU8#EwuO+;m
z@J_<J32!94nebM^+g4OJuVhq|ux<beyqB<qzGxu<D@`{4(1fQ?bE!&NNz;J>PQrHy
z-zR)#sb3^~nee&cJI$ZJO87eATjQv3-E;ZIux|Z~H$N=(D*hmYB>bB2Tf$EXKU<Bz
zXl&l)?h19|PnZ6#;BS%VPb)-S+#MZCmFN5;A5h3jSv6%=qVUbaDZ^8WDWvpC>6_9c
zrDw`KDf6bxkuqn>Tq$#>vm>Os<AS4H1ApFk_R#B<GGFRKaqrZ{C4m`pII0?D-hL_l
zQwFCDF_{4=^QR0-T}&RBqT6I=SsT@A-K$crp(zWb3`<$a<QL4#l&8rcs#Mlc-urZy
zEoIS^rBaqo8Idy5<d;YpWni(C#nah$#Jb9?V_FF>X#!GjnUrNyR!mtbWx15)Q%0w(
zkn-5**<PXMbgil$?}9NYE2pfI(!E6`o#hp}iKb##OI>VlrL+Z7#-*&0vS!MTDLbW%
zPnnRiY073PYo)B6vO&s*DeI)Ho3dWY`j%a*0xhWYScT@+PwdGbt-Cg|q>WQHQ7+rD
z)C8)!bZCXSdCC?k+oWupvSrFvvaQK0RVyoHzt~n*T0u=r*)C;!b!F-<_avZokro&#
zP0Jy1B)oIVE-BR%KV{dH-BPBc?3pqtW%rcHDSM>unp6uj&Fs2jdd}{5YY$%whEhs7
zrIO;QQ|#J7dyfKYQCC~Z1Sw%kEhS5dQsR^(B~_2x2B4Ov+G^19Lu&?QRIYkT!<y4f
z(W?F`+t!eAl%y=3l)X|;PB|rI@05K~j!royW#5$jQVvZyEM@<c15ysQPS;>R(7-`P
z<w&m%ncdfiq;A$zKTb_K+)|G;dW6ww>Fn9FD<iR^Qo64<3Lk4SCm21>=<!B1SWYw`
znUivk@Tn>1r(BS7TFU7uXQZ5&a;`P=tdz42oMSb1?WS@BM9(uNrGrjY&V?x#rCe+!
zi+M?&D#@oTdR&%rdCH^mIz9H8a%Jk?Te&~wDz#CU=P5U)%t*O9<(iahQ?5(7Uj5!<
z_NQicSiEqx_PFdO`!*xp`v0bsJ5%mTx!KAT=N1FErrefuZZ|M9<&K=wSiEp|$~`If
zrrejJ_hqzPTwuk5UYI?*hkJ`hkG1PD^#}B5;`ri&DGzCUX++o?TUwI~Jd(QWVu8m}
z9=BqjF#3GTlLns3>v}rn8N<)!oaa(^k65a{kn&>6OU8fQ=*zjxD+XRQ`kK*hmN(@2
za}<^Lt(3P@-br~kWuqD!*LW}GeFdu;3)c7`<-?R;Q+`YNDCJ}8!EaTsdPjf$O8MNt
zr|InXk-td!GUe-(w^l=6ta@uy;j7er{6QZLs9LMPvF3}Tj{Z(bR-o_?27XNWDdlIC
zW~UmAvdppe6$PpKd#Yb3QLMQ){r^b$Q(?i%`AbiMn*2XT|1~<xs3cW5HG0(C9l(Ay
zde)eu#+)_gs=51^Gl#oTtjjJPbJyH;*?cwk1kOA)7xd;e+^goU`qkdvHP`AsHTu^0
zR4+8?!Ph>8=a+I{gy>(huRzooSY!SggDm?{D{!!3WgJp-ZwyIiVa26kO0BU}jiqa@
zAq&@7%z*Il8jI9e)J{hj?S5ctq*`I8deTf{Iu^InC5$d<R8Qk9qo&nZwZ>{SmaDOR
zjg@PxQggfRqid{KW2G7^Skv^82j>H;(Wn+CFIOB>bDvF9@93?Q&-%M6#@1&0*y=UL
z)fiu6LJd9SxrQ}r&6;~}T@I}4FA1+zV{Nm;hDN2yItJD?#n!92mlW1Fx`EOA?9+C7
z6+#=Zo7C8}M#cD>8QreN_BA#)yoJ#%Wp=-?mEo;x?rmHZxJ`|1jX%*i`a+$UJDAMQ
zHFl}7qv(XfPBr@^ogRG;3cJ?Wt;XaUdnk29CqJpi?lts9LAgZtYeiFP>{+91<#d@6
zE7@r`i>OzlTEnjq82|7Zp@GAUMm6G^`?P6N<3Qu2Mr$>)8uc2D8hh8+r^e3uUTBTB
z0pXSbW$Y-s;qFIJyB|m0x5oat<bE}}NeARvl>ML@2iG{n>Qbt59hze`LB~|nO8g^g
zOtYjTYaCVMXv6wks*Yo79IMW)x>w7$_nnDEwU2Z{jTdUXC?BYycVSMFj5Hrr&|`$B
z)cCh=;nW(Z)i_;)w8ot^?y7NSjk9W8R^##-XV*BV#zh)O=0E4kfHoVRXQvu*=NspO
z8W$Qz<55f<ml$6@CVZ*6)AXDpnJa9dU2B{xYg}b{XLN^y(QAw<uY^^|btZ6qjT>s*
zSmP#375`QPH(Tm0R%Ta$+iKiyNi&V!VYFM+-8Js9dY`OuukjzM@o<g%tdRSSK4A30
zyg*g-h)MoWpGPg}F%x^-=o2O&<2+?RS)MlVOpRwvKzW}t@VwQo)0b+zY@9;ID>YuN
z@qLXSYP@F5w`;sp<Mll68#UfE{8r9Un0+_LpBZ@1==+)la{h-kKFaaO20qcy%Q?eG
z7Cz7M7Y4qp@m0?G+Q2t8zBTZjQEhli^B)cWX7necKO0rjF9v=!>ei4s{|^Iy8vU!r
z-#Pyu1OL{TWuUvUT+CcBC!>dfo*8o+5OWR#b7styb2MelV|ZSpy>kA126`LqW3;c)
zen!<(12g6q-kWiIGbm$l#$QeTZZafeXvQ}UzHP8T#)28oWjvoTEMuXJLwgi%%vd;M
zc*ZFir)DgYv1rD|nZ44LF*0MRjHNS1Wh|Dt7p#`dSUh8i483chQ*BIX)uFY=#Ys``
z<!O<#OvbXAdo5y}jO8+xmt@A88KW~+$XF#~Y{rTiD`kwySUKZ{p@l0(7LHoI@Ni%E
zg6AO%6yBOt)SaVMRft-YF)rh(iEgG4bDj-~s&q5GoMJDRjn9~nu~x>~8G27yuekQt
zgR(mpdX9B3tZAm}*{`r}#(Ej+XKawMVa7(8UgUSFuju!wJ=~j&Do`Kv^ZFGw$=Ebw
zvy9C%4$3$<V~dO}GqQ|&##R|yXY83#%Gk#2qqsCBW7~|08QW!SpRud)wUFK+W9Q6G
z<vSW@r(9lNKilO$c(;s68M_;252KTf>WLQ>u6a;jd=k+7tD~Hu4}EJeRx-Sds!1kB
z{fxjsm=R^fnfv~yGV0Lx*e|hZCC#Xrj5d??)fzpo-pFWX9AL~=MmuAljD2NEn~A<2
zQRrmsrQXzw`Pu9bC`teQOkSFF%ilk*ON~7+bDy6T{}8!W#<3a4WgM0<HDg-Fkr{_u
z-Xn}^3RB#cu)tBq5k4m4Xv0#k`-xqp9-nbS#!1FMG0)qry(@Ea&O9yS^o+~RQ8!q@
zeQi%qfSi$WruD^H8E0pllX0$^lW}pzc^T(tT##|0I(-fF+}Ef5-76v5=q_tFuYcj0
zfn1VtX~y)7%dFV1|1LbHuUhqUAD{nwY4>V_?lxXwNmm-Z%BY-bM#j~KugN*r8n`aw
z`kZrv0lEE688>I#l5wl4`k2~lUkkh~<96$UnHhJ=f$iqz9VT;^9_GxrTP`X;$#^j1
zp^SU&RGj-V?l=5E&e2ug!#RG`z#|%2_6}5+Dk43e@kGXx8Bb+Ao$*Y@vl)63Ot0jB
zV9y#UW~ym=({tZL3om56m@%-<{B`#})Jqw^W^P@i+F#ZzknyVN`C7)O8J}gmp7BP;
zn;CCqyr1zw#@iY1WW1a4UdB4R78Nk{GP0`EYqlETe@rUAu{IxOe3bEV#wYUm9)%AF
z6#Dfj>URKRS9js!-T{SgZYzGC@kPeB8Q*1mnekP|*9v+We_CjgwklJFYhdaXi9SOM
z-)H=g@l(dnnR`w3M>TWx!WGLErs~y?wF|$f?Rwa3^@0M0mKhq1zh(TMxhJdpPAvYR
zVijGbw!%x@8UJs^Slu-+D)6s?Sw;(WmsG5S0pT8X&Rw%8Fh`v^>&#VW?mE5e^r<sX
zoq6l@sxx2R*<2+L8&J@D{fdXWf2vbm&GoI*uTK9u1M27=pEz3&ES$4eQLZR`CXXuU
zgGGbt46eHmHLOy1Q_qk(%hcT{9$IICIt$hrR%c|LQFRuovv8e7>MUAkxHxOLo02N_
zCHu(3h&p!;c2|+=bQS)i9&V|#c%3EdELCTTI@j1ONd2ZkZmH@dBT2pTzjU2*v~{Dq
zZ&t6WUe3Vsbw(RlA?L4XV5K@^46K~<HQSD@vud5y)Py?s)w#dUxH@ap*{#l`I&0P$
zUuS!>|Aabg)!C%Zrghe?vre7$jlZr@*-eY3^$csw>U0Cc8|JAS)!Epvyi2K@$t<=`
zn^<S_x^p=(w~#=ct?F!@=i1i5Hvh>e$?ft~m9RsOcQmk*(Vgq;VqjOJ%F-==_d5I4
z*}u-@I(t~s6sx*YXU|-RlJU#AdS17LI)0s?PFSa2r%@-ePOlk_>m+qj%OX#ZRyqVS
zOYP!jotB;MV+FSBbn5J7l}fk0jj1fcl9ws=HDQ77=>c`lR(IDqu+Bks4z6>E37l5v
z&^m|JIo3*;YD|@LRGq`?98qVQ@l{UO0!NyF$~@Y@F}b`_kE?UMot{wVq&g=XJ~7wu
z6gxfD+SqN8vZx}Je0rTTELHf-I%ipp-RjP*b6%ZWjdQ-yOY2Opb3vU8a|<iiMRhK=
z)Jy)8SA}1uh*#(OI+xeE!m7Bk&Wt)&*SX3hB_n07v7~Er9mMJCrqmni+-#CJTIx+k
zyZYbqpAv4XbGx0+)L=AlhfzsNy}JzGZS<Zx_vT66)CcN3Sm&oYKi7Gv&ck(HS6Ha?
zh>0ots|Fse^H`n74L@P@={ipuc*<zEv}fu(Tj#kt&)0de&P!(h7joz9YOXS0uJg)&
za&`Hy8AqvV{+otBsPkc+x9Yr|3%`@gyj$lz!|&%D74lJzKerk`uJegm?9-h8S>9`3
z80Sk%{i@E_b-uAI-_`lvz_&(K<_{+GqtXBMi}=6P`Bh%p;D`pl)%jhczQHyP{;2b3
zouwNr)8MZ<e{14vFsQ*lb^cY*Zn(K%meoE-gE<>|6P2PdY0%R^52LC=k~#$DGLCBR
z)nM)h^VsRUIkPLNR0;QP(8u_FjSgtg&p>~pUCDv}!GjwNX)vPUBG^zZ{u?Y}sVZv0
z2E!UGWJz637H%+H9E%TKPPf2CEsIJRndcp4V6g^^H(267B`n!ssa#kkENghp2ICtn
z*I@Yuqw^A0ZLmUv6&tLSbH-TJ-FjDUu!`}=8tt}ywFax_GUFPo@t=AnFrmR(4K{4B
zQG>M`tYaD1Z?JA&{(Ao@s@tv&a?ZvEHfylCflZ8V`k(T*FwRz@2Bc)S1kr69Ol+`E
zgMAxp*I@ewo-#Jr!6YX&*uBAy4R&g<bDnqC2D=#U7NXL2%TFga*u!wi=#&O~8t7V}
zD_=H_a#eB-{RV+C+YLekS%bQPs6i~dX?M}6a-|Jwmeeg%oJNDDak}NV{)0P)C9_w9
zy>l$F{c?P;f&Gmh(BQzFe~<x59%A57qle|GQ*+IyH8`@tV+|f}a8!e%8=ThQ^ajV6
zq@I61sll;%uHzaUZ}^0qbE1K++9x+SCFh@-mw!fsGaFpn;JOB9H8{J$#SJbov2z++
zXyDui=QTJ#&wGIZm8nB^yC^@E5p-PI;PM7nG?;FD+3>O)DD}z)Gwk%L+)*WPwQ;U7
zDj5}feS;es+|}T2W8T={)&{pVxT(R-4Q?@Jw^5Q;3AZ<xY0Ntt-0`1sx~W~sdyM~3
zgNF^=YxF*&_Zxk{=!3asl=l(iJZiLCi0XQx!IKR>Z17Qory4wMZu3rqXBs@);0+Ug
z&ge@GUT*MwgBKdS_@6>#G?nv8gIA6DdV|*tbhQ=zUtPj)Hh9ZY-_B*asqfn9dq&?k
z`a!Pw#|=Ko@u!ybg;ACES%c3FO97pJY51!KUmH-#UH*3szL&o>Il9RY4SsB}ZIg*j
zeroV@gRPn_hX2ywR|U5wOE&pU1N`5@Turz2@q5FqqW@^{r{aHuzZKq_(Bz*6|2CMV
zfZs${N!nf4_2WLH3R)OzIj!$v>EfbClb%iHXfkILJ=m{W+RHf~(^baQvF`T)x??zZ
z)0IDu=`e4TUQOm}(pyz%r@cv^CViWXXfm=%KVvS~WLT5_O$Ia>*kt}DgSFw)WRRum
zQe7FfZy?&mLz^s+Cv~?J7HYC^)BROy(I&&2EMi!vQcnV1+AU<1WfWe_WCXg!cEy%z
zx;V3Hlhv9m-DDXx#5iJ(Hn5!0<(p`uPfQ&vG+EJ@E9H`746JN)6{BN~>aOMLO~y6Z
z&`#GdI>G3gMpfE)1KnGAYZ+d<$vOtsZMyq(>*bQ`H`&0j9<1tWvQd+bjk8HEv#GKe
z-aO}QVPMOqd&W|^wr;Xblj2T=sT4L`#_dh%3TV5gy9z$E$@Wcluuj~uNxMm>$xcmn
zZn8_0U7Pq#f+o8)nbc&@CZ#63H<{dIk0w)^TsE|@>LTugOZrgTOnm@$h`adGt>JQ$
zN)xY1)ilwUrcUZx(Dt1?N4Na+$&o3OieZzeNv%oNByN&4Nt;MO?x%}i`JqOE+*og1
z)|)h%G@G=Vd^^~EFYCk!MSV_6y{Qd7ZH}qy_iCbBBnLJ*$iUuB_A#)p(fy3>Z&YFj
z7<g(>@!%%<g1YQ*$jIU$Hfp}J>(;{ztM;i)4mW&+(P=sVNCN|wE*>K%Y4T{3$C@11
z<apVn=`Loa(g|kOvy7f-^rR*y8&K*gO-?m@TFyD$z!^r*Z1RFd21%aX<eXgQTm$DB
zJ>TdBO)fNWQIm_CT+-xH`Gb9wb-MApSgjUN*I#Z9c14pbn_SgoMw6?X+}h-}Cf8Wf
zjYcJTtvtl=^*QH;Ci*0rl5Wa5H#fN@$9hauNw+t-C+EyGa7U9nbIx4`?#|1(R~^yh
zeq%nA%RFG<!6w@JQ-KfL=_5u}#RuB<Y4Svq@6}lI<R_avFLP<c&6@R8lcx;`KV#t8
zCeP)ZEB`6J*yN=qADd-l+n1ZXo#R&wyxQcoob$SYH=4X@;H{kB-GF+h$-6n{y(aJH
z_yYqU8vV$q?jwI<;L|3bHTm4IYX8Q-7frr2@Kw(LT3ut;{*w7twlaQ~^Fxy#H5R56
zPqVo6lSYspiD~jnlV278HRPN8(d18gSKq>SecaZc_NMear%vV1!v8e+x5+y#-fc0f
zNuk9hEiP?QY(a}HT5Q>(M~j{<7H_dc%LVy4S`2D2xW$|;<}%LQE&8_T*J7R)^S0>K
zV!jr=Tl8t6Ph#rZN=MCGR4CAX^`!Y+e9(?i{}uyU3~Vuf%k5ujBdf0-6CLFq^U#L&
zrb7z4n=qv1X0C;d3Jh(rK#mt|F)YV3|8Z?uxW#beEMjy~qa%!tG&;(tBo}MZu#Yh=
z*<z`d3lyuhSh~eB))qZ*vaCstQQNio(_;A+qg$-dV#O9KwUBz<4g75DqPCkfY5p_6
zdn0(|7OS)v+hWz0{@UZF#a2J}1wU=X>CVFHR*~u&XJCyMYql8QVnWW}xW!tA*EYIN
zi*;M9m#1#jLVIQFx7eV?hAnonkD7|=kZ+4_Vv?I06=$;+n;Y&*DyD7KB5skWoEF=t
z5PcM`#iSOyx0q<B+Zo-y#SR8`G`d@hoeb=3)YWBRSJOeKOHXtP=$LH$ve7+SOfj&h
zQKgm)JgM)$8Srv`wS}MKphegsvQw$O?#`~{v_-Au?(<&MB5P4^xmC)A>cJMx76-IA
z(7LH*bRVN_qaCAr8Qt5c9?sd<z<x&6x%;==(-#5<8Rw`LN4Ge*#UU*Y&1DX2&E8U*
znsW{}aD>rmEso6jdPwOQ!^gEazQwUQ|0v!3ZE<3YbB&|dFy-newK&;MPceF`ve*Ya
zPit|yan5LQwt+K^O3AZY|No`sb2Q@YN?f_lYjM8GTwt`j5S^%Jfo$HnSiY?nPAPom
z7pJ#)pylSH%UWFC;))hmwz$i3efF1oTKg*Ve3^Yli>q5))8g6|*R{C0#Vswam-Dx{
zvBga-^!?1&|8SpL(x=t*SlZ+s1>LUFy7AT)x2cd8cec1)<yQ(bHPV-HUx0j2dp@&f
z9i|V9^(ktm)|{@-Mc$pa?w%I+8on>*+~1<RLVK{qLoFW8`Omd@B*%{$c+BYIMxSW$
zq=Bc5%5G1$cqYfs8kn(c;rYDlUog&#Mqg_2vVm8OD(|Z;UNii<(Kn2~Y4k0lZyS}Q
zzRC8U6mGHPUM#g2AGG*Temk&mVw;aze5`=kW=NY)EXaJ>;wuB6w)o6|;_BxuzA$`{
z_Ps|Izg8G&xuxm9ExtAIdy79>d}sK3qe}gu#gB%6$~iw9_@%|K27b%=Bjzps+2XGj
zf6I|tXr-i3HhH1Ki9HK*ep8rxb+=Ehcr~j<LI0d+qd!mdYtz3?k2XEq%+Y4fHhZmI
zSg~h8ub*!^(tTxjt~TQb7xiZ4+->)S&pd4xGj+^spqJ74+VnQi$7o-p-G%yqHUrzt
z-)2zTeYJ1Z)!j3PQbWr;Jp=Ra`Yx^xZL>g|W!o&*X2CYY+HPZCHwzYOqve@4>PNL%
zxXti3i?ms^%?K6MMj={vL*#yaR(C;IVP8|;>LUw_wOPE)5^a`jvviwf+MKP=t^ZS4
zs*NT`RlRgS_d46hx*^-oePwj{Hly35ZPyVi7+tr`dTmxTyi%JnZB{lcfi(=Q(q^oI
zRgJFJO*J~ssHPYRui52m{oiInj@L4<cAIq!xXTAU`ID#a+-3vA8@Ab~&BkpuX)`fT
z-L%bCIo`~`=54mfIa?Y~fimgVZMLyfEvUAY9c<5eyIgX613MVq(dbTX_X3?X*`>{{
z#@Ve+$$*%X4D4=na+^JJ{**R*8t&#T8?LnR3{;JVM*TK{0lAQbBg3)L#AvsKTAQp*
z-8j>XHjFmgwA!@WblMzZ9BH+ef&JU;Z9uKwr_H{G_cPip^8mw=KhVHIMi0*0d#Ifr
zW^}62!;MP*h+O7K;~bUqk2Y|O(PP^jXW)3FCm4OiuH8;*b8?$g+ML?v;Wm%7IZcCW
zU_p0z?rL*-n={&++2*V^*S5J%UfSlIHdnN{vdy_|&TDg7o6Fm1q{!9JZ!>i_cVT`(
z+dX%EVVjE#2w!aAk~Wtbm~M0_TRCe)sOz;`rS-{GZDzE&y3I9hcgd;MnnsNVxW3S<
z=N9yIL}5VjdNsMtt!-{=b7PyE+T7gc7Rev#E}HZ}f}UPbG?>xHO$wu?6mM@cv&|hE
zu!@0pCr+>aDSAj@O;Y=gb>F+byX~GdxTnp%ZSHGxf13x}Jk)kKC^ae{XrnJSYcA8N
zKE1pAQbnEWj^U$i9&58thkZLd-sXum%Xb*v;mI~nDN=Qqv%}MEo@w)Co3GkD+jf6b
zdZo>)ZJsmye47{Ayr?Lr?-Fa}Z{Q_)$OQL?9o<ZnF<)!*x<*-0_^8brZQe9h-)-}j
z0o^@++khS?(7Sc-Sm){y==UtXy)WZX_@K>)CZow(4+m=MSFs;!7HIQno6jss*8bdp
zUfTM?@=8+i>gzV&wE3;g?`^(S0Mr+rjeckJd!s*?+CLhWfSxxH{n<``Y4dB_z0@X-
z>ixsIRdp3R{MqKOHh&vumX+{Np89Xw{Y+3|g^qIrVcACjJMGbNv7%?kb(x;toU6m!
z9Y%H-)nT3v^LALU<Klm>4)b-~ABFT7K<^HHI_Ra>p&j~)*<oOZ`8)2Zb+xg7$Ju{?
zQT^q-TbDjwF-TcDXbMn37-B#+d10x-0v#8JbqEjZu#jb3Si-YrE!uI9%MS0bi0Pm|
zDQmH<0!MV*Dnd`gE@phGw@in{4Xd0b3@q7UDQncyR=#A`)K?&K`Q;3##uYlO*um>i
z?XXgZF|tXA%{#2zVHJ~EyTjNHt9Dq!PT%p}e|}ZkYAV*$6CP((=;2RSONa3tCYZ2R
zkBU)ib@btJ_gL&Y9o9AedPX<uuzs%F1|2q375Q&gHtx8~!%Zx8Qxks3z9_PVu(f@U
z4qF+2+YS>AY;ANKqpEbf4%-{vt-}r-_bXEAwsVIajk%MR-2Kn#E**BY?vQO|5V@8l
zCw17}WG0)uE^oEs6@QAI?%APasp^Yzhe`)|j#BmHm2dop(V#=vAu_CfsTqjXDF)J<
zFMrMq*K^L36*n<8JMP)$R)@CnJ4W})W%jmIiS5^6{|-NP_^HDI9S-d9lmbPEgE}1C
z;ld6VbvUHMp&d@@aB_#kI!x_wy!GAT>X8YBX&sL2aD;L6Z*IBVQRallm=hjt{Qv#M
z`&c_YPM&XT^%Ly$M5Fq2jHgR}y{91EY*?Kt*Rm(QPwQ~Hx?2HoVK)*5&g^hjhqF7J
z)8Sl8I^Ssb_k8E6Ip*OPm?pw9^~D`7=`gdy9UU(1FulVqrr~8BE>{<KxZZ@X=y0X{
zM-8|C7tc`Vs^3>E=(wiiE{!z+ul+x&t^;~%;_GHFpwgsQ=}3_#s1ysujt#}Gpr|M!
zii+~fX0y9Vc9U&CQS5-&3pNxhq6i|2ii#+pVlP-hMHEG`@ZGsf{>Sf}oOkZLc{B57
z=FOYQB$?Ehv%U%VeiW_cF}3RBqGWQx_JlMieo|HAk?&8}U||iOQHdOzJSMmLJ{XPm
zxf(2G&NWyp8z$%Z8uR_glA4|StIKNeVhvWR^yM{pN#NBQ@Q2;3*UJ<ZhswMnKqZM^
zqf4o4u~pg2<h-sZ23KiZe^P@_Yw%VLR@3~XIZgN78oU!*$QpsQHCR_;JZ;ss-{W9Z
zaD5Fv7WkkBAF3dh@{u^)MxzZd2|s+M1=6rT<Diq}e^G<4Yw(Tmmo?a+BEFI-QmncF
z{<a1`*5Icad{=|-Yp}5fCrq|BNs=-gM?b_GvWYgU#mN7;#+=eXz-vp5`RbNnYYl#*
zceT;d#_u)QR)fYicDL~dyRQcIZ0us=jHU@{yS)Z~)!^?M{6ov+j9?qj`ELy@fgNn>
z$yWCZO-r%?>FOy1+ep^2jpwgx8$;y_`Q+@XBn?G(vr*qRPMf(ku+2okcjFt`#>2nf
zWv8!bVjBnE)ZTe##~tZrw(;K0ZQR<-{K~KugEl(Z=q!F4$+x%BR)A^S*~U(&#vbBy
zi1{6D^92*{ZM)d$YGY3uJ#6#!0VR2Lv(a73bJk|Cr)_$<I$aX*L-@UH@b$Tzjl7LM
zjJ46vMt^1Q+8AJCZyQ5xv-vYo?-vcUjRziNV;>v)+St#=U>iehGgA1|0Zwh)rr`34
zH(6X<@%hLw+Z<-TKU3K_(8fVF&Sx{)<_~4VZH%xn(l+N&u!5s(9BktR8)MmhEv!Rq
z9BE^;jYDl5W}6{-xQ!#!yli2bpVQs+{!uorUXVD(#<8mA(P}+@WX-lc&c+xU{ECE_
z4Su|BW_I3#FnA&rP*&&IIN8Q2wz-Kr%f_iTPO~vi#htFK&aiQ&I+q$!hgZfYswYc~
zS8i-W?&+~X&Q^;}P`#KxoBCWE=h<f2z~Dq1{5XPOl8p;(TufDMWcEx<wlPKBcTt>>
zOe)Efrl#7s)CT?JWomGqdc-O)>T(;?Y+NDTYHZlj?Ml(<V$u%jIg>UV1&Mh&L`s+n
zaE+0UEhi(874>ZRF+Z?(e)Y`e4Q)JW<0%`Fje?D$jgpNUZQNv|Y@=f18XGfh)Y3R@
z%wS*G;Ll=cEnJ^B&{GLo0_|b-#Kg5WuCsByjT>xyTF?C0kuMMP83#8EdA(G}{1xJ6
z8?$WOYvVo}vu(_=al4H>Y}{gFE=P)u+idgS7RvLc)!Q9h5_3al5r0eF*1D6OXya}h
z_pn*&n3syVdLO~JG{+=(*G!p*_fO2TaleiEHXgC@fQ<)jJjAA>L0*vH^OWu9B_@tf
z45&@48JFOj$+YB0Z7iVi+jyMv=bMV~_eNaCKf#1NaG<I6`d;SV`2l_iU}GWukBx0M
zp0TmW#@9Ajsb_7oiT9dqc66V!vDn7*HkQ~}&R82uX=yf=(FS<w`$01#bz3^KM}l`E
ztisDSR@ivO#;dmZ(Ft!lRveJvQ9_$qndLecY&5@>HeR>!28WWY`Xd{wY`i7>o{iP<
zs99s<ZQ*xf4(B!Y@>&JgiN0&^-1mE5L7M$~fe%DK<bYC=k8OM+{HcvE74@0u=iCAk
z;GIrYa)W{_<*PXDH}XQ?+W5}K_ck`ti`v*?W0Q>^X!ACHVw+D$@azb#mbrWL-u~vR
z=gqb`u#Wp4Bl%jRjbCkSwecIPIn3h6mE3Xq&@w-Y;xerIeD)7ICHl`K+9k2w#$Pse
zOQL=ff768MoRg@N#J@In*szjFB+V@YpUTl|F+=t~ha15SBTzSqdP(e(#I8wn7-((}
zsTIwMpRU~B&D^iij2k4;Fo~u~G)tmU5{;ACJ&7hs@UE8aF#dew7-_Uz4ly}jC2gKW
zizHen(I$!6M<rS&je~7P^|W;7zkoR-P@iA_u(;36*Gk(bu}2bnCDDgEB+)U6?n&&K
zM5iP=C($K|u1T}=L*rro-1(W$pMdvGbW55|V|q4b+armdN%TshchdZ=h83hS=OoW6
zk7{ZjNA^vkUlM~TkVO9^1|+d}5(8QBgxM*&o2&G{&3!ukJS)X>#rI8Oza)kvF*Iq0
z!{DUZTVqY>@ZaS{&M?!StjhsO9LQ$$u#1O-k{F)E)+ByQVnh-nlNg`GSxJmanyGUP
zo8lj1(g!DTND_x8aahtgXI@7oak%giqDP93j$^ryJ6iadm~$*Mj4`Jtdhg?z1Hb<g
z9V>dG=t-g{Cvl1ZWll}vG~v@@&KXIZDLhWJy8nN65))_}KUxcuI45bw`1MKLki@x3
zoR>5sWnvN+Cviy<=O@kVa{-x2T$se<BrZx~3LCkpHIw#}Fm}uJ4BMG)81+a@mHd@S
zOi$ucwajIrmy1ply+V|Y#`~a}B<v)vN@7M5$t0X43P}``NG0JWkxn9$G&km)YU$|s
zl0!BLz8}7*pYg!U`5+((p9aZCz@h}XB=Rv1lZb@*g#x2WNtBbQBvG3*U!za~_A>L~
z5ve@kkmkXikgJopCW)CzT$@CL?q(mJ4u5hpbF9#HvM3%7!?AM}KjmWs4z_Mj;tpDP
z9qXnfF5j`^W>sw#M@L-8IZ50S<GD%PDtwzLt&uw1ncR7g{5U&3iMx}yCy9HLc#y`a
zsQX0kPhwsySzUNMpdj(XNz6}Tfr5|3GLK3tE}!UvxU70i{A%zC;U{Csrv#oBrAp5v
zv4|#-#B*x8&(+|IIez(OdlJtlu_TG5NxYE6+9cK`u`G!fIf7)d%SB%jW!3nwhW7t*
z(kv-gB=L&)Je-Zp*OFM7#Ova$PU7t(-VlB>iB$r${I>)sT+N4$h4>vY*U0ZN$U%C_
z5VM{2ZW8Y$%}WvdlN9ZlrLRxogCsso;-e%!PU4d!K9#An)9KSV#yJ=B`b<oYvLRdq
zs>)v`u_1}CgntmF@qC@cH!=P;iSJ_ky}(A%O`=?@{3!5~=w?yo@N*JdV*E=Izs8vF
z{QsWBHfor`ry2Z_#Gmv|4u(2rU~Z?GIoQ>~U()k$QS$%cED+-z0+!?x4j@oRl#+EF
z)Qd5l+ini{xS*|rb`I)0<_4jGgN6<oIcV&lxq}uCc6ZRkK~o3K9879r-t#w~kT<m^
zv^S2FLxw+@YU!YrgVqk(IQlR4FtcLGo@1swu5#H~d|=ex!5$8JJJ`!X2L~M;baT+%
zK_>^D9dvQf)iK|ybDObiALD^H{%ftOW6{a;$?~2KdN}CmpqB$a>>!i=oTanx2zXJx
zkAuDr207TrK|crm9Sm@=w*xMmI7oRV2Af44g$Fuj%A<eYuw%!*j(JmMKL>-=EPRx<
z^|+lg9VLf3*x$hm8FRmIfP({>xr=>W9OPiQ13QIe3L_khbnuOXZyk(saIk|Z4lZ`g
zL~w|MBODy*;7|n*6D9v}XXicCXa`3*INiY+j=3{B+QBgnj&+O^FgK(Q#t5I};CKP@
zPjqmC@K|=P_S3jU#<Y|_*}*A}QFYZwbGv=2@M#WD$TySGnGVJ|xIj9LcW{=#M7EE>
zIjp8e%7j?Aa~+&V<#p#?rRU2+Xe7MHoTSoOmkX7Avgk#kygR<c!BhwH9X#UTQU_yO
zSZN0t2bVdx+`%*lS2##I=B<w_X@RlMRXuAIv>mV(<gg-+IIKd-fg5ASW?3}{a~<63
zz;_ThxZ1%r4swo}ZHo>{4)P8{2a&WTv!JNzh6!nzHnU?##X&6%Uf;e^<|+p>{v%d(
zH8aJz*1>ho&i$6_Y3gFm7QInL+~j~uIO@!NZgwzBQN%23j)PkiqyQZnIk(aF9NgpJ
zUUldljE#HwPL4G#q1oeii^=}IPet7C-~k8o#ALry;6d>pa?A!eeIWP1sldYu5<Kc)
zfrHl^taR|0gU1~#<51<BKMtOBuvlrI5?$!v83#{0JlMy4kwm&klAJN0<LHnK7XS>h
zi<!gol$5|y(T&=Cej&y$I#}-DC8c^r%$J2%$Ve#69C*E|;ITYK)4>}K-gmIx!JCp?
z>tG$tz`<J%Ry%mx!5Z~`)hgbR46TB}s^z>Z&U^o9nd&$q{eVu4PJq4R;3IYV$By~l
zknQt{Qqc?;{EWu$;0p&|I`~Tb4UYMcs!9nc|F!t3z6s**9DMI!U<!j$*yvyry=V#z
zQux8aj}8(kAZ7M8e{%4rwA$?8X9rsx{Nmtuaefuus^QPxWS-Rax3~)11jzhDfX&X>
z?ezZ+{uYOs|Ks3askFm^mD;&}AfFe7dDRhfmlWy>)Dx{*4r6ysVK;HANgAfmD1{a&
zv=p;(3T+!0t#(hLNy_-BYQm-|G*i_W)jZCyRSK<B=$^u!DYRii@jIu`E`|0fbYN?6
z=SQ@f34;V3l`S>tBzc;BmlV3D&`px$Q?aUK4{?b1N};EOd!^7@YEZ12XP*@MDym-!
z0|fg2r^LO*skY2MDeRlV=_#C%!hR_XPT{x|#-uPLg`p`Nmcrpx1yVRzVE+^jNa4T~
z4pMNW=y1^yshvZQx^WDSN`YgrIt&jHCjU@2pvERurN=%Zg(FiKox)Km9G${3u^5vx
zAs<W8&GI@nWhP|?Iqr^6nddtvrEmh1@Zqm0IVTFt<-G&XD-b?K^i<K)Qf9890%xW$
zE`^CHoS(vYseM+;Y!}n=tDDAWr!YaBb5b}rwexG-^Vpsm8l)GbFe!y;;!vv#Q@B|9
zOcuRJbc$lDNiLBBQ&YG!h0BDg;pGDSAzJlW)fFjRnZk6Xtr4X%)V4|;Hf#!OQdpaU
zn?gE;`%;*fLMDZ53OA&1qmp<jgegQRv$yG|5Qv!*&5JU_Xt-4nrsgwKC<>QSC<|0*
zgelBOp;kc(GYPM&6}%>emz4wgKVN8e5wA_*Iz?SivypqJ@J+(AQ<y`WRP3yjnTe{?
z4FzsV;hq$%u8FxR+?p~gy4zB?L*RB%K1U;y^iC#B;chWU@^j$UJN3CY1;#R~`%`!z
zg+&xd;X#$PK$KArsf8bwGV?_rN#Ries!C&cOh)y13Qwf)WC~BE@QgT5r_7TJ=CCle
z^Qi=b%VmnRz~?k}USd-SEKcG16qZPGX$s55d?AHpDZH2ht&vArvb&iBA8J(RvK1-3
zA|+R+@TyAWSa>6a*HTy+I{|WDS5_R(Z%TNTC@t!(6#5@+tnqCLyc1g#%UYMhyD9AA
zVpkXMrSN_VKc}!Ih4m?Xkiu6fe4WCFYJrbZ_?QEnzY?2d7Db<=z#~4s5a-hrK2z{>
zNmgaPROxKA4T@spFyS{TY@(A-;akOiM`u{q`ksD|yQ5sVrf^LQ3{gw|n8Idy65*d{
zGm}i;RiE<w!lp~%uN3}PCR;h;1b!3!U6eXdy+2a;Q^9KT?QuT;h-tY<xcFCihiLWa
z5*7p(bzD<f9(%%IUDtSEUiI9ahn(!@8tZN6qP>gyE*iLI`e^8)g^QLh8o6lfVt3aV
zYEz|cB3iZ5X2Q)~@R*}n7h0sP;{4mVW--~?-MM;XiEUl*Ddf;Yu!oBd65Go~M;D!3
z?CF}_#m+9exag`V2CGN75Ofo#yJV`h=pjx|(O%;B7Utwgc{<NNF8aFY=c2#(EParR
z0m6I7oPlwM%#*41b1~S(>uJ1^#t^oci;XTeu{B)m@8VJym$^8=#epuyxHz8cf3@3a
z7e~1m?qURExu@siFc*irW?4JR#ldRKLtJAUT<09>ny2dY25j&nl>A87+@hKjhbEhQ
z|D%~L{}j*904?hnR)NmnHRJI(*R0l_(<b~0F2=ez%f;C)PIPgSi!({<S|_{a;RVG`
zQ_iQjI8~)rpER8=<{6?CW?7UR=VH8au5!qn;F`ZtT;$>$7w1a&JQo+ZnB-!j^f_OY
z$HY;$T`w@jUFe#bXtIR+bTOPMu6c@dv5QN@<O#-nqBPYt&%79Wxr=EoX1SQ{;tCg6
zy2!c6yO{2R2PRM;sg|r!TH6K7qGFDVlnd8I+J!G2GSd9<6HJn<EPTiXmZt_JhgTqh
zoA$9n7m<r=T+CEs7L;?zMNwdpewae}vWtp~S{GNbzI6LaKEp+*AHA`TT%cY?x6gs2
zDDJc@gDL%b7dN=LQB2B^bCcA#SsZRsku%4|EiPVmvBJe%7q_zCT`X{Mn~U3BJjk|^
z&Ud)D)5Tp%$WFQ2#XVB;0m@%!-K&P3r`Y@An%*w~nhi@~L$T!_qL^gnyLd!k7&9M|
zV3#rWF&B?>IJ<bx#S=>Vw2OrtdP5RVx_C<R-i{p?w>0bjXIv~2hnQnzQ&&^UVi(W5
zSmxqI8Qu~X+~OdADTh4Wg?`;m<=JA~+u;@y*F4Kzyd>o*Mjc*p@v72(?cy~TD_yL2
z@c~Dli#J@Xaj{nQebdF;F5Z!nt6aS0VzpASI?RNXW#-ikN%{DA9X-E`_a*<X3;q>|
zGW^R1M-T^HRml%seD2~47azI!Sdu(a>=PHCs+ym<=C6Xhn2?hf!Iv(+qEqT_3fdr0
zwFDa5H|n)-m5{ODx%ghV`q=IV7eCTs(@3ZB6P2OsNaLV1es;0NMcXvmrSXf4U+H7h
zXq?7YHlvHWY1B*OcNg1S{N>_r`b=5-cGn!u&HDaH7v0^g4A}_mBOYV&kBc2HPenH_
z;$JDiE=Z)!Z#wIw&DeyZs{K+u+>FV0Nuz$+SlzB^<NxWacas>$AltS<8hi_-VcN6?
zV=1<K+Bo@UX)`pMq|sDq>#E<Ir_myfmT7Y|bSv?zWiesvG}<VC=1KM1r;TIWD~&#B
z?2$%?G&-iyNlCh;(K(GSX|sOosw6a_2l(fX6D@u_!?fL{-kxdn5a^jkuQYn6jelV8
zuya@LWj)``NcK&mpK{nwIrmRvA0-)(#@=d>fobC~DLIHO-^n_8xWUwRUv^4sQ~kl5
z0@C0fFMF9$LzUaGH1<#9fV6oVgimmO-DaYOr!gXp^Qm?kBhwg_#_?&KkjBAj9HK&x
zVG?@&G!9GSaABTi&o(?FjnQcwrJRpU8;8jk@QzNK$+y~8OhwmpECteL@*Sfn_9<)1
z&f<ZhW79YzjWg3`d3hphl*Y+voRT*Fij90)8mCGDX4tTac@_Wkw3$#?@p0nwNc?ls
z7@x*jX`Ibo=wnTgdTa;EA1{Mv@1ILUlKjN9Sw*ab#lv|frEy^zQ`q=vOqK#{3U<>)
zX){|<ZPH89n3_gS8n$|YuVh@R94<@a@-(J#An3b;E7Q0_M#XYz%+zqYY=G`Ashp_;
zGpFr2X{6K$)p;kAMmCK*DU*hmhM&fDX<VO1kVY<zYtmqed3AR&jS`zhI1(+0vL!h>
z%4t;6xLTZAb;nie4nD|W?2NQ=Zq%*WDD$g9YBE!;ac$Z>?xzf!_dA}2lE$1gZb_Rp
z&y8u^#0s`Ce(z=_pQRR<oi=|VWS-1qZW_0%#CKrbn#OIye1VWrcPL49<$QM<_oVT3
z8Vl37m!{RidWgEE%@XcDsWC5&`vpwvaR3Te?Pq=(d<o<U_30xtTJ8d+u^^4d)JKnt
za$M8k*;za@p9A5^G@eomP{}Qp^-LOz(&kyl5?Y|_ik4;$eotd@8qd=Sa0K;Fu*!UZ
z%lwzJ`e`gn<Ha;qr16R>wOkp}*f^)Wl*Y>nvYHIOs%D`@trU1IZI($?iKX+Y%A0Ad
zqM2ndIfJ*-SWS<SL5B?9X3wUvJ&nK8Sd+%uG`>sY`!v>Zz^3tK8XMAhPj<3CjSmFg
zCv%WlR<W}_OyhI4(no20oW>_<e455*svWiB=&1UTyZ1A~Unn^NAImcKE7j<0Re{e?
zzDeU-X-)%R{(RE9F^x@WY@uUU!XN1QRo0Jkq_kuX>dmzLv^iUnUB-)FSN%#)DBXTb
zgRjGF<%rO4vVTuwTYBd|y#7!@e=0X>GKwev(45$<88pq{-!yil!NVjQW?*HE52=$u
z-3$`K3?gG@2X55Y%V3v`@dNc0wX67iO^BS`GG@rI@hRVc&mA<wHp&=((pX7$moWL1
zX_f(hNy8eo%%HjWEiz_mFb7!iE`Xd2+KA7kEHiAY;#f+%4BCrNeQ0tWGw77Tp&1;O
zLFWv*P%MM}Gw7N@w+!~pV80ByXRv1m12V?Z^$^`ll);_?y+nIwcCJ18P}>anWRn8@
zR9633o}IgQ1_LwL(cE~^LDFiUjF}~=Tc)lxID;V>Ga(LDLe4Byk~Ue@mProCU_=HZ
zGdM6~2Kzx7Goy`boEV-l@5b;6{wU?iD0iTBa0Z8D@KJYD7C#ALCWmKmL<VPOFfM~5
zGZ>x0i5Z-f!BNy9gX5JOSB$iiV>0H|nq#HLaT)V^6$=`Z0Z(RTJ||?%9VNk7bqysM
zJUN3?#V0;RtwGIClb&3epDxADkO1v`d<JJ_aBc=XL+os2LifUoPso^C66So4a-int
zWiT;=^QFlJqHHU^F+w^iW85QUF3Mm^1~+FgD}#$OxFiEF13!bQ8C<HychstvWpHH%
ztLs{qXUwEFP088#S7glpxS8SfjJX4<QPFk=Nr_Q0MsbLxGH^3Ut0L5pwV-KbGUm;(
ztQ4a`1{vfsC}vQiuc%|?Gv?G*f=~i1E6SiC%p7>wS2=@9#{32Bh74*mxGICIGq^@3
zF++VyF;<W{v#gmJT&E~9uT>^oeq5h1?&awTrhh4Uqxd(8$>L^bFeih1Gq^8<TQZoN
z!R;B`!4A!s$5^~$eXU=DhI$(fPm7H^Gv=#*-q+lteD2DCKgPOSh4SqwPMU0}c^TZF
z!NVEMXS-$aAlqEOkfs7$B0dzi54+~=w$>vVEX?2;jp#=+SfFel%i!@0o)BiLr!sg_
znAXnV(=neWy-0X*2G6rEGG^9(P8`;hzm=yjmkLWV7&<bsR7$eSbZ*PoDH$xM$4;1+
z`qoROmqcIAU_}P62){~WU^iv(nu04ccs+wRGWdd9J>tA6%7w=&dO11CDt$-%cSYBT
zuFYVbWGKLk)7E?9zb{%%^+5(7W?+sr%iv>btH*+T<%2r&N#AD~e4fF^EH-8Fh0Jxg
zEb3?RCA*Rq0_!W<RqMph8GNlVLYw@C7NW89T?XF^Y^2}oW^T23ZOY(>41Qz}DvF%V
z8FLp*P?gz|!7my7n!(l#{>)%IheO7^rt*6R+i1pmrJU-`Ki&F+gGk@W@}-x*GWa_K
zWKk!Je^_ODGrIjO4uiF+iTUcPe>>~*KdgVdCK6fmRTK{fpT?b^Eb3*kOBTCk&2hDS
zli}Pt37!Ye%sb3T)EjIb<2J~eQQ0tyMp^JN`lx-Z##!v1#Wh*X%%VvaO_?DJ%A#2o
z&9fMg#ok%8$f9M|tVud&(JE`4CvgXX)}n2)Xq!d5toZ{h7aQ%F2@N%iJ9sM*pGVX&
zi%t?|6yL7zl0{brCtKaJ=$^%%S>vLAr2mg)h<j$yD~sOZ^pOJXcyp1($4D>}s?j%#
zepFj#(?4sbMQ-~K%wi#z`dRF!B!jZpCkuYbLVISOgR>Zt#Rx?W%^K@<w1GJ+i~X}W
zKxNUq56ogg2jeXdQi}~&jlR&+Iu<=Li&5enEK1HH%8K%bXK_Rpmu7KU7Dr|=I*W6&
zI4_H%Sivk#Rk_Dxajdjmpx=g4tK+g5lg05_oWOpO4r4{x&L?GYV%ALP)lU-GN+)M`
zev5jyj<`HcI-H)x8Cjeud{!1`XE9D?QKj)&a|#E+ge=YxX14swo6W^NTk<DL@{%m3
zs?hVZxIkc178eRk&f+2g_Alk9WN~rU++nfe^lbE;+?b+zE3^{0T)EjahAgIKam9ZU
zUYW&o1#2Wjt*D8UMT#}bf*Y`I7HL(XRx~3TW|7Upi#7Mzo63aUlv6Y26{N9IpD2q$
z7DXkjsFad$nL}Qm+)`mCWVu%<cE*1+sn+h=EUwF9Ig88U`Ydk9;!zqy7B^;bQx@~G
zxIc@VvzSFU(#pCki`iMMXl~sq9p+@sP4q3wbFL^?M=Xnq-Im4eRXy3EJFGi}*_iyy
z?QWK+qw?>`;@&LoQ%yO3tL?)a9?0UsEFNM(daTTEJXz(3RWEkpe1S)(vt^Pzmc`>)
zJfFpqES{h~S@YAA7k%p~j&A-wnD(smIiKb*$>JF`OSK@j|FhESxhxjPtxd%kyEKaz
zvRIbIi&>0qXKa9)&;xU#XMJf)d?oB<s+Yx@EY@c6N*1qX@pcyPWbs-SE2YEgEMCu=
zJxu1w+P#rAkH6o{VpUug3wkSS7J-!EUTF0LKz0_3W7Ilj@_rWUvv@a)_p;!3pw+Dy
z{*vs2EI!QQGwJ`41|xg3O&#lFIhIed`1C&=&6<ABiqrGQz3@#I8zjK8z7q56SgUWv
z|4#IKMOB;Y2j%>0*6gtu-<8Er;%pWr=jSZ8#P}D1E?pB_>0Mh`zh&`z7Tf4r`P~!U
zsfRzZ7|Du@ZWm?nuPpu+{wL=Ao5c=c%QNx`(N+x-#C1H>^{{=gwP~9<<CNbU?&@JT
z4>$R^*++d34LmIO@REmy9vXSbdhk3n_OQE$@t$#>O*}O9aDaycJv8&s+(SPP{XMks
z(9**m9y)l&`M2`WR)Dy*hc?3eyqdvw!tLW&e*E51xQA#b(av#f7Y|*9yTzRD9`=ke
z&7K+dRIrza-U54x_7UwXN|~zU01x|!v$yELIChYSs&16r*Ta4>f3SxkF&@h5$9R7M
zYJQN1;lv)sc;*&hgoh(NjAny-80Fz$4~KX-)WcyOs$Xa>;wqP?m3rorPfp55c;*G9
z`Gd_;;Wxe%>fvY)$9OoFdN#G{bTF@c^J7U`J70+9w9XGRkN0qbhf_VA=3%Ud6Fr>d
z;ba!k!s7Wke9M<h1>R2bE9q018;_9XEkAEvJ)Gg;Ob_Ec@I!{5CYhr=I55q})ZNSp
zKg{_o4`(x<y4D2G47!Wd-RFp&>)||siJ~-v^F3S;<4GPajPYa-JM_n~DIPBNaEXVh
z9$XI&KL_)0nTP2fYCK%-VVZ|4JY4DFC;jP?=l}4_Q%<#f>FcyQ=EH5<Ly`$Sq*zur
zYgyd{UmoTa!s0rUpRV&Sb!p|C5oHncPOy9rfrp!EqI~VsGv8~JX!ClHH}4@7ClX~;
zL7>Qy)x<o^ElaW@TFZv=FvG*u3f?Gsjfd+!+~8rRhik>TPLxG|!o?N4vYkb`cROoJ
zTk9r8QKdQiBxZS-?SZSZIRteR4|-;ab&H3&9&Yt;n}^#y+~eV14|jOD)5BdfCl7C&
zlep?n^D;BPIN;izFWqfzW8QhY&%-<q_j`E2GY18;$9eBlJ-3|8k5if&&O>Z`?jnj3
z%=hq!hetgu@bDP>_hfTF`*<9?%)=8jQ4ddfc-q5a56>%VAx((iv8r>Q@vw-UrOlc5
zxc>LddV~MeU_MJcEcNh$lAJ9jZ$QZB#f_a8<5K?Q6yRY6-<tL@+{Y^(UiI(`2MFK%
zjP2(q4=X*q&bqT|9@ctT=V6tG+uM?POL(;?t%U>j9pN?q;ZWyyJ$&uq8xQY!c;CZ%
z4<C5=N;0(V4+TE=@R7jBqRi?Ojz<rlF>Smv!y>*=?3eUxDsF><T)<PFL+M)&-+9;+
z=kUFUjnrHd9|Z_VfAH|51gbgkOFE9A&8p7NqFX%hk4t3!>S3#g-#q;8p_Px;KDN;~
z>3)4Q@$n~Jx5ppfBH`mN4}a65INaz=<VHBd@<a}9snN9ff%d|2iOYtYcd+53j*s2w
z-hI^dQP0ONK6drZu0GY{lRgf4PJ#s7J9>H#tAUS(J{tLG?1O)b>^(6t^I-E?3g4gP
zU!3?$bWW*FeKhmY+(!!^)svt3ApqxkIum*-zFpbU$KHC`vW<_nK8E-h>Z6^H_C9*~
z=<Q<<A02#j_0i2oM<1PhboSB3H+S)TKa+m!(5~j|a<&O4ZoXCC-N&9jdidz+<B`+N
zM*)<n)78Aa&!dodkHCGWy?pfXG0?{#AANoF^U>eO03TE7;s#l3yP37<-VCzJI-!Ug
zXsp*hKKAvopO3-5IT3}67E-?5%6&HO{Lm56Q4eF3j{|%h=$rinem=k(G>$SFz^B8^
zTMd64ZuVYA_&D6h5k5u|aDz^i;9wtz2p=kXm?)2~V$_j7M*GGa1U`=PakP(#KF(*?
zbMwc?=|0Y2Px&~`H%rqoKF0bu(Z}&VPVmi_P5iB4_0NVU`8e6fsXk8gVNPh#?+#D#
z%^g`aNDl9RIcJ^eW1Nq3e4OiJypOYdob6)*JEen}2<Uq`Yp_}P%>^l6>Ce@%&hyPY
z#T}Rp>Qi>g1wJPGxX8yO8i{XC2B7&-hA;e2QSGkqaix!og;~u@*zCfWie4tlHOb{Z
zrm?y7A<W`2iRnISe7HW+K5QRJAC8ZdZx$Z3I$9|kimlCG%(FOJTE<7#hv&m*6Y*ED
z11x@d#Fz7F6?}o8w)6sL0UvoEp&EIHC^Lx!3O<SgCDC#mTM?)gy-GCO#JXDG8d2sj
zQ{Y-3*TtOc1#a+hW6a@ca<hEQW<>%xfmyZA;m`}PTYy`9%=K}rkK25_=i_}JxBIxm
z$3h>^DEXZ}9`Ny?kGp)c$H?n$ANR!gULW_xc%F~@W6ZvL$j8Gz9`o_IkNF%dJ|6Y4
zfR@n4G#Z!9Cyg@)TXEFWw%K1#_;}LCQ$C(%Sv$=BFvl_}CzK!Cm<Li^8!VzqK33EC
zeLP14^RbLW)yMNbmiSo8(tU9H=HXx*t(>r`?^?4gE?}1Xc*(~~AFum(*~bccejl&;
z;OpG%AWkAYv*<Nun@G?j9oEA<MBqv9Z}@oA$0{Fhv8HXUC&wlDV37(h?U>-gb;q&h
zSM2ZjSmR@zk9U1^KR7{$z<yuL7M7!?&9J_w53%^68S#1_n|%D>;{zWb`uIpjwL$b_
z(N9Dv`Kgc3V*EMBosTaSWahLzUSGwrU;Fq*_*>EMM86l^D9YUE6@L`|ozC3HPr{o;
ze-_;$`im&#e-+p&`kUz0U9CR^tiTKeUVkdMowI<z-=gIIBk-?}9WjSbD9BGJAp+D9
zs4H4ebQe*|&^go(&>+Cc;xr7<C_uLW-2*fZuzO&<?j`-KCILRsGrQISng(bVpm~56
z0a^xVrGz}#haEAyBiQxdZ!?3DlPU9Wqu90q+68DIV2`-m&H*~axT8QP(Vx1SUh5*<
zH9$2;&Ypp}ecmrXj{rRb^a{{BK>q*(0_+u_Pk_Dw`US=#<tCbsC7;@EjF9%sTOL}%
z-T?*%*eAfgf%)3*i#q1-27>}{`As*)uO_)9=Hi@gb8vtm0fth607nEkGQj=;4hS$Z
zz^DKR1~@3d@BkwMb3)Yg?iT-NP0Qrm$4{uv<ZlRuSqBF=B*38o4hv9eoS+Zk=%8_)
zGd^*6VE(Z1a~m^Xm$``=;HUs&0vsRU=m5tAI5xm>RF%I%=w_{1m*BlKE5bv%4%A6U
zCj=N9;KTqYQGS@k(;hf>_#MQ)P0eYp9JxQWvQ7zbYJk(IUVw80oEMnCn{mqHh&v;|
znE}QH7$4xQ022b76X3!&*4gZ9eZ3X(J4(H|VRcP#s(q8oV|B!Z0VY#1uKz_Z5S<j5
z!z*}Q6ktk#X#uVXaB+Z3c=4!z(WwD0RSw6swA!`-2PV7naz)Vvv74?8Fg-v`0GmcN
z%-9U))_pse@yqF$Q!vMSDu5ecX@D03q}dmI#gVn+=6`@}0G?y!1?JnmYXbOEEC`Sb
zkPi?BD6<O!L;(r`iUCRiUTkh|nl`jHBbx2Z(alxCyvC>va8-aA0j>_riJeY&i=W@#
z+Rc~{SAAUV@N2=D0j>>jU4ZKY+#BG&05=4<F~IBqa{}BH;N}3c0yFuJ9t-XyRCfc|
zZUnc8&#1Wq<lHK7o9OKU?g(%vCks{Kp1>q$!n<Q(CS;Jzc>(SZ@BkY>Fn0ml^(_pi
zZ`vLo9&!5P5O_Gie2&}zj|Sj3r~JPRdt^aizRldsZKVK@2Y7-5D!`%u&jxrZz|#R1
z26%=FTx?!7Vb0tc=HifcOUq&Pp9`=!!1Do?aOCp)uR5lKSSTBlws-JB2@Zi}Y~BDr
z1ZEYqT>ZXEl(X1N)P&!EiLMCniU2vU3cMCzWz2a!z#GDE#+-BQ#9PW|b%3`8-U;v?
zhf;tw0oIDMPV`+-&M!1G()9{{DEfgYt&33~(OjEY9|!m(z^4H|3-E1#@7U&&*%06>
zwgVpl2l!GP;_7E0Un|H_`OSa$jAEYOD^E&p46x}xv5fkWek=f2FPj7W9AHa;Ujl3k
z@JE1O18k)i3h+B+CYhxdCp)?beg?~v+4vO|7e9Xn*dE}o0DsfhX>Pr>jqx@dO>}YW
z0xrLI1h8^=I>N#Ti5!r_$Oxk%)XBl(i9mc98lr9v^>WxHhh1}s^5$vIZaLJ?VN(u2
z<j^38hB++C;n^G-<<K~XTXLA2!)JW|Cx?S`I3$NAIW*0oSq{x}*e8djJbodEmN|6J
zp-T>}a%i11*>=jIjR0}S9NOm4E{FCx?2*Id7Ksiy+{9N0c^|4ZDwnAYuIy>e<+8k|
zdC1i@hi*Ca%At1--E-JeS?xK%qGXR89zD>=Z0(fjnS-PMHtv-}pBx6{u!QDBN0&pt
z9GL&q-bRw3zk(fj7m&li90uh$Iuc{KgVf8~R|5OyuwM>?RnS2>+`$h3a~PV#upIW!
zVJc7iQ52P&+RHjXxiKOCjQo3BYj_SLaya&Ft0h;nYz;bF1#7sO%-!7_4$EO|4kzYt
zcn(J>pA&L8Qs5ZT(V|DOiMU&s!<*Ec73^&tn?sSKK8G<mOzUOp!s~bmf8EofOJ}#9
zl*7q6T$97h98SsM)ErVdxH+804y6I}wSVb<dJb&uGej$VW}U<M9L~z&>>MsveQ#-C
zO<=v)K{=e0GdCT)&J{RMbfW0_q8ErxV$U|P>Nm75QgF7mI+<#Uf)|TkB04pPO9d_y
zr3@2JW6|6eQ+2M4`O^hza<B!GG2fw9dss}E&LNXSS*fx)cscO5+F=fU&g}N&6by2B
z@ehmr%dXFh^9b*uxcJYZpkPtSOF46|I)x5d4Sowh1k0f|hpTd!k;BzFtd}*iFWBrX
zh4k7Su2UBiU!TJb%4bdvH|Fpm%{Ygf#UbWJnOO?X7Nx;3tJ`TpJ9gYE&SRpt<#0Q@
zAcs2@d|33Z9PSmkTP?t>?olw^*19i;c{$v#;De%UmIoxpq4AJ7|Ff3)3O*wGsOSRG
zfxWHA1)dOnQuHa&r$rZvJ|oKENd<U4m&0p0tQ2!`4$liLp&t-<LG)!goMoaf=CC}6
zm&B*V-q*{b#WJ52;=CgIDu><^=46}Kb9h6XuQ&v9SS9>%4sYeak-JV~VYP<d+lrz+
zzmvn79Ja`ltfjNkI_Ej=0?E$b6MbKFz32z*CIP1XNZ_q{)+fr13VcdmM^B=G_Bq=#
zhc9#3px9DRqxmY0xUa?eM)cd9x#|8+S}}+3bJ!^U_ST8tRMQ`GNaTS$e#&7pqZIp#
z=oYy_sy&>G{~WgF@SFI5i~gR&#9r1m;XiWtQ(!w?BA?lD^PdJIJ?RAgQPjW6ZHKTW
z-%fq9y{tNU)Xn2iaq8u<OCGKAXr0Hdu}qUZcFUuF9u354EZR`Ck!Vg8*<HBWQ_Q)k
zg3a=1F3>`h{FZrCQ?(JNV;=OS<hRYET`bc+k3C}CL4etI%A<20UGnIfH?za9J9c!-
zqkA6v=W#$Dd*;z2kAZm%%A;o<-*8)ie}v4N6SLU@z4PXG_5*m&l}DdE`sUG3oc?(X
z5a>x)&$nU{*6|5z@4Rtt#QWs2ZyrPP7#ef-%VTgJ^cz&*Fc}riW0+$3gZM+`1P)a2
zLGJD3aggwE(Gj97Wn><sgjoa&Iz;%;b_O4o$KiP#k;jpFr1Qw+F*<ICR31m=adaNX
z#GJ8t9Gk~+3XaL+gqVN408NoLc|>pP#Jq9rC*^T6YnsQY3QiI|EsqNXPS4{Efiv?M
zFMY;|a{i)LXXSCWf)gZjULNNtc&;d0fHEv%qGHb%C6gS|3l*H4$3=Ne$>ZWYrYjYb
zTq1C}1g45!Dteh{HQQ;DxkB_xQL0oU!2E4VCPke%6>Z7Qo4>rZp?T-w<&n=LRGavD
z<Ald@OD&IF9yFoLds`faRiDGPinGJoqqkMaqnJl2k8&Ol<ndr06(zq@v{v-0JZ9u^
zbspE`aeW>)<S|p3H|C@EJg&`~H5J`BDK(kF*M5}hmOSQ4&znSV7M+#HY=JqVgKjoW
zcWWNE<#Br+J9=6TX}209T)o_(eAumL^|I~~zFU;FzDMBRJnj>iCwhMzORIP&kB9U4
zoUNC~{5&4X<GDN*=kaJB3-Wj}kEin3hl_uzp;1Xp6M8~*xm<O5n!`t4Ww91c3-fp;
zk5BZBW0AnKq6hZ2?yYZH;Q2h3NP$y(SzIM9&EthUmgVtc9?SDslgHXTUdrR;JYLV^
zjXYN5@k$=A<*_o4SLp<LTc7u~miD$-`WE@LhP^B<vDkxe=CLY|)p@+F{NKuhdj8Tn
z!M39CNxdwum({*Y;+?!%LXf#Gk9YI<nCj*6ULNn~@d5iQkLPz-d-bx`=ka$>Q_2cG
z<^Qs$^$~|*Z>uQp@u^yX)#0fBOj`9(w|<$&hCJ$p*d@eQd3>G6#ymFB`OxHgTHogJ
zopdASyu%jwnf_lKPC!2h{GP`)_E#_KNBV!Y`DXIfhFkL3D!}Ibg|-^wM|)bo#h4Xj
z>>pHKx&4{P_B{R)W?Ap`HkQ+!{$HGbMR$nuQ5gjiq6k3`Tt~F7C|4ll>>6UX5M4tY
z+1sigqCtq(A=-p!7#jE6B1Fs3jIu@{8i&|DM3WFrLo^G~JOmq`{nbKNN<-b=%;GG@
z5|^s)sB^0jpY*oI4@k5P(JnL-bf?gCL3^pxF~lArI!Ku%d>4psiOBvrsdWy~MKUL=
zr-qB)Ekt)d{Nol-Xtry5gy<QfSBTyr`h@5!`MpA1GSpmbZEC`c;DMeNC*uAg287r<
z#6V>-BEp~$`zY1>A@&vXfDi|U*iU${=n&DNYK>tb_7|WITs)H=6k>RYQM_#lF(Sms
z5HE$`)3H$@4h}It#3LaN32|s>7Vr;+I4s2BAzt9X32{VdjFuPu#*raLhd3(4(QMTa
zeu!g292?^N5Eq0vF2oq=c~*$ytIZPPln^I`7^~okq9?ILtyEcScJ8SmP7{Azh|>km
z2yvzWW2-V%I$lg-CO=zvLWpw&&JA&1h>610%&TdMCxy5$gdHLoVseO!Se+2lLQDy9
zafnOfJTDQL8lsx;f8|~lbFPRbr-!&wxGGsA{J$DG3Z_L<qV9j{n+cKqk9-g!$DRst
zbBKJ1P*GQhhy-dy3+$8-CE;?2O03WS^kmUjDRzcvm48i$nIWzXah;eqh+ZFS@;_~F
z{7;fuA#PKUb)Ow#4hNKib3@!3^O<=y|JyknLfk3--Er()0u;C>2F&UZ+IEO}A@0`*
zdO-BS5OaH(am|ZP?_pUl4V8oOQH}A1A)X1bfR@84AjIP#o(S<|Xl6;8@lzo_&=PkR
z-~Z(J(n6h4izNR-h-D$34e?xv#j@Tdu?;^T0==zUMjP+CRG8pJ#nNMQ{kfcDhi519
zBaU7c3wk-kiV&}aX6u0JQTWvmn|fQXvE$@GI9^^4@kWR@L#&Ex!JGQGLUTK|S~;_h
zZ-;nC6<;Gt&e{;`V*D-#qwrk$y7jDGhz~=2M5h;_euR%TFza%MgiRFU(-5DrLGt)E
z#CIV+5Aj8aFKHz5?O%u35P~i9mGo&^&!UH<@BN0}Qa6v^hu9cmTZlhcmk>XM_$kC@
zWw^Pw>69PUee@4M(;0^NJv0;3FYGeD{-LN}Lu?JfWdJi|m(i=U2-f#At!MsJxqs1x
zhS(k=B^Ninx49+xC&a%Yc7$M$Q=ScOMF6*bB5;~cR4b@#X+?C@jeDD3s3-m|qPvQ=
zZ<}Z!Ky5omXc(bUgvJrdvWkuoc8|~`Let31CcFvdon|v(2AfA{A>1-Ts|c-y+sCnO
zBD9Thy9i%c2`1sSM}!XIvnd$t6w9!kyF|v@cNOgxp?icqBlKX6#OWEK7kzkyeIoRZ
zuvdis5e7u)6QOT}ei1hI-q}H%ciMB~OHImwvv-7nk(sBs44~n0nr3V78)3f)Lm~`S
z_2>1r21|zaNtt00_K$FYIJD2tbYnsdc^5_v50XB^MVDyEkjWKP^S!KtBODgta3wrM
z^w7xM=&|vSh;U>CKSB^;bcCZKa1N#IaZPe`gkvHc8<`1$!W;|7MK~kEnGwcFz2hUC
z5aFlZ*4W4_hfa*Z`DlohI4Qy@eECzFoD$*G2&Y9jJ;G9T-)c2DS2b*naS_Hxm>A*w
z$Smzx1n+dtig0#>32ei-7Ux7bH^O<58I`OQT>)2X7ets8p(cVIVRo+sx56%rFgXI7
zg{xV%=S2~wM7TJ@B@w1Zm=@uR2$x2<j5UhPBt-?-=FF2BvJIJpopNP_alNeR5!f$O
ziF_J=GJ+E!6~T?nI)v3^Z!V$jMaV?(*y+tJ?%uFBvk|ybq6zW7xNYym>&!nwKEgE-
zW~$NHlB_})A&O9-ZEJN`R8)x;&Nhrt8(~I-t0VkC=O5wyo@RyfnrwhYu<l$&a*a2P
zQ$U34Bix{-zAggStMn2#Mz|@$y%Fw<aC3xNs_Z>7>DdwHunIIJ)qQS+TO-p}9Q*t9
zGS2_D2)9!*!krQBj_}S7i;Eu?%39w=^HytAm#;J)_Sd`!_eXdz!b7qXim}liU|-8u
zkUq@PBRmorCqsGK(xYt2Ue*HjCIudg@OXs9J*_KtOFR+b$q3cu)^tt;R7N)QOoT-d
zcGQB;W1gkL5q>XWTM3JqZG@MKc)5rrER?NRKy3jpL|8`8Q$U>pUW~Au_8H+<N=A4&
z!fR|Owb+4;tQB+uJcL%kS0nV~N_Bv7Wv@qgBf=)dz8PVaz<Z)^iLQ;XTHtNbcSP5S
z^7RJhxlZ_9Q3m;H-}}PrML&q}VT6z9{3CoD%X~r*<4<YHG5%a&Ttn+ifeoTx#j#&U
z_$C%$LA<_;@O>P+QJ{MJ|AX+4qCZ90Ebz1F7SXEa%wcPU?GgSG^EbA(+Gm@Be~A7m
z%GWvAR)5nOHZoQIH^M)Xd{Hg1L)a>q7ETn*H+r0{C||dLdIdP*?@}<{^?(8nEMV6H
zb}OL1I87*DKm*A%6sM6e3u-K|djZ@fX3otDXkNfx1@tMPMFA}f=u|-G0$NF|Z2|2H
zXf51EwEpf^RonIob|_#E0cJI&k=2pqYLkI2)+OfmD4=Tr-4yIDx~J%!SD05>n6PI7
zy`*IC0@}AVoJRGmZyH;D3+N}weGBL>z^H)&14Q>On9U+G2gR}b6mS>aAgukw8C<{+
zfuRKq6QFu*-u;C;S3Q3L!wWdRfD;NBAvF#b9Vt4hV62)|V=0HQof}z)#`zppz~RD-
zI--ChV?4TmqlAwZJtpQKTflKK9#h~yzD=HE3pi2PvL8<>;N$`>DPSt=RlunQOf2C1
z0!~w^aRrPo;B?_L3OG|uP2H+3z^u+HU_t@sNZ@SImxo*D3NZFORp%kTzdhWP%j<#y
zCdaXp1THM>JgMv=1*a5nG22asNBL?&mn!NC(aS_H7o8UO#gzq27pF!vDQdHY)l>8j
z%qmrYTR>V-4CV{SNWHA6C+aIUC?F?5!(ijHl|scvq6I}2MJGE}serQh{Tmp`s|uJ=
zzyU=ZSj5!@TvNcy1*|Awrc`~ffQJgWR{eWj0oN;&8w!|Rz#QQl3%E((X3<%q)b{P0
zOcidSrHM1QfLjG_6TL(9c2P>+DM0yEH(7TVa8CjEigUl{eFe;mB`H8LUJtMn^?c-E
zMLk=<a|O&7ex!g$1r`+Wq`+gU?_zH270mYa69v5A#x&GZ1w1W*g#|1Uct(_iu38G8
z+AJ351<~hagiC~%ivG{8mMQpR0m}<`sj%~#6gp()^GX4)(t8wlK4W^VfHw+wvw)S-
z>UHHwWtO+HRu%A80o^6Jx`4L}*jm7E1-w(hngTWy@Kph83s_gcM+JObz`H8+{Q}kt
zycb*72MT^DN(HE7)vi7%;L|Eo^fS@V<5ZNS*q35f<-acAn*x3;;3qM^E#UhCHWu(*
zEJLwP!aw|nQ!R0G0Y8iROPv1}1*@^Y#+W($Ucj~j8WqvFh(8MWvw*rq)GK0p0e=;+
zgRNA=-v#_rz`y@VRc(1DCrA_lHCi1}GOPTm%q~UjT0{dy?Iv137Nas%eHw~WmEXOH
zCPlO>qJ0rfi)dCvt0Gz#(OfbuifCEfIZmr-tEoua6wx-$hdzfoP+*TDIuy~lh%QBR
zjLYp*G!C<>XH|!;it6_Nb7s_@;`gAuKrd19dlymAe~~zZ`xMc)Xy&+nitQiE3@Bpn
zA_girsEGYz{yqZx7O|heV9_CQ>`;MWMf`6Ru%LsA7+%C}MciJ*h$2Q7kuM@FVpI_a
z7cs7g@kJaW9gZmC$RZA<KWStgrmPMZU3B2iF*Uk~F>zT(2^?L-F-06(<cpm<WsWQE
z9NotkaY7MeC3dRliA9{m_T=JUMVuncvN-#Yo>s)^5<5fm%p%SYcIL^}K1&*&Q^dJN
zoUP;&B*ymKzku_Km{`PRMO@BQ;!iH(q9QI3X6BOwE@a*H(&>~q?bISJj`1Z`nQ7Lg
z0@bN!ns8e5iXyI5(bJ2ti%3eP8d_RCYfi;-ibzS!Et<#TcWNT28Z!klMP!TcBoK)D
zqST*`Js0DTuT4ZUuo-mev=bFkRH2kC6;W0!b*mIn8{?}4TJj9xB4!pbSGjRner*vq
z7R_BGuj`7qUi=%BXZ7ysCdJ-d#4Isq7jcU?G{`wcbBD#1e|4AgR_VY;9<0$FG%#iL
zh?sX3aj$}Ri&D>finvO1*?m%MUJ>^f@jwv|7BOE1JtRr?3k!N!W>9Ck>FX-zQN=DO
z;;|wgFXD+J7K_88Df46zPbv7c=pxaDqR)tOI6o`!TpVPo=XndD;L;+N36S}MKsDPJ
zg_p;i6-B(lE-2xe5?(FhH4c^%4k=+}5wFu%l+dn(HzfQ)5g!V?DY~kNw*;8~>LT72
zen)go5o?S1T^6{mh<Ak<e6NW2C9qx<TrW)iM@4*G#J_6fPm1`IK2}kmiEb$3t0F!Z
zW?5ep@ul#}Ry#+{*G2qP#AY$SDdJm!??k^BWvY!uY!d!K^heRES7hwZ3NF?{Zj10Q
zqQ4fgRp2*KO8#ENHsR{SvOk5l7x5SUzi{>W9VP!!@Um&v4q8G9iPFxwwM7Xip-u^P
zV@{(I>Iv^6x~u4Jacq5o1|>9%IellEiZ@npchM##G!<wT%QP?T^#3izX(ie^j%`!g
zx!!Is&ajxjM+qHD=vYFhl5zgMO6Xle=MuV<wE0uQp5oJ(yNT0Xly0qu_)OAMfR?sb
z34KZ!Si&H2`j*f?mgy(J#vdRx_KuU7<h%iwGK0n3S9HG;4yrX(X6z7ghAJV49+~@>
za6qj8fs_;;E;^!wktK{09<4^BJi(zQ99F`WB}^~jaK)Zm!g(beQNocWj4t7*5>6}O
z^b(FP;g}Lmlnm1zD=<d%xVVMMKVF;@N*F7^HPvyNwNEPHWN}UrJyo=NzjlT&(~d9U
zOyO~&BU)M2Tc@*1I6Ib^P{KLFFHAL6o*47bFPSNf&2oV_lSD5Roh*8h=oC>Vyjb9p
z5~jwSOG~&+_;S%{G5-nyj?J19>=L4wpDZD*iaX+@q<|}2buXD%GFyTt^YGPWK?%7M
z@`??`ueL+g6H>QA3B?jhC6py|Rh&;npq5ecoRpj)4udmGxVD5Z6}+y5>q}TGd_xI0
zmhfT;%S*UPocl|7Kx*7v!mJWzmoP`cJ4(2-gj<B?mT;@UZ6(|;z=j>!-a4(VX<=S>
ziFt1ccgL~!2(SwG2~f9rC9|%k@PlfZhfA1W!b8H0tv1mkB|K5WlO;SV-4=*GCQ6yd
z=^wNvf2xG1OIQ-~7nbm>@G~)IQ3-s}i%EDr$6cTjo>vq{)+D{#K>kv3UQm}UlafsG
zl9(%EonJ2PoW&^r3TJ^5UX#Ge5>}P)Rtc{w$k;ao-W07m&($TYiDTa`;hh-suB0lk
zF6O*j!h6E+m$1Hs4}?FHB{1g?OZcdSk4yNZgiqC6bTVwNYRfaL&*OZ);Hc!P;|gm-
z315})wfH}Zek1y==y#&ui*6L%B+9aW5a2-jNno?+&!SsIDf5fKuO)0P;kObleR*d)
zZ);%vQNo`rx`MAO*j~b4tV<ammhpE9|CHdAkt!Qk|8EJ$l`*D_9jv1`i86YW(X$Mc
zQKyW$Wz;L9Wf`p$yGt3n3+!6PZe`Rjqk)2rm?XYuZzxXHiW<kbNf}Kg)2xgZVm23L
zqtP<yh-gl&%V;BJmonN4>>)}$+X=L1i4Bc>hcY^r&D_yR{LW=FQ;^S#psSeOM7x)<
zr$E(Qt6KFcW1lkiEu(iCdnvY083P3Rin7FhW%Q46HPzk<4lHBP|L5;l#>g^8l`*)C
zA!Q6z>;YvQC@`#y{ROC4b+_uEGDe6qT$E*1^QXYUWgJq*QQ{vedPFR9SQ&>4b0>$5
zaAeFMEl}OsI$HRcGL98sh9-02%gg3Q;Dj>9mT{sur;DB>O0km#PATKmm~)yyRkt(B
zIJ1m#WsEQ5tTHYvV{#d1OW@ox&MRXA^DpBr?S@sAnOMg8?4yShZ21e=`}8)KTfe7`
zN|Th3`(_uFF-7>&GA=ITk}{?$NSVzojpUiI=-l|e{bk}`)!ZDqGA)+5qKqqrr^lR{
zGVB;91*pGUM!Jlr6wH*7En`+0v&-;e$yx!wj37>u6Udhl3Php>QEF8zqa<7|qe3f^
ze{0jwBDkuI8D(6p*y}~FiBrui<Jz)WqFg7+e5ws~Lm4+p<|fgbMXNq@PMr3Bfm_O$
zTgI)zw~5{*dV3jn2;3=JwUE1o?<wP6f%`<~iB|iR^no%SEaM?D7l=};hXv-B@kq>h
zw2b-MJAF)?$3>rrW1lR8FS#+{(`76y;~DYaDC5mC770IF#&cyX7JfnWc~K@=BCu4H
z-g241i*f97ftQ%SzzWe<L|+wsO?0K`>!Qq)ciF2r`n2v^E#_PD6^wdY!FS47Bd}KV
zy)xDbyenFr@hSYig6rvvRQHd{__&OdDmb}<Ps;d|eyoC)6?|64=Vc@+#sM<b7iIid
z#!qE@S;hu=yst#RFXL+gihWbYx5D3vvLm=kB!8oVo67hhmgEp7e{&gI%lJ*qpH-JF
zW&EPxucFL>V!VDYV|y8Ym9b6yKSas@Qy#J^^S5%S;(yBcSJm7>o2-}_p{fk6lme)r
zP6c&UwR#ooRzdv=c2SVAy9zAev2PVLte}a4jYM~kWg1sNf&U3N6~CEi^H_%Yv{KQ7
zD%huj))lm=plt>1C{RJK3fjk#T`Sn5f({CHte|tu?<7!lcU>xGUSNsc#OyA*r)Uq+
zYHV-e{-S${_7UwX%H;h7s_j2OcyG~xqReF93igxQ$BGWFV1xkMa7YD1g@?tQ{VO=2
zf&(kyP31uqbJsb%f~|Z~pRh<7WU7%BjFSApajHWE4i!DDg2M%l5Is_qsYX|DRE&?V
z;FuUQ&*Ne|M&S4gPKY^U1x^%Q)6_bpf>SGaR>9LMIK6_aDwt8h8RAS6J+p#w6^s{V
zxl<}QE5>J6Frk8TDmYgh4n5irWzJJ@Vg=_{%qL(Mh!RYy;KCSBuHYi!>Q_q_S8$0^
zO|9VaIR8rpE)(Tfhy03}ne)0roGUAsE>Kf}T|rWqvAGHy;gqN=nikE7W<@<wUo;S{
zj`zH9D9YTT3JStS(UNFcv?5BGS^>_pR}0)FdQBWVvw~|YxUPchE4ZP8*%i#G;6}x=
zO>VB>CSgtrbl~L7QnPUOyrqJ<in_gmTPx<F$!&3-{92PAE3rZDsNhanKBvpS=2<7T
zvhJ?no(k@j<WsTyeHF~B;Qk685a*$o{~$-4yc}!sa0T<le?;_A(FLN9iBjfqfhQ_>
zGUjy9B=~d%3uDeR6)cMJ+^qFn1&b?qUYz$Tcwb;i1xqV<L3mjOFITXlf)^EBF8Y#a
z^%><W!Yf5z6{RMxsn!IqSMY|IZ&vVb9J@;3Ez#AYZ;QSox<+)Z=sHoZNtji&Db|bg
zsptoyA6D>@0A)VrED+;W3G1^Me@+nNFDuv(W6FF}!M7ERti`BW<7vO6XA}6of{hhy
zs^EtTwpH*)1wY2Aey-pr;msAZa;SId&XKi6%wI%*r6-Byf1_^^=2DYB>Q7<RqE0Qg
z$1;Ca@VD?kqW@N~L%^y<Li$iQZV*-Xj)?2lqEXDRSBqVQcNN{O7WD-h)S{sPO_xdf
z@}$s)R^wXiUW+E;H>*W+fu^<Qql~J5Xi<ySVzv}*C0ZTbZG_v3GQ)NPd{Dawlh>l7
zf<r|+iFU3<ms)fcru=|fbc=EKTI?y@L$s%8uQ;~1z+ScJ6Lb0s^b_r0yL08UcP$2r
zGwA=Qx)LxdruTjCTZvLCT2ZzTZ6r(DC=p32Eh>c~651q1rTy;P%w1;gv=`b*Nzo#$
zmMjS^{194@N{g-kJMT0-{?But_j%8EzH`oZzH`nuXU?5FS9n7R*NZd~zM{3$So}sI
zHzD3Ex;cbfBxxd~ZMTXv4WXGxb6?(%`~MJb4`FZ!LnLe!LSK>AA>0u{8}WNXXdl9z
zeyO`cXzTO4MeYfqoiE{O;eFy=eMtwA`-L4t=oCWd5FSvni?7409w(1?J?$1k_YfWo
zp+^WkLwF?Q?sIyD@Q{@IgwR`(Gy2{Y^I>23Xz272pI2Kym3l0M$3y5J!V^+^TF7dj
zRPF#Jp9*21%6bKv`;6qzhA>FPYiMW)!$O!D!mJRUQ}JjBu@Huf)7#I7Fe2o>dFBP-
z$Ph+_@L~urg%FlxbO>WaLLrO|frk=PlzchlUbDstNydjTL42YwnH0igpYu1lY+?=H
zo7C2QHB&@2kks$$E{Avsw(LoSkPIQkXJbyCO8XYlb(s*15KKw(zC0U3&gWc@1#wGw
zXzuANU{Og&I5mW6BGZLzcSZ=m4hm3tb_jDM{6{!fcrt`nLU=WV*Fu;V!bc%|%-J5o
zf)G}P@J<K|Ls%5Tn;|R<VX=z5AzTu|>;ACPcs8_Da&HbS7he&=+niUyz*|C3%^S*<
z{~6YILwGNQ^&zYdVT}r|4Pl*#r%Yto_e0na!j=%WhOjY&O;Xsbn%O!(tp~em{CuD+
zN<I{!#H(jp2%m)TeF#5<@M#F2h457fUx)Cyum42|+y7(Oju5_7{hWAS%{xQb6~dkn
zzR~pC{U2pE@h$67Rp0rZ@hoRq8nZWqA4514!tWvc6vEFT91P(X>F*0+e+UQE7K?b+
zdiZMyzxm!{J+#D=9}eM22!DidOf?)8GRxB;k{=J@gzRLJAKLJzl7DILG5L4s^r`H>
zl5o$)`h#KcZC{Ti@puv?!YCQW<uP0lL#Z&%3gfN_+D1@1jI+bA!mz_QCyX*-JRQa}
zVU!Ky+^~CHyCRHoVU!P}au`*@I8Q>#D~VJHqoObQ--_V*;urW5&hx51uOU)RSltt@
z2(q3F!?;Mvi^HfHMlJD6Jq11j8pegsxc$A%ms}pk7gb$J?J%wk<Ek*O4&(kXI)+gv
zjBCQUSDM!fn}yLljJo3Wg!P3D!e}URT^Kisu)^!ZXcWeD&A=PNXzcSFrNFZbX5Add
zElQF%3FB6uH<dE?8!f_U8OGg`-xkL0VYCV3PFlsE0Ef{!j61^MvB@)hd$a#tQu~v^
zr?~SEqpeCEs~&uary^C|vk_W#PZ;eaC+GQLd-3~(9fY)mwlTL;7!QTfJB-d@JP<~g
zFuF>C5u=;PgJJX#=`QqkM?J&nrKGpV;Ivs$FVH89hr{T{$rHvSVLTc}U+J(FZ_;{`
z(A!iz9>xIW_Gi1nz!Tz282`iWZ*oak>ZvdWa=di&=#_m|YNNs!Br;eyB#fb93=@A|
z$g<Cg45zm>t4ApLf^ejemU~vc7{*JIu+-=<#)L6e$(Mx_WWcyE#w+Q4i#pNQpA^RA
zFutl7m?BBY(+MLIMl_6A7@07PFyfp!e2|RCK4B!pS;Uj1luQdbMNMBb7e@B~Yvz?K
z_?pEqoG^}uaUzVVVN46-dzm`jw{2Y*Gs2h|#;h=Ahw-*ApCj^?aBdi{u*(YruZHnj
z81p1t9L5rn`N9Rlg~CNb&u_1Xu~bR=?G2IB`+xCeVJ!D^J^2a^G?iC|u_}yr!gyB-
zYr|OWYqI7w;`^t%vB(?r_rh2o#`|Gx2;-YDzLf&AHiofDe6w(iFW)M{hCUGaQ20?8
zABV9mj8ByOTKH)gpNV`P#txC~!Y_oZfj1prihm{a?m>3?xw}Mm3-|m-!S#=?^IiD#
zSp;kQA&k9Y{HUy-!uU0e-^70w?h9kT$N?es4~qQ4QP$q_P#C|5@rR##IE*7<998{P
z_MYbQJjUcPsnHU;@njhFBWMu8pJDtJ#@}K56UHSGTpDp>^}o`*FoIJefe3;TKv^Y)
zB_i$`^zP_MN=0y%<Sbh{g0mwyN69h~RPg0xBRDsLauJk|pe5h`DLG$vKwewVTULyq
zl7#0+P*voD2r5V5=~RihztW{Lv04PxBd8H^-^t)jBnrvd`b803?6+7mf?7UbH&MYq
zg4(oP!pkFI*ttUdtS8*ut0Jfq!8MXx9XY*0rJN4DR>Hc%dP2&*FRB_waFZn0`SR-{
zXe54vu(2<{QG~B{yg7nf#G6FWg5HSWRwbJXn+cl>*$Pi=Zj0b{C0j?(%9nE--ASch
z-w{C@Uw)@=`P~uR6G0@3XcX-txR=h4qI?wXsSv@s2;NhX4iP*oa=%|g#|Sz_&^dw!
ze91!*bP?x>ca5N%cz5B0!X82z(~~`_5$HwS<$f33Tk<|a&)P@CAB~`I1pWL{PekyT
z&mR}*FZ8DFli~v+cq)Q{5j-8iGZCaBNJsE&1cM?N6~T+r863f|2%d{zh>}Bvw90FG
zxRNhK@O%U#BIsYv^&Yc$K0i`fC-gPMOA(BYU`hm`2*yM(HiGdHOpwCM!f~A5I@a*?
zS;@o*CMnB151%Z~XQ-~@^Pl3pYR5Si5kw=XS=QZp#eAJTd;}<hB)zTCytSHpZj*_?
zh+ts^iy|;1$VM<df*BFyBFINzM^IGpLIjowZJ;rpJ&q((BbX*K>$$*!?SXQdCp;ya
z8NsXwUX9?j2xdnxCxW>VydurL^MVyd1-!>TJ!4qmJY~&~U;&L+%<=H!>aLxOBUlo_
ziU{70;PnXJh~Ui#mPOo?|E0eE#Io-8Y&mBjfB&W0*nQT_cY1pd;;xL~-3V4kuquLg
z{8F9)EVw3uwJJr<=jVwGed{IpO89;R8$>n=cL+BLHw(8!uvO%P2tMShkKkh^*~GR8
zK8fJ-2)0Y|sY1$U^v|;a#uI+%jW7NaXBcg~IP;}HUSCJBQ)PDv_Xv0Ux!*+aEhQ3u
z7s2-t?A1W97e6qdNxoOHloIaBev07d2=+y=pAj{R(or0U;9vxSD1uS^62Y&GhY=i)
z;I{}4MQ|j7qa406f!`xItlH*tNBwkw^N@sCMF#&70ndmiKM}#n2>y=XA4Y!Zv)#WU
zVAI@2Qh{oe{L9E6ffrio0m>;v)Qz_#qbL<ciKu&-XsaS@opMk4>?qDrR@ta~fuM)W
zMBRG$q1w61B4^flQB;VcTNK@+s3>{0D5{H85}qH$1tOJ&Y_5t()u{XABtJExxG;)a
zqi8DmMN!m`qCpfFM^RIfT2Wjha*6O#;bp?hg{<=mk=nv5qqs`sYGECr7lN*hqOOwl
zqVC%=S&$#DCSt=VZiu3>a<7ZxdJ)PSMNdBqaicG}MdYR^ZuTWS#cd+))!8hH=26@g
zMcXJ^_&RN(Xc@(AQQR&`Yhf!PZKEge@HP1r)tz!XTW8kYQQQ+nhbZo6{Ey;Ze?&Ma
zEY)7g`~IWf(XZ!$C_4G_&QbSJf=@|xk)&%B$9KEE_T2Jd6i-DlFp3_2*`87KisGRt
zdP~wbihfb_iQ?g?dp&(b!bhX0W1UwCYkMq;{!u)kCLUKVv-o*3iUBG@PP09HT9TKd
z7%lRQ@LAy?l^rZTB#NO?3=@AYiWfw<!5%L1d=w)@*t&NcI5LV+zU0NIyMbrcm?*|d
zI8peraJ+C_6y779RGT0P&6^a(<S3>nNqIPmkk8%kQ#4^>QN*KoJBpQ2B$Vr&jwZ!Z
zQKUsOQRJg2L}5f>Mv;{;C-mxJb8Nzj!j5856pNKrjAEvU6Lr5xnkuB)Gzq6iF+&pX
z3#M5T&W>V^gmaaAP5hN8URBcj5{fm<i(<Yc<O`x$=yL{vB^q4HJ>}Px^+ps+qd1G-
z{|c80mkZw#Qh$Xs_l$BovMP#lF_e$tohaUoVs#X2qWC$AebQMQ#kV9;tc&73N!D|W
zqWC(B_m$+7-VnvcC^kj0If^Y&d?q=sR{WLU)~Nd~FD|zaqWDnqkAxpbu`P;ExH|aK
zS6`o;nly<;K3CTED85iGg*&47lBOyGY|^dwPIaH}gW4sX-NHS>Z~RgmvhSk!K8n3j
z{3ziMzSCGI@2r24&>K^4eD^c>GuXy(R?H2y2ctOQ*Y=CZufpG=I26V2j7v%$^L37h
z9F5`+5&EI`s=#qSm&ub+{HdhZ=wDI%9mPMA{L9OY8fCkuBnc=<O^B2bmh^QfFCD|#
zN}dxty}DV}tGP@JWqr+aWA1f<w{qwCk}5G&kg%e#l8`#*tDXyDZrrFWq_AoX)ncfw
zvNeS@gck}g5?(CyzOSz(eu<FwTq<&zke8v_Y%7LG<LDd5RWV#0!&@<|h@nml*TnEj
z46nv;Z47l|7#hQ{80x8D(-@k?P~We!K@1JWuk$6>$IwXp24Q1gext}u!kdM+2%89R
zjh+6*LGu_|Nb<C>rSSF`ZWHmm+A4<DO5PzHC~OnMoiW@ML)#ecj^Pns|DG6n#LzQ_
zb}`%=Lwh<?S>0mj5X1d3bWyTn44q==Ot&k!Tbn(;D4s3y8<tvS13c&H>etCZ=^n#_
zY)d-_Do~A|UNQ8R&O^Q?>**82!!hv1kDd-a|7Z+-W9S#dV=+ACYd#*slj8kjcp?Vx
z&YDH|c2nYj7}yH!@m2>V-t2lNhG$i3kYCT>7>4+q-?lvG^T{y`kKuVGN5n8LhVkMr
z2uBJ>#qgqL;7h{M!ZE_J!k2}dieBpzVwk9cw1<XG66e>NOiqa*6hk<MNDP@6j2NPR
z*<=hc@whM{WQD9Y<?Ez1|0ywJ$i`sDP>dnx=N3frLbhv(cs^kfCx+>gOqD&;gx({^
z)R_^(Oi5-5XA9>D=L)@tcwZBz{_7(1Vwf+oz?UzKVNnc=m0Th`F!1!LGE2P?!%_*~
z^!1mCEEn=*{_Pl6#?T;+hH<Q7*rz;(?_zk@*WVPwYVkF`WUa`$7~b<G>qXudZir!H
z3_SDvxt{C)%`t3=VQUN@#PDehpGoJ#7`BOgB&6EMiY+AkeB$%ZmHTB3U&XLp!Y?!&
zJN#0-KzuE}Q*s7>x}7!biea~}vq$8c7`_$po`#~@_ez$C<A)gb#_(edKWVUz$MCbr
zFERWY!@d~y$8bQBgF<hHum+C!Z>r=_48JRjlEWfLWB4P6BjU7&J2&ck1&_&83Qxpv
zGKN26_$!9LWB5nPm2^AoY5p6-sTcxrH<Gh!EE0?ZaW{0cLQjWSGLBMloE3L3PZ!2<
zkw|Ib*>RjB!XjnjC@X$$9OdFDAIEudRF#AUE5vbr92dk<F^)<SdN-Kf@~<pO6<I=M
z&xh3{tR6=V5#FJUZQzdh#c|Y>q_&V2Qdmp;k~l7n<1+Ef<EKy0n0tjJypCVVOF$e~
zD|wBOxpm_1lQ|^Us_%7$>`}cq>WkAqOkNkq^(xXOjz)3ZAl_WqSa`GW#yD;gVTInA
z`7LoY@g=v$(bVV7=xyylTEx*Zj@#n6J&rbU+!;Upi``anw2tEr-z_wQb$UPFxGRp1
zade8KZQQ+d-W|t1adgojQm0)U_o|ilep~m6bco}Ak%K$ksyd&kSwhc~9(I+aTO8fv
zcu>5Du(z;h9KA$%YWEPmk#lR~r;mgW$MJ}W*SmgkJQm0M32aE<@i_X&u_WQnr6;5_
zGLBJkJSjdPj;G=n7{}8}4v*s*kwHQhc~*oL4vu3;99{$-sxe~jFy%fc<bXaeG9r!_
z<RU6~4kUSzW#h2pcqxw2ag2#$Y#iY@A}aE-aGa2BjTf09WZ8*vOcI|goZ`zvoTxhC
zjK&d*BQJSen2jSBM<R}-k}07XM_ME!G=yiKil?dGK(NKV`(5`I{9Y8}aN-yzA5uOw
zj_GmCQ1NO0fX<9#Rvh!=SP;kTIOfDLH;z~QT$W<xuc`?7*BZXpl$;lL9~I`O!fdzE
zg%U0jF6O|+@p>F@#8EGS`UxzJ<IOmZaiPVrERN-I?2Kbq9B;+3B94#Z_&AQYRd!7r
zYvWkSOF$g&#PMz%t0iX>C94FEjdR;#K=3Bax;Qq(u~7=|3D?KnQ>phkt93HGDUQu?
ze4wl?emz^`?$PmD?bUfC@}cAvbhg9Fx5cqNjxXZ)B#uwx_{=Z$xxDI44915YargA&
zE9HJE&htZ_X?z`bZxuImJU!2M$MG$7;@Bh2Z-k!l-^KBL9KT8OgK(d4FU^bNCw1Xx
zNxUw5w;}uEI1qOqlRg;7FLC^;QTVR{`Jp&|SHZ(^9QA8B!eQ0P%pa0)(?!h_ah!~!
zaspKn_%n{b7>zYs{*L1xM)CwoEBUXAluY1M905s!2_S(I;`AZy;khD1pXZ-a2{+V`
zpDhJ8R5pQg5-5{6{Y&jLw^ZjQP%hzKN2tRh=Os`ffr<%KQo-|ulzX|v3seIgST%ua
z30$7Q6$w=LTd65hBY_J=E=u5HS#riO)=*1Xmn3j$0+%Jg$7%RtVedLpo0c&0@E5)b
zT;<n!wFq0Rqb$}yH(o1YU7_d62IB46TmlUfxGsU~6KIq`^8{KXa6<x(6KEox8-=Xr
zW|5nGUr}<4B<%04B25!$mT<4Ro-?V?GJ)F?xGRCSQn+2%O2|`-)(PAp-iB`E%ij|2
zQ%Pqg_T35G!%@?9q@C1Q;l0w~DkkT`>5#zv2@Fi&=>$4T=b;38C(tQ@&PqOzz=I-P
z66h+@ErISLtbul(adnRbdM41zA91f;>hzKF;|V;Rz$4<1auh`R{>Q@{g~yci+}l5a
zClYv4Y6B8@N`$rXc4Ljc@_r_PXA>BazzYcs@^haP87v%<z|aJS{eOFgC-A&{;?1$6
z%L60*vM-5@623@>>%N99j!s~VgkuwU`Ty58K7k1dOiW-B<q5<Rn4G{ADSP#Y#3Knz
z=UGq!-bJ6^p?t)z0}@CiU?pHDkW3(zfRTWiaN}4yflR`E<%Rdn{*f|)?VSSI1ab-F
z6DTA=3Dw^DBe*vZxUs!^y3V(_6N?Er3C!aVtN2v5o4|~OdxAHOVVTcL@!XY`!2QX|
zOxZRof!PW7IVgVSBrsR}72&JC{57uSvhLHT3ldnEz@h{eOF|p?*;;T7;FlVF%%I(Q
zt{JZ<@P;ZUUn=ru0?T~K@&w)zUy;DuA}bSEE3!)Xj_}<CRwuBA_A>}5c6rfkopRq3
zt{1Wu&Y6t~Y~t!mqD9i(LTpZ8R|2~e*pk3jseO>Z=Lu{V|1g1%68KnrTLPaZ@R|50
zLT}6GMK*67zewO~W$j4dOMiv3m9HeE&Q1|Z$oKgCrv$!9;9Dkr$@e1P3AtPQA%VT(
zEcK(W<F)&90{ar!pTL0x4kmC>5*H`&i*$Y!QtfB{1VH?d@b?4`b8aMXG=Z~{D4oO~
z2^>q{p9KC*;J9>7GVF_-5PCc9zr_DmWMCIO15QcE{|cpqf1()_;iitJ@>3#-l1Y@3
zkP5uE4&*xt`TqYT&Pn2eBq}FSCW*31luzP3shyidIT8LQkwqRK<YI*+Dkf1WiSw1^
z+2cikGyboVL{;V15LQc~x`-EHrl>Ynb>V+%sF_5qBrcJJ^<0`feI&)L%VkMip2QVN
z)J~#V()}{-$|SCmW@F*iNz@l%opnU6N#a^xQdguNJIL=@ss$SO@`g!VCw_erjgsz_
z_XZ{T7k*xMSlf+~+$6j?iCdCrB7SQUO+|(b4t&bJx8BlFQ~$rlQZ1F$CW+fbZWmJC
zN~E>$j--42rI6A1&Lr+iqOIh2C(%8L2gUD6qMgXSQf^OFvV-t}B<>gKm_#R$&O)zR
z$jMzK=_>4&#5%>C9!c~};$aDU2_F)A!`EAF^^t_;(G`y*@n{k+jBu^xr*9JdlzYZY
z{W)-HT$;ucNj#avfFzzuqG1Zxr7$pwr<2%_#Kt6^N#fZg#wPKyiVtF)ek+4Th9ogm
zWLOf<i3}G$?@xviO40_;)R9V#626$kOCqCvoiQTR9GArSB;rXVB$*%#CoxfEl5nzc
ziZCSf+{m^fNkk<fk0noEos&tVl9-;vj3m-YcXz~(l|&{9BMDOm=Oxbyb3)#U)1HDj
z>-S38N*0Aq5>u0y<{Ll->d#DKRuZpDINP^muE-pfq7G|&#h+2HB{46F`ARa2W-pN1
z!Xy?Yu~>X*5^pB4M4YX>F7k%Z>-aL&|6UTylXy#fMH27&t-md@GKp15_wx6SkfDHl
zwX)U-*9zAO&+IPNC-J@{G_2I9z$WoBDU?lNv-p-IwkGj`_@_yHCi0>1BjLxwZNg8I
ze3$0wnfW>YIXH!2$_;?qmHR~!JCgV^iLa9QT9V^Q>=dES!6bGiv0KSKNqnEg58~el
zzxC9F-^rPD)Lu`>1FIx{6#q%+`FWrCe&GS%nJo2-By925Bz{ZckdnVAanzR|7CFKQ
zJSH%jZv<8HnD9LRZ7nB~I4Q}WN&F@9cM_*WSo1$3|0Xf|nZN=@=_;pv;*BQclM*SE
z6e*Q*XY5(R(!#Ta6rPiE;}XfaDU_3P4PklV1;X=E?vwu&Qm80WNl3~0DU4vm;LD$-
zRz*nLs)|%gp}Ghkr=jpdmP+B`6l${R6t0p1wS<?Ya7hZ6ihGWwNtY{mg^=dePPrEd
z5`M0hu&%I<@ESFAt=|{w)RVlvuz}F4`T7*{DHKv@l)?=uG*02h6hbO~QwleWj8EZ~
z6q=-PdkU>mxHW~QlD8B#6SfdGXRd#I$3EUBq1RAr@#lqi2-^tnOyRB++NN-K3J*)d
zg7>7*O}w2ixi^LO?2eKhQs|gMC-M7Jr|;J~EBS!XTWeiX=&EG7kpW)#SS>%@Q+QCq
z9>Si&UMW13LT~XtLTY;9-Hrb#Jeoq^6#6lqr|@(NkNG+SL>?FRPvMCao=o9*{lFVM
zOy<L8)dEi`i-Z+E<Chwm!m~afl)_-24@tRKVQLQZCC{ZWT-=k7@Z~S0FfxTvO1_xF
zSYQ5<$Y|jhd4{#|^Rgu4gmlgXk%_`d!pXuZLhAEbg>VWH){sIhg-i;D=1g1)N%4ec
z7nM^fq%|AKz2#;~Ei3d!KPTny>bZg1O2JOyn-sp4LNSH6Qdp6Klfu*#rll}Fh1XJ;
zm%<D+#MwJ1g_+{BgtLX-I-M*2ittsTw=U+Vupot{k}MRmo+ToSQdsOu_~_T`K7S+S
z-gkJ_zL~-@$(IW~;oCBJeG2cVuu^<g3h#)#o5ETVI$?DRYf|pb3m+CDu9N&dp_|mH
z&ITpF7H$-75^hdmOA1@XKM;PN!iOn*l)}d;Z1czT6J>oWWQ!jS4SXhERJ7dg%fCor
zhxnJi<ST|X`jdbDlESVOc1ylT=#3P6$_oFN!gmr@PviR(en_E28YR=%o5GJN{F=gV
z%Ka&Y{V5zs;pY_g$x&x2IVc5I^@~4Gyevu%rEnyLqbdBJ!eOa-jS~Mz;aCbM|0AUS
zaV1Zr(0#HS@&5E{{wsyQQ}`!^e^WS>0@Ch<kDovqL7#gMn6c@8{xj#L(kPQg*)+~d
zqjVZ)r%!K0&ruQDzz2z0$+=3FPvg8a%K2H8R}ilzWU^w~y_8f+<NP!(NTYHZRnn)o
z?!0xans%epoB_dgx?QEd*V7s*eqkCHiCiqKDXb;DT=$QcrEz&0S7mT@23Mp}oBhfF
z8C*$W8XMEtl*ZL*)JbD`8gHd>O&Zsxac>&!)2N$9y);^+(NY!GPvg2Yt`~2RMne(W
z;|)rqG#aOIql7oees+qvH>Gj2gr3>AsIz<?tVtTTO5Rl1OxRq=Qaq}<EsfjLxFd}=
z61GaCwV!)thEVg)H10~Htv>{JOQ)Ui9$%j)Km5rdmG4WVgM{<bxIc}KX-rOIN*bNg
z=$yvDG@hpAX>>{B(KPy|(KU^3Y4l3tp)|Uu@n9M~(&(wS*d2C|mU#X0OzNFRpEMp$
z;}PE;FPG2UQo&R1m&RkV;mI@}PoqEg{Jx!3_UiG-fHa;`)*0b5X*`?8$TUW!F({3}
zX*`$4aOn(5V`v(~<aw_xA}wT9&!;g$ZhzrFwVly<F^!kf7?;NQG)AW}CXKOayev(Y
z<%fRb$I~a7psa~$Oi~}u$UPEDBb-Jt4JVBVr*0bAG;(Rg(uk*#P9u{>LIsm)q-2%X
z%9(l$)o=O+Q0@+#FfXB%MnQyf@7o{S_ckR{)0mmYEGbM&V|p4h{HmzTdS<6FCym!6
zoSVigBCo23GnRNQ&QlgSZCH@T!Za48u{e#_(|AK!OZ;`}6<nIen`tcbjqz+g^X>2o
z6<H&ETewol`d5j(lg7Iut9>~aK1Xn^ytFQj_avueeH!npX@0xCL4+5b&1q~&<43>j
z)--l;rt#tbG(Jq@qclEN)(+veG(Jybdm5kk`k#t?M&D}xK&!rxguPgOz#W1wea){#
zz83Bj(m%V?*pmkD&c2bgKcw-k2(A5}$alO7_!8>x{SW_1mHeE>zBKlyaUhMuX&g!8
zU>d)ucZbsWRXV>Z=}ifm<azja--e@U{E^0~Gy)kMlaM<9rg2=HmYfhdDf}~yzeN5P
zQu80iH@>A!k3)Me{bNJ?%AQ&Ll*r(cjC*w`$>7P`F5y`jl+NJn49-#Vq72GpP&R`L
zGN_!vxe`*jVg}_hD4)T3zNA9t^gRM|*$ZN&49-`sm!zbMlGTM(h1G<#in%q!FZAoV
zSV_ujiqy)SzJgpTn<>96gUiL)g)2mAds#x(Sto;QGDu~RmgL$DUJ$99LA?y>XV4&n
z+cLOa!iK^dGq_HKbzU#hD1#eB8VkLnt(!8qS;<>6XeL7aCL*^An+m-xcXRO;8MIVK
z4(s=8tuknx!Qc#rWN?QR1`1hE8<9IRxXYKc&ERhFdopO3!Mz!@SMo9XDuWIgbkE?y
z4DR>!AIPAic&7|Hi|~Bxj|<(0f4V5yHG^&<Jc9Oqfzm@sw*E*4Ju~Q~<U<+s@#Vca
z`lZ~zi+xxU@3A84KdNM3VZV%f5XX1>Jf1=S44&}I4iI@#NC!S8;(eFO8lKMJ8A+ZM
z4icU@85pYMaN#iFb3#t4=Y2B5CnGg^Sm&q=Ud-U73`S=#CWFaR7%Lnvq|VDC<NP9&
zOps)vaFWnlk5e)TWe}Dml0htkcm`1=S<2H%WRU!i#9Pss42%pu&ET^POf_U@P?TC$
zn9Cq9QpmvaXSi3EH9HwB)ts4{!L$sfOLLKsxid1DDLzX$JA*kQbE&K~{)&>X3SSe>
z6V4a1h6Ncc^ttzY_Qgsr5xy>b!}rgd87#|Sc?NG~uqlJh8LW_P?_}_925*b66s{6_
ztA4eLzb^^b?3xVLX0R@U_ayOpy57(AifqVW<9{SueEv}eTYdgP1|RyIm9XZImE0!$
zL`eDP8Ents=M45`@I?kYGWgc-@0S_u5&uf~wJ+b9!7lOLLhsil^wl>?x??T!o$!0%
z4?^nf&EUrjeo~id5)I&0jPm^%lrT`zz<~@7X7Eb}zpBV7;cvnt!b8H}W&dHn7e^)h
zLwHQcI**H-5S|qNDf~<Lx9}g~zrxe6K{nig9~8nky~!_S;4A|d7^rNZwBa6Blrd1&
zz}ddSInrm}&lO<}6-3Gj%NsaP#2d|uzD^|r=lh&xs~D(i;8FvZ8K~yVYl&1B)-Z6P
z;a-U@@^ddXP*dD{K$q=aV!+!VT`u{R!Yh3J+6EZnsKyVUVXkA~8Uq^_Vbda9YoM-y
zeFf|<pdQs2=n8nWfcgd+7-(qVIs-T7aZ4W88)#(UWEOvBaf5-z%*x{WEN(P#6MJf+
zf{B|A++tt@D>u-D9y2h_z;pvm4Ky<_+Q1kC%?-3L@PvUU4YV|Hn}NFx++*-JdV$+z
zKpO+C474_IhvEJwZzKM4gtuu&g5~xHY2KaExl7pAaPPsH+s?qf26`IkWuQGr$3SNT
z4;bhmwfhZp<TxG)))<IRG(bgeRBhy440JWn-N1te9w{5_M)P(B*bwi&`HfEx)xadb
zSpSaSwx2rnkb&L?`Wbl4aPN-$7<iZkrFLjvkVPIfz)JcWAb(XKlE)2HIvQl1{Uv{Y
zk=qdE0}MQ6V5F)VXt?J9gA5E-*3$-_G4L$CQ9W?>F!ykPb+VEn28J1U&HyVPDy+3X
zINZSV23}A-5AuJ{4+lqxZ{<EmpY!$yM;Y#q!kB!~z)J?$9SUFJD}xNYY#?DEX<(d6
zad$Myz<Aj+!8rZ@p%X>ux5);kaP;-3y&(f(0}%sJDaQ;<+8gY-Kgd?5><z}HM$Oth
z`7w|-;HZA~CBr_l;Qru`{Kpmprh(0T`46WG50v;zZNB{3K*50Jw_Y@0i}T2oqt<b1
z;KPH#$wz}zRglwQhJl#|<{6l8V3vW|ToE#9j(YkE9c5syBy63HuAJz)lplKU5pJp(
z_6;mFu*|@61B+xQd-1w~#Tr}|Sz;i+KS;k({)U02(s|R@Y;Yv_mVp%p-ZAj5I{vnS
zITHgVj|5jLxytv($)my5taE>`4^MautTDh*SSzHjN*oEkXW&h4{-ysuSK<*@lf%7<
zo#motj|^-vu+_j0>KqMzVBkXoUuZIXWZ+{1pJ@tlg0Vv4HYGnX@To69IwJ77_;z1%
z{y=v^(iLB-M_(EE+Q3fv{98`NH-k&~{HKB4j061hUjyG5?q8{LMbH~090I!Ndjmfh
zfQb?&_OdM3HCNWDQ$HE_*}w_;pToD$z;6Z)8Q9O@Z{VO-<uCr)Trn{~onMt?oxjWf
zM->eYi?`VyJfd8-{)d5M3_BCt#dzV7;BhrEjXweAgxTw^xIZQNOStoB@E>{gUjwHY
zJxn)%FvzeKRuwee0LVZ3ENP;YiE^eJE6y_AC{#w8rA>E*a`B!m&2xk$mIbL+*2KA{
z`-iIJoFQ~qc@s7H<^IuNMH7`wtT6Gm=`N-7P4qMIn28HaR5nq?L{$?FO<ZT9n(6-K
z=tU+jHc_1tZvIVoP%bpx`9Ry)bWJvD;wlqYo4CZpr6#VF8J7t!H*tjt20AKphSxh9
zB&jXqX*rJ*nXF@i^;~PBu8C`;On)-Bo@!_yq*{HEfohi(UT>n2iF-`6GjW57#&nK}
z7A9^qag&KACT?Z?_sibm+rWlcwy9bivp?8OgfqXg!f#6xx0$%ZL>m>n-9&4VR&pI}
zpaaJ@c5S}X#9b!Zn&8NK)_Q$p*4-*X`MoCEo9J%hK@<0x=wPC=i3d#FZ=$1#PBMw1
zsctiO;j=hxWAQE~x|-;wO4b|+(*K-D%;HdT<@PYq(?lN=51Z&^;vo~g>9=M9Dn$Cb
zer8qtkh@{T#G@wqa^~<&dd&iyqO6};YmWpUH__k3d`*BSOm{^OHZjD+lO_h3c*?{;
z8St!(d|K1&<P6u&XT&*gS=AuvaCQwfG0a5LM9Rc-CWf1M*~B;#&zl%w;zbiLafTdm
zi@acBq)O2YUfo8SZh+;C8m+lKMp>NpoeYd+)79MP99U|+i3ujcCL$&#nwTUTLMFK1
z_`X?ivWY1w$WY9W=S-I3Cu$;QBCcFIhaWbYP^TEasE{_1;UJorZo)8Ony^h2O=LOG
zO%zO6Dw{XKaKsqJ3kT~b8MQxn{78@&7e^~%s!Z|*k=>!f3==a=%rP<7#4N3s+0yaM
z>&C0w-ry@HUN!NWiFqbw&k9h;Ydwqe)9Hx21gxXM1tu1nSY%?ciZ7QvOH3?fS#{xc
zN#3Ay`eVl{fj6~ImnoOSN}ab%H(Ihbx_YIFRb1m)RL$ZY6YrY%)5KpUR;w3lOsv(4
zV1!&};ynfs6FW_;r_jV_s(FKnjV3-Y@ge<hVzY^@GHi>y%2~(BM*G<u3BCQ1a<`fI
zMC4<+g1MYRpPJ~QXirVfqR&liml<D}*kR&J@#TAin=1zxI=FNAif!o%vWo@x2fs1#
zt%=>5-g`8Ec!_7t|1<HOLSIG3e-l5LIBenw<3A0qADBBU@H?lyiJwgTY+|43?zDe3
zvERf26Tc{V^wz+!!@+|lUYHvor#JYiI3@6#at{faWI@`)EaFjKVul5{TFL(~am>VV
z6DK5O4b(j8*Gz@KP5fh`bk>ci|C%^OwX7RgIe&-&agtyb$hwP{)5-H{$t+4K_bkb&
z!>qHjI46rTS(K$Pi}G2Vn?(ohR2i?R(}z2&tn0dpSyU3KkOhVG#`#%XAW3CO=p3pM
zJyI>}#*=zk*G1K{sFB5mSzMIGWm#OFb$2hU{NgNXW>HIh;e|NB&3_h`Qo?@;<c6xh
zYyTBl)K*p32(QfIY7x$st3)_O>xghx@M?Q)*1ZmL(CcR1;6`D6+0a1PQ0SdYG~(tz
zi?&(Zoke3c%C`Y<9o;B?le~0u7Pn;4M1E_UMYAk!m7GiC5U-C}v{1557A>>5O}teW
zjJ-c<4&N>bx2CPLxFhSv9Ihi?g1H~KQ(1J;U0G0pqj^sj?Xu{aMYk;O&7yr49n~*p
z-6t2_pGEH@!46sXQqJxZxpkzAI%UzBgQ)5KKo(uH;B}k^ur1c#J&T7}FpCGX=%EU^
z+oZgwc&{v&<W9Ix77x?HEH-EHh?*NNg-5gKn?=7Y9?N227EjALk7wO`v?sFe9-x2L
z4JJGkdNPXvSv)0QQO+mLmS_q+lf|=H49kKMiR})`Vn`N4vlvX1v_q!ahccc$r7_d^
z{vYMmYZiDuixFA8ki|&0n8my-MrHA$3R+pbl*Q;Q;!2LmVyp-!Cu?{)>t0?%S&Wl#
zd=?Y3n3%<+EGA3Brnye}A>n6=giMCBh|p2<-IW{F^p5%ZT>FVElA7(QEKFaX&LSgj
z_?571Ry-%nXHgJg4Xl|TJBwl#j_jYQtf^{?1*a)FJ&PG4lu)0Ynw7=uEaq_S`0`h>
zIAi~-KA)e(f-E*jXJHnLvRI$R`${g(;w=%b(<NEFp2ZtVF3n<@2-|v7gw-w=p?fJ@
zk;U6ttjuB+=eDo;j>zgP-t{G(F)Xsym#h<cPsrh5FL+zzscrOi7%sMC`Ik3=J+A~#
z&<UD#A8=Y`@lh5ZXYrjTJm>kgEOu&Uev-wfS$vko=bUo;gI{N{J&P~2pcuw?h<usF
zSH6U0d1t{72|rwhyRz7=To&IW@{RCYA$9&I!gcX|7C&UMms359U$givi=ULmHM?Kr
zXW>2}Z;@E`fcU{Ie)*4(@<UntAqn~KSsWHWlEqP9jde2Xn3BhZo`maySK+_1_&bZK
zIZVsppDg~(;>sMZ%Hb3vUJj2cq6TwrT;->74#=TI&JCd@b8aN$_M?=NXXQ{jhqH4y
zC+FVNQK3xE4Jl=FI5+3sf>BZ~2fkpWe9nD62$S>@9ebXNSID7a4wb~u&*1_Q>QI3n
zk}5e=&7szjV6_}B&$%I@x{#zs4i}1FB)nKyQ&>xQiIAF?id>d+?>m^hBInLSlG-`<
z26N+);MF<Qk+m=8+}r<aau}M!upF+HJ#}-amqYy=8syMAhdXj;=-b(XrE<7lU2Y`d
ztvTF~L*twqhuyyO`Oh3~Qr68m-0~lJ6A7u-RHRuBUYDCIN!PW^;kF!Z&!N>BPx7e)
zz0rt6&?bjFb8fU8ApN^?=$yj?;%#%dJBNF6Xy-TAA%}aFMSI%kaG%fF`u*Y^rP=8}
z@-8`a<xI$-Zw}pZ=$^wvIrPqf)0mY!DAL2%?<vyD&-M0uRO^$&!@kZVBHVs+$@I(N
zNxGB||L5>{4*iuy`4c{27-w-#6<+b5l5n5~@#!3%QS#ZGyIPq$NXfxM78xSqo##B4
z!*C_(E?&Q$7at*fK}h|PIgIl8**f-lDTmQHjFE6`4ij^jl*7xu&bS=Li%$@GJEF-P
zJ1!PULOFzUNav7IGLl0)heQrh*&maT?eeNh<cM<wlN?_j1ZfDk+$iU`7&(|)Q=F*T
zoV(}es_d&Hh<px(9IPDd9EvLIs9L(+tCN$2^-RxUMh>6l@Och1bC{*&{E_C&>>TE+
z$ebMJauta4cI-9gvcFn--WGbEviK6k1vxCtVNni?bJ&u@)*O~-1Xl@PXOf3M!llAD
zh0BD?g;aPehZW*)=de=bIy3Mj-!jMNKe_z*=Px;|&S6asYjfC`!zKyW2_Me}-V>qP
zdXe{Y*x*a1MFNAf0cLIXCByj5uZ(|$I{^tf-!7GlNIq89ww!xt^NG6fsa7#36<xQT
z0WFU*d3=$>jvT(s;VTBfJWA&Abq=+U1Os^l^VpfguAI9m-7P$t!=4<z$>Ccjb2yO0
zLB<nh{V4oi_=9k-@XWVbKjrXq4*PQ0&%T#&<0R)WR|L1OzetnG-(>TzLS`M3{C9du
zarJNxN0jCLD*q4V9upqV;Y1E6#s3s~?f#X+-;Dn`_YU_Imtna8_sRd}+?!K&iZ)Qr
zc*wBH`H8$cOJjS3rSk5DptSHTA(KmO*XFa8^k#M0JZk50Wgh2JD0z9|C3&1DLj4MP
zRLrAN9_QzAK^_<T^2#FB@~DzW)jXc`V`&|c>dLJlyij-%>r_@vC0TQ=Ja}M8!q267
z_n7E1WnC`3B9Gp>HeHo>LujMC8%(awyW6}vd0dkR50<&^uFa!v9`*95&vX8~JJ1b;
z4e5$Jyob<?8UgRaTz)tfH{{V+t=uTQDG%PHGXy2IteWI;EA7c+SsqREXqLzDJf6>^
zc^)nD=$=1)&25=SyFBjA<2Ffd_vNkfXr0IFmOD%D$fJ$qclx<^<<VCBZs9#bUUsS6
zK9BokPshA_Cc`z}A&>hdq3hUvI;vA1ooVfn-~)O0Qrk6;E_sCax;GS@^ISFEq)*p9
zm`4w~g**Q|`sUFuk6w8^BuQ`SJR;sFkB2!8bZo_q;-eB?awO>8H9VHb6CB(;|3fhF
zxLWKl<SG3Cy1iLoSl+!rKc$H`P-UMMJ|kr7&*m{me6VncaHx=VQh~jAF7ICV1N`UT
zJYLA7n1_?cNOm)icpg6-4!)SjOL_O=Oa0L@eqtVzM8@PXHV+06I_G6c#tFv@C*)6m
zaWGlQsF0dd@(AU@)9kP$5ns-8hM3Pe8E9J~k7ORHJkoh&@+jop8z@85H7`v%&CI*E
z%voVh$oplM<%QVF!&dJ&I-I&}dMf8|9*Z>YyyQ*KV|E^M@|d9o!o!@IdCZbO+1VKb
z-BF&K$Gkk|)7A3Zt3tZ{HPy_$+yYL19shC~u+%~>ie~O&=cHP!@mit^U*{a=B|x||
z@9v|RWcXU1N3{Z~7w}ddEAn`o!=1;$JbqC_tMb^+Fq_9adAys)>O9t{UADfKON{-^
z<AXfj^Zm9dkM()HpT`DYve6#}n#9$&S#qw#E&0=d@xwem%7Z7X^w`IFY||3{OlqG9
zKh+9lajypA=aMrXGC1s@KD(30mw9}}_^-~=6+1<Ew7x5k-FfWM(0rqU953F9u%2(#
zmoY=#bNlZVYW8u;<*`?N|1s|#FEF_Mq*6cgileVN=<WS^9AN$Y9%pZm3iQUWa`jOa
z{4I||dHkNo;XIDW)nD`Xs<NMZfDXJo@$e^)V|g6caGcEJPqltRSd%Y*%j0h~dO-pI
z<ngZ`KWX!+JkBYgOo4wj;RgJmkOT#k5a;fqWC5kb&l0j!=>pCcXE331*#gcjxQn+^
z0p%pGAY@kg0?zx7CM6XM?!5!a`68@=Q;QL)asgEe?p~drs)f_{dNm5Tuz;ooG%Mhu
z0xnjOn+vE}K&=9<D4;gKrRCv|@N%}!_+P+fO42Qk!U9+HmCCxNfNN#URRvsKKppm4
zXVfgk?+EJh%U>3hCU2Vfy$Np?sK9<TQ12SDYysC7(5QeL3b;wd8y9e+>SQZ@q|B~y
zWVz&7mi!jwHc{7ZrR7>y{06gm0qqL7w}2J}v{a*9mA4ged%-;zr%C*@DxkGmxkK2d
zfIADgOUic(snb@(+ZEj7^Y#VYS3qwiI}~s~JG(#lAf0(6*s*}_1#r#MyiQW+EPSAV
zE(LTgpqrAkoEI`)Nf|WQ9V+)IxJ#a&o(1$O;Gu&1Mb9*i7j^om)Wh;Tb=ZAI1AZ6W
zw}5^H_cHfb0nZgMT>S9@`WNtoiac3xuLy(02Ndv>S{W#ZKP`Ml$WeH<0KWBwgd;w<
zfFT?U{?PSkaHtf9`MDH6U%;#aW*0D`fENmG++z?MS-_|QUM%3H0x|^{1&l6WOaT)M
zn504E92i@`%LRA;z%DSRjnmkTmu(X?E^K;o0aFTy7m$#tw1?m6gbE1zc18+_`aC9b
zbcP!flAN^rgDKVKEu3@#-W)Rv$QCeN-pdt`FQ8a}Q$Rt^u?ny?Y8(`X2o5^;v9yF1
zPL+i`t8~XgHPiDmRL@LJw#r9>9PT*<%q?IqUEvv4z`O$H7x1b&#cE$GprX$G$QKmw
zZ2|u)V4*5pRKVf_mK5-M0h<cgEa4jkyeC3qmeOMdEK_p1a4qA%$ch5q7Fj7=EnHQ=
zJ0kB2Spz5hn*VT0)+x#R$MwGaeUS~qjf^V(E|FwQ0b2|BK*RA#0iR0eL*YjSd|bdb
zab6L;``OQw{8IRN0oz5sC}4*OTlenGiC;<bbpbmI*yZPXP46yXk1zQ~aft=L)13TX
z{^tPk`u;-!{Hl&KkOTA+rzpoudr@AUDWtdg4cCDJ4i?aJCVI`pF9rNsz=3HvI1RrQ
zaEN2!;C~K&FW@j&oQ<6}judc|6Whi}8-FlV7O=*`S_{VuIKen$p@)T&1^ijSEf$(s
z_^W`w85J#DZsDH-{$(7n-2H9ealtvf1TeN(2wH%J@)pjsP{Kk<3ujw6$3iI!XIZ$f
ze4w<2E6M~&`0|0wm_V8GffM6{Wh|7naIS@N7A8yxGV4%NSD~*eC$4W6s9>R@g(?=R
zTJ9SRDp@$+!UdN5YV;4v23D30)F>Yyscc~ZU(m-lKU=77p@xOu#s&A3b+i5$7o@yP
zdH3Dv7g@O2a$f*dQ}|r%KrIWGSm3KrFSWqtZ0>%6HK&4CSg38`It$lZxYEKr{Yl5Q
z7Os*RS6g7;>sYu(N!D}LxFD;oYoVTn`W9<A)zETZ9MM4h-16>A30_aQeI!}MHE7`m
z3now4PMvD3`UBjjS-8o<%@$Z8HAgoI&{wxwpiXNGcUWj@p_zr|7Ft-i-NH`(_*Vw7
z>Dw&4*(5-#h7WejQqoF&q|e(}xYI&M3!N<7CCl%zK+m+bFq~ihss<LhzD%H<a__a!
zo}*@ge(PZ2ehc&@Kh$9<c8YHAY+)B~`pO4h<I`xeu#1JR7FyN`bhFT166(`_8o)01
zw9v~!!a|Z(S?FzHq=iuy`dG-93-q(_n1zQe9OOG``5m0hc+^5)+19drfZb`xM}WLh
zv(Vqd6BeGdFn|qNc-8`a^^}Ey7M_;1|27MBiU&D`8cYaIZyp$AVX%cE7KU=ZjSKWB
z?{<fuVHP@<5427PIhosN;?d^enyb%S7@=uK=f9xt?B`=Y7GAROvW0PM(Q<#{U1;vQ
zWsIiKSows>&f|idjpJ$Ok3o8Ag74vpB9nxZg;Okq{M@jGh<H>O6UO~qE|8Rkw1wps
z-m;LfU|4v=!cxv6=~xzQ3t5d?P6p>K6y&k$<AR(UbYRhfV_~j^S1e4mFwMer3o|U#
z4Y>ak(J0{dWu}E$7G`q@<Vi}VCxcXA@jByz#CBH(UbXO=g+&$?bLz71TzwW6TG+?$
zf6KW)Q7_pdz>fD11d<cnB1<gZhhhlt;`L!eoTv;4Oj7eJn#Zv|b!r*sf0+Q~D>MYF
z)vvcLthBI7Jz}YMExaQ+V+E6(8_{tAZ@sLu@ScT#Eu7+7w(ve<mr8B0u+hS|j9L~p
zS=emhvhsm%ENro`)xsB+yP5gG!iN^NOaCJaAB%iyVH<;h?EHiad7SG6_K02k%);ju
zCYKL1Z4sd5wG_UFC4)OGd}-k;3t!Xu%>%o+NHrpZ`Q#7hL%?+ook`@B-ox-x#$6q3
zg46yx3*Ref{HYH9VBr^w-^d5|TKLhzPZnZ)?8m}>3qNz!XuN380nO5b>IIXm+#9T4
z83QdGvhcfwKP(*MoEZ~1Y~hH7qqK0G8;fW;SM*3e?LR(v+`<V)ehvEIAA@x1RpWzP
z>Gbf#J%NkLyWaj=hOx*$7C4AMmJ0-IH#%J-4BCK=5;jWOZmh0tqm)Pm8x?JwWuvr>
zv!z+aMp+x@*ls8u(A=FQ=i1=xDrciSuS(@yKeLAORGb0iV#UcyHqN(kp^b}dTwtTJ
zjcPWktHLTas@m>2vJ@u<$K}p(K}ISXS;KZaPC1vr#Wrf%xLnoNvT=!xOKn_cyW_|f
z*)M+BO_pLMbR$b$p<LQVex(XtW#ejF@n225I(+|+jk-4K*{E;h9vkg!G?319Hm<kP
zP<&S+$gyr@;|3coZQN#~v5gyT+-jq#jhk%TY~vOiO{lMEysVu2+iK4nG>O7yHk#XL
zVY}gu14L7~HaT;c%Se8^jaD}9v~ib>);8|2LC3bSK@YR<?9u#YZYACfX)AZ#ZM$=l
zLQj6LjrKMkv+=l%`)qWu(bGmR8~5AjXrrr*ZZ<mE=xpNw8(r9Cxu}BbqzxoAi4Bo-
zxACBj9@3#2hk$d5gbh7pqqmJmY&^<_xcRs7u#72TxM7OcQm3z6-B0M%Od%b}divXV
znx41ugpDU{cODL~@sy2$zCE;ol~B$i&)OJdW0;NSYz($B#Kus$*YoO`QT94A+{W`Z
zM*OEy%2`{zcir$f%Em@cZzK4kjh8qCHpbXksW~v#cCVz<Y)rTDvW;;z#%shU*qCU;
zbI2r4BpWFkX&X~)glt4@#B7AsTm?Snq#`uivp;Sl!4cH(u?E)9&u%RZ4r|7SVIyy&
zV8i5IZelQNBc~b|pLaBIgAzYZDOfga8;*^sHj1_z#29j^(?f&Bs&<qM^bQ2*kQp{+
zvIZM-ZOpPUTeUIf43SASe$@S}jaO|fXFc5Z+nA^Ba~m_?#sV8lY`kt`p^Zf<yV!QO
zVcr7gK)0*ouJku-EVc2bjb*IL4AK~H^>MJ6%MWXQOZBf1zAdD%bhE%J8}Hb7SB<`B
zW4(>l@;v*yMlG%tt`l<9Y(9rZ2aXGFkdxVEO1P{znwwO~W*b{<Y_;)$jSp>np@JU?
zKNWtg);S{EY<!|h7!Mh}DfvtapWE0jLJ5ayhxnJi<SVT~X6>@E+s2+EzA0jljc;sR
zTtv+xzLgm#ZTu<nKO5iK_}<13Hul;$D&dbdeiHdr__K`zBJ9OJ8~eri@^B^(`to0V
z;cuLN;=c<I`*JEDv9YeXTj~!9Nsie#E`Gw7@U{Om{x8PuqPySw+wa#uHvYA7ip#c$
zV9^bRrGzM=q(})N<&S0D+k_8dE}m6HY01ZGr+Q8iWr`?Ubi-YF;khi{B2cdAUKd(b
zao6v8MN}xFViA>!s9r=3shwX$<szySae<Ol<Er6Ot*T_Tq8pbyA@RZ@o(KdkQkEAJ
zdg!fpwTif;h!=_&S;VD9TvkNKB03duc@b9>(Y%NjMbwrhb&KEz{z~zygjW|)hlcUO
zr{uM&oGXZCb9U7$qJ9w#C@kVun#${Y5!V-SV-Yt=zflo46wz3m`m~1yi5|bXh+B$i
zqFgV_ld~^Pi|85%G*i<o!tS&zx*_zABH9#joA~WQZf;u@(Yok{M;4@QcNX3KeET9;
z+g(MpE#hvCMLQXPPZ7Mt(@|8uS2eJAqbCIKE4tVB4n=TZcYo2n!m>hUbuQw8BKj2Z
zaM29~U4%Voo=7)gcj1FVE?%nf)3b<Pl8`@CL~oy8)GY8w5swxzq==zK^ewuP_Ay#g
zL_gWUMt5*a$<bu8h-Zs<vWS-a%~ufvix?msZ$HC56_uZ6C5nM`MX_Aq`tpH6MGTg3
z%QpAtGrYDAQ<9z>QN(ld0}Bo>;(2+P{J6IF6Uqlh74afnSH$unUMgaA5q1&9BE}Rk
zwuq#B%lP(k5fh4-sN}dJ#uvfeDchpwCl%dW)CeU-OfF(d5h1CC)fN?4oJjY^G-nc;
z0P&)GbGmzJkjC`a_9i9$bP<^%j3P`9jU?G3az*5QOITGy?Z69?Fv-oi*M!5))(*^8
z{Zob0)c5H{%qU_e?cd{W`DRH-d$<APoSDPbT0Sthh*yeul@0NJwum>1cujns>Y*p+
zYakXBu~3AQXOYO_B9{0PhMk!_`H|Ug7EkX*=^Wk(zE#AEA~qDUv52>eSjp*8#M&ZO
z$rui3RF}4Qig;IJw_2;4J>}G0r}@m~(Co^<d&*s}Cf*lP$l{xd*j&VpA~rP-Y>|9x
z5g%~LmvJK@6+Yx7;i-NR9~JR&5!;IRgbpm?GY-1$p*RrSEw>uy-d*zZxPr-cRrLj3
zG%iR>zLZbCDuP#>uZ!5p;8_IkL)pY`hW%acD&w%eH9q)l5&vUYaB#DO`^p5qE8?#r
z{x0JCB7P`hZxKHh@p}=6i}=ZpsK1E(EZkSbevtzlIL3cpC&-8W#D5bW;w)9j<^JkO
zk#Bqo9xviV5l4&oqljbj6>Z}@e^VDnjw8o{y*sI_Keb4Cv;R*K|0+1tcW{c)z(H*X
zS2_qfZV))%!37TBpoD{xjvF`5a!}eqDaT!j>yz#|%-IgkaZujDc@D}rDC^){2jv{x
z6AOCxP+X^6urz?^E@TH49q@*|k}9FwKO5)ncx#P!xA&DDz6ahtcwyhGIH>BNnuF>N
zYB{*XK@A5NI=I+DO~*aKU?mrc&={WQ@D7NPnVh@IOC4P1;Bp67IPTJ*u;REN;~}s0
z92B<5LBGnu)ef$8P}e~n#|{28fI8Qxr)CrPV1$;`V<lzW8dy0mc?}#ibll6?bq=m~
zuv1}>JFZ3!Zg9|8^-!6+tQ#HohLNj)>+}`}O&m;d5OQ#<gQgBTIJn<IGY8Eb+~uIH
zgBA{2I=Itu<Ns|AZg;>aN8U>Iu<6zgc>2Mn$?tH`Mr}FL;b5(q5WL%QV+#l6Uix3W
zot#WZ(WLecxGiMty3cXL{`_RHqk~SY+`+RBIy-p4K_3SXJLsaCxiBAe&{eH>(|qVI
z&U;(V{2mT^I_Twq_l)Q8JjZcY8Sl1eaBm0naH@LX5eJXTfPO@kr5VP!V56+-|Hs%<
z2mLwX4xW-p6h7%-fP+UgXS@+%uo~##Y1W_>%IL?|2eCN^!yP>DV2G@xpE*oJ#fJ%>
zb1+-smnMy12g?Uua4^zwFW-!Nv}BZn7ahFhU}ZCRH$K|I7zYy^Omr~T!OM<&P%z#(
zz1!z}8^^h)Nx~4yF{ODFPI55W!EI&S;}HtiZ3~1QL>#Pe@V0}fgP4OkvM25!;b4Y?
znGTW;QVt9Urh~LR!^M@ML}8>MC*JsAR;9Y@3Z4_s3)ybLfhBGWi@w}(Fjah-aJq17
z%JudvwZcK+{F%);?B9pZb?}OVR~`3S##ynz!E4f-r<FBdHJmiv&E7%>iySO=u*AWe
z4wgB1-N73UxP+H#^3$dK&=nk@&CLT0P|F>>r3t`^K_Tns+Fa>im4mGgK5+1kgLk#Q
z);n0Owm4X891PR(5zjH!I#|c4u4~_WS{mf+!u#SI9Bg#3Nd-5nQ(NfsaqcAK*m2Xy
zwf~`mPdOnSe54|D#m5e|N%<3DnYV)U#^>U6!k1dz+Z}u%vO~Cdfa|xf9DL0sueHDc
zwa39O@!j$s`_3rMs=jfsFBx3L^B)J_t6F0kesHjt6LKo%OvR55eqyhuqV`n$Ol1du
zIrv)*?H3+%aKOPq2fsM@)xlv0M;!d-pq^$O1KlBYnQi^<;Ho<A?ucDJs<MALSRZ#I
zD(#`!$0a=BjiXk<pBi6Y)Tr=}gMS&ir=r4CoZ=dsijq@NYN{LGf>VL1C^6MNh4$*_
ztva{OTq$QwMd_(1GZkg0{vTWK0X0R@d=Kw)0Ru@vGKdPIfD%+tBqv3J5k)a#RzN{f
z#0(Nl1OdSW?9A@$PT0KrD40-D6cb_=5k*nV2~jb@|Mne*AMg3TbN1A^U0q#OUEN*X
zGrKd3ed1>3P@d~+-?*7qJX(-bH*RuKeTvnO)r*_mgk!<fbf>z|AdZG{92CdFaU2jw
zqd1zx(NxWQ%&KB+8w=Ox{r@;d#bO*yE|BK3)gq3TakPq?J?OwVTGM&mHso&357PyU
zhs4n)j<)IuBQtqc6`K#}Zc;1L$YF6D9>;ZYTpvgKI6A~JFpfcSbd2MOIF65_XB<by
z(Mg)SOG)RrNuFKE*PYd_>fKRs9396oar5oTNBRj6K{pleRs4^Q<G46_#7(|s+To_a
z)zK>s?#q4S=od$CMW&DXGInMa&tUzfnHvi8<N!Iqdz*BAa2zMZaa9~w$8lmDLsWHX
z94EywlpfN(IEKZ|9z8sc5egc|;^a6^iR0Wj&Wq#JI8KY3v)O2kDfi;jIUBX=&yX7<
z<2X~`EYVS-XN#UA8lL%iY+$Bka|ZMLI4+2z`SdELK3*(y8nBjj3C1XH7sqjl06R`5
z&0WU8){b2sH+lF9b@s}**<smgY#ig_<{)})9ODJTd3BBAvqL8tUieH<Hz!Kqy1ubV
zaoiBceR13`LpR28TO7A5K9ePRlO(6aakGZ+mN;%@ca$YI&oXx>XyuMLrm6Xzvc;)2
zRWp#oeODaQ<CvjZO5QCnGmcpT%xs+J<lm#>y`r`I#Ae4ahj!z5G>*CI=E680jAI_@
zRCD}(AddNp>H<+-F3}UlhbIs&rA2Y`y~bh<&_i)NEVUe5UbQ_Y`K56zi(^ULoD#`j
zIK#|vYL3TY#bHZ^dxs;CpqKzna1bfU>rgiik5(+yv*5=O#IYfcPvXeX+c;Lm@gkR7
z9Qin&jN_>|3UL(UD92HeGZ%ejwv`fF^)Z>Gnv*IHp2@k!84a$oCo}}hWp_nnoiDh4
zI*w=Jc#fPno>jCt`c$=2@*Ees$Eo!~+??^Kis6k(=Sy+C7RT#xtd;|;dRgF=IMzg*
zR|RVHiM<iWn{m7q$2yMGr)I9w#9Fz*J%}dWj^mv;-c?GW1MjIJ`5z0sFZw|o9}3Xc
zM_fC?99$Op;hl|*bTW=#<JcO<XK`$jz)#EoaeNWSw<>Ptte#%=jpo3YaeNgw7wnwv
zTQtF#+`d+R7`V7997JmVE{^Zj_6JdNeq<_+?EWkbzo?4K@V7X&#ZhGe7JiT856&^(
z;fdqVIJQgX?>PQqR#ybrQ$~Y1oHLF1-#Gr0W4t<G-*;%e?4&=I$>i)Hr*{ntH7)FI
zVIK>%ER#Z+3Asr3vP|M-Rww0MI4=BsEtA<e8ERXoW0{5ggAPUYE$nCE6bq-aiG>Ch
z+FR&gp`nEXEHtyw+(IJ@jitPaWp<zExIh%-rebmvq1_f1T3Y5j*3LpJS?6Lo#KM6V
zT3hCpDSbZ3!XavSu=H@S+E{37neT$B;ZO^_Q_7z5fXYMWVU|glhl>vF8|!G{2n&NP
zoM7Qd3!N++Z=t7!&K9~@;1{DzK3y%7%#X5gv}L|!VDn=vbdy&MX?F|9TIgY!yvooq
zGRMhJo*RidpXmeVGb7*2LT?LwWSVXdve4H;KMVaW3}7gB?i^^DQv`#_)20cju34yr
z_lr)nFvP+z3&Sm(WSOtnsFqvgQ1W@Ymi!0{M{P2Rn#xa>74G;HJI%uB7Ou81*1{PU
zMp`)6!g&_Xl%Kq0JKMrp?0zgZ$}&59c>d(ZdX5HSw8U6@zJ&`cTx{VI#+jaLhvgi&
z$TIu#7|UD^(Dd0ut1eZOEeooyRMlm2=5h;Hu!G#!7Mid1+2ktKQu8<q<2jKm%(8He
zg=;O`X<@3u&hAXGFww$w)NkQ7%bY7FS-8Q%6bm<7xY5F73pa6gDO|inrE-2x!S6)4
z0o}q$LZfrdJb89z6~7KMfvq3AU3%^i4fF6ci+?C=2A6jgNbj;RU2e}1<xNyF8SuLq
zxB9UMI1?<~YvDd=pi6TE?iZcSxvJbw{#*<5A{qX`famJ@mN_OZ&~jU7;Xwf^=Y=Yr
zTx{VX3lEF=h=sC+iiJllJZ52ug{2lUY;Iwhg}8-;e6uXrl4p`(Hs%5eXK7NdIu=r#
zoRajlLR|}<Wo{}mZ}UC|X9$;VpsE`eRpl(?Efg#iEpu(cNyxQ%Rul7GLrLq4cizYu
zIkT$T!s8a+xA1|5CoC+tu-d}Q7FLkoGxoHFXDmEv?Yb@Vlsx1f#J=-D_^gGM7M_z=
z)mk{uTX@03Dou$Oxp)cm^N;<xbJaKBV-mb#VU30N<OYkJ8?Rb;O>5_M3vbE98y4P_
z63z!6sMcC$PvM}iv+%YB-VEH%ACp*kS5uTDLOo0`oc5fDA6oc`@)ka`u-?MQ48pkB
zMlClklMNO=;fHrB^d-W_i>hkQG~3E13!hu~%EA^4Us%{|nd2+(YJMqy2)b%rgkOq%
zZQ+|J6l}|?Z!LT$4o8H=A1(aE{FX%PBz|U+VUkavMgqTD*vk24<9-{zS=h$xYU5NJ
zzgzf&&21cI<4+6QEi|#w)W%;H{??+XVdEbQ|61k-IJ?7f<PeblXJLneu#*eTMwN|8
zu^4P{9x^83<qs2DO&hgrllJ$rvA2zVY?I`f^Y^t;+s1yZvhiM@D*i;Lj*Ysu*(~bW
zsBfD|PD~99KIv(5s~Xriz(yk*oB$1Nyu+)=dgfO*RBq1ywwX3O%r~>q+(vsF9c;9)
z&DL<Rz3c0MmNr`1IM7CG+YBp{4>KW~A7q=vV(tP-zKxBxHVzeL^TPz%+5fkn9!}@A
zw|2B~gpJNNy3mAew&_ml!kV5j9>Up{PO=va7k5A&<~jOD+vs8AcpJyq=w_q4jbqst
zUSrOvI?guVQ*g6jCgI%Up4-z#FB>P>X4B~{H%_!M#6}+*eQm5>7wf0k_Lu)3@?ycp
zKpTT>47PEC<T*LnL0;i9i7}+qA7*tfbMmQnsFV-0F<fAT=*glCCIwEjak`D`Y+P^S
z3>zbDjI%M`#+f$GvT>1(F*ZioINJu##^>8ON6}_4n8`=mCg1XNuE2SsOm2+E1-3ab
zTxjD~{mP43@nRd7*tk?Z;^HO$GTZz}>2h(lFRZ$Pv9)oPBFycQH|VamG1dmZ=3|ig
z;bOVQ#<h~4C^|tCi382WP62kA>w1!n8*JQW<8~W2+L$bbx7g+j4i4E(9NhY`DYjXv
zH``|K=7$?AxAI%LWa^v6eg`L^jp;1LVpG-pF5zi1%Gk1N`~earXV{o&W0sA(71HZ@
z=U*MC05itDVutdwZOpOpk&X2>=GvHNqimyM;{hA<xoT`YDnkowJS5*1+IY}5N0&vM
zKXXkcVeb~p0fz2j$uO$y#bY*>*zj!xHkR6GI4Ne^NZ43ro1HhVPFZTmA~$Z*qzzZK
z^wSYY*+|QC&LSR-Jlp(m#T;*VD^+caHcE`PdPHY(0(lz+fnRi7WS1EedPNh}T(F!E
zHeTSuv9a97Gd7;Ju|ig!vhlR+KB*$tCVRJyKcARa#i3kjoAU#Qn+`lD0b1m}(^WQJ
zwDG2mwKiU|%^mO8Ifb}VY`kpa6-m<J*KD+zQMHCsnvZ~KxY?Ya@E|m_UyRoj6no3Y
zIvXD<WxdTH+va9I#oo2e{iXL5VeXae%llfwA1DqC3q!=_{0Ys+Ha6JU%9KlC8yju>
zXyYd)9~+<9_<~DDecW#eHre=Gn4Jpa^QDcixH>w;ez38HiMn3wJFV!iCH9Rlt$eE~
z$`i}}{2`ESeox3b%%7iyL;16Wf3@)oM?p8`xEpeaDZ^E{jXB@Ob}F~=hlYt$k$fIh
z*!(ZG<pTVhTYwFQh307GUrGLFV~35Mw4N}@ldY-}pc|YU)K9UR3Dip9jRf9IV6O!B
zPT=YU#wM^&0{bS=A%Ttw)J~vI0?iU=o<Q9M>Lt)PfhGymPhh_U8YN8jFel-JS&R)5
z=58t%K9x62m;>_x65!2*m`>Wfm}OPdgvpldAa9SfNT6i`hbPcJfmUpuz@Z6qtC@Qc
zX=@g1#}1PG!3i9aKpQD+n=lEPsyJO~g_H{0CCrv|nC$X`h`S+Y^6~Y}SRawVkqHb-
zV0Z$Z66l=3u?ZZPK$nEM1;iszw*<N-%+}VGu}zrW@aP1Nktz-=Cro$wK>iEsVm%T#
zK7qao^h=n%vZv(xB+OFnC9&QK^HUS<eN}v}q>owPv~or5SpNhDBrq^x4&j3mI3a-(
zg$IlBrsa?XPD)@XoslQx@IzsK2pH-S35-nO%mhwO;1q@8)P%WRKzYiXmcWvoJ5NvG
z422@xLC#8;ds+1J+yq9+;j<HF&*kSFfzhJ8=qt>uI!`*!Pv8PFg)d6rQg$tYF)Cgx
zdWk6g;ee7d)R#w`D;P%Mt3*SAaS4o1;K2kIC2&mw*CudB0(UZ22~132N&+`4hSw#q
zs$Ohz0@tfZpC=_udcQ$KbE6dU%zqOnp>}E>!){5Kgnt`{b!F^U4FUVbFP=CbZr7aT
z{F$1-v;^)+;NAr8N?>{dGZUDlUe8FFAM7zNF<sCc!^qoocPsu(XdE?uV{)HN+@HV*
zZBnxnn4>WAEHO8Mc^dHt66WW}3lo^1z=8z0opIW5K5%VvCd^~nPvD^hyafCN9%l0d
z;t5y@JSyd3lpa$Dmyi>SEmZ{Q&oV7u>ai0@i0N{~)ivtpH#H6;*)x`k=1iKacy1N%
zJcPd)3+Nb~WJcwb;518Mg)HW^vdRfm5-3PpQ30W3iBXzmz8#?TYFT_-bR=Kf&Rf9=
zEZ3lLAh=$h)Eaq;iABwyN#NN8RwmGPmbt8WPE3MV*|h{-P;r$g?_H4pVgfHkGOGn%
z7JVgwH4&eGnn_8{&(}4pIY4xBZ31s;6!uPHT>@_>ur-0-m=>5l68JKKuM&7Kf%g;m
zIDribe4vcMq`?~?A8N=x66Ne#FYrp8*e3$))MqliF@aCTnV@mpq)GU>Lcuxzg$8T0
zD2H#0V)zXQOJ04QFc+I|&#dA(^ScCoPT&_c|2}~qB=Do?PonMnn0qhu<X4&FtRtS?
zGqx>(-xJu$XeaSU0)Hm(pB&q+nE#!?Kbr7=sTH>*ju%(NzZxC-oSjj{RKG(GQ)g8Y
zNTO!aWX>8%lj1l_dA-IWFDh##u~*V$FixH@Z|sxAzDbkcYK!ilM4cq+CQWLpmqh)f
zIgBy!a%h-i_e+{=Pb&?QCW|&q;(#O?CDAyE7D=>BqDj)^e9AOWqN%Jm6Ad?XI>SAp
zm6Q`t)$*Ysehy0F@Fd!+`N2sXBG5*(t>~emRNhYDFi~F4cSxdR5+|v6L?qKq;K(F8
zMV!t8U1(b1DAA)uk4c)$NmZoXlQ=es<HV<}z5+dxI6mU^Orn=??}*b!AiS~AFNyvt
z4iFtEIw*<3Nt_^jViH3HLV42g*J4A(q{U%L3>O|Dda~##qNj?UCVILk<<CfBr0|&$
z=PZFyNt`WkP7<S&I5(<2Pk`5bY-^6$NnDh~p*gh6VN4PiCvkoT7i4fr5|<|NfRFh;
zE=%I_B%Vy+sT8i@xF>O=gUJrAO5*Ay{!ZebB*rE&E{T;%JeS1yB(6!qO2SU!TAEAZ
z-X!izVqy~4C2?C4w<mFZ5|fg+S#yK4>jvsfVsg@49&%#bB>ogp7CCwNA>ij0$=oX1
zRh&DLxGRb2N!*#l)Fh@wIw?$Tl$oLVHZzG?NprV^{JSM{k0|qhsE1YeCox;hB}vRl
zVy^HbNz7v?l6WwQMM=z;wgpKnls2{veWqG!Se(Q|Nj$8EEQTM-5K!Pz@gEZnTP+n{
zCK?wFB@;;`ReUlDM<A0#Hi;A$U=$@c2`>p>wSj2p1J^q(=90)KQ7wKUiK0L`iBi;@
zhQjz%_GtTf5>F(tJX)bEqBw_MQU6mCep>Vy(Pt$?f#;KWA&D=N*ew34BwkD6^(0<Q
z;-w^3i%AV@r2OS1UJ)mZ108-fD!!4#n@N0_#79Z2P2w%Z`F+){V_Hk%UE#N*(WK7z
zq%(Aq^aBZyPrN>fkCXURoDHI%>`}W>&WApHmc%9%KbHX8hJ5PzGKsBXewD<QB)*pE
zANY`065k~8t*X9D;`^u}n{?I0ppu{D+b_Heq}ovDuaP8+zX@*>{heEYz@JHMPvS2w
zigvr)2pf|Ao5X)f40SNfG3k8=6R(3-4t6FHb5P{~4jMW*z(EZMH685hptgfr65iX{
zwFLHZOopd>)Uc1LsJV`Vx(@0)*v~;dF<DD~cuSUee+Lc34;zw0(8xh!2hAe+CXor&
zHg$Hb=;o?z5f!QPKnJZI9P8jX2M0MgSOQ%g9O9sjgCi*Epsj;L9UShUy=vPzI4l&4
zmNxa!N(V7JN;&-r@3fHLNt`aK?JTdl%Hh!YqZ}MfrewM~=q@p~Vr?iu+{3{@@sD@V
zQ=pfFJ`VZ{_uiwY{T%dnFd&L59ix)a+#m;o9h{&hLmZss;6!2S5B(<%0Xf4}b&-P+
z4o-G(ii)Ehoa^9J2d6nW-N6|SMmad!!ARAf>EJAZ-A1V=>;kW0iO*3VLleB))|L0c
z9Gvgq0=2quk6tizV;o%U;1UOyI+!Sd%N$(p;2Pm899-$(Y6oMP|0AO`5h@=iLoANp
zql%vJ@Nlhz31YIA3F<oG>m5vrtluC`==Mzxrf>$PP(Ov69o*tzorAX>-0I*q2W1Bp
z2e&)8!@;8t9&>P~+TP>fUI$YhOmlFTgXs=tX*g!6cIF=XLo4*;ZZYZneGcw-u)x7W
z2eZYT>tLS1oT%Xg>fL-5*)~)XcKksHiyb_qszr{uSJstxejIaelah~!A4>A~isUSD
z_{L7Nc$Yd@<{<9CQZX4x+71#?Fn`olyrUwGQghmY>%ep1JIFc6I|v+P9Awpew_}u~
zC$w8o9EuJ~QbK;{Oek6H;Bg19sV!Z4!of-h&pBA`V1<JxBmUD4p3-22t)6l4Y~&$Z
zQQ`BFd|C7b2df;sD1nz8td1nvmXdUU_a0wyuqIkB)bMIF6JBQkrQ}V~a5=9PeoK@}
z-Vyl5!M6_Hb?}~p_Z@uTU?XF$DxUK{bnuab^(s>T1_vKUm>ND2CZObJ4mPRymFVa4
z_KV2p%?`edd<%O@x<!&-M>6Dm#|-QsmcsWAesJ)kgP$Dy;owgPKRfuv!8SGd)xlN=
zzp3LK9X8~LZjds~{w{vVVW74<_}jrhYWUY4w*GbSpMxEHa6%2FRVg5aIw>=|YKRi-
zlS0iDYNfE3I9>T$f|U6Vg;n8jknWp8ZPkW+R@F`I+AQ`XKZQ$ExGaSRDKt#s#1w|4
za6k%;Qs|sQmlPVO&?JR}QaD&jnu@kcp;-#eQ)rPgSFbI_q?7!9Gjy0%4oso7`1FCr
zLsDpy!r>{jPob^&?NVl|Iy7ar5`Mylheb^~2pl2G<{c$$Bva@lW++eERmEddI4*^w
zgpXziQ|Kn#U6dLq8G6zqh2vA`mqLG;rVl++=#@fmN%l#huRthF%8A5lq5)!3$)FSl
z?xAzA@CgxT8DIOE!q61XPT`yshNUn(g)^ht5h<K5d~yn>q;RV6X;Cee^FvqpIU|LU
z8m2JSkaLzIFiK4NOwMREydZ^hBMs-J%;nqp>K6qr6#t?W#-wnu@Fk*bZXzjLm-FzS
z!lD!wvuz4jrEpscx2JG*3S%XFqv*I4u1#S=3ghL#HDb~P-J2NU>r=Q+IMh5Tg&QPH
zF>=_o$tm0<fhj56B5<>4*lWt%x<~Pj6z)#p9!{_nrlv4WRWlTXyHc3Gha`_uGgFwQ
zsYqM=a3{Jqh5J&Nm%;-n+%MrdqO+rhT_rh}qfp=YHedXOqSUZJAneG4QIm&KcsPZ0
z3T_IIh`BU{Wpe4!6dsG(E)gf}R6K>Gf?%a!OCS-&gjPcRP6{big+(s~U&V3?K?<1^
z3MytrbJ2QXbAIxB6pIoliPCx{h3XU@mov-7d_pv|OMw-U<kKlU!|`=7!Ns#FtYlx(
zSdzwbDLl{Bn#Q4NypY1G6n;qI#}r;v!}nA8AcdDwSe?SlDZG-x8!5c0sx>nDS_-d5
zo#i*wukT@ft?=6^ypzIPDXdeGzw@VWbnIOf-xFm_x~iw-f0)8YVt$drdVx<;*qFk{
z!fd-Cn)#nboX=DEEQL+tQ$v`U!#HnF;mZ`hN?}V1-$wFZ3w#r~O`W{Q@*R_Z#0lH}
zl)}%<x@qj4#xE)SnnG3DWah0Y{FcH$Dg2wlHmUl92|0z|BmMMYdkTN4__ruIoUUve
zy7ylsxl>?=D2>LXpE8t08Z}g`DOxMN>ogwL?vuv8X&jJ7qcmzupk5mF1?r?xS0I$!
zPnZfDgdn|ZUuYO9q}|4<YL-UxG@1xEjaqT-w@9O98V99ua2l=BI53UYQSBtTN)2Je
zm>6m3kTlv*=967nj#cf_I4q6PX`GwJ;c2u_V{jTLq|qUbj%gg9M$a^kpg(CGP5091
z6zT6GCp*h$>gk%sQK||PCOO?yJT{W=9(C%tG<u}X*26Dq!#MOxqjwtpB1tm)2ov-b
zptk;L42YNm(-<Ue<g-(p+b62(bkQMcoRr4UG=`;davG<kF<efLh*YsvI1f)1=d`rB
zNgjF<Dm){Nk!hT%+EJp$O4R)9G|q{7O+K5Pm&W;N+@8iAX<U%Tg=tJo<GM61N@GkK
zSEn&Hjf>U%vNSGF<B~KkO@ntx=tlTm(iN(`GL5SQ=uGGj^%HdE)4t+go5uJwu8AT^
zK5Hk)nNae2iA@oml*SEd+?dAXG;WI2hGM(v&1u}Cs#`^Gi!@V!{kk)ascFnjV_q85
z(zr`9_op#kU{)G;r!gaqnJQ8~jNUzI+$+v~a*W*!`C*S{t7?vD*frXEAdQ7-JebCO
z@fSq3p&N_RcqomB(^xEisO^zR=FznIC0nSRRZG)YmIhqZa1l?#O5?pW-cQ3$Bf%`1
z#;P=uX*g*V(kMzvDh)3UKaI4C?jBa?K#)czjcgR;oNCF>M;sbuA4_SJ(^!$llW9~W
z^LQFhq*499+UV!<|K&WD#xrR=o5s`PFI`gAmB0LC@=xRWXgFwsAM$CJ8eWtn@oVgR
z8mrTISqo}S#D8TE6R!%h)$3`zk;a>8tWD#cNb;>T)}`@wBol@)r0<Fu{?`42G(Jq@
zk2L;F<D)dzr}1qX-=*<!8XMBsEXhyO*qFxW!k?z`SsI&!>2|1)vz>sSFT@Y~@?{!d
zrLjevuhaNOU8W5C%UkPV!|&7hA&sqR{FcU#Y5c^TA8GhGZN4oERgwN0@k2x8@Uu<K
z-=p!`uHp{SztZ?y;GZ=96$mZ<CrlsMe5Wu$%r#p~l_<q(x~S!%n~Ux)_Hwbei`Fg<
za<PvD>ba;du&-!s7j<0Jb$4a>u3BIFvC2hL7tLHWaM933V|Uk9a)4SjisW~9r-?Xp
zthtL8k~z>tOMzCR^e}XrO+s+6i$h!-LCr4ONT!{Xv=u&dk5-4dINU{h7ad%5+=EY@
zVOU5zMf|QVItzD+IIKO&#nI}*F=B>3kRI#eI2R*boav&6i{o7kaxvINPl@$$(bq*U
z;ohQ5=`_kuKNSav_7@F1HBeT%^06-$C%PE!VuWgkxEQLcllBm%o?&7Vob2Kh7pJTC
zRMFE!Sw%ldss9Xd!s1yjM!C4e#icIJ7XLgK=esz^#b_7j{%_l`$ptPhaxq3#7e*sU
z%@;>Lgtjh|z*R1;c5%6?u5fW>Bu_V}ZEU1}yo+(}|J_==MtsWfGttF$E@pU`>EU`8
zlU)4k;y)KRxVX{9(=MKIG1<jUE|xJRx|rhPW*7ImxX<NZY2a2Dce$7@g}1r5!^NG#
zw@2PiRdJf=o>3y6;bNAHyIstTYUxk79`6x{UEt?_7qeX~cJYvlIWFe9Sm0uzi+PfH
zz{Pw4w%rvOjRG4!=wgwoy6UvB+xo*U9(D1Usve2jE^)Cm@|kUS3tKL17daPsNhVyl
zE<6`W7mkaRn3PXPZ9_MF@u?*1B5;w3YRREMC{u7zl-LRvB^PBEkGpt6oQjL;NW<=a
zg)S`@KUDH$B=b}>?$5ed>Eb;X@4I-;#q%y+aj`~XFSvL~VyjeqF=`U(UoGa#qU_GA
zE?#r7R>jvvY5k3;$(s>}ZQpXS&c)j<-f{8n9{ezdq0b+<_|U}<E`D_Jk&E>%HoN%J
z#m6o-xcJP)CKsQ$*y!TZJv4-|3U}wv#s6ZDTAJ?4zkPJE#l<%+zE#!NqO79z(1Gv7
z`Cguf9M=A%weXvZZ7zOx@rz`Bb+J_-v`b;?|J}tOF8+@Af4bQ2;;;W5%~0(>kqnDF
zT<ml)%)@XGF%MN9+Il$D13c95u)l`}9%>TshL4AR1Zs)y<?YJw`>I&SLtPKGg(*zU
z^*q#<%zmCp^`YtAprMBYJhbv~poc~t8hdE2woN=V6=<ebp(;|oi;T2|hnA7uP+@Bc
zA1r#1n$QF#5Ao1O%-t5-c{t2NPY=C39PXjLhod|k?V*E*jvhLB=<MMLHDU83BkKmo
zVqIjk>mD5;KXl+2565~q&O<j3-PN4@(1#u>9v?A7RiwQ=^zkq_venl^KM(yQivv6i
zRMnt88t$?ci=E)%L=QteoaABX|DOQ$kMMA^swR6l#lxu{F7|MVhtoWq?%`Yy=Xp58
z!$=QjOYBU~94*fBFe-}e?%uH@=Xe+$@##ia?N;Y|xJYd;@Ni*N8}^!Q$3%U()Wc;S
z#(5a;;d04e>ES95R|r#{uZX!?cx=SkZTcDy*Lt{)sa{nRL??>wjxdEMdAPyDjgdv_
zq=%s=H+h)i;bt|t&BN^iw|KZUQW8e>4i8g3O!IK3_-xDb+g-xbBMuFPj?MCLHz&4_
z{e0Zx;a(4~d3fE!eID-jknxc9Fx$f%4@*5P^DtK$7I;`FFwesS9_9<vdg#D|9u|3c
z#KWT=7OUzZ4-czH><jJErBIUiF%L^56Z#YK;~p$AJyF|(<00iC;UOtKyKS*m+JpQ5
z(cp^{h=w|I9`YVu@UY55!9&r*3J*_uD0wJ*ctVmD(P|Hmd*<gNyZsC`ELUwf7EgJ2
z+QUi@&x!erhiCVw4I74%&qsU~Ule{>^d(XHzdD+4uXtD!jXU|TMh)Na@TP~Y9)9z%
z*27yKKJ&22!#WRdd-%x1dV1^OUCDpo;XMKR{C)&Nf4C?<jBHW=$Ey8AbVDS$(Zi>a
z4{XKH=N`WB@PmgRJ#6;yrH8LQd?Wd<JZur57!`)}TXDYg@O`9*Rbc=r@RMqPiQM>E
zfc#&@55*|I&BNaw{t@$c4}W<0Q<#$5J^U467TM%q5C3_n<zp}3B=#N5{64CLcSb%y
z#Tq_p3a}O1QkWm!1>M`nKH}H)v9FKXKI*8*+E9!%v{ldlzvREaj|M(Y@o}n;hCUAP
z(b-2AAB}u8_HmGpgQcX2kCr}K`Dp5+nZIk7Y3`$iRE3&p=s*d#j_mTcRpC!(5Ao5)
zM|&R~e6&?<JJCZUN%rM1ABRg@*rU+rjuJRh^oS7iDj))s>FVPsAANoF6Z2>v$ND%<
z_!uAEd~}bz4acR2kK<L_+ec3Un(GzHD?WS@q))`B{{B7&_!#2jBp(AK{$L-2B22X>
z_&720oYxMap`kv8`xxP4n7`}ACe+5NlO?(Pvhg$@r~8=b<2oN__!#Nq0v{LpI8*vZ
z`8ZqPEPvP6j_3Fo?c+Q#Ip|@m&XrCoKVN``__@f(7#~;pxZ20XJ}&WbdF1n@{QZwG
z#i${4_zE9aMzIR{V||R1*tI^!3tS_Cu$DAzI3a39RoAn#KBoGZ<l_b(H~N_D<7OYX
z__#@Npv)Ah3fq$2>f<&axBIvwieadqk^~{1=Ho6OcQd`K?R3$ZqBHieK1;YOUlHu%
zKGn|kalen*KIW(xYTK=UTxZjTd6C@(lDRy<6#*6sKj>qTkHtP7@^N5b7Ush~9`W(6
zkN12$>f<pVD||fZV~LNYK0F`3k7YjMYM%6A3D}}+9^Ri!L_Rw{QV~x3a3f5w_z8Su
zd{opn>m%o*;G?J_YpE?C$(MYD7p>)}FRW!Zt9?8!`6qlVk9=U;Fal5cc-qG+;y>f#
zS%K9)R{D5O_(dPj`*=ZkmFVuap#v{POq%28<;eOPAFuj&&ByCL-tw`|#~VK0^s!bB
zhiyX|`bqk>RJ{}RD7;7dzK;)l{NdwIA0PVo$j8?{zVWf%$HzWC_wj{~4ZgWD-N*$Z
z4WCFu*ul?yY!Y+#h|}n1acJ=?A72XZ_GC*W{H?$*K7RG_osaK*{NUq9A3yo{Inp1t
z+O3&jYovLbz;97sevkNUvfamD%+CR82l(5^KRytkMu2}Mv%|+uAO8tcAwMzAI(l0b
z{NH_k_LrQRs@hAmmMHb_9blhGlFxEdtWJQs0S*YzC_udc^#e4FbnZtGpg~|>;li&D
z*_@g~%7(PwI6#vC%>%Ru&{VCOiH2enpjb<BT8Z+@?vP0(tpgks;NSp<1Q;4%Sb#PG
z+6L$rpnHHr1GJ-`0XhXZOl{i-=pb--uxo#z@{R$H5HnO8devE+qXHZ)&?P|EsLT98
zI87h3hXxjp4RBn50RaXE=n>%f0DS`V4bU?{FKOr<nb_?-4fPX~pg+B>ZJxZKDi-+}
z6yOBa4vu74bz*=aksBuk=I6M4l8#Xw9$-X((E-kt@W}y21~@aoDFIFma9V)V1Dv5M
z{)~3F16{SJpB3ppJHRMm3eeU$5ue5LgwGFf0pk$u^%n*h6X4<i7pXS%{E`5d(lK$u
zeTvOF^z2b+_sRg-067U<C3<y$u>r;f7$4x80QUvBKftxBx+TD^0VV{P7~r}9*9Vv!
z;3h?2Qh*x*-1xtv5SpN^DQbSRXy_Q}Z2@i%a94oo0q#&0C8q|sGs1jkjhtywgl7bp
z8Q`9%c9y{1Q7vtSn(vKbGCRPW01pLtIKbQh^8zeTlLtiSi-t`?KNkjgFu)@5X?Jn3
zYyS=N(jx&L4PdGEu}EfFfF%KzM!nvxEgpGgOEM848OczyBW5Z<I@03`cmaHYAmV2N
zgzpZ@N1UD+6ao|jlme6k{KGU7pc0@uz<UAS5Ab+^Cjz`2;FSQ&1FQ(}yi7kC;3+9t
z8Q|#v&j>#o`5Ag1(&tna;uiv}3e5BVF9vui!0M<ftYu#a)&zJpz}f(B1$a#YuLpP|
zlH5HmZ;BI!dY$k)qHjl%@9rT$%^w8#BEaSV9|rg+!1@3mb3_7s7GQ%UKMAlg@;_AD
zHJa6%0(>qR>S0y*`7*#)>`Q=O18fQKb%5^!{1D)q0N)1qE^>oS_+h_7oj(TnDZtOF
zrT(zvq#@WE;I{yO2G|~8TY%pK{IQ2!%J7?-Q1Y*c|97zK`%r$-%&Pwa>|nOZpj`$#
z1H>|DkU_%?sxm+Z`(&_h1~oFMnK4I^y+mt?vMoI%<u`hJXLjY!+8NYQZGF+YqV+_>
z?ofU|7R3oQQ0)O3G|He=1_x%)ID;mtZIMCK44P%oT*cinVGu%9E%)HJ&fp*w+lU@4
zdPrv1{uRo%jpSK8O!&wQItd(}LHi6kWY95^IU=*`tw&+o&KY#cm|WLg0$oLq$>69A
zj#l5<m(WAfZecBVfeellrji~R9KVM@RMksWy))>OL0{oP84S*#pKyQC0ipv%`Ir)|
zoRGnZ8Jw2E=@|^k;G_&rR_)LXh6!*(94;_Il>UTWAU!2xeo}a<_#yKQ;ZYf!oxw=q
zGc!0#fLBtx8=jNFxnhnM-QCmkRHRoIW^hpkr(|(z);!raCWBcS+?_G_Vm<|s!KE2o
zmciv2Ov>Pf46exFO4W{+20p=YRR&ix$TO?PX22J}@EhuJl+mM$e0cMk46e<X$IvEZ
z%$ozb)6s{C8C;h!&xu^Gq2U8Z+|F*yU~&dirTnH0rett?26tp|bH+T)O$~fM#w{{>
zYsNf{NDptzn76mFiVp?fNh^9Bj8Dn2YFfrTsB#wvT955dSHl_dVP*#5TL|vS;NA?j
zWbkzc_hoQ@2Jd9>ZU(b6n3F+}K_-K_8O+Ndo`IFY1M0}bqVqFYkikNRWwtp8Ez00Q
z21?I5(c%*B0vS9cANZb6cKMME9?jq}^_RsZ8Sp_rHl*`QGgu~_;j>hB28j$(Y@0z+
zJ)Oh<5t~)zs4biDF&sW?=4Q;(g&tki>l2Cnj0rv;SI@F4gXh>bgFMrI#{6<=MFzzT
z{%c?!L8{K6#M#m$R+in0#*3Qy$SQq%TzZ}mT`t<IZtTenp5hwk|4n4fv$`u4&u21t
zHUqwWg{?OBG+uEyUXV_{RAEg9t1@^ogO?aUy{}`nRvevtS$%mW1HML;58aTyn!#(*
z`MRps3cr!Tn~DIV#I1xA=B*6YNk1pp+p0Q|KmHfzGsb_qc~$=V8GMkzhZ%g7F%OD<
z!Zk9qYCR|O;;N4|M*LTf4P5?u%#E5is`;nlu*f)U66f=b*}uNvNY#&R)^z<cgRe9j
z=?Twx-(>JD6HykOv-mE9?=z^IMZGM3$lyojWQHzl9v1#7gB|Ml&rBB!s(#7fSLxp>
zx=r*qPX2agCjYJ?!5<m?8R6{$e`WBuz&{cHUk+%5`ScuP!so)OvP$@($eLAFBWq@6
z&8$g-{M5>t^9fDtEt!3?*f(n)^5W}aYO9Jj9O|gat9@hjv)C_-Mp-nbaCX;|v)q6h
zWX+?m4VgFU#}3GvxkSwz{kM9?nq<*jdiLk<|7EmU);xVlffn+oWfrZnI53OWSsao@
zo2<zX2W4@v0P)rd#yu{Fwpko1=8;*ni)uN;IcE;b;_!&mK8p^*9Yv3b_~8?U>!(+B
zksCv@IEf&Oqp~<UYjVhy9b&z*I7a>ImPPk0j?J1m!=Uw0ljE{xm9dY<D^@*4*%#)P
z-olJ|pDg;SUu@M+pugyVECvb;ifRW7oRGzd0#wT;L$fBg50g12WL^ji&zd)HkC4pC
zq6{4$ct0(R)9FtZ`7F-JVq_MxvbZ~I65W|uOw8gs4n!8CvN$`7bFw%$%fA{owbaje
zj+Vm?fA*Qh1zB92#U%_>78hkPM#Ig=`e=x+4Plr0^d<47>OT88jsjU+p2Zc6mGq3w
znn!V|{HiRj&f-};SIec%WwpOv9>w<zjF<D*WX)sg*JjNf<_Q{_ADH>Gm?S-SW^qFn
zH);s($YL_*Ro1-d>2}pl(F&p`{M@V%-IB$vS=^?e(GZs*W5ur_h_@{_|B*3O4X26T
zB|2SnhA72mX3b4Df_t*KH;YF(`Lnn$i~F<YDM-FXV7A<zpT&YK=CF5jtLA1gPt6~Y
z4@~cjN%(;OLJIID!}Vehs%lXdi`D!g(MPg)Sbzh~2mQil3~72v7R$1TXR%ZR^wnbX
zauO>GTULBA6IpW#a<WKD179UU8FEsr)%v1NHw#Z8?HZjhgRFV0TSn73tA>2cvyeqG
ziyc|)%%YS<Ig8a<yqrZPi)xNt7Av!OJc}nZM%;_3d3hFmqYKyI3c19M{>dz!lC7t+
zcqVJ!yApmlwVvZ@;^N}vp59t;=sfdS@e8uPDvKAhcqwb%w!{bUnGcyxU(xD&FN^oH
zSd+!8S-d6=m*iUluXB7O&YM}R72f^c@^x9f9o4=g@UAGIDd3AKKHy14V?iH26!=JI
zoAp_I%(Y)Twn4$+wBb8pHZqb~e3r$gEPl;mYZjkp@dalrQ+gJgv-mQLuchQGwc<?P
z!lcB9)34w4`vJ!48_r(6<&r7%`z(IU;wSC`n)ZCqlEeM8*4HoM@O1}#8)}_S<~_8(
zWwA}+{YO>5XYpqi+lBuSf3zM>{EKs7=gz;g=HElY^~Kjp{41~i6Xjz*oB**Ls&c58
zL;ajdZpfi#4z+S-R@cax)yG*H-c;NxhrM&yCuepFPAWcwO!<9tCcW2I+d4Va&6!<;
zy<?i%Pt2yG`{&RghlV+L^<qub<ba$>l8tiM*r%#-&Lnec3*T%;bIo#So<j?@JxH{r
zC}mm+94Ojalp}bsz#*cPX_G_SsEWnIayUGP7xGw@NBbN)<nUAuPv_7vha+;hDTgUJ
z9GOF>oZ0v;%As=(U2-@fhZA$?n!`~!^v$7P4oBy3Ob$JAI6h}iVhkV;3EilHR|+{C
zo5OLG*PC-VOng&T&zyM~6vv$*>ZQ2#7VRT3cK^%iRsC}qz@Sa98YG=mHBd2R<f)w7
z%HW)Ntu*5^B!`o7I4y_Ma~PV#u$(z>kD%u=!K2jhoO$yhM`uf)*vab4DWa!}zMyxo
zoRPyhIgFMYBQ+3b=FA!UEV(o)hqE;<F%2<2<kozyn$v;vBy+ypyFeN)%$fDhslvF8
z$>HK0F3I6i3gmD@4maj-c@9@l=g_KaXiJl7yvF*fXr!*rnb%{E&0$=~nQkT(rx5q+
zYh{j_C&+<`Ib4^+^@=vHb0^6G26mb5gE7dH#bI;qTsP-%OAe3auq20DbGR*sIhxG3
z=WvI>%pC3%n3ls`IZWkz_{@ZEMK5!aJ6(~vU+;jL5ymhUn<f1mm%DSgCx?5feCN*l
za=2dt#NjfToim34uDH25%*){cS$Rmk<J_2^!ve_@FJ#|ySfp-pE-{RYbKoMS8?^E;
z!<7SvlEp`5nghL5+A29z=ddh?cn($$b`FUgk}|<fjjyia>T_~P<&e*zkV85LH)q~1
z&cJ#(4ARRLgB*OhN>BKX!3;5nUL9x5`MNyL3cA5RaUd<q0eVu(q0CjV(!5oY+8&ob
zPl!^Cmo3YMSLE>f^r|P->ik(%gJZF0a(Fg}A$gpX$I2X@qd*RS&}S~poXL&f=ddb=
z7jtIc-<-osIjqj%y&T@p;pH4&$>Gf$8aIor$>CK^p*M1PO_Aix<U534mo08Xbc4^n
zF^#WP@7~ffS(n4xbS!5scHY$#V!$~}bdpo(1GQbxg-|>8p=Rkvn&d39%lv#Sfelo}
ze3iqeIeeDG=Q(^K6MS*&CRQoyR_V1TY{D13Fg{=A@Rgk0qJHt!8I0}M;(R0et>|~6
z48jjN{3u&L<*<zdr&m(^oWn0-QsJ+1erpcDDG1@$d^~KhFMsB+osrC=T^@hs@OKV1
z@~D}|Ka%`clyjR7{HLk1BZr*~NZ$N^A7h9-s`4fQQq|^JRXnefSu1b0fW~<=$z!iP
z_ReFUJoe3_VcsM?cC)sc)XRgTTqlpZd6UVx06B>D^Vlzs{Uy*KZ?*{@^{I{5M_u(s
zngdwNEg%oRnx3Gkik$GR@@SSfeQ%yOlc9w)uu03jxwfKv2j<aQ!UyF|zU8_*IFCc}
zXd_8Rscqi8$c`2nAHF>8usjaW<H$TZG5@Pa9i*Q}4*EmW9rHLsJ!1E{`F75m3E4A`
zUU_t(i9C){zmAu=qw_c>k8XLh)3NQb^q=`ZZ{CH=gUWGv@L%M}?;#U>lL>WlU+YbQ
zJO)ZbU)ka-Py6T5Pd;<D9HO^;3{Wd>2kh6NyxEZl=W#+FC+5xd7kfm?$Pdk9SRPm9
zadjTUrQrh65pw3_JWi3JQ}Z}eo>SXtirDFSoRP=KytxNLxB2^L#`&x~M&->F`q_DK
z?VQUg!RLST7%ih5P0Fyd=Sjo)8U=0*?AL{PTqL{1V+1bF<B~is6~0XL3en3&d78aa
zfbzs+^B9-Mlss<EV|*Uh$koYtTr0p=aZXe;CUERDZ?BUB9J1^4=IyMLL~juDMoyLa
z=7|IDi8tl3zJZC=EqUCU$KpI5%H#1qvD@;Pn#VLv_}lZiBab`tW)Eey<jd%Io8qoK
zrspv~j|F+mke~PGF*}c$dCbb=ZpD_7xt9|l7P}|E>xtd_G)p-yocX*Eo1=yg$g8<|
z^SY{e3L~ckFB5nX!8k9}=sc)yZs6Mj^CmCR0n&%*ULJ)!ig`Sm$76Xod8G1KlE+fX
zC-YdAM?4RkgIhl~Q=YRIR^IHh3~WL(ld8Cfa@<K7igX@s9-dsSt*427&91B>9ORLq
z!oKFD$63L#&gGF;pg5%&@RA&UI*(`aDCbehqgtF5c|6J3O6?PQEEkh|A9n}l!>8m4
zmoSqF-xA3PJgcy9ana9}5`IqM;$L$<&#`#G<gpj?cu5PST)^r)UgqL0pnU<a<gq4?
zS_SM?z^i$@md76)mrrA_b0G5gK93*rcr%Z+d3>D5hP-)OFAcq=%(E_!w;8}CRm{)t
zFwt=r5PeUS#rO00K=?z^k3`pt(j^LTa6geMPQ{HJP>scBd3+<VN%V8kFGMN7Igc-e
zzlu0p1ilvK{mE|yzKd%4rmP=@e^F!@uAdZ~pJlh1PWZp7YO9jiZ^GL&j=$&4If_@Z
ze@b|}=wEsK&HS&J|Ch%O$^R>z{3}lm!A@ZmOxlkXP*pGqnV9pchL|-)$?4rMws!&h
z6ws=G0}CdZ?^{6Qf>}Pb3#d~-UA5g`Ra8<>RrL$lk5$uSd@&l8kl&zS(q_W~4k(zr
zpv-TL3g!+lFUeWkL`s^<XtM&E(}W`5qJWkKlj=FEc?XY1TTAkg0uB<NbL?ONUM#l}
zXe&B_XJdKNu3%nOeVD9sYv@ow#{zCC;MM|;DB#Ef&MV;j0y-7Yxqx8>3@@MyH5APD
zH@JYKWRBh*TfouMOlOWMpj*Ktf8y>`HLHpn@o@$8DB$>lN!|Pm5a=n|OSHFWp91<8
z&`-F(DBrpI@1f>3Zu|@^V33%^ynsD{9`gOn{0dlZ451J8V<#y}L)9a`O>soQ?3JSm
zIJ<z83pk}<?uT%vI8{wfE8uj2GYUAfU~b$o+9So`qBu)RI4;~S&ncLlmm3zxi*X(;
zE9Z)Gf?ZI+g=%$W0T&f8M)-;XE-v5_njUIW&7~4%-k^0x<}%4#u8F}sz$M8%b5#LX
z7cf@Qn^3?+$&4$QmzIw&;F<!gMOD{wP#BGc<`09eE10WAD!jRX>p62|;)VhytKp3W
z^YzW|ElsCxDqsrZQ`@|~inhq%9V#xy+bFD`GtDXB_5$vZhC2(GTEMh|IcA6RlUKWU
z70lUYdI2*yX9}2Az`X_B#}TO?ySrd^VX9>}?<tr&LW~u&*8Q5y%&W}pvlUEkuX78S
zSHJ@W%r79ts50_8+b<|!q1=A3fVkXPRKQ|!9xC7wfrmxuJRhrnRQNH`C8A5C+GPUl
ztR+2m0SQgcWC2bzOT){2Qnvt)VdMz%wm+jWt13`WIYzv{!R}|IBwH{q73aF+PM25M
z3k4JlX0t0vfLEG~WJPTmsA_@7MV}B|Ucd^0Cq*gqQ~^&%_?ZHpjqpl==Qz~`UWoXs
z3V5-AmsDI`z{?SzdAPOyyXVycUMry9YSdqi*Xdiqyo~F^XYghLYpH)ZRxZa|1+1h0
z)yP-lZ7$>jKCWOx1@9K{UICX@a9IWK7w|y=KNs*zsG)$*3fNS@M=Db1dbSeYAo_{u
z#;EpFfj{<+eJ=1##Q&mz&B9-bekHmks{L93h<z*YUBv&sfFC0KBeM|mKYeRt-Z1uS
z0b2`LTEwy<ek))bGfWXZi}+pgu_CI9CIWvH@TWN2MgJ<`tg6`G!v7TT4PX8#`k&~I
z0(J_t-z&x{QWR06h}K0MR76cFtR;GCmGNP(BKB5spQ2Gq&b~#|7N<@T`xnumh`K7W
zs-8goBK8vqHIUy>#TG>zAkav(v1pSbnhG>4qPYO&+3+wPP^)4s#c37s4-|MwuU|V@
zxO)+Y2(%GxTg0J7v@7DUB90{GT_C>sU!eQfvGzrD5H3%Sb&P6{D59UlIu+5mh%VxH
zE#fEv)*fBNF-2@!Zd?kz>b6H)dV6dU$H{sR(a`^1Mf5J>$|9~RqE8WhRduFlKhXiA
z{YBZ+fgFV!On3*0Gq{Koia1etND(I&af<LsqC<-qR>W}O`pse^1lV?2Q={Qj6;IcA
zohIC>PV5YUk)r3-F=A&GF{+4gjLt6NoFYaS&51M|<#R(x(esPApoj~FFDhb;z_c#0
ziv_6aiXtu%zEt!w(aWRSy{<OqT26>vUBuWT<`yweRpW}7Uc?OH@kLxCaIIoHp@@kB
z*A;O`5qB1GeG!w2xS@y}i<nZx&8nST#7zRd?~8?VhV+&qZY|<A@i|`P9CL>myW1lU
z|HNl%gzqY1T7*}mW9&O6XGWgS5tvoP-4W-WBJLHwFXG%^#Ow&S4Fg*hdqA8ABmR7W
z1x2$M7Z$OmmRWj?$s+L=i#}Au!;$<WMLa6Zk$S9%B@t$mco9|+E6aGU47-R#5ydh}
zWh9Gm7@sn3EF)D!x`@|Hc%uZj2#;%|gf=DkMFd5>SH$~8WQxcZ@mvwl7m+I>FB4A{
zQJ_NMCyFQu&}elL<p@`}Mw*)eeLUjqsERF*@Ctz^MYk$lJYB>yQSGw=D@Dh&jJ;6A
zsv_Pf;!Sa06n#bXCDGMIyevR-;Y3}d;;Tix#ts&-R!e41ZR5{cRjm_!OO(l$e16_m
z@tq>x6$t152St2X#IHqcE#jjh))(=EYCkSwLlIvKe^SK8BEBeMa}l44vq_XXKVx8J
z*O(}RK7{7Jl)x6zuSB!8V_bj~`=*F*i})_m@V!8(nW<tlNPiUPry_n9_(hZ*=d}Ed
zDX570CG1zi??wE<<X-|xCjb9g#6Ly+Tf}zB|5e1_98;c}DyAU?`1wy&J4JUeZ!3ky
z)SNPTZ8tSa*sFxS#jGh>OO&<yl)zrpE}>2d`-(}O+j<%ObxWuhai-mA%rO-Em(ZYu
zrX@5hp<z_pxP${D+^A%dbLd`^(ylDTw#`duC7BkYEhG8Hbz%pW(3)LF?4S}3j`(An
z#qQ!p%$q+Y99qIPC0tuVJ1Q^Xj1oqcaCiyrOXx584kdIf;ph^MQSpcpItv^r+DVkE
z{^I{X3U@8xsM4-okA^r#-Ad?QLeCO<m2hk%-=l=%ggH{|6g3<l6?+TxDWR_bR|;$U
zsTTzNFjfOf7+Auf5(bxWvc$+gp@fr47+S)KB@8LyLnU_d!-K)F5{8#BLU9W%hV$pl
zJ7cGiDJ7?go?hBDGdX-bSf0u5h<}CXs1in(aIWy#C7dI$QM3BI63$og(h@Ex;ldIw
zR*{A-Dq&0sVP8VKT<MpnHeB+T3Deul1;VU&rSMfHTwTK062_@GUX;F3n3I7+IiZA!
zB|K2Vd{tdn!lV*z5Wc>IwY7}ojU`Mj;jR*<mvB=FQ%bnKggZ*OSz;8pwS-$DOy#$g
z(65DQ$N{=D;!i7Ks&JTC!l^i;gqbDWSHk_OnpMI*k^J2PVd}V7c)D$L&MskYBr}J>
zMC|ga*gSDsXlXAfVIh}K3Aqv;EMZXz@e(WvEH2@Z5*`(PsDy_F!e~4uO#Mp*mWUoR
zBepE!Q@LG2LdBqjq(G{KbP0~|H=SauX2skRJZ64zy3H^ShiPhe?#e{7F<(NVgq0;c
zS3<FbQVCC$@N@~~5-KG;UcwX6TBw$`UtFV&pXDX&-z4^=m@7)SV&~3^_zY>7yD0OF
zYM-SiJmF~jc)o-eOL$5A7fM*g$*)%I{^}B5F5y*GvF$4YYf8KJoiM88zs6Rxj1O;e
zVwCW63BQ!^Rtf7Q|D)*JC43_Aj_A83yeII!=*J~|z{Mr}Q3>k>sPF~8VV>8;%}jpV
zASM&|#u7d);WHJ#Dq)MjCejkV5Z+wEmjcwlbP?{7Uq_tp1imTZTY+%-d@szg_<@T;
zv*jmo!e#Yq30s-g%4k={Z{qJPAy&pVZUHL(QNq6hwD@NU+e`SXguhGpN6dV$7=sz+
z2hPd=#M}|dhbF4Zs8>e)GEhd1ve`{)ma%sk`;<{j#l1wyXDIfKaGf%0M>y<eT@|^0
z_bX%nGMbmsqKpP*G%TZOBzZs?jml_THd_f5HW5F>EQZUlSs8V;##@%rs*FP<b6}+5
zAc5ARoW=(WaInHD(WZ>HktDr6tc=6UIHQb_WwbA&Lm4NOabg)ACDXl(W6L<Aj3dkF
zR7U4Ax|VU2s=7pK=@s2Ox@;D8H!+V9<=kK{4No1EIj)S}W%MbdM;XVL(X)(R5@X&Q
z&m3443olsumeH?_0c8wSE&JPFfUZ&rKZD9(dKp~awHt<MbBJVEJEDw}$`~3o87441
zDpKI&GEPzP)Uw%IPYZEX?DRck&Mf1sGA=9Q@-jx1aki?)lyQ#0xpY8av?v2hwdV_8
zD0;yj{ELJcpNj=95xtc9wd&dMiZZS&W1{$1iH<E}oWRu_DV>PMt4QH%1+EbdPa_k`
zSfr$VT_kh8z@#$h*x>79lU2OEj62Hsg|~ppm{P{g>iaEa+^R4#4rV6sMv(a79J{lO
zyUVyo&8L<zP2euk>7p}4>D5euS)$u-jon+uePujU#=~XYFXsG6a&{SWB0RT@dBP8f
zZj1Kr1u8BSeUQBqpq0gu*dt{;T1F7@AL9u>!b=2}ma$AAUWO$=<#dcn5-KLka0F7K
zu4r16l3p2p8KHbg*)XHptY}U&Uq(S7lqm~S@^OKRXtf5KOn#myW4V|sBFQJqcq+nA
zm+_47v!dZ_f1ZO_#+EX^E@M?0FRE&D884Nwx{QyawlA0QrtmAGYeYGkuWB@36MbFu
z4bd&PnNX}P<9Ggsp^S9`Z<i70brZh=DC1q>_ae^w0w0Ke$W`1tMlotwFGC-TZV>&X
zj3@c~&oVw$@v|~E5eR=F%KNB|v?12g#QsvuuSECe$-j(m%h<1i{VVvcjPJ|Xp(@(?
zp^QI;e-!;G;{Po0OBuhGu~qmt(ceY4iM~BC_J;uVyw*9kU6}FttBk)DkbgwU`L~S!
zBFrJ!8MTU4P*njcCiB;*pte9wQF3ZkuvZ0pSFlgS*|)MQJB6o+IuXCFK)nj;3xo@;
zK?MyfIG}<?Vupt|RyD4mNd;$!*;KS&1^p{%RzdR$T2xH>>R7=M6|}6NRRsrD&|1v)
z6&zH-!4<Tv;Lr*V5tH3%BS6j0WOL+b$6^JCi%C@!;D>-!r2KTKm^2kKkF4OR3XZOz
zQw5zX=n}Q+TET6VUGnSFv12OeRzdHmwtEG~RnSAlV@0P-iybe}vw~g~JaO-?wpUFt
zbMmHXrr1XUeMPB!fcic}lrjSa230Uv;Dm^OA_quUvL{tARLo%&oD$Uz7Z_2&$q^^n
z*;qVP#nVJjuYgm9%#kXdDSDRZs0z*&IH!X1E4ZM7(G{Fq!FggDJ=&gr<B#Vf&LsjD
zRWPQ4i!~qEH3pNyVOGCf0xK$bvVtorxUzz)D!5wA*%gefV4U!*3dUD(jfpdEui#oS
zsboq86DpXf;<`n#>jbW^n0r%`gl~u>Zxom;dQ$~8<{2MuuHcqvma@sMYRH6ehs5rT
z+S1{v5uR4TT^f|>qBBI<shLsl?v~^|k^H>^_f>Fz#G$r170j(*UIh<Su(X0@70i$H
zJXFB~;e{1ESiz!*zc|t#2Jqnu9;x6_)jk%<gtK&sip22>tP0!;yb5eF9npknG7_W0
zlyF*<MUJCiK~O=lf|8h-3bGaCD!5U#`AD+xzh1Fzxq?as)e@i&k8^qpFV{Mv=G`lc
zwH$({DtI}H%+nP-Q^B(ptc*A>2s|hHd^A#QwW@*_#e7M0wP=_$Ua4SB1+R)j$+rYv
z6MemcHw4}kT`Ni%y0nhdUd4AR_(0%Y(f35(7o`}5`T4MdkHjHfzlT?!RPcKRf2gM$
zEBG{$`K*FX#43Iv`ito13ceJep05P9h<;tcHxd6^?gA11zJecwe-!<xf}iP0Rcsq?
zu<+i#Zf^Xls;w3L7PZ<Yz}i16*v_?6jS1EGtAf9|B&$s_|3?BlIr*#cuke5B!VckZ
zn5wFQYV?(SjcU}aMvH2bduxf-6WvR6Z&6n5Be1V%ZP7Z_s2kNXnDwi%Up4j@=YWXc
zK%gPbDg9DUqiQr3vq>b=v>MHXn@1cv*|Hj~s&Qa7T8nv{=s}`KRpa1l93tGN8i!Y-
zy>MI6L#xqF;4o3DqR|e*okTl|9wB<9XeiTJn8IBIx{8L=`{-&M6V-OBM)wFGE5PPG
zBF^#E=o#T&0=-51RGZzC$~i#&s?lGOA5e{f)fiNb!PPiN9M+ytjZ-LGjT5Ueq#7qh
z{NVyat1;~VQS~L@H&y@F*D_|FhX|3OL`X=c28|L?WJsA(h7hHYDML}Agv^y$rMl-1
z=g#xJUsBPeB0o~5Gzn?&uDi~6`+J|~JnLC|?a%(~@$7TXK9jp}Val0uyGy@U*tNK;
zr$`@RFX8>d-ojJk3&;EeZagTZuRDLr#C%URaXsWle~ANxgM|ZygWPyngqE`=x*icf
zp|!*zMjz_NFgJ!PIKqu5jQ*I&NH-ogN=;o~jB;bNlrci5I`ltI!Rc;{7n$J3Q*KNY
zpDd)!B$20u&j{JP&${uP8&izUR1xPAY?>R-E6C1b@)>T-bYqqqvn6hH;{}syy&H4H
z=Ne_6`fk1(FS_xP8w=c6=*Dt4R=Dx98?U(Wnj5dn_*FL+yTNBl7b(aSfQ@R~B__zM
zmx{k3Gv^FpnTdVVjg@Y!a$~g{PFf}>;kHKhYu)*q_4L2aBys$|rQqAbcih+@!UH$6
z+vLV(1-A&d3%3fl3E6HmBfjs(4mWmr@UaIUxbdMILo5un@>9x3Zlv5uyWv(6Dwc@H
z4KE8O?sp^PM%WG8*aX}NiaTx2R1r7gQli4xC9w%{+9XBh=v+GE#@BA_b0h0U&W!>^
z?J<@+MRvLIvB+*WK5^qy@y~>OMTic$IVVwj-S}KOl`q`*Qv55SV?g~I1&_M%tsCEo
z?-w3&<ABKbLRublh>#ULEb@c!h#Nm@%+QS6PsZk$8^_%^;l@cf8dzv(;b%8axlzOd
zEd1ieud@8xjo;k(-Ho$uoO9z3H%@aWb>ocL@w-<jtQQwutxB%pTx#H%zZ>V3oZNY*
ziIw`tjep(v&y5RixGW5-=Hlv8nHsL!in&G<b^Ws6)t)E+7K&M@YN48i;ucC+C}W|l
zg_0IZS-8wXX$$3x<bOfM?6~bX@A{@vK4B8Ba*VQ2*+LZyRO)CfRj^P|!={q3I^Ww;
zZyw}FP%FAdRdrRjP{TqU3s+dEX`z;d%PrKlz*7A+*u_=ob9G&NHx*%Cxo-Kq>RPC0
zp}vJHNw^$W+SR*Q{+>%?bMncjfUdI8$if{K?zGU@LK6!eEZk(FsfDX8w6)OA!Zj9}
zS-93ha|_IfOEeo+<o$4Iy@i!uEqD6sItwjTat2$8v=&}3Y$Lou$eStcEwG%lywS=p
zW4>20U&rCwi*&Tm$-*rbZne<aLKh2NE!=Ejelb@w?QX<S)Wxo>tH!xa4!c>n-O4Yp
z)90DluJILI?8>HPTz6Tx+ronu`dYZhLU#+jEZol=E%dN(pM{<l-ZJByJ<H^*4%>>@
z+d>};56C~CG1!8<=&ZQ1oc%03WMPnnhb?{u(beC=01E@zr$zHN^f{zT-Ww}8*uo=L
z{vX+ova^b~*w<|TjiZWiiEKR|`>`<G!YdYDwJ^fMW6Ex_g^}zI9r`C&c-+Dh7Dg#*
zjBvEjnIFcAKPhB(<3z>_xspaFPg$5KZ<B;i3!gFmoq6n8**|AtiiN2brdfDi%1aie
zi_Eex+rkX-nL;Nab9}+VTnqCo%#mJ17gO`a8T+CLS5`0DFOafO__B~ui!3a*u*Jew
zDNEQdBClC^-NI6FdV5pk4dF83atkX&9RDlDR|!{JSYu(Wg>?$9XK$)U9Hckr827e?
zcVs|igUCh;n~bvA$}eW##%};v*lyuH58n6ST@nj#da#l~b}k2%2faD}TlkQ>rw4UC
z_{f6W!gm(-Td*v6EPQU^3kzNgJ_}h3ISYOZHpgKRSK30rLeN6ULRekHLQ;1&c4EXr
zRC>%pLL_c_kd{dcDVFDje0MuZSeK0I%V2?pofbZm{Voe1TliG9+il?!V?!rSS|Zaj
z)gB9bRW?Vb!Iu`kvha<CZ!LT+Z~KHaW)f~rnJ>Dca=^kF3ui5SFUy0>*TNz36T-t5
zez0)F!jCG_Q42q*NOa;9gSj8Ga9pv>$k9*o5MbdHCx1>O7XGmCt0~EErbbLiW5@oq
zg+DLxz^HSa$}G4%DB{Vt|9K_<M``~y9{!d1pAufUBso0!eY1oIB|Rvr<i$KF?kQZz
zWsZz3<;kA_kW}{IG7n07P{xC@9#m9X>g7Br??D9xod$GD%cx4mhDsF=s(Mh(gX$jC
zRu(lpsOdp14=z`b_S~G7aX3@exx_;~59)i+!GoJTxYC0L9yIgdS`Qj}aFxui5jOIm
zsp^t1wv;CF?^Ne%Q#)osrMU+!WYbnjuJhn}589~8Ej?)EL2JdbRE|A;-XISoOzv#$
zWZzzvH_8u<JDN;;deF&(&K`8}psOtJ^WbI=Zt<YI2lsk#s|UBq_%3<q=D{5@yItsH
z!R+od`QGipJtoR&aAwy-N;xfqFo{z<#`cm=Dt(yTgV7$0k@BDiLp>PgL0=F0NqI;(
zP}pBMz~o5(gFJZHgTYcB@!(Nq$6T1j5K|ZihkG!>gU3C1LLMITV5A5OaIpbNMk&d~
zR;4o5gIONT_TWhm#(6N_g9#oy<H2OLCoP|npNYar9z3m*Frib1XFYh%gXtd3kiirW
zriw5jw`m?cZ|s@G$#<p<oaQCIpx`_Y=6f*5gSjTwX~`Eoc*%p;Jb2x>T_Cbh6?xf%
zS3G#tgGC-J_F#$0%gLQN(my#}kuUXNxzduqq1r7I(q@IplzbJ(d0E$b)6T0!)(F>n
zuug<#^vUfl58jsYj*!X*k&PZ~GRkI=EyArHY%}_Hk#~h$eAvOsUpyxK&;v_^K0gw1
z3z@aY1FyKx1HZ9(ZdSfXwt@i<f+8VdSQrsTg*9~M6BkbinKmhs5~hV2Vb+73NP&=+
zJ3WQxY`Z=9gwu!@wY~V%gU>wp*@IIa?2+Xm;a(3u7x_YXQ23<>Ux|Dz+$W^xZ#?+c
z@b5g>Z}<TZzBk<I(EoW5(E2J<9ai`KAUq=cQTUVas0YVHjtklQCp<W5_%Bmjzj*Mg
zoR{<BH<8P{`MLLZ5B~7rv<H8B;F3b|j12w}p7r3I2Y-p5_uy|4+VC{bIdl8hDF2CE
z5b`9mh!>E<qF$6Ro{NbT7dp49OL|et#8N3OUPf3}$fW~jS6;k=u%eJ+C6UTrRPkcB
z#%fhBs+rj8Uepk;DXb+dr@LBpytu-P2fTQYSj1IVQ7ycvCqmElMXvOsfk;E)RVKEP
z7mdZ62%CEI?|@t_yhhkeNby=Pnj6liudnl>r5CNdXzj)QN_)K*ZM?Wm{01R&?<msN
zi*`n7FLI->gBLd$opW+0!#j&~5q1^cEWAZ{tB~WWn-{lxafcHW-YI0hcX@HQ_&vhz
z!h20@54NZFDO&dQqL<PC9P8>W-p43hT<t6Vh!>A~(a-1)iS+kkfXG0j4-$FUi@_pg
z)s;iM80y9QQigdk+>7a6%usNI7h}8_>&0VUjFj@Y7f*<=Z0yicUhu4Sv{AO|*8h`U
zJSAnE(Z_o+!Em<BMDa;Rd0ONdFD85Q7hlgR_?&Qxv6(6|P58XGaK@PF#VjwDd9mD!
z*@}9}iv?c1;KdvT=Xx<;gr%J);_UA)Ucwi8@roC(N_knxdM)x|u@|o^xJ3Ax1~8L5
z8yzn7;tgZ(w8jbr-}d4iFW&TGr5CHbSnb7n>1(`LE3(d{Vn+1lAU(Wg^bI0Zws^5o
ze3KWOMVuC9s;ypZ^J2Rf?@E8qTX<iOsTk{&XNMObc=4eOJi?EJZXs<f5%!>0#OH<I
z3)_o;f<Z5q%q%=MIoBpEYQ&4E7al*ne#E?pd$He#13n};5?BTwdis!3^4)xxUnK2C
zMua(Ly~r6};KfeyT}Js>gysL#i_bX2`0_L79*M_<d%gJFi!Y4**Is-n{*_UfcAppD
zDEO`Lfbct()7Y$=;QC(tpi%zk#Ub&-!XJc3gg**djGw$XYB<-mj(c&!i<4gb%z4#^
z%X~QH#V=l*_2QftzjE@|fH~vE@0`SR&T!g`Kg3x`Dt{WCK}Y$^i}PMw@WSQ8-zN57
zk$=>`j-UUGlOjIAhZ4TL|Drw=^P#vngX}4m`J(5N(w$rwTUx<NK9upHtPkZBtYFfX
z7omrWzQW~ha;B=RU=_tyH8$1NM>Tw?=|e3aE?4k2A8L!V^r4kV9Ura`sp~^MAL@&<
zgpGZ;QoMn%q3|jn9vkm!#I$^<hTowY=W3$tn)-0H57+q6%!jsm2<=+gw-C}>b06BM
z;@3%WY+Czpy$>CI=)_nbZt&qoA38V&KD6_py|}Z?LMJ@hatVdRc~<i##qy!1&OUTe
zF>djJi%wm|Z&qy2YOelve*J{4bgT3Qm0jHwML)NT+#$Tvhr2}X7TzQ5F1%ORL&#LT
z#_#3B{XVSqVVw`Xedy!E(>^@o!vj7%=))5}jPjwcv46yeem*>;V1FM58hwBWyMB;S
z9u^rabZ*Z*>cbEphWao};$y~gxDO-5xpc!KjWqh>8VOWJOPL@XV`9gOJn6$Yqm1|c
z-@4pWK1`H8$;7g3lYMwr!6iOCCo<oM7k!xG!&D!p`S85N7krp*Qq2^Z!PZdOSeRKp
z%=YEi@pyW}WlSn_e3&b<c|vD>_$Beh!UaAo6nR;=Ncf8IRUw@_XJ7P2x3Br|y7Z+!
zyeUHc4Ih>nzFcI5&^hl~DZa{w)go&+-c&ZmuJ_?BAHI_Qwh!-c<`m!H!$u!0A3Q#6
zlEPfx^I^0279X~XY!hx52502Il=Utr1oO=N`#$VY)Ca;3efUU(txZd}IPWxhMFKtq
zeej7h)-PiF@&|VYLkh-(VPQnbsHlkJGtQ%c(UV3``;ZaO`mk3dCoB-|6tY2fsaZbu
zVYkR9!cT>t3HJ!!t5evspZoBI(y|O+im(h{i|jM{HzMB(zY{v;{N9JEepK`0AVnVz
zDe8A0{_x?j_zyyQKH|fV;y)SXs1L^sKQ3~@hm+dne-@q+{v!NU_?wVfb8<MXB!3J4
z6rK^D6`m9RB|I;5hR{Dg{OiMiK3tHiGJd%HDB{mg`=$MWNO56NVKJeTV+lV>Dp*Q*
znLoe3Fd;XRi@dBK<@_k`M+HAB%CfQ_l`iq)cw?$65}B~NA2s}V%8!YD)byj4ANTpu
z(~ryj`J*<s?tawvqmCa}_)*u7E=I5CM>9XJ^`pL&EB$C7(oopckE@JjBaz0!CVn`N
zyk2c$uVLNIXm9Sv^?tPRqlJmRPNbzDt&GxIgpX+6V3eCg+WOH>q`lE^6zL%3!@V7i
z-pP;7;;g<?$F2(AEWE{!TSad3qnjVM`*DXK_ei-@c(?E_A(OKt&fQYS+r38b!80rE
zceLpxai|~ni}d!RkH`al3>JCNkG_8N6Cby$uv8EE(O=2{;XvUa;ln~F$4A7O%cFh_
zF`Q?Z!~7WT#|S?j^JARRM~aO0<8hHEgrkIKb<c%|>@j|fl|r9Sitx$a@kW`zQknjm
z<i|T4Flxr9{dmTY$$mWR$8#E8YyFravQjuzIL(je{g^I3!;hItesLtv@?*B5Uhv~(
zKVI=;j)HTAG@Iwgd_P`P@FhPM8hwEX8^jsmulljbkJtTJ>c?U~miY0S3^>y0gwJ>r
zdHaABe8Z1rek}K6g{g=$J{iSpcH)~#=(t@azFN5E5`CTcdf{8bw}mXv2GedE{n#YF
z*^e!L@Vx*!-zsIBAKU$S*N^x7_|T7!{CMAw9e(`8k3aZPf*-Kri7OX}MfjM|(VZ^0
zAC`%t&TSfRM*HFSqo|EyHf(wRR2c9hC=&7`B@z}!gi&Ek$Rfr4NEn_pZ9+XQG2=(p
zkDNH$q`+A26xrp+$41%h$0y?U)_hGr^J9-6d!_v9$8RE^`|*VzU;6QtA7A@%*pDCl
z*r%pz%y+x|_{NWK{rJu(2mIJC?sNy6muB1!(wp={#*zj{3_t0|k8Dh~xlxY$am;YX
z)d>Y1hd+y-68>WJ-&J5%<R3r&@Z+?CfBJFO=x0Ql>74VN_+P^Fe*7)MQ$Z%@_OF8f
z`Efynipxe3yKugR2&azXHcHrN5=7G=O4=x8V~33oY+Pm+o-93VqqL1OHp<#4XQQ2s
z_BP7fs9>X!jm9=A+Nflsrj1%QD$8v(VHIIjA*=6{s=AFDQW#`ATrPfvjk-2!i`Ox+
zPLg^yuC&oWVtrF2rfq2BDv1|8lQgl>)W&r-TH3hU__@}`HHJ46VZQXx+(wH_JhT#T
zBWx|aUg#Lp{sslx+JzI*jjTIQ;BDMyql1l`Y;=^;#YR^foy0o}Suk4OEPjiSL1zpw
zs+*15ZS=L#&&C}#?zGX%#{D+#vT?VK9>)G28{KW(s}^8#$EQQ?v(eME%*CkQR7~1F
zDl?-VG>Vh_AsYjv^cP<AIZ(ktLZ|wJZ9HP*Q5!>S47Kr!jaO|9voYMpb2g^f7-8cv
z8xw3iWn-j`$8C&Nb3I{Wl#S6g#wf@ST=0IhlTm{)MLyss1UdQJ7-wU=o&RdVdR@y<
zBxjpXwDGi!XOwo5kT=ICb8u?O>scE-M(}{LMeDIsZA`N<&&GTk&)b-8W0sBCHfC^|
z+T)t3<UBujuGE}a_XQhsY|ORuR~%eTx_E}bQ>hp2{DTJz8D--o8w=Q;8;bDclN&D^
z@2Zynun9L_%`LLASkB+FvBbt}HdfnMW8-xjOQkOthMK$Hu(6E0kLLV~d96_Fo5Gbg
zR*6*6yH0F@wKmpEStq2z9C@EQUd{EkjdyHpu(8p`HXGY*Y_hT0#ugh}ZT#uV-}z;I
z@7q?y$%~hzi{W}#e%`b3KKER6=D-IS8fWrvhJI+{BQ|dkrGs#r91(<N!=s?rhR=rI
zj5pgxKzb^Gpp6jsy8x~UAZ#OI<8K@P*ofMQ+1PL6fGp!ScG}owBVi-yq!s3Dq(w3|
zvLZa2y7<OWfywb>8@p|MVdG01pU8}Dvd6}!;-3kfRC~ogH#Y3zuMGdj#@FKejN&Y!
zeyiYjtdvI7_cjjN_{qjm$IQkLHjaoNvT@j?b@mZv`lA#l_hUAW+c+!bgpHFnezWnr
zji06bB0MEz`T4vD@mKC;dNueDqyK5+wBgR>)fv+c=cNB7JTK&KMJNB-_|Hc50BQtq
zL3)t@5XgUK#}&v={?1~1(Ev&YP%4085~&vtpoHOUtINd82T&n^(gBnSpsbVJ*c6{y
zc!#>8l*$2A5vde_^9D41R+Ums$X0T)t{FfrDGh{|2T)gp_O(Uo2(JiWWVw8e>Y3R3
z0bFS~-+pZ<ewDCM0F6bO1klvj@NqcjY_nMa*9I^kfPso?9>5I&v=wh5yiV9MfK~yt
z4&ZtP+X$Ujb!yZufc63O4xmo}HwMrlfV%^@CxDv*=or9l0dxzXlTvjJ;N}222hc@9
zXM{L-i<Dc1PM<ov=j~GN6y6cYAAFhVT?#r0yNll^WV75W(j!nfW_l{vD}eh&_<1y^
z<g|PsfPN;`g8}pvFFrQkwhxK-7djK;pa32Y;H3Z-1TdJ+19&okaREFUz>okQH-3f&
zFv9R*BEwBd9#e3naLxRDE>8q7DuB_(eyqqCq4VBZ{>(ps2?5Lw;DrF53SeRYQv#S8
zz@z}4mgTbnJR>q$=ro%1J~*>@E`V&c{F7bN0(d@vnX;iiJ%AbFY>kUE{H#kn%n_d_
zoGWCioF>Nk3ce_0ITr@-asVF$@L>S21n_DAZw2sn0E+@x9KiAbRs^s_#;*skG=SHP
zH<s!R!<U&>VlM2~Hv?E1z?uNo2C&N5tPcF&`aEscNndYbsW?6LP5>JM*c!mL05&Ri
zv$5F}D17H`i<EyF<QIIli@zJddm_%~6y6VDhk|s=`PLcd9|hnJARwIytpGg6rt(;q
zHvnG%eiLh((mLZU7(hr-;Q*om#Ka>3a8-~7@c<G5Bqg$0oTIQ)9bVz41IVx+1IPvN
zdjNj~P$0`s1Ncm2r*KyQAB(VTyG1_H{=(p%0QO2b9>C`Td=bEp3Vs>DR{<Od;QIi+
zmhw#i-v+Qx{NjA|T>$%~&=pJT%*F?)Nc=%~NO+i*x^UxFImgBkiB5HX5~qiwBFBVm
z-V*_w4B%%4e-)k*(()Je7mw_}8HJAso(|wo1uq0}#^`4QsH}H~&js*T0OyVVugKp4
z{9_bnx!^wqofdWl^YecZA)OQrqF4~c6{KEDqy(=5MEI8Fl$wQeNSR>awLsY*zFD5%
zqss+RK8OlIR1BhSFn=aoNl0>e5S4?d5=7M?ss&L~dUat9`C-GdHE2n!CEW>9sjXlg
z;T6Hc8w&M;s4wM8;Z;F25NRl6DmrXrcw-SNEacTetP5g&5Z9<i&4Rc#h~`1G2x6&}
z>w;(*#Ir#>7euQdS_d&Ch@nATA4HoVdI!-*-fj@y6-3)0+6B=*h#P~rO=1UOXW>o4
zjzX5IlL+sCcM<6t#LYq6B7Uo}VL7?cm|M3XZkK+C@J`{y*t>(cM@sh~?hT@cI8*gv
zD;eHXgpGN>QOF-Ke1OP<LG%^rXY_|e`m1Z4k_-%DkcoXbh{1+GBJ!w^1sf*vgmAcU
zgzzyTU5ylZ+;|=p#AqpFf_O5BapGfzPBq5|@w9>ygii@43h8Z<2;Zc8Mr5+^V*5-9
zVnz@%9UI{^;qyUE7hy-x$t>|#g|me(2<HSbS7crg3q<A%UlhJ1bn;p#{<82DA>A@+
zk@#Za65(qm_H{Fo-_WRACgk{BF0vwsH$_$oR|!`OX|pDXwTAO3`Bo5b2jLCE7sNY3
zY*5sWAU29@6>c*2n}gUQ&W8c$irY2?w+HdA$a}&^E?js&2qNDqrOgKtKNNn%s{j#8
z=n>L}>wf+q>>zSd0!B{;5fl#z!$yyYM1?V7Jc#A|5NNRQt^s|ff=DYWBg_h^^9{!W
z!*>R;%kYnb*lqYHL40cXXF==<VlQ`dev(x9rSJ<OFP)sHe7_E2A7`^5zGX{Bu_21@
zg4oafI)ZKy90=n3ApQ*DOejBR9^{-BLKX4<1#!sabvTG0f;gh!kHS;JpM*z+$AUO6
zazaRNCq;f19+>L-C5T^x_$`RvgD9#j{!rAv!qY5<$Qj{z;n^V0iTovWj$eO^|085B
zTz>pd{DROW&qaip7A}Zz+!hO=cnBpzC>cU2iA+n~!OKD@9YPuD<xOna5Xu?O8Ky!A
z6&0)`oHf1hx}a(Z)k4@Pv3dwKLTDF4`w(h|P%DI1#>3?z*Mv~pD0M=(LcDGW^+f82
z(A30U8A5{)8isHc%d9oY#vwEc;lvr&e>?MA34R4GgtH=7E7i;Iy135C8Z`^y+7Oyc
zY!SkB#%JV&tEIThJlWM+!Rv)>gg1oHR)j}+o=M&qLWdCMg)l#an?mRq!ZV8P6hdc_
zvBEAP3>N7c!p$LmojBjHw}fzO2)BjMErebn+#ka2q5RiG?+KxM2zP|?A78ywsqPBl
zZV{dxF(J<oi1&tYpTr(Y<>>jfh!AK%!mW1*0~OmRga<-+FoeD#^jE69rOf(;@Q`e%
z6w~}LAOx;#(BU9iK5XoHN&ATSqah3l<?o~n4dHPqG#(~0JcJP}c?csFWGm5(OA2hO
zC!~xr_M=6{gz~E{w0Tm&al-K-ObFqrQ2va<IV+eboda@G2v3VsXQq=wcvivZLYOWx
zMaZbBAxty;c~)QcGo;KE&JxZRz93|(IU&pq<v)|l&G{kAi;7ww!b`?xfyhFZT;!Dy
zUJYSU2#Xb56~dAbUJGG)2rEMQ$CF-{{)Sp?soK^#MO>!3lRF*prp#D|mC{L8hp;Au
zwd$R9CYHwheyro+Es1Z3@Q%m^q0@JpjQ!>iwuG=%!EGUY8p3BGY*+Bz5Z(*n{SbD9
zkdyL32p@)!G-*Ey!4ra)_N86!5G?6DALh4Ed?EN*un=M)1j@MV5P~6u$W>Yv-YG^n
zgosjcbY;rq6Eb;^@~*f>Da{g!Wu?edCf{@j8S$*pNmXECcZRSlgpWhmEyYPo{6txk
z><M9S2!}#AEQ8NO_|~NTB7`r+zY5`N5stlmBHx%GOTz8D5caFf$Pa|@y<*7^l3Zf>
zgV9fj90}n^qx=-YQNxdga9rFO?eudpgr7q=6~ZsZ<~NaFh0fy>zlZRLf~SQ}r=Jbs
zoPrf1_$!3-;<dv0neA_Jgz=Bazrz27jJ+V@3ZsaOojsyx7{wGU9!6P_5<=RS45L&y
z{|^3TQc4@WOt|naYB{5n52J$N6~m}xc;zsvh*uR>GkSHA8p4{w-y0OUJdE05)CuE?
zFwTT=HjKJq)C*&37}LV2AI6nov=8IPFdBr>FpO)%{K*uq3ZqdNO~bf4oS!Zl3!BI%
zr;Cdd$TeX!Qxt2>&53Fe#&u!-<N|HNXc<N;8MOZY%`O_>5JuZD+Jy_RM;y<Nw+><4
z6h^Nw?hm757@fknLr!SZIgDGwxGjt>Qo0In7TzMfw2-v#Ch_)ge!g<DzEjFw!n?z`
zCyef4+#5y@mL!axDvx9Api?k*A4%^p`iC(fj6QTIOJ?_A7=7ifpYS2&<)k7G3}a9j
zqrw;+#=|mrRLH2oB991}*N`xViVq88co-v${#Y0z!+1Q5CoZW4lQV0U>SBGzgz=n`
zFluZVPlhorjPYSi2xC$hPlxf8Vka86G~>p6p9y1f7|$A=3iZDFa+hN>#q`nhVN4Gr
z8%8dS8DY!}V^J83m2j3u$P41LO*!X;F*l5Pidra~AI6Jeyd;AKGIpxq)Z%5?yds^-
ztEMGsvm^|E7<L%1h4FeAOT&00437+!g|R%0O<`;fV?`KmhOs(~HFC8wj8(F6{IfbF
zYr|L<#yiSoz3{Ct-Zq&!Hje#<Fg8ke+Jxd31-FK=&Dd`b<J~ZJgz-Tb?@4@LNIy))
zjj28i<D)R#VOS=W<M2}ShT-F=zC3U5<W3KPFrs0^RF_~Fp)kT>MC8Ot>y$Pw1GZ8+
zjD&bHjMOD&G-hnZC<S5c4C7Q7zl5<XjE}?kR;{!<j8A0qO&Fg_`AWghgnPo+8^-72
zUxe|c2t9MVSmv*lJ4?0Cj2Wkd--WT?>{$oG_&$t-O8&nv4vEmi;V^y(<5(ESr5p+4
zClPx1QH1OH<VTeS?N5YpGK`;1az;6MIjzU~{u;*bVf-Qc-%NQ<8}g?rNHeBl70!k6
z7w6#!ibinW<ojP3e~bSk{P+LQ>jEe9NPdzmB6J#=!D11Vir_Md#f2q=B_sJ+hz8tB
zODP*c8Ig;6IR(obv0?<3BB&fel}P@0)G30h5mbwyse)9hN6^sl8X`3#sAZJPBdBe7
zod~WFuPdx4tS`J$*g)ufQh=VXQm_$ABGN?Y95EStbp+Q)A#WDJwGlLrphX1NMbJ@t
z%Sis9#`|SFVdK^+l0S26ExbO0HnO=v*fxT85wwrs#t1q@aFfKtt@7{f)+?Gn*F9Ry
z^>+FE0RF3J9y`l`q)P-{#cwvsEh4uH`H0Bv5!?~Mp$HB~aAyQ}MX)u3Z4ulZ!95Yo
ziePpG-C3jvMk`5=2=0sE;Rpst&@+Nw5+4%YA3+~>Uj)4sy!fulgAw$V;@lHqsro6n
zNgs&lAHe_xsSk``kT@?+8RYgz1do~6M@5E2Fw`i+A{cJ?2oVl!rWzT+<3@iXf>Gj5
z?qebt8^MzijEmq|V>4c4vT#BKPZ@op$fO9KHp(+1&M+oE7r~SWrkdF45ll1u`3NHB
znr?=~nUTUZhZhulIf7Rrm?J({I8QiV_+kVvi7bd<p@{Rf7UxqfuST#af_J1Z7QPw5
z$_SQ3@S1|JN3cv}sgP~*h6u~NTx5mOXO_*k*eV6r30Ft3Mr5tAaawh~f^S9ew$XXU
zxIuiQaFcMeiQOW?_2lg$!3aVTyes~m@O|M9A<OVV1Romyk%(JpMc|3R8-XtZe*`x7
zpm_dGb}oaj=G$j_>?9z|Sl1$9HhTo0NAN`iQHkjYG7-eYnM*u^gyG2uQieNq%qsX<
z1i1(bBG_qScSo?x@Q+0t`%lC_<xWw=#j{rW-y>!3B{pA*e;2`5BDDEBf_>uOXcFUG
z_pO=t7`vaVK#Kj|*dHV@oKN-t5Wx}7BvD)!#gEd<Mo})BpZ$J{;AjNLA~+twi3t9U
z;J*k?M(}e4XCsAQ4>%RUpAno<!e1izHG<zbTXxF-B<^>Ke+W+tFMij8*H+wkrE`v#
z0E#*v0dL<k)4wD5Cj#dK><l`uXkCb)WE7=TDpwRmL=eSJuK$Y{6BZYi5HhVZc}|~G
z<T5Fxg=K_JNy<l2LBS@%ic!>#qD~Z*qNpsTim*l$RYmBtnn-n_^T=Y&C~7Hqxv}BJ
z<`v=%j8a#mp0K{~N}=<}M?>+eqG%-2Sh!Ljre=;!6}&o%Yebp}uN5{Ia@wa^OYyc*
zv=eD1Y%RP#iZ&uNyCDka)1&0=qv#*SfGBQ^qC*rnMbR;uKfLyeqEi%|qqseaJEG_!
z@fKlM;mtyhQX1bXep?jXL^vmK=sHn%MsZIR-J`fmQ8d0gT6jdh*YP0iVMJ#p>=`Y*
zLb*SR-cj^1Y5R&i5XFNcEI;k(v!8+wIk81t1EUzE%DxuG!%+;5;+ZHWNAZZn$D?>6
zibtauqTtXdhDR|XieaXGoIUZeC`KB^DHZimQpQCwK8n#%j8SlG6i<pc37t|+h~lXz
zo;DsPMls3oi{2c|XQOy7in&qDlfjfIo{wU>_*CIEq4Undj3{PBF*}Nx5*=6c^FkDJ
zq&TliQE>`0KZ;kRzZk_!A`7Be7{$vbIX!T5j9-mnk@Uq;ED>@1IJvwY#nLF=h+<h3
z>lC{@iWO0;7JpN?Qs}%puu7aBoX5G>M6uQ=+&k8bza@Oz=uEgVicL|}NT6mSKTbAt
z@WgO$3|peuszI_XijSgjE6H}@yHUJnJiITmBZ?2A;Ky4&6drfE$gL<m8X*m0@XE{=
zg<pgj*--?dxDbUahF}yS&V*6?6h%0Sh%?xth>Cn1#qKC#;&CBIU?PfS6saiEQDh_*
zM3EKA85`!pjmA5p*kuMhTb|n|viT~CucP=>{Ie+bi0l=95yj^s^gw$$`O*aUiF_}l
z{!J9$@)kf8`;Bry#7X7gL6iF-MI9FYVC;{GI7K}g#px*ijN(`n$D=r*sNam`$tZp{
z{FKNq!e51shu_8jFgdb>XQKE=;#uK2A@#qaI4}OU&?)M_;{O>N`YaLyVkj3w`521E
zv|w`KLYWwf8D3nZgs`Nrl<+cP=~&_XQ&vId>ts|RhB{Iz8og2smBp(FtHw}Gq<RcB
zW2hxwBldr5DVN7kTjIq&ay(xlv2G0YMCuE#6gmbCW4J1YMpR;GAH$6?G*N7e7_N(<
zX$)7#aE%m}_SzVlU6Phcb5n+vF|>-It+8w^(k6!MjpAf?gMut1w|24oQJ#8-7;ci@
zEryOUbP~Ts*jd<B*u}Ko%}U7J>4bP|47bUEoZfDa;f@&YG|JsE+-0~^hI<rb+8!)?
z3^U`H6-Un)dc_dn4k+jM$1o;_u`%>ku#fP87#@tFuQ*FSD29G9JQPF!7zV^JP`Z<a
zQ#Pk~4@(~$!y_V(#xPuDh;XQo-iFbjcD`9g#PC=QBc+cLJ}!Jh$mxs5qs2)Wd@_b{
zF}xPT>oJUvVL}YkW0(=cQ!z|bO{c^#No2C{Y2h<Mr?k(Cv&_$#-XxzYahmXX)ABQ8
zm?h;!;cVf&7+w&W6T@6%>C~Nm=1XBwUy5Nt3=3m;S;mWEctzw@;l*|%SscTXOG-jl
zOJjH=hPPsPJBDSlUn5)|!-^Q*jA5mMt7BLt!p{OQYscqB&ubO6E{63YG@$2q#5Z%2
z7ugWQMiaZqlwoTO+hX`IhL2*{9>cpawB{K;`-?9o#PEI$JBX)?FzDcC<6N8Gak*Ey
zsJLUWV(`g$z;>61^S_gPm5WYV9xt+!FMq{gODsAm-?>a4Qvb$;Vbj-<7^335dZJl8
zhJ=Di;Zt#>MA9*2V#vmj<D?Ns^*9P**croF#qNsX;~2h;;ky`i$MA{7FNB}Quva8s
zh8Xskj$;E-`CP3*@}+FPis5UKeKCAvQaP5fCtdqvI1s~$7)~nc`xp+za9I4HV=Sco
z4>25x;i!T?I#E3HR~I<m_#=;FF&yW>E153_ktgau$8ai!KaBk^G5jw6tME4=pMPc-
zJO2SWE#=P`&WO;1^YHVz82*akd<=ibP&%HUj{b?^U(V;^|HW{D6TY}hNP{AA9N@gC
ziv>PMT~s<R1Q=C3juHx%6kZn3|AnMf907h#ke|n_<)T@cILgLRE{^hXREnc=92MfI
z82`UN<2cWc@!lmJR*9pkT+t7mI4w{kj+$}Y8pmyM)QaQsIBtsP4=c6fs1rxSIIfE0
z3Z<fl`XY6O^@OPDx>BTpkT%`hx*EmNIL=E^w2Y%k98KeB7RR+RVAfa1aSbO)wLk5h
z!ZeSgMLd7=kq?nlbc)w1j@EIsjiX&0*T>N&jvHh{1J;WxLZ53JaKP0*jvM3Xpe(36
zK9A_hc0Om-F^*1gbT$RJS)@xGT}9}P-)6r>+$mMJIBt*Q;W!4zaYr0?#_?brePwW0
z9QVf2L;UVI?unzjI4@gRc&8uli=$T@_s6llmaAtRllgtNp03_;^kKuwm^nIEa}GM0
z_KRbHVjmLr7di$5O{zhr`t<Nf93$g+JdQ`>7$SqA!r{VU@%+)8W+UQwObT;xuC1Pk
zW0aI}!qLL9!ZDZh%ad{Nr$6+-ZG0RPWZ=A=JyCp898YsZ@!Q&QOpRk2YZ}M1QgX}j
zTpUy4`Hzhp(bj{%wqNFYK91=!U@F?o5a(-649<?@1-boKI7j$f9CPEC7sq@BLve)T
zcv1YNI2OdQkPQ;Y2U1whSK?R~$ND&4jbl+9i{n_Ls5gbL#qoL^OU2o+Z^Xd{S+3wR
zq0@=<v%<9V$~gET$5nBxj$@5%)(UAuW3Da|xxE#~Chl|`8+<lK2JZ+r2sbJtCgHY)
zqe5m(wKa}yGGJjCd{_LvINlf8VNx-Q2|tYEqd44(@(C>=qdakV4d=@jesNnE5VBN3
zlW8Q5XdGY1u`iC8VzY7N;)shUgh?Sir{YM9N4fsbvl`tOrd|-oUSqRUWS8(`;qEv-
ziR05aK2wm><{phk=Mc%{pG*Hj_@$8ISDJQ6zL9b?j$?6r8^?EX?3Z#t$hKm2z8618
zjN_0v6CM#c9LEnLwB)q>qxes1Os6GJ?sOfG<5V2K#Bm~ylbmLGjM(Y=nNuHs52sh{
zoR{zTF5a(kIFGOVE<b+=PYeGPo)MlEo)fYpf5mZL{BPkuM(3=>*#8u~Aao`2hlwHy
zK%{5_#YBn=%L_{gOD0fCg!Y#uP+Gi<u&mL`i8#x-6~rqhP)Ve+u!^v%u$qwGs*A93
zY9(-a0yigdOEO=o+6lBupmhRu61XCPx-x5&K;s1JnY8s2xYF<j2{aVH$|z2QH%Xwm
zl%~R~h1Uq137OZm3G^?P&y-sWiPs5RCg9wBzdnIB3H+77`2=oAplt$U5*V96JDJ^*
zz^x+fg*OU2Byf`meRfQsli{5c=px?LC^siy@5pz}Z3%QsU|<4+61Y8qI}&)1_2rX4
z3EY*y{o;2ga8Cj~61Xpc?oycWUIumfKu*$Am;B_tM5yqP%3yEh*oUGLQgn8Tz6$nB
z;31Lz2@H^>6H7C04=ZYT0wWR_oWLUrKAON#ks+7Z50m1gea!GDL`Di97dmc7iH|nQ
zlL?GV;EcREN09LeOi19V1STdBOCX-Wqy(N$;GG0EB=C$ZXC^R9WO4$}im<ZJB`_s{
zsR~X@V7kcjLZ?Ayi1W0E#@uEnurPs_CBBfr9Fe&R%u8Ut_)9`szQ{4DW77ho(BUhF
zuS($61QsQ*SjuY&yq>@k6U$oD!_ownC9ph!H;nGQ-nAluHxpPXk(O*jo@j9<VUpDe
ztl@sD*?6rC)+MlB<SpUbCe~>;CfS(4hl<*iz-Eyx3G5KrDx}S}1h$L6D|}D*zR=0{
z194h%_V_3Pw}O^1Ec7JcO~99cU%{Zz7BW>pB+KVbjKZdi7#<bj0&*gOWCA}X@RO8O
z0(%nJn?O2&jFhbKV_`0V0ulP(nZPdbVKefrv|IcW6Z@&iXF|5;=SDv$@<jq)Ch(Q`
z*9q)P;2REajfZcI<pGiJg!>cd%K1v8<$EdlKdy=#60!h?6ZpaKBMCIpxis~o3H)O8
zV<N{BIAN5N3H&U6O6aWnG1adM{+7V+B7X>}pBDL3$nHKXa!$w}t<vD{1pZO5brSz3
z@LvM8lc<x#g#=v5{FG8Xi6TiLi84u)O`@no>LrpWCSF`f=M+mOQ7Vbcq?9(6Y)>b)
zToUCaRuNW6qLN6(WZ?o4Eh|fLhBO^kRj}G6Vh!<{!dk-1P3#p()YTE;nk4E;Y^-4Y
zB(6-Nfur!AZxRi~ol-S2$(dafQ<A0<uQpN5lDJl`noGGZi54P`2PSN(U@K$KhP__)
zZIZY_q^+=>kg@HPxKX@=@FrnLVJBf{VHY9oyNa+`ZcXC0B-SReE{SeQ+@8e5Bqk+s
zM-q1?@u;!CD~W#McPDXA65YjnBypd}y+RHEUUcU)N_$G_CA>e0-XhGmkH`bU2b1V4
z;w+3mB;G%X0Z9xLA1q|5K_U+)3-6XbqTslauDZ%=h=N0t7-sB;Cov+4$C4N+WvuXV
z;S<JYR1%{NAH#}hdSqTtCNWO>c;N(N^OOi%?CB()Nn&9VFDEfMiD#wHP2xF`nZhYa
zOidR4O?z4r&nNR=B%7YZ48=O%#%EqUYn>&9e7497NzA##W}f(b;funTl30+$#b<;0
zUhpf@>EZPxUKL*?Tx|3uNxUZR{GexP5^p52Ov*~(a$~t7i8l>rZ>|zwEnFka=}dTi
z5^r%YPUX*A-j>c0dp3!8lGu>M#w0eer;<n|u{nt?NrYsxHHmFWe2~P4No-HzU5W1{
z^A8*Mu9m+Lpttvv*pbXH`}69RRipAz67D2?N%&=NCE-cJ>!hvfDq+5{&pQ-$5`iRw
ziW;tRPAFc4-#O>2$GkNhmL6etNyIqD))t8;kx1f`S}vYw@rc8XW#Bn>I*CjY-zRY}
ziEI+NB)&}It0W4N*qOv`CXuUMNqn5lU-+<)92HDX{%I1QabW1Uxku!48SfR+k}n2+
zVR)%YuCK+vN#a|PeP+yjm&ATKKad3fbJ2mHAFrAB&n@pfi9<;oOX7GEhm-jawjW92
z$0Yd8u^*D)X)w)xlEb4yR-Yf7XToiDT_=(_nZ&P2{FcPeNt}|wFU+pAi;q#!hL4NT
zo<;pVi9eD!oy4EA;jxmjXQsG1R>{9Oe|LM=nPmPod45vtoD7)cuO!Zk|810icoY!-
zPk6!Tu2kXP0ga-fDHIbao<bRs5-F4vVON$Cq5sQ7N~h4LMG@AKO4$^yS7|GxP%(w0
zdvR<pDy2|4g~mJ4WGAYmP&I`b8Pv?6S_;)u*p<S^R8pv!LfsVVrBKWGze414VeJ&^
zh&T^mvx}Ks{S>ZD;qernNTERr4Q0??cvTA5i8K<@xUoo+6q<@$ZS-qWXeNHGQJSaF
z!f?L*-O}(@BCT0Rkv2xZA%(Vvw-ezd`HdnSQn)FFjwy6X;lUL8rqEgXohjUvLYEY}
zDtL1Wx2ABL_$@+Kuv-eZi{BySlt_{2%#C+Tyf=j&DcmF8-I%em-0n-ER|@y1(DM?#
zH#<wg2aM>nB<)H1rSMP+LlxCuI4FgOQy3sln}H%ulELDS3Li=35AlwZA*sS^kYS1%
zp2CO}9uud*NLe~{VQ^FmqZRd93S&g3rSN<TV^erCg>h0Q3dakXWI_s0iC=UwDTSv^
z>@y;hQ+QV7IipWWVXAn3hgJJbPvJ!qJ0pde;<JRaQ+OeTIVN_lYQ$9Yq|7(E(-AMF
zut3T};mg8Tgs%#@?71j~#o|kZ&Q-(fDJ)Il4JqqWcq@fv;>>8d$chx+6j>=;C0s3B
zBc$cp6xNA5?f<sXb1A$dz9EH;BAZfpFNOETH>a@0SZ)>BCfuIFyCU43okPHm6hbM4
zC4P{?hberNf;$B(1;0d=!IOf|aIc8-6I-I4LLilYti?H%4JwvJjff<LQ6c@rQivO#
zP%4VtQWDd`ObS^MI^^dv7+a9SPAM1Hg?6V<C5@_Se3HVaDSW0_b{4liDeP77^Ax@l
z`9k=mklwyZ;cM}IM)^kMTQde|vp<CcDSXdeyKMffn0Syj#{N(Whg0}L!6PXgPvM04
zk16~lax{fwDR?I2SI&7`feufm@N)`f(<qn5DNe;HxY8(+#;+;-mcm~toL9o%Q#hT%
zpDFy2Dm>EV4*@BhP2rpjF812Nny!Alhg&`G{O=V0<vz%}0PHfg7}uHqOW}fo&d)vh
z4iVBQn$Dj>aDpu+QX-9#X%rV{a=tZODxJ@_v=mxiCc-jMETbrnneq}Vq){=QzrLWi
zO6kJO)yl@6f62UVimO^0)zdggF^w8&)J!9mMm&vLX<RPL?P=6bqfQ$4q|rT%E7GW&
zM(Z@LPorKM_0wpP#&v02nMMQIH%g<cz6;Tie)t!dG%BgSe9*CR8cot@DzmH8xF!uA
z?pcLqZ19FIuCSHh;!iq{&4na<Ym5dh(`cns&bxum=at%|af8I0(`cJUJLaok`!sG$
zql<WlG;T_xvv@}qmG`#Hx@9L7j|%-eZk;HeKHVbwThq8rq?_>ebm1B19SYtlyepl5
zP4aGW5`Hh@-ZXloF)xkz67Nf+e;NbQ=$S^ZH11Dh(^5Q;#)E0}PUFyM^ic=>$RB5`
zY<*d(xvqY4yP5a+_z8$KmZ*>e(-@S-_%tS@@o*Z0(-@J)V`)5+#-nKrO=DQP@Qj_U
zIwXybeA-z>8lFb;PWc}nPv>jkocz;xJdM$5j7j5(G`92Z(p1-|G<ds^oTGxN#-{OP
z8a&Myr;^-BKb#MF2Z3K~;CWXX6VsTH#>_M(rSY_CIz5eNXgm^=(^xg#MJHGB`_HT|
z7k|>2qH0bRPD>YFiZ<qtAPs+JR=%TWr7=5=IdWKGhU){~4CPZmX%I_XxG<N+<^#ao
z3%Kl)#!JjDjTLDuNMm6ducxtbZa&|a(^z-m!mDY#!ePVS8SCQb>=vc5So)GQUXw#w
z4&jmo??`e9NIAZd#xjn7jS#jW$(w1cOk<m3SE(uZ&-5*6tWIN%EY~tqk#%X%;rcY*
zO5^P`-bv#apSqMt;&38uHc4dE<}@6Gts0pegdB}d?(e4YUK;N!Up7l9jU6m=8Xu<d
zQ5v>%w;HoC|M{MVm4=5q`-c2X$c=NmFAcv8INwqs29zo&q(Novq+tak!l>+>Ls&w}
zS7{{ENTrchFe7An=q;N@jyqRbSAnn&TQZGZGWa-+FGY3>KM@w;g#f2hwssnOM9BB1
z@wxaH!u@OV2K=P+|M>7{8vB&+n>4-^VW!l-6W=d9Af))c2tS~7NaTXi52x{i_z|{w
z8b76RRKc^tV`-c;mdDdLVK`6qf98yo#xGKS7yc^z&Dc1F`6G?fM)_0ZjK(vI#O<7v
zzl7)0_*>*3;lINFgw8+KY46IQNCwEDXr^%WyLtx2GAN!wi400+@ZRBk3zSmqWf_#t
z6t0JtG4_>2%4Sebq`c89h*Zp=imnUjq%yh0s={hQr|TKZ#fMrMT%N&CIULQQb_R7a
zXqLmZIb0#jn=`m2gSr{iQ?Pyp*JscsgDW#=kU>L<jfM1fRR)d3ozLk|X_7%x6MMDD
zHNs}XYcpsr(n5Hhu%(b`TZyz5@+sdNL~b&%Z8K<Rc>4@)G`vHm@XHt-jnXND&W3l%
zpsTo3!do-AO~E2Lbj#p&@$*^Sk-?oAY|CJ~l)Ho*g?9_@$)I}%_loz(;K>ZeWpG~x
zJu~Q)!TlKw&ft*@dS}o_HvKYqK!k_v2SuC%Vqa##S9)u^9?GD91_Kl|D1(PZ1`3_W
zb!g8+KRfQx42ERzL<XZW7%GF|8H~tam^j;wm;A)X6dak!KR>`Ax5qR2Ll|G=Bp;o@
z7#7J~-HbJ9nb-IXCS<T8gEupHDuam`EXZJC29q*)I)j-R%*x=I3?^qVEraJXcs7IQ
zGMFL{&Pgo&lT4MubCm(gae4+bOfIa5vs=y1;Drq4WiVe+b26BFiA~|lzeah9xzx-z
zf^$Cqat5zturz}=GI%wEMH#%7!Rs<!%$-Y(utdR?tMV<tk~ku>US@nQ7a2J@Z$Mm`
z!Kw__X5h5a>I~KxOUH&Swoc0W4BpD%?F`<@V1pFSy=`_CuH?`g`)iX)yE%g`nfzOv
zTZME&{w{a(47z1;dlv6!up@)ZvM8O!2N`^r!Dkul$>5_5+!<su$Yo$<;K?ACL0oRV
z8Td1>Gw>;R@oXoML0C#KgOJGlh4}*(ADND1kYBstYw6sbrLdgNq?E`Y$zjZs{|wR@
zWR%d^N1Qux1sUwj;8W?lm|W9Kc)08147fhCJA?K7L9lR(R`U6)J38N+!RHz5&)`4?
zUu5tl_stBxl@oR)4ZafpI)htlx%Or9M}KD_o$CPKDT+4i?(Z`=n8Dc$&QZ+ZPzJ{`
zI4*<3!lN1dph@yb20u#STGLPDrkeD#ag6Ik1}8K4HG|(2^>YTl$oQ1dsV`^F_FVtT
z;ExRcl<v%>r`2fAxIH7CKG~IjWpJJ|c^1X8`N{lmMY*#0hn-d0^=}6MNx7gP4V?BY
zB4cFpkFwK@dT}YGge9^lDbkhyk<m2^&)jHJCX2FJG|b|vEXrk3K8tEuRL`P978SGk
zhZd@43%?ssDGRQORL-KC_P#1ve5rY$Vl@}H8d=oLqK>ktCCusjjhBnp7UqjI)pbP{
zbrq~9yfTaW+59Nt5+$)gHh;0nPn^+tqbwR{aZ?r@W!WT)=2^7J=Kn0&l%?hSUs+s}
zMYC+-+QqdpV{5R}ugjuk7VWb*f4)d7>D-&zX3;u}>$CZD-8Na=Af2URn-iU8Y$uVQ
zr(4etL5O!?JIJ6@7M+>9#4f_kmGTL@ij&+da*Oa*VTI#G+TEM~Lf0Kx+?mCkEatL3
zS>G%k%VJ~}_hivMi-B1T%HrNEdSvlX7X4YmEP7_qH=Cb!ILG#qw?0|ipG9vrAiqpi
z)OB}zSMf5g2Utyh|C7nhbktAW336?m^Bb2m2V_CcrC@FkXE8X7N7&JN7M=eCWeFe6
zVu*4Xn#C{?irkm`v1PItA!90hbm#Fbp2*_aES}3^R2HMNcruG|93B;2d{&CtjZyNk
z>PjXVui&ICp3Y)|O8Zn6ykebba^X9b1@-e^w|GV)VR9BjFI;d|^`~SpHH&FkJkNn$
zC-1zrK9V+F&SzvXGn=0-I8d3<tZaS-^@S{E%QK7We8`J$l+4RweiqxZ*q+6US-h0R
zsw`G#u^@|uS-hFW$}C>a;uR%ap2e#oi?diFvM7t!bzkx|k}Q@wX1e5IzS+*MH?%t}
zlTL-bwt{;Q&&i*3eP<riqP}!?ku_PY&0=E~n^>6Au63#i>$N_Mx3YLUi+8fvki{Oh
z2H#-ixBgr%l1o?SH)nAL-vU-%TZPVZgYU8nSd1*b;{2b*jw}LM1Udg_@nIGoS$<?n
z=oX>dRtH^{IQLDjh%XCrKZgN-{>9E!+p;7aMIp9QX;&(Xa2Am)qFKb0B*9u}R*5Uf
zM;TdJZb?=|Je@@*i)<FTEOuw{NfrgNq|L4@c8c@p%<lVGeBbQ+Uh`=dpJlN(i_hst
zuAG`Oiu<fHyM7^iXBPcBi+x%AoW-duzRBX-EDka@i|@2Ya6SKkjQ0!a;d?W6aLzm=
z@t7<RXYoT8N3!@ai=&){xc;Bb-z;NaIGHA!ySmKG*YUW9+zF*U$p+!;qWVh4FPyd7
zy3R`fHH+WaKH{gd_*3K$Gq3Vm`waIZUAfSqv!HY?i@!9JvrTxk{aa=DN65nbo5g>I
zU&z9h%a@QXK%@ucP&9{PITX+34<9v!C4?n~6ielBnRw|O%H&WshjKYol2TsiOvs!=
zD&$a6iZh>7&Y?;!KV4VNp@#HoIaJRTo*i*)aC1(Im`g1gTrRAgLmgfM<WM(<db#{D
zrAaP-ud03ySBYFHY>-1k+0%d?xFpy}L0UGJ0rjRLR~!ABT;UUC&2wmxLysKp%i+2l
zTFQXU(n{op9NLPs7G5uGlPg>UWM1uZxFv^Mb7-%q8-*Q&H|5YVhfX<kR#V?B?2<!Q
zks7*iX5)J<T&Nq&pHbhYRP=efNVgmo=q1oQ6ui^K-o=(Q{GJ@T=WwrrTyx--ufBo{
za#)x{uN>~rp|_MlIXo=VCx-`ecu>5ru)naM@FAgdbQ>T(koKDG2j}oe4o~OsOb(Cc
zFhsHAau_NyB8SIv7$(kQ3>RU-kvTjrJ~oFZau}7v=p4pKadtr3kX*zkO+q^1Ha>?5
zIXsoaMCp?*Nyu2Hnk;2{4l{CiHizeOm?CAGaO(eW|NJGvnK`_W!<-yuNt}I26g|()
zVZIddc{w<5guR%<OB^a{4X4a6=kQ7n5st1LUd>@q4t}LtoWqhF*5$BX!PkV#gs<nY
zROAhzQ;X#}tjOWb99BwPlfx<#yIRD#LC^ZqeytQ1;H@0q&f$X`KFr~r95&>zJ%@L5
z*qFm6mf3jNoWmAzC%LoZ)6X{btW%x$a@b+)-#0z(MA7o296To0or7gKo5gFm&!nQg
zEioVr<`6PAVUuGlhj<SAq$hGn=J0V2yK_iM$qCcKjF3LFB2E<w#CPVf%fvcG{UnFI
zM)_3avmEw_T&&CIIed}BmlD4ceyu)r4Cw!x9KOxryBzlCa99S+{Xh-}4gcPZf&WQ4
zBy<Y)gRwc1!;hEf$8tEHL%#w%RDcsXoXnwW0jd?`C)=N8R<Z!6a`;93SK%4qZ^GY&
ze+W+t|IDFJsUi>XroV#cg!J~8$oU-p&f%XN{>|Y(&77PAIUiooG+49%E@j<-YtaQj
zL4H!bc29n26%#LBfMPs<5IPANRZ2-ND?n+HGQzULa>DY$3c`xQO2W#*Dnd^6bXC0o
zH44yK3WGHZ(4qj>6`)oDE-ygs0@Nu$lL9m?z!kD-EUatn>xtAaz?DX6P=JPpUsZrc
zhO<*He(~Vy0$eNo8WY=0#M!l*i#yM+wiIt$fK~-)U4ZM2{S5_ZW4JR~IOVo0K>GsR
zX!M&zIuwA<#;|G~73?IOH!-ht5${@nn+tGD0d6h8T?M$iAb&W%P1voVa7l#9?FG0)
z;+;yx>bP{^xJP220(2Ll<-H<3g!c)13VRjcev#fnXWxIo@CW6#Z$aVR+x`U@P=G}R
zSX_XC1sL@IsJag5DQd5~T&ncmMM02Wq&I2Oiz29q^xmY1bVPcUE?oiXqJl^fl%{mH
z&CK@Q*(N9mh=7WssC;kk{KDVwoIUs4+`PPGGD#+r$;`4OQs%x+^mAe&jV0LMiP7W(
zoEYfDAo5|v!NeiNp+vE_>uNZIBb*qi^ifW{Np4^L$2c)o>P^MIMI!ri#*@5FoIq^K
zyZcE_Om<?56H_TJaAF#X<T!_9x)bjxWd_N+#F<XaQu=HswrsY}%Umk+i1Ssfd=`75
z;)|SEtoRa=_ncTtvW&Q#xPmBWN~&7iu6E+86W=@Wz7uPlSj*ULPHcB#ofGSw*g!=r
zKP1^m+~mXuB=#fJ&E#90*h=!zf1<=-hZ8%cRykYP<-~3$K6m1P6MLNam?wI_6MIQM
zBYxt<r|OJLA*HDMsM}>0l)`-B#6c&{J8{8@L(ERZubnuo_z@?*RQ#wD#}xm{Y0dV<
z?QthgP_!MMBtPZEX&GUh_?E%5D%Ba1PJBFf&S~9sN_O(Q=!9R{Tyo;F6HW$QM2+Ys
zdYtf*NGiDl)fG2Ld`|1WN$%_d3<ilIC&Erdlx4z+s1q>;O()_?w^u$#*Kj1Mq=;!1
z`<)Y46u1A}=LZ>=T-LyT&57$y{K(kfmCX$&ZYq9@<R>R?%i!<C9R`1O;y04JPTV8;
zg(wc~n!L|rk)Zr!%~tRaCmzs7I@+I3{N=<$C;oQgA1Cs=P=JN`mj=0AcqD_r3z=Mi
z3)x)A?m}i4vbd0yW^&^uKE;pRL^R>zSPmDSU{o#_<o-q0b8<2$`PO9_WW6zuQu4Zx
zPjPF1tgQUIP}GHDvI|J*g-MD?0k}F>+=UWU$`DHuOA|{GF9$3?Pr5SZT~ASbnrJ`$
zFGnsm&$v+Dg$l0!&ClgKDwSNQ>_Wtgs25dSsOmz0HwL&-&4ubN9C6`G7izdr(}f`}
z40WNF3(vXGi9Tx+n<@WwNb0&!Pbu|XXh7c3g+}5{{_*E`M`MyEE;Myze0TJDscJq_
zlovXhyU@agmM&|MZ||~({Z_;mTxjh=8*-_C(c8Mv&Xv)xW!RSv-hr`lq#aosV$+$q
zcX8oGQC#Ti!eCXlmtE*X-i@icyYPx+s$yR!dCi3$N|8O@J;~o-*?K9xH;MF}z9jvK
z{fPsJQl5b%gNXJu)E@JPQ5o&RaFP+kkuHpKWjr5|v~Rj#e|&z7%ewI&>%uq}-lC<%
z&U0Zr`P;+^#EHa7E=+b=t2a|zc*lhqE=+Y<OA6B{PN&VrV%A25cgbfHXA)--?e&K_
z<a7U{%qL&q!a^4okuP^)1<7I;mXL_s_eho!m)V%pvC@TAE_~?1W-6;)SVtnq^1cge
z6kn^_|9UDLT-fOP-*Vh07e1hF_mM3wY<1xi7e002BNw(YY7cQcahD4_NF<k?BzD5x
z((h!O2Rquw)c3lq`)KJnpSiHlg@Y9L6TcvSPCP&qOL1r?KSV`>hgHdiAC>XM1&7-j
z?vA<el?z|HaNLCxH2#fv(uE|+DHl$=@C~^}{FZpeg|jZ4bK$%Tm#ADIich;0U1U)B
zWfz>}E*Ct?#?9s`#$GD+AgPlZM4t<O7XmH>U5KkxAs3?LVPZt}JMj}!HYSPWn;@}0
zi$RLPv>=HnS6sMC{=Ex7xNyyd>n_}O;b#|q<Y~R(!cCWTWt877T1xx*Nu6=MlGRG@
zxNw(IzfixY>RFOVtmN`5JqW+A^8MW!VXVr3pp-vd_)GDJB!3hCA^z)v{AGjKXL18P
zYpvbL>_!&y0&Zj_$xqBi%udWfe1e#hn2RVwP;NK!kmn`lQ@UMU@|SZ3-6%w{F!2R9
zinvkKjbd&TccYdY&$&^;jgoFurhyc%lpD{Imv-YxH_DKgQ?XCE@ici^qTN0v)iVs1
zCsuG<*9$2_MFu6d5)~oxtKvpg>eYzVi8Y8diDDy5m$k|3x>1j$4$)pttnWs11{=81
z(2YjqlB%g2jmeu3rGD&sc%H##L{VChh<!^pS}AT9Sj0ANv~{B$^)7C_NYb9zf!NWF
zP9&X)b{3NGB{zCe5#H5}m)+>bV0U6q;w!{giLbfQgGB6KcW12gyrGoKMI61!`w;sQ
z`>EJza~uQR803cOM%<0TZVYkbfE!=9G1QG=ZY*Sl4|ijP8}GU?lL<$<@ixgQ;+w?L
z#4$uE$ykzc#J7m!iLwSV!HtP-Okz+hCzHs=p($=mbz_>+-*IEQ;&QVvgWUcW)+}|H
z3*4BkZ05KzSMhly^WBgwbCQMp<h(3$V=?t5Zme))CHZ@9EG1b+Tu!u`$0|2gyRqAi
zJrv(}V?D_l;##73Ugw7W=yQWoHoCEi`~%{L#LX&piyK?XKXPLm$#yq(s@NS;^ChhH
z@Lg2wtJ}xqpDCNYZhWHnr~l~@`zY=weomB++8rd3*5z^I5cy%El>7+Em&BuP93%P4
zjj!D}?#2l>E>Ss2{FW%GPPuWK{2QWlF%i#@pLOG$8|TR{xN(uhzWot1snxr%miI5a
z;dH|#g9iU@+f6gk<=LOt4UIva=yStR=UUF7Us(p+2r3>T2@@l3L`h;QR#GM0NXlsA
zMOkmgJ#xy8v>4FldpCX{xk9{3lvLN;xGn>l*BY6BbmN9hI6WBX!A&=Axsl(40v`P2
z#%(u#cjFJYb>08jjeBnV;>H~}?z+)ApW{G&YXhy!w||wUNYD4()++k%$oR(}xw1>k
zf8fTSGKPDQ#e=_S_OBa{+<555-){WlhI~FkigAmVa+$@+y_Lg*Odh}kd5R~`0VP)M
zT(-*_XY#PsgKVOEkk5nc9_y8a93DL3vGSF(AjUa8$mOw)OMdcS=ea%Blf*n!?1`T|
zla(kLlO=6I4+?ou--8Ao6!xHq2TyuX#)G1?FXcgL59A?xF%OD+P=eV>+LDZw0!zs!
zXK~yfjT$|ys(8wSr#&d^K{*=8qdNJ(X2HykXFMqHvHszxk_U1W6+C#gzT;Vs^^8xR
z+E=8peT}H>K@|_=6P;4wRXx^3sG0}WJ*eTacKX$(Wli#0#OH|8LnXG3ohh*%Q4UZ_
z+t7nX9<=kIz2xXY6Azku(87bJw5cqQT;=np<jshZL@KH!`3oMjCTZod-o=n-j&lFi
z#)Gy}|EyuV*h6w<>L91UgKi#l_h6g+HGs$J>0LbNER{*iLmaGL^x!2Ax_a<3-OiQW
zgX65Xc%)jS0_FFLRE`I)dC<dyULN%30lrS-H{{e*arE@yR@sbJA<yXhc+gj!mwq&p
z2d~l@`;*JDNU;ZbFxZ1HJUHmV5Gj}kYdu)!!7vYodoaU;cRd*4!AK9@VX9G*sRutt
z9a9(_?ZH?N#*vSa;$^b_+W0LG##5Q(u{I~XO+L|s2_&LO*7B43nM_5v?6sJx_%siu
zD=rV>?W^!i4`z9=#Dn)3HQR%Q%4UuSb3K^H;C$i&qNKGS-iiN3R2EAObJSYu!7>k4
zQCv<Go0TLhh>}*0#lAGJrt&^<4N*$I-h&MueC)wq4>o$R$%CDY5<ee!@R8yll5F;1
ziw9dh)^-jt*udSh+my|A4|aI0VML<r%Gu??ZpQ9WHnKnA6Y|eJIN-sj<ez!4k7Pg5
z-s~h<NN1OQ0`g{-I6UORVGn-s;8zchc<`kM0S|&69QELs2j@Mw;K5fOYk@_KzwzK}
z4~~0qf(}JFMRJm8e}&+*^pV*#mS>kd<7Yh9jqq6y&e7~{9&0bhMGr19sC#hP1E(}I
zJ|}faMV-v#_Q1ooArDWb*k0vRE`J((hg|*)CifBj?C<t9G2}tmgC9J&#;Az2a1W9m
zYZ*LBCFX%iBKC1Pc0Q+0QMpP?6TkD|ipRQXm4eBU%4jV3y$4brNphVww`8a%`O$+L
zatR=}>)F1&x=rPt^au~+iMb3lcceYYXiU$wcy!|SHxKT6klTwqUi|LCA0A}(B8wNY
z(e42~{O!S?B!7AEP=;}qS-xpw=kkvS|9bF<1`e+^dcbRyGZRt#=bV>G_8wU0otLdA
zh}pczPLjimrHwOo0p;}KG><ozH{(ftUN7=_QP_(jG|uluArf(0z-yh^f?mj$hB_RG
zwl%YAsVEI(Q%W(C;$D>S;$v<SmRNgXrxc?~d-0_5R)*v$qTQCHf0gs%886CvQNfGh
zUW||&y{Jf=fnHQ%0X~>vWm=hH6)&oKQO%3$UUc%JvllhIsOd#3FJADXmKV=?(b$V7
zUeu<2Jum8eQHNZd)FrY1PptuYLvKdoZ=`HWZgVvC;(0GxDy5kh&B^T-G+MA!_TV5s
z<s#UcvF(X%h;51Oh+?yIv7>|H9XT5jv5OZkdePI1HyHJj7cYC!&5N$e($1nggRgn<
z3dyS~R<1-n$Y19<wMVvIDz={&y}j0sls;7YD&1an?9bo;9=oj!@?tQ>A<A+n$uOeb
z4o7-1PQ{KQdDDy0N*O~kRvq12tflc@yzRvVFD81i%ZuG!O!8u~7puHj?Zp%?rqXN<
zaT@VmFQ$`7+k3~08RSwG5|rOeFJ`IO*=k-l*Nb^x%=cn}7t0yD(2GUV?3LwWFWw_x
zLbScvxJ=pD!4(Xy^jg<4$?km>yVZ*|Uaa+E9hDEg*i5qCiw$0E^kNf}e4y;*ZBR)r
zPPQmTxcub2i~f-p+o*5%Vu#9WClxu5Vz5U#loyx0xa`GVFFx_&YcGy_@u{3LnjQ6G
zAISkPzVKo{xg`8tc@ut+;t?+nso2A+#=fLtALB6<`;|(2g31{$&XSz;;*_*8FTPQh
zQpj)r!zHhC44x;7+Y2NYRZtA%=VUNIba~<S!b9#Q`n=FcbfVZBUYuh>;eJ(e;XyA#
z$|g)A<%xM=%31bfsULAR#T*)*(5&fh!i%IADKFBZGwPuiS4i%7ahK#O@p~_RAh|}A
zwAV>~B;Fw2B;NAkClax_?ZwZE%bnLf^52#63(2p<-@Lf5^iA@gwu(RS;!nl@B9SBd
z+lzn5|Mem>4@B~M<b^}=Oe7%6R40qlvuenucy=vgH)Bo>ximcOLs_3yC%I{mPeUG(
zyvknk%}-uHLqQFNG!$mAqJ|<QMTyyD<#xTJn1<pSN@ysl;VE&hp_G=f5K)?Dc7uOX
zLm37oU%Sbb)$lBpa!P+jLwWKFL_494m9&g$TV)MZG*s14O+$4J!*mSSQA0ybCaI#M
zmWJmve5_%whT0nHXc({IZ4Grb)YH&k!vGESH8jxBQ9~yU4K*~<&_Y8?4UIK4p`T{N
zrW&3nkuv9;<(Mfuqqrfkxn^DH<;vbl!wVYP)26kCHX7P$Xs2cDl9dabyhdv8Gne_2
zHTj{Xy$iRqhAtXj)6hf1i_~A%&`l0gLsu#Ac!%r;w7+QAUBfFhc$JkPjo+>l+vn>V
zdTQvSp|6HFH1yKYTeCiKv#fE(Xn98N&}An-KLTSHrXRh@{ntPZgEYLUVYG(9(nvIn
zVAN2lSPjF;kJogJn36GS$xKP693wT1Vw4=<vbol1Hip5m8peqePNHN>o6JI`oNqBo
zt}hcbOw_PU!*UIiG)&eoTf-d2PSNlV$y5!~G)yNKx5t`T&SlmyL&LjT#=7@R4YOz<
zy3Dd9qq!R9X;`RXk%sw<T0oTgk*bz0_u^-<h9w%_)38*7Y~+(dN^<%4NhzVsd!=}C
zXe%_V)UZXvRt>8(tk$qW!$uA7YgnUUt%h})HRF=yT>G|8lE{Q-y#~2=lbPqSM~^mX
z_&~#l%w62pR{O4nZ<e;lhkYMu*rs8JhMhFqPL!T&UtV`HC`Y|pv*sjrl06iq?R}!*
zQw=vY+>%%g`!r}8bPfA8e6HcNhHq$jK*JFYUuyV5!$B#Y@_AT;z12|sOSK%O{*{KW
zH5?<~%{o7>;e>{h8ctEPm#;_F$S9078%Zv|Z#A6PaDg^wG@O-+C4b!PFKW0%#ZA1d
z!KuMTE^R}m{Yy?}+As6uVh)c6FLgO&nXb5VISdUx4G9fN4Sq&Rjv);J@*vUfTwx6n
z>5m#>8cYpwM%i7%?r3sfnMd9#DwHXuA<fw9f*P)9_<_NzMDhQ<W=)ptI+qT9jk<Jm
zxtEbwUw>rq22sw%Pa1B^z^J2$j-NH$(U4h37Tp?G?`rs6!yg*%Y4}CMuNr>Sa9`yj
zZ&+uMC*zYcZR1-u4>bI#;a?4pH2kIEp@zRT{6k|Iho!T3n`*T#`D?bvWpn7rqyx;$
zKGK<ut=OHD99b#m){#d?HXYe@<k0bij+{Dj>DEl%9y;vdOO8uQD;*&(QwcAiBcG1^
zy46Qy!f*HGf;tN6R%?7*fTB8z=_se;86CxSl+f|Cj<PyR>L{h-DIK!!qO^`Db(Ep!
z%S9Z`)JqxmD=?CmIFz3d`N^3oucLyLP)9{3Df^7oH|-M2TQFi%Nr$x0%5p3mgsbYP
zrlYzH{yMraNlh92b#x$qPDgDW4RkbQu#S%UByv+<m-SFj$BE-s_1dSqk&ebXUeM8+
zW=(WFucH}xQ$1s}Z?2<-j+Q!F>8RuQUu`^Y@KVS&I@;=J&x8_eC*>*PXuZf`_ZqwM
zJ2JKtu`^NXL5lIBj+b<F)$y{9S9QFmqnnQII$lxU<gAHLIRv@AlD5%9$Ll%<F}A0U
zH+1yV(O*X|9ldq*(b1Pt_Bh$Hp0&Na@?7gC(LUq>ItJ3fZVapDTg$V9sSMFEltjMB
zn&dZTN9Y(SWi#-yfl)f%)DhGX(lJ`c7#-Vn?9ee*$2c7ebS%{ImX7f{rs|kRKX2=p
zL^46gL^(_~4VKnBS;rI|(!XT&!yZ?s>v%`UOdYeBWQLA+Nu+qP8fLH0&(<+V$6Our
z=xuRvhiq36w^L?2<esR03CDaLG9b$!vq;Bc9cy%~)v-j!dpcI=SgB*Fj%7NQ)AQr?
zC>fU?^Hn-l>v*3A_6f3!EpIWb)3IL1hdMUv*q~#hjt^+INyn#+91Au$emm+I%4@D&
z)mwCI)$x&zZMyY+UAYR|C=TatvzE)`(01zBrQ?i_v(nCW?9p*h$04!Tu~)}F9s6~B
zBL1Z(s@ky2qZfDB|B>-I^#eM-kV8`!DLbR5XE_e*IHKdYG<zLi>NqO(qvI<bdR6PZ
zi~aTjR>5SntUt@~HTy^ld6ihlDIKSEd?VenxI;cmD<7m48(EB!R5Fx(D}x^A=jU{s
z*WuRT(Q!e?MHa@X<C2cc(kx3^&ZYg!ib2ms)|#qI9fj1nSBEAg(P2o-=k+D8S|Rl5
z@aqWBShg9+8(xnOEvzFVqnv^42BJD*I_~NCg_fp{v=AL}9SI#tiYcO<TsnnZ3a{w6
zs^f-^n>xPN@q>=*I)2oxXFBcYIIiiCzk-q>qQRp_Ql14xGpgv8j-O=A*KvmqrTn+0
zR?k^iG<jv)uFNbY9Cu|9mM<sEV_zM=>2MgxWZ=H|)bUWq-#Y%#@j%C)I{uR8QNn7y
z$pY4lu~%Me-Xcxz>Cu_~(eba2N6e_OdK*{16k)GINM10I#XwfWy6$8qiXXcl2})nc
zVc-b^6%AA}kkdde1BDC}Hjtaf`3&SYkjFq?2JLn(uH;w1KtYPa<)MSP5>muKQ3E9n
zlwwpdVsXQ|vb@ezB@C<WNnb8);7J4J3_N3?jDe>NJZ+$?f#z);#buFmo8|4lpS+M@
zc>@*1l>z&bZMQMoTV(@P474)vf`O_Asu^fxps|7K25K0nYoMNing(hac+Nm=1JanK
zCa2|h$k#It^P5z44C@mIQZT{#EOr9}4Grt7Vv_ZL$M7a%Y2bMS&1hynMwG|ya#3q;
zpoM{!)TN%~sO{z|4W_k$HU>Hy=whI)fp!Ku(yTpEvglw~4=L=24u8~ebfSJpK1IT&
z{vv}JUx6l<>18(q-3=rRBn`Y`;8g=#3~V*<nt>h$rWlxN;B^B%4Gc0c*uWc1*vCL$
z1HBCNW>7A^_Un-S4D>fJz`#K2(s|_rmG-eq-?aP15CcOEj4?3Qz%T>D4U8}_lJ;_p
zcHt$-C^;4bqp8byC}UmiEDn1vH;&@l1|}GI%fNV*);{)$1}0INOq7eG%x&z|Lh(P%
zz;pv^46HTqj)55l78_V%;9VNeF)-J_Oarr6le4AW$~-oYwc;vdo`LxW78+PYWBY_I
zkfV_GSpFVfvJO^i{yhUr4XiY<O4_P{<px$T$>Vb&H80O`>^0ui2Ht0^q_vx(bgOj+
z)*JZ1z=w?5U|^$xP2_epin08h;~kr&6OD1$uc^uqA>u~{wi!5P;45jR26h<OZ{TwS
zI}PkIu-CvR26h|RLvJ4w%dK@(T>HN>^{Ii+4D4f+IFzMedwtu!92_w4g@MBcju<#d
zn?uqVWRAy6<l_e-Um7^7JlNL=yUbr3xF{Xaz;Od744gD@%D}e<&d~U@fp19c&!pR*
zA3tm0oPqNOE*RFg;N)4AJyQL*PhB?PG~hGfXL6STuNWI}8}Jy`eo=W*%N}8*7`g$2
zX8-MC0Ruq;5gF<k6*3SuaGKLdYf7^@lkga$OapPldM+uh9-lJdDFbN(j|@0u^~1mw
z1HVYt2Cf?T-oQ@=ZX5W)z%>Im=tq)VH}E65+>dvdl`*c~G;oWeeQPOZKO4AX;I4st
zhP5kF#sqs<kl|Ef<tG=--(>JN@TY;l4E)aIe;9Zm<Kb+F?2#55X~{+wi##;&w}F2Q
z{L8V__8<=dZJ$!BGWcim0Y2pQA)gPKeaOP~oE$!6C6OfAeaNP`J%Y(R;RzpdQq1K;
zZXfda{x?r}d`-zugQ7kZ^Pzwb1sN>lLtzs8Ocn7#N-L*K`dx7!O88LPhbP5Y21&kR
zT+(M<5lS(MJ-sR8vv&GD<;&RNAY2-4IUk<!VW|{@mgR}_i50{HNkw8MVr3ty_)yh{
zYCiP$VSo?SeW>9>D<59)p{5VDXx7Y!=X|K`Ln9v=`%uS+y3`vG>k;b{?JBju-`mia
zG53(#Yr@#)sWer(JUO+`MROlo(4ZyJ9w=J-(8h;uK6Lk?tq<)O^&+vo51mLl_|Q>#
z>%^NHaoE|1E{qi}W3u2&40a{H?1L@7A_=MV_2D&=o<6+cLk}Nb_hmf4khF3vy%;OJ
zH;H}2)koR%<EfEYIh=t$4D#V^A13%P*oPsse^bs8$w=jAnC-`h5lWFFjUs>C!bkfs
z#)q*!jPv0wM%mq2YIr<@b|p{rVUiECe3<RSWa`s=m`*Z<IF%@=-tl1u`Mavd?2|Q<
zqCKykqm1X0NY|K0VvMt@QJ$bJU~r)ii%1p|mk`C^JzvJ6;&LBW_;A~YpBc5%hjl)z
z_hFR}t9^K%;#%Swq71o`+%Auh4HP%}GM?>jQf@!+;X@xb`>=%uJAByb!&Y)h^%2Q7
zAGWJAA`W-?u-gZh4{pZp@!_Zs$9(wMhrK?0;=`vteD1>mIh!=t=fi&XVtI})$?eS>
zG9&%Mhl4&G^5HPe>=8gZul-q%BR+h|_8|Aya++k~`W4Mi_;AvPugRr^$9)+qnWua>
z?ZbH=F8J_`9HtLveK_aC8Cr^4F}ClUgxmK}(l9PE_L2{meUKX>(d8$jfegS-pS98=
zqld=_uMgK~srjJ$5cMI(py5NnhoBEWAN*8gmy39iyh03yeTb0U+-ixkk6p?jKhuY}
z4{3?=S-Ub4J|ule@$AUbfgJK(c?GYVl|+75eE8mnAL!?*3?QQLsv#N4O^VD(uKVz#
z4>xEa_P2bv>9ek<S&CYD{X|{ntK#+!`3OHo`f-<y_8ygAeE3yrz=!)XNcvI6kKcXx
zLk4g^GW)H0`vaQ&<HMgm{N=+#21WmyL~6_)LjPs(k&1Qrk%`Hr*^6-&@*I9V;YU_-
z5wrP`U2*wpTu$-=eiZa0mmj(P$fIKOk>vGTPlTnO^D`(LNW@7YKMFHgf>^|lVk8n(
zltivg#YyZ}21@!-%5PoMWm+gUr5Po4^^_k^`|*Mwt^FwLM>#+0_)*u7XZ$GdM-An(
zf*+OqsO-nHR4OXn9%`yESdCbf*ms_F16!S3x<E}oYWeXTgEC{6sM_RqpRGsUh*+Q4
zfGB1S{np1Wgf#Y}i62e<c%D%$iOu|I?neu9sTO;#CDUf<KCLL`nQo<R<40RRy87|5
zAML1jBDN=rK?jnK{*2Y&&J1=TzUaqGB+|O<g|BXYboXNr#aH}z)sHv)=;g<2RK(ls
ze)J%>uMs_!E(PmN-q(+Qe)J)??+W|-F~E<3%F-SXWSS)2<YQuk{TRZip?(ZkHp56{
z3S_qju^i>c6e(>c$D4kPX6zV0#`*CU`B+AY*?0yg_%YFsx5*`m=#$8WOjefmTYgjh
znC8cH#?JC%wjb~KF~g5{smxTVWD&rgQO}V^BHwl+&Lv849?5(^7LY6?E+WcTWyC;!
zOBn1p!LiJb<#ZeOV}&0p{m>X(MLgxlX+Ku`@xC8xsI2v4ogcC(S_&_}^?n?uzJVyp
zMn5+B@qr&7D&=F6&3<fA%2tw({Mbga-H#n4JN?*AvdeFMWJ%`gf_tdgyO{R+@rfUw
zQaMPJ96$48pW^%d_}q^J41VFao>qu~eLExM5cR{vBg8NLIO@kSKfdx?H%ebq6wAj`
z_Y+i3679Q;Z<LMGk8jD(DCMjl=lnSDx4zSO!H-MSWgNKZx4x(>ZZA`jCMQ3aO6B&$
zL+&NY?W$}I6=R)2Lq;S&{Nw>*)Q=#E*o6EDD;{B6l9L<r!&L1`Y^2F0Xp{6K<wsiC
ze<zih)w*b2p>kE}-;?}6yhgk(&2o-a{+oW>^5cgHu0`;ZAGiG|6hh$;e)i*zoR<JT
z3*fFF_oR~s&^v%%WEiA}X9M`nkNf0>0@j%SyC47f@h_D>{CGej`k#LMMgEZZH?iXi
zEB8m_S(#jd4w6g(fFv`qv|I=RklivuvMI~#Bsqvr5OWf91(2I0kCa^2xQO|P`H2OH
z1#KMT5F4r9!c0;mfTASDh{Xda5kN`uvcyuv(nKlklL3?=e~S1t@$s{OatuC0EKjUJ
zlpT*11E>^0<p8P#&?bPk)T;(iJAgU?RAaC@u?Ddwu@+JCeJ+qO#}i(cV$%TX1yDbL
z2Fj)}Nkd|z0PNXg6BR2B@_F)R#O6wG5kO1DTLtg}d26EmvVS`j+ckjpigzIC7(geI
z&crUn7l|(srL@vAUk;#K0NttdAihF;RoT2oBFj6klk`;j8zfSUJ^}O%U^avO0_aaN
zjyQlgf;cdMK>-XV9}>WD5-Gz_l3}*aq1%4dYb2FX#5akfiDQUk1J(l|X)SLBtnpd=
zj1S;#Mol1!GBJQj<dXxK62MgQcU0^&lIha$IBtmji~!!HIFs1r(W6<?^0~4%CxE#D
z%nM+C03R`S0dW&?A#o8={46F}62N-_EDc~8oxC5&*n7D=fE59(q|GYgYNBLhUn18q
zxHf=w0jv*TLjW78h-cftM*C9x0i!+)U^B@UWx18a9-OxYu${pj#GT4!7s>7b_K<u`
z+^b?gA(4@7UjX~1Ed|jzh|dE!5I`V+AY;D>;OhX62XK&Q;SljK@d!J`m*hvuj|K1*
ziJUKKcyc%==)|RRJV|mYfYVC(CV+3r&k)ZN&#Bn+Bo_j>NODQ(mr0yNS$=dY-9zFf
zYDArA5PbpoNu*#hGY<t24j^+7S%TJB8VMj3Kstb^vWW#?lE;;j2q3Ar^k_--T>!TO
z_&I<p)UUGRe^35{vb+|+^#Fbh;6?!1r4h<IUjf_<;8q~xzrE~#_&UsQ5sS||0sJ1o
zA959-hkL|dl(%2yDnNdpXn(jsQauRZ5tToc<zE3jRQ&G%{!#p25;^Y<9(X3AcmT=i
zagMA(WDBBxFk{fmPQ7ptIh5rSBsqh~rIg%3<RQ-+M7|*M2l1P1_@q*RT>Q%)eHNl3
zQL?*9lp;YC4Wd{O#e*opsG32P45C!f>hjfzrGqFJ#4|xW$zYivo(ke=a<M7PLJF~)
zTzTr1iQ>P45b}ydv8kl&t5B(`^lD14K}9M@jKxE(Af5}Nb`U>0tOD0zA?p$)STC6I
z?+Fd4Gz_8<N#h{eDVruiG$nsNh-M_si84ECLDDj4eSubft%7)gyfv|n(%X{A%t~@>
z&m<j!=tv^7G7-B3@nR4wf><d>5k%J@CIm4th?j%tMzc{tbPwW{AcivdDzPt7lD`&2
z55-?6=}CNp*ei(MDz*=aJ&o)~-am)|Ds~{rAmZR4hLCu<$|1Q73t~8x5yX*1dz6sa
zH-i{WWeic2u_WVycuOhcN!}*PW5h{8Ob%k6ik(98E^#VxS`gDo-XYE)KF)C_gR_XU
ziF1f^r76~Q6nyk(K7&${1tbgEFct-|m}Cj@J>pX0GU9Tg<RVQ-(yn5=60%x(dq0RZ
z<ZFXi7sUD?HZb^i5F3No6vT-jPEz?Gh@C;~3gSZsHxsuIw-P@hit}wG+k@CaV&BW}
z4q^|3hiy^Db`r7QOY#ZvQ{rdDeZ>7l`|5Lm{0rj2AP$j;hhPcE5%MpCI2yz;@~??s
z5oOUs%;a}GXsr(mITgfdM*S4TH$i+GL^y~@5N9a5gYX1#Hi&aUoDbqc5SN0u9K=P&
z+Lb9z?1x8AimqVB*8?P0mh!woXhHac2n3-AVFcl$ne3X7hdc6=;lIzGf<c5BD+%po
zKsnwhl~fSvAY$ZZ5OI=35J?jI9@DPj@2E(rz9+d7#8ndec3AWug1Dw^uFDt_#0>^-
z260R2QaLgYk=$<w@iWCcLEKZZcS+<%^_L)im4P&f`$7Ck@%JG9AbAk{-<q>DJb4fx
z74laQ4;d?5MEh+16U4t19}yiP>%x~Q1cZ>8JVyvmgph?iD=}LL*-7M(WkEpfbB2&B
zg!~jGm^*~L<az$TS-w!lE(NhE5JJKK#1;vmXb8(gSP??85Q>M;n6V{@VqY(Wk|C60
zur#q+2v4fmG9f%g{xq?y(#w%N6GC~C3L!ijLd6g&g-}J=R1Trv3F|0AY@Aj9ql;KQ
zgc?+8D!o<+&ym*-p-u>OLy#+%T)*r;t+uf~4H^&|5*vjwzGl#bK{*9YLwG)fW+5~W
zp+yM2L+BGiOU8C5wjxRyUI?Kzc^hKe5ZZ;%p1gAiT|(#(LPrMWxo0Ou<mu;&<l^Dw
z5MCnhY9l8q-TuR0QI@ZU@EUm!;_Jko#5ah&h<4-YD^(Z5+>rG>!~P)*VAO;V29k^<
z4k8XF4j~RDN~wmC3=d%hi9HUFB7ZZ4(IJdcmSaO1BgQx?Zz+9z2yc_yX(xs-DTK*X
zrV*zQrxIn|Lo%IC{tj^l@!b$+lFTB`R(Xl>94hv~&I@5agA0fYiHnGfiA#v@g|JjS
zNP}c^vX_p<)yfc7g`kC@hp{?@_e1zHZ1uG@OeI7PL0ZLH2G<eShp-`pjUj9b;e!x5
zhtVaB4@1}-!mlCx7Q&Vgwuayf!5_j$A#4lbWC*81*dD@;5cY+zKZKnj><VFT2%per
zK|TrE9l{>zj8x>@$>&g{0P?dJ8$YG~8Bsd;=OhP1I21yWM~@CL_yti$s>2~13E@}>
zU&#?s6hBA*Q-?AumgBPhe@%nqA)HW_5_LL+Zy3Bl{FZo@cqWuFj-6xhJkg%lT@2w;
z2$!k2L-2&)48g^q_<THud!^1p(5cH!pFv``7I{)ITK@SrgkT8QLbx76D1<N#QXxc0
zOrjJ%N)nTPq>d#XLV{wFD9igYA4>}l;YtWsL-?M$eJQc4{Rb-IO%~pN4B<uycc|P{
z`cEXcLK*j`w;BAIXqQ>i-VNa%m0yUWNc+4mqmYbCVbl)ej}RWn@=+K?!uT_Uze30n
z#uH&Yr2W4kJR<o!gnyI=DV~F^(ef5XCdFl=cxLh}VPp*>8@bd#_AuIT*Rfq2Im5^m
zMghj=4kHgqzA*BV*vBrOr32=tV&8oiBp1C9iMT2nMzJuS38Q=%#lt8;{pm1DhEXbv
zGRnR*$&=xX{};3W<?|_ub}f}9FGsZNzd{(#hEan`#V{(7R3%m>RtaacH2X?jEsW~a
z?Ol$tr>iD|wTMz?(d&d!m%(;n)C;427|%1<fY^lCFpNfFG$xlMlJIf+X&Q!IGtI(i
zPJ<R<v<l+|@|Iz1wauQ)x2Do2Y`xPb9^}`SinOBkBpryNcMPMG;!+hahVfDu3&L0!
zMpvbe4CCc6x`oj_j90=KME%t;UJIjF7`?;jL8T}0YMD&0lXzqnK_a;b?-NGfFa}WR
zr}X|LGGf@X0<j#ZYISfJL&6xUEQgZ}3uip77{Q=jGo!+IGmOz;j0s~V^|4`$3uAH^
zQ^I&FjPYSir2aN>0`b4gBa-hVITrO)eQFrf!+0l*X|$ABDV{uZkouWH<z1!Ad}dY{
zv%{D}WuDUKhOv!1+vh9AKEOp`ydTCIii^Wo62^OBEM;(ovRoF%a>ZrNwvv36Tmnes
zgvw7!vNnu$VeARx<1p5Tu_27DVSGfJjWXtwY$AR@%*<~FZYJMCEWzhQa&+4m+!@Ap
z5>a-9k)MD6Bz#vGyOl2Iac>x(FnA!0Pf7L@KO@R5)jkq?a{D>CTqC|9IT*$v=~l84
zj=>{D$;fWiN5eQq<tyT)Fuo>{G8_-%gyJVjP7zNNzaf4b#u<{cL`iin3>jn3hjD?*
zMdF;9R*#S}TxLm}L{}JY645;*Ug-$De>cMLNqt7JIRbwe0T~!0)>SyDa(NI&D2#9z
zkuahZe+wg~y!{-8sdzk$L>Ng1Q(=4`#t&hn8T?M!Tp_tilmc8Mxv65Whw&r%4W-zH
zycNbzRBjV(@s6^&8^%4we+lDP#l=hx<bD{xt7G|tL|WIMO8JZAVHkgt{G-zT8^)tB
z91-hmW{Myy30O0k$+Hk8R=j0XJUdAaqHIo<+;c{dD}vk+<cT0}1id2Y9YMYb@<&iF
zg8C5@h@fBul_IDdL7@l=M^H9`auF1XplAe7MeuY4u>#h;iR{NNCTV3O5Q|YFVm-Pl
zNi0PyO?;AAhA1<c1EZ`3RhjzAhOuWNC@*D;pkf3SB9JI4p*(Do=kKyPu;~&jD7!S}
z9<WLTRU>#Vg4)chS_IW2s1eE7cVQ30H5pZl_;`h_4uf?g)*lUsH_2K`-XMa85p<5A
zO9YJ~XdJ-{5wwn=Nd!$JXc0k6rh1+zkB?=~QnLt}N34%&$ZcspZf5RK-1>vmR#Gi;
zedJKqCW7`6bYQBs5ws(bOiMBAj#AsXtYhg!-QM~ox5h6<&^>}zD85AO8o|pdZMO(y
z)2vK{UX9?j2zo~F2BYFd9X%p=U4p#g$R9$<?mOA+A*aAz>gf|f-w0+#Fe`$75%iDX
ztq8_PFd%|~5e$!D1pN#m4vk>2%5eyZJhmIA6xlgBl6+JIZ<5FsyU`KIZh<iojEz|T
zP#}jnPMq)~`BD<uR3^&X5lo0+Y6R0Fm>9t%rkxVOkphm%5oBrZ$Uel{1#106>v)Sy
zkKmmMW<>CA#CoG&CLwa*4|iKAjX~Os_?#WVoCsD%uquMN5zLEVNd)gjFh7C?5iE>g
zk(^w4Vzwuf{5^r#ONGlRTP&y8{x^h2kCsNTEP@p*%r|hzml@=@ob6LirEIa2ld?L3
z_aoRu8*#EGg0&H>V^C^ly>!6pj*ZM{14Sv}Aii`kS3UtjMam#eZc7AP89Yq<D1to^
zd>p|x2F3Gsk{uE3B-y3(-BL)l)xA{qEBzCaPb2tDDf>w5Q}DTTBBg&pa*%jP8USa5
zM;QDvf}<qIA}~q5B1(C_COJ+#5y8m_PDOB9PDccu2)xqc7<G|&hIp2Ej(DDUfhgYO
zzWWmSWulYlBD#sTjYb|M>O_O+Bl?K}qHP}{4-+HAC^1H~Z3N>HB&Z~bDPmgLd>6qL
z@~cYuK9X_oa6N(_BltCj-(t8C!A)s$QOu3vmOT6wn<%<QtxMAF2!2*+Wz@YB!QBY%
zQTaQ9e`L&2vA=Qz{w;$0B)=2?Aj*jSfaK2z{!+?A67l(O1dn8diJ};DbVQMhBok4}
z0FunaEKy`7$);knN0CGEC!)wnZqLMWD?LvXdCBt;^AigY3la+vC9lF!6d|{FgA|XV
zMAW(-wTPl5N$n`=L{Tb=(osAaMVTmSQGbe9fhhJ*M^To%9Pt^YmnV^<ewL(S6qTZ=
zOkSN>g;+I;Y9w+!wTvG<s=;8*|1UllMU{OSyFThh(J+ceQPiVNePRQmBp0*B<V}^*
zB$_cBd0r{aNSYHR-<Bk;qIe;S*5sXt;;l^-Z53}9MSI0NMA1=kyV#u>>=MO`|IwwM
zUyfox6a%B^7De|cUSXZTN)-Q+R%~8lum|yVV$Z1c|3_~`(ThZQZ<0Py^d;#>>`#;j
z#9}ar3B}tGlEKl8JFKA$4vS)V6eE<)#3)8aF)E5Tsk}uT9mN=uu~Cd8u^$rIi)`bm
zydA{^5)tiK$#GH?lPOLiP9;twO6>F~-XWhse3v+rIEyGYv!k%zt(zCc{3v2km{BZ<
zVqp~DMDZ=p;36K;`%x@rDyh9CB=1GBlw_ImwmgazimxPD6~$^2d!=_x6l<ecN98n~
zOBvQPxPiDaicPHB4~QQ|u{nw@QEZLk2$heb*cQd7QG6D~_9%8lu{(-AQEM-XoQ|DQ
z?25wPKOmlkd>qAICj5jp_LRmxal-dSu|J9fVi3jWOlYSSl;6Q94n=WTITw35-H#2v
zjN)h%$D;TuisMn7h~jHzWTzENu|G+lLQXMiDF0zof_C#e!$Y>pNphBWE{gL}Tp+&~
zg-h97BDoxeQz`bv$Q^};ihR39Txlv+kHR4L5&cmFq6kJ2iduhy7L6iI5@D<;^5>HF
zq1ikhMS@X!49O@`Qs*&z7DJlimKe6i@Ld#FqPQBx_fb5E;?F34VC?V2Yf)T};zx2R
z*gcXP#G6svm%X4-{1nCQsC)|xO=Q7`QFq8UeCQBm+EfdFq5doJH{yNTh)*&5Bbu@I
zKnCQ$qIej^kQj!>@OKpd$oLsUnHc_!;!zaYW5^M+Mp{P<Sx7PwLCj2)K}ihcmzBY6
zF{>|2@QE05#*jaT0x{%@Avbl~I1erJ#gLaojO`?Ltj!BDs!$AtV<-|sQ3i|0P=cgb
z%o-=fvSbXUVkk{ff+E^Z#HWy_Vt6`+t}(nEL)jS0#ZWtjIy8QU<*7<uK86ZHVyGBH
zr5Gy5P=&GL(EiyzrS>FPjY+D<P$Pz#<h5dWj>I;zQ7r4mP%nlTVrU&h{TLd=(28aa
zV`!xOH;$o649#O`5ku1$o{yoKG!pfMT3pG`&R2-|Y)KFQRoYOojyHz3F|>=JeGDC9
z=oCZe7&_9MBoqU?p1aWgMdIV4+C;Eh4BcZG6vN;cUZG9T7~YW5lD|gm5yR^w;?_>s
zi@^cJ-ZAuvp)U`xUkv@#k=kXJBtiz#(mqFz%OJsFF$|AkRSc_R7!kwB7$(Fpk;bE9
z7#qX57~YIwbPQvZ2XScol;m$QFY!N~v2U}H*#0NQFgb?h)Wv=Z$z0;p7^cNAo&22`
zX2viph8Z!utGtN^Niv%?IfrJpPsvEgycp)kupowo%ub52h&D@NcrS*<<dWP@vNVQe
zR30C@M6FQDN_Dc{k6}#=8)DeVsI@Vyi(&nLT-grA=cX7wU^yQ<6!IZ0H>>hUIX_aK
zg>Q>tJA=Y^#IRHGT_n3>*rSw>W7tdn3GwmHsC^8cjbT5@=P?|J;R|xf{b&pa$qx}F
zm%}j}A^(zS-(QI3u^7IJ;cJ%mIPr80CrBjrWDKVimm~d#{9C1*Arbvt4Ci^Il9Bu_
zFpG;ZTvEATj=`z8i^NUz#NZ{-RIJ=x8Zr1{@W&9a#TbGlp%}s>QuC5agj{lulEjFj
zn<Q~!f|w+xh-sqz%;*aFRpR$C{1C&n7_P_gqi}BfxxuKPi8qPj{}#zlG2B*)yl!xZ
z{4VjH(tn9rPgEtz{TP0i_8G^*IR1#?feeNwx|#ShhQDOMG11Jl2AqdXSkkmc`@duO
zM=k*|JYpqFY#!<k6PZXr%xofyiLB%~h}nqZA-k!r0#tG;Jr_xCGh>!3p7WZ>XIlGz
z^0OEPhy{rfTZp7Eu?VrKiDD$hi6w~kUi4DrrHPXENs=-qo+5eLL|GH%$g7yBO7e_}
z@+4wkf#g{e6-ngeRx(l97VVLrye?7ftCQ3q)-+Lz<T(?yP1G^1z0Hr;y6qED&qRIN
zG$1xK(a1z&(|RqX2^D+Up((jNQE5)z%ESvMT98Y=Em^lhS}UckiCd!`ZA@z(Znw{N
zjB0P914&0^*@>jHi7q5B5?@lWUCoTus_s;p#_@a{uSj+bzGk98+-fR4OuTNQr-?UA
zoHTLDL@yJ)O)N68*hC)_eNDV+Vzh~VCi<HgVq&O?0VW2T7-V9w1T#AZ7jdl2?2y$G
z`HM;MDQ`|mvl(V$xQP)aMl#2_rK}Y>`Ie3>#f*|N%Wk*Aj%{+=CEx!sG1kO%6YrQ9
zXW}grlTA!9F`fx!Aw`VeHZg(0i6$nISe3?QD_L(BgGE^!Q%&mwu+vP4TYE8WhKYAg
z%rP-n+~#w*9gYWO95YSKlCtp=1hY+a-)ybs%`-9I#G`_a1#%v_044P=WFd<xc@@g+
zSYqNm6Caz{YhtO1WhT~`SZiXri4`VRn|NR9gsYk>O_bVey;rh|MU{1xiX}4MY!Y#u
ziS;HvG_l#l25CrpGi{QSTg3XS&5b7Pw_rX{$0+|Xw1s?!X}uJ)Rq9GE0dkC{wQgxG
z*_qah%<>MAcoq*kP3$run^nZ&ZWDW$*8XnKCni2MaX^}uiO)>zGqK;q=ce_%sZK6O
zK0Z5;ZKZyG*F{z=51Ke+;+ToAq|Pf?OJ`>@I}X#~5ffjM93{%*Z^`{@6S?y`PDst<
z<Tq!e68IHLIeb~jI&I<`6F-}{BPBO+#zfde#Kc(>=S*lObQ9-ITrhFT#AOq!xM^0>
zUNo)MQP~gd6tfZzc{|w4OkF12COqWwEn@r29`;+7h6$gEfQg`ql{Fmc%8sUm9DXSP
zt4O+4NE$pG@{`woWnngIB4*;MiSJFACgLU%CX&(~@;T(={E@DiWU*S_PAymqDHGFb
zS?{i<C0`R)q(|@~Vy~C}VB(sIpG@4A(WaZ@x)dY7_3@UW@*!vwH(1o0#9OBIuef%Z
zTU4~xvE}{oOf?*LP24l#h$B-RzsMPvvE9U9GN_ukZ{l|oe@O4!l1bWt{O0Gi-ZYmi
z@?~;7Fs<**$XR%3;%^iGO5tS$80+{)x<G%&rD~bvFF|FgxmRX~d{0=4bX^*19GT<D
z9Y>xxvc!=!j$9lQCJ%FDiz6p__PEs@a*#hklq}@+A~_>cncexuabBh8i(|(eM-eXM
z=BFslsbCz1;?|X@a2!v@QHFXEVo_qTIEs^$AeJPSB1&GR;~DD-!k>!cnK;VF@ib%0
zDw}fgjQwC@Qz4G$;;1b-GPYtImFS@|gK{Adn<{ZsjiVZs>T%Rmerk|N^Qfg1S@;$E
zIt(@@)+N>>){mnBiP$uZTkniFif8Qq7o`cKBu8=BjC^<;&EsehN6R=`#qkEK<%Kv}
zO9_>qHgR-`<Hb1IDy3Z<?G^73M@RBb#Lh~W9`_P?H>Grq<7IOD)8A5_?lS&Uu}_dF
zuQAvoj@L<g5=ECz)Qe^7P3%MLOO*52kEB0w0C8X(gGdGwhY-bbXdJ`H?QbQC=Miy?
zjAK+BZ>qc|k&KRG49QsHI2HRA$#~-1aZDhY7|*z2lq|&OWQtSbm`XA&j_Gl{LoTs$
zA)XP(yK&5nV;04^am*%pJO`c=|KFPe^B6Usid?uC#j!Y!zv6fp$C5bSi^CI#mo`h|
z_&kmSaV(2tc^oTjpTw1MtRh)W{4|dDN!G-%HjZ_1tdC=F9G}FoA#Ocrkl#mfY$V@A
z{6Og+#<7`v3vsK`%apSQ)opQXr?P{%Q^oFzV>kJpI6fv3+{%n3)uVn6SGG*D1R?b!
zpX%Djvh62|A}#idI1a|~O&s5{st?8SHDeDGkHjJG2YpFA8pko|;Hxb~eqSjrr{;JZ
zCzQ{Vahy{8wCd4k;y6q3avbMWtldM;Gk776izJs+tb7SUO6ZKkMJI0R_B2V0Lzgj=
zilOXp#o;3#Do=Ar0&xW62*nX*%S@`a8i^xH9#e`LM_lm)iIgoBM_T+S{aPGX6u%nB
z_vAk)W2prBU612ODmRqnP1dSJ{lp^OCdzUBOmc^Kmv}FZpDS92{40aM(ZhY^=Xbda
zQ2aq0e=05&@^>8nNHBql3H-~nPbRGS-lMpDnje|SC73+{kY^@lQF>OAY((h=Ih6iH
z0yz`Nl|b$U@+43)VJ&3kO(0(aMG`2=p#0HB{saUIFenBEnY>WKdJ0)Mf%0-ABOg6Z
zK)!BNJb@Ak<e(zKV{)zGeyvhWTbekUv1Jl?DuJizN)FI&CuJEdm%uZsgyj>cpt#s<
zkkKrGY6(=QSUG_zBvqA-xT=w`E>HES)Fjp-K1ZxgtV66zw6`Kl?bT190TtP&(U7E3
z0*w=Bl0egh^)h&~1e#NSK4HBJFTWPl?e}wAlDDG43q(oMnqr#-+EQspwCy`4&?$jK
ztuh~OmAP{QT@u)sC9@Rc#ROiGj523#kvVhM1YS-+`w99_=$1hD1Pb0jp&NK5fmai7
zq>(9&*AnQFz@#K5C-Hg$Jtd0-t|ahA0=*JAn!vFHdNbeM#6Ai1O`u-_{UucblM@&~
zU9uiZGLSeZfx#q0h_cKp2E!5<&ftgy-XsxmB*`eEEV_;+8I!=+1jZ%sRszfRIfTgK
zr@S&Fzwy$X<Q5=-2_zGVqKMg)1g0jiMtPo=z}y7pF*rS8y_Wb+0y9+XyCgG-vxu`3
zn4@Ct7B!#2rNjjZEL5?J5?D;Wg!mrO9(k6LFDJ^;tsq%RTt!@+!22pzmZ{e!ur7i1
zO4&lPLCz-0CZ&Hs@*#1voMKL0#Q#<*A0@CYf!(7W+m-zelAXj|M7giolfcL1dx`rK
z_=H6Kd`j|J0{fI=FMxlZzyT^>DE%PGA>!c#jwt<0RjRM3Tuk6n0$(R^oWT<bd`ogt
z*`G?_wBp|+VE<$F8Ks;hIhU~h+vR)$7f8Bowch8wtZcj_&IDXaaVOv*w+pW&peJCc
z*cgc~0Y6DV=|PfE0%4^@5{N2pSGAcyoJt~rBuOfPw6c+xYV8(&HG%IFD4RsNBz{QX
zn)I?HG9__6fgcn2llC`=zpAu16S$@LPb9Y!_?hI6((jVoOW+q0yGXyO*!v0muJ|7b
zJW$*&(q9QYr1H1Y|B<VJ;*Utg5=rZdAiwNMWG2r-%u39rVr`!}7<?j$oJr(LA~%DD
zlPHoz9%Y%ABwrHwl~RDDAh8fpPE%18TZ*Ju62(bM5KF39>0G7BpCpzcKBZ!xPG&sk
zdM1hTNpwh}Bcm!L(Kv}F<j)c-CQ&Jg%1KmVur^VSx@r>D6t7NFgIF_(T1tN|iFHSK
z3!s#`Nz_xkK1l;&Lt>+3#(#x3RW{F)$R^KbN@-5gB8iqsv?8yR&GDn`|4*VdgKday
ziBisXNwg=oTX-k(9x`+%(V4u9vV1X#my*`COj31C;$`aHRBU&WSBS4B@fwMJchHl3
zND@Pnctffyn{~*&lIWd8A4c^}q92L<7EFI~u^EuWK=MJv!NkY+7sHYmo5Z*zhEpFw
zlvE>0MiJj6jwX&tT3?P81Nps`#6*hYiK4un#015qD(ul?N)l7$%%-fCJS~aoN!(20
zRub<dF@wgbB;HM8W)iECSe?WyitiC;6Xy^m`CO8DNz7Nuf+QA_FCs2h`VtZ;!%~uE
z#N{e>1<6WD%iWvrC$T1pFOoP&eJydfw5uf6C$T}L+Cj20iA^LQ5I-btCT<~aC4NMd
zGH**_JNe^h;yW4KMYMbF9`cWq*lUYKN&6|uXT*I;>?ip=i37=uw=nF*?L$c%W>kQ9
zB#Bcb;^E6Aj;d~WEQzm_{x!+*Bu*&hB>P2HSp}l<O%mTGafaNhY|hHrPvU$M7m~P`
zgq!*$qLX-8S=x8yuH^sj+B}SsH7kuoCmKW_QA+EVOu0%Hq!J>ARcwSLnnaAmB*v3S
z$PmW`jbzf={v=#(8`F%nuKr0}A-_tLT)vm90QohgTu<Uh#cw2Gulb1OPf7fl#9v9=
zR<S>m+#%jg;vUH_D)!eTej~rHl;27IAU;rM?O_ssCs8bg;wk*2EOW4f{LA1YqJv7N
z6hI>7$xM=km^FoLB-vH0OhKPWA!iD?lu{^#+=}NR$xF<aLVl$eASp<cee8vmUL=L0
zDSRx;V$~gjl6wi;hFCI%Qp&P)3QsCthUBRfo+c?vET>}aOJw;JDk$aI6e=oSDTT_4
z%VKHO6so0AJ%t)6I8$(?P&0*EDZHJ+gcP1jp>_(bQ)t5^b%@PVsH;5GOQAk_17gDz
z8j&<6HcO$2RDx_cWKag==Tnf0pD6aT06E?kjB1%eD-uy&AhDNH+osSdh0ZCoQ?czy
zI;7B%#NM^iC50DL=#xU<6kbZ9E2G{>;boPoJ4rX<d^Y1(Qh1fY*N8n*)>8cI#GXV6
zO2_ZT*xtlToXPh~p+AG8i33s?Mj|C2NHQpe!6ZYJJ~Wl_3}U!aMx-!O@lh$fNp2Tx
z4Eb2%IA!w|$#|lyaZOBNQVN?>*pkBJ6sAyLNt{Ytl)|(Wrl;@@gL8;d!Wk*NOFmO6
zvr?E%ZtokJtMqv!^HW%$l!ZKZ;$$(ECB*ks>{60tDJ&;hL9{ngN|IG6tfullQIs_)
ztR-JZTu<DfVmGF+iCoUY2Pu3=ZjZxTQ}`%_Z&LV{;x^*p6t<_ZgM24(KXF$IyGiyC
zKPF1<dr3Y?;Zu^&l)g{K0rl3&=P4YZ{sr+M@et8|Hg|;lOQQHZn!+)~zasgXcszv@
zN<T?*ig=nR*_~0b7g9K@_&JjEDeEh~;`}0mmxz~@jr0+B3LY8XsCbE2Q}{jwEd@OV
zBL!ayDeC?d0x85&FjEMoP;R>;oWej^#Ad9$x)Mntn!>p34*MsuaoQwkBSA?u`!h!}
zg(DoS($uAR-;rD)F3XYW2a>zQYsBj*{77;mg`ZNmox;r&ZlyA=u<}82%ZaS~(B_VG
zu~Lp#b7hjskq>*`qbRYzko-#gjd(wW-%0);ip_%*{#5)gl83~<iT3p1-xMAx8*Bcb
zM&>kjU&Eej$dX3ZG@4yS^Q*{~M)ow)-{HIOkRy#J(nv`#jht!ZN~2dAz0=5@MxHb}
zr_m*iylLc1<Eb>BPFvHk{Am<Sqfi<J7!;-Tct>IKB54#Qk#|x=w{M?|rBPg2mPn(d
z;-yGR6Q3lOA!g?1jLMR?BbH0!nKa6$Q6Y_Isk9<iOru&F)zhfNpyXJYqzbWWI^&<+
z<O}3A(x{(CgEVTUQ7et-lzrVaYLnMV<2uh&;XRIeY3rlq^7#>Q*f5PoG<ZIZ#w7MZ
zHBla#DzRA_&C_VXU`yiTJ9_z#+83y_CW_lOByHvFaKW>E8u_z2I;hx=B%RV3YXUDS
z{biDuh+S>YdhV7+_jJZ%lvji>>NTk=u21$z<8|_$N_m5xCALo*ebbnd#?&<WrO}@W
zC#EqVje%*5Ok-3UgVGpGeMA~VNbDLIN<K{a9L@rW&+M$mH`5rM#+d)3>MEeGsJ`xF
zQwq`z(x@OQ4U!_Qh=7C$C?(z9-O}ADBHi864H5#v>+X5)(ej<y^Sk`{)_QBNefB-~
z+?YFe>b@C@@A^SVU*_sZ>`#>57+}Ug#RriXFB2PL#!y!EU4#*4j5cG886%bdC=ziP
zYsNS;CYUjiid1sE@)16Xe5)DT%$Q6*#f+(DOe0@n#!`~$X3Q{SCiyHgW|RD8AXjM2
zF=MV7^Qg$R(n2%lo3X&GKhu}nn8yFP7MZbFWigJn(#B<GtfeS?Imrq$Rw`wc8LQ1$
zqqd9D!|TjgPlpX=Y?7fuzR`?h>|u$s*^ECa{z2R#^S>E_@&-IfmBadW>cY>Pu|x5l
zX6!O!H_bi7BgDPLeP--8<A50lxn&PglnBzpvT+Ynl<FOoYM61Hsi%o2%s5G6c%D+8
zXUsTj#$Pngz2{)G@q!r_&A4R7Wi$R}>J{P*qLh2pjBDg_T7F&a5u)ET;}-SXX51l>
zsZ~xPB<U{AduH4><AE9fnDH-_hh{u7<1x9o8P3MgG7gSU%<8|HW>{rRS}@20n;CX9
zUYYUQ42Ky`GXiD=Wx8M-j~QMPx7q=HtfXI+Vl>mhkQoUxo|zG5YJ?b7o|+jk#p5J$
zDPdGkYWtkZ3o~9SpU5238#Dfs;w)%t!CSK&;89Ozb#5%dWEQ}J<W$5=X+a8dIU|aj
zOsU9I%OSvm4=qSz!50>kwdj*ZS_|@#d}Kj73*-f==`F}?K^6-#P|rw|^&Xilknc4}
zmaG<JqnMkR-GZDXIiyfo5ivsls7)>^@<|Bs&tt*IG$pvi$!pR7HYK6*TTp;{K?{mn
zP|Sit78JIi2;)eQPc8W5y_lad<H`(rkk6U11hF{Ls9Q-3O3^IMCYQ1N?}@W?Z#fIf
zGqsil6-cCd)hwt;Ude*W7F1!0Us9?1Ug<_#s#C8)tjQvb%`I_iQ~Zip$AYg(M6YYn
z=XN2oUFtJS17bsI4vFZENxre*TUJ<{o4i-^@0r?}*vx|FBrU|jf|eGvvY?#>?Ja06
z8;D6iS(2`%f21k#+mgt8UxgdXpE^+ah4`}t6Zut5N$p6b6H%(&#e%LD{7O@5Wem}7
zG`m~S!-AgVy@>rR=uOhcg1)K_?^av&w_pHMjk`UAEf`|KNefO{Fw}x!7A&w}p#{S&
z7-7Lk3r4-y15)m23&yY~rIPX+%TU)AnZ{W#-hv6z1Pf+bFw25TOqxa%&&d`{v0$nN
z#!-GO*Rf1z>I~&$%n85IoJ*W-!5k9#R*vy4hItmury`%iG3v0$g4GtRv0yQE5tmr7
zlzf>|mRqobe5F!W$*#)t^R*VNqqv8-UbSw61sg5cWWn#$cUiERWIOQ>;uZ`3wCLZ4
z+baD`CBlyyNFDr-^y=-PxYLq!7jCyj|7@$QBa$TP%)LzAXTg4w0~Q=4Ib^|63yxWE
zn5H-%Au%d^+=3HImyKwwmN{*~84IpcKTAAk!FefHc_vN%G!1^yf=e`IL|wMv3ip(&
zL@DtaiFn?y;HCw)RGg<Iw=KA1!QU3#rTI{$-Xpnh!2_lIV@WzQmza;F`PBa<K2bhW
zit)3`<Szryijh{>EpS*+&WiF@I4y9={ANWiE8G@%EQnYTm3fj8{1yZ(@R1w4hLjb2
z&kR`*R%J;aY8J#SNNvRjR(<M@bBn*CLxT8>_?-BH_>yQ;^0ftTEclPgTVir6ObnHb
zC^2D8n(<OlNvZTyN*A9Gtw=*%!it$z`FvzWIxEs!k-@4zup2DvUgQ$MicD6tlqbJd
zWF--v#R^FklFf?jR^)h37g3UOTakxhKeyszEAm=VRFxuy=CdNdsz3o&tRT%o%BL_%
z5i34X%BLisS@mryJy}fY((T0+FF{h$ic(4`ZABTyzp$dL;&T2_!HSAj^t7Uv6_u>0
zY{ger)Ul$9@~L4(Rp|$-eh8~ZQEFbDM3#6-zsawr6}70;CdTC-j(pMd*H-kPQkN*6
z^{l9GMFW}*t@z1`cI1t$Xl%td<lkD+%!=k#G*P*}v!baL-_w*8gR)l5cztdQD_Sd`
zA4pnS(MsyiT8U>Hia!$D5{<m=$$z%u7b`lD8{b#zXhkP0I=`nFYZtpv=}P=nI#XV%
zK<rL5z85B~GX_#`D+X9G(271*^tGZNb4hA{67ezikwG$etQbadi1Hb#e8gYehAUm3
zwv4i3v=z^-cwxmDE5=%}&WiO`jI&}q-4+ukSTWs-8CFcRVv>qBS;d(`GL<-uqeu#x
zNpqI+F<S8(xA<%;=2$V;ig`3;49w?16(YX{RxG5xh$s~nQ35WpVyP9&tp9t$yWENu
zjK7k&N|m+RiZzO_wZfQ7H(0UJioI6svtkodcPpRYt=O#iAFRn1ntxicm1G-nJ8=hb
zCsAs(%c{TdN{IaSs0#0A>OJBCD-M!KLk_X>hpjkb#ZfDcS#i#a^GrQ%#c7fgM2U9N
zic^ZqJ|)T-E6!5+i)j4I{(|zkZpB3_F44S9ylTZ25+nOH<tdi{H>|ix^OhBNlz!U^
z<6tCZ{cXiv>c;A?`&K-7ujl`<;-M9f=<rx(aw}X`{7dtR6;G`&3#Vx(T8TERzRvS0
zmtRWd9TZLK-j185pXjl|YlY96^iOJ|4go8IR)nkwTM@G&Zbih3s1+Ks7~@}RZd{KT
zSrSZo_FlVWAAd<PwGAKG@QVDk6>muXBfeGh`D^(Xm<`EnfDOrQ`Wl{8#1uBjA~7*j
z+VE#_lMpc{%j9oE8XL;lP~N5=gVNgYkqzm{jq0Vh;R_qeQpsRLMjJBOklBVTHWaj>
z5cRA!<g_7|4cTaBCrY#&wxpv^ZYp_|o`>XPThdn~^3lw1LjfD!-8Yi~P}qhdOe#tI
z#D=0IpAsehXEuHQm;JPu4WHXkoO%hBDzAnxK6_D$N@=B+A(8c~@+Uh9V(jJ>C{`m@
zRGyVcD%<q8lvg3IYQvW##>6YxtJ9PqwQQ(u!!bLK+wqkRb!^CQM*%y&wxO;KXKXlY
zLp>Yn+py7wO*S;Jp`i`4qzN`OvY|2Kw6x(H5{cY`<Xan>DCIjFnv#F7lx8+GS6uH3
z#ic&-Yelm)v5gHs+R)a9pKNGn!yp?5Q*Te~ZbJtfezxHknq7z;iJgd2pU$?V>xiyY
zekFEOsZx3m8+zK%i%LIYZ(<+i(^p04Ph|jcph`9Nf*~}=+c4CIVKxk>Ihr_vIFcy!
z8Kt6)p)!^@PNhn;2{uf$VG@;T#L2`d%4e#IFrCT_;!Kq)5oX&khvqsP<|=(2iFEIL
zr7W;vq3jfWOpB;2wqc14OKtk|7x}HUVHx>y;tHY!H&R#8Tuod<TuYQ`ZM_W}7|?jy
zEBoW`Hf*+GyA3;R_(OIUrf!uzn#9;)<<KK_lm6L8QTR?9cG+->rs%tE*ki+9wQt^B
zr2qMMA5-@e4-gL$4-pR&CGQcEqcYBIIBvrU2`ke+MY);~ZoGv<JWtz_j(UIDaLxv^
z_|WaV4VP`WV#5U+E>bb7eTiIZd)0<(HvDVD6C18md`!GSyh*%e!)=l~GKbi3pZsqd
z?vludgQWrw$b~#4`NsxB7v&KZ`7Vrcvs#p=RE(M!)4NsndK;eGV6(x_REG_Il2mWs
zI&E-~yScF>f`_J;=p!1Jx&a%4HiW2ziJA=&k|<H~8rv&IGj2md>2itsg8TzJKD6Vd
z(qEChw&9Hp|Jm@CW(vDLfy>WClFSa+k(}Ik;3D-&seDq|ky>$M@ktt*neDs_ME;Q-
z>6A};J2H@GR7xfi<6~-B?8r(pn@Y`YM-Dr3+L6nS+;-$udLBDICO4Y=uI>3K%5Bwx
zb`-Lsh8;ESC~QX&J4)M8hN+(rOGpjv_>8=$9mPqC5kDtN%#yqHu8<;1QYl50bvW{u
zJ<-3gqk<h3?I>$UIVKsEDR2MZ-Jwc$RA*9UqU5SVQkD26v6{4n4_+lzMouj|YTMDq
zjvr<Ir^7dPd`nVCjshg&S(l`q9rZ~X*wK)rkv-{+XN{Go+zD?&-qeoo?f6dV_qLgu
zDc+n!N|z?IkoqgVr5&xvTN8~2wk02K#|S%qvZI|H?d|AbN3C?GVRrn?R0%c2j$g<-
z+R@35&USR6IlzvtcKk}-huF=Io+RCgJ&4)({ia@a^rk6ePoBid%ph&=Yezqd{fVMT
z>OjQ@*)dp#+(?u05=%)P$|R}0v15*;IoggfB%|z*xyvLse^i8V(o3BB##5O<oM^`+
zJ0{yP#f}YjY_wx4_1VN}L@8^!9W%&h+A+(n|0`4e8~7U)A+n+8*fH0Rd3MaVW0@Vx
znY2JUL~e4DFC;D^O7<lrlDbrllNENXv}3Iu>+D#?jFP%qm9<9sOIb$glDeL5qHJR7
zRy($l{7&3V{KJkdcKm5@R$KhH+p)urLlk!srHy+@cG<Dpjy?b1e;>{Lb{tUkk<t&U
z(hsW$N9;KIUd9u4oRnw|>~Y|f9jER1&4JktoU!Aq9sk+!){ejIIA@2)4zC^O?YO|~
zE;}x&n3vR6yG-SZ9artRX2*3q{;}gB#T$0qvEy&@n|9o?<2JcW>C#wf+FhFWiT6~J
z=nvlGkL-9XrX5y0{-yqu_~bnw^LyMzE<qf2*x%Eg<Z}3sB)9UBf#<WsZ%5dUh#di?
z2T6=!8IqaDrC%FHDQfQ}#mM8tgdNZ9cuxMxj@KkFWd65fQEt6Z<C5ph6w@0j-T7R=
z<Ule93OG>Eq0fGBAh`o6$c^1Ur30yG8kG^B)DC<=<wIf`2huw55qU-jGLfVsrYB|~
z${{|p16dr%=|C<jSslnuA~Ca(^!dw_gQWEqy~4R2$S*sQ^2tLYe{#%Al8>0*Kz=Z;
z5P1;?K5?KhxzU7A9r(<FSyYM=KX;(GL%+-^=D_d<`gKhS2TD3H%7M`ilyac71C1T{
z#(^^QuR@e6eL+&zfpSVI??43yD$=Y(tnARIBXO3Wkg5)R=|DB*Ux%c+12r6|=|C--
zUlD67A0xZq*ACRBSdZAyf%?j)0g1eHu@Q-JKm1z<nmEu-`F!U<YsH&7@Vx`gXf}7C
zrP5oF{6LgjQmsggFRr#xK0i9pR`H)mWHmy22Rb<LGtDjzbamht<<rrDPKtLXkqe(+
z9q8u3KnDgn(4AsmVh;y;I?&63-ZcBD-jf?p#w#U-NKf{2puYnH=p*0V%P=mfhX*?_
zl%n_yA(33eWV1Rj!lA#ocqB#XOyNdA@f_p$-`$n54vcePJl!S`rw}I+Cpj>gL}pi+
zG^RQ*jplR*W|By>86>iU7~{=2Kb+&hTnCmqu#Bnmh>IMU@4y0bahBgg2M((>u8SR5
z;z&B3FhVVNV3h-_>A!-wQaP-lxz&Mf4y+|#M_li~1_w5h|3TbD{GBMZ-Rw}SO{n}y
zG*&2WS3bKO*g?M2p|5k0`>}(3dWTD`_Byan29guao!IZd0SBr$QPqiq4jgjeoCD{j
zMGhQc_T$8ve9`n#2ac)ut@sDw6AqlDa*8|SY2q1&eljV$<XM`35#{XV0zI!eaNU86
z<d^6vwYp4l#eu6N#<k21`rIVGo4al~aGS~<2mW^8t^@aEesdzVQ!n(s18xUA4m@z+
z9|s;X+P@Awao~}P{8$Bi>VVk+yV5NVSeYbop7hl}_-<p8^q9ke#bZrQ=}8CVZHn>@
zarq4yZSp$cbKs=|uN?3@5O5%&q6JAb2SN^n$s-INRa;+LZH%{=^bZ}xl%k)JKPSFW
z^^rQfcHoTza6)?iKkCWYWXbZ@0h3do{Dq6B5l47(Sq0?OuSSKZq;t*OrVpI>(20UH
z(>RgViR@0~p!pFovlHo@NKc-@sW0iwNWO2YzOXZs6K&M{)3P{`Rh65KK2my4l8>Fp
z>qIW{+)j*`sE@robdHZV$=5$+<zzml3d!$80mU~CF%@#6uoFd`_{52FPL!7<rWSXi
zgcF}RQIuveCq5^ULXFOpW|nlKloMZ2FYVM<Y|5_;O(|4@i%(fqXUQmL1t%)gL3l-y
zO2o=XlbtW2J4o;^ndK{DH7BZ*)F9R*icc+)+C*cx)^Xx%m0H({dJJ2i*uaT~B#nqo
zh>eNg5WjWm^P7||zwexAO7VN5p|^122Pc*~vCN5<GAf+t;Ka{Pv}TDvI?<M-jjGR2
zibz%4k+&yGeCdZ@oapGp94F>d?Bv8)C&oF^nWkjv;zU>SU!CYi(w#WSi5^b$bfOo{
ze#G9yK19je*O_z&sXvtg#DOYRZix(bVu%w%sf;8JBMw(SBUFS@R7MlWs8op{tr+iw
z{Ig7oo8ZJmr~c?lZi-HFVzLuc*l*LEnC`?>a`ErZWehWD&U~+9XOaI#oUQbEENec|
z*tk;A0w)$yS>#Om1mt3xOO(0Xi4{(4peX(;Nme_tip03RBl;RA)>2ugJlB()V{<k-
zu}SGt^dC-aaiW<E&0YA@iLFd>N&h&p-HBUH+;(Dz6FZ&QC(}De(JrDCw42U*h<k}^
z<!Qwted;(s^Ca;gTYZRl*oh+~(ql)RI7WV)c!Fr`M5mlMP4kQs=NRNH@h{@L9y{;E
z1t%^#af!N=d)0}{<X4EszAXARC$3YuLA*(nlNNEf<HX-I9ZuXOG2-7NzfY714@mxT
z;vvZ+r9XD!U&Ws|@l<iM5GSlOZBE#gE~D$+vj!(cqd2z{9w)p`_$W4Z>D}meBH%<&
z_RVCbC_6;NkP~62ezGdRh!c-*>gTJP6EP8;NHBX%7oIusT;?vudEvxMC$hMZ)rD71
zymlgu3u&43#tFEP+=c&~c<Y48g?~6slDYIZjmU$%cYT<`g;Xx2b|ED*N=>BZatic;
z3m+;)o<11QTt0FkoeP<%rzd7qJ{ep|Z!5~A6l3{><jv+nb{C4eP|SrKF649}zY7KE
zmdk}aE__U$+XW+w)IoCPbs?WipPZ#WQo6i*yr2t(T=<mEg^5L6_=GJoo{z|?6@z@{
z`ro4#iSW4#C0!`xLUHDj_$6FPvyDWS4k=At@|JNWy%)MHm2xhWcgb~`zSXJ{E4on0
zh04q>{#95*qfiO;r3=+usLoU|Ymi8zj5BQsQp<(fE_}sMbzG=V@-?w8u^!P_e$#-w
zAyM)+a=~~4`;9B<?D1O{nz-~g!$|6PE;M!FdpgVAAvuo~v4wcL5O5>tMoSl3xv<2I
zrEau#p^ZdyBZC`1GK(=D+Pd(Q3+-HJ@4_4x=DN^9deVhqE(~|!7kYMcp}Pwm$vY9H
zpw2FIA@AzKuO!lZ(PdFt51PGQ=tI(z*vs|5GxNSw1`+!a`x6JaFp$L9l?Ia!Ar2)<
ze5v*b@@d48E{t+vv`U@e!WhNJl8hscC(5$+i6oPVlZjJYm`Wn!O>VKugeIj-cVPxa
z;WJ5Qx$v7(X1kJ}GtP5iz6*c3aL$DVE-aL}*M+SvEOKEnoi|DUldN=Ml?zMBml2mU
zh@6J4peggoY7!}NJ;@s4TH-oa(*3{<%4Z{q)LH&+^ScY1Y5qanLNxktn+w}%9w6=@
z?k4Ue?o#`Ol)Hz@UgAC%_LGP%p$@um$c4i$9C6{4(vOmyaN(E>$JGuf{>H?3lBx1!
z?X>bgLvmK__2*r<;DTR<EA@*m+;QP=7cRMQnaUO74HvGG$i?P0lIv<L-K2SoDCOQJ
zk&P()t_x3GcuM7-3-?`kAXB0X4_)|I`9E^uF}d+pAIT-e$S&OMg3Iu9!AfG2xkyf{
z$?Zhx8ChrLRO7)-(c^-bM83BoaeU;`CqWlNE|}a%=GLc|unP$$36HoCCD&Ytxe!;n
zu}{h5{LF>tF1(=r+J!eHFNv>+vPRVS$Ju{0CFWZ-X@JFvlA0trF@+l`m7a=3_N)(-
z@}V1P+(=9FBVsyt($iQOauO<|Tc44-yU~NGnTVO)$l^v;H?p~r-HoDd6muhoTR+B0
zmLhKClzEA-xya>4Za4C{@v$3u-N?`E#%sRBGat=2<4gre3KFZ!zcbtrEKK|?uD^Hd
z6E{9(>N<J;>xL2Gb2o~+QQM8Lm{h`z3U2+<xTG7U+>qBmm8M?C4f!LX1o^^^vTl^4
zC}w%L{`x5)l0~p0^-6A3cB2Y;bvJ6bQPqtv-N=<oUu;~By1dzGAzND0japPBRX#>0
z4!y>k>PYn{{_Ms&x%2Nv6F0tdqn;b}-Du!OLpQ#mgB03`q_I2ci`eguCf~Y~W}c>Q
zd@ps7_cpuH%#G%5w311lxmw7kk;$Lj$S8MOWS)@`*hVIQH`+4EXrq)Rsm86CcGTOu
z(ZP)t)lCvyQvb+c`h|K&H#)h|nY^nTzq-+d{M}iQ1nEY_h$eY^x-r>}DHMAVd%Mwx
zq^}$O-01Jd05`@^8R*6!H%5^Uc4G+1NH>O(3@1v=VI=Z+afDKO^Y6DtHAYjEkvZ0l
zac+#KIgvO)`5P1CB<Xx!Ax@<}lQ>QJOedM)PFj;7<<62Jq*7<QF^7CEah}rWyRm?L
zp;8u+EOsZYu~|m*HgP#|1#zVttK3-a#u_&+Qduj5#Es+R>)qHua*()D_Cz=SbYl}u
zsoU=)o89<>#2B|*RqA#(wvkJ>i1QBeoy1*k>?Yac)^7;xb7L=wL=ba7lY|_gC_Q|L
ziUc|A#u3Gjk{nYbQ&La3ang-bZk%@Gj2q|Z@NS%(rTG_8s&t-2a$QhcMEE5)E-U?t
z8&}=9=Eij@x0HUvjho~~yCjzo*`{~g_}h)UoS;M$<(?b&>G{Boe@Gs>VIz6u#$z}B
zB{vf#%M&-ADz0~?;#Sp0yBiKSoNl<>@TpX{8(wylhswM5N(8_1F~pD?nLIoMxDjDe
z)QwbBq;$=Vn9P~f6U6_B&xp^7FNiPQct!G>_=b3i>v(0#ed~tFgJd4SlXR6avVkc%
zc?x1m;(T6!NV%y!_<(izkeEi*C#?q`DV~lby$2bTlF^fNYHI9FSv|<+f!~XO7uh|?
z;lU*jE_;yEgIpf;^q`jqxjo3^K~ojsV-L!CP@ZO95Au1C--7})iz%Oi9uy)kOe{kD
zg!riky=C$zm;c=qRYY3!Ig^TeP=Z9<N_tRA@zNfYQTz)J%90!Z-;ul(JgDYDbw;a5
ztmHvuk}5>;sVceTE)Y%Qvt>0rsIO9MlGGyB_TVd}*YV(M^14c?C%wU~)__VwVj~Y4
zd+-f;6XLfX{biw2uG}K{PPS|*eRmf8-h*ZyG^bBH58BIHfXILFpe0EwVjE&>kN!qP
z$@nA9wnQ<1BH22})WL(F$vb=Si%RY2(f`>b-P=hiQim>zclF>`@@`7$?m-XoKUv}4
z9`x~Gr3b4#=<7j04<;zj{v;zk7@(Aa9t=`^Fv$=PhLQ|Z`f!pFo}{&rqiBvMj!`~i
zJs3wmUMbSLi5^U%IoX4mBvVxCR1c;pKHY;E<V#rpSswgGb2f3g2XmC?To2}XFyE8(
z59kHd7kaSBgT>@ai1IczW4Yr}n#+jtf~gfG##77H<iC5cnPiOzYe{75tn*+!`3B-f
zrEl`!U%6T_j?^A(^I$uZws`O-$yVhl>sWSpu#@Hq4|Xa2kPIsFJ;c2p?DJs12M0X*
zyO<6V<@4n`59=>$+J6}GllmO?;E0NFl;oHP$CV;S=aU|sqIsHlj(Em{vm}2J8&%fF
zq5RI%yx_q_663vFS3I~X{p`hDFRpoT-GfiO_|%IV9^CZ6<V7;CUXxqQ@{o9&c!&5m
z@vaB=NbVEG|A7bpkZ0r`_sE0C(uW>Aq4=Emlo<BF%sIhAw5qwnMq>BC;epcwmj`YS
z0xH!bdy3*-64`6~N-?IFpa&tPNNR+|N!_9(8Zjo5v(ghDJR>&_A1{>t(t}szuZeGz
z{+|bL$&E7si468tN-vU=q#%l(7-UN2MQSfTP|8OnA9|67BrS0{H<S3M^CCT!3|?d;
z$>c?DFY<Vi*$d-C9$BboC1#VO07(vFPNKxgMI!zmE2W4RdCBt;^DDi87X`@+DWx!p
zak!BPpLtP~N;fZxdGWay)xD_UMR6}mcu`H|D(S@+UX=Bs6qV9SFXP1-j)ZblDta+o
zE&)_(1rnpIN?uf^S;dR0Byy<z(hK?3kpD)pi)1gWsq%L4q852=FTNtF<3(eY`ZY;i
zVm)GgFB*_EBsL-%MSny7trtza_>R1V7e9E>l>B>QGh%b1kxTlyCC#>8v?6KkMH>>i
zfAynRzhfpuZkLJYPhPZRQhTB(#$fx|i(iz|(Th&xorztP-j(E6qH)FA-HRSx^rX^@
zIMj>YBz=f|iT#LDR)3NKUJUeN5cyzfDbH7j&=f8wqQl6CdohA!q!$xNMiC{>Xp%8r
zj3pT-n?}Be>(!TSOH1X|xD%;Q@?x?VQ^+OkOfRN-^*1w5^J2PJU&JVU22<ayV4Ows
zH!o(>LCTU3w9WHkz88NmNt6Yu&I^^Y$cx2ZETOs7i<KnHh|87F3KF?=T}86mi#1-X
zCEu)k)_JjB@eN*VB;TZz-@Qr4bg6?JWwucN(~GTMY$Lzv#Vs$kd$GfdonGvsc-f2H
zB*(ls?!_K*iLjSspBMW{4k-N~$ssQelN?d{QE$@K%?T=Jm3~q>iu^S3jM8O<{6&6_
zcwXrjNG=jDNzHi+`ie@uN^*^Oop?ib0gjN{Ufl7*PVsM|nJ8_!>%~3t`@{!I|Hq4m
z<d2AtiT@Ix5T6nyf-$FAXj+Ljq7>~QaS~lbH_=1%5+#DqoAmyHpcf%84*GD&hp-nB
z*#Uj{#fPXDnisiz$nDdQXfZjo`2Zi{(y<Kk%!@ZF+H;Z@#FxZZUc6SR#_ja~Xuc(y
zd`ag>$r(H|F@+B)eMm)~hA8ExCi%dJ4-K6wG18KM<U=}=^u&xlWFRs2&`jhK;o(yK
zfS$#NtV+p7lHG?KO35khEu`PNkzXDkiu+K4Ngw-=*N1%M`H6*z1&9TGC`9t^9#IjR
zpZM@8iA4L%hoa=gl=8WBBhPh9QmO1i6(35e)Y2qneE32sWl72r%llA)q$05r@!geX
zRUevB`O=4KB-MSW<wI@q8a~t{F)j+EZeRJ(h)NxzC|~<fm%JXaKCuC@AyLlKjm9>n
z`3><~ViV$bJ~SnfXy5yiX3OS2wD92v>g|XviLHpOiQ?bJhabt?5`QATYh8Pq9f)$f
zucHs0e3<OR6dyXvaH2lWhps;S>cc>q-H5%362Ci14`NSZFCUE6Uy|B~N?#xPk%-ct
zWB^faV-E6RF!>PTNa9f9Fye3@MvzF}T%}E;6dz48#)q*a#wquBl{$fBq7RdlB5RDN
z`Y_Fhl|HQUVY&}9d|1lVnZ(7!S<3%6A7+!!QOaB&=8?}=$^su2D!#~<^q#;aN-<un
zx6Fs-N?GB9@xGnaKCJO!7xlG1tRwluhxN+ycONz=zL8`TaaAgPhuZ9ebcGQ4ZIN<)
z*y_VJ<-gsR^p<`}-QmMd>c$q|O}<BY?j_mh!+xb4Alb`>^oM=O<VR*dj`(oYhhsh*
z_aP(`nhz&@IO)R!AO7*-ln<wUxT7MRAvy2ES*83%a*k-sS{Hn{=))x+E>pZpyh4=s
zyQbuSC$G`GPP{?9>BB7&Y1eHMxqSGW<Sy|Z@jg*}WWm@&#mzoEQv9(G|N8Xn>nB7Z
zPi1CUtp6KAa#?(^`e5_HPJbWKq4GL?aQXC;K>4|S@Q{0na*8OTpPm69f->>4Are#m
zAtD%&`PQ#b`%xb>A7V1?`|wspPLRCx;Tg$u;tS$<K3sT3F4<rE@J8|fNMz%h7&#dc
zMDa}SM+(JLlB6Q0CVoJaX)_H;TB79o$d7c2rzgok%;?u|zsT8d7C*B3(ZrAM{K&?n
zFa4<IM|MAQ_>t3(Tz-`HqYRUB`;p&|0_1u8_?SdW$?MmTR{8uep2!sRqmUn;Gqo_W
zi1L(q=@Z32CHc&cq9nzXZaix!PO}8Dq#vbJs&Vl8f@VcO%94~*spUy3`0-;3ed|<G
zdS#L-#HxN&<dcHxG#e6Y5Ni@8V=X^w`|%acI(~djA{Tv<R9E@bBdPC41Cn>|5NPB_
zV?!Z+OO%XqoNemI_kPUqV<yFBe*EG`M?aeT(Sphk#Gm|VNz%%X)+BADMI;hO?%}j0
zH~#b?N;{hEi5>j-+5f+H_jRH;#E+qVbSCfOM^}<xiG7IOh~53@K_W4GlJp|>_9xvZ
z>8n!vk@WXt0Leh55AtI$d6p?jbJ{SP<A}rk7(p_UIEpx$IEE<YjwO*x;PE6Als?gq
zN#v82GR2Rn<kOTgouu(#(=3wRe(dq%H$P_6oa4s^KQ{U?m*zY_=KHb0kA;4$q_T*(
zm}m^bCFDzq%ZO6L<s>WoNh=dXS>?xSmAZyxEpZ)jJy9OqY$DlClw802v03py{Me%S
zpMGp5-$pbBy!h{+xzmqb%2RGY?Il0%#|c07k?$uSARZ(hB1(kAGXIkwB_30{^!7=`
zFOZz_<Fr!Fkerpho8+9*&-;_k<S$aWM7&JALcB`6MwHU8lgQ}3<;QJ5mOsae=eXm?
z-+s)CVSWsE{kZ4H;t-aEaNmyyGKU0EJb-`vc<9F)KmKEcM}9a+9uxm1J|RjePyH|}
zZXvPyVN;5o#P}1L(+`&)ZomF?*yD#rBHT;j^TSUPAO?vcVwe~qMu{?MOU4+vkT^+#
z_>B0R_=5P7_{xvhB(i-a%UeH80sXCdMFU6{00PJx&}XpZ0i*~ZH+jkcQjuf|AawvA
z1dxuV@mAgs14u(NEm2NHKO!+kvV=-cGXpUrQC59q4j@ZFfBU64WDOu&K!2i?J%F5a
z$U#hc_{$_oEx+58hq`3>IFR%<l6+M1E4@Gf1<4B$3lobFKOsuqPf0!_%5n%%ijhl)
zln9_?03QaCCWul2ln&q(lgb3}MF4fl#lI{`HDb8{$}7D>02RqA5i1j`5UUcuBuWHX
zep8)XHbISmJ`!pMP>V!(ZIZ77s6+C#(xry=RD}8gGzg$!0F44@9Kf^yrU&qi^i=>|
z=+h*C?*eEWz)t}*rP7M{eE`i!niE?F&?0~z$S<c$_U>t{46W7_rM7KIehefnni8d5
z0KZUduY5X?{7f`X6gvjciDqZzBlkeM2JkD*ZUOXFdUui@0rVv4rS#qb^a((|u`VUb
z+kN{5&_93yOdTG;2$F#T3<_W{`H%pHsk}pFyCl;;NR*$OSR#xJU~~Xu=rD@7Y`SS|
z0OJCfN^?AMVgQo@m_WXk4^1S<WSUa~co(hPFq3??Ov26xU}gaR00IHb3gEW@_6D#o
zfY|}e31DLYn*x~2?DGRyKr&CZOWLF*b_)Yo6u@HH^?2>Mgbpi+5`1X@vL=670L!Tu
z|4CmNz^VXN2e5|X`T*7jAlq)844AiXucS-XojoR-Qf_2zkbagiCZGMH^KRni0RAA^
zLfjs}pCns}+XDKsIw@Uls_dX5d}jc=0+6$1*$~DS*%N^5K2p8?0UQvw0IUHVr2o+X
zjs<WifWtK97<5F%kvac(04D;t8o)J*Cj&Siz=Z%#1#p_m8QHs)|Ji_kyp#Imm}EK^
zz!UWjrHcVvQ9hSQE)(Bvm+Lg|1#mxr8v)!5;8p;)8SQT--H{q{3rd#X<>n7X<A&q|
znfz%!AwCS?G0CF<da!3?6@k>`Uzsj4CY^6Q<uqkh+tEgU57AC^5Tz%b0hn`|TmiVL
zq~!`3(Y*oql#j6+1_Ou$5Dg%t^f2o$&hpbJJ_{hGQsX2E;-=}Q=K;J3pu}yxhA+AE
z%6pZCzox?*nSKL!tMaA@%90~}B1%RCF*#90<76OZ5UGOt(LsKxNj?Z7_c}dh+8{m(
zqLWHZN79^_K8OrKWDFux5SfFh6h!49vILPeh@wFh3nE((*@MUzME)RhFiTz)Cub13
zqzIaMh#wPWhB4lvU`#bqfdWAk45CmFDM#t`DXb!VN>U_<Pn05mz7U7cXiB?2SNazu
z#e*n8Qc?~9L6lahWr9hwpHX62>g7~w`5-EgS5%6)RSBYM5RIvPNvs{jS3y)$KGlP$
zL0*$sOX<c`P={v2AigH48$`Vz>XRFrqXD_G7PJw$w9Cl*4b5+fO@jDNr8W)X`yiUp
z46+}jyIKVCLl7;4Xca_z<=Hxj9~EyC#6^FylRi^hDnAk15#^;iQfLSApNV4rLefz=
zbml1P5=7S^ehs3VZ1fO5521SyJ%TtK#E~F+2GJ{sNkL2wqIVE|f*2meh#>j~(JzQW
zK@1Ki-I<j5{eu|5-~)+r_9EgCav^d_DAUx?Acj$q4?&7JGKf(@ObB9P5TmKftn$HN
z(-`uxL5w3YI(9s{oH5G(>6X_pJ*sYURyR!vVrmepgIE*9v>>Jju_%be(x`>WW&|-S
zh~I*kDILhYL!JoCmNEbK?OdhIVN97k=aI}OE+8%>4q-;ARg?6lB|$7@_GLjVXR1u#
z(h3>#D}q=VOj_u*N|CietP5ga5c`8zAH;?r{s>|VGj0sx_aII(_$K<xsg&F*+$`gY
zM;xi}pF!*hVkiB#2C*%O?b6#UQSLu<me>9S^_$Xr=^$^h+a1Ina;cK6T9hQC)dzz5
z>ga<(NE76sBh5b~J8w>t{Eh~3EC^>1t{{#FaUzJTL0prH1#v2f3o^iD5b|vBbP#74
z{A>{CgZgRVUo>U2o@0C|Ldun%l%z{R{Txyrm&->CF9&f&)k+@H$=$r`LEH`E9>p8P
zn?c+P;&u>sg8BhBzr6W}F@+fO$^9T61Yr%r#-jhB+rL3P4B`<ZJf^=?z<4G5lOUc3
zVU{GO%F#_~Wt=3)`wi?tNW~m7w)tVx^?awtmVU|HL3ku`2+2e62H^|hMG!B8@COkH
z;!RmoB8XrRA(<-W^gfvMb%1aX5tbtHqd{mgZK|?Fk#7*hWiCytuf&r&Jfr7xm3K!*
z{Yd>Ph}ROINzw#U2>&VmmMxV&Nft_);iZ8oLP!}x_7HM}kSc`KOv)U>2O)eILWU4B
zhV%`TCWMbdNEbp{I!Fa%2Q==crl%rYBFmF9sb?lCa&9I(OGs~E){s7)^(KV$^DFt~
z3?Wwt`NRw%H~qyeZwPtFWf9BAA^kf+G7>8Awa*1YD9EHwLnuU2gjkp;EtLwall7l8
zjbZ;;NdFvaQI;qU#X~3|F+=DULdg(Hh457fbwVf|LYWZChfpDeFG48G2<3?K8B@9W
z+%28{(M;LDDuz%gglZvF59zy`d{Xvu3RC3}y2$$<=wCI2FG-C0d|B93BZR#2QrzUG
zn(T*KOs!2cM&s8Z)D59U2tR~SFNFHi+aWXw;Z1T=gAio7rkoH;Z#N8~5py*T;Tsas
zAAF(jCXN)Q_JvK~$;QfVYRXc+myS(qYDTx_vITidN)93|LueI3n-G2sp>+t>9Hxdj
zOp~gZ>dIqKd3-6ufS*b2Ag#!0`YD8VjL@EVGrwNe&msI0LPsi{rQvcl-Nn=?gosH`
zm7iSyb`9x!gt7Lxdk8&37!|_k5PF8tD}*5-3=N@o2z^56AHskTX67;Vm6%yfJ+qo*
z_vsf(x+8SCm`Oe{Jdj;ID1@-QDlnw)(XHiFB)e%?2*X1d5yHq2ZWT2JQ|M<4tK^jF
znW?KBK62>WYfK1ZL-;L(*&&PzVSETvLzu?#yfvR`f((YNrimd;3PCz^atKq{E@_3B
zGQ3l!H7%%t=^@OJO0sBam;9s-@|(r37BVM<xgpF8VSWe;$C)mq)hEVXJxxW@nB+Ef
zmGq_sqD!m!!P!N!yN%MnsJk?TWg(P{pnL?&S?=u+?vShqVPy!bLRcNbnh^dBVJr2u
z#C1etB3)0ufw(b*O(ee)HxvILN{hBgKX6hNzAc2ml)jy0M+iGfb}4;#2z$u)68D9$
zpX31XcnAkWI26KRj+vtrkB}QzWXGt;ZZ5^0kS!R(DW;yGe)>Jnv+sF|^EsO5i5G|$
zL%0;e<q)pWyg|H5ycWWBl6Q~BZqk%Ew`9KJ*DL-G;cf`A5aLX_7lJDUw~X5m9#Hv5
zc0C@IB-g_b9#MR(;`~eUB!s6Sm<^F=m)$1>TS$M(X8a_(BLpW?<s@8=Wpc~fV`Pyt
ze-h)|!xw^|W`GzZhKOOJgo?;sK&}yGn2DH>`HK5;t}vcae;&e%5MHWWAB6RZ{Z$CB
zsl1WNKZLg`H3d^mVI(5~F*)&F52OquRXFL<VQNJ_3?oe#X~X)pLuR6okHSc&c=|9h
zkY`j%rZ9|ezh<G5Rq5Hn$WER^DLF}`0=dJ;6UN73<PBq27`wyB7e@XtdWO*}i~?a4
z4CCuC>V{D$jKX1*52HdDMZ)+bjM8D0kvI(XIZ^uIGm@gjVnpfx;$f6vyQB#vDN50$
zRO%ODeK3?$dRaxpS@eowR0^Y37`4Nw97dHezGSFj>Mzw*Rh(*JR1c$u$}V|psw5+n
z;8#?H)M24Q>V;9C;?H3;2%}*bt-@#>Mx!tqv!Lco{U(eiB;OJxxIO~IXv#R>htZ6>
zh!RtNLRxSu3;!XEmMWK#B-z`9@naZm!}y62I?$nA80|@<CnbVWiXK7!1sq04)~8b#
zzlPC`Zk@yE5=K`>(Cfp}#aXg<XX!$EFjYwJF#3eCDvZ@(^bMn57!$*o6h?oB8WzTI
zk^#hlVGIgma2P{q4ka2jF>r)ZMl!yLqo|AyV@w!h!x$IFc;#bMOmKoy<e)P-j45Hv
z4`Tt_H8qUcBvRFBVN4HW2AyYyF)NJU$R&cbPRcUsFei+;s`Pov!AM;g#u7#ob5R(J
znQG)+O1><N<s>V@SV<z~zU#m>VXURNgSak?^<iuv7oUwJzY{mT+sesIo2mQ}#+ESt
z3}b5;+rrq+8cNYdaHHmeV(z5Bq3j7`Zy4S%d|~VhV}BS|!njI@1H@Bd91P<S8+Dk<
zu`rH=ag^L>no-1YDks7?Nn*r59mbh3&Qdui70YG%>%E$v592}@7sI#|#^v{N8TB;6
zUJK)T7!ShuhYmN0cfz<C#w~_2+-_4B{&yI66_>uf7sh>MN?7?lr1^ySD2&G>qW`P5
z>C-UG6fI%6NUUMlNbF%a!f+~2qv&^I!ySf4C5h+{BM`<15quayFpQAQ<Y7E#97zp_
z5eXw2h89LbZ7k7a<Z<O@bcNuHFkXg{BBIaCuflju2U7%ZNQ|2Nr}n<L3?j`J=VTFp
zxr8Stky27BB~=8e$&CnUB1juSkqADC;G+oAMUX#&0uiK-AVWkySmcNxV+5HZ$jV%q
zBl=-Tbipj-5?pvT6+b(3NzpkY$VE{caz~Jd{No7nMvzbWh?`LjLHQM=PoaoDQA<)`
znxgAw1fMZiSz^%$ibe3bs*E@nkDv_wOGHpoMJN?PX>y5R#QZ`fNm!#H6(Xn@!SpC*
zMD?asVvw#;RF0rZ1XUyWlBK+Qud&t0t4B~Hf|?Q3ilBA`7bCbt{i_Imj^G#aIuU#w
zL0$5CQu7F!Mo>S322>hG@C}LFQEVg|BD<+EP2)QB+X$M_G|mvdkDyruKSj`vV)F=o
zBxxZnB54`XujX1u(2B$e(uQ2xWteScZ18+Tl=cyHU`FBnu9|+4x0&rXb&Q}>1S29C
z89`^2`YTBnVppP6xLX9>Bj}-g21L-4yjKLhBk03!>_?@q+K#fB`csi@A%zYk9~8mh
z2!^np!>9~>ul~cS7<C>M!RQE%QyCM%*a$X7@H@?M5zL5SW(4CSm_TJBaashEBA84*
zB?7toF*TyUEnkTI<nG6G)=erS<6%|=zsVVU1S=w#9l@Lk7Dlirg1O8-KZ14KzvgiW
zNtOjv<OEgp#q?P!14dq_KyF;9E~6q}<P?1+^)(T!jbIh|YNGKi!gZ0Puf}hPU_H5U
zZ$z%0H`0`=;LY^k8^OK^{)k{p1b;GVdjvZo*h;?by}Ucwy4}pRi~L0geb3rM#n=kc
zko`<LOz}Vj2WcK6O1Fr={EpB(N<2oC>?a~P8NsOtPDgMyg1;C+Zo;1-G0xJ@MR1<x
z1){OvO-QZ(>t8O!E=O=B0zZ?aCRZc)JA%73uSIa3<VFNHBe+F=JAykA$ot0Sn%DTt
zt>lt|?x_gg2<}JlKzw8X%OoGc6DB>3;1Lz^e=NK0c>T`U(+JEIo#LY+*r-?|N%x}d
zG#x}Emt=HB;HJNaXxz2-sR;6fJs^hwnxP0@kc1<ML=Yv9MG%ibQ~t(=NJQ`~g69$a
z&W2P{esZtdxUzexJSFmLIRw!BPiAaRS#KjSMUjkLa;1&}iYF&YK};D%DiY(~j(C1R
z^Fv}9Vp_?|`5|2t>7&RHMaC#<MNvD7Oi^TxqF5B4(=$sHA4iclimXv&qmn&}TqHS&
zIf+t=Tq@=!&qFj?BziuYpG1*AiULs-RQ`oY3W=_s{S}e2$UlwZGo}_L8qa?Z3@{a^
zSuTq5QIsGr8AYimN|S#<loHF3$UT#?BpRPJh+cta6=KCGDv?wsN~#oHHHt53RwLGk
zqB_YFz8+kBYDTexPoutyq7IW<M)7qNb)#rPQ+(=?G$7WG>QCQ9Y)G?F6pf?!MtOcK
zy_!~k8K%+d@1kfL#rI5Yu6&wBlfJbrL0VA!L2bKMQM9JghS)BOA62flBtH>lL${Bj
zLli$p@k<n)l~2bgIw>w2>)r993q?_WCFvGL_b7Tq(KCv%%D-1sKX%JL-dibsNcs}{
zMbSTs0Z|N;%D;U(oH&R$m^g$ulsJrNybp5(`AFg@;%MR+qTw@+MT{p-AWkGsB1$h!
zCYeH<8pSjcV>*)5nNj&HhkgPuD~jKum>tEOC~WkZ8^ydR{vn?q#eyi#M{yyFg;6Yu
zVowx%qgWiplBj;Fwu!iuxFL#VQ7k84!R%|ISQ*7CD$-HnzdDK!Il-=_xQ;0LdiJD{
zjZ`+%=l3W!NAU-hEyQfp#qG~1wyM0_qS!72GK!rnR2pSW<GZ5RO&_CZ$+a(v15q4|
zVn6i*j8;wV{6}##ieph6j^aoZqKLEnR=$0ET$OS<iWB4#{3OY#sD8$1c%F&ktn&OT
zigV=eYH~4(Yf)T};!+fsnRJDCmAGtL(pAh2nzy646U9yPTSO`1soeaJ;%*f8mC|~U
zUi3Yh)?Sz_>-nQPUgcc+kX`X8ipM1X5}y#C5~XftA>>w~F*f8+0rn^yQ8=S;Md6Mj
z7DYS?PZVAmD%(x|D10)t@^dGt<<KDSMY&=UGY~~EicnPlLdpVp8^7E^rCWp;jY1=l
zq-R%5i71{$@hXbfQ9P$EZ?AeGB11`pmr?!QR^seSnBGM3UlecYCUtm8ABk`LUoRPl
zF*GD6NueR7hEy6-YjA3CY4||HhZ^>3*ry?lhO`>GYWP*dM;g*;sHmZmhV&XTXegke
zpoWYZGHJ-EA(w{C8nQ5Kb`4ocq~EfU7!$j(m@@|z;kijZ){vJZkA_d4Bpuzx?J(uj
zkYCeh40+hpB#)_py!JsuVGSiTl+;i}oHZ2F@Hz8-s^K#YMakp*H<J`CPuv9M_<Ne4
zb1JUs$FHp=Or<oG)=*YMISpl)Mclq1F+Q^^g_c)(1rnKT`wTMaCtVt<X!u@3GYwTW
ze5s+HhWhlWrlF>WS{kZrs6j;riBw*0iPzTfm4-SRzSff7l_VufsuU!ouJo`BFz!SR
zG&I!EgxMQuXsqEI4d1F<@8(;X*5qY<dJqjw>Aby)=_pryH`mZYLwgM!r1zNAT0<KR
zEj6^#lAa<N<^HIlt%jd8v{SYHRGzW&;h>xb8{b^`S;H?(?M&>bp%aM|E!)&Mj}_iU
z)1L-Pt-5LGu3?Ubxf*(C=&50(hEW=NY3QwCkcPp`-bX_}4gJac66LC405{M;6<-=F
zk2B;E@DL3{DUQ%Ej9oEY#vAus<3K4@H3ryd4P!J+)-XlGSY{coVS=X5JmYA}7M!T!
zPa-k?{wbGNQ#DM}FjK=U4bwIK^K&ya{Q-e7ilmLkOG19rFk3~CXrfE2=V_R)VYAdt
z!vYNpHLTXKM#CZvi#06QutLKU=31&@8Hp_5G3F47U>wR<YWnxeS7}LWo+Yd#t<|tj
z!zN}~uVI6RjjD9x#8Udl$S%&mGfDbw3&}3xpBlDm*rs7S&7B-<@*%t(H0AN7JiIgh
zcd%Qg0y+PuE(0==)3jg10S#s<2Q?fbd92~Eh9erTYPhE1sD@+I&uciY;RN|##FNBR
z8st%0I(hlOreDRJA)X}~S25@4CiR!gr3)G^YPh7~vW6=%y=2p0(&gl~mL)xMb}B>S
zx`rDX?rFHM;U@Fm)^JC|Epq7%*=kbI-z?&;mh@an@=E*%^m#}WpMO;9BPwzZuU~qQ
zOMRY@Jk?+=$zh;$D~U~moy4K^pI0SwYw*a(kLhO%UJX8(mtrUygI_~HL$Vmaq@V^(
zLrex3^M;8Lsf?ENyhg6pWjn?-B$)J{hG!%%HN4XBoLfp-`a&j$w{PdLe_nI<c|$iz
zdN)_RrD9^avYRB2Aw>*1W5^Xl${13`kRgVQOidj_ni$f?@Iee8Qjx1LV;}!0hIBEc
zrzlM`7G}s0HD;1bF=UZvzA<E_LuR5>AR9^c7;=z^zq|lPvdbe&LHXs5Azuvn1=E`H
z#PD$pd1HDH$odVV+yXHajNubzFBC)J7>Y=3`GO|NZtV3^kSKDh|0&(%zs$vA_&kON
zF*J;!cnodj8Ey=fVki+q$rwt-P@10QV<;2D7crELp<L{LGqZ#>dhgwyRe}DZSB{|y
z`ByPijp54}YQ#{JO0^iOlSsvkZdrdcS*;kZ<TTY*y0Hk&JknGrhOa5sjiFu)^~sI7
z$e2}RxHh8LGKN+$G>+k$7`~06Nes<mXdc6NG5y(k(-^*wC9SrV!<@t~oy#O^RHP0q
znEeN$>=82C$T7Ed3~gfQ7(=HReq_>5MDcGM!?`(-uPwKWp*=<EgbcC-D2AV9kjUa6
zqC6fI-dV&vrmivk8bcRu5s6@QSGO3ttC*q~^H|Rqdd1K?hCVS&XKLRV`o%CRhS4$f
zr!pvp!6XA>7$_S>EqNLe!_XLp$1sAa!(#ebffQ$KeVLy}#$YU~lV*xOhHm3ym=MEQ
z@^M7tG+<&3lW0zjVR8&p*bvDjKV$2Z8)KSA2V;JoK|V8vSu!%o#dA&!v&oH98aZyx
zjp?(TBrS+xp$xz0DE=IaVptqQwm7oKu_T72F~nm?Fypcqp2YAphUGD=h+!qgO)CB>
zlGQP+Az4dYM_f;of;PmkQE};t-(%P;V>pH_G2EyAXAE0oI2pq!n%iR78^gXBw$t39
z^6n(r6~k_&?BPBrMeJ9~kr)mrelUhZ<cEnyFCA5>$4HJ7PpB<*I)*bb+=$^O^|LWt
zR{npHoQvUn3>U~R#&Aic8oQyi?h2Kw#B0RsL}PSGRd3NW2FC3e?$8wdZ<4z)+*692
zI6WZ$M=1|uctrk~_^;9>npyF%kQl5n*r*t-wv#)Qk240B;%*X83|<nS()}?6$b-a?
z(syv^Mq-G@^h-re=`q>U)rsOWnVIAIk>$BceG$V;#b3qnI)*ni|05=k<1LAaxg=vU
z62z1CpcFJys?=0*q>e*gUac1~()1zqG{m&TkBI4r>51Z*A&!jXnTVN*SyXCP5?M@}
zBaWPLT#Vxqm0WS;jw6q%iNyJs`nfpr#*r_M{BabBV}Be6;wTtLp*V)dF)WV4aTJN;
z>p1Gt|C2Z>#8EMhPviKEO3^q<k`yC;PAncr36j;T^qo{rDoVvsI*u|FWq_57<BK@T
z(v)-HqPzoBKCT~(jD5TklO%6-lFGy?aa1MwGLC9-eM^ahpq$MLsS!ubIBL<Mc3eMF
zU(aRwDvml-<k%_&$!M$>NBuZD$I&H@225%hN2@p*#?gpoW9bd~Z*LsmNRT+1NI}$_
z5@p(v*{@J(liU)NBAUg~JPx@WXd!(|2jgDrcjHZc<PiXspX2x?jy7@pNV9Dm?c!+9
z8vYbdI{%af=N;bLI<hYqb8JUu=|nVk&#rO&8b_}<dMmLTiS$7CxIQ!Yh@+=c&NtJ0
zrcYd7`#q3i-#Gfk_2q^A;}{^@k<-4cqY$@2bQnw=LNs>p;c<+JV?!Jp;}{vos5s`v
zF)xnM^qCyTlsLwakBwto9OKC+5+`so8F402G5A#SX>m*^kz>IO5~;>-am-YF7Kw}s
z(Pxv-QN1*u<`Uup;zHsgqWCXXBV=hD%i>rb$BH=CGF1k~$~ab&uOb??TBGvHpjt=1
zo@k6TiMc6`Ephxw@ps~8;vYogh_*G3T{O25CD(S69mJigR-*5YV~_ILOR`U;9*pA<
zl~XcBkQ`T@N8&gd$FaD65-36BXPn8Lpu<V(a_~J(^9=E<3^NkBk!#$`mG+*G<HCDe
z=W-lZWJn}1FoCNa808WupTM;^uE%jBj+-*`B#<eATXEcu!y1PzjyrMu&B%}AxGOug
zJmjT$FOK_h{bgAX;`mw4{Nu><_H8LS=*ug?`8Ui*Mt!{cf2jW@e?ojpGz*d#ci`=D
zIN}J$5sAYoM7mBUZMnk}hdT~W9A2pm@4fiq`WF_0GPTNIvf}y`miz*7{cE{GLR92V
zk=(|K%Fe=2A0-frBOZq-fn*6J;&>Lvn>aQvf>UPZI9{<PQqLE0yd*b9%j@@QC{6oM
z=6|W4TzT<?5DER*AwBRx0?89dkwD6X{y-sB0;x$P)o7i8A13sUN|Qj^gnniEE;U^O
z=@ZD1z<l`w(RtkBBMIS|6UdT4(FBSmkTrp93FJ?pt9%qdmKP?FGl5(Q6p+7r5M{gM
zPN0^&{2_sl6MEBx%P%jp<YSWLm7g@EKmr95D8%{~rh|ypa+xGZkpw<T=v(>I1U_Rc
zj8COV6C}vz2^3GD1T)GXc-t@6d!S?jr4lHeK$!%}GD*Z+atkP-|4Cnnm^xv*DkSt-
zJ##u!#RMuPP&t7r%+fu9stJ6VK%)d2C-hmX8nI3S)k$g)YZ4{3Rsyxjzfy{X75!_P
zb&2(e^%H17(vT=V;`vPi-zLyeDNRUzlDZ|(G=cAFwk9@HKFt$oLH+}=rP5omMH04+
zQhp?9o6ye+M3-MXD(#6KWEhbALNuz~iM%th3sG`)P2gAZZb}hn>C7Gp^i)bOlHLjQ
zA?Zu(N9<3OI7Y5P31ohbEYC4GfguSDO<-68-JhYyGYn5)L;`OUFg?S_1V$yWCV{mH
zj80%o0@D+i!EH1)fe8srOkf<%@kC>Fx72D<0#g#0n!w~l(gl<>UvBbDOC%iuWeCX?
z*31NEC9oiYg$ewY!0ZI($;eM&4x>qJ<;XRcT*jn4$(6`*^(rVg6BZ?~IDw@JEK6Vs
zeMC1-C-grcC}lOtiUd}2B(I|R?g^$;V_gF46S$MW-wA9;U}FNu6F8B;rUZUZU|$0J
zWe-Z=j|6rw?-rum+u0^VI)SY;jZ+#q>)4*qSFH<?pDcpfDZypsDsguLd+5BEXuLM|
z0QsQ=4kvJs-1xxX5%Qx%xm=Z|9V725%QJW&IGMnO1TH3UN+ys5WWDj31kTdOI8w+R
zn7<M@m%#Z1MwZm?)3)S_;!6o!PT)pD|Et24gnrxh8gt3%%~hIG)^*t#x%^xBO*sU}
zoRd~>&TV=cHNTs{y#xXY1QWQQz=H(LlA6Fj2|P^TUlr<+>|FBXm!^>aBkMh&rYO4S
z;h9^TcS#}=MM(mJiXf;+Fo1$!0u?YJpeQP+2#AQ16j2aC6eD6nM8%wQ4v1OAM0iC}
z%#qEz|C*YopC8}(&Y4rEy88C*+dVx!vpr$ykmq-H(Z=nz$@LY*@3z~P?Y3>Z{mi4j
zTK#^z{jfcFb~^mkxplk!DC7N8-cO1lre$aL4CDM|yZy?Ev|i17i@dn{W4ryi-E!M4
zzuo?l{Xd-cx7*+1>|vf${uAFW<g?j~AuC?{pmkxpm9|@XyA`+FU5cE`Cd{oULN2PX
z2(Lx`tXbCf%UbuWA#0JWwa!|btVOdH%i1nkYn-)s))HCUDQkTCI+?Xp)-qYElMN<J
zu8OC#!2=R(NVq;+H*58kRZkf1eXa~NP?C318;a~KY$Oby3~!PRK2g;)Yt0yd!fUSF
zmcka<V4t$aU6tfY$Z*~x&f4xuwh~g|YHi!BwaZ%PtnHPxJ+i^>>!95B+2EB5E>JKS
ziXF4Ir}R$3@M#ME)Y?01U9#4~_s-;3ptHt@#)I`1o&vJgRhHe@EsBH}Cq1&Zf7XU%
zZ79Rb+JRXckhOtX>nY2=Svy$dpse-E+KqF9>xbT1>m!kzE4_zg?a-_pF6DgA80UM3
zWvyQ}cz?6Mkk@Ii>Tgny$Oca)9ILY}%O0sB$7O909X1LcO&QF_N<3P4jPO`tIAeU#
zICyR6_^h3fwb5A{leH7GHY{tWWo=~EhO4>}+zVOblj>c#?31;VQ{E}^z>yP_o#CCT
zB<}(+hSRe)O38=xJv1u8qYl~NQ>ABf2u<+L6poe6S&EYl<cb_EIh~%Hwezy}de+{^
z+W4$Z$lBtpUC%JGc0tyrXYI1AU6{3rS)0m<J*+otld?8hJe;nlZ~(h!lP=EI{LY#t
zgG+_st3#}jbNJ<1n~}9Evo<$tGnGsIimc7b*1TvoJ8N^KkC+xTkQ*<Gu99+f)~?Cg
zywIoi!u+f)$QtMNg;~3qGlR0iPX)5l>$0|pgQ1T%da2J2;l5jvwHvawGHds9Fl23M
z)^5q#t?Z)dHS2OW(T|*T(<=kFW$pH?EzjDWSzE^4q<A=W+#wqhzCmzT*6z;Qy;)nK
z?q$H|&++fcTDZsW6A9lVW4CjUtjgL0S$j5X&t>hwtUZ*qr?U2R)>g~s!?F)&Ck}u|
zvi7KS^2f6FxcC#oCxskQtdRqI>r$T$d?p)w8E<SK@A<5~khRx%C~@Y`+Di)lRShsc
zg!8hJugEw&_F49y-d??}KJDMk+FM!sCu{#^?d`0+leLXm+my9;v-TdRnyh`6wKZ9L
zKWm>ThP7GyAZs6se<)<<uTo!q#K}Z+<LY%De<o8WelDB!S^H9CUDm!32`#@8|0ZkS
zihR98)&_B&!9Sc7TwZQwGHX9)?U$^5r>yU@_JhclZ1Agm!P&Mo8$52o?We5$sI1!m
zE8mt49^I$euhM_Z+V5@<{vqYBto@y}Kjn&@%-};;<?g}6`(M_!bH>hDBxhOK=d)H2
z$z|=7xjrWl&T_@9m3X||=<^8WJ80#sRkBu<84WBKOx<2i7yr57`6znk#@RKRvsljR
z=B!@M;yFv?EKTG3UQ))XoPDbaf%~iWY9y1hI?4@4CjBsrMe66QLCzQebyi1x=bSal
z*)B3pPYo(<oU?XHk~hg&)0{QSS#ziCF497{tFWbTx7`1&%(u!}Yl&@yZH3{F@jb-b
z=Yq+cTZf!=bet#C&N<sFXXA4=A!mE%Y@eJRowH+d)+J~As^DN@*PQK_v+m;Egq%-$
zh#Z`=Lqzr$9w0n0XFWyOqJu<w347<PPtN-CYa}cEB_{`G1o}DDSq{qCVL9uUv;IyQ
zkh8<Zk8n!(y}^MwJ5ox`=Lf6RaFO|_T+IsJu{k?V2507MNX~|epU9^1;eYWH#2G*s
z!?2tUmmXeYkI30cN}imvQ*w4{&Q4QujBuoIwD5H8+)?8Eyx8`5utU#KlCja-Sn;!j
z%sM+~;~YOn<Xqu-xthOzIA6(2ayBhz7v${1oK1B0^v3SGNXbdU$-*f)yI5qZkhL(3
zupyU9nJ&D{<zAk%89AGovspQtowG$bTdb@(IlD&W3gMN`ey+$>!g<20g@0`E=8G&4
zvfgWRwov>!VK@S>&)E_sZ^_vWT>Q`3O*wm?kLn%d5%1*skCM|?dN=2cN%{#9lfBz>
zwk&54m+X;}-I259Ioq7K|K;t@oZZFUnz!Tgc6ZM1$=QE7+n%#~bG9O9ALs0ooZY8N
zR|?s0bj$7joUO{)137z;J1%E$DtEQ;Ss`s67I`FRk2>YCTyQD%c+Q>>c~bb4@M+;Q
zLfUNBh5B<U_<YV@5P4DflJI5WE5cWE_L|7+IeSBdwX@U0bNX9S-WI;&a^DqsFK26<
z^1jGg;RnJGg&zs&>Qf$W;{WFC^PH{A*)}Cv*B2t2h3j+nrN~#puZ6VvM&#R^Z4lWg
z+$5}h2H<}=`%Vh&w}^b7vmczYHD^DH|0E0--)Q-B&VG^dtME7B@4`QXe+p^&SI+)+
z{2vicr{M_C<}8=9J@eKnZ~2@Rl-n_HMQ88ltt4J{N=2k9^f;XK2EB<u7|B~yB$l`O
zd21jZ&s!pI$-JeMtRrOEv`9u6UOd#zTRkPiYmc4s)-Z3a^42<UJLj#DvRdSA7m;Rp
zYcA4Q*hJV=7#8PAgtdgYYu;Kai^^_!+uiZdvQ6IFOKB@?C)`6A8gvk^^%izu=e+Hc
zw=T-sD<7=b?47TfMQORO^j>-E>dJN#*-zMA*h9F#@Bra~!k&3MNMzBwHAi3Xy!FXj
z-@F|x{RrV9Le_O?-VSrTpGg0F@CeZ1`I={02S^;4w<Gg5Nc<S#;Cyh`^(gV9g|#E|
z*t{JlWr&cqaM}Nayq%c0PxAI@-iGCEc;0Tx+s%0!k++lbHCNFm=k1idU8&@$Dtk`e
z&du9t&d*4Z)AKgUDWgTk<n4^Sohd#xZ)b~~<!rdhF;1Kj2EV5BHeSi;!U=hsByzrx
z(O!_Z3mu;*a*>O0vXWDT7YnBfS?UszX~IkMHQ!IWOv%fIGlVmRvxF=)TV#&#3O5Gk
zy6UcyK2Lac-mb~p{Jbqta*6QTye$;DE^muP776LO=0u<**N$!wxzXh=72z-RTb%M>
z-fqp?ZF#$$2VgW<e7h@e%anVEaJjR*Q-rhJ-5R>Iyhr3-;flQ7C$iGz-k-Ns;tx25
zr-p~}wp#6dIB##~?VY?mBDas`?XkQ)F8*@fUdh`NuHGl}_Eg@U&f7Cmo_G4Q`QSh4
zp34V+FUTJ<FGzneZ!d}Pfg(PKzz*T|s+70#_L|7+!Z(D>ebaUO^d|!Q+Vj`Dd3(><
ztjXK^j;|H@Aa5Uvd?fr>c*g9&!)M|o>qI^mhBLqy;_LJFrL*}eZ(pl_zRBCSdE1b;
zjmp}T5B@5J|C7RP);=EpL!8@pdE1h=T+#AH`#x_!<ZWKjt}fcvy#2@{w_v*#f;sl5
zy!|C7+g#IrR`M6&uX+0|Z@-KGA^bCMYxFfLUKOx7x4-lDPu~7j?tj82g<!tgp0_Lm
z;QTL<mg#~OcnaXmFU1r9^>W@S&Za8j70fT#ee%!GBGCo~i#YqJNUUJ-f+Y%;RCOtd
z>^fG>jk_izrH(6ASEOFS>KCkm_)Z0DB+}5;wR6G3uQ2T*y|IvC@M*55s)e4Li8L3o
zmX@+%gsnw(E7<N%X(jT?c&|;t+7_%Gixlkcg56WF_66%uu(McQ!8#Uf&w}+V*g^8y
zsbKpStZTtKD@o6L6>M+ueG1k^g!R_8v|GUrDA<7o+t1l|7wI9~zYxrv;fP`>#!ud>
zV7&`Aq+mk})~8^73wE@OnR{>{ILjPfutTIATCl@J`W39dvkCo#ctpVl6l`F@jx5-q
zf(<U%QL2%yLW7WyhXEf`uw&)tIAIvu@vO99V_m@$3wCP3PAk~3f(@71h=QG5uv5fO
zQiP#HVpz*aWwEX?BBvK@RKZ5eAv-Xvnz?5b>`Z4F7G&1Af}K;aD+@NaVCNR>yn<a?
zu;~RGU$6-Un_RFdDssN?LhaKF3O47invpiKU>7NCk}$06V%HYdGFAE|3Y#%Zb7q$n
z>~is01)JeS+B4vp&Y1SIS(kFJ5Qbr2Rj_$VE-Tp81-nMo-CnTyD!8Cv*Y4n9VZoNl
z__~5E5?L%<Qn2eqLZ3Gj>_+)vG7RIUg56xOTV!)<!EO@?cNqiY7B)64en-KU%ivDo
zUBb}j-h!>*_%GTXMZ2$HD+~5V!Tv1R{RLZ9u#XD%alsxa*n<UoqhN2U;6nv_LS(h@
z;etI<ut&uoE7;>Ad>VlPgwe91CkytJ^rs8<Y{8x@*fUCo;XPll7Yg>Olot#3Qo&v>
z*emL#+7_|rLu2A=1$%vmok;(073^&lUt6$uT-KU`y<4#Nr0*Ea`_AA4Wql~56MFu{
z@&Ac@su(^i*yjaXSFkS%w!UEB7HmVozAV^R1^c>S-^eobA9g7*jCNzeHWh5M40en^
zY{+-gw+O#4*bfEUTCg7r_DjKjE!a=ew-xMX7cEQGIwAS3V86?TRoB-0SHb?~Y+STx
z(f%pezXhultSYnr3RV)?Ua+i4PFN7;nY*FJPf<!3WLcb5cpM>I0uqw=BGlms#h7@5
zqU}_)c+nC?OBO9vw7SyM!aBl?FpQi9!@BB8tY56Td)Uy~>{_&)i`J-UyGUtVv?j%1
z=48R9MQc{H=0$7alv-~z2sbJ%i?&<Qb}w41qO~qso1(RqtFT_;Nzeb^SZ!al4n;e?
zXrqeOv1of1?XaTtD_SQN=~lG;iq=_tFNL~y(e^1?m!j=kw64;3Y*!dV_oDSE+M&wb
zUwD8p4B)_`^(@*!QhFDyPtkgbhkp8sA6&FUR9!d*n8mUovVq+CGq-3b7VU7^A0Zr2
zw1GuCvS@?YKSevXXoHJ(RMC!>tFU&K4TB^eSF|BT8(OsET>zt&`JsR2vTEY6q77H>
z$fAu9IjLwTi-aN3=9HqHsw!CaG-Z)Yb(0eL=%QUvv<r(irf6pr?M!DgzG!2Mc9!#Y
zcG1Qa?VO^WTeS0>$l_t-tcZMq^z)quiW7@=QPD0d+T}%?RJ6%OySQjmT|85qA3C|D
zXw#HrsY{E&RTCYCZl}vWRKn_J6m6!AXBBOB(dHEGilWVR^@cWAx?1SxDsg(drfBnd
zbtnIHxS(kFsMNJGSm^ZYind66anY_9SyHrRA~zK6#-c41zePwtH;LRVJXnv6-YR}u
z(QbD({372S;>(?Kr^sDJyW1%pV&1)uui#mrXe*0$f6-PI?d77qQnUw(_F&PTDB6=u
z@?LP!Ru}DIZhF-4qvqZt(jVu3<o(~GJtl9o<Y%3@WLmS1%CCSH?P->(?>$pA>MzLb
z*`hrs^1Pgc_H5mYMSDp~_!#r6MSHDiYm4?l(Oxgw8%0~AQg6CaZx`(?S1&)A#Y*2%
z*1JV}&)HCXU!49~(T7F*sA!)TZCx>Vwm)1%`dCgrDcYwZpUFPF<^6>k_^p)n!Y_;V
z6{ice@wwLC*G2or*;8b1Y$)2sqHQYLW_nZB_rmXlTlf=TWDqKYq5TgMH#7~DAB*-=
z(Y7fDM*FkoHxh2YNc>g!ThV@ZHh+lxS+u`I{&xC5Mf=zB|B5!9*Z)P!N+IV{<%OaZ
zl{~a$C1=^WWaXk&idL1<qGY?4%qy8+GAji~N?J$)kx0p+A~C1OMH0fKFjcBqC&?&T
zr(|_YR<C6Bolb8JO4eApJC&?q$#xdsMabMnB0Q$ZdBinwdef3M6K}qQ0c~2AY&T~^
z``sOHRkGINZA#Wwq+Q9{myBOt+Jo`v#RNV&*umL%EZLrpcM{?H$zCPfyJY()d2q=N
zDOne1vv0||maJRJ_H)VsCF|~Z50U*#HTNS9ELqQz9VD@L$@-M6m$T&H=XwqwPVOru
zyg$x{gv}=&R<eF2>#y8VB^zC`!^Mvf4iFA3*^wn1RI<S(JF#TLN_JGqj#kzQB|Aoh
zu7-*nD?Cm(L}*RC<3(!Mh{7Xfc*#yF*{RAJQL>Xn=;vgHq<gI4ZlZFUvPPEdbdm6O
z@R*XFq2xU!JF{eCOLn`GXO-;ik}VY<SF&?N76{KR*~F4vRI>Aw951B*2_om0>;jPs
zg<+7BN;bJ<Go?%s(*9DBi%T}uDVK;$<ABs1!0ArEtYnuvK7&>3M)s_d%`Vv-r_U?d
z6^>t7vbiO@N=Y`q_8!^QQmzrsF9jb-W*FC&Y+=c+b7gN7StML6yuM^hL~anW2v;@3
zr6Ka0N_KO}Zc)~)CA&=|%ne_lSmsLIA+o$=cRJ;+lHKh%hts{{E1Ytl$V%b;C0ix(
zfXjVQ<RRf|A-np~l08<kZ#``A@Oa6dC~=<Q%cS;X$)4gkDch;#VA6QHWY3oDIhA^b
zV^1Ub`I5a*vV&znn-@#=Zpq#&*-IsRxn!@%n0h$uUoF{dQeJoZ8zOHC-zwSLBJa3d
zKI5@QoM+@8O7_0^+LC=xvJXr45o6}=koa-Q){A^nvQI@mE7klH+2=|!hIJ+TLOdMd
zRK6_PS3IEjbZE)GDb>7n6^^})CEHZ8EwbMndJu;9yuJ$+_m5!TySnIeYsr4(TvW1c
zCHuK#dz7tx*?uY6uN<Fct5>$)O7=VFVfEM_CHs@}w!Cp%{Z+DmOZH#M{&xQV5#iS`
zwwEkhvVzldCCiI*ftOEHhcUDEqT4U!l2v3-<qqOCzpC@fw!X2)Bscm**&=0&mMx~-
zblKu%OHkzds#3V7cZ*&Oq>_>zF6d>HTc;fSS5f%A<@#l7RJL8DHxTY5Y*@CP%XYi|
zo`&8Um#s<JT9$1$<u)x_i?Z=Sk!DIZ7qS%`ExVSDRkJ#lqOyD0+DK_7o7T>f4R0&G
zosh=#)}d@2%eJp<_7v_T>?G_gq|d!X_Ab|~7<X|x-+Jg;wr)!9SGEJnc3|1ME7`-@
z>|eI9;XS4F79Lc#US(r(IuEgr^u9t)#ncZe+o5GUObU}nmaU(7f2SN?wj&%LATqFA
zGv^E{+u*VtRSs5(S@xu|9bL9#WOJ<W1mSVQA!QpXa=eiCe1`Bu$A^gwFWU%_x^Dyy
zPZrP2_qgnNTG>XHZByAcm+f@v_mu74vW+U+=(3HGGL8d4<czYNDKb`gmXHq5F4r7`
z=a%g}iF3*}USx9Frj%`h`1xhKplmPB^usCTLWvX0c997EOe))6Q-TODF5A?y&60kJ
z@G>EX!L+hn>g=bBY@F_0?vxp2n<*a7v9ra)>aGyKQaHD4SBcCk+f5=@3$GE*FWZ8$
zT`RssxKMaq*%pZ`F59+h_4=}{ndp(c_+}6@Yq_CpH_CwX*wS+FW1J)WW+}G_Z!Ozx
zBDa_AP7xMdCUS>xc{#Y=;N`?!O5QDGk|&E5WxJ1UZ{mF-&nwIJymId^+bSs!l<jd5
z*88ByL&DW%dsyTVm-}eh9#dIbGVCXu{$$yna{TGCJtO|CQ=Su{{R`ZQWqYY?FU!eC
z!dJ@nM%msJf0YNj$m_zebBJ##`JV7?;XA^2h2bt+Q?~b&WNd58_JR0^!tmrmKOdL>
z?_S=g%KEHqpO<Z2*}hQn8{v8(?Y}JBSK?ngB|Q0ltK^2VZFG9giCf8d#l9=sma=_c
zwjZR#Dz>$3KdK)X3?uxhY!xN9mF;KF|Kfj^?XR-^D*l_0mcN(n568o@e=Auk+dm@z
zmhC?tM`g>Ftso^Q%nRA=bi$2gi#sS~@%cLixm9tm5)3?FXcdD<q+(H#u<FoHxL*>L
znmZB6ilr)+u2`mGbt<;5Vqa9OZpG?VY*NK0SFC=;8dPjZ#fDaFr;0VK*gh5OQn8)o
zdDn`ytXQLp?V@DkiZ!iRvx+rQk~M}+Xs%=nVW<#ytJv;TD%QSYtt!@9xos=fW(Tt{
z+IBlA^x2_edseJd#X44k3l+AGW}Pdxm(2FA)QpqbifFKJ#kyAP;EEk0n{E~BQL+6i
zwx5#p*<B>;r~@k2vtkET>_C@GSG_9MyJCGR)>r;%85)Oeqye`>D|T4Lj#8<973*KI
zffYNlVux4kh>8u69!AAdEFSVf(g*L58|p{1brm~SI_-~BW5a?hdpyIa*tm+FBZCtw
zc51~=tJtuL4VN;aVke87<UG*rDLe3y;%5p^uh^)HjaJjfRO}29+SfKS3~6k|&Z^ki
zD#EOA?=YlurCd<4^F*kOuh@i&oi9IO%tUS%R&1iPxya>Cso2F8yP;w?R%~j;E~(gj
z*-R5&Ua=V>mkOr~FLPyQR&17(xx(4PD}-~L&6P^BcDCZGip^8<YT-4mSDDMj#sw0u
zt=PhfUFS+&U$I3MTdZVlhb&Pt?3Se!yQyMNRqW}C-CVI-D)vCd9<11{6}zoscUSD5
zirrqZWfi;A`MjfI%N-A$gm~8u@!VUn`zp3lW-E56?tbxAu5}EF!9P^7)fIc(`Fyxy
zk2?N{^ZA&R(EbUR`=khKf2Ly3R_xu1y;rg4D)xNEUa8ot%6*|?FIMa&=ZDq3tO<mr
zLT|5C?DdMhS+TcV6>o@yBjj!IcZA_y2phXb$_Ewuuww7K+_gK@@=?V;t=MN3`?zAC
zsJ(O;`uyD4Gl0<B`igy7vF254QMIp>`+dcJsMy!y-&E||ifwSE{#UV$;+rbAS)|qv
zBm7Rv7GcX5y{#4dv0~MVc~$$VV%wx|uh`EO`=w%kR_re+zY2e^*l!|XONoEDJ@vQr
ze}(@DS2eAf;s0|s*^1>VmakZ$VrA#2C{mJ5*x^L>LuH4)@~f7vT83Yhs2Zxg&bMea
zm<f~B;M5SS^7S-JNU7~Z=5kBPAaq!#YIUpDuxdM3`9Xl7U;`mZeGzu`PEHBCy;0Q~
zSFK5vkJAVC+(MlWn^vt^wdRgMxYu^ATFa^puiA(zpRMJ~Vtgsg4yjtJs<p22B`<yx
zz}m=9$ExjFwYF7j7bLBH)jCKI{e;nylXR+D=c?_a+`X!NkUI#2IyXiV2Gd1i$h(Pm
zuUZe0{ha;&Rlb{G2UYpOtH8s7!k)rfKfSB`_s<}=uX?h!v7u)s53Sn3DqkMq-#J-7
zS@stmAv|2A7}x+MX-`fZRJEhoQB@o4^rJ+Wdu-K?3whOshzu3h)_8ni5On*ARU76?
zg}EnH`DF~7P~~d~c1qPwt#TbW2%g(%iez-vMppR_pp9}mYYanT-;SyBRfQURIviW&
zBTRO-lyj<fZq>$#*G6()mH!YL*w=apvo5IGROuI1ZKB9U!pXu(ZiGy!@>}{fqlF$=
z_7WLP6J9C|9bR6w8CC1zVP6k3tHG5_9S?Oq%o3knwK-M0qRP*I@fi=>UbVSZyQ*rh
zRqgev&8yngRX!$RD`k95)s~3R$^5D<5Wlu+3#)dW_+sHAXA^!G<$A@*A~#g+MrAFn
z+O1W)P5dU|%~k%$t+~qL73S^Y%d31Y)Ru|!HJLj^_ygyzDqqnGj8|0c9ue|;Mfk)x
zdxJ@CEOLL<R#okJWj#=}2SuK$^1<w&_@lzrLM9&;d8BILA9g>c<l`>)39bT(b6K^I
z{6Af_XQVtUe9l=ih8M(N6u#v2mqlI?zN$W9sBb9wdDYfc?aivaRkgRP_D<D4lFmK&
zZq?R`Gs5>o)>QczZB1X%fcghj`%p@Fm*HcV`-#Y>Rr^eYk6_XGi>j@!+Lo$)FY(K&
zZK(3^#`xq?;PY!C$u}b33d3chP2yqqZVq@&4Bv@_k^CV3i*Rd|ulm;5{3NoiYCnr`
zxt>-0TD9Ml{Jm;_Im<sp{&ZvJZzcb6x&LyKR9P0!a?<udl5@HFsug&5w`wJ)crqwg
zt>TnwwdU(6yz9%d+)M<*h=&{XC9#;x<>FAn@uUZSF(@pR_K<O$BetH0`X2U_(!j$`
zBD)LuxyyzkI}2I7k%wKx8w;B_y{SkuVRH{HM0Rz#Ej{ceUi<WWD-W$ba1No*HXhn4
zx1DegSE{{82M--Zc=&|zcT%#ma4+HB!hMANOUkYux_P+9!+a0>dFbxpa%Hi24-bcl
zb1>}h;Q$W@dgv*ow}(C+4sw>gM7UJgSL6_<AM7DqKcu%qci{az^!ISMha)@;P}9!x
zFwn!1;-`8T<YBP*Fb_wG3=tkJWLF&H;aKtGoWdZ7iXSgL!RaT4Nu5)Mdl;eQNy3wb
zrw9X|vN_GeNDrrb7$yA-mpfWyjF5HF{!H<)LY6(-!#EG;csN(eWDn<w(DDM2@g63K
zoG+vkmb%c{O!RP(_#~Ihf>S(PtmIS=)1Bod9;S(3Dh$KE%;nPU4A=iNMP_-JEiy-V
zh44xt_sd)lSBcMa%GDzD!`uZP?(%TA2i9_}hlL(Lm4rpk@>UOv#jkhD5|JBtd^u&Q
z$W6kVg|`U#y3lPRw|iLT;SLYWJ=`g!9iPTO&*w7re_qWOvF`D3uZJf*Jn3PDY##CO
zsE7L$*h&xgdsro%F+c3#0mmN{dC0?Rk=oH1e%2#w<74W&$2p!eo~NViDG#rBc-6zx
z&d)O*o^|{=k>@?UAo8N{CE?2+c;hK_`<jQ>J$xwr4IyKD+ryjUZ#jkb?})$al=no|
zcz9oAt<ygc;hnyZJbdio6D7ZJxu1IY%<<1f)_DjcS?}~OJ$xnpwNt(kq1i?cn>Yso
zNno?Yjz0GE@jnmWDY-?x<oWns$sdGUJ^bk5C-L7r{4TQ1!_OjY?=K?1dI&EP{!sE?
z5C3`i)7ktb^0$Y7M8Y?Vx4Yb|E1Q#&7Z&&|kK!qLs5r~A2-{M1gaL5#*$U48KHwwb
zBkCh2rHzlckA!$VA4!qALfWT9(mpaGd^5U^kMLet;7zBe`aT-?*hvNreKhgW)W^<B
z@;*f)AG`QyOb_~x(XebY<+kv#s~_y0=6*1-leF})n~zpX?(T!t(Y_X0V{0E=|D@7Z
z9;mdVv3Pr@bl4%nPCmN(=;5QY%iT+4Z{a?|E<W}Z=_;hpZX){$8P)zi4iLZDaG;N#
zKIRy%FpTG$U(#n<(6_zBd;93)qpy#HeH_AmHpC2v`Z$bH`Pk^ApO5}N7WlZ<$KgJX
z@NuD!i9QDS80ce+k28E6>0^+O6MYQxG1$jZK92J-ME;NVISXMf|J?k1Z#CZ+7AK)H
z)W`8be+I!!eXQo($M+ex^6f%?|INn;AE){_O$I0VIN8T3;=G~5dp+S@9@>xeak`ID
zK1Tas*=7rZHx$A(QhpioV1CnM0bi%ZSRdzdA90V!2`e4v<81M;Mk?p{2#btoEBNlJ
zawmxIIX-wz`vNK9nffB}nLcLunB-%!k10Mb_A$-JrOKM>;}Vh3XFCnQ={_#=ak-Bf
z%G$9l;o><XpUqw7<7yc&sw>!Oih=w}iM*=0%Evs3VK7t}-ZfI@`v}E_KCbieu#ZQ4
zEb_6~$1)#x__*GAzRAZDA2%p@qmQK`J4So6k6R?(>f<&axBI9KlEH+Q%YED_n^ivU
z@^QD16-wSCq}jbb!nTvM_<cTB>bSU{qmD;Jli-#C$pbzfRFQ{#tafE<gL%})V?NgS
zc;Cn4KA!OLijP-)Jn7>pAJ6)DPDP&f@r+1qL00;_j~9Hr<l|+xe_!OdRi(u6^Q8Rv
z0AJXD&ByCL-uCg1k2hrVmb|?wPJ>!|x_y^BkyrjcQZqf0dNYGDyw=ADK0fvFnF@aB
z<6{wKeZ&JzU+n)xN?0%T&wZ@-@uiP-KE7}f*7n#}KE9Ft*Xl0XvuWQ-343pokIhOJ
zi9Ws)|691l$FCya`}jd*tB-9WKl=Ddq_(4e_VJ699e43>K7RM{hx9*v{3XH|YHj|J
z@~@Bo6nPl-b{|<EIUji)?*-Yco8j@OuRYRB63ad+B2^!r<|W?%5!PZNVT2K@87*-`
z!mz*L07KG{GPE(Ym1Ww{z_62e#!yG3uCSh=J`1|(h0eJ(H0-9_oehl)yBHc9nj2ae
zni!fYtC_I2mulO-tMrx@%<$oCL+86oY$a?h4Cj`1hCK}X7`jMoZ|EdKZyiKB3issa
zjx=R;R+9U7FSUAa`@bV-U&DT`Y*&$P795pf4BZVqB!<d?hMtCzhSLoPNk80hgrS#s
zZ$lqLUshr0Cx!7Gq8bl%kuZkCR67Z`{yRi6z;LYLI29adIMOhP-e!3m*n<s6Nk3Zs
zbBuWHm|-nL496QzkUmrxHvB}x2*XK=VVH3E4mF-^I90}{$ZfbUPLmSug;9plh6#rA
zC5|ziBSOnF3}+g~vY_E?iQ_nUb~tkRG16Cg3qV=t3C9b=Z(LkpxKQz2YM3a(-k5B-
zNSyvBxgMJ$<zmBBkxS%cnrlVaOqQLl+{=WQ3ug$!BWRXkwhGd7xO8x(lGhmKid^M#
z=ZRd+6Zg29bLf1-0>ib2h0f-Bk?Vwugo}mGf9fp}VJ$a^+-O)Ta+8p!6=vNc&P$71
z4YwI?H!L&UA@Kpja>Jd5dkrgCsZK+88SXaRqwPw*|0PS3`wT0^S8>FO&^e1RtATqZ
z?LosshSi3L4gUpS|H32Aa-GPdhQ|z#i$7s_UF1o_Q--I-pEEo!@{I6V1DAbR(F;nx
zWO!NRMZ<ggZpJHyS7{@WW~0-=Tks98u32<_!|<lzEyLS}k7V<X;a$V~hP6t*XILXr
zcW&?llf4u!gM484(E0qhQ{eNT8|`DmClWt3d}jEZM<Ul8ZVSG9z#nTYOS3Nw>kVHT
zzA}7m_=bI}uMmf=;F+D@g#6a9!LZS=$?%J-WwYTs!xko`TtBO3JbZ81YWPv&4??=y
zjrV^I+YF5M|K9&KJjZyr{$u#f@O$v*!1!B5{^ZSAKbU0xQh(O#<M(J9Typ$l_*Vwp
zkMtR~J!>cjH*b+sR^Cu>^%e~!PKJDPk}u5ivarfoKDYwpl|Cna4*?Hb3LpZ+rSPda
zdX9?6fCJn?!LFcvN_u@^T9^^m5!MCjiQJ|?3THnz0Ctkn5NHdu19n!j5wHu;SbTS3
z6CtZ;3N&-PxkwA)u0Ttt?}p$PH;r3KX)SEya>JjodjLIv{ekw<J0R!^ZXJO=flfeY
zDP5etm&o42eT4kGmVHIK3R$+B$bQ1^ih<$*uHJ)04ixqja+viJ=`HLdWY`>9hX98H
zvm=-j!C^o@pvs*RL4V+I;8TF#csT+X0Ps^Aj{^gNBY}H>dx1f~V1R3|w*yB3M*|~)
z(-{wNEO08oFUA}v90Cjlh7I&-%#nXQFakIUI01Nw>;J-G!r?-S{8r4kg~3-uSmb2j
z6o8|Y4`1=qK&Jt()bU!^4W4Eh1&me|*8yXIGk|fxIdXC)Bk{bmfU!!lI0HDF13;6*
zL%qForSlU*<JG$JfZeX}&+X$)0L}+404@Zs1m*%0RRx<f2e=5B1WcyerrxDapTdq3
zpX!uLM5ZyG;GRWwx{{X(FBi@bGHWI<%kkMF^i2H<fS)|#Zn_GX2VCoHt_J1<3xI2!
z!UyMQPva)+9DWYS>GZP*SPWbbECFs}yZ9<M|IwpYa0Pw?aHEu^LcX8Q+?&O35i)rz
zaGUr@FZd!8w`IT`z;fVDbsCj!o_7~;w>p!%j7n$ETLIh$JSLl!!2KK>p7$WIihJie
z{{euz^0np0oybTwrUT~>0jq(BISKUj9swR-6nr%1QMu(s_@Zi+I?bK{o&=r(o(A3l
z_#K#Mco2Es%dC+vZ)!l2JO?}vya2o?{Uz55*2|4M`W40Ys%yn-BCi8)IOR=|w}7{u
zGKD_@RO5TV8sL3kt=xVLd_d0U|G{<I;Ad~-O8+Be@dAUb<4*Ym_-c;Nqv<o?b2(WD
zYy>vR`4__V!Y^qFd<}e~BnQ9-j^w)Dw{pmRcV*q6A2#zS1`0YtzY7cUbGyJ6;CtW)
zV5{tZ1ETz4>jj^^`Vsg^;x^!Ckza&-2AKQ$*B$upz#mHfDP-<nB7X~e_4WP*{!_<p
zXImEeInEWl3m|MdCl~{H1(vGo6-DTw1eAdaM^v5QV|qLoDf$su1P4aYGZG9=o&Xw0
z&?JJ0lF<laBJl|7i6n$cVM@qS=?F67b(~T+g0NBbr8E%k<Z>H|>?~{)!7d_f6kRnH
zZxcaVk!BGz7il4+!LAXs6yMD$yNk4nptVzYD7A|OGiP@xdx*D>phE;5Bf+f5ZJ!AC
zbi9*D=Lq(4%HAUA9gLhV5$vmESC`vOWWNYPgC3FKXrkr*5pZ}MK&%stkb@%V6~UPi
zjE$go1brenR+03L;NS?35<et@Wp%v%it|vO0wU-a363d#Dv$$)WJ8^xTMm!l2-ms+
zA_F5hQe=>Du*+rJS?XvxIVMEUJ1&AD5e$vs_y|sp;1ua6L~vpR!y>_iz#^On2KM!a
zM}nVMBO<7Kg@2NKvK#q<FN&us>ogXh8_WzNBf+VM+vyRE5+Ci9F(PLOvwed2&x+uJ
z2ri7^Z227LqCH3CT;X{Uj2D>@4xUJGWfFe1gW*k#;1cCt6u~6LzipvEIf5w>tnV3o
zSBkY<tQw~Zo7MHE$^KFybEijend6s7FhhK%Q)Wf*x<b7of-56fs=YH;cy$EV$n2^J
zzUl4Fi-3RW&W1N?66|G8q4Q<7AcAXUworJT^Snr8vGDo`mN@+eksCQMH1ppS!Of9i
zmJWTg+i#8Fwg_(L2#MhFc6g#4?ucM{1pBo>_ZGM_g1aKvwINzI#N83x!`PDeHi>&9
zSP{YdF|3W@z6e%Ea7Pr&qqskURS_Hz#eq>g5W#~HY>HrW1P?{9I)aZP_&9=xBX}f&
z4<qQ@+aBf2z-gQlK1=cYZ;V08QqQCQWCTxfxbpe`2wsigHSuR6cvgh^a}hir!3#>h
z7{SXTF9|P>cr<v$S;krf$=4%z*C}sA@TT}%PI;Ss?)cvD-gA5nTPnWRDIY{Y13G+}
zk#pLQV54r4Y~Y}Z;IjxmXTRxtmFq>;Mev0P#jic@OEvZ@;nza8{Tq%q$9YY@F%n#~
zk7%P8HzN2hg6|{vfrmM~E%1ID<!_1LD?YKtf^EF59M$mZMDe2{`AL4ZMewu8FA-!T
z$cg_d{4IjtBlv@JNCbaH@UKM1u-5bb<{{7Pe<78Q2);}CUj*A_Lr$A~1ceCV(O{Qx
zD=G_7ltjuAR79!~@Z#Q&27B-=?oek>&W!~lPKibl6Zh)+q0dAVNhv93la6xrKB$o&
zxqa)jpm^OV>P1mMiUv{a6h-qWT13$>8m#d)jiOl;J4eB<Xf~2UvP%?=r8E%^jRe1R
zh|GGhWq`Xz(K3pCqUaLEZc*$WMSEGcavt`GqIDE)qG&5UEZ8mz7N@Jw39*B6J4Uf*
z6rG%9XAxGnm&o2O$%6Yv(N)R)qv$3=&-=+O?Yldrhr$R0CiaZtpeRm=;>0L=MbSHo
zp-~(kMV~0TbJ(=<21L;}io3bO6AkWS93mt+ROGNI`ib;+`r#r+uvh)ye#b!dHb?A{
zQ4ER(<9RRx5II_SobZ?^juoK+zi2u{e9i72leZn@a}3Wr!27kkH!O<bQOt~DRum)L
zKAjQ`2Kh-*oE*g|QJfmZX;GXN#o1BtMSzh}oF2ufD5CBCh4sAAQT)4yPkuvJpV!-C
zqBw`^KhfaY`^+fDs>q7_gEt7qF)NBmQB0N%OP$N6$zXgG7l}*|o-bU+TL4j9==j7a
zs04m^4cXqmzf<6o+p139#fp5Y@DkUGX;EA%KHVvoMRB>~Gos-8cO0&7xAfN{AhV;G
zqlRChzPd7sxlvpte!c6-c_LQ}uMy4{E)ZTD#lk4A6JHd?Vi9)uL2ZJs?>@0>(D_TE
zxIy}jE_Z1ZH;LaI#VsPYMsd5#y-j47w6{!TaZ8_0?j&bjF<ckJ-BH{V1&_X&G29!)
ziYUI1;s?(2nhEcVV!c|ol4pS^R#E2wj^ec_UXS9TC{{;<ss4p19**LrW4tG$cuE8N
zktiOG;;|?mm;SToJt4wFfE$xftKc(2Cb>Q9j)>=?cwU?iY5Zc8w>ty!l8j$g)+@qS
zo!J{vycxy1D87i|Es3A1y0^vOiQ?TT-iu;Q6dy^UxA&u18^s4QV?}HQkrjRDLi$*i
zp9sT9J`?|37>2Z7v2Bz>pI=7tRTN(<`Hl1QZ4?`%gigYOo1)kp#s8xCP9DMl=wXZE
zVK7^x;K}ad7-ly0e$=S@DT-}0j^Y=dh-2s(!>>{N7Da~`I>zvO6n}7bjUg4opHck9
zc{_?SM`;uVea|x+#XmgOl>9G>?IP8ZH@SgF17c1S5ht!Zvv`y>2(pS2Nh%_K3>FKf
z;;NEfEHI-J#1M%gp{!^Ou^8g9pkC$@xrG&lNn$#NObkt8Xc|Kum1-En&N0*#r~i5}
z)OWl=3_I=Mtx*iSs9u@{k(9i~vLs=$Sq#l%*gb|;F|<&rmND!W!>&7cU;tr37HJ(r
z8x`LphPEQ@grQA{?RQZ2jG>cU?JMjo+$#pUVl($vavxzAAw7gW&^3l`G3*yZcX?v~
z`^V73aTY(o)xshN#n3B;Gv%Ro41HoaHiqMr>?<4~JUE6!VmLI0!&J6^42Q?iZwH^O
z<p{+_!i}B>#&Bc|gJKvQ!_jiWs)J@a&S;NOkx(BJ!_XK`jp4Kyj*sDl7*0~>pBTe1
z5tbbu!w6TLwXk4V7x82TbBc0lN#`SD7%l&&OQg*x`C--=8K2>dnKf2fXT@-K4C7)r
zCx#1Sm>9#kF`O5}1m}UC$Gc{dpC7{oN|J|_UgY{@vdAR4rGIWyq|mG$Z+OLmOOZ=r
zm?m<maJuj^;pM^^90R&Wns45$7-q*XC&pDBuW1+W+8C~25A*cO`@bS{W4OvG^J2JK
z{2HgsXF<m=Z0D_&+eI-fj^V8s-j3n=7?#BFMhtJpa6=3?#_&uG&&Gl?>{8)<3hAa8
zZjRv=@mph9F2c6lCUScW%S7%FhSzD#y)%ZpoaNmj_XzJ*pR9<1*QGRD8N>b3SH<wK
zvwt9l2OWP%WHpaCof98X^3fO`6JamW$>T9R5yO))JmpF~y+bZ-c-{LPJ5#r=o{u4T
zt5o=6$T>g9@Ur+T!dHc_x!l(|d$0(9_vO8zr~A`_-x1zBF}xeYdoiqG<howv$$Dxh
z@1~C4|KNRdmd~#EAchZl9!%h#1U`!4;~36}<IFfdiQ&^2y2jBhj?ZHFJced*G>@Zg
zYj0f)-}69g=zS4G|7vwTM<yr#7`{@!eI3I$QaHMJssF9`2B&P4%_iaI82%^nop6hg
zr5<VEjo};0F>H<D#~6N!VH;=HI9}nYGlpMc$i|S11<7Ay_>04!b?_$zzws;}k@_Dz
z3y4o0?lH;j?->4x;olhkb2i&~*fy-m4M|?j@#84SrWivhhO)S)+UcjFWL3ygKQ^fG
zU^3u6fJhwCc+f2|DRJR34ZX06WE`nD(s5+sXsoO{anu!Q7)L!3*3v+vK0CZ|jsKnE
znARn5va_>kB(h69xO$;~mTD45Q<qDnWxe2_ZV|_>akNxOya3)aj@{zH^)t8KMOwwt
z+9_?gf5qE5We<_|!VYnC6gj?k(BYlpHNTZQi|i%bTewdgU0m+IB0QA#i=%rS2gT7V
zj!U}xJ>qD%!sj8ge_Zp4vp-Ozr*OXK^^SA#&D%W6KRF&8^?l;#8^^(M93q3kaU2!L
zp>Z4*M?Wb8h5dzx$8kiw<|rN@g-0T5Jks$&B8=^5ryMVGjPTevjuRQ;a)-td9?mB?
z<-|CKIX*m&5#lEaL(5a*;5Fx|LXy)&MhZ`lW0ccJ$1z5n51i9%Y#e9Bu{Dk#<9sH{
zJ3Eevaa<I~IBo|7^T|1JoU2;SbG46;V}j%7$8mx9g~Hb~k4=gP6V$kKym!=-ljE2Y
z$Hj3><?e{%$vB?k7>nc5I2OclZ5-3%xGauYam<e6@;GM1F*6>lEG^d(!L3{^=VGAv
zoH)2>z>UA$`*Hn0jw|Ds8^={~%!>!VdajAXIt0Hsu2%9|{q%U3&;Kh~9qBEM<GMJO
z$8l#Ii{e-u$Fex?h~xS=mc%icKQwf<x*?96<G3Y`8{=5YUC%E+#PM3j=Rz?#k=w1(
zZ;#`)IBp%_QMrIOc2y&tgf=91aU{p_7N6&g<DNJ^;DaJ@tcv5_I99}Qp8{K{cC~En
zZP>-%q_Pi4c_@z6aXcu_MzJ|;JDWpJhm7QrI3A7Tu{d6mNd0j+d_u@9e);EV9;$J?
z8pksX^+2B;`>b-Gi{tq?*e5S2`J(V8A^p4@2Op~@;a1qgC%zWP>v6mxgE!-NJC0^y
zBvKgFH@gI8@A4SoBS6}NYvOo6j<syHl0R@P)$=}#<7*{p_E8)k^Aw;WpT@B+jxTr?
zQ1Wx(?~&lw^m_3x<M>LXiSLCv33I=R<J&kk#IZ4s?_{t^xLHU88vidI{E81tvED68
ze(yx~37@3>DUNM%{1V5n92n+3Y2MGAV|NbzaEE*LHy-#6y?zPwPXy!P_c;ED<Igz$
zisNrivkBBm;Ga1DjUyLFUbDe}aXvR581uj<a?5hpTd*iph@;5PkHeF<5+|QHD%{sC
zgQId)gJ6-TSw8q9Z$A<I^h?Oh62Wo7$6F&JQDH1m^Nc}U$?*9ER*_5u7f7iD(jw$s
zny8yVy#%@>ux|qO6L_SB*EE4<2{cGxrvw@%f;nX8M9^0xc?8|tD1luPXe_abkn?1?
z%F#T5774UVU=P}G2`CZl`ql}wOklSJSF^p{rMD7i)2I;JB!b^uv}`MT^7i!Odz}-(
z{M;ddjtT6Uz=id^PKlbCpOJ7b;$Yq@fxX!kXM6i3@P-%sVDA?RuxkR{66l%0K?&@q
zzG815m_T>&9>V>F2MAdm9ln8}x7oeD5;#~oOZ85mkNTmnkp5}I?T`cxm2#LctorZ-
zj!^fGO<;hcJw?fZ!~_OOIZ-&6{zZ;XV2B6<I3|H(9Y0Qlllf4m94~T$(`i3Ue0TyQ
zoXtrIoa{KK-&5VbK22n#@bm;miHsJG5pq17k-(YaT#se)tOU+ZU|a&{Brq?5s}nev
zyE}oY30#uEc<r5uLbiQ^$oawxxU-zz5Z*=NlZ2CnQ-l{Mf|DA{hBz&OnbN6TDl%Po
zneg%iX1H9g$jx$mw#Xde6~ZfpbJYn~iO-98*RZYxZda227bLLQ@oN)UD1Mz&79~(=
z6a;pC0!tFO!Ra@P+$dZsyva3z#<wJJtHj%cRM`K^#P1L;7vAY|?-FU)*1I=>6`U&)
z_&0(35?GnQ4+(5d;Qj<w@!B|nj}yFY>OGLa#J2v28kP?x@K6G)6L^@%Yy$7|DCV8t
z1RhJ^ZSltwcp`yU#h(<?;JE~z5`Wq$&m{1y<3soqXaX-J@L~clCGe%^y^_GoJih2z
zpFE<6I(i1F(WmyBO1;j5E`c{W*Kso8IY`GK?Kv{}y4E|gdDr=WPh?F3vF={mp1~#J
z+5|q3*n}sDh&M;SBR)xBEdP|*^S(*o(*&6Hnd`C7Mb-(w5UyvOF88Yhz82^1X6JvK
zz=i}i>e$?(PTM5DS@=KUcl`CyJeY-em~;DHW}GnjbLPhceo9~)_e*y#Yu@Fj2Lb<_
zz#mhBzqR@$fnQbEZ?5*=nI-<GQ~pZeZ^t>p|4U$df`7*aKZ$Gtxdh&->lN5o-fM{X
zT;t6rz-#I0yak{h;7nUmkY!;dfvU)zeLZfL#8X}Eh9quG2JbdB-^q(4!LrdLVoAi4
zNF>pWdJ@SbQc2WHqJ9z|5AxGVWRl1Q@0|rrt|O78u1F|0NTOj9w4}b1(|1myQ4+gI
zY$^|plW3wO-O`fw+{jxbv1<}XCNU_9mPzcE#6hy(J&9IH93b90i8e`eNn+n5+9uIX
ze)ddak0jbB(IJVBF0fk9Bn*%KJ0;QC)yo?9lEb~F?Bn#VNpwr1hq6Ks`z6ucHHr%T
z?62G~czQliWqZ2zQt6dM?<D#p(Km^Mljxts;Yl2l#Gy$XmP9|--dYa~Camj-BnBig
z&{bEfhh#9#k{Fl7IY}I?7)}-*lf<z}9GAq9B!(q1Jc*%69G}DqNu21~#k%N(8wn!}
z32{UcC%GPDl3AxDacUB$B{4FIF-e?}#OX<llAqBo&RTB_`^+T9CUI60XFLD&6LwVC
zK;pScoG0=6B*rH(A&D!JxH5_Jlei#>OF06QxG;%{NlZ!N;v_DT@uVas?@(hHHa$;G
z;*un${r_qSE4?g<%afR`w#-mSGn1I*y0kVV8qaY7Q=FT`RY@#J;@TwUC2@5U*Ca7t
zJ+osG@-VqDiR+SBv_scX4<lUc#3hO$)R&mIGzorGa}|#%{t8Iq<|J-O;?^W?<9Oqu
zjqvs)?iQi4OyrIvmW$l!^t+O{zp+n)dz^A_5-Y^-6Nb6>i?=%^uzVni2a|XxiPhW@
zoEVdMIEhD+crzJX2R_PS$=ka^PQQ;yd|b&Vl6X?&DIv`^cMPt$p5YPA>;EL4OXB$?
zUP$7_Bwm%xOTw3(Jx>7#a6v;!UW>k##Oq0r(8(JTnaku`NxYrJJ4w9DSuW*$q8Q#w
zVoeh7OX2=nEBg<H9|(D|O+O!re=K}n_d#g<sfNeN@IF_Q+3Iy7UkKMH@ukRDF86B@
zUXE@^Vk38b1`9ISl*DEZ)HLR%@xLU#;{=sP%QUtm@qH3MC9zGl{E)=fBz{Z=^YAcu
zTyeVRBY*j7|HXRV&q@4}L?nf13WqfIeobOKo0G(E>^ffjb6Vr#kC5a~k-vn0C-INS
zzrz27Y}eOZ`4?x4l6-)iSJ!HIL0A-)gykeE>c*<jO9lJd7n%@4_BM5%_+lwENe8zb
zCseEP6cQ;UQ%I$dPT|HBmZp$Np-u{irO+>hx+&C4VUHBrr%*qI2B}~?>@M6%xN8ax
zQ`k9$MogyAG=*j<G*%WZn}~#0@=S7TE~SOjnZ=EIODVev2kWmhTcyxi$u=oIVTg9(
zv<!a~kaS3)qr|?#JyX~#g}uc)rO;V~#<bi=yn6~gQs|PxzA1E-(k+GkQo(O1+SEou
zvcGZ<Ord8A2Z(cz(A7aH^h%+33VkHj77UBm;=vpPGB{L7y;U2pe+q}Ea9#@IB_5H&
z&=ihOVL%E4Q#exMvBE(q3{K%F@uO2XMx-{putmp7q~{?b6i-Ou#1uxSFh<I-6i!Lu
z)D(uNFha^n!jpyc7W$zFlG9Qc$#^2(=_!nI24U+$volgSD}}RDI8(V}g<;k>ar!w|
z<Q&(ZVeW(!&QIZr6s}C+f)p-HVQLDOq%hHynw-K#;*%5rON9leq;PQx<*qfuV_FKA
zrZ7vEJc6dDaCr(dROB*Y*pM*hnNFFV!W?n#J{s^ZS?8v3m7L5M&J$iEyxNtbW$0%?
ziocYxFoo-6K>hj@7KtwwhGx{4D0zdB@!yof%_;nn!mlaZlESSiyq&^3DcmN5ds4VJ
zh1*kDmckuU?i4N;hPB_7!reQ>L!T>BxG#mrQ+OhUl_|cig4HQJoWd%VdQip>gk0nK
zp&j@m;*V<A&=q^*F)6Hz$tP2IDuowPcrk^iQ+OtY=Qz$Ade5ftgBR?MaHBEB=T#9E
z@|RM0HN{s0@Nx>Ta18Ho5WSwl8!5b*!dt3{_F-Su_E<>XP2rOiK271h6xO8hzKqwV
z@WBpk|1gD*lw=Y5`B*mO;XeH=g)dTAFY)sf)`^7e`Z9&DQrOJdFNLpD_$I~oScB>7
z+Z6t5?r{svh#OPbq$<KD(DQdGY)N5j3O}asy-NKc4C@W?rxdoO@U!&VE@D=={g%S-
zDHKyErSJz2XI)NjPvOrL{z~C*mHI~*hVd_>a;|91k)KT=mqK156;@Gj_N=0uLWNUz
z8mTm@DR^l_(n0I|bWj(BCWXeeEsdrTlNe7UAwsvbrwuWkMkbB=X*5t)9XY9&4ra)@
z|6f--DcML!=M6=67SiD^X*5oQ(>Uk7u<EAi;5_&&Zv>}7Y@S975%NfVZ?`mdPh(^n
zr>D^>jn-+Ln#O5qeBIjPYEPRq+6?vDrqM2qJ<@2es18Y^LmC~^=#j?$Y3wO+A7Lk9
zXW?FH?41tQ(AYX|jIE3GeT7}q=%!r0anIcSBz6~a&FTOV>b=uA(D9xk2c^+VgsVL?
z=p)`&c<>JTp=lhJMn5SuJ4K{_8i%KGL>dFq7?{R!X$(o@$TS9}ag4JZOp?aYO7cw2
zvf+{-m!Xc8_yRnxw+~I@_%w#4F<jyaX`Hx25gM}~w-ITal*Y;F;BXGRg5JV)#c*AV
z3uQxNJ|Fb@D(8(#V{{sqq%kdxgX?)?(zrN{c^V#Pq;X~%W79Y*jkBr4o1Dft?OE>J
z32B@oey&r_OJls_cfdQ}@e9(pFpY^yUX;cpr^kJdKIv+TQ<&sc%G7l5R1dFSE=?ns
z^Jb=lr9562O;6*pbZ{}o?ea8cIL`01^FW@J#%%Qldtgo)SBUqo27PiBTg1_o#y4qP
zoyIk3Jf6lAY0OV!K^jx}Kvx>2j{X>4yB56J5pN-PVmt3Td03PV);t%dalOcrH0~rx
z<AyYDOk*kcIB)N!aeEp!rExP`S}#}+<OS+2%DOd;I$E<`rs8)9Lj&S+C3$gsx6>a?
z<DN9`P4n6Nz|V>_?n{Hqn_L)QDH~RIKgX~$c))ph$az@JJr(gDR`QWF9u;{^!O$Vy
zKAFZ-X}rwd<JB*`Prmaxs-I4Smz~d~gA3PZh0n1Hkr#y2Ule&s$Q|@*8n3aVB0=X*
z<+UFl0Zj)#L*7W^P1(F9{8;$5@SQZ?P2)ZBHEBNZA5{0gkfc`+?}Icx<gwNx_;K-(
z^pJm&#-~bh0DmU(c^d1S!51PdvObM39si19=$7}lX>3U2-!%S9V`Cbd()clrpR{u)
zna@T0&Flvrk~|Bj>=xno!XJcNh4fEj{t(#4<Ew$U4qg*30j2RvI=J=8hX0zzZ_e`f
zH2x6(Q}~zD{}%a&^PyIlx2KU!Bc4Gb13tHqO9wX@c|_1#UX}%6k>gXOEMz1Vo(0nI
zGVn7&A4Y^GgfQJW=tFMN3}RBq*&*j~%_)Of3;dlj!HFZ4K{^xM?&p>fsgprnr_{@!
zzT*ut`1Et1W(_kzU+tVhqYQS*pm7GrWN>T-P1uACdS}olgJzlFsoh;OXerV>gBBtb
z{~GS?mci~B^yRZR8MKn#E`vQpS_|6<+h#yx7HOYB2Pykz&{1SBA+z?(pp#s6ma<Ov
zd#fPJ?jx~_^V3zyZW-(+g#mPz(qo6R2Z$e-LC*}ol!9Ivemx_IfyS*;K4+e_bv^RF
z>;&iJ;0zAQ;Lr>X%b=f%4^T+`GhjSNh#xLwk{bgXsASl>K{6XGZ%3*4(ax9^9hbq7
z3@*xGlEk6HlZD4;aDvE*!eJQ<&tQc3NkY~Ygv#H@!@W~7I5mUQq>svAbOs~EPgm_U
zU>nC|a7G5_W^i5xXDXLv$7L`!gR?R?+bN-22G87cxCc`{%Z^v>`59c0!36Qp>_TxG
zhxQXy9qlJ)FvVqEEJANrW-wJfa7hN!GPpE@=^TDin0r|UGcuT&!R0&npQU~a<EPD~
zo&7noze320!Z7Bl$W<B4b9G&v!8JRy{n`u`X7FtW8#1^qgGCuUoWUa*EY9Hi3|3}v
ze+El3xFLfTnP7tD3jB>3+?ollbGSggREOA28QkoSwOcYZ&!*DgwhV61U|9xtuy1vA
z-}C>Nx)Si2sy962MaA!~GjnI=&T7e$5=o*|TB-iF5~Yw9qN05xNlK-(QK^triWV&-
zOVX;v7Df9W3hi3?zvsQKr{|gHectn(?|kPw-`VayB2#NHP2@r0^f=emZOs`<uC0}L
zguzcG*}5lr@2>`r*I;%Ho~S|l-pN@txE_havt}(iK$l#&i}5B)tJ;aDYcQt<i)ygA
z2G7*s*%~}A-+EWgX8K%>xul<Er}G*S!&2KEyv?h@3u@8)8oXG81>y@M33t_6iS3SA
zonETJk{Yb2!AiEPVdA`oiI;1zv<9zeN$JD8<RY)u;589mLg!NR2B#|T{|c80nS84T
zZ;QVZOWqY(UV{%>89!I4cD@Mka$|m3amVT!bm5h*8mtjnE2QLo>Wi-vu8-v(*5D&?
zF40u`lox+$P}@Qs3!m5EiyHh|gWqcKWevWn!H*nEHTYUSZ>+&4u4#P!rv~3j@|}<k
z*&xDqKkrgkj^p+J8jRukUxUpeTWYYihMyWUD=_yj{(i1O<5nhgJ@Se5yqnBL@{}aE
z<KJtrtp>F$z{2%GqWSP7A2j_#P5!e6f5kQaE%J}>U*UG)jvC%AFw1ySNWw#fOH&DM
z>x}KBLZYsP-7GY+(AdK67WS~r!A#BqZ$;I!z&)bAg%kDIKV7Y{U|D82;m@|<#N4&u
ziTlEoFfGgo17TLk2L@Q2wd7S-C@ctz!jiBotXQauG!QlvvMdjo_O#H%LR$+5Sg7?+
zqN!yzodKytGs`@a)?9V%Wub+Iy~SDSz83b0c}vS2iBZ@pmb4bxPuNDdzqRw3oC!{%
zorNx}f^y3o(Y3eG!NNgOJ6uRp2V3YE^Fu@qwQyK0>16GECg%uAjuajxJX&~+u(Ocy
zr$PRXvv7}Z&f|_}4_fGIp__#r4iYZ9Tj)WTY#e8!r-c(NylY`O`^!Qv3ll8dX5l0Y
zz1dO=7h33J;baSEu~8OIvC!AT01KyEIMu>w7W!G}uO4Tm{mQ0xUY;fLfRN{&11+2(
z$Ii6yhjN)!&>;$wgDecTaGr(pEu3Rvh=rjR&XqpzWJNEGj65q*QKNWe_}N;C3$lq}
z7KW?WXotT<+r&i{F19e*!nGDIv2dw{t1OJLaG8b6EnH#YO3R!@vTB~K@MMH9$k6_l
zv(0-eBQ0EQVU&eyEc5gQkB9&GA;G$$NK%b!@)!%(S-6QEVPPyMl!b8?ZnUsxDtUvv
z<+?gg7gss*Ih>+nr12JRu|QL|3fULD-%W>k@;Itt;&uynSa^zA7Vflg7l){Y=@uqh
zm}K!yOx$nbZg!%Ddo4^>Ej+YiNWVNd!F4zaGMBOkEKIR5)xtCj%XD1Imwk9%#wBiM
zCdtOK(uXX}u<)3L$1OZ;;SmduT9_$)hJsfx_}~W@ZGPN<q2`}_&9X4t!V?yr)QqOj
z-_+h25S}sd?2pQGEIeajvBfvO@vMdCEX=p?qJ`%z%(XDj!V4B?oDtsD?@?5v>9fGX
zLJNy5zW#6eg3WoXry;Cs2`jbmhJ`mREVb~8h1V>+&RWzu+I-bA1Dj7G@vw7lcjGpV
zEVJ;Ig|{udqltD>)|fJ9-+KFrG2wo<!oo_9RU0)nR#{kWVY7uT7T&Y4#=>V@x-G1=
z@V<qQEPQO?0}JacthewXYiwXlu?za75`6xL5!-T1vQIwoiG@!!-&q~qVApRNpJaT#
zu<)gY?<{Pv@RfzHEqr6)TlFI?@Hn4Ck-f==*UFj!xzWNV3*TG#flbyi_T#QG$V%CX
zTz<KFY_<3TDgL#v-NH{6ezvfU)5^jx7Jjwxn}y#kbNo+Fc)OVo9kDEtVP9EE{AuAY
z3x8Yq#{v}?kPWpH-!-qr7_tZl3_aOlAz`DAjk-3HHfq^`joLQYQWl}L6^R79kH4c+
zrk34o>~3QZ8})3kQQQ|IZ|OE$#NV=`5|$0yMhhEz+i+~SHcB?iHar`?jjWBFjg*bF
zjf{=J-uavo+nWy(968WzrP;iV&_=;V(KZ(q>2p-qOviXampD%=HmWxEw9&*y0~-x(
zG_ui{{?|5BhGBf5W0IEnpK<h!$)+}%*=TNKFWbx=j%@~ci)XAcXq-V*+s8&r)@Y-n
zjeTvjveDMY0XACO*w02A8~d|G{Cl!w;>x0#+7rqNE`9Wk%U3%a2ioXh;~?AYjNJz(
z+Eb!!aVQT_s-_qCd#!!q5F3ZuIMT*ZHV(7V$;RO}j<C(0FK)i<9Tw-(#3UQe8GW>k
zV{CM`(S`bsd1Px~%2dkd2dK<|3`!@CxA8w4Z`pX;Mpv6Js^cabH{0lLqlb-iZJfvT
z-^K|x`q}7j<3t<1Y@BT46ghd4jo$25`9RC;Q(7kBBH7o*sW#~OX|}lv!OMEAo!7oN
z-RR5!8>ibi+r}Up18tmP<4hZ8sb^W7A!R|59lmJ@m*v4W&apAX#!%JE21ZThTEs~5
zQW6LA`8I~x7-3_ijo~&fuyLu4%WPa|<02au+qgu2(nC7%Rcm9GGm$RwanQ?cTw&u%
z8&`3#B~8y#jjJ?$h!%Mc-K%YkvT>b_u{N%;G1|tpHpXzgB@;IfFjJn&92IOSr!9ro
z+ql8TI2$+G=86gzu4q6q>#K5-^P2kOZQNpGmW|mqZnZJN#{D)PuyLD>+igs;akq^-
zY}{$%E*ldSPnKeQSP_@CyK0;6rsN(Q_u80j<32_eW?obNns3Gfb9-s^m||n9jTtr`
zwlU4dgEpqyct~S|1DlH#H5nNm3bHKiKVsui_K1zgZM;!TtjQ;4(zlLDh9$2ZoD+fi
zJUo8F#*=KLjRiKIvhlQy=WWcjF~`O;HlDTd92JUYLNT^n_h^BkU|H5U&&CVt)A>R=
zPiHt(cnsObO)Rvr$i`9|uh>{@<0TtQI88VV95dR_{M(pfXVDWzmCMwt>|z_Q(_vX-
zjr~J2mKYEslW%gs^9dhL92I=W#=Bga9MpHP+{OwUKiJr8V<i`V8=u<v%*JXP@7Y*q
zW4(<vHrCpB-^K^BA02*h3F3uQ8fO*UfIhVGk&TaSe4<*o@6Y57*0R}@8CbTuzLWUe
z#uqleweg*eFKv8f<7*q=aK>pO^Pw_2$>2n@fGyo%W222tHoj+IyPJv*I55$u1HT8A
z-~)%;;u(-FHn!UM$Hu=lezftEjo)o-v+=WyUu^tp<2S8xQP?{d%?PK@j2=hkA2$B9
z@t2LiZF3Ap9eyY?q5JI7T%a@CZS3Gu@1PD35gjBQ)N;(ndYHv^n4Zt*li+$qeIB}e
zTRTzL!EO$Acd&;8-r{fB*3396M<bSmn_7(n%fVO&*E_HsI1Y|=aGV3zf#+av2m3hi
z9i$wT9aJ2o9b_Ej9OPAR;F#4fD^7CkXybY4px~hBpyZepmHx0U9<UMXHQG5Nsty`B
zXyTx$gN6<oIcV%)Pg!F$_{1H9d<HM2TITSNgSMH2<_`99(1LBZlTp8L%8Y27WMi{1
z2Rtnu?CaoQ2OS->a?skr0S?+Z*v~;52m3o{>zE@wT8rjBM|ji=9Et}zXz!qdgM%E*
zI6e7v!7L!GnvLRoVQjfOAL8Ip2S++M%HevBP7V%taD?fC#3~)KQlF2maY>|mjP215
zj&ac0L6<l_RA4TLD1GLc4v&+Mckn+4LmW;hbal|p!Kn^TbI{#E4+keX=<T4VgA*K_
z=%AMacI%|x=H!uf*ko2TGHv|q<KScmr#R^Am?Hu1lI&~lw)CH4?7@=hmwpcVJ2=z9
zSq=s`INiZO2WL3o8_gVwY$LY@nk8poY58migB%QYaE|(g8v!fg9OslbM^?2>h|YCz
zo`WkKT<PF^2g4j(<ltfl!yTT2;X)HAb5WfOG7U2FbcQZn;^0yTmpQncW0;pObP&i%
z$5~AK95cMudX<9_4n{e+Mn+imNC#JQ>?O^`iYSt!9bD^RjDzdgagB^iw9nUJ=osr|
zMGV3X4#qin#lfo%Zgg;ygNGeF;^1Zn;~m`X;2uW6!L1JNaB!!C399Zk2e+%&7!CFp
z_bFOtrFS`)=wOnvqVPt;o5A75@OvFhb}-e!Gza%NxZlA84yHI}N8n8XI>TL$zHx0Q
z=cs$o!E^@?amcaPY8yF`wXiOBZnVxk>R_gW=N-&-@R)<g9X!Qh>|mCI*$$p?@T7W&
zi}sb;mAJ6;77zX5raZ^NGY+10@EoU)&h^%{-nj|#TL<)t%JUq&;9!x1#SZ2>c+tTE
z2MgJJUM}XElQBCxN5yc*tS$8IB?n75uN^GqaBY-eudyxcxI)_`10JpFuQ_<#!50p`
zbnu3QHyym^V2y)i4&LHA?_h<4w;jBrFuto<NoP2&I09*qweYvn!72x<*}8tFH+dn&
z%u`;|J0Y>w!TSzAa`3T(4;-v>u-?Ik(xe>@AqJW4<x0XBx=4QF;8O>maT#>XIVN>D
zgs8^8<4ZtH&O+iV2VXn*$-&PKzTrf3@V$c{9DL_sgM*C@HgQ=?CdM{0<BD-(aQ6G#
z5Dx6k>^=uu9sJ0$nsF3zX)-H`Ybs)qUmX1E;7<pCIrz=N?+&&(_=7Q#8$8Z$kWNhO
zmSo38BkFGl|2X*9!FH`M++sN1*nIjx<1|Q~bWzL2H6BKL{Bjd&yZF?_XD;fvsO#c>
z7Z14D&Bg96M!UGy#U3u|xj5RzF)r%6sBzKU#a=Ef7q*Lni=qq1h3g{YB5>ik@Li-_
zq+PSi&^I2^Fo5)Mu4g)h;mx|pxyZW+UGsSa>Tqa9Gm#-;eCTS)McG9o7mZz1TvS~&
zaM94+d5?w*EE~liJL0NUNrr1r7foC=b<O6&NkM}=W~Kw@Zcj9G&F7IhR9d*$+eLd9
z9bD|=qNR&AF7|h^uZvbLTD#cKHLE=*FAo5oFPPISR>7&kfzj5*0WR9HQLecx$%b%(
zGpby9*8gpG99DXei-TPp=Ax5}jxG*ie3FSnU2w}_?l+1*HR<8uE{<?<q>H0mGt*fe
zryjFdH4nOImi~8k(Z$7CRB&;ui{o7MadEPX<6ZpEMNbzexajJl8?XGh=;87^RK^0M
z7p-G+x*O+TY@ImKMK2d8x#;bhm#{c^cwWPkYu3VgS%l;i7kypycQHV{cB+fhT=Y{g
zd1w*&%(GWoKHbGY7iYLQQ<{tnYvFX`i5SOr)XRfh40dsmi;G#Kiy<zCxft$ZsEc!5
zoaf?vm1P__L}`;<!&Y;HVDnkm1sr2YTu7JHiHtC><6Yw7QWsab7~$eF7ni%ZQbyQb
z{x091xWYBpRNKWz+9O?D?P3&%y3`nC{%D*(9(P4|3CFm&&c*F6?r<@dgT%$nF2=jK
z!NoWiH@diqLf_n3=0E5?du}a~Zpj2cHBWMj%uaA|n~Pgr^X10JWSsWN`J>LAF79%1
zw~KqE%zK~{T}<K_&Lq}#H)Dp9dtFR+ai420{_{s+vgJ-cX=I9vsV-h}vBbqR7Z194
z$_!CVckz&mnJyl4F~h~fE*^35sB0eWi|mm6dWG>}ao&7p^KlomTs-0O1uo<2Y_`-l
z-+L^}XMTx&SG(r8c*eyGF6O&<*2Qx!=DL_C%Y!aRJTE^h+|BiMU;dXUqrs2ZzvyCt
zi-j&0vFr6m_Ea{tyLj*CBxBgQe)1H3hVf+=OI@sVvC73O426qjF5coubMd;1H(b1_
zx*o5SpoeTr^lexYT6^2YJ1$nl&3u<pU671Ep}(B7tiA~;)%f+r)vVXWIv49*tZ}i{
z#rrNkhzmwNNX;KNCZoSR_|U~iE<Seg2^XdKKUNqM>J)~VuBS7fv$%^rJv8y~C8rzL
zNe{bw_}axcF8*-wr;Bf0eCJ||i>)p;xY+1olZ)?N+*vDeXRAbqbmApD@dLe5*f(<w
z^Du134kp{s85cjf_|3)d46=(~T>Q!?b*uG@6nM{w<W+Ibm(+^nHrZj>$$bCI#oyet
zJk;{=kBfg@>~O)aaBkNW=61}DfNG2n_hrsIF0;Jw1rN17)bUW)GY4ICkCu7PNTklZ
zyx9%+@KDb~)<e!ieGfGrJP*DH%Y*H~@!)zGHYVBCHlOw#)I34L?^zKkOnFFq$an}?
zYD|)!6XaLL>Porab;%<Jm}K5V=%M1F>Y?DF=%M7HEdAdsUOn4cg!)XLlSnl1(9lC8
z4~;$iolPzolURLga@ipX5-PJ^+HdNinTI1h9O<FChrQ?_AHwm_!o%JkI(Rt9!#*Bb
zdT8Tee-Hbz75ws#XEv;M|4X*=@O%gJy|4XZ3FZ8?_0WzI4+ls-$xl$3^7bCcqq6+=
z;K9mevZDyE0#S{>Lm6Zbo#YJtIb3A2K0!u2%EQqfF7$Abhhsc+_Hd?(ckytnhu$9g
zcsS0(@g913=;`5q9=dwy=ApaP7z9RuZD){=Oe7c?k`p|f=%JT~lRPkh>>U%&<|d?P
zPcr)Kqmw;8oPd5F`g`c>ft`4&htn86eFBcoGqyy^2Y5K$!$1#bNR6f_WQ|1DNTk8D
zJe=)ekcYt@&h>DfhjTm(@i0^l@cU_0BeE2In7do@d<Mb8a1R%FVDgT9;&w%nNCnP)
zl8Zflt^`+lxXQz&9xn56xrZy%`_!RtY%Fo~^~uPk5gtZ*xZ1-g1}C#KCiIN~p$-jF
z`C1QSIFNia@^PJqu^wi6c+A7~9&Ye3T_GLk;YJS=*|{EW@^G_<2_A0qFy6y09&Yu_
zV$1L7F26W2ZhS4Sgk16XyWPVb9`5vT7lU9Ws1Pks#Mk#W>j`!4_Hd7f2RuyiaIc5S
z9`5sSzx28I&=d=ja3dgcxt{7_nyPz{Gg_NV^c`bbBjHGUNDj~N@UX}u!bgS7y{u>Q
zaSyXN*?rXUG26ov9zON(nTIDmJmujH4{v&S+QS?V3q36I@QjCN*&`n2d3a7$v##g8
zozGd3)58}$%=hr3hXqn#9O#TY!fYjf_BUan+G1rb_3(;^mpE)VVzsC;2rqLXjrWmP
zJ-p`Obt%&_?Xc}pEz3N-<zcml_mum#hj%?J7k@{{E?(hbrH55YMr%8bL}6!jYdoy=
zu-?Om9^RME2OidWpp&eE&%LuQ`a}MaazFO)i3rPb<!8W&4CCh%dic%5?_B>qeC6SL
z4?if#Uwio0!*?FOQHWTC`WrlK^stE&P&+&A^GBP9)iJ-#9=53LuO7B~_|d~JN^+y2
z{!g^S1xh<6qjazWenfuf5yCbPe{dvt*uhrBz5I`dzc?v0LRfor7(nu`6qqFEjfYyk
zS>=+#NXR7b)<izn^|70e4DT@d*xkn-J{%vek9t1p`>=f2{?1`vBf_#ggowT-&B&8@
zK71c3A88-0e@#Z+L1e?}KbuC(`pEex`6&Cy`v`r$fQBN8zClgRT~me<2Cd?w>Z5@a
z?%^hwF$!-@s>SV_mK*!n)5irqF7(mFM^hgs`sn4OnUCf^j#W$d^3lS_5#oFM*vChE
zA02$O^s%px{d~0XcaH5=bXyfMAcH!Z*W35^(bh*hmQ|Da9|Q;Z;Qy!aDCk?ZJ!1wB
z{bAb=@^P?qI{E16;}9Q*`Z&x7*N4_}I~oJ@pJciIz5VdG-Xnb+rLsr+=qx{vQIc*@
zxr-!>9s_=y`0+meC(_kNcON}`bW@TFQCIf#ae^dKGQyL5^!9P4kF$LA@o}<`em?s9
zIK@X_AE){_jZNd4HnCQ8^vF^iBm)(P0X|OmG0?{ua*R_fnl(`$(Mbm3Y#)Psoa^H}
zAA^0I<70@Ap^E3Ow$mngRQ7xy!(?r^kaaODicFJpYhC2yVjtsu+~VUBAD8+V<>MM3
zm-)Ed#|Ra<LU^T*tJvxC_Ddb8lhf2lA6L^Qbr8c&S4aD}*5^?@ZtyXNi@%StQiujB
z8~)Pp#H!(Dtsdv&Mjto%JXAJE?3NlBwSq_QQLAsI|N0W??III=+!jmP+lf1T+^OVU
zJ|>DxY0H1u+%YNExm$$q^4#lVvX7Ve<d2UZMab{>@qmvhKBoGZ=HpEt%X~cOW4ezy
zKA!RMkdGNY9`o_IiahM&(YWj*B0m-rv@_G^<sd`&n<e>E+y!FICq$lPz3mf!H8g5Z
z`}jC8<XIoj`FKSN&-<9`W1){lKITdCf{*$9sR)%><VDFBZ~*XVR@N3%;$sO16~|jD
z!5827iGYt98RJWRJ_K$^MUK7d<24n3-Nzduk<I+UwRqzBmXEi6eC6Y7AMf~h*T;J4
zEElfyvC7AaxD;RhW!cp})=Bc7k2OBl`gotA<1?ReOQVn5e9^8}{mteamY=El(8ot?
zyN^$Ne5tZL7-qXZ^+C@+^YJ;Sz?5X8gKItgZ{iD11bH5P#O536Z}RcIk8gc^=VOB;
z8->mGG%oQoI16hfe~@I0aI=u-<ILr6D;LIWEs~$OEcp1v$FE!=Q)XcN=HquRs^Z&x
z{Go#NQ~1-zUp|mR?G*l&kjlvv{_*iI*TDLT?Qs=5c&jf32A>yX7^45B6SZWG`s}Pa
zDb!VRj}&%`<-4c&_YjGwi`iNAVmTX9lY*tBor0T!mx2@J)=O?{nefF^!e~&j7MjXL
zIz0Oj$qI8RTpoY#C`_RsVNu9vvtT8KY6^!3I3hrU6dI<G&mhd8Q3{PyxIcvlQha6u
zO;YHWLjM$+rqC?K&uieQlzD!sc?zvkXq__GC-+L3ldl#j?42_E;6B2ZDeRlt`TW%t
z9nBiMUkVHACJ#-4*Atj*lfwQf^Ke32A;|&Eiur*e?HQ1AqJ#KBDc;LA`W=Ob2<ZtG
zSo>iqbV`|vNQVoL5b`PqB}b=lObY)?p=%2KmSg9XxtujLo#>J>bL!ZXxx~TWaVZ=x
zzUW-@+IvUGOsj4wbWfS@W%Wqm6n2N6s_L1-2@1lALi*54<RoG56lbLg(aAzy;Uwp6
ztiCCnN;kw$OPR+P$p@rxdJ1Q!FertADV&kQnJJvbun#v!N449US2=F%k~{?oKHEe6
z!6}@R!nO1>g+`r{LsGaXg%b}nSwq<zd3c`id?6hkmcnrH3u4KIDf8GNvo22IIz2Rg
zNeY+JrIdNr?(!6_5LwbC$>f#dH}k2^6h?@T6kaVHCA>yBTDak#1WR3)!qa~x*wMU>
zG?x9Ycfqbt;f55(rEp^kH>EI1J$SS5b|D)(K80JvZxv1u-WKPwukVQYohjTE^NA@i
z&Mba+EV(Czd&MWmlKV84s52#nsVQ8O#^^Mrv5(lBX`GnG^b{USVM_{IQ<%XZv`v1)
zu(U`%%2xnVcqD~KQ<#~;V=26m!kZjRDa=wAzn;SE6rK=YBz!W3xhc#`;VJd_(<#gm
zc}Do0@L3@rv0&dlFV0)=FQhP^;o=em^BfDaICx%^P3Dp>R2Jp@E#`DiVMz+idRaQJ
z%Fa^ZEB~?oTFhyIW|yV#mh`_$;q4UO;R=?*$0@uk;hGfIrm$RmMG7lLSjDOoR*S!<
z8lzDidG&q@AILE#`CBK2^}-M1s-w1iA`73T@Tv48e~6!_@P)F-zl_^R{&ieeHy#;k
zVfikF4I-Q%8&lXM{=M*rSiV_=2Sr?&r*}#In8Hsf{G7rsT+-A0UJ!oOSp7R%D!CCT
z`MYqN@DKVR!omDk%DhER@{jcY6>b;q5GK+v8$^2N7GFzA{yPhWT!ibUv0EBV(`c5)
z?rHM~rJqJBjXlz+mqvX_D74e4iMb{6jUH%m(s0ve-SC7Yyo;BPH5;UnNh3%jD@j?H
zOCv85rcn|p2#dnVENi5lN-U|ScRo$jP?9hB|G#N8PGe8Wn+REuMOd(T8hfR2L>fn?
z(ISn#(>NfFc4_P*58Db`rm=4tt;F{ewiZV9wh?Dr_D`ETHBqC82d2?pb&+?7bq-DA
zpfnCnqocCu19K0NpAkPS*6bv5c${@q8b_zmJ&hhL=o!zCNuzTbU8L4cYR9H=TpGty
zl15j_BM(^x9V3rg&19dgwN7@EJ=t(QmBd@Xz0x=-jiG6rtAf254PFIGqmPm-a&j7{
zi1$t7RFTut=qIwvY=0#O2u~LdOydj@S~xR}vtrI7^Ldb;#^AJh;+?;9(ijqRzU_5h
z8t13^KR8B>!*y61m#59<H9T$h<qL!)7p8Gh%r8#k67frgm&I~!ogBSaq;aK&@l`@f
zMx-%P{A%H-Sk5E5YttB$#)LF(OXIpU#-?#Y8spNqK8=6+nGa?2t_QEp(w`gI3q^Bt
z`N>tuo6@+N)10>h(jbl(-XgqJ$UXY@H16Om$iT~(`*e4*H`91rVYw@fiSl_;8h4A_
zBb+L{H;u_6_X+P8G6D~XOiAy2_L!1sX*|d+K=Ox#kESt0<YD0>LT+bN=5J<PmV;py
z%knxv2D8(6f&owCDJ}(Re3Hh~Y0OFEO}Y9^8qcQjTH37b)PGK;UP|NnH0Gu;FO3({
zcrlFyQl2l2R#y&k>XR=_W08t;VDPtCI<&SVjhDrj$|fbRh`cHxHCgs`N#2MhW*11~
ztu)?F<DE3tDfeCFu1@2<G?u5aLc*14tcojTDVn0eHEFC(<Ab!>dYF7)gic1Tl2CKK
ztdW11#z*25Qu$MvrF>%=pQZ7+vc3?0o5q(iMYCVA_qjMI8P&@oEdHH}ZxB*#QySl=
z@q?1g{UwdfX>3VjD;JGMi67JWDfaE>SSRwC_$#y0_&tqn9HMFbo5mk(X&Qf}@wb%u
z@FX86;H7?6&HJId+}N(%9YWgSj|#~Q&f>#78UD!=YKzk!OQeplZU(!FP;GaSJ%sgy
z^)sjuS*0jZ$5ztGfD$G->imqkmzv6$!{9m^is_6Qdl^bZ$g?6jA@7hDGAL%SA%l$>
zlrku1@O%byGpJ-x&0s<Xw`I^EgN7M&&X|?05#7ipnq|yw*2Wq02H6n)+iAvp*0qVS
zX@>t?kYtj|%`@05gBB{dcLwc6DBmZ8mKp4uK`TiP$e8t~bq4!o&?eSto5B9#yd%jX
zyoW+;C&__AwuN^UJ7jQB1_x)*F)EnhKYbWK508?3wMyhLVJ9I?@#z%m97*5!=Z``r
zkIvv2De(R{lU*`6HUr-MIWB|$WzaQ)<1^qAckF>?>Fbu^g>Iae!TA~V$e<^6_%C}I
zoRGnZ;-?CGWpIiJb59cKE$kyaS;%#pxqbh`Ps^a6l9cxs8IZy0BGHa^Mx1*l$3O;W
zD>+CwL^xP@PR8uoG%{4lbA^$F!eJR)n!#lm443?ZjM-{06ld;58C)FmOJX~hOLA=n
zV=}lRgDW$*DuWRjjFx<423KcrjW}x=6_Z^xMlEIXx(vo<FkWV_m)ecO8-(M8^dTyE
zQwBFnvdhjbO5Pd^Z_nV445nr<jiEr|&WyR2z5Kw$T^UTwV3O4C&)|U!?iQ!zdos9J
ze6sL9VYL46H7m}hDH;_V9-QD0(qK=s*U!qBjdi+)>qEjB!iR;AWbmlSOyOg~$A!G9
z#}Pg|o`X+h@MO%N;+&279Fb=-cs7<im)ZGl^1KXQ$l%KizM>BqyqLlI3_i?YfjnQN
zS~w#XX7FCoJa0h0SXnP+uq4B4r)GRE&G6sP`3I4BMM+9t&EU0|zn;MxG3V3Q%zZ0^
z6&b9Q@a+uV5qUS(SuVnlEUk(qYeiNI-^*Z)NMwrE-dFMi;W}acJ<Rn1UJ3c%X~~Z=
z_*lXo{68knDQ*NAe3rrI8GMm3-&}3qEJ3U=m&XGfs~LQo!FODvoW#iOCcHd(=TmBY
zu9$?+&u_}$`wa2{!T>*HusMTz0qO_XlEKytb`P*eU|w4PF@v8n_&H-<5dMrCM8=%O
z)7sw|{Hmyu|CYh;;@h~?=*8zhl>AfpS7zsx{C~9Y{>!Au4k7=1F%g&rIVr3qWb(-#
z=7hAil63;qjpe)1NquaG*RMF3`NYd*2PSF)SOM$+PJja&Cj7RhjU)Kg?qcGf7743G
z(hbbW^q9+CK$r@U7NH~~5(u*aaw5@~ECeV9*gL>J0ZIYN0h$NcD?lXxzoAE)Q^qH&
zyb7e35E}$&7??|Njf9PbOzs(=iFi|CvsivZ+C1+)xJBa8hKUw|In7_n$CCo=8=zHy
z)`5AizrkK+xN^eo$Evw94@mOT2fLt6fc*os4RAn!b^#6!&@pOGfDVEA5MO%|JyhAY
zYjQpR`y()Sm)O`t0vsCPumGKcozLgA|1+^@iOGr{*Wng<WPqaryqv|-ERGIvOn@f>
zJQ<*KfGz>92ykV9V*?x);LHGL1voyy{{r+2&_6&|N*X451bhlH(M>JoSnVEQD$h)t
zBzn?Ye$*mzmHz@6pjUvC0`!*T6k(q@_hb?Fa$k{C1DqC^6)gJkU~=UU^Vr(}wv-?L
zS1*tZWTleupqk0E0}P_KJeLfxdp<EZz-58C;C4=cApwR;^L!zd&kb;%IQxZ3{)Q<z
zJirAa7si?w1-MxJl2~%7$lRJFKU&yWbA(2&3NRwT0|BN47#ZMdh9$sV0Y-61IEg7i
z;<^CWsC8TcMl+0jjXl7az<d$+m4nTniEvbm4ftlI$+|&EGEU@1;Y|T<4lq8zEphJc
zBDV@B2yf%m(A6ZCy+aZn6mf)448S3GI~N4S<Zi`~gZZ8S_r`p3fcwPn7e-$;n;KwR
zfCmFi5AbQ$JUQ8;rRf(A(TCWZ*VLk9h9=#^fjNrc?~wqH#(ZXg$723?fLY?R*${m_
zmEQz@D!|hLnq|>Ei#Y+F2{1Rnya3MzcrGx98P5mi@?)`8f-58!bFQL%itmMhe=(Mr
zAK=A+e=VAD_D&4!n_R%5>zb*$P*ZGCfW@>BU`c>~0{pA7@p6FI1H2)=RQQVURZb-l
zZq3|Y-wd!Uz~=$J2=G>bw*$NvU`>E`0=yewWq?%ymP?=GZADy=Wtrq}bzlx5NN9?`
zwE^A_@L_<D0(=l)o%GiW8Aht{DL6h{P4aPoPZ;L_pDCBmmokeM*qf1K)cKOrIlwOg
zehu(7D+;hNz@`A-s=L1nut9{SScEU)MQ(i0#XrDL0e)tW=<38~Rk205RYiUjM*2h^
z)i0CgZvlP}@Ru|x-xlBxE;35)@+#6~?%%Qf?E!Xh)5-FK{NN++$t;4bnVz+>=3jX0
zW%)`kYG+YL!rihaVs(Yo;csg?v3nMKNWv^icz#ing_VVug`b6;g_DJwHO+~Bkuwob
zWs#QUOx8>&#+k^MyJ?3C#B7%LJB&a4<+JAfFOp&`X_!SxyezB;t64M<i7Z53HOiuK
z7JEwGMA(#rS=~y5?7qFSXpzM&S=^e%-dXIE#f@3qlts&|`J~CkSzMCEzHAHM|IMOx
z7W-w<CW{_f^vq)aEZSyqT-Kbt@OMBKhpRd5vN$k{_E~gL)}dJ(B+@Z!b|`8doZWf)
ze2C;cccAdFta-7h(|;rs9+Ab7SscanUvf&iWN}Q)JF5sw(d@C}B*)7KYW^>auF~wL
zdb`J^_@ey@S)7=~Sy`N&MK2Yk{s1YQltu3>`ebpkl6{3VdrH<kbs718s;W3mS^cu;
zFZ+=jr;86%))~Sxh0J9YgJL5WNNsQy=VUP?i=kPZo5lGOo+o`OM@6Dahe<d*ZsUdQ
z9Yyk@xavz8b1u<Yv+rM)#pPLCku?`QuM%D<9Ggl|GD3W$@M_^GA+xR#8J)$ov1E+M
zby-AZua|vRaf8UXEZ<5<@W(HEJk>C9a~541CU|LReAcXc++inVaa$I1vzW&Qa)r<0
z-Yh0(aWmI{IecdpcZp0CvI&z!?#|*Kk?8n`C$RS^IXjE{vv?qjDe8iUgq%B5MW!)I
zBGZLj{FyaF{9z%Jk7V(v_)N}Ck;k)`B@*d#S)<w$Sv;A=Q&~Kn#j{yF$MrvJ{`i2u
zXR_vF{v`Y#fk<*cze3EtAeQr%6EEM<$O~C>>OG&m7PoFe77N7}2^R}rigTA_L7NQ1
zD_Ojn#i%_0Eeo$@@p=~5<uEpfH?nw>J(5Ga9F}GARu)ZiXqp3eqPICDviLHKce1!(
z$BuWiSgx3_$l@cBm07IHVzv1D!uN!0glmQDqo0SGXCOaNa-DE}79Wbt)>j%n7XL&@
z%}=xVEasn!G)&^FEWXYnn=@nb8?FPq;FHA$HS=2`k4ZLWv56tg;`gla|NAVqije;x
zvN?+_BD?`j;g50dPg(pdKAk55BEJfG7j;_}e`K*+4!bKRe@gzZ@UJYNiZm7dBP8MN
z>Fw+?uK!Y|q;?KT@mfL%ciqRYqhwtn%kCk<QnpCF9O{eI2(36ba^A_o&B2q<7p8?N
zVf0rrnH&NoX_J-aa>y%yp|D{N1rdg{C{oIy97`%Wvj|snXdnqM8Bwi~cw-@R_ss45
zl0&l``0m&~IkUoZls3;{ubdgEErcX{i}2*7We$8Jk~;h5&?;xPs@6i1{c`3)S(_a8
zm!z#Qy6Sac4()U3mBUFnbjaZ#IdEhS2a6mkS3Bm+sn8+9iGP~oqQjI+w>ya(p2HEb
zgjem3%Hil7j)^7RL^|itMdVoFal+$;{}a+$R}r3|br<O&>>1~tki&^F=ernuU6gNI
z^v=O<l<1Sg$vK>oL*E>R<uE*lQ`N>Zgr^A^hkhdca~L3Ux^Q5e%ZrL<GEhpMEgX`=
zpg4E1$T`C3vc}LH&Q<cfSm%5Z+F@N6<Zz{u7YZ-R;o=-Fi8U`5xip8%Vo6l$3MFa(
zsvJh-Ffz^^mBZEIk=iw}d~^=i#(YeyaD5Ip<nT`p|K>0*hZ}R4#(vCUB@(lpMB`4$
zn{v20hw(Xc{&-6c_s~_HHQbuR1PLj>P2_gr9XZ@7a#x%?QDjmMcgK<oXPSEr_vSEJ
z*6tJDFQohdktsP$jU{!s;|xghuE+Eo9?D@x&O8;sWB%DWJe)IMzvu4}kw<fwDe{=`
z@i=#u$lT6}Cvtc)ho^Gp3}{^r>vMQIhdDVs!x@poV$RbXp3C8RDex3&t^)O<lJnx|
zy&y7Q$m21N#s%UFb66A?r2Qp1yqv?T99HMBG>2EX&gbxE4zI>`UKe>y$htTZh|6+#
zD~ES;ST6b7IlL3=f1XHCfxi`!to%>G4H`(a@LmpUa#$N@y&sqTfDWh%I!v_><>$s6
zHs$b94j<?62^WVPzLWej;TJi4sY(5LZ0#$NZ<Na?g}&x!In-GDRubB0t2ao8>k>!i
z_c{EatUq(uoWqtJe$9b@ue?>lpM^gPe-ifZXe|69&S!*Z`8V<3h1-OG2zky$&A-I|
z7V?ChlI=O{$l>%n2IkForxSTxzAcf=oAXc(RQ6P@Jdj82JnH08H;<Ni?3>4Kd7iwZ
znn!~?_Q<1N9)-L)udJUpYhyNVj>>BCu=23;aPsi;<}YJh$vx?G)6;hpQZpq9Nji^=
zIE@5(u=_}IlH`S<F#7rvvx<3?WV0-+2${=YLuoFu6HW5?m0N(a8t1WRti$SPp=ln?
z@@SsNUec$qg<NIU-jeJi<foZvvsE6g^XQVtu@df=$6*Xw9&Pg2Uy`<Y9GFLY@dJeI
zgpo@f@;FFIT4O~A%ae{mCJ)Ku(Es>$xHONJg!)J1abzAx{l^+TJSLCMc`%opRYc^t
zJbLHRCy(P*_J4VF&7)f$-Sapxk6wB7$fKw1oDi2~!Cl28BPU5AGD|!;kJBWfpQniQ
z6`m>!6jG;O9{r;lc?J>3@C=TDWMb2Hv#*_*H#^-~d7Q1XgYp<5GB}TO@)(lGP$e%H
zp35NfYLEDNd7Ll8T6j%kcpeuh_rg3b$>Y*IF3RI#DMV9s7hd)s;T3uFfs`v_J6DO&
z8f}iu<7y>2+Nm=-k83&hLVOWoOdi+e@l_sQ=P@>q>+_hN$3uDCkT-`J<MOyMZ;s(P
z@^4b>hVXmZy!o5Q_`EqPxJ5WAk6ZJYkjHIG-YMkNyItfCVRTdMt~@3xd1~5R)xSHB
zd-Aw9kIAe~^84c4DS6zV=Uw;&e-FeKrix69b(qE0MaWk{XXMT0>xUJ(NAh?ykC}Nq
zmd7)BJe$YkdCbaVHV3d~J>x*amFJ0A@?;)Q#Zh`%!a3|py)pNkl5gbkW**Or&&^|A
z9xsT$l*bYVCyy6n{RMd}RCg@OW3hx$&qmf*@5_0-lE<qmzEqmbdQG*z9(P>SS&_HP
z@>re6d(wX^kGJ!9Cy#fPTq*tKd909~NdGnML8~O;8T}e*GHacb*9zYkeh`;hpT~!C
z^`ksK&Eqo_`8bbH;<EJc^SFUusB9F&FC}E|H+g)U$9H*b;9O26npYD1$L&WpCpYG?
zNyF*SJieDTo=yCi#}9dP9e%TLOCDQAqW>Bu(%YY;{Il>Eu5z&_zlr>w$2O5aV)@2?
ziNEsrJCA?z_&1NMLW~HpJ&zq+(nGWg&5%xnD26D7NQS5t0wHRLNQcOTs1u@Yh?)>q
zh}}Z$9-5`TzDn&8qF#vT$c>lCcnOGEJes0GJA@<6R0ubO7w){t9w}4J56z_^5=vMk
z2$79V<zzezQ4q<?4%MQv5tc)<P3)y2l@Qes4MH@GEi?+zI7HJB%|h&{;*nRZu1Tyz
zCn;>MDk7UL#P<%dPh4Zmn6O~$5c`EVTRLq*>>r{_h-0PDHpHQl9}uFQ>>n7SLx_Xa
z>h`gbgF|!-afp(vnl|~12pu>~@=hTR4{=0@BSRb&YtmJQmw2>{lN=MGb8MDIjtg;o
zh?7F}rZ7a;5Zy!c2+>VCQ7tURT8KR*JW&px@E;?+V%{gj$sziO7!cx=5Pd_O7NVc@
zPZiQ<KEz0CBwVifBR@UFzz}DKI7?2Rp|(?jSy4+#q9TJr3=VNlh#?^^32|wNp&`x<
zF)YOJ5a)$B|39N8iVyLE5Eq8HSPonyWLqNpk!2=X(Pe7I<x-&h3MDDOGVb@0A+8Sb
zPKb9yj0$m0h*=?KhZr5=+7OdN+{g7l#C0KV3vqjhu_3Mxabt*^Lfjy;<091mwXq7;
zd$T0Bgt#@t_z>)@NY3-n388s2ojUwcct?mkrF?IQyFyIlxNVfUJMPv=p_%*Cj2^hX
zN1ALSw>Apz5Ai^V=^-8pF(t%Q=Ee%sL};JCUEMt+#KW=WN9dJ4DE(N7M?=h%e)Kd5
zEt}hss+z^02=S!iPySShr$f9HVo8WOA)X2GLWubxo(=I_Y?;+PA7XBZd6Lk7-UXn|
z$c^Z+lNUoQP>l;iEE0(tNVUZ(Mdg=6EDiByh-D#OVbDUn9^wtf=QZgt4nu;SktF8`
zq}#OcR*1LN%dDDaqX;Yyu_BJi$`GqUd>rBvsjUvNCd69hzNePb$otCrQ20TJb;?~I
zw=uFwCqI$`YyVUVp9!OuMmk@H_$tIt1^isV*CD>48wIQ^n3ezA5F0~m3eEG$--Xz~
zBMrS}M&xF+m6w1*{19TZs@NW4M~E#Uwkr8!h~Gt6*H0mSj`=SlzY2e2b@8gQEyN#m
zKEz+j`Zw19TjU=GB%YN#PDm7xEZ~#^`W8^DV3zlW1vDxE1=KE}P62fb@Cxt?*sXxw
z3+8?_b@q^EO~G6nXR@A>_1RKg`m>Z|mQ4lexRK^ybK5jkK)QgcbTS15BIN?I1>_1S
z6i}3MzJRb`j!aCAgSCtdPSkB{ER<Mea3b=gqT&&65OeOl^r~?Idl#@z0ei||6Jb+f
zGhuV#Ucweanx*}g1?*curveTypj82_3us?JhXVF1piKe$7tl6#piX_G&))&6x?L<k
zFtWxsVcRASD&SzrsYb6l7I2utct`<<s?;9!O#@A?nt6oE9$mmOB1aZ*lnC2Moz4Yx
zDd2<xPAuTq0*))7YXRK~=F_{!N0r8XL}eD~UO<lmdd7}LK1AVSb-fBWNj{vcvc09&
zC$d9l<W*GfsRf)?;2+yzMgjc_=wHBP1zcXhfC5gJ{zbAguz+(47*fC)1)M3#Sp^Id
zIa@f#HZKAUCXek8m7K}*<@vb<oEJMlZ-*5yynqWNxiHqGOHt%6mgExUUK*8B7_TVc
z$^vdF;MM}JQe9UUFiHv|3K%J3LNPeeseR&_0<J4ytZE-!z_kU8QIRNs#On*Vp@16;
zxJlJT0T~y^nSFY*437U#Zlp7zfV&I0r-0iExV?Zo3b?a?y9$^nP1gRjmE?H@Eli5b
zQpm4?-CMxq0;U!)t$_QOH8}Brs<{6@p0m^xC0W;l1x%M3g;b`5<AI((T)-m*EGgjS
z0v;`3rt}vS@K^zli$7byEERlG&6zFX6LKapMI%oY@U-M}gwF_B3$vap;Q0dPN;0p2
z7dUx!MPhydFUl-+=*%ut3uSpx0gFYVtd|N}y9Otg(uV@xmbF(4c&&gp#cAYqS$jjt
zs1$LTj4=1DSpJU4yK$-IDn*4=1#{Z+Q2`$p%!3E33wTd!3zwHQ1+0zv`vrU;zAl!m
zFW^IQ8rjky$<5-E0={Fk^`GOP7Vw$)=fW>y`IjPJaTgHzCYFE8Vc9CdvKu7X7|S<_
zd|$v1v1D@rTVlRd<VPWk|5CuO1vD(0L-*eb_+4}VxDK^=?`a!X(IU>_gUSW`S-@Wf
z{9Q2Tq+SvK6!0%s_##j=lIYxXdjUHX!-RyCCyV9;Gg4r$)h?PHp-vHXi`cD*-HWg!
zp~4<T)K{r`u|aCqh({LeqS<I1NnBxM){iZuib#uRgn=;Hn{q|uiwKKmf2j&d3L?cK
zN+M-pMYy<>q(TGnZI2q>sEGF(CK?yb4zgzvO=P@j5iLdNYBQ1M!o7-UA+mRzyN?JP
zvad)hVe2?|Kan;?bZu$=r1F3w+Oe?>u(|;bETVl8AC$4Kj1EN{RK#;7JYT}WMRY9U
zn<Bm~;*g^G=xe7U4lkOU!iN@dn0k}P((3{<S&pFdMXV{}$f6mpM-_2&5yuqy%sIc`
zh&PMqQpB-Ej3{Dc5yusAd=V!V(VJe;r6Rf)(W3}{QMQ}R{&<r4(jyPXcqxFhpl1;$
zC@h?+C&n%6Roppq`xJ3<5d(@iy}0w_?vx_>a#R$}P0aq%KTX(A7@fz_XI^a>Sj4lX
z#87G$aYhkmveTu*fqIU}*+mR0Vz9;-i_if&Hbj=0j7*(Z#KlEiQpEX13{$D$MO-Ly
zfiNmayhurwy0nPPinv0Jx;)llOQWN*D<$DDxJqrLGglWes)(sYOe^9VMv_-@inzIm
z(b62s=YNVAQ^a*ej8*OpMT{%r`q(m`E9R9|KH79+EIBkxj4$FA{^}*}DdJYi8LkN`
z&i9vZE8_Md?kM6;4i&EUiU3`@tB8q3z89bsQvaQOx5`GI->dGMEXjRE++Q?{*aJmO
zQALaZzuw%eZY`1ri<n;IA8q65A|8_d<H8xjhl_Ybo;+H_Oi8}b#ly$MS$tJ9<G?H>
zXBY8AEPs+CR;%}%BAzK?Nf9rzi<LXSh!^G0b45H~#M~n074brG=XpJ?aqbYK?O;I>
zi`6>|W6O(V`6#~M8cW!;r7?d^<Q3toLRx!WB)U(%O#E%(TSBuK@-v1-ysMz`*7@=x
zRur*PxvPs<z(1)GXGM%WeIr>b$wxv;-WU0xh;^}KeGwmu_s;F?qmPUDB+mU*<TK&t
z!Y_nh7V(wH*FsiA<KJ;s=FL}gpDAHO5gUux6irX*d@ufkkZsvq#Fm(E)l8)Dry_nX
z;+G<R<=`w~Y{@Lnzp40vCH!8*wj%zZauHq$zH<L6qFxF0OZb~xKoS2Iv7O6!344^V
zLj`M<fD*rwjAY5&`-m>T6Kj`Hr-ZsC>?S+RigJmpl)p$b67s?(B{ij;SMSL!m9k54
zN^m8QED%#Aq)RB4P%0rKHR|U|=4Mk+LRN%ok<EMwVF`u*SZ2ND5-KIMh=o+Hme8Pt
zh9xvAp-Bl%Wwvn%d&c&6wTpE%E1`J_dnqgOio!@??-KSYp=AmCme8hz{Yz+7LThR6
zC!`vGEEVaqVA~Q7D4|{4MoM<&wlASW2?ufUFQIP<r<TyMghObjgiakz7!Q@r<4ZV<
zk`fLt;fNBBDWP)-N0x9@2}esIaxbbkvQO+%!m%YBr(WA7+@(p<Rb{)C(7l8nCG;$z
zR|zMTaDwEtc48bra{hXk(5HlxOE^UeyIR4HU~W_eg{PG;poG(<(@)qxwllDVGfKFm
zgiA{}vxKus7_QztyM#d{3@Kq~?CszZ&WUS@ET3D#c_o}*!mv1!tczK@>ZK1C$Qu2*
zu!M_BxL8TbsY&5wC0t&@RV9p&<tt*Zu8b?C+Q<^FR_?VWj1sw~gwZ1ZZ6hlkBVlCu
z`VwwXU2`NHSHj~;-dMs-s^#Vqrj{_Rgz+WZQo^kzOeo>r5+;{$TM4(9FtLP5CETIn
zcb0Hh>|4~js0rkEOW~fl>L>#Dm2iIv50o$^Zb;<nuE<0)<-roBOCj?4p%P}4@Nfx_
zl<-&_C>D9NgqgA*RT?2J%#zORxQZuAcv6z5gii~1c}wza$=p*e>phgYCCuXrQ^G$b
z^Je-BB`hytMG5muc##J`?GikO;c3o-5*Bh)?AWnLxLC;KOC>BR;pGyRO7fQQl{oiR
z+7y31mb_8Io8rr2$;!5gw`2Z}$h(|wI*z5QD@*vKgilN6e*LNvR&!?Y7O;?HjmTQz
z`z3rJvM$bDU&4ptAH|Z7MflXpXY9lh_`J$*C48Z1d?)-;$l!b>^0n}r622Abr5o|g
z-Js+~;ieM47x_WBS-3?=&8;Fomhe+7`B~(b5`Gooy-uppli%gfwi5mj`BV6puwSDD
z75*(@JJ;kg+%k4>*)QYSfyv#=NS4i!cCE5Gr{E(EeRLfXWz?3Wj*wY(MRqIWNL|(B
zfzuvk)GP0NR<piHjnER>Lf&@g0PxBvl~I<&FC!&F3+Xa4F%LwtW#mNi!Z6M)lu;Cq
z-h{1`Q7xMta8(%%%4k@|N+lbW(YTB=%Q&lyJ<DiPMyE0kFQaK0&C1xnjJ9PoFPrUV
zpE6pC>{Uh!mEBv(Xa?>3AKprwMOv559=D&A+my|YNg;m+lyQ)B+Qpg&meHQ40I|-l
ziFR-q9aWsA4w3Sq!o!4AJA&aY<HRz0m2p%VN0-sHjBd(3M)<!nI*W8+G~^FW9VZFN
z@glpb>mDb2#G2IUDX&h5eLJa)-cmcGj6P+YTt;6dqxFaSr^IDXm7J2(MEaG{zl;H8
zoL<I2Nmws`REQ!I@w3YqRK^`;+*!upGR~3ab!7}GV`v$}${1e8xvJuPWt}J772C+j
z1!Y`W##LopSjI(VTr8c-RO%AprIJL-my2KVA3G!BCX6X#WEoeNF-o~~^_n<~d~_Mt
z#&Vj9tc@+>dI@hR;}$88Q}RaPO~RYY7$4i&<@v43njpMQczdjKR~Zw_c%h8>WlU1m
z)H0@(ad#Q_lyR>l^yj`ZCW}X&+#kyyC}T?8eXQ=mGNzaDNEwfo@ldS8A~VW(ST#~7
z@@i%okCpLc8Bdk*xW?hE|Ja``{zNQck*CX;Q^wpf=9TdbmkVW4{+tLsd|qzsiWMch
z>Uyz^1!cTb#=B)KEMrj_Z^fk+m$5YFFNrKE<K_Rj`brtEmhqah-W0xG#v3B6i&aDc
zS*9j1`L?p6+M|7Hxg;y%C{dqhUN5vT2NkQ!cuz~&ns{YfTgLn1AL?$)`Z7K&V?-4r
ztN5slkIU#+MgJ;3DdW>JW>oNS#k`jO8P~K5$`yRh1%zL6E91*DzAEEud4&qT5!ojE
zwv6vYHk7fsj4k3Dg`0%mm+^y0bQL|i60)_7A0_-r_-onR(EquNU&`jv0Xdt)-*3wO
zy}a|QEPs^oXBmG<xI_52kedI9{9DHMSi+5xALfqiBt>df%<dUUYFALFg1VCLR)Ht7
zyKoO-y$b4AP$TXLtqN?B=)n?RigcBvL2{yBL8^kZgc)I2K~O<fJXb+pBsvR@E(;VS
zVcDVx&-E%5R4bTR!K4ZrRLs?h9mglfR?x75Min%!V9yHrvLO{Tsi0{E$5ha{f@T#o
zui(gvxh}L<1uZH#sDgtl*t>##B;3D(mKAd`q*cY7Ztok{OWs<N{Um84j81RcR&YQC
z?UZ|<jL=W&x0enp>L7zuCMR~R;1H=DD(oaYOc?1Lu7XFX6ixBF`bSl8w1g%C$wZe5
zj;)|i1t(W<oC=;0*L8fPRzX*hZWVN|poe%*VRSYcd3d5Ey@V&Jy58a(+x&-0z9KQX
zcH$ICmU4_WN}g6hzY2yj+7<Md{EQ0DtYCon>GFh@2Pzbit7nlb8GSE^5g1g#;EMS}
z=W~Q4Lqs0@H*uaUjI7}53eK-!SOvo?xS)b7<lBW6TqK3dRo%rETq-$Rbcy7Q%w;iQ
z?U4glR&Z4XBP5UFPc>$dk5X}xYm_@$X0NSaj0n}P6Nw^reFZltIj(|RMQ#+*)J+xK
z9P{xaw+J~(Cy3lu!R-~CxUacd$lo0j-YL9G$f16B#ms2_rit8B!M(9$as~Ir{Qe3a
zi1`$esX{)x`(Opr#rfXEL$MC|d_MWfAzDSdDjuz1W(AK`%#q$ahP{HvHFsvojoB4E
z!IiCor?{qRAHTX|;^_*WshH!XIYJ&N@^e_vvX46I7C;5hOFmafHOl8#@FFK#6?;{&
zpn`=JWU2_NSX9B{3O=sjlL}s{U`Yl1SnHY!Uanwi1*_;x)8t;<K`MB&V(yT>S~2e(
zyjH>M6}%zNWN#ik2T77;lDt*H+ZDVczEb!u?X)m&B`jBRg>Z7`L?m3TO5dxP*CDBM
zRp-Ro3Pv?ayf4WI!ga#+6?|C1M;t$$6D%Gn6F;rsvkLyH;9o|Gepaxhf~_*UqiN#H
z3cjk~YgM|5)3#aSn+m?I;5){ao>#C@S-q}Hb{>{EXjp>6BZnpE%=Z=ipsdXt_Ppvl
zEJ6ISf}c3Wcu8L!^fMKt^NW(d3OS+}wBIG)R>3s6O8irjzl49QMF%xYu%&Fm_6qi>
zqF&Whw1b};s3KWKEpBkU+FwQ8D%f5KYgh54iiAxQyGdbp;k!pC=^;(gLj5Y7s%c$K
z)%2GoB(X(k%B{ky!mlD#1zXK5{@C_(6;T9;*(!2X?5QI8D#9v?;+!?~ioXJfld2;x
zRZaJmtEfn)Dr_KZC~PEbEM)gZH8!c@JwE>_Y$l|<g>+g~(OP70;XYNg6rsYts<#;*
z`;R62SJ5WsTbd@?R&^nc_v0Q*99T88_(%p*Ukq!nWCu2rA>#9&!j8g2gcKfH#bM%|
zV#(nmM^wQF3#o9FtQ{>ph5@XiOBKgfajGQj{o|@Qo<3A}&e^V2bgQCw6@9AcUPX^8
zPOO^!uBY@*5b}_T9(EmKu$TNNIY}01kiV0w=In+?HK(X-UzMT}J|D=5d75%rWB_}O
z-vX`T45^)7#cg_1jGAY1bX9SIjGtA-*&?(&NMvvo=fsjBRSXqBH<p}N#rZKGR^9nr
z0nZ{YteP7lmkKWuUR=c`B9u?bnlsJIl)Su(D@3joUL~}1M&arzMpf~474KAWO%<c7
zc%X_YRa{#&M-jJHF`<evRm|sC;Dlp^OkQ8b4KW`la$^-YiQHVp_$qFxg6|zy4onco
z)=Ls^tK#-5?q>6O_TAh(vchM=@2KL=Dz@_af7PtR{7tN4k~p6gXYwBDv&g+7ldHH-
z<o;ORw|-)36)*AYqg5=cVj3qY?Nl+H1B3T^s(7x7=c|~Z<ik}w!j)hA3E@m3H6Igs
zTsTWOTX?~q=GM%URXn96`O{U*sp1(r`IyOiHkLCvH|9&Km{-LMO3tTyA}<OT2p0-j
ze38gv4i8mC39k~oEa6h&E5cWW%zdqj*Tvru?sSju@ANc#&|6jTx;p3GyHzab+-!jT
z8(>8hD>aYO4X{dsb3+vyt60s6U&R_pJ`t`JzAxms{h*3<;_G9{haw+U@v+Fx_wwT0
z&qO{Kej)tw|5SYk{7&Wn{_}Aud&^$WdB%D6J`WNiq4W(ADkCB!q^vTMSy6U`b|FQP
zqDV%2FKK8J?WG|Z|La`G?eF(`o!9lc?(2Tv?|Yv6?E47!HNpNS__hfSC`iu-Jzc-c
zVep40_^}BNH^INse`<o?M1D5*zi^O<dw&6DlHZ%)4-<Q+3H~(vuO|50@PC?|Tmpjj
zN1C7lA4>A$-zGRJgJVrlS_;MEO>n}b^7&C>^iqC6oOjG<c81Z<^rMV;Sz$S0c_AN)
z(Xyg=C1GV@6=79jH6hKai`4L+{Nj%T{wzQLxry3-)bXRPA5lMIe$?~3^QvD+QeUKj
z9}Pts2^$NW2)!#NT3UVtq>u;w_|)=+6b$=ei$qia#`4rIE+r#O2$O!KMCg#$L23WV
zr&?KwOqCPi!@iBBe2yQT{O;aY^t-c1Q@^`MH}j*pA7_iV7q$?d<3~%s`#lJ4T1g>k
z?Z>&|ZG>%w=Ly>hX>&enp)1o4esq+0f$&13(}o5Yv0!XTPV9c%=Ev=RboQf*A6@;p
zMEXsBbn~OTAH)3^;m4(Z^pHNlkDemE{J2bnzht`Hk1NFc`q5j2p8K$}S{Q`fBmMli
z((itzO{Krg8lE_Dl^+Ae2MLD=uNDp#GVM^gx<)~!9p-mGS-SQ#|0Dev<;V3hxK79y
z|86k$<NO$H_!vLNihD&GFMgxYTdQP(9~1qU#F?SQH`Sz??8nW@bc#`K@t<7Vgyos$
z$8@95@MESQvrdb>)s%C#Z0`1BnICif{0SQFl(I-T*Laxc$9(Yxek>GWQN7YGR`4!k
zxkO~Cv03iN3O`;_@E$+z71=7h&yUp{oE%XKJ|KM1kB3Aa_G6_8>+*=-{a+QyDk=Pr
zA^93V9`j?p9~&e-E_}j|wI<a%Q%4#<DbZ`pr~KID$7U%Tg-`qO%xMPCs-d<>dG0iw
ze(2$OKenCb`2|0=`>{i2JB2R_cM17cr`Jj^EBK1=RpD!Xyza*ve!R)qUW(_R_?Cii
z3maGPy(_}e#oqtGj}KY+Af63kw;vyIYzNRMz@Pp3_HgnEpk4qU`|*kP@lXBk@$?G|
zpZT%ZkI()1!tb8Q{pQD)es}3DZr}OwmEm8DeB;MHqwM$NTk!+JgTk&im3V2t_u~g+
z`J>2B!k_*4#pu6^92{KoyB~k}ambH9{kY1)Kns8Q@wXo>ESzJx<^0EwGc24be%OzH
z{W#*se|{YG!)KvH`Y}I_`*A|`;=^=4-{*BM)ABY;DGRVr+HxQIdkT@98xOB#ER?m-
z#Dd>KISb`2oMoYwg$fobTBvHFnuSWrqOyf5a>C!o(Cz82s#~aGp(YDl!~JBy%ZLS_
zS#1k-EHtpt&_Z1c_2jC)(7Of1+Yy|u$s1W*9M9L-l(SKVlYT4<0ShS$X$wIMAq!Cp
zF`0!e*cKv|dqANFZzE>`;>sdnAt}q(O1XdaWtkaEp0SX%;8-ZiEN3Bap<uFRF}%Xl
zzNy89kI>x0*`~~1>oG6B6Ye!*OGRBGY-ORfg>x;mVbDS+3vDf&XQ91?4i?(U=6s=7
zT9%5Wqs4Uw+~bi~LK6Ncjm|G()hu+D{l!8WFqTooE*847v$S%Ehuti6m)WHjuCUPC
zLJtc)rS!6J*=Zgw7iTVX*vCR&%RRvLx6n_7{7Mn_<}SStPi27Rz6MV+$imeY?yzvD
zoD8;bJqN8;J{e+RsD*1R46|^pg%K7;np8|U{4{<Yxw4>7=HhKPSQu?#jD@ilrdYVe
z!Z-`#EljX5QN}k~xXBcZ4!u;9EKHVov+?hh(=(WAVVZ?oE!<{dx`i1QW?Go_e=X^U
zNxW3ITbONO&S|;O&#BnC7Uo&lVBsm%eZGZzE!<~efrW(@7Fk$q;cg4dEZk*biG`)6
zgV;XY*iBwfEw`}3!aa(m!YJ=hOXPMxbGNXXL&Cy?79O&&QrXe+VI_G)``RgQOtMM_
zBx@`@W?`L$CoDX!excb~rSb~Ex;!a;y(ydLhp`(iJZ<463ol!E#=<5G+bq0bVY9`>
z|FKnV!q#}s!WP55Mk7A|e_L$3g1ap2u&~oaaj>zeUpy`CD;8c=$#+|L&BE&z-m&nm
zg*Pm`Y2hskZ=cpvr+UH5^gRpjTYMo99~v7vXBJ++do~|g*rV(|w(yC?lSaPn?2h5j
zl!V+1?zQl_isAM3mlnR_Am`103&$)RxA2XHeHQjh{9ee|Z!H`!{Gf&J#JBT(JUzPo
zLBSs_{3P<Tg<m+ui664?r^s&>eivbqKj^<|35k1KgB`@XL&Cp>|FB2Q9glyd91;F!
z;iw2>nf!#jRScj~0KNc90&Xoz2}=h65ib|&XDE1P0A)nV22d`*g%sS3DoCLXIX9BZ
zMmZ~hDu!1TsTM$Wks899LN8S<@!G;VLb_rBxT;nC0CEBMb;Je%Gz_3oz`deL1l+T3
zlEw-)5&8qLM5qTuf&qk#5*D!oh=@dmF=1Tjtw7R(3q%Cm2Rf+$(jpmQR!IGyX1;s?
zg#es@I~leM;Cv-73Y!X>37ZFSb^t8`IL8xtw$C#S!&`}X|57|RfHn%Y6`m*bekImE
zfDQrl44{{O4A(J${{?Vy02dhL!T>rMevt_Onb_GV-9)+s&{gCTW8it~9>Apm^pMEE
z2~%X+UJ8<57Qp4=SDa?hH-LTtED2y~09OXkKY*zLObfVYAOiyKMbPj7cx&RS00xQ-
z5>mNZWUz3EaA*M6nAl-VYk1`vz7YY84B)x|Mg?$_T7yUA>jN0a>htB#07i3==*_w@
zQYelMoV-#SFZ*V^Q!PR>@(BS<RB)1soh)*508>P65qekm^fq0EnOl{=YIWZjnHj*W
z0B#j$@b&<16X&ZS49*T<j)Hdx7X)ypv78&gJn{KP;fjI_4PPX(IDos1!q~e5?h~lx
z0jyAaE(^H-DrE!m9@ISntmViL;9iyXzJPmJ=XO7bVgL^+_>ge5@ZkU+5m_l*C8Ry)
zf8wJ7tda7V@NuDclK(^iPX=&v5L1F!AHW9gxk1zj;;8^O2Jm|Te+2L}XMg}c3SdtF
zn*!Jz!0Q3Lq3(D#fGq)R4d6KiSsga%^8suN;AJT<m|lA^fbHTt0@xYAE~9&$>-F7B
z63JgNv9AX3nz-kg&fiq<odDhvd0Xf?c~_h^?*;I__y@ud1K6#mrkUsG;{ZMh;77%N
z8o*}(92DOxq=&Bq_+0!8;g`a%gkE0X1h6lF{ZhUao+{x16Z}r(dm(-PVDz5?_*wiH
zm5Ncns+WH=mUML}fIkB`!AU!azoZ}L+!(;$#^xWhUoiQR0FF!lPk7YW95eoD!(x{N
z-F@mzVJRVmrG;k*y(TIXMA;ztm0vlDRfOe*6@sWJLRXc7s4VWaNmcP`CYEB&AkGTn
zvLG%GqE-;KgXkE<1wqsaqHYjY5P=}-$-aIN4Y+Ci&~w8engmbo_>F>Se40<j`W2-A
zpll*RM1u%P<O~oF!amJD7DPOVToCyn64KKqHW@_9WJ+%t=~)x&6{ZkGYbj0;#UPrB
zw+P~#AesfyTtTKi+YlCyTgxC?{a=MP=LXS6V%s3v1#x~5=lx%s_Ca)zLJwZ<Om$%p
zor36T^oxS%97Go{7{tXQtTipWieIWWxy0Ca6X|XmvxkD7^IoU%E5ru}F(ioILG%ft
zuN0Q#Dv^FcT*)e{cKw4GU}Bl?K*I+y7sI_QhAMcI@R}fo1#xW<!-E(R#8_iFGKd?*
zuM>_6;(8H!;O6BxTIC;OI*X+m7sPnu;YMRWL1d!QCj~LtaF+9yAf^WKh-xuSNau@#
zm>$H8AZALLE1VU?ts=JtF~?Zm9>i?J>5Xac2;xpDUOB1E3u3;M1;T~Keo+v<%I*(C
zx!o1Sk|35U>h2)!7vW3(%S4t3u_B0jg1A?~`%J8tmiay)g)Q)45D$qzEaU=Ev{@O%
zDg{>u@t6q3M}t^nIR7^CxcJ&2)&=o|(Km=ZDO?|P-|%F@rxe_1Y@QC{8N)XP-8J56
z^IQ;Hg6JB;B_V8O^-KBA2;s~So)2PM5HCpKq4Pix+k@B<#Lggg1@Rdt1m0JXw>N`$
zOXMZt%R#(ia(Oj~*Ti2p${QL9%=hge-jVpR@Ll0YLA)pOzVHL#he9UVZR)khDEvN}
z`X>s0D&*QqdsVj2g)HP3L40ZWS3!I&{*7>-aKG?dA?<nh@?a3(1@V0lKgg#q<nA~>
zivJVDPa;1He-SeFSCQX@zX$P$$RXjMLfZTl#NXn4iGo3HhlBW6$`NDpUl2#dj|q<(
z{e)>ZrYcc+N(m7{X%TM>mkFV42+1m?oDj-|P(FlOA=D0`LdZQ;t{iedZLSz{pPE$?
zl5FN@S>mjF)sTC4x0<lJu!gW^2xo~fmM0!{Lhfl~JmfA$R9C!S2=zl~ARZ7l6gCpl
zxUoo+5d225M7)PYLGe%sVG&yx5k`gd5EJ2(EM9RWLhf}?GK7>!T9^@Lg^bOK<b{P0
zyz4k#2oytT%4T8vhuqWP<{_LNLJRS>A)F_2j<972twdT2&lNIBn-F+Yj-;JYE)+RG
zg!V@1Akr~}3q<(4cG`CmzexB$;l;wv!Y)F7Sjv5{TL|4lxG97QAzT_lj}X5p^Ia2i
zPXKzdz&z&<p_hU?j<^rkE?56v5khZ~KCHD!UtvEX2f&pg{X-aFl&eA*X!sxzo?6p#
za0o*b94h21VH7zJ3=6qe4cCS+T!egt$jA_`Gs-BD>qEFfWVCRMi5)94PB>n8qmU~K
zP7GmE$bELqGVrO*<Ph!+VS3w=n?slq!Y!tpcZV>QqmfZYxhsSj;xj{-6~e9JcZ6_f
z2)BvfE}Si#<8f7!m71&IeBnG{yO3{z$U@;F;bI}}`HsO7@uf!LmF6<Tmxr)I{2rt5
z>+<_TxL=+1fN)I+4~noi9}3}N!ygG@rQxeYR)_GYQTUweF~c7ZVXfioLU_XPCq>o^
zX}>Xqr$bnn#iA^p31L$RgHpIUh0WaGL+BPk_XwT~VM_>Y!#FRDt(^8lcsqo5Lhd_?
z?DTEy8txQa0xpCN+;_MN1o!$7c7^a_2(O0lS_oW8^`#JA<`Cr!P}?^YJ}&vr?&I9D
zua@ui5Z(yk%@E#VNw~&-O<&!NkLx<VS;fbMw4wNJ$h{RA4<iwF_v`mUct3;>LijL*
z-O4>2#z!IS3E@}Gbsq~k6CUJf5&txV&qVeLzZ8Bh{6feh#aAJGZTL4K>=WM~!nY#y
zMw<hMdka*47sB^O`5}ZK4gV>GpT&PM%E$Z#KnTBw@J9%TBvuIHPmv?Szl`PIBL9SN
zSma-$)5Cuu998fb55ZygpmRKg6H<H%LRb<;DG{&Cr42tL?EZ0&ClY0hQdXo~80C$^
zI#vv$l7f|mHNvPOQdL+@NYB+p*bX(rI4g`=Vbqr552KDq{V*Dc)D5Gah<7+{7<TWs
zG?qd?jlw5a^(1c+cGp@Vu}o}0Bq$7pQAUSFo1;;0*+s&LipPwy)8|Wu-8DZsOBBLL
zu_^fSkC1y)MkFiDg^?Gb0bi2gOyz`845KOY3cHgSw{yd2E`GMKh0)IuX(?<aY%TQG
zL2V<>AGov&<NPr03*-JU+K160jLBiFYvAh`=C}OrrS#=tTo6VtuD}y^*FEmUrsE5+
zVf-(Qi^J#~Mz=7!htVaBu3=mf#(ehp@DiIpU>#mU-h*FWj3~J@j2>b1q@OStOPwM~
zxe+CoDG80c@HJyT-QfRU!st!^d<qao-!S@xab+0ShA}*h{_2+@VGIpp0Lv4`Kq-U6
z?p?b<-1S75majxo;l_TvMmEFb(-Vob84<?FFeXU9j$JHrV;I+qj1RlZN!<{}Xa&cF
zF;0YO$C_L`KXgTMlX77a<~T8oNeWW;Y;F!?iblvStW<!Dpt`5xQ>9D`V|o}f!k8Jx
zEVhQkTZMDNxFd|)#A$!K$n3DYcs_$XQ6zG^GmN>4nrAE-wIGazVJwoeM7Y?*-X+2%
z%9n<5cNohQTp?U;Y<73^-DCK@BK+S6C%Om1C}*R*jR(Vci2cI*|6%uJY)u%CD7aEc
zeU-@SFdh}Dc!qoa@K_j+hq0DpER4Njd>+OVVLTbe+h*@rAI9_I8-!1Vu~Fn{=3;D~
z31gG^X5n*i-^t<jTo_xVY!&i-LyFrt)Wg^=<)tuQ7TFQTP7xaH5_ysRTiUgM#prK{
zyefQ6_`0!q)7ZQv!n2)s!gyEwJ<jtY?;D#B!uZhe-C=m8Vn%y7*BSj2kx#?;OvJPK
zB8)G?I3ndMWBGF!Ux)Ec82hArXY~Cd-wF>14+_0XeJ}ol@W(KI65-Voi}6bszlQOf
zl)r=&e;4^fc!);<qo3KpP4c&b|AcW^<X<5hfl>d3aWsr$QeeAt;Bj%16Cyr|CBjld
zCM+#Nn=@>jX?PhMWyQV!P*kwpPugqPsA;33?cOQnR!O9?u!^v%jcOv*g|vCSl#i1w
zNBdbeYT2l5qYmBLXlJ9Yje0g(QRizvHX7JSi#N2<$VSjc$VOuuO>9^;0yaKaRYFU@
zY^v&ZD1+X*c{Sh*OQ({wVcYOteuzkn+K7q7g$dzRdM=z2KUeF1XKZ9`<ZN)&sdH?!
zw2@aVXPAPBW24A+5N~Fqxs9`JaKhn}vdxWreH*y<T3aZ#V?+04)KYa^h3|{DmUym^
z&fC~%Yr9WK8OtE?d>gZE%(2nlMhDM>jqWxswQ+%s3#D|j(N%=@7m55&c(IMnM(?7+
z)8G=@ox{0xlhRsc>tSQ4jcaW5w9(6U4}6!|7+~Wn8<*R-!bWc!eQfmioO9(*8~tps
zUc6diHLv8fQ}BJhs}yexa-(x*G|<Kn*$=XDwT;2HJ1J2=mUC@LCI;PJ8%Ev6WE(fj
zc({#GHm<iZLcx)&BVYOz-)gz3ZV(@1W30$%+r1mfU1pq(@irz(yis_QjR`jPW!>kb
z+pCpg+Fw=KNs47EzMsIppgzUMEjFgwm}a7;+n8bFRvWiT8OHUoZOpRyWYaAJt3c#-
zyJFc>e2Bx~9X9Ty5^*my=GvHNV+)hmm~UeN#{*kQqhg_rrAo-ATV!LgIFsLHV~OD`
z-rY8q*;sCrdu^-`zsD$?j_Bb&1@BjH@(#m8HXgR|xQ(?o9#PbujC*0b(#9$dejATU
zT*Hp$T>=%G?emz8b%T9-n!2@ErvX5+UY1YTcv8e0mK$t5Wn-g_r)_MqvDwBmOk36c
zdpMKu%!dt5SI;WRbHe5P!PJQpWd`}4x3SH}7dF1+{xZn-f{oW~ye^yVHg?$9X=9g-
z7j3+3;}!O%M#xJt@OFn+#hHcoIupe=r0llwk&QQPyrtmVHr})GzKwTmysHty0(d(<
z6Mmpw;6vu6f-%Z-&UcOW*!Wl;J`wJ<@u`i^Y(Q^M(bCKJb2AdYvhlTz<2Fv%_=bbc
z#!ohWwy|Hy58C+7c5jb-YvX`2WrI(6ujG3hKgeKcGvALQb!)jz#Fy@fzu5SdlYouC
zZTx2AcN>Rf^M^3j#I-q9l0R*5H1h7>KQ<1_;HZs%MUL3`PdlbpW;Q0@;y75%-93+S
zw`%5NgZLuuT1Mp~s1QL(1f?SGl#2+?jG#;er6V{a;_g8_1W@Nx#_|7geP7uK%0=9Z
z2%eF8O;<63O0ujGL1j6q8bP%Ps)+NFjmbHevhd8kx<n?dDRPzxa<8c!L7fQdMo=#T
zM|%AT8bpv1Zz$w&4Mfl=g2oXvk>VG6)nrDNg6q5Zf)Rwo!x2Oyh(%yW5Q(@m2LA#;
zOD2g&kWgKc5sW|XiWgQr*}}{y9YH37Yy>&^DMXMLp$A%e9{7G5>r#xMDg8vyJc5o9
zToA$85wwWleA(0ToCsP)&^m&aM)91S8*wM(b`i7@X)C01o(Mm~VOq|#?Uky7*Iz39
zg%Na;*g1lWXe@ql1RP^b&Qv_s^zT!`9(P{>Qf$`<E{V9$&AqSVFO8r_1j`dxkwDJ~
zdPVSS48O&2Sp=7}&3R`!>fRB$B7&PDm=Hnlh<i%On?ije=o>*l_Ae*@2!=**O$7ZT
z7!bi#5{C!}3I_?V77iA2-7_ZS<}KDVEP|2JuN6+_6XXa+h<gUtiH{OqAHfX~j25Sd
zaS@D(z;ie@f=%)~Ua>a{y{L&1Op0Iz+n?|MN8Cd*w~jqaZWf;+yhS)wI88WR9^TQl
z!^{X~sYh;&;ME9Ti{Q2hZjWGg1al&|Pf>S7aHq(<5zG}?7{Q_l=84Z2E)cSVybF-U
z5!@ZYvIy>yzC^h6G@Iq(_Xt-QotHD*=!6@|{n8)c*bsRrf`=n`B;sCtaa$R|stC45
z@O%WTBX~4|ry|%G!I}sji{J^iUIdRvuvTf;sp3rK`6sfW)<;e*;k!YEikI)x5j?{o
z!CO5_yD5UrBByG{<XfbWcpIa(MesrdFGlcE1luFn5y8#~b{WrJnZ10yV!W)VSBxKu
zp8wY)c!N_`6#T2xn-RPf!Iu$y6~WsPyd&d1+S6(Lt|`@f5xj5s2O=Lvuv_G#i2KDE
zKUpPy%p-UNpGs$TtnX(g)!qm`7yrU2-1omW{6GZX7``up{o>yWy<#7X;JXOEkKhL*
z{^*eijzsWN1V2ac3wOf^{+9k*1iwe{M+AqA{i(L~9R4Z&FEtUBf4KXLvjIJW{~|al
z8~z#YSOmu-IB}W*ZD>iK#FD5x5qZJV;tZZCaz@l`9KP{hCW^9B%0*AE4^}?v?oAaW
zR*a&O2%UI-szgyWifU0*kK&P-d&sB}Ma?L_jN+>(&WfT|6a%9e6h-YQ>O|2wiY`&q
zjiO!@&7$s!X#FS}L}5n}QLteYjiYEH-iS{0k-lF+D~dqW{c6eEn3g1{s8AGP6^u2a
z7>yzpMN>t^qew)Ni6R?CGK!SMwETF^J#XIUkmR{2@=+9`aFjc9DJqF)z@SHn%{h5S
z(ISd-qPRddEu&~<QqdKSTSsxO3f3lyc2S%kMcXLOQ|_KCnzdJw4pDS8^<@-wuPzrx
z(McXIGN~B*zbGzNj$STZqqroB{!+RLY121~?&6mUdqmMQie6D%7RBXJTw%)T<;Cjs
zmRTQ@3l(ntlr?j?(%27>*;PWXgjYu~IEr;qJQ2l^D27HcFN*m}cuf?eqZkv#FuA3l
zYoiz*#Rw%I8O5k5u8-n6IcF?4W_p8Sy#la!W1|=s#e^s(Mln8$8|CUI<IpR=hm(|$
z{I)12M{#o$Q=+&fikVT&iehRM)1sIj#SG)$%hAi!%Z~h3Q&V!fx;={7QOt?rjwtSo
zVy@D9QB2~IQ)O5X#nLG5j$&aHi%d&0c5xJUMX|(`*-N!duI`EA-YAwwvBH$f^LAep
z_j8|;_&^j7DlHqFu@6an*w~*c!^$XDMX@@HN26F1#p6+|m5pccnCe9jEH<5RBY854
z^-;VQ#p_XQknyG{Hj6wJ#YT~*h0h2*SI<WATof-w@v_7%QS20<!>#J~=cCvr<ptq(
z;SQnaVVC%eLa)AFd5Et>@#<;%8=U;3*b~LaQM@Jnec{`tdEZg+UEzB|X7PatEBj#-
zyT$4GBNO{c6rV=1*XUl6K9fUM;d7&ZVfyRqD87l}(inQgurG@JoNZ#TWB4|T15uR3
zP%4IlQG6H0VNRP${(Tg`NAX7#KPdR4@TVw#7WpNLU!(X<J;EHhv3On!oC+R_;?F4l
zisEl2`A2xN^)xb%NI4<=FN&j_|D!l=n#J?xp^qihltM%drDLcRLuH9)#BgQ|Wnw4S
zx+xn&Iq~vFIhC-2>?;ac$SNZBV`vaV)flQ7`|2^&h@oZ-XT?w_hPpA-l4Wh7SDsTo
zz3S9c6nR5AX&gfnDUFOze+*U(A>$zsL(p)R#B<{LjKmO)p;Zj6V~E8Nk0BF7Him?;
zPsUDuMazV#7}7>(FlTr(k-V@FgCkOmp{de(dl2oL$8ffyTEuXU2t^j7rQs~txiPef
zp<N8;n|x`|Hiq+L<CVO93>{+lUkn$=&@qM!V(4UIFEr%TZhMhYIva9{NEcyO(_-CX
z=q`mtVlKp<G4zVzz8LQ3`F{+T$1pR7SutD@L+=>I#V|gGK1y<R41;6nE8b6dWeojA
z2E;H><SG_eBbLqwNjcT0Lt+>a!^jwh#&Asx!xVdM48u*?yjD78e_aeW#4tLBQO3{p
z#&V35Q}$y`@WvQ!ieaj;pCB?tI5CDvF-(r(W(B<#_V5;CPlwYCpB}>u!>QjI!)-Av
zHp=ZW%rks;40FWqh~ZAtn{%bGDZDJ^$FLxVg%TGD>61}3xGRPwF)WSY?ilV>6kA}K
z$Z{dgR*2jq^lI(7eL%{CF+5~O;KOQv+IRzlxH5)SF|3Z^(HLHf;q@5S#PC=QFUs=q
z7}mz{jQBd?Q^F^NO#Y<Edf^7nZ2Clq`bH^FOJQ(R44b7q8^hKZo{!-<1sSzPgqNb^
z+r)Ro@Pf$p)1r2Y?-J6I_AiOQEPTc2uPR5zzG0LvV|X)$w_<o($_Fug7{fc_?;4x;
zVtC(hK7-!PU9Yt7BPrghJ9}dISiw(X*emj>vH$Eev(IDrLP0uVA-{^@YX!gIJRie%
zJPMdp`&mxI55(Mc+G+p2AwS3PgNgkyhM&Z}lKf(H27iy?4|ZHN-z^Duw>rcrT8}CJ
zjJbD5|BB)782*Xja16J{F*}ZbV>rScJdR7_uEBpX)Qh8j97kg~rX<HXrN>b=juSC{
z0qfe7#BrubsW>3QE-oF%8S#@}8?mWr#*L(09OdJv9!HHhD#TGy_EqDkBvK{r7P7MN
z^i<UpONFsD<2WmhI!37#M{RNX_dZ$j23TE*<PG9z7{}Rhw1}fo9F3(H;%E|wUpyIy
z6-PikCJYM0afC!pmBfxCqOwIz30WTI8;>I)ORo&6IMQ)s;>gC4izBagpcAkBo(&Uv
zZXG2o#?ds6X5!6Frk=q$ad($#8^?LlTgK7KG;HfQ&Q(e1vyDmBPUIr$ahxAVdt=-o
zj*f9$px6uJ=wx)SxtNznE{>yf99?8ag?d-RFNvd@3PaH=e-A|sjpLd)ddAT!j>|m%
zyoVph<>FVw(L0Vl;{D>dGLF9DUXK0a7@*))Lgwfd!)qntAn8}fF<4}XDFCB}Ng=r@
zj%&q-$1y@=r11JUt`iw`T7TUT$LKi5NV!q5W5ve_$Dd~DReyqPCdM%-j>&P{tl-Qz
zro?ee9Me^vsS;U|X(C<~SV1Z?Oo3;`ajV+gYr5M^`_GBv4(==ooSDF#am<ZlMI86U
zF)xn!aV(cZx>^v&V)2DSI$31A-6ds7982T4TjgiI%S<c_Lu0Q<_r`Hw93RK=NgVgb
z@jx8U#_?Pn561CO9P8qEB94dSctj2#6RwP7wa6+VJ-f{k=Q=s=zJJR3;|i`-rk=>y
zCnY`=$ND%nh@Toc8{>F7j%Q@QDUQv?8x6d6qmwOhY>nfcINpup`8c-4@md_O$MHfO
z+vC_3$BRm}BaWS?C1<|$@KPKv$MH%Wud4mo0-o+6os+zwRBy%cb{uaS52qV=C3!E7
z598P!$NO=7AaAts%!nVwvB$KzS8=BLG>*^W_&JVW<aTcyU&is3_~$bI!esY#9N)xo
zAdZ7l_QkQ^j6nMNR-#vo@8bAg&Gl0pKZyKzTC6vyXi4&G9KXeJB#!^$_+6HN#_?Ai
zf5dS}L2o>;w13C(PaKC;DF#n%tk=KB`B9M*arhE$j~`R;xQQ)Epi}}#ptNGW0uZ@*
z-k4XJ1j;6GNdnyxD3?I_1X{?rLIM>N2q$1CP$_}R3DixXUIJATsG2~{1kOsJS_0J*
zsF85zKyLKrwY-;6tpsZ8xK_vHP8-jFSU-UV3HTGR5@;y1#tAe@ppiH|c$Q4!6*!PU
zFoBSX_44v!X~`{;Kstd;0?`Cw$}yfmB7vmIJ(X||d0r9^vkBx9XqrH?1o8<K5^xeI
zsybfoUe+Em3B~3rz}co4jABX7NuXr{trBRhygDavuE_Zbv`?T-0&NvMFM)PSNI&%E
zIqaZPT|fibbX1T&J0)-tjT5+7<zYsr7s*TBMc%ra!Z20$1TIZroLteqM*;&9xJtpE
z3G_<fvIH(q;EDwLCeTlMZ($$h>lKW6rF`}`eomEkpp<J87?!}G1g=hCuqp76g!`@q
z)3O*tjkjwP7@olO3EZHBBZSupN1B9mK1zz$Afv^{3da~f^y$TpPvAyH-ITxtk%_{|
z!b!&d<^-ll@lvt%rgG@&>A<uErYA5X;ojbyDV(3ctORaN;I;&APhhUZ*$K=^;0{jv
z3i6o|?LX2@<91bjA0BaUgw9hGf8J55wr@cK3lmtBz~Tg!B(PLbcL{09=cmNG6{MeK
zBK%1WIq{wZ?oD800#7I0R}uL5^1cM_r;W^bb9F;Pza~lGA@vJe<6)6U5?GnQD)H3`
ztYLDtfP#Di&YQsWKd-O*H2m=d*2>#DA@wIjo)oSZ(*CK0`&g5m*p6qj|M;Fs;H?DS
zPGD04n-lI!bk8QRE8#vZdQL$qTN2o6`12y$gfAqp-RL_K*eU*QWB28d7v<q4;mblg
zd`09{;cLRz6L>@9O(AVIA9EjBzQaMDbPMxt0`Dd8egYpPkV+z*#D@v&=7g3+xg<VH
zU{3;nBycE!j}!QWyE#XZ@Y4jo7WpiJy$O7taG!MZLkSvi`yzoa75kNtKYH-=ZxYxi
zg~9zIT)W_a$iW1@OW=F)pN-8A3H&JjlhAvA>=*H0jm>W&zbD}3{-=WfC2%x>zl_b_
z3H)RDVUd3mI3n^=U$<<>#7iah{-^i}A)|Z}OS~vm1WA-ukg;cooGC1m1Yg>rSYE-#
zNi<2KLJ}1ftdvBJBx)v6SwWgrNusKFHDPt5^Rt4p#On!b8NGHAb;Ro$g{?<F^%ZO&
zY?wqN6YG7R;8!q`ge4LX28AIZJ%p36#l6;`5>+rJj3<#0NeaE*%p{Rj@FHO@iRMY1
zEuK%JAmRw=t(Zhpj~j)LVp|yAHi>f#Z<$0Z!&@hDuHkKx@bW#+DD9FsKZ*89bTG;V
zA{~WnnG22HDakdIPL9C;C2_IQJ15b_@U9}4B+*TzyU=@Ywnq{@ljxPiWl0=J;$RY&
zCvim*_b2f{61|h|9l~KrT$@CnB>E=NPie18Vqg+iCec6Xext`m;IuFx=}rzkGQL6d
z*3!o%<Ax-0b<%xLb#T(1ptznDMLHas#5MBFAkz*{Vnh<NlDIXAkx5*a#7#*|NMcmd
zy`mf^yk2-i5~GtCBhDw?W0NNzP|_#YpQQ14McpXmO_GU8OcI}&#AM|-Rl%E+m||>h
zNxJXtc=t@0WLna_=Q&-*Gm`jiuv=ihXhG+<C2@Na^OIPR#B7s%UJ`SXxFhM_Kco$}
zJCm5J<lbExDvVl~#G)kbRVpfrlUOQ#mvD*EndI&ymMOSAiF=H`LWF+2T<%kl1!M5R
zBpym)V-im%@vypJO%jhK@kkOYlkQm`ZB~hpuTJ7o!<Xv^<&UeVYmNVP3O<p<lN{B2
z1T5@6*tbDCm8aMOSG#TUOcI-t*qX%iNo>}rV7<1;`LjtpcUmqyW-)485-)JpO=3?H
z+mqNKgZGoz$p#mHJ&6}ZUJ<?|WSL(UVQI-<P2x2Lxo{kVZzS=if^Q}9u1ffJ67Pu6
zo;E}l^}QrK&Lki3D4-;}PxJG!l6)=YlO#SB`AqnQaBmWyi+IKOQV!|uD<gg*5Bp4i
z?N8!cads%{{#_E^b4p1em%<N8{K%;?g|kxlDT$wxI5UMZDf}W2hm!a+iC@Kk6Y^O6
zJ9kE|{~+Xf!e2@JodjR&;gVvk-9Iurp2XoK{uMux#8Eb;?!^8lg{y=eQ*v(=vJ=KL
z*OBp77&}qjS1JX*{NWjtPT`D{o2eHpn?ku1s-)c6fNzGB7hyv33Mo`fxvz^<N@4O4
zSE(#QOKw$VSxs0yg&HDWv1_H=Hv_E{0x8r^p-$@Lvxd4U)KgUb6dI&(V6gk5a)%+l
zhAA{kp|LzX$k#qoXd+Gn28qlrm_jIpRLY$<!YnXf{*;ZKLPWu63b7R8;@(QOi4?f7
zEz{DNgd%xb9_S>KI=NrxQz)d+J%vkCaOAUP3awHorqDEnW-0f?tVPOwjj9)~0@xt3
z89UU+?HuWh;=8Fl(`%hV2gQ<~n?jou+NMB$UJC6}IA6R&FJHfw?$+K|l6Oquf)p-H
zp;HQnG?8A!a;DHtHW#PRIfYBac^1?qg|4ZSUp>&68$~Y_--?{ZiCU!^DEpo%^h)6}
z@!l!)N#SyFzA|)03ZJWO`%2+teq{>%QsCb={?+j7pK@pT0bZ=|u;z#N2D)?m;1q_W
z@I(erW-v5`Yf@O1!fMrVSPJ)Xys@uS7@ooiHY4ZQ6mAz8nZk7`j7s796mF0*NjO?K
zE`>27V}(4jFztBp8-)zsl)?n@iJpz#(w}T%Zx)#%yd{OHBGXiU4uI(*GlVmRvxK*%
z;2p(g%YJ?e3q<A!??~ZJk-5ToLY9O{7K$$uE;9OJk-LOTgiD2Y3#+s$SuV0dc#n|Y
z?iJyo^MMrBRQ9ot9@cPuFolP-&#o@*wgyM<BPpy@Q#Y#Oei-#A?b#P;JekI0DLkIS
zx7@!-s`!=-aQCvcDXi1J{Dd4nnZo)MHl*-W3Ol)brm)eJVXMf~!e>(0B(mAWKAXaG
z;#-8?_Yu#FZ!<P8q_Ew@?%+pcI=6f=g_k(qq`xeDGljQOc*Uf8HHFs<e?5ga#Cf{K
z`o1mxK?)y=yu%?X@}BU0p?8kGTbxNg5&0;EJx2LhgeSV6ihO4Dy&^2+7e@I~<f|0E
zHp(|5`%>61;?<f{=t0iyDfgP_JK^_227eIwQTS5|Ka2RQx;^!43cscBdkTM~&@qh*
z(m0gDpD85MNTu;t3V)|iK8*@#{G*;aE<7y!S9nCoG4NjsM^iYa7G{u}w_xT8zUP-l
zNgAcn?rh1eOd3d|bQ)(E<xGwf9lQ56a@Q~~YxHvIlTS1%rco)4U>cz`Dl4{zu!^y)
zDpE~YJ?-`~{nSk3EGf0pXd+TOjXG)fa8p;<NLVk8`e}DYrQRTohO*@0j~*J!fI7cc
zV9>89OBfJ({~!pb5mAsfHfzeo?n?QhMu~~Ug^9HL1uo6FrPFAU#yM$Z(#WQflfl_0
zRX&Y^xRXXPji%zwOf28+Y_4j0e^T(8nm${m(M~q4gsqMJxoNa9ysgN2Y4<%<uO#QE
z(cZ*%5aEh^7pBoEjT_UrNy<fO^iHD>c^Vf>=`8G-Mi-H;X<R~|;&j_1%@yf!se-)k
z!5*Pc>TJng5-$^8F1$j>Sl-_t_Dy3*8bj0QC;ducf8l^Mu1aH|vA<emQ2OKw9)r^-
zm+0aBmTQd7b!iMs<JvTaOW|u~%wmN2NMpnG?J15*<9aDKq%m4#Od8`v#tP}yyVW*c
zLC@8MG-h$2rZF*%Noh=06unIqxmh?Rja!V)3nIo&OJllGW{Au*qy4rtZkMtsjoHTL
zPLVlj++h^2>*p#sFOB&|Uy#N^!}&mPaT<3ixJ0-njiqVaoyM{>mZ$Mx8V^Zdk;c7g
z+$VmI+LM)KIq&B#AkiD@RM-L!OIex5Dv?K6s`5UsHCD3=((dbgwDg80FWerJ+2g{s
z!gWG#KV6^31`e|fCS>qb8azdLA&u>6cPiVM#?zj{3jvW$!p)3L<2g5#ZwtBQo|`e@
z)-;}%!8RdviaXNS$-!B%<ob+zs<tbQx6^nhjTgBya`9&&$;)ZHBL1rIHR0>RH-v8r
z-x5}>>wdldZW`}#pl005pZC-FAdN;DG*<A#G=5Cur!;n_@lo0}*ptTRBIF;Z@rn4S
z!q3v!E8?vzM}sdE{4$NN*qCX2lg7a`zDr|Y8vE1uHjM*mRM&k@b`uFZg{eG+<oh&!
zkOvL`25Ce5IgMY^IG)A{Mg7WIUF5eke%D0zM;d=hIb`NNu1fb;8h<P3Eo4VLESrDR
zIFiPHiaMIcF%BfHXvd6ba|(SKl+NIc3`*22rG$({=Hyb1XG$rTLHP{InAox=wn7FK
zGpLh6-3%&aP+0~w*pJ52+aIfDP%YygU#bh~pL$K%oRx9U_iBmP7J98wFN69SG{~T#
zM1INTjYcol8|O_F)m7-vz{((yK`?`+^qE0OdOU+f2H^~B1tS?mGl*qQK8&C@E?&(8
zJxMZyR0g>W@)@Kv$YhXJ62`K?-1rHM*N?<P22KXW4BVSArU$)xHP7Je3_4`cF@qKv
zoRdN849?A<rM%ImRp#VVb#fkl+hou-gYz?JFN5<G%g6og)K)wndrgDKyY0pgH!h%A
z1{WJ|oiezHmZ}j8#ua0{V(>uLIfE`TqwclaB^h+fpnC?FW-!Qj=#fG14EkiyGlO2-
z$NBwN2A5}Wh4|C;-J7u-GsJ22eSI_Nr-WB!aHS0TXD}ecUxB*@MCML2;y~lSQa#_*
zh7ZnQh`48YjnRjRTq_)&!3dF&!s~>iJk-#=fkTeJ4LxyUbOvL@#~Ni^2IDihk>gVa
zv>}<8aZf7NX{1fcxL-g_&fw+@rexe}&p8>~A#zIwQ$;9F%V4_UGcuTI_$-lIg|`WB
z7tR*0_4)41U~UHYW^kXBc^TZ5!4mQL87vT4C}b{+L>9Bh<L-&~QlsCU0bNm9W|ZX_
ztT6l@?sWQY_kJlWGg!q6n%D<3cu4$Vqda2lS4&wdeAL9Q5qV7bxR84Uvt}0SE4zOK
zU!TDS4y3GmlkKStHfC@l!~Y@S>5O|_`FsZ3GI&Ou!A%)#HvHKPo)h09+-h`wI{HEe
z+cWqwgRe5~0cD5q4dKoVc4hEl1}`bd*jF=n+3;5~_`8%YpSfR1d|k+=A#Y~zRt9fp
z@J<GwsITA6;Jpk!%3x0h@3V7x+b4tmyxskuuQgx(<bda2fHUraY*eCz8Br(F;Ny&Y
z53~Id-x+I5K9&E^GT58J=Su!X2DGOco%BtVe4W8Ja`I0G`!d*{!S4!wo56t$e#?L>
zCmhV+J5IA}OMcDZ`wV`_;HM0J&frIt>OtP$?&e$Fxg-`YVIhCX;DSWSbY6b)o2hWg
z1aao&FJJNp8wb8a9GoXk{K<($_bdKln;1^zFlWwgZbkmh;7A7lWpGrv(DQMX|Co@L
zv|*7-vhK{B&!QkwN{B2<i!ka8ku$R>BT_bta#@tmqCyr8vuKn>#Vjgiah75$XHg}K
z8d=oLqN<c?Li+K}H>zjdU&DKx=SbeSNVT%4Exk?_^|Gk1Bz2{51U4`pPMuCS&Z0>c
zku0K$qBnmQRu+LQf?0&K?w>|OCL=E|4{h0deq!R8EaF)t#FN65(6dix|Nr06vRUL5
z<<-T>qR3zt7iZBli)LAL$f9Ew&9gW=i?&&umqm*#&dK83EZSt<RZ3d24NH78Yq~?O
zRo0!9S_}D1&1vR7A7tnDu2|A8i}SOtO?x2|9<SoN7rxr?-OBktiwm>pl*L7g<!UGN
z$&pNh&Afao@%0{9(m4wT>GKP%8#(G<cRX~>;*zX;CDkp9?pa)#MUN~dW-%#?o>}(>
z;B{Gy%A!{mmt}Ez7FT3(ZPvZl*E@?oSq#ZysDgdjydwRwxH60WN_$ln10@c~f_H@2
z{=8Miv>slqsKH(;>DP$UV3-JVC+D5F;p#h{yp71ZKbab-SQ56?^;wL~f)ydZLG3m=
z>)xmwlXY)Hu~WunF+PhMm1Kgkyh)bc%|_l&W7^4COv_@r%x=zNO4hwCO#K!qQ?u~y
z?y@{Hq|C`;W)`#9?EHsa7Pm<xXDZs<uHbArVUXJ$Qtr%Rt_YQRBJ+g{OnDY(aaR^2
zo8!9XSdzt3W>LhgMckdmGB$nzy$e{L#fmIW<lxKW9`-4Bv>Ynua33q4#fB`NqPHv_
z%;L!`)@R*y>>pyM)Nt3y`Gj|bI4pVpN4PSJRU%YYXYr``8sTHY$AxQ!>x54TY0o=X
zldAZ>hOb9$AD={T<m8{l4_W-k^?$P1q(j5LEI8OUXWc{dGaPkUJeS3mEVgQw`9k=7
z7B6M-au(azJ6UWud($qF9a-!&N-3>#@}h#gLU|>NSGhZ9@qQMsNqj4dx4DaPC4ns7
zkV5{Z6t1rDj!OQnNzN*8qn{6?d@AIC`7n#!;vWh382#fcJ~7;TY4fuz_8R5$?8!SA
zUrPBZ>t5b|E&h$ryB)Egdoj-pvpA5&!K{1q`Cj;47My#h!o4Qye%L({O}Bip;Xa<)
z{iI_5oW(C${F=pYS^Uo4&%&2;`|%I%Sy>#(;*jZ=KiTqz|DDA@h9Bm{Xx1V5Pa=Ep
zsK_zlaiO;u5j~g4f0-Ogi9lFd$k;P-IMeXGrAo>gUQVQZ4i!Wy3J-L1@4{8dp=u8Q
z<Zw8LYB^NTp<@mg<WM7rnmO=O>$7w2!-CS9ozBXkRt~jusFOq89Ev%2AFr1~eUVHK
z4RUBG9?PMTNKn`~hbHtU9uP92CE{IL?ycnu<q*!nHnEYMdre9+Zc&Ne=|o&SAxsKW
z!nBa<^JGPsDwjiEykHbZq;m~lQ=>E!X>RluIh>PoXZw~pjOVHjIkZx+weVaaW837=
zR{T7pv=iZfj+m;w(smG@ZI^7V?p_d0sq4EihfX>7bmgKP{+GkWIdslp8?(-#OAcLg
zxR=vK4oA57Lk>f77%JW^hweFCnnRBqdNLu`^OW98yk8EN<#6Jt@A4e3$f38Q`sC18
zWK1<5qnLz*Zb`0Gs{X<OLPk*^C_YGdwQ#VBy(WiYIZVmnmK?6lVR#N>au}=F5z6Jd
z97Za5Dx*;fUN5{sI9kZO#<5x0vpGzlpK3mCH=3wZ$ywBi@;pgVlZ7`Mv#B{u%VAy)
z^K+P<!;Bne<#1~bGi5+0tTH!xzAcB_bC{jO9OcC*FN-^JxKqY+jZfNp?ZZ?Ha#)zd
zk{p)iut)}rbGYj?%Twj_GP*m5WjQR*VTEk&F_v_7D#!adJX8ke!tKEvR^_ldhlg@_
zSlvfUdV55*UTOO7(Hz#~us(+kIXsrb<2gK`C|a(~VV$^F7%E<NPnz7H%3-7U)*PPB
z;h7ws%VCT1qVXn0Z5GnQvnCazxOqOGH^pFqx96}UhYxeuox{!?b}8yjrFv2P)f`?j
z-d@h(6>-lMy}g#h>n8S%)B57A9Ny019YwvH!}}ud{ok}7nBYe_?8#wY4*Qkk$2okd
z>U@&Jr?UAhhtEa!3cXr<aT@<h{A=MiLa&71=5Qc~-{qF64(9N)N%ft`_rf29KMH>m
zvdw=H`89{%%y{<l{Ue7%iuzM-|2nPr|CYkE|B~dmE(DI}@E?t9y3dAqes~qfLe4#6
za=oB^S|X1>MCSTYC3%#}<J<z;6o5QR=MgU;QNS5_oS8?>JkH9aOde(P?#1#k$5$@z
z&d;3W6MO`mM}@pQvsDyU&7+b?WnmQ|V|kz<R?DNhlo~=$td++nwS2ebv4`ikdDO|H
zZXWeWcs`a#{X81vacLes@@SYxqddCj@p~;_<2;(=;p9=w<6mAGvCMgQ60`CM<Pj9N
z^N5IqgyB5als@?n)@U9viA+Loo}S1fDKV8tHjkWmI*-h0mbB03Q8-Oua*9p!XeRN(
zJeucmb{=i=Xq!h1i7oSJrE;EgS{Yii%@up9R3zu+(N1E=JkA%P^Y$iHhtupY5NF+4
zfKGW_#9$s5OT0vRb<U$p9$igZubijy>L$xmb?=!+uRKQNF;ZzS%cFN5eZ()%;|dY4
zt(arqJg&}Tusrn3<H|hx=P@9UtMV9R+|qcUvi9=z(vmazkUWOU;Wc>-<De2}!5Hh6
zXSgZzb&8rOpQFUD&*O$XM&~gmkMVijXwr^Vl5rXvUM|e>raUG{Ih8x3$S377SqaH+
z7MWuFOx3`fCY&zhIGiCeQ#dP+TSfR^IY!Om`F|d>^O%#z9eLcD#|L?Qn8(~a=H>BB
z9-H!*pT~kc9?4^69t-nWl*h6>mgliJ555VoMEC>Wi4x((0=K1k+--uiS;3S4JZSS^
z-o1Rgmpd#kg2eC3<9-q9w50CgL$Z0;IQg0@ze#yC@80}hEk2`yZ%rPL<?(nPYx7v2
z$A&!C<?%!wPs)Jac*W$QcOCbX(VrICn1`o(Hk<Q!Hjg*+cuTp^|8se4$zv;vk;iLF
zvW>Gx9xvtbavt0B?#o3x^4OV&_qM>UJYJMp)3&AP^JCx1H!)r@`M$~|iejwy!p7@)
zyrEcLGx9p|ZE;?my_0t@>uAPaemC#l?|n~E@8{j?I7aQx<0C4Z^a|LM$H#g6#?d01
zPx9E$Bzb(A$7izNo5z=Ve3i%Nd3<3!d;Y(c0e$Yv;~Vy@-Z)~=yNW!Z*zehWc^s7U
z?}T0%e$3;iJbpC}e^wL|{vyJ{^F2BSN&d*=ki=ucKlAQ2?|*sxmB-)Q@A&=?$8a7;
zq#u?IFT-iWwBGeN$x-Q^cs!32oHmt(uYi(*JE)i)x6+*a3ustCqXNz>piBW(3aDB@
zS=sQFg9-(d6E81hLW&g&?n@Ds3aD(%JiS^0)eERyK%D|=6i~AO8Z(O9Sq0QG#uS;{
z)9XsCFRWK^uYDNRK>j_O#sxG{Y`6fwNI+-_>4ddl)q(|t3T_>_lrBZv#70D-1;h$q
z6pb01EFe`tp#Z1gUOn*&I$c1kf88H^WD3X@^l~-N|3&fz_d4Q1zV=yg9|7=RnV;||
zP{0VSdDyJr9%q{i&n}>a2$gdRXlZyWk=8;!1!zlBK-U5;DWF{e=NHhqfG!2JFMyZc
z3tE?4Sa6TO9c158cmcgByG{l7X3<3j6gk?3Bo`NuspBKz;hxtfn~%9~6m%<~djXdf
zaCyOf-=km1SGKP2QYG(Ez)qeg2zv>q>2Yx7ekHT(`(CQ->r+7A0)8&wmje0~aAg6H
z(MbXQ3m8zq)B>gza8&^V3%I#}DFt_}_|o-#g9`40r>hGXT)>b5h8EmA^W)Vi*9b=y
zFihlHAv<e0o6+!*BG<9&wXX8@3f>?bEgU0cs<9&DgnYr{Ms|?$n!pAWaUTSz#YnhK
zE})kPn`L>6l3NPA<x(<=XVJVKFJMLis|$FvfCJThGYgnkaMxeuY0s<zZq<OiO~{dX
zyEi_Ca|*b_=y!_DEx2pv(u}jv`~nsfu&{td1uQP$0S=^sd(v`O0V_n76u`TVOAGGq
ze0KrM6r=&S<q~<{@}7cwx8YvdQ@>B-ej#I-(L)8SG6^4+{)liTZz$Dt4}VNf<muKL
zj;NaMIOkuy`}4IQ*0F#O3iz;qCklA7fb9kBD1ZiM*YvGt`@pwBLxs6KMO_tq+SK=%
z0yc?nrcD9Qi9c^*w-m5d-22PYHlx2Fa-yGaD118$c$K3|uPyB=;Kc&|;PYQ0$;$=2
zVt84e{A--QUcejN0SkDmfOiUbmy-<V_M^VH4PlU5{}Cnc74UumjPeX-bJ_m_J}Tgo
z0zNIcE8Fj0=i9^1DuBKGkxp)TK)Io+?=#MgrF}1+II&kd9S>Na7w|;^Ul#CH!99L)
zJ6OQihJPcnPq@E;Z;gI{2bu;x&;GjtzL)-kiTzRJCu8$#0l#rBD#9t^ch<Uq;{}{3
z;7|d77I2Kk)+5x?=aulp{;vZ5Ru})HDT1@aVUd4@M}+?sa8%^#?(V}K?)VK$d_D&y
z4oW*X!$Bzra9~yS@kiCw`9>l?wcy=6&K?f9@BiyyS}9){$E|N!2jv`;cTmB>3<onE
zRCG|u!Q~FFa8TJn6$fbt83$DzRC7?@K?BFVH&|U*$3YDTHO0?zP|HDW2k#tn?^JUm
z*?r7MtSf_h!sXH%I%wn|=pf{vvC%CDO_ba(<&>X*L<YmsqYh#YZ1KqdwTwGRI7pf@
z@V2>El9bF?n5=`GgYz7;bC7pXaB#MR7K(M)AP$;2C@RQ=v?n%q;1RDz#B&_9a?o04
zElupX3bt|3)`3??&x6O$chKI!#SS{ltb>CK9dvTg(ZK~Ot(OJsc#(tu$%foZ%P8_L
z4!Sz%;h?93OO&L$gG(KBGmXRSyc|93B`5T7nKAJE^mfq4!C1xib<oejAO}}FxKaw!
zUM14s!2qK$;XrY(kb@lzQE-HCsDoh+t`)yVd3hxnZd%4mHBtuGsc}XLuXk{RgVEB*
zNbxMaijQ+J-ocHEo$TOd2RAvG;9#PZNkUpOFAt~4!&HuK2e+ISOM~hEw<NP1-0I*B
z2X8vK&B5&s);d_HB(ohXa<JIJ90zwexYNO02MZK6PdNWH&wM)L)pVibKA<7L%fS){
z4>@?)!BPizJGh5Y4wfm^3gPn8Jb3lJ&%yl;9&qrWiSoR$?`Xi<d1j9|SR(^wv{LQ7
zN>yI%;8E$G*<%hKSACh#OZ$X_Cmp;foAnMhh`iw7DF+)JY<BRhgQtz>O%9$B_ga;C
zd2XL`u+_oy4z?(^B9CIG<!Q4`A}zN&*de}Cxa+j>z}S}@yzJl=MZG3`RY(s<29ywA
zH}-Eic-z7E4t}8G@bnma9enQKJqPbA$tMmzaPXmnJqqqNem?SorqMqBzrjxx{LGAp
zFBIJ8V84Se9ekzW*ABiB@mkMohi@GmFl9TaSeEuX5wCq{_M?NJ9Q<Wse|GSj;lDWe
zRh(wres}PPgF`0vPm$TJN=7G6j;Oz-{3ARp<X}6(QOcJ;9USEh@7}$EuZWT&jypIZ
zg<pm6+XOz@FI5DJs9Hp|qHD?1>}I?_U&I+joLNMfqI;rJu88tQl$8OmeRv7uJ+`BL
z1&I}ls3bzAauHRO$~)_*UPO%|>>?sX)GXpGMOj7ED!L_XP((u|tX)K%BI*`VPr>>^
zzP>_-Jk4eq8Yv-3V@0v>O^Wb~^FoP1TJlmNP;@Uwf-(*j5tad?_#7}QF;+xeBCl|H
z#7`8FDI!}$(paWM(n3}?S9DJd=%1&Wd5Nq$i%~41X%SP3xTT0@MKmwsBKj}l>>}Q*
z;ybU1@d00pqI>FoPEn5lgb(ofuSn}6&NWIKk+wyASK7T@)~<;2i)deT&+RXub3H5R
zpkPN<S#JnmD7}-Aj{|74u8QyCA|@0uv53w^_nrJM^uve0MO;!uqEiWZw<5Y1acL1f
z6g8}fo<;Pcv4X7BWkvK;D_t(ULfBi_M@XB#BD^%XvWWgg3@|}Paic!4h(Sg7Zo}0@
z3@zfCA_f;Rgu|eM&)XPPrIven#UPQ}wM7gsVnh+!Pn;Mj94)*~I7)cE@CG5PGp2~K
zMT}F)Z<5Hg<3(;XHuOx9r*o6oCMQnp)QQdHB5p2%XE@vrSMg0PVp<V1ikMk+{{_Hz
zV5YOc)!gppxlqq0?$uM5A?~C0+lsiIL$n#{HN)&8<}hJXOmB)iinx;_yeT40F}H|$
zMSNDo-Xi7~v7m?#i`ZQRFH9B|xflEHDPoaYj9s=^-FH_JOGKzF<x^nsWky*pvZCmo
zjM3oUBJL~Veh!!-HWu-85f7SCw62JU#2@Ak$cMj0tSn+x5vz-MOv<A|MsaCV;+i7(
zNSB1$<BD2agcrp@_=J=vh3kvhAo7%usc8005u1v5SvhXz;ABbI+QR3G;P*rf($AJ6
zwn}`yh;7`J#J$*?^dyvKJBrvTeV35Ri~o<RFM+?I`rn_AhZNcO2-&lzeC~ed&b@Q*
zow-*FkzFNQ_9V#?QlS(rO8bsfvP8a#Qi_BuMcNdlUHdNn&pc!N`@LTCdS1_YpZ9s6
z_gUx6nT_QQIMp_nVvB-r33rxaYY_W3hg-n6mtsf2-w|QjT_U?n;b*r;4%2}%t|-}C
ziZM-%{eK$!G#9b=zF&&{K|lYX)O#a|!jDVwNhuDL;#2lv7_S=!9~ExZ+}l_Gj6HCu
zasDvlU?~oj;&T~4Erbdod{K(SrTCJAx)espn*qL7EXkjx_@)%!mf|}}einWo#2zWd
z4*~y?R{;Splp4PT{8y3RO7XkMAA$Uzf4m9guTuPdQX+D+6#t4G3*^U3;VYNOw=zPe
zMF?fZ%LS5CLMR{bQ$wH|RO5wM#Sn<KLO5Ndl8}<hAyg5sDy$aBtA|iSyk;O7)6J+I
zLY)xmhEOl$UF9+P86ngUc^81=S{n^QI5UJMA+!jgp@dC^jBOM`;}FhLkP4I#f8cf*
zH-8jt9s&;rDfBI$9YX66x`)ssgf=0x4Z#i}8$!DfB7Ygt5T1#Yv=4b3I2~97ZvF_*
z5i;0G<lGR>3!$@kX$WDFP@r>Tt&)g136sQRjl(t`LW0Vi{DmZD2&sTuB57eJbmEUT
z6HFr)!Y`?kVhDLfIf1^*RuJc>>}je?$U8@$AHoG8@04+22wg+yCVr97uHikxadF7I
zqNf6P0Em}_&@+TyA@pY5w)Re-qc17p_7@*C>J!4bnUWjI8hu0Fpzaq!{}2X*aA^n=
zLbz7hT_zkE!sQ|ZL%1S@LE^)NgM~wc+>9C;!gV@9Tqy}19xgH>gldwH3So2zV}jUg
zLKrK4RS4rkxH^RKp%ZWWGA%ig23bE|**Wt|GR2pNFiB*x(0>4)I#U(AUN}uST{t6z
z8$_s6liU6w+#JHL5O#+!D}>o0tPWvK2y;TXC4@&pcr=6|$Gn>7rSYw5h`Brqgm63O
z|B$zb!{eb4=8NAE!kr=96~f&LJ`lo!5bg=#UIm$>zf9u(4^u6a@V*f44`ThN(H;zW
zdpN%3hZRNnV{9Gf*t3M=G0Xj*kaw;9JVz6s{|VtKkwrpE7K<zqJ{`hRk!OO~XGNY1
zVVTH+f4$w3<st9qeJes(DYA<FM`U2CgmND1M;b4Nur`EuLfFZkrq0IINU>HKmg^;T
z{&gX|9Kw3>4I#WG@=6G=ifjzw4UyM`uWO#+0NkV?_nqDp*({`dO9;nm8J(MYFEefp
z;cdyc1+m*jb_n@-e0FmFCXWXn%h?mcyCIwwMujlm3t?{vpL2?4yO-tf5Ae;fl7sm&
z)j9vGHTMfY2;oB!HuOg#9}7PT;Xok&ROB<^!4M7wa(=Gi>23ypA8?qnSsibY^JNHM
zh43}=3gO!jj)w3rXQAWAzvCRmVIIQw3Q}@}^H{)t4B;nnt{)i1<5va$=2#H<UHFIa
zPa$>w3Sn#G6Z-#zyd6|O`LPfX_A=#hJj7L_$4i7|0y*opY{1KjoFXhA#;GFyer&}s
zP7kAc7&XG!5jH9@Sk5~SRt|eNS)yE2guUl{s)oVEb2agay^NnK8+?AXX4o6NwZfRf
z=l{hStP@6E@uh7H{voA)7!AU>EsWd4I5UifVGIl7$}k#*(Kw6_VRQ^*IPd?4(Ikwf
zVSG`xWCo0~RSkaOzggJ(c~EUW2pUF<uy^CEWf-l(I6I8iVYHQ`&3}-4>C_>%3!}Z{
ze(;<yI)!mw7@fo5oVn&A@4=gM!`_m98`u9~Z=?Ips$~YMjG-{XVMM~-gc%K^7)F;c
zVqwH3NraJB=@^@o#0(=Pi6!JOAy^5F&4gixk(Ex)E3zlg2Wg!!T=BwxQk^g5?qT$h
z@PaTdl;ol?x`xqBoR(?oV)2uCT@prrCFvPPFGckh_6gLe**A=S(xDqWTNwkyFBM)U
zygZ2IBdk}1y(x&((V#E}hrKlqk0D_U75CR0!^0R6##LdAV@-xJDvZ%#j0yAexdtD8
z=I{I-EMq)e+vvNi<gv<S#)iEM8Lq>x4r6>6*Mu=4?A><ZDxEFzSMQQ*!<ZO`AG|K?
zo&M$sCxtPYEyA7uFm4c;D!g7eO~}~kA~V=OwS_)2klz@_O##1IWL6lnML3l9bMrrl
zy)}%v;{F#r=7ljojB_IB6u})~+{p?F<3Jd9g>iQnkA(3kkE6z+v%S9-E(qhEFq-lI
zkE-y6!uy15ulq$F2;;#(@=zEL2mGCS#$)81&BA!SjPV5fjGoO{7RHldJQc>GFcycg
zG>m7|KbM5@bTAD0bR5Sf$0Ltt!+1^#CnX%P&xf%*j1^(54CB=>Hioe(j2FUKAI63-
zR<pg97%zsgmLrkRe1`GnPVXZ^|5Hz(=j1Piz1uzO!gyH@Pv_-E8&7AlV;pH|kiQ~@
zXDb-5(f=@Zg|Rz~O<_!HVQj5bvW-2Tw*Y84jLob!p6eZBOBip3u{8{G9&d+n%9X~C
zoMia4{K}H;GPom*cfz<=KI~M&+xHnvz9)=#>AX=wA2>nLpE;Y2U8=FYVQ;awFO2s^
z_6t7{eklA%NS%*Gcw6VwFg^?O1|t3p;~+h(V*JjzrJwg|z#&b5pL0eMIUL59VSFY2
zoshYI9mY4}-v$!i2mC&aBVqg?$xmVY9LA60{`)(>gz+m2D2e|aEzU*D^|}q$Z0wM{
z|Hv1Ayg?Dh-(mctYG+fnjo@e)|AuiajN_bJ$`}nJFd`_4plSrwA}A99B8W9LI02T8
zoEWp^BPb_+ijdnx9LT3ea9RXC`S4E!l_aki!RZmK8(N03eVZ6|HKVfRRfH7s1{2${
zB5wgiP$PnxlGl%*K?H|qmZ=p%?Fi~fST}+*MCt`;nTnSEAY1Uvh<DSIS&%o1pm79e
zML<(6Bj{7cbFWDRO_jEpu(_~>aQ0Ns!&VWmQ=KhrEo>vCkj}S@pnU{fDsx)s5b<Ub
z9vvgz9C8Pz{RqyB;PMCtM$kEe(g-e!plbxn|2E9BC7}r4G%>;vL?Vbryi-7irdX@u
z48}zg5hNop#ZwVpeS4amV~IS{K`<LZE`mY?#R&2dI1#uJT*7Tn{g#nGYCJ1q@Svni
z1m{O^K?E0iwc$y8HU7`h*WsTZyG1asUkQKW!{S^VLH7uH&{_n2Bi{ZStEH!^sCNXt
zBHpGACF~@`KD61?BmJaF<^CcABDhrKvOwNoZpjr942ob#1VbZy&&3!V@os1~>*#G2
zj-bIB#>O(nFxEEfkSqU)w?^e^c0|ORB}NKI2}cVlY>_RwDuQtltW0240#`>co^=vK
zF@|d*n7~p;abXnKMldmgZzK3Fg6krf#D<IDC3fis#^eZYis0smH!)6$c$alkh1W+g
zO=P-|@);4_AU;!gqmV<AQL`eL&31|433Z7%5pT(KR|L02aBBo}+2#1bAJ%XLxAA#?
zK9r?CKVO`|J0e)p!keS+3?$UQJAwrf+#^#D3hxyz6w>~E5!^5SfRJyGQpn?>2p*Q?
zkwEiNww*ZlC8$uFD}Uw~!P5~u#lgkRe<8_YwI<2Z2(NR!mVGgTXBGRLIsjiq;VGWY
zy-dO9*|$X~Ss}7Af>nX!g$Pzhu!i%1ekJDj6Kbvv`pmir`2VlfmzMCiN-sySUI{lu
zz?te$1g}K!Y6Kf2cun$y5xlNC-xI;R5p0U!jR@Y1U^9CWJ1UGV5xf<__6T-Jf2;6q
zMKM!0(>8IEm-O$OcVx|5vG6RcKOs`Sn;ip&f4oOeBKRPJz0%w#Wb*gfGfTX7ryB7?
zW%N-5A4l+svf$e9Qz;)1@}4!-K8tv3LMEg$^!9TV^9v!%dpLqG#lI4ME&N9KTC{`;
z-$!tSH5o<aDAx8X;R5>ycJFgNYd=QtQ^Z>W{T#tB5&X*0!AUskNq(37U*R9ZKZSn@
z{}%ouJSrSl#oMqtCVrf!fGA32r%V)x;;xQfY}qKvMNwXIU!P~aQ=;CYZdOg>RLQBv
zs0vY3jC!9K`lp+5y5uYfgH@s!(!|I|;Y7WevuYI8M5;$oL!@RDXGPH@ids?BmZXlb
zfv~Qyp70D|{V2ZHSL|r*Oi3C>(MW`n#>`H;-%X=v7R5PHbc&+6V$T+~2sB$p(Mp_8
zK`=?{DB48PHi&I6((XTbb&#ZEVE^1G&Wj=~VP|1PSSkz&X*nF|N27>I7>^<mMKVw@
zMN&~%(Gy=z^HOOY;uj<%1v`qYNKQxv#`65m6S^Dq=Iuh%+h-_7y(_6M;^zzfC%!I<
zqH7d~qxdq4Zc%Rp-5SN*C@y9nt6}tLSkgU;9#LE(<2|FeD(cPr%%xWpy`$*EBvJH>
zVp<bpm~{F_F(B}S%kN90xJ<#zqZr86kDhqzgtPsisCNO#H3@OB_>d@uium#?qZqE>
z2;t}`M#^)pb4Eq6w5qquF-GMYD=g)ERSiqVMR9c$<D<Anscw#90w;g*8MMIFY!uf;
zF-e{<qsfYz8pZWdOp&Xc`i`tAnHKdvs6JgusKz&}nU<0aU(AVOX4E@P+^DpSy@@?d
z1(_AaYzcp;Y0MG1Mc6dz74x<zZs%w!Yb=gpUKI0HoQI=WtV#QhsCUY{Q+QVtcZ)0#
z-Y2|AcyAO7Mdmg4mXY_1KOlTi_>l02E?z8K>Jb&{QQ>34$AwQs@uUcKo)TFUJ@NHO
zmUIb=&q|KsnJAu(;_WE5Me&@}Rz$H<WLXr?2Nsq`y^CC$S{20$QM?w&S4Xif;A^6I
zQGBiNf5Ml9U&_^&#n(r%LF5(Tt3r1EjUs%#h`GEjzDf9okis`bHVd~z@s`NeAh!K?
zo_pJ)_(+l+!gr$BDY8qrKZ@N^>=A#Ly}gRDPyD?ocKm7V755)Xe_x#2`yWW{Lk0PL
zA$FdR#Xk`;#{(jt3O|eDU?4vf#pmK*1QL#guQ;(p(KLo;F?<vC-sEi(^G5Es?3~;J
zisE~9$Rknw7R4X>`Rosp{3!e>il0S(5&kOl-vs}i`ceED#a~g>i{XqI{*K}w4)d62
z=V%oFMsaEkr^UQg&@uMX7|MtrkHV17&KBOCK^}<V6iLd)P%g$FD4&p%@F=fTBo#!c
zUnz!)F`ORAm;CGL`^r^fs49827^=rmBgm*`3{<NvtQ91rpG;UsI&~GrARk<$ynYM~
zBxkBKrQa}yMlm!NKTAmElUcKe^AiNkV`vdWI)+RPEo0sl%{ei2ilJ2uhd4FG&{~z>
zCWf{#v=is-+CGL3F?3Xr-IA%eBI4-gJ!rPnxiRl_Mqwm|^Q1#z=NL-GL&9(%=Y}&i
zqcOykJ9%6rAxsKQVJZeoggRVAP5P|FrcJJpSto%!7ehYaP7JO%r*tOi!W?55o4{2G
zToA*BZ0H0kBydp-U1Rtsj-zpOi{av!w?lGG9Np#N*ch&gp+^jt#LzS5UHlG;VQ>t+
z#Cr?-#L!oypYZY+`il$@GRdVeTo&+h6}{Vt17o-%knkSakeIi&=W%5WLt_}GpuY*Q
zcVNlz7)Hdv$NzlE$QVWi`lDkQBhHN=CLb5`uEl1@FeiqqV;Il%e+(01xJh|kE4*Gf
zG06S87$%8N7ETdP4PtryPH(5hFkO-vf&7LTW(NF5k%PK7db9W}VMp%##Bgg2h@)&A
zb7QzIhIeClFNWJ=m>0wIF)WW^ehhcS!2a`e40pzGR}A;Z@IVZAtL@lx?u}tV4EIQf
z?Z|`53t4LYLGM1PQSx9655@2(gOWTfd?bkVugV`+@QE0n6!C>jOPf!{ut>ti!X;{b
zM$rKtOJjH@hG%1VPO;QqCI@_Hh$~`P8N-$s-il#W3@^m6A%<6^yju8j3~OR|k%cW|
z_&Kg+V=3w-<+biVInv;Im6utQzZ%19F}yD2jX}XT#qdT9o0W=cZwC70w9lfEY>naV
zz|U<lY>#1gpua=bcE<3IB)&eA?9$-npx*NzfA+?(FNWWhg#NrA!>2KPrr`b<K8WGN
z7(NOte-gvT;?$%k2mWLKAZL{rzK!8KrTsjH!!djr!xswr)xuO?#qjliB;SZrPA9*Q
z;YbX>Nb*ArKg#&eD*I1CN&RN^bN^MEze$buS-?NU|6~%*{~Y)nSuq$K{*wP2!!cQ-
z^2vj#O5!LJ_j)P0?+J6^Q7(>C;y5pk&T*8F<J36n#8EfyO{Av@E5%VE?w!9X#&LSw
z>$JXEDpZ!dN*q<=s1`@{IBH8$LkVlfQA@#-`ZPlB=gZ{v;%E{_(>TtMTKza0DB+oL
zG>W6K@@goFpX98-f8Pi#G>fBc9PQ$09!Cplwv6NKI9iLh3evU_VJap$nYO)z=LkE*
z(NTm7%!}Ab!E==(gQanV;^-YmpE$yCMB=zm3eh-XapZ%v@i?qF(s3jtNycHuy)V4c
zLMqVl?Puc1N@D+Cc`nG&iNjS?ft4dtjH62sJDA%$GJ8QFxhRgVQtK8+57p<zf#vQZ
zEchiNJ>%%5R402vU&#l>F*uHXarBR4fFzg4F;L{vI4%n^qMa)wWTE^j^-DBF!ZC3S
zjbm6GS1LF>ju9f%92v(bwdrU{n95J?Bdv{%<El8uNr$ml$1y(O)ZsB9?k)a#YQ8p(
ziE&&P$D}wW$MH@aJL8xV$J97(iR0Edu4h7>kLJWNE#TARm=VVfaTp0>ri3@eaihop
zDc>wUOE_D|J!je}qu9A|+!pt~;j<-<+vAuQ$8&Kki(|et7sPQ-9CwJ{DZDF=yW{A2
znzsvmYD*9AjbmXPPsZ_79QVa>e;g0T@kksGutKUE561Bj`xR$$EkgM6Ciw_H%*NO_
z9*^S*4m347>*~w~Mlo8ZVcimbPK0}si{e<U%6T@9C3G^5rExq%_o{k#Pk6P?hX;7@
zit@*ZS0Yv;?LQyK@;F|KV_h68lzfeFWgM&Gcp;9}G^L9sc9p|ry-$~Lefwe@YgxdM
zLEru-efr7wPhXB>eH@!4*$~GoaXwMwwHLo9`Dz>+*(J0a?=P`lqk^`JdyFli&Kq&i
zy*K079QUp$$tk4fTXFDJg0egj#PPOjbz2<U<Jh4t#CqT#4Y+_O*%im`IKGPG>p1ps
zuH)7XyHj&-QTJ{f?<wuxIQGTyejNMb_$ZE#<M@D64U7-jaAgb<e%p$bL;i_I5KDc4
z89nXQ7&%uj^y)K39TXlCelGk%cv$$Qkow=m@ogMG$MH)X-^mAB_$iL>#g7Po5dJ9i
zf6&mOo>wQoQWD4Cszd+FQNK&)58<D}zk~ytpJ-FwgZ_*w{Z=La#&L|j{g^T7IM<`z
zYSu`2Q+i1PWfDLFWfM3>67K2o23)y>w|~fk!SV^5nmDl=%p{alOyKkc&Q73p0+kY|
zobZ~pWdc<as4C8TcGVJKgEmfhX9|+)3Dl6Jrm&W<wve%P5~v&SdI_A7K>Y+7B)rR(
zhJpOd1bAIQ36Dkz@Z$_jc$VxlizW#)6>lbN9>`mW@a*48C1MxlPH7t@Z<|27g!kw4
z32jQ+C%o;fa}zi(;q|u;33L=WM@UI0k@P69#XBdEOu$r0ONAj}SQtqlDniXz0&(#~
zAmMI9DgjHuo(ZHA$Z*9T#M;b7JS)rv@_YhLz}<xRq$rK^C??P)ke@Gd0c%ObAE#Y|
z*lr>h3%e)KL*x=6Cj^@6#X3o#PXc`t7%n-5{Sp`~-aml>3BL8|HS|E?Wr5D+B1<$D
zt`Hx@o*<i49+JS&Kyz3ESBmqaqm1G)f<Z|}2}cVlA0xuL8pqB51QsN4PXgl;xF&&#
z34XF06B6LFrq?ELd8HEGT;QHq4eg{&N?>vVE6W;l6W#<eC4s5x02}LjI&8=56PT9p
z`ah593Cu{~1_fs(aB~8)61Y*pn}nQ6e9hSj+!CakBT_>aZcUtc&+E2?cb#&30`n4>
zAB>&561YSBPNBbBPP|(|Uh&<Vz`_KcSJ&b#Zx-af1ny7Zfdn2*c)uxRUwufH>Bgc2
z9u|K@$m|~FfE9l{kUWvVlj2Vax7YUW`!Ma|1eOH;Kb^o*@n-_bvm(zWuuOzo&`h#C
zffXEvol970-1Y6lS0fWxoxtNsJdwnj1YS(wSOUirSj)T;cq@UeD%VR1Y)s&_1S<Y(
ztV`f!HRXDhaYHaFUrFHAfb-ciD_-(Co4CHQg~Kr6y>0Xc+l7|^LXyoQ{3@Ci@t%8s
zJArKp{K3J?7KE`q0bX)`!dpfB5Of0XB(PJ)cM10=usg_WkI1{i_k?>B*eCM7(0|~H
z^T`Jaewgr{y!uG|V<CeFSUR3f68J2Eg9#i;;0KOk{`Mt-FGRi<9u|I=z?ULl3BMM8
zBm7p#guHj)-)|y6BB3ArF@c`~ou5U1N#NH&@>>GG2b^~z{z~BQ1dh};HdQeyepYgb
zoAYv*qv<GHjc)-6mya-vBubKKkwnWR$|Qj#nkLaKiLyz&$FDIYQ8($`sVSGlDM^%1
zdK37mNt~WUr6f*Mkdg`_6@`DaE2$jFt0qxJyhRo7%A%ThbzzM_r>01)Bx;NBfgftp
z&w5E**1~(9Z7m-JO?nS$*B3Sro|!~Lkw!wsHcsL!@g~C3MkN$BPhuO4x$u6&#3vqE
z@K#Bjox~MM3`(MP5^a*`nZ!Eq3#}z>lU~iZNwiCPXT$bMbV#D3c;_TalQ>7blaLDM
zikz2(|Jl`0(rb4fW)flX2&+`rQ_&=1NyMd}NFpghO@Eae=8{JGRJM{xlPA3|9NI}_
zlgLS#H=&qgUfdD#E;A*ZHwtpQD5U>gM9vppAiOY%i<0P?M7KbvhsecAbQkg8V!kAZ
zWw2M$dt{48Z;?Jp^cCqB$oq>75MIib61iMBQ0PBcGMF{c)R>&alq7~Ey}K10utSp=
z#wy|hFNxtvj1XsVLJ}jzM<p>@WK0s{M8*a>S0%k?*r<H9B;$qG2>sn@MqQi4#6bT#
zkx4>6uEQFen#Ao%%uC{Wm3LYa(?w<^F)OHn8$@ObZ%pE*Kz?)5dxVdbJX?}E!drsa
zTa%a@@Y|B!^IG#^%unJD<$k|f?M~r>B<>QSKX;3;C)|_7z2Xan_puThdHvtN0(wA3
z9u%^S4~aZ1d_?%D@Uf)#sYxn4nZ#49_7tY3uqcVe9KR;Yn^=;>)10xBcrl5kN$y0I
zuu+~#de2K&;luw)@67d_Of3^WFQmccA}f+uDY8oVf^fC)RDS=2qm>qt_?OLE(>vX~
zl*BKxxh{#9lUSd`22LzV>`mg8BwkHoQxb0^y+<ZKY-;cvw=s#=G!MKk<Vl~i!JA2J
zPU4*;b|$e!@@>Mmgj<Dg3we6tQfIsP4k2yw@GmQNu`To+-Q7v-QS7@yPO!{nUlQ*p
z@x3JbllUNs!%2LZ#D__Il=PnVKa|ABisgy;(<D9-KOpq;{Y?B|pu>DW7ylyAq2w!8
zPA%iRq_?pAI_cfH`zDERgBn;}&EQ<baYsLouu+ouG3h<Q_)`);C$XfgLC%ER^sfgN
z>Q`2yR@A?7#t8TyN&G4Pm+)`lKf<FzCgB+8tbQzs<7yql^xB<AiAWg}5GgAxCtUEC
z*Py4Gp63}8wu#eBR4~2!eJi>DV|rcabQ6_KR5rcS#2F^)o2VjQ)kHND)lJkePwX<)
zl)Rp>mWkS?H|5q*kYj<ouDE|`PiqZKoN1zyiE~XflyYMeXNfclY&J2`RFd{4nwe-$
z-%PYN(LzERX&KmW6%Y#Bh%?7_CfZ8VcYqRq=yfpBQSx(yzWh8BolPW7m=cznh?*xJ
zN)MR`OBj)5X5rh3DHu1A5TTG!DQQ|Nf^RwfpV+L4oQX?PUhCuoYkk!mjtN(7!R9E4
z6isxYj)@CQTxg<K5POkGHxpe0$=MOF7hP<kdm!l{a*2taB7^eYO0Rbi+ed^?5cM<B
z-^2hDm$Ir;XqLidCN4MevWfL<L|zV<xYoo(6IYlRWMZ(1A(D?34mB}cgqp)dt`z=O
z-xy(Hr1&TkV*;JgCMs6(?zr*bj@DHs#+kTUvDXAT<5}3ICv+y5-d`%He4U9&CY~_y
zq>0JWyvfAPCZ?E}YT|km(<HpX#B`AvLjKyo&xknF#Equ6J4fFbB+fE1+r-@_7MPf0
z;uaJ0Ow2cNtBJWLZZmPa3GNd3`n-kBRDANB$gzBfi92QOE@ecsJlOh-rNj4_xYxvk
zCLS`e(8PTv?l<`j883G#@Sx2l)jUoKNBzSl9$~jJ@wmDKEj%h^#**`3j(*ywOe|84
zD@-ir<Zoh`f;9Cs>&nElCYA;+`SzbP;n#ydXFeb3FAvmKnpkDx1rw`Hyd>co6EBJ|
z>$U8h0cQc}29a_aUl&;3VB!@MKbiR1#H%JYO8;vUubFt=#Cs<8n%HFG4HG*R^`?o<
zCbpV*Tjkwi;w{N(lQl#8ba<PI?Iw1Zct=sp_hc#9lgX*M%fxOId!+DgV1bwX{v+c1
zOuTR6pov2!_M7;?#K$H+G4Y`^KN9-Y>*q^6VB%BB{o1DFGc|-?-p@^Zsn{<}95%hL
z4^hF_{7UkZcD^z3t%>g>{GJo3$PuAmiXX-O?(~a^Urn5nLirSall-XgcN2e@_>(h<
zg8vBr7IKw1LgUD{@UMwuCXSmhQYf49hHXg-Wkitj_VnmKE6pzj9WJLRKX_^ir=?Ie
zg=#5Oko@!%Dv4A~ofv(U6+BtkDhe*>WK>U~Mha)7P+yXo#1!g?*Gl1s244NtRj{6r
zL0?E88l-S$3TH{)Foi}UjZ;|G)l0>L?aRaGO#)Avr_e&0P6{mpo3RvHrEqo%ty5?t
zVMy3Eg-#;vQfM#IA%%`9oWpt!Ec?wtJU4~&Qs^wTQX!r65Bd<6BqC%m8d!*@kdQDb
zObbn6Dg{e~Eyb$Nh}$V-MRF<RMVJK*`fcH+P)MOD`GqN5B+?~?^F^q3LCV|FBIz1P
zx}{Fcs25ApUDzXt?NY_)netA=+_LMHLhls%q|i5oekoild4J)k6h@~oAcadg|EF-d
zgo9HUD8l5!YkOz#D-;}*^4=t6a7Yk4RAg8RSBeZ5j!0po2%k9hAL1RO;J6e%(>2ss
zwtiFNDhau5LW5U}k5Azm5lSYcyeB$HCQ5Q$AfF^MnPt%>!1XCiOJQFM@24<5g&8S4
zo5FJ`+>pY}wT%Z@fm#dA<e=aqKq=frc?z>qn4Q91DcmjjoD^<J;Z`2O7pwUC=iC%-
zOX2pEw-TPu);WHBo;dCBh4eclxl_p3$*HqIdGUP#YTlE=y(uhAf!BKXr@RlB-6yyC
zhzJ*K+!&#eUdN9=DB(jXJgl^j2p^>|g~wBPBITVmmZb1x3Qq;2fE{3w<RpuwPaT%=
zY4N4PXM_|oYFP@;r|?<|ucxq_J&?7L^7dg?P^ed@SBk7k;RTV^fqad~i^8=+emUx;
z)QRijbs{ed*Qc-{kiU|`tKu62$;27PCiTf3TKT*o-`*5%7H$c=eM_~mRl&D~+l1SN
zT*$qn+Gh3cOktP!ZsDFl{%#8I1$?i_KZ}h0DSW^IZlSZ~z3=lOJ7Ee3)s!El@G-jz
zuVjS>gbaQv!Vmbf4i72!))qcb;S1Hn;S`Q=iWC2mjVr>+{95E2;kUx?gx}NKRwaII
z|Cqub9LSRYB>XwWw?VyU$$l07CS?YH4^sV=!rz=EEw8=)N#SS;l`T}U@NWvoIDuPU
z+T$tycLZfElvA+80z?>9Mx<ZelKQ0vgQqBXY7kpqgi-X+SEyj2qJ`5fR8o%2lu=Ab
ztZJc}g$9;)bx_?x4GVi(mDI6NQ<}9UXH+f8nUI_cbuH9W)EO4)i!f?Ss}jZ%&s5rm
zlKaBO;%5n)SZHdYnT6&ST1nDE`Yi)}+UMcF4t%x+T41n^<vmH;R@hF+V0)1c!j2Zs
z5$P1fo-4Arol$BbWO<w6chXxuGaR-Mu@JSqnIvPuwh*%rw~(-qw2-pAEwzX1c$Z*2
zObg_nar4JQ+Ct^Jp4`W*g`9<<7KT~gG?=$=iG`jP91AY(R51z`F0^owVv82Ku#Eh`
zm*veo7g#6m+VJGnRT2ujS!h_%`w`5=7P?!g^Mtp~@1a;e%t_wMLT?NFJ;xB)>|^0F
z#rCz(&+?|V{%q)Sp0@)ezf=Wh*_r%u3j-~DT*2GVze2Htgo7>o8vGxJ7rckMmt1LK
zxP?g;CR-Rm3l_#&xXSXL`Q+u~D9c+&kG3#I#d%D7^}I;u19IbJ@EUn?wT1Bt(rp%M
zf(7bas{&4x^Yr#QDe#l{Q!GriFw??~7Ot0lRupq#+G$EST{dS}xIu)bxIuT5IPJ`_
zaI<XA60-QS*`T^!xW&S)%4M#F`HH2@+brB3_%_e-u8}FcLlRa#liy|GZnmIqU@fq4
zkA-_JEVN*ykxt`23-?<%D~%>;JYeBL3qM-;$-+bIDi+?eu-C#P79O>*&ce$U9<%Vc
zg=Z{0t1kD1g(odMWqD6)cROw@l5mNIr$rVEFK%CQfbUjRF_tn_8Dk6gYPj=bVVQ-M
z7FJn!-okR$ReNKF6i9fmKNESc_65tkW4qSE|17MQ8iQ*jd{Ic7RDMZOzI`gJx3Iy&
z+ZMK2c*Vl27T&P%riG0hp%z}Zut{l|1(Wb#5}(u5W)4*gZ&}zXe|%3E>mPo0y9?g*
zyWPSL3-4IiX<;`f77M#n<d<6*zvx~q%ih0z$-5G=e)x6<i_iBp_F4Fd9a!@BIY>o5
z5Pm3pK{dcEKCy7v!j~2fSooBUZs8zjdkbG!JY5<Ov@i}ypJq?vbgHUgstb-AUs?Ft
z!gm(FS1G=+@a=z!OdS@4B|4(mA5?oM%lNZw8flcIQHL+Qb68pU&BE^%{;=@3g@0t~
zPYZu3xpUmBK))J~a`Lxu%))U+`4!8uGe_F@^DUDG(%zJHgwOw{Q7(;YX;e?+lr+kx
zQ8A6v(>OJa)6!nkS4ex^#!v2BAXZAFavD|As46>tS$yMuj>H;i)J)@yH0q~OD~;M|
z)J>yany++u*6N6C;6}Y#szqz#jFJ-e(gtaqnMPxoWw{zMc}t^F8dPh`aVmWVzcEUh
zN~fKW2Aie5cL1BG(ISnO61Eby7M`8v<)@c#n>5;{v7v>*yf`k7R`WVi`!qVF(NUV`
z2*YV~O5@x#&P$`SB&BKCTwu#vwr_|TRq<XYq>)G((KKRdu%6>AmxymUnFf`a1rIX~
zR(MLtV1@?Mn3BfSG_q;rl*?6V<kN7{7?j4~G+YV$2n%Tx)96A@`)OQE%V}JwsIKJg
zOD<AN9cWTQCt3fGXw);K?rHQ$<C35qE44o1PfxXPuQYng2sPP(`=-$^js9s2NMoSn
zm!@%<$mPP5y@>kx>R#<#Avw)5$02F&{52+xp=k_DqpQk(Wg5fN7?H-vG)AQ{I*rf!
zm9WojXkX$xLz{jdqqVVVZ#G+A*%+6`)oF}R;~LqYlm>qkG9iuY6r|?0A`>O&!y%OH
zs%}gUVyS$68q?BvD2<2Hm>$S)O=E`m4Qb32xiO7dY0OUJrZjF&dov+T`RJ25Y1|@B
zHl^Ry=caL68n;V$M;dpgF;9Fx`<|-z4Ws0)H11AgAt(7X7Nl_x`=@k#o3z8Tzt8WN
z{DCwc6k*iz_Fl#M)%%E=iGBNtwD&mEqwF)hP)g%*5vs8cpG@N^rCpT9(`hUfU!2Ag
zk!^-&?HO^BW$X!QJf|T0Fh|+!7RK{wEcXl=E7Dl0@im>_ZR1A__!vC@^_IpOw(Lk8
z9ElgxSj)~o5-msKe`&mw#@BuDO&_dF<K;Bo?~46hv7SRLjRQq|TEr`9yqd-bIeeJI
z#x!0_qcn?97O$tVDUJIxcp!r}(s(nC-D&JeW3#%@4&fHzTSE4$ts-xyu}x%q8k6f9
z{=wLH(%2bj?h;|tyJ@_a#-|KQvX`Eu@nIVK0?qf+*dHj<$VY+vlQcg5kNm)Y_`x&|
zaYoAE><m6n;|oPK%;0buUvd`BpnL{jv0BpjBaJ^<nXE3Zc+>bXjc>)b@fCnHzW3(9
z<3}X9u*9IwPvRs$b7)KQizL4ae-r*5=q&lU%wHVZCC1S}@^>2lh!5o0*YU4{$Arg)
zM#gidL|8_M49bd>6Eb$vOyid+#;F-p%b<D&r)5wfgNhlPo<Zdds$@_p(DZWWZkY1&
z9j=-IXK5O#kwHzV)ybe%2Iue$#SI)un2HM2teZi-40bLuC^<t>^#jWdGB{J5&QO^O
zjWTGQ@uruvgd|NeXd3Wl88jDfA#54QnUI>TGw77@>Z(m3Z<|584BBVVA%l)|Px74$
zJY^oQj5R9o4Y={fxfz_NsLmN&ox%7FN;3#$5Y8Zy!NnPL&mbDu%w`bFAg*8{gOo@z
zh&40b|A?1YHLMKM8Dx0yJ=q}kj|v74W}V9*pMjHstEdZv1!0#AiXz-Rq2~GGBz*he
z!VE4_uxke0lo91z-qR*ydt`7)27C>FSOz^a=q1f7GU%N_pA0Tjuy0^(KnDFX=&#^q
z^^I8F6LoT_B;2&2<;yePe`W^;8BsDwv4e#}G8igCIg5Oy`0xxyWH2&=Q5lStWON2&
zGVn`HYdn1Yt1=iTg_BW~Uz5Rn2`6N5Z3YuFxGsYmGMFjhqztYXq2}ZarUZOy1`kg2
z%ubVJx^RYYpRUDjWOrp*0{xpan3KUR8O+LHb_N^AoN$R2c-$(rxxyu^b9JrTgS7M5
zH|lx%cLb6<Gq@{*yE9lI$-RO69ud~e!a#DL$g>rU2Qzqxqs&GX8xLpjNCs~PI*(?s
zN&GS4;~6}W!IK$0mBEX_s97YkJcGr7WQoYr!lfBJBl4{9IUxtvvJ9RV=Kx`l#|i~k
z3RekV5Uv)k$()#-)++cv;Y-4G8N8gqdU4u$C4&v({^al~t5n1AwG3VlbeO51?;Al$
zsk}LZEg8HONGjRbn!(!{YzrjsWUyU)hwSuz&hva{2D>uYoxz?AzRuvA4BnN_{tP}4
zc`xIgL-%H|Pvm_c^;|CHA7=2eBz)rcqm1{h3AW}Z863#qQzqwZpTQRy9L(TQ5KA2n
zE2<G`;cy0Da`OLAETbr=+P4{e$C=jl%zn?on8EMt{2Bb99DkO3KZ^e(^bIoYFB$ww
ziEJ|H%m2*aFR7K--jw)v21hgaH-mpP%ul90mcj814CzpK(pwUmDq{n-S0S`ONjdRT
zY?QZgs*TeWJl#eG5vo<Ry*cEh55Bc;M|s7sYI~=Z#x~AUUe$!vZPXB{X`_~n+BPn#
zWxUEKIc@K&k9CA~ZPc@IhIoBpLmLf5&J<GfXtNUH-O~-XmO%?mY&4bGPQqq3I@&l#
zygA(vX(?<aJljTV8*RktYFiuaCU`#cXeVKN8y!SABq?NXBy#E_o@?Vg8=Y;G+E{1f
zWg8(IVH=}tjJ6T65w+3PMmHNV8*v*&8(m~7VZ*kOwUJcNw2>0AY@}^uY|Pp0+2@{c
zgNnw+S{~<-Q#HCa@-`eB=T<x+rw(HatQnE>ZCt?0w7p?S`GvAfxBXa>q1@oL(cMN5
z8<*JN#6qE8qMkN-*%)TyN*ldx^szBS$@|*qXQRK30c^yUUZ-Lbe%0zy8<$C8knnOF
z18rOpWKA{h$@p%N50;Ma#!%@rlEcG;vW&1X(nhtJB~<3YS#*qzu{LJdxWUF%HpbbQ
zVq>a}t8I+8F<BMD)yOrnJkiDk8`lQ857B&kosCJ7&<*-bvqbjB>jO0gr`edU+WVxM
zS4)hYY2!v4i)}2iag&XkZQN^PA&WoWn8ntyaf^-F%9J}uzS&!C++pKR8?4^BHtyq@
zS9rT{o^Za9Cl2PqR4m|KGIF<#1xk32ka8Mff2PiTHtx6afQ<)jJj7|At)_%T9*@{~
z)W%ab76o<qnCj$lnPowqQ1D5ipTw_QzfqpHvC75^HkR6WMoFHPhtH{3P?M!tCdu={
z<-!%hl|q(<W>+iiS{rL@yeJP(d)BLJR?h!yyd(*8WUpptTW@274I_(^EMDO#w(*UP
zZ*6R}@tTc~Y<z6vbsL*(?6k4V#v3-?l>cwDIVu>NZEUge7W?Py6Ro*5uupG!cVnBJ
z*)F6HJ8Zlo{^w*32lWBUciY%w<6Rr?+1M+E4}|+{yl-Q_@}e4#nv1=J{&4${j%hr8
zV&i~~&p88>7@sns4R#)?(L*-wK^uo;jiu&MwYKqvjl+_BY2zy!U#q|Qs~TU2slK!E
zy^UWvqjD~_@q@bP$yWQ(#!ohWmJw$3i%Lzx<L5D6#s03Szl47X{|tIQd&1u~{;_dX
zss5FmB|0WGcDCc{c=Vx67Rcg^Eb3=bHj8puRLP=h7N=xUK8s3ORL<hm?1{ow$l|oD
zHyf}Ld`~K7y$U%!>rME)He{WU5P4L~dNWe>ENWzN-6~JNW)_nt8FjPXkg1hL?X0&i
zT}K8<*qYogW%27}vA>$ZzSJO#GqYa*??BBg8fDQmi)NDewbVF^v$AL+3CqGPC}*bh
zp*da3qGcAXvN&7rG0OLu3M8$SZyRA-VLM@aA$2-taZc8onL8=@xypr;&v{vNmJVBi
zcDhe9!dXPJcqWHubBJaU%i_T-9?Bw~MIwtUvluS@WES0NMBEgnvaqs9XOU4BP8P0+
zEzAmYS>#3ha<OQIEH03QyqHCofS)ho)j%M*NTjQ<oA6>GbuN(u^#4+ko>}w~=^e=X
zWYIU^{j%sE@Bt!p<}#7Xg#(3G2nPvid9cV3Hn+&IK+anU^n64XcV=;ygd>HcvKTEg
zCX2BmS7mWc789}<r{L9`K=|=baav$0uFYa%7Pm-pop8Ev5__7+lq{x+OwHnY5vJnd
zC#RD$B)lPunOWSJ#Z78u%6Z(J#cair&r)Y*syTrXU+2~==1RgRDsRi;_JGgJV!rqt
z!XI^g!6eN3?kpBa$U3}7<X$0T7mC~`yg!Qv0{O6s#=}`WlErsfd@tdn!cD@*vUohu
zd?Je{vv?|tMUp(5#d9KyvsfbXbfCGEJvQL<in$LiF_vZVd=|^ISjb<xXR$Vm6<MrQ
zaFvu-XYqoFKP#>YEX<s0{4a}_ve+o)by>X3#uBHg^;v8PICJq2%3sZ%m|e+V%i?wE
z&@zK>$nu-Q%~@>8;;k&UX0cBlm<{oE7Q4i^3AYFG9a+2+@SP$o-ENURf&5*O_k?@Z
z;xza^ryWT?$l_oYhr~b3;-f4+<^-tVr$Q<p2>QcklK5lu^C0#skuS11Eb`@lbiNk<
zMo2r~2Du-};s+J>(Hwrv;-@S+<j^sPpR@Qy@-{jAn#FJ8XXWs_$gwPrXYq&lpTfU{
ze+&N+9u+dLe}lel<h(h&Y!2l_N^&S80-=B2JVm^ku)Oe8;b}r9uaHB<98OoTQVvx_
zD(Adg2|Udat4cz`g>>~GRgD~K=1?n#+Bpp3^P-a15w9zx<$5`oGYrPo&!IsMXUb+H
zX;RpbZcp*{2O3M_uhN@{Hx<%CvmBZSyhRQzb7+;r*^;yt`X^#)GI?7`+6DUUa~M|1
z8xH5>&?$#*Ib5u$b8|?EoG0uoEX^S#63!tm5)m?aG>4eDKe#AKD3}zQIXpeq%Y}!P
zLpq0y<aQ2O5z4vV&gGELc@O6}5}u#)?#8;pg0Lv;BIM=61vy+O&6*XBi*o2H&RrUA
ze)@TJm*n0YdgO3P4n1?|mBY<B%*vs+qOQteTn>G5=$k{o9Qx-lIENuQ3{dRlISkC<
z(i|>RkhRC2PrO3GK|;U0e!C21WlA_Uhbu)!GV2m!c+Oiej1c-`hwhD1Lys1YVW0fZ
z_1D!ojL%_W4%f-ZH91Vk;ad6@oYQIZSIx1La+sXM45>{KUN4*~WG>X4mc#TM>S)1G
zPge~$<S<hTHwtgc0pm~97|Co2uO4UImBXAIZc*^o9PY^BPVu=p?;7^D9Bx;Te4Zrp
zg}h4LqBZ22aRzVt@8;EO4hy7tkC0xm5*CWzC%j+yfbhW_9?Iciao_((0?t&Ai9arU
zB8Mk)cq)fQ>|Lr`R`OzzC8~D6s#ya||5NkN<*-c2-^=0o9G2&>C$PUFhyUg9l7cIR
ztCaAC999Q9YjSuo;A?Z<P9U9J7f7~<yqv@OK(ayP71oT%#z6j>$m=<5%Ha+1H`&c}
z-A#j=CE=o%{H+|e=J0mT+pO3o`F3$`K`?el4(~{~Q@Be=`R<(e^-B^S?@GveAm1y#
zPxyWg`$hb|_fZZXvnLc$wun!1IFLi70xB2qDRtNr^0+0BgE<^xU&^Cy-kVfE&*A$V
zj>yOtIUE-GQuvkdYauni5&2g5o$$gLo<Bc`*U00?9Dd^bpTjR43wc2Hf6d_^Df}j+
z{_i4x2>%rRmBZg64@~t89u@yrcuaU)$S5O^5}76UmCGu4ny_3Rrv$O(^Eg%9-}0@H
zM@0os&!bA9Q%R(99vw8MXtQb_)q>dSB8;jjQcGAnh~<=9FOM_wh~yE?qkbL@@@T8r
zGlk8B4TX(_wBK0dEMXI2Q=#8anv1u{qooM-TZx=4Y%Odf<hW=j(q7mhkB)hqBYvKc
zX*-FWoA>rls;U=tmZVe|$|D?Tdi&&g#PjHrM_&mOdDtS!K*tnG39UTRA{n9I4YK07
zJo0%s;$8FTCgSE%5Ge|~<Z-^p1$kVU$3^0t|C?%lqvw4q8W&4Q-czJ|9z8@Z5uQ97
z_R4#^VZHM>ElArhk1O&Rlt+JQ4iH`{yi9nxaG;R(IdBH&F(i-cB^jE>usp8LW4wY_
z3diL!Tx5iBq;Qmw7DkJV5snpJCG<zDzsYk=9@j}YLC93sicA#xlkKEDCI_)oM5YRd
z*EOc)F<pE{9yf{HAe<?@QOJ`o&E70NOURYX?EHzd(ye*S&Eqb~sYc&!3;69K^Mv#B
z-f8ZRJnj_nr{B93wII;HN95i-7UpqZ9{1<*Kpt~k+~VTFJRZv9UIz;uJe<cPc{Fs;
z$ibs|JeJ4jd3=$_<9R%h$IE%F&*RBFp2}lY9xvpvD38T?EX(8hJeK6~H2ZBH&nYi<
z;H7yylLxzTCmnoti%)Q|AnYpaHp}x^A<dP-r{)+>&hcV-FzxC**5vWOJYLG<MJZ6e
zHh*HS<{6m__;q<S>EI>dBW;v$J-;E3SMu1A$2)nvn#aaG-pJ!kC1>}0P2}}FHs#T?
z?*G3!qlL|RY|Z2CJhtTV7H6SrjKln8Ot43~EsyO=JM=1pcNN!ZO|>(RU3q+*$0vF0
z&SOs=`|@~SYVYRpULJe%;A(+iIq)|m=>Qvde;yy?@nIexu~w^jJ97S(g8!v8zkUwn
z@hR<a+LyJG_Qq?qytOF1{r^-yhp153s94)LoX3}W{F}$IJif}~>pXtT<M%wi$>ZBR
ze&F<;$9H*rFFQwsT=a5f%Odk&F@MVA=RAI)tDHrj_1cAfl50H1a<_!rBP4(1@n;@K
zm7Kx9^7uQCfAVN`im|1fw@1Xei2E}qi+MZ`!$D04wH%Z<DC6K%2d6oJgR+kIA!Qoj
zQO?0B4$3>;8I6k;K4ZWqN&J<31qT%!RB=#Mv8Owz<e;*H-|HGF-gf`ad$w=}3|>T3
zb5Pwu4aXY-%k=k(kALzmz5Uv*?Vyf>x(@0&xS_nKPj8vs84l_@U}ZLteZM;~c&38>
zwMk<KXE_++V5oy84w^d1ImkO`=AgNQ^Bi=RatjBo9kg-KQo&XZ&K5bj3To@1or8`J
z&XK&mgAO8e!*`O++KIVvGcb_*Tea*MrIN%P#2thjgcXc9hz6P`b4f^&a$q?~Ixtnw
zk8uZ1wVig5abP>hI^NpJuVgxKGC8^9z-1~2ePycPpqqn>9TXjOk>q>_7dW^uuyB!s
zulabAs*wiCd9V(<JLut{w~}1qpr?ag4!)@CRX%g6Fx{BO7ec2Si}*3j@}8uhgZ@&!
zTsXkNWg;AFm$K6In)WKKx(7PALQ!;kkb}W$^pkZp%)ymxWd}1I40kZX!L<%1IvD9-
zl!L1rjB_wr$;UVtE5fRv14K3f?Og3(yn|~TOrVk4C39{m!$ma}crZu*)Nq}HNe-qu
zxZc5J8DZ=cR*MvfYvvf!987mGL$PaPhJR0-YW^<njSg;dFqhTn;ARK29L#nw$2oDI
zWv@!gR=Y*XKN(}(D&iOOb_equ%y)2yTA`Lspj_4LukHDNr-Qqse7A!I4(^dx92dUl
ze(v`<xS!+2MNJnEIC#*(cMiUH@DL||2QN8T=im`e{tljYuvFF_bMTadMGhW!@PzXH
z491fVxF^Zx=7k1}w%Eb4Lk6d>CF;q3VV`mEtb^wm#Wt;PaJ!ZD%&6xbEO)Tl!5RlE
z9ISNkf-+*%#tKFweh8E&Abv7P2QMmLbg-7)EYRW9*Nf}(toPt6C#aVltaq^A!3PdD
zIC#auHV4}syy{@1gEt(!sf4dNc-_G!aZUm}EBVX*-Bpdv4z@UW%fVI$WBBh3H9AjH
zL%9Frc=ufH9bH0BvcthU4)!>B*TGH)yBzG6!IJ~Z_x}uC2*2lGuY-M3@O^%tUhzk7
zwLJexK6LPrgU>lS9DMBH6KYDC^>Dz!rvX1{^Pq!668fFNKXDx9FqH612VaStJe7Ro
z;M@PJf5gELoQ++a=Hf>OKXFEN@P~t+rS_Zf7YDxvsr)SH4=+pqbnq7^bJv@$dHn6*
zsDpo{`Hzsbdd$Ib2ZoCh*E{d~HQc4t`<O<%s$SFcObr)hU6gZiii`5HwqK8|GxlUj
z$t$?1<f5{RiY`ufy;+Nciv?#?6{V``q8g*hd5??u8S%_gT~TzqmW$dh`nwq5qK=EY
zE+Q_XF6y~B!$mt6?OoJ&(ZEGB7tNLGOc#w@G!}0t<mvk?7fr;Qy59L>ls+lrpQh<j
z3l}Y2w06<PMJuV%y|Z0!dx~A%FHTz*yy<4o_U=~r9ixMbj#4glagK{lF3xpv9xG&K
zi9g}&8f$cx!g<>aZt7mf=g`_4As1l@{Zl_{JLV$p!l8W^2^UGlS}sgEkWz3|d+(FZ
z{<urK$hfdwWL@N3<fTC0*cHo~Mn|52j1%Lcps21cy16L2=t6@oE^u+7i;EP+MFRJT
z{B;7yHPdq9y4Xc`7rmv>!^I^odb;SP;D1M)-+TYAYxHr^mkK-uutH>koa9m$m$?|@
zVyuhHT?~|k!NMzC3=&~Ivz56LV<iu9G1SE{7gxF%>0*==hPxQyle$J(erhSWS{&_S
z)AuDz>%Rwam5XsMZj$EJF2=jK&c!4b*SMJA;#wCIUGM&&KM?$N0<-41iCIr}F~!9+
z7t@t|s;d2ZarO<r56p0JgNvCiZj{`ww^e1l8DP>hZwb1tgK@K>W(j8t7xFvjwTxR`
z%ysdoi^tgiUEJ>CA;r#fG2g{~F79`6hl@L1+~eY27k9b1+r<Lu(8&w<Zm-76i1x<)
zn@Z@?LPfD3lJnr+-~(L$2l^ae<{94jdf3Gy>?grGjl=43=`3;aw2LPK{U=49a<NEc
zv9F`LTI%8%7YAH?>f%`!&$)QR#hWgcxp>~iOD@*ASngtli`6dHxLE08m6E?8JXy~t
zYyL$SYdHWFOFwx=^P^abmtCxPu~AVQgs-@G)je?y<v+i{Bs?#_=HhkQi5Z+UHgO7?
z;=NA7&ECx}wz$~i;$0VSx!CIB9Tz)YyzOF}i|sCUxZb_OL<?ijOt0tAy(=f4SP$${
zj=P1vOI(Fkt!2FDVlPv<_&`zngzpD^i6<SNWj=KAk&BOAd?I<@%AS4R`(rEc(x75}
z!&~;aIOyV67r)8EAs1h|_{zoSF23M+)Iyz2c39;i`P#)dE`H$j?&4b)-?{kS#Sv+;
z()_BUn!jA<wZKm<es=MTjHfCX{_?}0VW{@Ii$7exVS<tZ{*=x?E{?kR%f;Uco@^j0
z|LfwIi{q|$zm>Pq|C?Qz0#LxI1)Nqu*#gQHa7qE?3*M=O7FJ9?QJ?;WVUq<$g#s!T
zaJm#)F7Vo#%i}k@otVd}Nd9vHzZ6hayqd6j0X0Nw3L6)^i-KAO)K-vr)hVE^cs=16
z!urAnLh77ZK*NAHD&Qt9vCb->NdZj@XjZ`Z0<I~bIgJ;PFTg3Fr7~(;Ks%9E1)MF?
zTF5$YQ}DK<=}h|qIusBpAY4F4#hxc*)HwxoD&SlN{q9X6kIn^@20AnqDIi*aSwO0Q
zSOIZGZE5QnPZW?;kZOKI`<Yq=WD2kql@2_iepZrP!RtkSUetFBC=}4YfB}jv7I1L^
z-3#ba!1)DSAmK#?bY&_fWD-^ylXna3Fz6fXQ9v*0GxicyX;0}ews!%23h1lYenLNq
zkCzs3Sph=}7^bMpg@XzhC_-yj1bLAUmT-uW$*&X{S->cf;RTEk@vCBV0b>dnC&^eL
zEnM{<1z+uI)e;Lbp@3@(SX#g{1xzg9I`)SGZkGNe;q}7F1xyj4wW)z`(+Zd_;SAwS
z;SE9k->4w7qtCMnm|eg_lFTXKmICf7;O+u$Ensc|w-+!k@aHz^__Z{@fIAetGsw}G
z(+8SeP{2I}+*iQ;1>7q&$`=NjelaO|Kv53{a!P3A;Q}5h;L!peD_~Ipiwk(XfF}xg
zvVf<g@4HQ99w+&d0-g?HeIb#@vjsd?!0rO}6tJv-=L>kPfY%FHUcib1UMgT+0V@kw
zRlw>3*8Inl7XtpGiodpi{{<4?^2zePT)>6`UMXOG-~b(aReYoHq^3_c74TL8TMKxj
zfHw=+9O!HbT8C=P;_U*qDQaf{+Y8ts{*I8be%XE8C85vXE#SQZJ}KZp0eb`a2L<dC
zf4_kJDh0Ff52pICfR76JSYza*@KXj0_^N=f3pl8#&kOiMMh*r2fnD@)0bd3N{c54`
zn*zQq;79>K6!4wWQuw{pNPItk41D`Z<YbAc@M{6TE7fm7T6*;dPXPt|B?*<O_P5;l
zC$Mw0fPVviOyqch|LOE5;SwQ984+45SHvkr++4)0BFY!N6G5dSDi?98_-RE{5UE(i
z=^{)*9UjcON)c5h99BfNBC3mbE22gbHH(N85iO!t5w(kGT*O&L)R6+yo+(ndh<YMt
z2<r<Q2>o?(L-9sJo_hRzn<&^(*tCddMKotwifCCx8wsh_st9iU`ub-V(OPnz)O<->
z1=|(TUZjI?yUKNrIMq6doGU!9h|WcnigTUA*iaE+1y9ySOhLDZxJaUiWD%x#R>)MT
zA}sN=FcZja5ni@aCnug4I>J_RyC7aHqKnA+!V82K3YqpIk*-4SA6^{DyNmP?UQ$HQ
zB6^AUF5=Q6E)(xlMBgI%u@2{X7ZkMCzlZ@WrZ`v2mlrWmnuCQ`2nQA6UrAA){ej9u
ziWpk-HVynsk}KH|(i~C5$Rb9GQ*(3?W7Gr5$4WR=NIO@Fj1yj6#P~pdO%W5suN6)d
zURT7VA|}h!6iL`3?B4#!x?YlLLRy|KGNXta0?AB~8-+K~z41opdB*G_<`l6n(7C1P
ztr?ancxw@Ji?~hv_9E^Mbmqx{`9<6z!rbpH;;w+xr3FRYBjtOGc%q0Wi&$91eMQ_~
z!~;b<s;CD8YY!LkkT~<D+m8ftKloS?k4xhBy{E*N2p0(#|0nioaT-}##4`bZwutBc
zqw{<b%ZpeM#M11_B32dgLJ_Nr*iyt>MXU*8-zeh6BGwl1KS|aXv7v~U#Mc$^vIzH|
zIa=xMD?zG_MZ6kt+J7zJuNSc?;7synz&DHhUf$R$vZILqN7Z#eTTOJ`ythGm@6wCX
zi%1m_l+L?1xA&F@h$u=?M2ezV5X9a<njok&5u`}5qKJwJh=^iAMVf-3Sg7*v><~Ww
zwX*iwv**m2Gn2_AndIhfE5Mcld{%JbZ4I_)D<_{S_7y()_5yq*%N+$5mbJeqz|I1E
zS%6)xPae6>tm3SDe=YqRH+PT7x5Dp)-}5Q3n>*-!<EH}rT!8L=T<^!e0{p@w#fuhR
z?3c~s9z5Z}fdU*Xz@Y*hF2Fz!26^o1^w$F9djRp@3UEaBM+@+K0gk!;Pl_Bbz#j$p
zQ~X2${w}~j;(rO*Z_Y#8f0cCFa!UMk0nUh=6`mKK6aJ^s%P<TDK$7RN$1_P04~lv&
z+__xlK`{@m_uvK(ihEGPgN7b7@}Q(!s*VSxJSeSX84oIZP({3~2jx5{??D9*DoUv&
z<n5jlAuHmIUR4jONw4iebq{KY*Ye<Uk(xqhU7GfMoI&JLlJkxSd0mhF9JZd!>U+>Y
zggW=>6&_sa!POqLli1jU=5B5i51P8XnMlofMhlUa!d4!%7HQ+bRU#Z4TvKW*?i^q3
zJ?P-UH6C=4*wKSdBAgN#KxgspMeX;OmTG0=S`WHPyv~DeA~Y*H%;@fN#@xe$o*tO&
zd=GlLy2pdw;(fGJ`nq~Q5BhshKyMT68o9AQy~=g=qu+yol9n*&LCh^15(#sUyGqo9
z8MSObaSsw6B&DZ>^u~syJ;->Fm68)WyMqTKOBG5PAY_t#b)yG^m3+X1n>-l8-N6S6
zQf~I(c9C0L`=K7(>hjw}h6#szFhXRco6EKOJ3JVr<eeUjclFU8+~x8yB4dT)gxqC!
zi`*leAY`2Pirgoh=&`?FLDA_wk_V+f<iRA7hlSK9i%jw05s|5`{;0@fLcSsYqz6xV
zP|s^0>`!~}j0d|t_}YVKJ$TN8T{3&#gJ~YD^<bR`(>-{>g9RSE%zfd(Ob=#xFq^$M
z(rCpyQ(pCTu~)q3sNhTNUY-ItxA6DB9?X--ikwHH^OfW(<trY%>cQ(CEcalc2a7y-
zO<9XQSmMEAJ{;t9#4p%<VlS7`;R>x}F7tp(ntZZDq|J-eJ$S=|l^(3}U<+Rg^<cGZ
z*3ka~W1%c*PY)HQ*iUBHd%%D{@ZduaHhA!s2XA}ujt6BJp<;elVZ0~q#LQ-Hr11#5
zIG=lN^57#6w#sa?2Oo=k<^db^i3guD3=i&@md{GLIm>-)KDR?Hjn6&U=D~Ivd+>z^
zJ3aVklu`FY9xdlgy6}MbOF3j+^;GIBclM))Z<KYp7kfm$_24^>4G(_sposS7Ug?KC
zI4trbQRHV2_KEx=+%M$i<pGg{Li*3IZv5)OZ;Z-=e<dCf{vkXn{9Sm=gX1C>=gdDn
zIN`xx694vGc+bi?*`4&@l=M6Wd0PBG;Thps56+1&2EG|WJg=l7dq>Il0!lKMGi^~X
zF7u+87sb7(=tU)EmGGjhYg1CBlozF4rHmJjt8!AxyLtuhh2L0JmO)kNob;-AFRTPs
zlTzKaui?GWIv%_=y{P5twY{k0^131ymVm??c+pU#k!y2>7gxHxu@_Cmo4QIfk&Tm#
zmR_{-VxSj;ylCx38|fk8Rl<N5ZAGpYUdc5&k@ob@KZ5b1qZggL=<Mcl8o9=cE?!*g
zMOQBhyzqE&ofqA_=;=i-mFn)b&$%~<UoT{1dx)_A$$QINKVcs)`pTZwF_#5N`YX$s
zvb^GcFHG-+)3;CdPA)NciE-HBLVAmO5mUW!S4oH@y-2xAS|lUPdXW>cgoVNZLVDv#
z;YKe8d$Glf&%C(Fiy>Y-${p&(&9WKp#R!pGycjBStME4AFyX~9KT^qig|~ZghsY@5
zonDOg;x2J^7pop4KGutIUW^yNM|k%oHZ+^yChrrO=*9hBJRr{8M?@a<;vtbq!iR;E
zy_n*5FD;!)r@G4HUOeH&N-tJ<@uU||smOfc)52L^JmbZ)UOcDd4B_*_X+rv(?!^n@
zj`Nu=capP}oa4odB6Ec-HBaOvp<}r~{ADj*@#0l47P^+Nd$C9XFLsqBB1^q^&5LE?
zjt2*qd$B^|8<%9U#?@ZDEoF`HP2pPMIw5V=d$GagZ;8<7J0kB2-xI#?#YT}2y!c4u
zL*XVN{c!Yd7XMiIiK~CA5$?pf)r-?!oKe>2UTpJXyZ8>_x56)kJB42gcL~1|?iPM6
z{6@IP3+D=lF?{F6_g?(q#a=Id^x~)&zthHxpS?INW7_QV;(+)s!u_u94CaGM9ujiu
z`_;|;&5I-Aj@dCUj<a4j_YaZ3y!cb(gsao|Z*jU})!hE|;-s5<O7kioa-H?!97m%M
zPx<hl7w5hB!o*G!hKW2AV@!-Sk#7PfJSMy*ikK*B;u;fOOk8H7n29<j>Y6BSqJ)Xc
zCaReBj91b`853nqlrm9T3ikqc6SK-GS;4fge9DWHFsq`JN<tcQqj6Ok)HYGgM0FE2
zOk8fFriohSg*AD{%&~X;latglQQt%h6D>_NkP~`qC_;lqCaxei(bz;YH@At2rs6E_
zIAIZP&CUO<v9~hO&P00?t!3H9#8o0~O<XO)f-K@-2NNAlbTZNTl4$9i?WKWJ#kD57
zs$gH)TxX)UlC<e&qPvOfP26Cjhl!phdR^k@Vnt4?`>5ZXs{6@9e<76ux0K0-m>6JU
zpb5WnBPOCE0TV%ykT5J{S;sl+ikXO;NVs~TiKK~?l4%oJ6FCzZH`gg;Dd}(`H#TaJ
zi5pGaW@4C$!LI!+A~%^BB673PY2Z*3x4QlBxEgL^go#mZ*^wf*a~!^9`@iE7<2#i#
z+O@n(gl@-~7;j>!iPucrZQ>piPnmey!~_%fnwV<hQ4{yMr5-RbQGI*At1yfQ#UC;;
z$;87ZCYzXI;*m?LzBmS0owGfrT=K_FJmFeCd5O<wOgyXP678?&OiVZNf|Tb?Omi(A
zZ!;9qLK8Dh%rY_C#2gbZnV4_lMH6#nJWn=Gr#Yn<)dCYQn|Q^<tL~^^r_qKRZ5*;l
z#TUCZI$12c%*5*^J~Xk(#BviWOuR3fH%zP)Sub2Aq_@>3)|hzH#99;UBs$&VIHUoS
z8>GKw;%yV}h`(#%JrSDGzzK=Q8zp{V+AkY8Ss$6$EOD!ekJY80xgGn7iBFZa#dXCZ
zYsT0PKX)6xO<CK8J6!Qg6T3{b_2FtCzA~}fL^&VI`|!1iZ%mvtamvIV71?XzM-$(Q
ze`n%*d0=O<iXU8WKbiR1#Gh_*pNU^(|BH$JCJvZ5XyTBG!x9;x(<crg(%Ww)j+i)V
z;&&5&$n2Qw?YK)EOV;ZYKVjl86MvidNA}eJb^Vjm__T>LoXLGC>cd$R=aif8vnS;L
zG-l4bW7Y5>&v#+=V?h?@2A@5{J9S;=LkSh6QcQYr*PcpAA4>U9+J`dAqEgl^+f3iz
zsNh3I9~%15$cIWkRQ92&57p$biY%Q<9jxxd<v!H(p@!>?dMzJn`%qU!>bTCSH<@@L
z+Il|J_o0FB!ui69{0dt7(A0-!J~URAQ$-W`ahlfLhZb%OEu~+jBzviq53R-9sIgR>
z;>317wD)0@4|n>|!H14Mbob$UA3FKa*@tUXivDTo)Y3&Bu9e<Zc%2X36p~}cfN$`j
zhYywyg+BE3p_dOamFn$7A0NCvm_GFNp`Q;P#o1qeSg=6kVr(P~)$Rf50U!LXrDGFR
zG9(NOBf_Y|^NhGi!iS^}De<f@?L+30{qA_nxupj9FwloPlpG`+tT-9Tjc!YC@?nS%
zH~Vml55s&I?!!<YZuQ|d*|RI0?sA$y9O1)AA8uDJ{ZMhb%c<IKW1cbEhr4{Z--ic$
z7~{iOAMWvCf{KjuA$umj)A9WAO5Uw_9Ow7CK51~D_(WHs&j)>YNXf^1n4~5@?89U!
zPSsQ7>QNsa@nNcTmg44wM10)!_JmvNX%(5}!)za(5r0<roRGWhc^{^^e7eXBKFsi8
zrnu8~n$7XyMIXNKVW;%DKD^<>N+0I=@RASnRo$yTEc9W48^g;!yy6}jPLPX~^_mZh
zMV9!m)HQJWd6}HQ?!$5)R=9o`gY!=QDj!x$+#+1#!<#;=bv>+;_>K?n`mo-I4bmC;
zTRyz4EXLq;<9kYe<ilnk-uGdn4<AVR(1%SbMKf+J>)^+V>JuM6b#t8#cN#_hnGaii
z_*_o5`LILw)VI5_Ij#HBhh08g=0`C<zLN2GK722-Tf6&f75v7BJrY^!Tj{Lm2OswO
z@P`k7`tYON{^r9Gnf>I$&pzz);TIqFOF1k&;KM;54vDiNbmDAu`>RAJ{-ff@g}?i7
z%*}FgY3!6b!E1PB{U!X{hktzd*N2lnoZ(dO9-*gvI4y&VH9F*+M5iCliyMCA`H}Cp
zPYv9P_yL!*#-jcU4+Y4J`%%J=hJG~iqog0D{HW=-PZOnuB<1`l<40K)VUin5(Pw!-
zD)>>+k4mzv>PIy{D*I98|69_&x*s+Cxcm~`+4c0p+*&GL+mAYa)D^GiM}0pUh|`ib
z7x4;;eq7^67v(ngqm3U|`O(CWrc#>u(cF&~;`HCrk5=NXUBz+bR87xqrC;s0&y~z-
z=SO=f9sKAdLYt0${Q9Du+u3zO@mlfggk6P>XZB1tx1~4u(Sr>MpkV+#)&GTl3=rw%
zM{hs+_|aF%l(3&4{rxDAH~I<r;gRkYnnLP6Km6hWVNiJSc}keIONk0&LY9h)B>YIa
z3SWmy`;k#HD`XRLs@)Pgy)@8|L4Mrn$7nxp^kc9ex6Ak@KZf`*!u3XD)^f8Sw@4Z4
z>bLrFn;*mc7_N=q+?YAbw%n_cIZ{2(<Q=a4C=o_-mmg#NxGZ3gVRrafKi=}=Z3Q+?
zHsk%cTjU-;CWzeY$8<kl@Z&x|Ci-!|9}h@>&W{KEcu4#iKPLI{upf{5@t7Zz{q}dl
zxjo{?6!GoV4JN0`c&5H7#{eGp<4HfB^5cn1Y@FPuWyv=c`4-=^;?C=QEcLvS)BN^(
zj7)Ny;m2Y>miRGKS+o3@Ei%WCm;9J7{-Pgq{g@|y@hxALUEs&75?}V)pH6*6NS$wb
zFO<GW=)Cp4RD6YyHm`{+^W$|tmWw+9GwTgMR{F7u-Ni>ad<x*lYVkEfZ*{}b*DASA
zxL&wH==`Md9kx+!-xa>+$NPS46#vAJPyP77j}MjHq@#oNa{EZiX5q)~NT9w&%1%E%
z6WJ>K+>dP{+x^%f;tV<3f1xDD%$F|N#j}7ob9ak;?bf?T$#4DmPUL$(&Wilt$6k>i
z{W#1+o?J<K_?b_EUH*$7`~5he<Uzmv&iNq@B)xd-yn9Uh-~9N)wLc<qRQS6e$3%|1
z$2gntrynOI{^iF>k-vrX^N-B_bt6CJ>ZkoUbBTv@(*JXF&--EMsL2!N2LO>GfeUN+
z^juWRwi-sU0E!1tB7l-ooGvXTUM+yqB4vauRW^Wf;^l=ET)m=5C1GV@l>n-WIO}ZH
z1E>+e<qUumegL%ts44E*ZcwQcK-~c91yDbLo2D5iKMOz27(C6`&#}GTaFj*?ToJ%S
z0Za<u$^aV6c^_dD;nmdnD**9k0W=qBA+e>fm9VvtmTdyKO1!PBaQw7WsrCVM2%w{Q
z4`C-^=K!t=pi2PP25>{b{)sxbu7L~R$|Ju{Vz&UgySdl9xz0EAddd%bvX@Bjz=fwF
zeFNwxrN1x{uusqh0eIxc8-OX@r%<B-_>~L@gTjz7ETsR42%W?NhzBm*33BJM;Ynqs
zglX446F^ox7l0K&VE_XHxHEv!0SpXaPyn|DFf4!@Wph&iLqrCXl(El@HwSP_07C<~
zRXPuce_PqFg>Y(OFx&=r%^R+)+XJ{GfDr+VRFdZ){wmq|D90!%&IsgJaqbFWOaK!k
zjunm<(%ZNIILGoC+}#1(698Wer&zhV{Sv~x0o)hB!~pIO;DG=h41hmX;M?QNy4b&2
z;B!pAMowe?F6Q9?Cd=V;A?ux@?tMhbslrEvw0|ss#{+mm$tQ)+2Jn=~)52$jPVlsU
zE`aByOuIyXA%Gd$7c&Ex9l#uA&AP<k#Q=6HIX8fL0lXBzd?mLBupoe!19(?S`hO*W
zHR7)d7Y49MWO2a$Ylh_kED>2Md`-ww%K~^^{A+$vgU^3e<PG6UA;nbztQL2U+&9J7
z3fBqO3pWVg622{@|93>_{5@BBKY)z^d=S8gs`pb@-z4%;0Gp+MEd1n>*cizcB|i&b
ztBgMvZWA)s32#RLUr2F25WyI}3}Ba(uY^=~i*S_g3E*3f?I;FB@m&Dlvsc4-IgB3y
z*c-s<AkGBwBaH*NI*4{b{2ahO&RRj#4C0pn_H!Z)qDT-2<S;LY{Gfetaxj2HQVs|3
zYXH9ma3p|#12`%1XaIkT{4P8uWU1pKe`q`~$?b%czj(-t{3E<LqE0FKpYXKsOaNy^
z&I#$E;xKz`pI6dQY&;Tq$g}O#iA96BEQr#|aui~*Ac{*V5!539@lvjh6F`|D%1SBc
z>g9u|AYM^eNmyA}MM%$8gQ({6>LN9S&c3S^L}NF%wn!ae-5~0T)E71oHWbolqadyj
zzfySdDM=G0n+lr+(Ojg3kfmA%(aPnmMcN3j3ZktDUtywI`ye_5@rRU-L39dYSP;XN
z>>R{^AO;3;O%PpzxHgEcK_r!Rov>FBy+yhO(Ou+v;SEAM?-4{#ap(H5kGNOZ*R|;v
zM1PkTh<Jh*t{%-Gd{X?va1a5JpfDu7_}*+Jh-eV8AZ}E<;>u+V2@&UVG$o!6A|sM@
zZE_-35QVNn`$4RoU-y#IUEffmx4}W&BxQ(3&dtJGgdBB4gSb`vHdk@R(ug4L31Wf@
zjtt^<<=!D2CA>3;(LvlLK2At)V}ckfPA5!q8z02oQaG@gyjKn%4C0|6?h|K(6N9+l
z<qwE(cA`Ehh{H-g9K_@xrUdaw5G#XN6~xpa9t~nf5Ho{V&G&FP`3LcM5KqW{vrhU?
z2Juu7PY3Z#5YvK~9>lXjJQu|CZe5&?oNa91|9y=21?BQOfmySHm>tA?*M3gWzMNR1
zdEiBfbAy-{#7jJ2_34|5`sBibAYKmQl^|XXVp$Nc2eB}SMY3NiTpYv_?sqo4wOub;
z>fmcZ@P(h>8{5kAAl`86T_K&uPS)xm)&#LTh_8cqGl;c8d=$jyAlA9|9|o~Lhz&u!
z6~x;?yzlDo1o3VV?<rc=IPQL9d|!iYr`wG|e4y4*VGPXO<d$+``&h}(g7`$ie5&LY
z*XG(9#?~M{4`N#o+k@B{#Fs(rQ0^B(=MB#V`X%EoDPIYxu(8fp7rtRvw=xb&-xI{Q
zL3|g)_d)EF@`LcFp#9sly*vdd>2!!w{AVfTzXY+L^S_$o1kdnT%O2hZ1nuiU@?RZq
zybB28i1<;*p{pMY;<&hTIIzf{N}dSfFW2U8k$-~t*Huo6oD%X^if4m3$J`K3hVWky
z=cQjCf)PSq2xUVk7eao>K0TEdk|2a4A^RvMFB-ySA&lkZFDx!BA*5I`gi_+h2!l!5
zmyr|aJW@V{iXl`Ap~59%W%0(sD#EJ5YC?LbE>a_e%SCF2P%DJmp$q>d*C2#C;&p}f
zg!P4dIj{#OPd)`!vXSr#;gv#uJ-&&2HVvU!2+c!i5yDj=v<;zU2(4ISW21El9*sQ*
zxAx9!69SP3-PIwq3*p)jx`xnRemcvzgRo=h!gYS9(1q*#Yh=?!=p4&z9d|vq>m+sy
zA<g&yWzVb|7^L)`A@mQSAcS5@GOM>pA7Ni%zmWaAS7v#XjD`>k!7FYGeL@=eMFPTL
z2qBSh2$9f*^My0X(=r~ySISL<kPIQk@YwbcJ`W)ivd{S39t$BGLQY95gxf>7BZR^b
z281v$gh3(P8p3UIa$^WLg)k(9!Af%Vm{;95i?gnwBDaL>f5M_$DjaXa+**da!*4_g
zBSRPNeVo~QR0wy5a9;=$Ll_;xT_KDQ;qDN|a2$p(j!Atw#+m&2TUvT1vWj~`m=MCf
z98P)>{qfxwmX~RHe+UnRFe!wGLwJy3^M8dDp7T!=ob*`r<PfHWFg1inmF4(+B!uI9
z|Bx5VU2Ge2{yy~a5S|F($q=3jVMz!}LwGubXF`}A!kiGE4dJ;EUI<}^8vA?*(?zDa
zZFeGfaHhmrLMo2<VhD4kyeym-!u${xsK;KC!bqIWDe_7PuX3~~>_s6g7I6&NEhOu=
z=f4)hvJlpXutCjd!Pi4r9>R(c-U#7M6<Ha=st{I(utrJRuy38qsyTn=(+`ttLs+Ls
z=-DxND}=X0_$Y+U^88K+?}xB4gm*)DkAqO9h&28{Za)lR(<Kp7rz?KV>EjSSk^Y(R
z(-5|}-NNDw!?AQ6ZVO>&2w%!_dk8y3z7R6V-$&Y^?oyIxdFLXN%I*-p=0Op{o)ErO
z?g7q?`knQ6N`5c=K}h?(B0myC_*r~k2>V5TQDbStgVgzP`a$Vb4v8EN;nxs;3*krz
zM??6Fvj^t^mHNZAJjT&=i60KLKSMa7Tyn=PUx5Edit~+yQz4uVp-~uDgmET>vz&Xw
zs2H}V_j8=pMg9xnJm>!~_-`gocjZaX7t#_=GT$f~#%1Eg!YCzDTv$R#%aS7ey>@Al
zGQzULazfga52NW<`6QLX_U^6`#^qsD4%_od6=78&lhs73%gh-(HRYsX*nXY3Rv5Ki
zpLIm)3hN2$3mb%iJMEpzjh}YBGK|JyWR%r}VT92yjQ&bC3!{Tbb0O_ph_n>83Zu11
z8{t)9v<>5G@%F-YLI%kXk~n?XQA#Ia=P<4bqe~dqD%mrPt|Hxptm`@v7VIu^z3>J%
zw@3KG$+wr3-oie@zCx#S=%*kIzZ8#<iZ=|?v2hh18UgX3tAs?t!blj=Fk)fE-Q1K&
zLYNGrs9qILySdKso(&@>#S#{VF(8bAVGIi6QP=WDkrBedVcaA#M0m6CmN15fackIK
z8XYF(HgQ%#Ww;dQ=o=Zv?MmJe#@H~%iH{QADI6WfT_R)Tf&D-y<E7je#zc|3h4+Lp
zK?967_o|;c@W}7y;UI$t!uI<o4+<X=P7?AgNqw?xrU)MqP8B+LYLA8SxROtVF-?S?
zpA6$Ed3aj*jPP0EbHe9^j{oT@^@4Cl7&F6|<sKb#!<a2TNBE-9ne^t#{w3jjp))35
z3FFl;ibqf)f`wr$3S(Os+rwBK#*#4J4&$9Lmdbvu@HOEw;p@WXLbhT>7;m_IWf-f(
zR}0s;`kNxGdR-Xn#Wx7wayy)UoWR}<<NYu;D)&9N)CVH8`8<pd!`KwYM^Zi&ZWey*
z+I%9y*?Wttd?vCr{J%Fg**QDH_#%wF2=XJ?8OE2gIU2^UFun@opj&o#7zbSbbr|2M
zZ})`pZ5ZE)|0Lv4`CjA);odNQbaM6O%%5GGePR6K^8IQ%3tl{C52>QVVf^aW_?yTP
zAx}oXhjC2&xX_5;k1+leKM}@B5%$twVf-!rkMLiivuJrrwVxKAaU(e^axRSjM9#aq
zvqy-C*r$ohghhl!g%|f)vB-t<b;$@yMKCmiTO%kPK^d9#jG$};<;0stP(FeR;*}$)
z==!N7!mha38&x8x>gHC9pt^XC2rd_?8A06$>P1jX$=bp?Lg%lb>Wg0~Y!E@ii2ZFq
z2F$Hd1XoDs!wW}gtYj0RbM|Z&LGuV&M9?yVRuOcG;MxdUN6;n$e%QZL1YCB$DuSyc
zXs1$bBgpb2;hJ9BN6=9s+tML|@AwZOe88m7D0Pm2-w&bXHL|CxuCnYFL3d_Jy!fHN
z>y_0*c!QAs88E+c*(-wHQu;)Yh#(n3-w66i=^sH*q(JBqdW9@&M&J|oyGlTWp@u}l
zt{#aXDjsu{xVx7*BvLL<ySbT&ed5jva}ih(6p9as;ARo#4ip(AyfK2ou6|PlLtM^C
zZV@M8k=r5|#+ak_iEnrWBUIgj2u6yGjbNO}?ZP`E7!|>t5&O4Dqazq2a+h#KF@s_q
zzMZZ<954I%5!@ZYJrPV$jSodIN#x!L?sMar7{UGG4+tL=vIiL3!x2o5;OPjSiC{{^
z{zTX#5lrQd(5IOmb%|dKXpcqkxNK<lL<CQYKjkXT`Pt_Po{L~!1TQJJ=T&@G1k+?Q
z-L-rnf*Im7g?05sGWwjY<Q(CP5zLL)|DfbVLUdwqmMGbiFRKcUhgTwam8XCR7Dcd_
zM_d%uqF55a(g=Qy;I{}~i(pv<J2>DYcs+vU5p0Oytq4}g!%FoA{k)+hJ+F#jbp&ga
zd^3WzZg;J7$$FR6)13cy1n)@sT=;GTn<My`t%%@#DH|jBfCE6c1H=#Id6V!XA@>CX
z_(aCsDO)4>RD6qane~}l+}Ufi*(QVSLW(;h_%echu7_O_{2=~S1iK^nI)ZPM{7!!M
zMDVRVUkr&=d@qHIDs;X#f*+Z5y=^#P{H$DNv94bt*dM_GH}{}?GK<?GiHBuO%OepS
zji5*rMWgnS^?L;WMsPBMV=_Cgf`4#2(vj$RI1#~LD$dycmf1f-dOH=tY4LLroDpFW
znw@p+nfy;W#q%OY6nUyTUkD*{X~`yErex_Tibd_S1I6M|l!&5a6s4q4q%o@|DHBE6
zD9Wiwg(xbDl-EH`gGx$P5mpvbbi!lV>QU5)qI(qAM{#)+HKS-2Me`_X$+BJ)^+jq&
zQAhQ%(z;TdP#Z{W6h*_Reg968+Z8mBP2(t<iZl^Al{(lWik4AyaP?LqZKL*?u5}b`
zqPR*5lTJlfN6{{d_7WY%=>cNLC^|*aSy|Uaah)38MM>6mts?B|2H#CpP^V{>y&;MM
z*;DBeMNgIL6-DnT`iS?9qF)s69<aOGiJaJ9MOd7hN1nY=m?Bgdo<E8}6hSF*VMrKu
zZ6YGkC}OU{8_9%tQkW8^-Q0{wR+tl7QTtrU>IOzJD2kbJ%!=d2C<ZgO82mBZ6vdDz
z&PH)AikqXjC5i{5ct~Z3Mlo81#cvh4Es9|x!-XT<+>ue-?(#dL80GRiMcC52q8KAS
zHi`)%<J80B)q8ild*L1t+TR;R`J%>svYZ&j{ZaeZsSiZ$KRxMD!{B^7pp^ZWWVD<l
z8}f(caB>t=qIe{VsZl%{#pWnJj^eQ>9*^R+D3(R>L=;a(F)NDMQ9KpJ(<(kaif2Tg
zbG<zqwbvHt|M@7Uu^;ZSzd-0L7jVzM5XB63ri^*5LNo67IZ?bA#UkzWxlzoE+JDK!
zA}>WTUzQ7^_NpMi9>$HOcp$v2!{L=EUX{T@*CCs;SbRwoOVutGWEI?Ak79Wg>!MgM
zgB8kMDL-$hYTB%dVs#X2qIffEf8%kjEJ+*>Q#RY<VM7#eMe$w~?<@Ch`Jw&}hcS=q
zQg(!llgh>@K2TdW$&!uzP=s0hYQ#sb$mAzcd>X~~G>&3R6rV-0Gm0;x*c!#>QGDSZ
z4%<{@JC8w~ly_X>jZWyFJ-jQ5Z=%=}#aB`6zNCt;)rU0WQXV%Nf6J%9t_L=7Zxla9
zaXgAYC`R#f6#F%(n8n?(&u!)}Dnjvqat}svD2l^T{3`wTD1M9Li1<;rMpnu`A@UeJ
zrYz@E=ZyBxDE^7!U%5IF#a~hUtv+Op+*pL$$tX@oaYhACahg)!I(N`)1r7dF7D?9_
z&PQRykQcLO^-@BTd=UtX#86b^GB>xFNbwj-h?I17r;5@sl!;xqK`0wTxfsgFP$7nj
zF|>@KRScD6e`O4fW2hWMl^CkVP%VZ!G1QHrdJHvUs2M}87<w$QqrF`Ay<W-dpdU?B
zsU5S|3d&WrcV9i_Hi)5N4E4oXik6LH7_rK@LJEtp;e$2DGOLNi7BMsxX%<6sw=U=Z
zANkX47HJ(rn;1IF=BgOligbwKY7zdxoHp&mSz~*)Vv0Rcbd=Ib$em8*8u2c|YcJ8S
zi=ms6-DBt{a=nm6ZV>4q>?!Oe>>WcNk-kF5KkfS~SrCIq#49v~tvA{+1jO%(VN49c
z7(y|GWA<gnVC|_$4AB^3QnEs3#bZc_CtW2ak``uS_C*@axaDH7T${oe2Dp5n$ROd3
zLI!-3B4J2FL~f4Z7LlQDsar*Ei(#0^aPCKukuluv+BglrLj^|(?-Y&}I)i*{4Bg|n
zK8|rQj8`-7=01ws<NTf&Cd6=W4EM#bB!;CiOpM|F7-q#VJBA13gl5mh@L&uNDLE;I
z$6|OqhKJqU$uUfc;SnXL#_*_!^PMO@fnsrPPsH$)YyV^n&R0RGKP~Z@7@iez?iQ&(
zujDl0bm0ra88OTh3C+IXd5)3`Vt7$xu5h04CE<MG#b-J%EBQ(cug2_8xh_<4k#Mn)
zwR5fPwHTJgus?<aF}xnb@)$mj;gc9v#PCK88)dmNhE*}VCBE7%yDkQPrE`svZ^p3J
z)eldw175G>1|e&C+s%C^hIhr^i{X6{rz<$`eW2ur!cD@Dg!HyKhJCNvZa<A-i^T6@
z_$-F4F?<ojPAQ+qutQ{<TWWjEK0~n-H?Ed5+Am}H+Rfb+!&l<FV_4(fzti#?iF<_K
z(njC?{yv5ur0nJ3DQWDB;YTHZirHVp`dQrB*T0B6!}VYchhjL#VGzUN7=BgOsTh8X
z;YbXB(@AyXsKh^nzY7_|u^5hvJ6|TD@~4s~V)#qMnTx3ZqvXFaoV>*Tbj<$h(HSXc
zg|u|eFXuV8$8lL4hK`FoVZIPTS{4!EUMuD*B}IzIQ9{J&)lzYkR<cYS<>ROjM_DDy
z3F(LX)HyCH#!)Gb%C25T#OWf|Ld$A#RF_yoczGN(<ERx!?KrN8<H|Vd#O?WizhNxO
zH|oYwFOK>&&}7>%jt0tgTs4YccxcGo(KwDKaa`rr+cb`r;?0E3g)LN;F|c?mDXoQV
z;`T)vH`d!Wj;rHn7f1UzI>&KM939+Jon+k6t<<q+kuGs`jpI7$*UE-jPK2zhn`?hV
z96gjfERLRW^opY(4p02T?JzBS$I(Xy<bC7lC*EJk?xpCB+h^XWYh$vzc<zhCFA@+2
zh15fFgk2sH;mjFx%f{nKh$rJn#gUF96UV?f2E~z;UKj`0F>>OTaB>kl28sjX;Mb^F
z#f@<cj^h^PI=lEL@gc&Sg)G9Xp$gzu#ZTonW$}v~!{Znc$4KRlbM0>zxkETgc&Bi5
z9CwM(!x)jVLU#3dk-Ou#Cyohm+#AQE?DjbBljli720T&Ze&GYc2jh51<l_16;W#Es
zq5Tw*M}$*dv&Y@s=i+!m{7K<caXcNzGj8s)+Ou?W(ev|hOjGW3*XD&dW{5jBv*VZ(
z$D{-vPT<8j=Ekuxjt|tdd2uX?V{sfWDLG%rQVZgES^O2@t8x4NgoQ#9zGJgQ`m#7)
z7g;KN%^h{i<5(f(tvKEgc~i(9UKz(K@zugLLcTQ1thM6n;z)Ax7m{pXw@=F_d0V;f
z2;UXHCuG6*ML1D#NPHN_u{e&$u_=y^;@BL=$8mfW$8I;aPux<U#<9iivCl-d3O|oy
zo5*(I4k0`I3z401eCaB?MEKM4uU((txI>Xq?UDFx9N)$9z4#At{1V50@x5{U=#+Ah
zrvQ<CLLTV{L=FoN3hDEZrW6uxzsB)f97mLORI|bFag14E_oVZ0p?}2jCy&Pjk_nuM
z<1bDN3HwTh+uw2g7sq*({U?rp<2b3Edn%4Iah#3gw32-Lh`XB`$vN(kBKhPgdEiS6
zhP>q^ke>h&D3U;(1nNpGn!sfV6cgtwE5#Eik+|^YQpp5LB~T+_ue6j-piBZ)5~!NM
z?L|>Gf$|AdNTBa<qa4TT`Sa%+8x<3%ltAT#Jpy|Uw{J^Z4Y#9W7LnU*PX5ZRE_8A)
zPoQQ3wGybEz@e)48#we&<o`-=^wvwDegemMxt>4+1-WB{?X6(~jS{#bfh!YeA#aTn
zn6uE>z<>Kqph*HvB@SO`aHD;5C9e~2>C`S{5$3i@;Hm`LO6ie6fNudM&@O@Y33N!{
zx&*o<&@q8d33N{2ngm|s{5;&KJk>7SC4pTEn>~MR0{mxWZe2w#ub0<7f$I~vK}BfX
zOC7?pcERCB&jflU&^v)X>cjpDpl<^G)Ui%2_YOB`U!W{1EX7gbRacloUjlxSKmx%8
zLgH~DEyD>!#G}HPt2=+@!qouUq!JjCz|9Gy6UZcxb#0s}J(qwbrBFCPIMB5jl)#PR
zgI(n&5q|3b7FMmZ_5)IeCU9#4w<R!4$uYv=!VyA7GLoZ9{Eh@hC2(f~qm{fX0WQ?=
z(B`Tv&3IMDZ-|XeV4QM!3{o5~es==*BrqX?dzG9hyiZ6E{LViu?@wUCXxqbs(jO91
z=Xqpu0#mrllDHv>N2Jf;u1R2O0*@x}SOSkH@Kgd%C-8(@>PfemY%I5DTzz)JexKpl
z1fFx1=S8Lorwd;Y&JfN_V3vsUk35Wr-sVdAJb`Tq%uAs43Hv7Wr3B_nUy#7d3A~cP
zt4h9~z(SE_3A`?{NVqtGB_d0OuL+%p2=ul*fi+TA2;UH{OkkDB>V*9oB+VRrQ{q}7
z#dQg+7vGS;TM4}F>hC7-j?4K7?7d6)#soe{;6qpWRAiIzqXaf5@Noj4DCz8L7U#A_
z%4fo@LMNW>3GCoJki?Zqe38ITW%0E5C6CGk&L!|)0$(MtTl(<?zE0p9@dLs=3H&JX
zt?)Y`+x5N34+-pbl?xvbPT*%(*_XgCF5jO3|H*;{54y^s1P;6W*93k`;79^TrTp&d
zTu?nG{;?+NKg9nOo=D&?k-vqf68J~tUm+_xnfTvz<7tU!5;!aJqyFQGHs=#4nY?fw
zF_Op=&lf^iB#EL)T;|#o7b%vs|KW?p*Dp3oB;l-0F<B~!(n*v_qO8m+xuwb_QC_@)
zu%fH;XsVn<l_aVrQ7wtuNz_TAx^gdfZEA?{_^p{lt>ph&#F1Y&iF!#ibS>*A(ZDrk
zFx>d{MPeg~v~MhOwQJubiKgPsT%~yuEyP<U(MqJX@Tw%*h+O=yjkZd16w!Y>@%Bk{
z5b2miCy~xcbQPh^H6mSv*Czk>pB>jp=_c&%>ODx3Se3+T>AjNZn?%1PdMnvS$mSdy
zZ}d;1Ac+x4jFjjRdR+rk#FvCWi9iy;ByveuNraLJD=V8sB#CGe86_EKEQz_C?URU0
zNhIyhigHUPFTDSjmhQY;zFVEllN$fWmSqc*xHXB}k{FQ0z@)u?J}8MHuIC#$PLjAO
zdEv@|_AGd_n|n*r{{G}pC3&y9ez`G=?*b_~JZWD%@C9`i;dVP?R=3}w+)=_ilNg=E
zT}g~d;)Nt;Br!ILaY;O>T$UQ2!~;n@sN~&A+>^uvMaT(+ao#I_pKzk^{!4NnN@8jf
zk4l*&d{{VHI7Rq~klr3k;_>8#|1oF1d=2A?<b^*bX6{pNJWnU_OcKv3ive(ZP9B~Y
zP7_Xdea=i`RuW59c6JhTL|zfTD4V(BPFv<lc}X~5xIp-_kT$O-u~2+b5{r{qq8J#b
zv(bRtYp%m(BCpGSxp0N>4dF^5?bpa`a}pmX@n#ZhmE>+(m&E!cHYD*@5}T6tH5>cn
z?Ihk4XY!pS-jy+RUR%DOgu$l(Nqmq*m(m6~w+|)qii<WMiF4$Tf1-j1llW9aVhd+@
zKKxB$YZ9L)u}#Tuh1-+(N`wYGM7|L26n>e+E;rY?$=a>t*TQd-*dyX(eV4@dO8y|+
zm&9HXdj3)5C*jWui6XaOr0h@PfQaLV@gGwBd@%7_5=S`o4MyF;ILZTr^HL7YayXX6
zan8Lt6wBd{B>v=~nno;bFEO1+VsZ*oQuvEK$q9!mKb)vjxGZJ!f0H;V@s#kikop;s
zv%+&p{O9WDMT`{kRGgOiB1oZ#s|<!wEQR7J^h}{w3MEn~nL^_fn#iD(uucl4Mara5
zHidF-*(xcNcX@>rD!ROqNM+&s`S$nWtBO}kp}K2RL*()lYPw3T6l%Mit2!)IH-&mq
z>brUak%lQW61l?FuS~&H&MwkaO4}5!PNA8b+gzlDuw@FZT)nkO8{t(#C)#!?T&rYz
zA>DRJp`*(?rO?^s*NAjUVU6Fey{nSfxw+j^=q`S}@CIQI;rp=dx%E!LFNM5M3Vp@<
zxk~>O3S90H@e0ipd?HRq1yTs65Rx(=g@GxAQ;4Jxl|s+y6k_6WS4pIh6i*4iHtcvZ
zDf`_>l57e&aZ5<CFokgy?KdQuJ1B*FRq96J;1q5W8Ir>7Dcq65%_-a>WoQbwr7$do
zTa|Qb`OGker!XRgktsBF`+*`oFE4M5O5sk{CHv7r>SILi5`LI(j1{3Vv&N@zcMA8o
zmJ>v}YcOmwjQf<FD7;_zfbhW-9!g<S3bc7xisOwAsXUUx)D$YEQ8|rAQ+O<e7gLy<
z!s97Ck;3#8UP$4|6rSRNdDNJevKK9%PN58M0aDnhE_#-&=H#EkJbt>9>;EY%7@9}I
zHMCXv#*7qZrZ6jo*(rS9$!^7G>W5h^jAiG~e~@p?;gO<`Fw9Hgr4){)@OujL=_G}h
zQ+OqXcqOA}C4-^9%RhfiVPOhux!%~@SfpT<r?4W0#o~-@NeWBFUvrgZDZK9TbY<g>
z6jrA2T?*f)uquVsDSVW|W*MwWVO<LA#otWXQ~g@uN861JBJZS7l;8gme_J@Am3@=@
zZVK<E@O}y#Q}|FiPxry|#+Bua4;Wi>d&PB=tMh*UV|Fr^?o-&6!Y8WkQ{`?+;j<Lx
zEHbvHup@;p*kjVS3AYRBjWzPJlV&?rmW2LG@wZ?c9$f8DVYe)4_O)s!;kGA*Z(W@+
z{E)(46+e=~kFLHyg`dRvE4H6S_6dIx9xI-AK;)qCPzr}dewCl!gbdG#@Y6E(AM74W
z;W%f`G%BR=M+$#(Q2FxsvnD>dIFYiKUeECG;rpM$zf<@}<X_=Q;VB_)PKy{t^Eiag
zrf@EW|57-gf{{ikolvOfrBPfw-&K%C5%HqJ%hGnG#e}qXrlu0gDw&3J%u+8crHrs_
z8s$VrRklYj2W`bPSg<44JkOu!Ay6fas%c!6M%y&1rBOYN25B@*qedE+r%^MFT4_9$
zZ>&0PJXA7oeqmm@Jo~{-?X-Om)k&jn+WxRfy)^2J6yuY3Mks8Q#uaH?nMUI@UgFq>
zeH28hX?IsMnxw%aqG{Uxvq%QkjEzd8MH(#?EtNKDv=VRaDkC*la8|iGjdp3=kVcO*
z+NaTh25EFoqiZ$e>hea%G<tT;V@Gk6Uc>nLtpgap{%3TNpKH_hB*3k!$aQIS6X`Cz
zUbx?|gY20`uQYsV_|sr<dZykxjb}Okvt7-MzG<8|f4*ND{n^H5MnM`A`2!ig|3fG8
zV+wg3(Hol?NP~Zid9Z>JOk*4u|I_vl|HElS(%1mohV#jwK6&vp5^21U!Hf)&X{5Mk
z)A%NhbQ+m79!X<r8rd{*X$(r^#x$%n3ey;n#y|!D;}ndkoN8Jahnwc{EZM)45$KdZ
zIE|aqxIK+KXj#b^!aW-@<~Fh?v76JlC5@p9_0}{-atx?{Zj&-Bjp0&82sv>v*TGTR
zcUC2%hGxz?(^y>A7@fvlX^dgOe66LdF_tYAAD_m3+*3Tj`7gj}+#^0gc(1EJRLPi_
z#{FqLpdvr<$6skYn6_`*dEdu5d6IPA>^z*tWbrAkC2bx}<FPbeO=DpikEiiO8c%ZQ
za{T8R)%iZ2{*aV=;psF+lryHUun**CxHr>yE{*3kHs-k_ZJNk*?u9gFq%kv%SyJYv
z?I*~y)8N17yeMT3cSpX#!FKUFfytMYHD9<u$npHL$SXSfm|T>`!869<G?s9<mNyz+
zV=PVMHRh(VQ9Zv*_AAo%Q{C5v%Y}W07;m^fSEjKljnzu7Nn^dpn{Mt}k#&leHEvMy
zE#ce3cZBZ>Y4DyK8`pI|NaGWQF`3u@X>3a4BlbC;{BmcVvd8Mj$|a{*l@Ef`*pkL)
zX>8?u!sUJ8=fZ923+LADY3vX$Q^($$G~1cRm$KQF##fwD>KGJvOW`{+<a^TimIqe`
zO)~f{jqlUAEQ4Yh{E)`pG=5CuC+**|ywl<2R^Av~&YpihuW0<7wtvsKFO6T)*q_FM
zG<Z@to5nejgJ~Q}<1mlww0$l+&gngk-^7myj|zVm9uu-SE&oj0C)R(ZoJfNQ`(MJp
zh5raQ6|?n|vN<I@Ej%N1{Lodpv3-X9FOBo+Nh4!>&dXpEFaCuP77-Q|zE;f6EuKM%
z3@T($F@usBG~(GagI&vvH_qE1#iEna8I+N?vO+55M9OE-Yq-Is?@Ad|&fwpC;{({2
zCB^wG8=eR<sG31FB3}U&))CeaUY<csky^sqLR!{uXz!-FO4bwB7d8+!6gCoGk+GM#
zt`u^Gp=k!qG8mP?of$OGphX6^XK+UbPr_)KftA6>E%JEQXq7?h4BBMCimu9_C!3H#
z+YGMGpj`&-GxpHBE`tuLf{}E}prb^NB`3Dd%DP6_MR={StB^L`GU%Sc^{V2A40^c5
z>A~4((>sGc86-F%XV5o;ei;NZ2xibfgMtiv8Td2ssGv6kQ=Xl&49|(gA><^X48p38
zJd!~)gIES}?lreYrwHqHNGgN0oM+vbGfL8c9&#>c^9wWf*=;}u12Y(u!HvoqDIA=^
ztr`17d{YKPGPqg%7UB7d2KAwr@Y}?P35N?u2x&GBhO_a+y5X`sUchsL8lAyi8BEJy
zdIn=MnA9(i$K#X?#%ApE`#1$KUdVv&7P%*b39fQ)2KR|i%;0{J2k6AjeNf~fA+KN`
z7MbiO>F^O91=sKsa2Y(B!DAVaKQ4Sq_yot5NX=>nv!2f2nGBxI;JFN*mrij<5o6ha
zJpP#FiL-fIdfM^-1Y^Q!W5xhuW(Kn|IGe$_3}$CACxgu#pBcQE!Q2cMWw4mRuzxa`
zpTU9*&X+cL7U<Y5uYNP*W!meO;m{eQ65s#N;MI(M(YR3fY}-8YB^fN`0iMA}8I0~^
zyq3Xk7^!x7%VhI<20TcYXRsoJH!@hM<lDkk8Eg<)EnFj{@tYZ}b@@6CiS-%q>VjEs
zNq6`=j*aj=*Z%zsHaa#!4yO;@vW$v%e{4>+q47xupJuQ>g9F^-4UH`se3rr13~D#C
z$K>Z3bn9Sj%V2v3Jhky0!E?%vjD0coV+LPjurp&nG5j)vuM{5nE|Dqy><jPR8GNne
zH^M!_Z+QyH;CoK~8SIrp%M;!6qGRkLB*dRG_*rw^KH)Dyu4{1)<eJsN3=U;*I)gKc
z<S>s2p1JB7zh>|o=aBQ~k7RIEgnPeDb^9g8-<3QjJf6WH8T^^Si46YA;FN3mcLpcL
z|KX&X!QrO%$%tjA=6DTeJ8_U##q58sKk!oIKMs-%e$V1qmc5C*EPl%3=PdHGKo%9U
zsF=m#B6&r!D4zunv7%XUioPsskAz}ElHysEaCylrN{N>imJyb9bIWD<){0#_uMc_U
z-@k}aDT~HgG|8fJ7FDvSnzav^p`7`%s3y)N*Zir}$bxveux1vuvZyUyN7yinx+1ix
zCsJS7KzQV=(MaS9;gv#K(s|RYJu`4?n?*Cl*<9E{*izU^*gA_gBI_F1O}HwHacyjJ
zbr$WiXrD!gEGA@eZx$W1=#)hyi)hxqE9sm?H})Qzqa>9sSzMdN$V^^0UjJw9&q!XE
z#jd!0&2YVJdSuZviyOopy;l~!voN#pu@AKu3WR;L=qJ)Yi?7NV+&kPxo-#c2f67jJ
zMaca!3kaEHT|xN|Wf68o$3sl|ZCMP<BA!Jei)0ol#+k*SEYewIvaqr!RM%y*$jP4L
ziW`qgdLEFqXB+maBRV~NV-`1MF+`;Xy9PHac?<W5oUoL$-RkZadKj*(JB4&Lf-TD8
z_AKs@4Gmc1C^whM(OKM;#h5I}$4Vz*!EsrPSCUoSoy9#epw8k{?#p5#_piF~{wyBI
zVtN)YuxGM(D2u6CJetL%EFR9<pS#=}Hzw0n+#q3cN*0euzo<N>ZhtC^r?YrGizhDG
zJ5OH1pOM+~Sv;G?bM9VXJlsLklyvsUj4Wnmu_B8%vY3^{>?~f%;#CeaMxMpoEauTq
zIpakht?GYzcqxndGN8gGqXk*KoW+5%_GJ=t+jlY+X0eE3zOkI8=z-75vv^JYvqawL
ze3=}QyzaUpXGKM|+`2N0RavahVnY_IvtU=ObvtKG7H`TGMOMcyTBjuY=PmUc6>{R+
zD)Nqs)AGG6-p^uV79V8sc^2EU_%Mr2S!`8t-Y0&P#V1*On#JZUKF;DZU1@I?GM7o>
z7V5IUsFQ5ZVn-Hxr1P--B8%Nwe4WM4EWYH?$A(n3L;Xs}_<c2uitP=Wad`07mE;>0
zq|LWke3!-dOv>^{>3g$apRhP5f7<ZSCf}FEFIntow`VbVe4c&Ug0aNP+f_Y}q<S;s
zU>1jXlyPRxq8DHJ;QK!!zX^|Iaa3gcm3hoMp2Z(ooXg_BEdI>mL>8yBIFrR+cK;Zy
z+Z#Lq@jUW(7XM`NZx$yxot{5`N;sjh&AE}Vf6j86f*sF3ReC-PBWItNi{_A*L!I)*
zu8_f-)BK!0z}O<>?8~_#!bk_>vHHe0oc5Lcu&L1~hZ5o?g|sY{L+KpK<WN>hHCHc}
zLwT215UD7vB&?i66*sqP?!t;+byuk&a(NClU8PnIwOw9Eq^_`D4)tBVK@JUF{-a@E
zB3_ZRPcc{K>;d06hbAKA4erWso<oZq`V2(hfoPdSD>c8}K(x-G4ePQ{$HG-Pw9R2c
z4)^A8bq?)vxFv_7IkeBALk@u)f;n_#!5ps3p<51}bGW>gaZL`HygZ)rDr%LfOAgn{
zc~>DjnTuvyVQhy{q^8k5hwF3p{<<ND9tyr^4*f-Xxozn!(kF+$uF_A0=gI<C@sNm{
zuHwtVFTSsieU%c*A)G^+vE{(U;Ybb~mOL3n*$O^s%^{vcB8OzozGF(|@Ls-Ap@{wQ
zOb7Yj!Mu*j=D-D<TyxuDE(a@z!W;(Vz!Ac2uo^fphe0AY3OALt*8rJ&Qw~F9d9#o@
z#anZ@Er+o=jLTtI4#RU8k;BLwN;b4ht>ZKmH#l@}XV3HZr~LkN4x@6olikkWT%13D
zm&j-#M>3T$;tw`7#^-Q%4)^4+w1T~m$l!UX($(Vf_Nv-_IZVu9R}Nq0aDNUD<ghS@
zML9f}!$Ubdlf$z)OyXezV`w$|KILKc<YadbPRZes9HuJyXbw-h`eQjfF8+jYsoKtl
zJf-B*!X5d>b0Q14BZ}C|8qeo2P0I8fUdUmF_=`Dv!G~pM<}gdjY$267B78PSK39BR
z4ljw!&)JJb)LHgr_46w^l;c}ErHofa%GWR!=ddJ)FEtF7vK2LL`<)yB{Qh$e%W`-<
zhvhk}$YE0sA8|CY=W}>7hqXDZ%wd(3)$A@V^ywOVjT9%jE{AtHcyd^u!v<G>D~Gpp
zct^=&l`oXqS}C8!iR^**bJ(cd4|2FsK0j2Fi=Ufw_*i_K@Dt%y?T$}{TR4(M=#4Ra
zE(3>ecliz(d?BPyj+16r=EY!)ZJ4(^hp+jhmA%dG%3)6q-{$ZgkN5J%@y^BrHSKGO
z?^%Um{K{jWr=A@4s;hs@;b6|bnEy%1pN0E`?9X3B_UCZGRkqi)XQV?p`_lR_$6mgj
z{4IwgGC0a7znYzXckOxRJ?_p|bGsQQa`=nWi-npN7M3&q&S7^O;~!2tTw3AkP!1<^
zIF-X`&d(M~S~%nS$+PT<{cH~Br2Lmd{&^m~HX4?V%zfT4@?}O23q>pxRq`?m#a)|X
z7N+Vk9BoKSStxCxl7-3^%2@Uw;a1*4S@CkhziZn2x`LZq(E^ogD;ZTRRJB0DjRw_Z
zP+ba>HJHl_k7{<-r}_5%el5$s-Rr>%co=mp)Uz<f!Xp;yTWDaRvxRFcG_=sjLTd|c
zEL>sXN(+rGG_k<jMsH<fBiEzyjHZ@-YGeGNB1SXIz87fjwz`Fdmg231yp^WeRTkP>
z=t#xlFaGkbw!lk;rFtUJPG;@pq=RMOJJZ|dB6)4g8(eSiTg&Le=2(bYh*{`r;W`Ti
z7CaWZ@yt@rINiYDZBcg%|CKhbw{U~J^{~)W#CfXHOT4$RkFc+>pRm7WKYVdEp5r*B
z^QoWLf~k;v7W@_h7J?SSmi@>eWZ6#&xD9_WpGlGkd#RZbYL&-i+(N>_!xko6NR`QZ
zzowBSvG5_+3@zMj;TG|XFl!+vVhIZ^3=kP;VX%dpEDW-6qm;QhgB~u$A<|3u4PIpp
zwQ#$IJ1pF4fyvv1!-T_yBZSNvDdJq4jpAN#^*b$$ws4n{V}y4L$FdU|7~?FASJGK|
zpr3n`oS^Y`F9)_(Cnid~U-*FVLE%HfNkW#Tlj^)c8e$wQYA@qYweYBgasyF*ARe>u
zxP>JamRfki!jl%BvhXx}X<#0QU$c>U`(Qj{*$;Gn=k0Ad<5>&OS$N*EziK$!!W;|J
zEKIlXf|OZ8X3bEXGli{SaN`m2qJ_B@=F4WDYq`9p@sc=gSa5;(%NAY{c~!VbxKLPE
zW{X|^nuTQ+mRne1@%s;Xe5CcdMv+I49p~|mpq71w{DvY~X<?Ox)fU!Rc+<kR0oXnO
zYiX}x`Q!ksx3Gb|QHZ65c+0}uJR}QoRUzJCPg?lb!buD7S$N;V9t+=E*l6Jc3!l>!
z$A*PX7Cy1?sb$ZTA6eLJ;bTq+^^J3F?L(3)Cq&MTTU6a=7PeYgsWTDv{Avc*I@&ih
zwp-X?VV8xkEPP>Mr-d)+oGZXE_$a?3?8j=H(y#Aq?B;P~;TzVg2XOSvwId?uXP#ld
zv+%uz!`yckez36D!afVXSoqPxPYU2?iyu}s=$W<CGku;sV(hnYz`{Wbhh#%<%(b)X
z*n|<%`EM4ESop)jpB9c<_}#)WPBQEk7<|07vbO!;l0Dz0;RWX>Ed0g!)51S$2wl-F
zPXToJw_yycn@2ol;WYcI5Y-BC#==<(B??ip5a&40SU@3)6ym%EqY!z8$S<_7iW#{R
zd`*6Uv95hjaj1w<v=EmSqF5n{7b4urU>1Yt6%>1qeaivHT~n$Mr3+EM5ETkhMy|>h
zqFkYUqNKz1u!Coi^J^Lv3sI>Ml?zd&5dY*GeE!VH7Y7Z_@LZMROv_~TLewb4m4#?r
zh|3F6vk>(PQNIwi3Q@ZdbqZ0JwW#;lUfOeG7lqP!e9G3K5Dg2_s1R2ag5#gD(T1TC
zSr?H?lR`9QZlQfDY*vWog=kTTmWB2hqbrJRBS(?*ng@HnwJfQR9Bi~L#MOluQHYU+
zXjh2#g$NcRRQP{gy$SeF#rr;fUT&4h+fG7BsVG7rB3qOeN{X_ceMcx-$(BNCqm=eV
zMcOx6N+p%FppsHb`$B17{O-A5&gcKV{_pE`-Pe7ddFGipGtWF{&YU^tjSe<C+Bnfh
zZz|j9Wa9)I-E4HWalDN#HoD44`BL&=EmI1wLF`|a*xg1C8$E6Gk`6;RE5OSCSI@LF
z9nY#L^|5i1jnizLZsTMdeQlg#<5cNWr-4q50fDVu?x21)`rA0e#+kMm5&t_E_5!<O
zTNiVqH_*n}HXIwSjdN@avN6=gFdKtyoNMDe8$;+V-<bt=+N6cs8(DO3?w(@Jhuauo
zW26n+HeNcRvQ-{#>|(|f_WN2sO19zKNNl7w0vn-?$VOav1zUjr!v=A673RriHgX%I
zY>cLJHZm4?YP_hGORv_z^yXL_<7`}G<60ZzZCqgE3L8^wTxes0jZ1A@W@Dm_i)>tM
z;}Y8p<R2?ri)vYn)wENyvT1o*zTCzn8<W+5tTSVB9kn65gZfi#OtUf5##J_^OJ|0S
zE9D`~&eo<!apZFTaJ7wDHfGzHLx<=4N^1XdL}iPybV}yhxX#AyHtw)-y^R}e+-&0(
z8#mgx$;Lbz^XZWCRgR{1f19RevkY8PB3WSLRvWk3Sg3Ph>1AhTFLbVJ(UEX)=}wL~
z8~59Iz{cG+?y+&Njr-UvLrXkmhK2IoK@)!IqM51EA{!6tq#oj!(hUM5D%HxCm)LlO
zBf>!|2TN@{YU2kRKiYWA#^W~D+jyHEW#dWqyN#D@JZ0l)8_O8pZ9HS+SsTyUcwY8d
zI_o*%I5WAmhm|g?YjM3|IfK8Al{Qw<Y-Q8MtQB7y<higH81A^vu-eAUHeR>!2G82Y
zt2SP<vDU^KHPl5{7*7~Xo80P9!?YDoierRL{icm|Hr`^c;s2k{(}k%2j*WM1Y_;*J
zjrVM9u<@ad%{DgL*kt2<8z0b7Ync9`Khs)|TE=0Rk+u5B#ughN+xSE+#-wsbFqM<o
z?Uor4pV`=E<0~6q+xXnZ7dE!r_)_h_exxa$CjF3v?!k=T*!b4QcQ(G~7_4K43<IEv
z1~rT;(ouP8KiSy9Sm&U^!A=`LGh*AY9Q<NqmyJJd{AJ@;22vZp+xUY+pt7m_mz6DE
zDOf|=WN~bqzis@(v25c%c4$p&QO!#9`SMtx4!w@KN)9SH*vCN?2XIi?!Cnsbc1)0@
zCcCL&eX~ZvL;e_P_jOR!K{W^aIVN(_4&{t3ERn&Sy~z+=!$D04O&lEPpq7K$4jMSv
z-$5M*bsf}mP~QP-!ZxQqoq-m3-5GPF@!N(D4sc9u8$0H_8mT5Le5<iGdr+DCc@A>W
z)IoCxhdDUdK{E%3I5^Y+v(qcgAgyICQk;;}{b=fN2S+$)>EK8QEgZ9OO3$aMTlD0b
zrN7tMRGZmbJ2={b?;vo{#z9*Lr#d*zK|2S>I5@#UHwVW$Xz!qtgU+g32L~NV95est
z>99$86)s<=j%RVOx;W^nx^X)bFNkbX4otRHcLzNj^l@;KgPsn0IXKZlZ)eYbDmD&(
zbRISoD{OuZtdkw|b#RJfuG*Ba@%f{iho?K}=iodCLmc#XaE60{4$gLPrh@?v&QevW
zMw=|1(WV>$&T%lv!C(jHN`Z4BT4RH-8QB`tVJSQu>R^O}kq(AA7_NSY<g{ixa2&V}
zJT_DfQ(<PLW3WSc0V)?4I*1%hRS~g+ggxtEqJz{y#_n)1)<N!Il!MU@#^~&rkte>s
zkvTQifeyyQaSp~ixWK`Mj+w}nTZRh!(c3v`q3|LH7dx2bV6uZt99-()G6$DSpPoQd
z)G6C66LOL(987UQ3p`}yiPIcRcQC`jl@4Y(n5|mPba0h}tHpVCY#AElB!py+gKHdI
zt8?Tbuj6IQR9M)xbe)6i9o*pHMhA~Mc-+BF4(4$bIJnord<Qo>Sm@w(2e&v_;NVsV
zx5*USlLL@dA~KwwSIhMH9S-hf9UR=vGi_#Ej(ti`o7c$VT`ezj|H8V@!Tk;%cCgsN
z0}d8Bc+kN^8d<aIo10UrvC&vn#wA)_;@}ZRekwS4rE`h(r<^(*l^iKN<dxzH2TwY9
z(ZNd&o^tTCgJlk0aPSN#{|=txw4b#)p~O>WY+<xq-N4j}{=ia}J6PdhrGr(DnIF<P
z=h$W-$dMR$Iciq3n;fil@H*?@;8h1}9K6QErskT<!NsZ0#|=${WP>bdY`sBK4%Rt%
zO9QQ35PgQlQGpj1mi~@|ch!<#I(V<>olhNX5Z~xv6Gtuwor8}h`Ov{;2Ol}uqC;+w
zE7y>9rZu`8ZyY{xu$8W>NJ}}3`%KE)gr5t)5N;Q8A?`E2|3wFL@Qoz@3BPslorCWk
z{NUg(NoeXv2fG~n>fk2_J0#rc;AaMZXV0=8b-2D){*nLY;18+&E-Wt?QvPRg__qip
z|2X)!5b|)h!^K~eTodZ62`jmPi^?wca?J|xzApB5v5$)?I;0wnm+do^Z+TReoHgO$
zezHKF>LL|FD%WyR+eHHx`@5*)qOOa2F6z5DBeEvfur9f^RHdPbGYp=5<S__VLl>Ky
zSqHdi<eJ5qna5dQ{b&57u?wai$t|ER4s>yli>59PcG1>FJC)VU#Zg?wcX5ag4;40d
zahQw4#ap;&DRP7h8e~=ZJJQ_~Z_8&#<mt4Q8u`&K+PLU7(o9FWf?8htI;KdaW_$4t
zg`^`%!8^I=?BaMGc5!i{i{9d0g(nER3A+n>2z#<P5tcrywy9*f!TY#-dY?<#eO<ia
zfg$k}7pJ=BT5y_+kuGc(r@QE<cIz)ZS9petGhGZ2KTCLyaG;B`McB^MnpuMiKG?;v
z&COaCf9JUvQpkt87*_D%E>|{82l02%ab{pTE=IW+?ZS1<N}wks@kIh*D2!ahB8iYX
zsYvD`7dgMVF*wG>`7V~Yc*Mn67vo&q=;9_d&UoQ;7Z<p=P<(=m%ZqlKC~}dDi$yLG
zURtDH=I(hDgl#*?#pFVMg^MW#pXy>-!FlU6L;OnNOcz(VxLW+$LT8qX+2V7A*9aM=
zSj1e{tgl`t$@M}CZ*a}TfP}w!E^c$NP)YNJH@mo{&|Ki+R`Ig6+r{rMQtxnaCmleC
zoafWp-7fCY;l0B93QhXz1LBJc$%7&fxp-J)v9LTVSnA?Y7vH=1!Np^eKks6h$m7B%
zTs$fAl#t~<?c$k&KP&Q_YvMeUUU0G8#ReA}U951iQmHSwSS9jek&87nt--5+i<e!z
zBKeyx*134K&{^Z+H5Y4j_`2|oq9r*(nVrA4B!Ab%dXcw<l)odw6MV0b@VZI)CKn&O
z_{7Egh5Q2-ABt}lek9x?EVs{A@h^q6@F~Nf_%`9^!Y^EG7vZdfI;`GTI{aEl$u};(
z73X#2I~Q~_3V(F*lZ#0nCVSZ7Vkcvrhl4!)?BW;Ktd=+Nu*=1-F81|M)x&Qtes}SY
zi+^cB4gR-m{we&cFiYp*ayng(<UfXY&%}IQqj$ToJd`|C@&FH&J+m6gAM4Dy0g*o*
z?k)X&gjIx0rM#MF-V3PjnHBZ@l()Kv3XvKfYI~^Tp{9pgo|(^=OJv5nMJe?>bD#dd
z5^1D?hy6V?l)(dpjfIWMykw>U>;m3TF+Mc)aIlBdnB<|EXD-Lb$nqf`4wZg$VG9q3
zi7@Zs9*!tDF99uCe-B4_Xyu_zA#W{mw2)=-$Bg{7_0Ud2X5`_q9@?wW4jy`nbY#nT
z=;WcZhZ8(>lkj*CT|9L4%)Js@fHh}5IZ+{YmjX!-kv&4rojjcAp|^)V9!@EAPV#WF
zhrY7IEGD~VL1lhwA!lRu^ALH6J@of*hKDmf4DjH4=6T9l9tL_i&%+Q8XL~qD!oeN}
ziBN$KR(6$hB_XF<4)rk1gYCibFx<lk4<ieGrk3@2Y9wwU_v9o@<&S3h3p|7pl2e$d
zB{L7XNa}$v8L?GIc^K_sqBO^N=F&FK!*~zpi}P@-2&ZHhh)fV(Sfo<UAJy0_7kRi?
zb}kWKD!fd1xv)H4yu!m25086z!oyVhUVUq>hwD5{Q<dmu(>=`aa3%YKvk~De;Z+{4
z7NMMhZnlRxI=sfiwS}A`uAIs$UGL#$54X@g82{B!H+r~9WS(%ou)j7oFW{)>&L|Ie
z$fa-faGS_NA=fL|(QNZObs`V)^gZ0|;U1;l=iz=2_llRt9Y@&%I$R_y4?5yQ9v=3v
z*uxTzP$kjqBOaFiA2r^CQ}eMRl?Lg<PpaHy9-fk%HF;X(8R4_S=Y-F5M3+o$U+}Qp
z!wOc6TY8k8p0LuxDi1GucuD8}vT(JKsr1HI3eNSGHR7)c*9u=RQt5kddRXV-Ef4G2
z&OUDO@wSI|JRI$#jgNOdyyxLR54$~V@UYRtCmyzXW&*Rx!-JK~&Exy(wGTXe=wY*x
zw#Yd@66Z^KRQ~w?@J~H_#wgd`YSY9lW^VJ$hJ>FzeD2{358FL_>ESzuR?hrA{MpUo
zkDQOTzxMEr<mBHfiSq9y`9b)jho3y~Qn-U7clYj{9^P(m^3nnw=@*^#F5$1j--N#l
z&G@2C@xK@$53&9h|Hs3>j756b%EqLc<)h@|P#?{G?5jr-m3;Gj3O*|P*vrS>KI;0Y
z=VKq=M33q|DtuI-vJPAFpTGDZGO3!6{d_cF0M{WUHGI_ZF`tV_zWH}r-27k5M{VDH
z1BW`qon=j#YUbk*X7{nbvNZH@kmLvWXe6?bVPB+)@W4XIf|`mSETl~qx~PshI|h?s
ztxMedbeIp`IWDSf9qyZ}9_2^)XyKb{R!bqtkv@(pcq<>R3(la_)<-)Z<9%G<;}{>u
z`snQAc;9#qU7|g?*4#Sy;Pb(bEW$@8W$$0d8rapMkh=&zsBd*qmaaZd@J%G?=A);N
zUOu|(kdhugW{ouA;zS?4eRw{6Rk)9jGkpy3agvXdee{*^RJJNJiZhP!-sE&2{d9PS
zk9+GINq-&ku>#MUKRz8k%f~<;LwyYMakh_hd<^z+E*n|v?SrJx^WwbdJn<ny=H=bl
z|K?Z2eT?*B`xv3r|H&O6u1=isjTM+t+l-gMN9bdWkMn&*K4Kr4awWo4Sbm(xQuc0d
z<&uo@%}p6=HQL86tw%9+tdDU@JxKd_%QLYHeN6B%)yFipWDRSgk4Ziku1jq8i_{|*
z3oj8~>f<tz%Z1e0Qs0`aez`)HrwCaVhu(A_GuTSattO34177K4jx=W$I#-EYEu7_J
zb|L3#5<Br4b?dc0=89Y=yk5xE8$@mt-XxqSobQ9nAe_lB@Nuh;%|1Tzahs2YK3?^)
z#>eeG?(lJ^kGtqRY+gQt``0{zVN-M8{)fX$cl)@94&dWHIx7DOf{&+t-0$N7jtdS1
z9~&B4kNJ2=sY`@Zdst+#aKSY5s=^~amKLdxim<IHf856th5Sh$W#wliSuT85_?+;0
z;W8ofzTl&y-h)^n$x0uqe7q?Ba-s8*$m+uKD}|hITD|6Dt&i7zyum2cv=YZSH}TRl
z-}JGO+jweXlW+DquJiGh8k6n3UgT}zJG=^ryeHfs+{iXje-YnT|9-%><z6-6W<7r0
z!l>n=W`J4&KJl^D$G<-Q)2O*y_rIU|W{<>YKDPPz+{YI_w$pFfl|H^KBFWD_zVh+4
zk8gal7wZQfKQh=V^*bNmOUP$ctF_L+h2o#ozdL;M4lFx*rw;kBjKS&`<>J|KUG6t=
zzSqn#`@8D=ha`V09<qu468T&BkB}>bTprxbA=Ak!aV{H}P{vcH-&P9DESifWl>_V*
zm@rjMNV0c;eZ;F2l6?bIEjZ^Y)Y&gUbxA4;c?}V!)(%i7K;r;S0`vY?-2msodhyUo
zT=S_Hn6O+wKm(Eeg_JZ5aDaHDLc&LZTzs1ln(=t1S85vI-~fjtI5a^s66!~26yeYS
z%>!Hz;KBfh1vorFn*ePCJk`kJyEaQ}TSo*Y__qkqQshV>B}WBlCEi+ibRpkvnPt^>
z0nQ0bkUu6culOCS)b_#-0Xnjh;ys0(gq;H%AE1jk`-nyG*EKMEPEH8WP4e!6S!(02
zhscfxtX`6z7@)UEp8%%@I4!_Q0s6_p$&&XKo+7-fy>+_CnL?J*Po%%_i~v(QVsGUg
zAjw(6fx@$eo4NQFU~qtQS+3^KquECRh6ETIU|4`8KpJ3pfDr+l0B(Shff*@uPCj9`
z#koa|5>Ez$0HKH<fKRwsrARuAZ*gFv95wl4Ql|dR)wboeR<_S5_T3uu*;P8^m;mR?
zGs(vW7+3J|f%&d4g%biy3~*hD>qA@=;Nk#HLmV99k^q+mxFNue0WJ%0d4QP#t_m<I
zz+|>bfT;nl2+XHB;^VBYd}hH>pc_n%2u6}=fq89hdVm=sR|+ZlGPJG^Fe|`Z78>CG
z8kJ_VH~W}d#W{hAy4M6|zQo_P0jlZN`!iVUjw)SGpX_FKLrvqC9|FvyPqOp?^8?(>
z#-aTHw**+gwykZp*YfS5TLau4n7i!T<Q@wPZ{b@-cWC6Ys&}$7Bg`d$<KiA#>uqtj
z|Gfe3W8IXOrj`bHKzxyq1|Jl8NceDo#Q~Ox^U=>EA`B^1W8O#AkB<o-5AXz?fs-Gh
zv0Te~Ccv|djRCf*N*C6#o(u4NfMv?^1|9zV(hKV4<;7TD!R`*QN{25BUlG0(V0EGM
zvIt*T;Ca0oV2uu66Rs7$E@T}T#@-CDPKR#=cwc0_@NMBc!gq!52{#C7d1HW0;=GCA
z;RoWCcnJ{M9N?oub4!4a3(h;cPXjz!VSOFo8+M9(a+~n;!au(d*)IGtz*i#cG`JWo
zzYWlzFW!duF2MI{@E;f(1N<TWV}PFm><F+^hwO-50e%kfOMnxbn||Ss<ktYdN#TRG
z)~^Tdk^dRszarOPB7X<?C&0hroMlm&+1YAkJ634O%D=5jp$Uu#QCVcK5OqVdRe-|1
zL+lfxN{D?!R1HxhM9mP@LhKi!dWZ@hY8&%T%RKAnWc!iO>UFTS@3vAcnW`-;-{aR2
zr_Gs_t$Lw?e~1Pm`-eCnL?iKrLONmN5KTfH7~-H1>}VGB|10IUs-<Qj4hhje#2FzD
z4bePAn-Fb792Vm65UoQT9pZ=(9EJ>5t#rOELbMD`1mo|>5Jwf9k8U}WWK`jv1SWA<
zalN8lh+{(Z32_ohP3u^lFJBpMADU>{Aw);kwy@Acq?537h~q`N2)hbt_Jk1K#Jd*~
z2G5@2^u1mpC(?M4%D~74f8L!j@5yX`e*Ymfvz=2yoGNmfkdo6y`i0>4V|jRHhyfuk
z2ytO(F7#)GI6K5SAqJ`!7T2)eWd~Q328EbX**Y%-FK~l}=L%OV2n-1^RE;()#PAR!
z#6uxHXQYT7!Vz(WUXkjH1j5zLOOZ$%A`wYLj1kF%w3dsE5{?eREEJw!q>c?SuHfTC
zY^pGxJR!uy5EnDxhq!`M!O*<jK<^q(uhxxE%6MMWx-`UPa;nQiObRiX$|0@|(Y{}4
zN(i5uMWsA7#Iz98L(B*<Tl!ZDc~isqFjJi5Dv_&&vqD^_#pF3UjCl!=L8|dLH#A?E
zq4DwUtQ$f+5Moh?8$;ZrE|?eMHj(+oxVSmQE#eD=w+h+syjCtObZ!^9BgCEM)Ixr@
z$UPzMEhP7axWC~1$jpPGxk7RDZ4Av9fgTF+aEQerme6fNEDP~Mh^5khiYLV_Wa5tr
zA1~}YA@XEsCeJj*-_s$UDN>)Mr-?sbNH~L99%4m^wUTg6X{E@E!c{7$Z09BRxP&hY
zUkUMQh&3wcHH`(Tl?yH7>ml9<@urm5g?LxwEg?16i@Y7;okGG~?}={^vSL)*#KFj$
z+z=mx_%Os~2EYh=MffPh7RKig--q}(#3v!X2(evVyfwt9j3)|@3~P5av9`(J=b>5a
zrcE{-yZ*}%UxoN4#J5WQTF84_#xbT+?HxV4=L;!6g!nPUt`NV5_=$rz#Lf^u(?1V1
z^M77$xMk%RhB9rsBj=Bg{(n<tei!nPHvb6mrw;!LQHo4-{X4`zlKd;&9pXO`CY7sU
zMP_fU&#kl4hp_w@ojQ9**f&De2>VD*Nfi;+xmtw%BGigdJ3{pc6%lGgsHs%0h?aNO
z{obmyR+~w<pQ=uTx)JKJIO#CV(i7Nvw8;r!g9!UaW*wL{X($EyJR7rdgeH->F#Q$d
zzz7FLcre045t>FgI6`Iqr=$qYA{-K#tJpQ1|3_#Zp{ugc@?kP{r0{Uz5yBS2meHPP
z6VyB^LaPX^BOD!}O@xkAh|o4dy9mcbI5slFfj{oDU|c1(kI*49o0Ql=>=(KgNv8;%
zBOD*0i|kWQP0E>($Xj*d2@$$Q=pLa*gfS7$kI*whuL$Qw7!u*c2)!em6Jbz<J`qle
z&_BZJF4oC9Beny1-w3BfI5je>i<I<>a9WXix`cf9jdJ1{lAkFYpro^e1BIXQIlhv(
z;_*x0O0+gua*}f+b7Qi9RcmO3VG+UzQH0@2^@SsZBbD72cZ4k0jo^v1sx%ddw>-tz
zkHvE#?I$9sFpE&G_9z{W7M9O<Y=m(UCPkPWVSI!OlyrH73q@%5GIoUcMBzokiz8g3
zrn^*!zo<>hRVw36d<i1Lln7Txm=$5F)UFiL=ClaY#b>Bu%)-jdl;kR5*$6dfN0=kY
za&82QK&0?mwai@MbrG%?xj{HD!i^#~32BzMhx5g67M9DR|1V%i^DZF5Z6XVWw+ku1
zL*&i~cNLPmMeY&a8{xh}e!s{A5f+KiSDF3c2#YyjW7LYVB*G&RUXSobgryu55nhS#
zYJ|rkJRV_Lgcs!M9Aax)SWn2vlM$YZP>sPq!ZQ(`jqn`3Ixq3}1os4T$Z!EcpTpwe
zn-$h_=Hm8vSSuJY`1xyIog=JbQ;5GP@)G;2ki0DN$P&}+Ya+ZBVJ(MzOEWiPHD<#a
zJgCI&YHvnZ7vbFq@39^D{5Qh-2ye48+{?lJpX`?g7GG!JZPDHO53L&_Y>e<*gx?t@
zYM8B1n<6u@q}lf)9Kl<F2p>k+EdEi1&)G_KEXub;_?WSaFEU5is#MB9<uHk`tvD>-
z_m%a(h_F4vml3{-@O6Y=BJ7IrO@wbF{21Y<2;a%t_Yr>hKiSL6*R(*gBf`!IKTEAF
zVKqqj`;}cO!V-B%IVZP&FapPB^22laGs0gH{${ADT>2*h=Op{Y_&36Tic7mA>>Zn{
z1LgcqSxKCSl|&Guav|AEr0RL*3v$FNG4_r5?dTFS8i`V?3HOUpy-=<YsZ%m-p7J%=
z7<FR28{@qgbz{_v;l}V{)Q{01h7*ImU|x}qF(k&&7!6|_5Tj9y#xXj_I6g)b2LBj`
z#5goIPexcYe+Q|Qrow|`(}~Su@Iq5gZ62d_Y`$M{Sd7D^b3}}mF^-JULWi7Gf5@;O
zqm}Zq4xA-2FCB(1cXW(4tV79a8=L3U9b&YLaf~t^8>4+}rr%U%p*QFy^o~p_O7A2!
zrm`=(#ONC1Y}Mq17~Nu=rPS^*dc-)1=N_Y{D$t947lYp!WB1*3tZDGxv03KrBmEis
zRHB4ycYR}=9;083Q`kP*HF0W;(_-*k%5T(Cjazp6E7uvqGlc_$+(1qR{szW-o=Tsi
zx=}JH#^4y|(mr?os7e$zsAlw8jlO)O5@R?WV6Rfb*9T*ajLlL24{bV(2$3JIp}x=T
zF|Lg<H#Td13o2U;+gM?YNM{r?V~jLL7Gp+?D`WGVE01x0jIrXQgrkLHgq$gji!naN
zWF1off*2EHTomI%NhS!(^M{LLToU857?;Pmw9uyoo)?inX6J7bolWzNE2J|;IF+p-
zGCjusG|Or;V_dDItAv~*(a0=ulG!ol6#SYP-)l~Fo&4mH7)xVZALE7?H>wwIjd7dE
zO~QFG=Et~M{FWFCL>?Tor>Dw~aTn4zV%!n$c`29+whVW7#<+_=?)-`IK#WB(?ul_P
z-Gg6#i*bK!K90xKulUfUuGy;kASE#t$L6y${Bidk?<*gUL4~qp3ElN^^Ys|I_oFf1
zjLjk#&+aju+T$^vi1DQOQ!!SEJRRd1k!NEp6QTZd@}lR3Y`qs^ELRenwA`30W2}<o
zMUJl+uf}*O#_AX^OIX$^xBr?Luf=#>oka;dk-xRF%)>W|A}CxJ<E<F$+3&k|zbzzb
z(5ys!hoMGfLyV0vK8vv}#-<qW$M}F_CkEfgpSZ5X8%Dmo`N?tCW{xk;pki|!`6$K~
z5%P~?d{XeOv3Wj4;YL;I^B7;S_4qCcdkW?y(CrLd{Qr;4!Y+vMb&PLfd>i9Cx(7Q#
zUnS)#A3sJ~=08X{hQVj|?lYQH`YFba7(3bH@`qi*UxXZDypQ-*{I?jti~J#^oT-0`
zbNz(;?->8+@L%D7F?PqW5)=RVt141TP)P*B%EG;bdkd+#k4TjS`xX-3m{d!!UxMlh
zDkN+ytdXEzp;J?&maw+4PJ+53T{`UX@cKGzAlyGeLy-f7EVq#e-(6}_NDfR)WIjlT
zO@#;ZDL|pdEX@-fro*389G>8a1RtdMFhz?5Efe#Y<L(qkCO9fV{S*zzckgbM;G_g6
zCup7E=)_3cB<Lza-d3btf@2EFu?gCXcMx_g<j0A05_T3IFYF@Z`r8R2wAn2|ckv#D
zq-TO&1wS!C?}GOcVcxz8PD$`(g0B*sn&7kqrzhx_n7!-lYu<Kou=nQ)!s6E(_;l=y
z1ZO4~kl?HYvl7ha8SS<PCK$tvoct#^Co!)E4@%6MQkGzFf^!p`mtaVOAVHX5Xo6u0
zMkcTm@XNi!+1D+t5z5Z>Pfi2)l%HP|q=!2aa;?Kn;3eSWcwa~fd6XcQLMl5fJxR<8
zDpRX*IYl4fqA*V|D#2)WpT1v833bj-z(-?a6O2nRKEVYEu1GK?!G$t-NrFogOh_;>
z!HoJQK3qfzKYr5Mx;VjNtx;UYLZv)O$Wyq3ugte9QD<_3=^DRN6HKFp1XoIj<<iu2
z@v%KiGZS2u;OfM@0M1-Y;>U`K{Jm+F<|Mc#!E*_oPjGF5xe4w`aIf-Sm*AEJ3ldzP
z;D!V@>eS{X<_nO_dsBkz_|fB**8BuFvnH+0%Kri-k=!Z^w<owwgp!3t%iNLR&IET!
zez%YYhgK<V<=V1UVsGA;;0ej^Pw+s3MF}2Euq44F2_BOCVK$BkD=?ypDVIN<)Kd0K
zg2xg(uGDfzAhycq`%kS>hf?WDB|Vkk=>*S+KP#jKHh8(smnC>1!6wN$L0z8UwFGMu
ztVpmj!Kwr=D(Te(FR_0Uyqw?_NmwGil&09Q#4=x_q;efzPs~n|w>VDu@gH#>zL{X1
zIDL|b>l3`4;GG2TCfJZ*V`75vdvZD2BxhcdNqtHzj!j3)?=wmy_%Old1Ro{%G{I*H
zw$LW?CfJ(bM}7%Pe#Ig4zt&*hZK~TB3AQKrJTYJ8{Y;(6Ehto@x6Eu^`Z~ck34Z2q
zOU%yLZ|N=C@%|mXj{AQS{6PB(SqxvixD$WU;SLTW5k@=;ck!&-Tk~6(kv^C!CkcK_
z@Oy$k=nUKdlN$Up!CwjfPVi5Hy;E}||F2RjrPzzNMdG^?e%Zt*PalSoNcr1_NKsj8
zd!=9!_4y;&Cq<PM`=+RxqI!yo6xEcAsryNj+4<vP4P~#DqP9rQbdQ`#R4Ci5tGxAu
z{46J{v44t&Dbf^KiUU$KN--kE$P|rJG)Zw%ijz}}?qA|ZBM(e5mH+=SMbi`qr)ZX<
zZHjiOiC~8?!iyX#Y%V;Emw*&2nwUXxgd}C&l3`zmM+uJ>wi323^xNo=8OvFYNpW0?
zP7)rQqJ3%}{ddq|$3pYjCZ*2eT~nNp;`l<|rLfs8MfViFCGR1mkrPFFrsyTYm-Sd^
zxm>39NkOyx^-b|z4eRU_=dhu;{-5Gh=~MHx6sL>#OVMBC4B=VAGgAx@p(Z~CLma3>
zehp@pKBO~<+38V2l5<m>SMVVzh8BF7$Z#Q_&)O-R6mAMHHBS&$RxR=FsoLR{e0JRI
zQkWVi4^p!=j@P?7dY%&LY8wj^A^#Ufo?=vrOH*9NUQRJ4#rY}5rsky&R))_hc)veR
z*7$Ot*U}oFVkK_@*d6=|sBnUOX<~|tba*klMuX@Q$@%6EeeCiSlTzH0Vu4z3GJUv#
z`Dor1tUR46HFMpYgwur6Q_M(lB^@}$4Jz@f6jv+hx)ifS<_KpC`Gr7QxF*H5tZFmE
z=Soh}lv57w0!__V1W9g`ysX2+c`4>ga`XSObE_Kpw$w}}*>s#1@?;mP5pGX$hsd2m
zHu7DmnZuLZqg?k2?@MuiiU(3GO7Ws3Y|IDgOX3d+A5O7YWJ!w0MII4Sb7_i43;vi0
z-_m_T<jF$*REnp?pAm8)Yqc)8&!u=?l4Zgdgv*7ryn>Bc@Kqwbv3*HoH9Jn^72*06
zuclZd{+jSD;acJA!Z(C(rdTIJ`}9mA@6CyCOZblP-4yQ?IvYebrr1<S-WR!2kBv67
zHMA)7k@|g$kS_PJ$S1<BDL!R%O|dP-=aPJx;)@j9)rs7x!u14x=7qh?o2jo-e4XMO
zCGFrDwXnVw|1QP%DSk-tV`{!s!y<l?DRTBE4@q`P!Yzfpx&KG*y(`79BEO~BJKHmp
z|6P(lgny>^OXTkq|A_p{z+PznmtwbsRv{^6s3gw0Bi)QYwjpt^Y|kRYK9W}v?klXC
zp<0Ih3jMkw)rA$p8p4_xYKhQV?F@AaUVgKwUWWP^8f4f%L&FTslzM=$Nuk+Dq;a<A
zU9AH%93)B83<ryF6w^4deD8BehC?$n&&(Bpl5*-18CqnxF2nU1T4p#h!vz^G%*;PD
zIZD_)L#qrQSGQVcIGU0S6Zm3&hS8k-XV}68K*r1p>ljIn6*8%Ph7JYq$jW5sl%aEm
z<0U*n*d;^P@}d4mA^+7iGj=O-@vw(@&kVg(lM{vGGxW|doWVcC;;z<75}ur)Z-!Gc
zoSGq&<g^T@XBeE}+zkCP^v`fshJhJs@)k0~nHdJ~u)>tc-{I3rl&`LCot@#F41+TB
z@3&aQnrhan-K9sTmG0+#&<g9k3_~)E$S_h0Lo*CxO)^aCY_*tLI-tVpUtx`#ZN1Bv
z@iRCXT&l4?yo%jm>{G$dK%0TG)8-_;@FI*d#2JzdX@>Jv|13kEVH8^+!xf#a{+4yf
zqos4_mRPYlovkq$p6YDT=0n^|%>6$Z#>w(Ed}Wn4XpD!|tuMP;6EaL@c6HN4HReSb
zE>`PZlHr@`7W?i}waH~ly<A04%CMu0b#{I8Z)>Jxpq*<nOqIg44AV0#onB(b8Oped
zyFfF{lufqSRT-`ppH)a^i_FPTwX1pbOq<tcm@DD0)va^*Pi?sKGeg^|)|L!6X1FQC
zybSX*JeJ|{3^!-ECByw09>}mjCvuPSvQ=-*aGPpH3kyYV7v7QKPLaEWcMEwjrP{q2
z?$bH4T-Ll}Rcn!KK9u2Mkq4F9y{g6DS<Iq&pOs-rhAA^jkLY}P;!891oLA~m)$}zL
zo{;_J8CHlq$*vJ$aZigpBYZZ)b0W_RmkFu!LWZ*EuPh|%GOQARQTUQ@b%vKkUdgal
z<W=DsA?>^-LQ}67k~cEEDPBHz>b#}H^%>sI@J?A@_<n}>M5wbN!$$E<g``V2>w|)S
zm|=6lKgv+H{Bed)BphKGpV^w>Q$+~|4IX};;foAoa-5%IJKc$qAxFpD1dy*7U32jN
za4@8NO^3|zZHDhMe9wqiVNv))h9715&kR3_{4R&wA-+>cJ3ov3BHShXRrs5*T**Jw
zeMiaP{>t#Tl9=}&k$*G%S4ehqnLyQJYAN4yj+Jv066vJ}<|gRvm1FN5`$(-yjv6^?
z=4Pbqo1?0P)r9*McB<#7C^-A5maNs6q_(h*BrLJ64(kaIt!g#MvA=l39F0W|5K^;I
zj@!86cY<;3CaeJesZ%TKpd3we9Gs(Bjutsu<|h6elH)Kbu;z!VwVUTSSDkfuj$<tA
z2&Go;W=80dIgV0g+UICj)$|}Ox5`b(ZLOk@W@-+`uC`QQb`|mB+ZJnktTI}>apR6q
zeq5!xbzF{4InK;6AV=q-=G}7~FHYlKl%*@%S)`kgayB*3tB2Hj=IEsgoT${^Ir`){
zDaXk<PS4R#J<>PFsk!+_!#u}Ra%|{Y;s9sOPs_oIvGR<x-qccm8KnFSksZ~ovvLf~
z5#=TXovp_4#m~txD92zn6dP0Cc%Dihs`DKpzH4rYRUO8<<rtA;dWGfWaC5M%kuqhg
zl$F&jPlPT_4`eDsD0x6rvJ<EiWAQ{tv#CfX%!Q+bqt#_p7@K2Uj(Iue=NO;kf*hCT
zxQsPX&r;z+)nS5gVvdV)Tr3_}wHV?q;c0$qE#~~6y(!CA3Mc27QZ9(M067>5XH{5J
zC85n}JWcfln|DSI;;%Q9X6Cpm$JH`Uof~wrvvSPNF-QCw;q^JL6=BcL&2e49c>(RD
zYw?Y0I$F3%eLC8*Zq9K_j+b-1l4C((|3y{iR{DRAg{n-w{jJ+`+>ztX9Czh-UVX$1
z@!dHd&apVhJvr_r;rfpXU8I`dpPLK)19JXv`7vbP1?0GKvh@%P<^F*RYl%u+n&Z(N
zkCdx4)kOXes#}lccsd8OJf7o;98cz`$9*Q#N>9n(c!KHFQsWA%SB3RVj%RZ`mt(&Q
zbJ3wUo@iNgfMu%53ptkOSfR0eT7|{Yx>9buN_Lh{GY<Arj@3o`52<Rsnqv(sljGwY
zuSx!n&UdY9_`1w8*Bd$BRQ=Zp-x97@bG@xoX6SgitM#tr)PIkoM%LIS8*^-u{QVps
z<oHlF->+__9Gi1|l!N1)1C0_^_>&x4Re>LKe467k8Tmq^W?PQW)k<tM7O}pwK{n2I
z>3pdozLN2;+4VWTm7VW$d@tcU)6MDg_k#}EfaE_Z?~WWhbNtL;Wtl4l<-bV2ODFiN
zEdQ3{_Z)wym#H@66YEc%_+QdoR?XtyNxl2GYTKqmp8>slH*MFZZM!zdwdvTj=LK=*
zHEr9p*XS`9jg7--eA6S`7D{e<x;^pqc$C+)?<luvk1T6Cz$A}rI=~<2kG;_M{vWdH
Bb1MJ<

diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/data/Makefile.am b/Src/Plugins/DSP/sc_serv3/GeoIP/data/Makefile.am
deleted file mode 100644
index 5b7b9096..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/data/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-pkgdata_DATA =
-
-dist_pkgdata_DATA = GeoIP.dat
-
-DEFAULT_DB_FILE = $(pkgdatadir)/GeoIP.dat
-
-install-data-hook:
-	@if test -f "$(DESTDIR)$(DEFAULT_DB_FILE)" ; then \
-	        echo "$@ will not overwrite existing $(DESTDIR)$(DEFAULT_DB_FILE)" ; \
-	else \
-	         	        echo "$(INSTALL_DATA) GeoIP.dat $(DESTDIR)$(DEFAULT_DB_FILE)"; \
-				$(INSTALL_DATA) "$(srcdir)/GeoIP.dat" "$(DESTDIR)$(DEFAULT_DB_FILE)"; \
-	fi
-
-uninstall-hook:
-	@if test -f "$(DESTDIR)$(DEFAULT_DB_FILE)" ; then \
-		rm "$(DESTDIR)$(DEFAULT_DB_FILE)"; \
-$(INSTALL_DATA) GeoIP.dat $(DESTDIR)$(DEFAULT_DB_FILE); \
-	fi
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/data/Makefile.in b/Src/Plugins/DSP/sc_serv3/GeoIP/data/Makefile.in
deleted file mode 100644
index 9d814220..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/data/Makefile.in
+++ /dev/null
@@ -1,437 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = data
-DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"
-DATA = $(dist_pkgdata_DATA) $(pkgdata_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GEOIP_VERSION_INFO = @GEOIP_VERSION_INFO@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-pkgdata_DATA = 
-dist_pkgdata_DATA = GeoIP.dat
-DEFAULT_DB_FILE = $(pkgdatadir)/GeoIP.dat
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu data/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_pkgdataDATA: $(dist_pkgdata_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
-	@list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \
-	done
-
-uninstall-dist_pkgdataDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files
-install-pkgdataDATA: $(pkgdata_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
-	@list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \
-	done
-
-uninstall-pkgdataDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_pkgdataDATA install-pkgdataDATA
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_pkgdataDATA uninstall-pkgdataDATA
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-.MAKE: install-am install-data-am install-strip uninstall-am
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-data-hook \
-	install-dist_pkgdataDATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-pkgdataDATA install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	uninstall uninstall-am uninstall-dist_pkgdataDATA \
-	uninstall-hook uninstall-pkgdataDATA
-
-
-install-data-hook:
-	@if test -f "$(DESTDIR)$(DEFAULT_DB_FILE)" ; then \
-	        echo "$@ will not overwrite existing $(DESTDIR)$(DEFAULT_DB_FILE)" ; \
-	else \
-	         	        echo "$(INSTALL_DATA) GeoIP.dat $(DESTDIR)$(DEFAULT_DB_FILE)"; \
-				$(INSTALL_DATA) "$(srcdir)/GeoIP.dat" "$(DESTDIR)$(DEFAULT_DB_FILE)"; \
-	fi
-
-uninstall-hook:
-	@if test -f "$(DESTDIR)$(DEFAULT_DB_FILE)" ; then \
-		rm "$(DESTDIR)$(DEFAULT_DB_FILE)"; \
-$(INSTALL_DATA) GeoIP.dat $(DESTDIR)$(DEFAULT_DB_FILE); \
-	fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/depcomp b/Src/Plugins/DSP/sc_serv3/GeoIP/depcomp
deleted file mode 100644
index df8eea7e..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/depcomp
+++ /dev/null
@@ -1,630 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
-   depmode=msvisualcpp
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
-    # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
-    echo >> "$depfile"
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
-    sed -ne '2,${
-	       s/^ *//
-	       s/ \\*$//
-	       s/$/:/
-	       p
-	     }' "$tmpdepfile" >> "$depfile"
-  else
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
-  "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
-    *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/geoip.ico b/Src/Plugins/DSP/sc_serv3/GeoIP/geoip.ico
deleted file mode 100644
index ac13353bc0b17ea80bcd4492381bc96315ec3f19..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3062
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

diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/get_ver.awk b/Src/Plugins/DSP/sc_serv3/GeoIP/get_ver.awk
deleted file mode 100644
index 5e7abc08..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/get_ver.awk
+++ /dev/null
@@ -1,14 +0,0 @@
-# fetch version number from input file and write them to STDOUT
-BEGIN {
-  while ((getline < ARGV[1]) > 0) {
-    if (match ($0, /^VERSION=/)) {
-      split($1, t, "=");
-      my_ver_str = t[2];
-      split(my_ver_str, v, ".");
-      gsub("[^0-9].*$", "", v[3]);
-      my_ver = v[1] "," v[2] "," v[3];
-    }
-  }
-  print "GEOIP_VERSION = " my_ver "";
-  print "GEOIP_VERSION_STR = " my_ver_str "";
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/install-sh b/Src/Plugins/DSP/sc_serv3/GeoIP/install-sh
deleted file mode 100644
index 6781b987..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/install-sh
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2009-04-28.21; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" ""	$nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-	shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
-
-    -o) chowncmd="$chownprog $2"
-	shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t) dst_arg=$2
-	shift;;
-
-    -T) no_target_directory=true;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --)	shift
-	break;;
-
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names starting with `-'.
-  case $src in
-    -*) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-
-    dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
-
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
-
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-	/*) prefix='/';;
-	-*) prefix='./';;
-	*)  prefix='';;
-      esac
-
-      eval "$initialize_posix_glob"
-
-      oIFS=$IFS
-      IFS=/
-      $posix_glob set -f
-      set fnord $dstdir
-      shift
-      $posix_glob set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-	test -z "$d" && continue
-
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
-
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.c b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.c
deleted file mode 100644
index d4821c46..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.c
+++ /dev/null
@@ -1,1965 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* GeoIP.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "GeoIP.h"
-
-static geoipv6_t IPV6_NULL;
-
-#if !defined(_WIN32) 
-#include <unistd.h>
-#include <netdb.h>
-#include <sys/mman.h>
-#endif /* !defined(_WIN32) */ 
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <sys/types.h> /* for fstat */
-#include <sys/stat.h>	/* for fstat */
-
-#ifdef HAVE_GETTIMEOFDAY
-#include <sys/time.h> /* for gettimeofday */
-#endif
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>     /* For uint32_t */
-#endif
-
-#ifndef        INADDR_NONE
-#define        INADDR_NONE     -1
-#endif
-
-#define COUNTRY_BEGIN 16776960
-#define LARGE_COUNTRY_BEGIN 16515072
-#define STATE_BEGIN_REV0 16700000
-#define STATE_BEGIN_REV1 16000000
-#define STRUCTURE_INFO_MAX_SIZE 20
-#define DATABASE_INFO_MAX_SIZE 100
-#define MAX_ORG_RECORD_LENGTH 300
-#define US_OFFSET 1
-#define CANADA_OFFSET 677
-#define WORLD_OFFSET 1353
-#define FIPS_RANGE 360
-
-#define CHECK_ERR(err, msg) { \
-		if (err != Z_OK) { \
-				/*fprintf(stderr, "%s error: %d\n", msg, err);*/ \
-				exit(1); \
-		} \
-}
-
-#ifdef _WIN32
-int pread(unsigned int fd, char *buf, size_t count, int offset)
-{
-	if (_lseek(fd, offset, SEEK_SET) != offset) {
-		return -1;
-	}
-	return read(fd, buf, (unsigned int)count);
-}
-#endif
-
-const char GeoIP_country_code[254][3] = { "--","AP","EU","AD","AE","AF","AG","AI","AL","AM","CW",
-	"AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB",
-	"BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO",
-	"BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD",
-	"CF","CG","CH","CI","CK","CL","CM","CN","CO","CR",
-	"CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO",
-	"DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ",
-	"FK","FM","FO","FR","SX","GA","GB","GD","GE","GF",
-	"GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT",
-	"GU","GW","GY","HK","HM","HN","HR","HT","HU","ID",
-	"IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO",
-	"JP","KE","KG","KH","KI","KM","KN","KP","KR","KW",
-	"KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT",
-	"LU","LV","LY","MA","MC","MD","MG","MH","MK","ML",
-	"MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV",
-	"MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI",
-	"NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF",
-	"PG","PH","PK","PL","PM","PN","PR","PS","PT","PW",
-	"PY","QA","RE","RO","RU","RW","SA","SB","SC","SD",
-	"SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO",
-	"SR","ST","SV","SY","SZ","TC","TD","TF","TG","TH",
-	"TJ","TK","TM","TN","TO","TL","TR","TT","TV","TW",
-	"TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE",
-	"VG","VI","VN","VU","WF","WS","YE","YT","RS","ZA",
-	"ZM","ME","ZW","A1","A2","O1","AX","GG","IM","JE",
-  "BL","MF", "BQ"};
-
-static const unsigned num_GeoIP_countries = (unsigned)(sizeof(GeoIP_country_code)/sizeof(GeoIP_country_code[0]));
-
-const char GeoIP_country_code3[254][4] = { "--","AP","EU","AND","ARE","AFG","ATG","AIA","ALB","ARM","CUW",
-	"AGO","ATA","ARG","ASM","AUT","AUS","ABW","AZE","BIH","BRB",
-	"BGD","BEL","BFA","BGR","BHR","BDI","BEN","BMU","BRN","BOL",
-	"BRA","BHS","BTN","BVT","BWA","BLR","BLZ","CAN","CCK","COD",
-	"CAF","COG","CHE","CIV","COK","CHL","CMR","CHN","COL","CRI",
-	"CUB","CPV","CXR","CYP","CZE","DEU","DJI","DNK","DMA","DOM",
-	"DZA","ECU","EST","EGY","ESH","ERI","ESP","ETH","FIN","FJI",
-	"FLK","FSM","FRO","FRA","SXM","GAB","GBR","GRD","GEO","GUF",
-	"GHA","GIB","GRL","GMB","GIN","GLP","GNQ","GRC","SGS","GTM",
-	"GUM","GNB","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN",
-	"IRL","ISR","IND","IOT","IRQ","IRN","ISL","ITA","JAM","JOR",
-	"JPN","KEN","KGZ","KHM","KIR","COM","KNA","PRK","KOR","KWT",
-	"CYM","KAZ","LAO","LBN","LCA","LIE","LKA","LBR","LSO","LTU",
-	"LUX","LVA","LBY","MAR","MCO","MDA","MDG","MHL","MKD","MLI",
-	"MMR","MNG","MAC","MNP","MTQ","MRT","MSR","MLT","MUS","MDV",
-	"MWI","MEX","MYS","MOZ","NAM","NCL","NER","NFK","NGA","NIC",
-	"NLD","NOR","NPL","NRU","NIU","NZL","OMN","PAN","PER","PYF",
-	"PNG","PHL","PAK","POL","SPM","PCN","PRI","PSE","PRT","PLW",
-	"PRY","QAT","REU","ROU","RUS","RWA","SAU","SLB","SYC","SDN",
-	"SWE","SGP","SHN","SVN","SJM","SVK","SLE","SMR","SEN","SOM",
-	"SUR","STP","SLV","SYR","SWZ","TCA","TCD","ATF","TGO","THA",
-	"TJK","TKL","TKM","TUN","TON","TLS","TUR","TTO","TUV","TWN",
-	"TZA","UKR","UGA","UMI","USA","URY","UZB","VAT","VCT","VEN",
-	"VGB","VIR","VNM","VUT","WLF","WSM","YEM","MYT","SRB","ZAF",
-	"ZMB","MNE","ZWE","A1","A2","O1","ALA","GGY","IMN","JEY",
-  "BLM","MAF", "BES"};
-
-const char * GeoIP_utf8_country_name[254] = {"N/A","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Cura" "\xc3\xa7" "ao",
-	"Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
-	"Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
-	"Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
-	"Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
-	"Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
-	"Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
-	"Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","Sint Maarten (Dutch part)","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
-	"Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
-	"Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
-	"Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
-	"Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
-	"Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
-	"Luxembourg","Latvia","Libyan Arab Jamahiriya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
-	"Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
-	"Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
-	"Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
-	"Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
-	"Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
-	"Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
-	"Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
-	"Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
-	"Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
-	"Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
-	"Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
-  "Saint Barthelemy","Saint Martin", "Bonaire, Saint Eustatius and Saba"};
-
-const char * GeoIP_country_name[254] = {"N/A","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Cura" "\xe7" "ao",
-	"Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
-	"Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
-	"Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
-	"Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
-	"Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
-	"Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
-	"Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","Sint Maarten (Dutch part)","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
-	"Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
-	"Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
-	"Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
-	"Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
-	"Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
-	"Luxembourg","Latvia","Libyan Arab Jamahiriya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
-	"Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
-	"Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
-	"Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
-	"Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
-	"Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
-	"Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
-	"Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
-	"Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
-	"Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
-	"Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
-	"Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
-  "Saint Barthelemy","Saint Martin", "Bonaire, Saint Eustatius and Saba"};
-
-/* Possible continent codes are AF, AS, EU, NA, OC, SA for Africa, Asia, Europe, North America, Oceania
-and South America. */
-
-const char GeoIP_country_continent[254][3] = {
-  "--", "AS","EU","EU","AS","AS","NA","NA","EU","AS","NA",
-        "AF","AN","SA","OC","EU","OC","NA","AS","EU","NA",
-        "AS","EU","AF","EU","AS","AF","AF","NA","AS","SA",
-        "SA","NA","AS","AN","AF","EU","NA","NA","AS","AF",
-        "AF","AF","EU","AF","OC","SA","AF","AS","SA","NA",
-        "NA","AF","AS","AS","EU","EU","AF","EU","NA","NA",
-        "AF","SA","EU","AF","AF","AF","EU","AF","EU","OC",
-        "SA","OC","EU","EU","NA","AF","EU","NA","AS","SA",
-        "AF","EU","NA","AF","AF","NA","AF","EU","AN","NA",
-        "OC","AF","SA","AS","AN","NA","EU","NA","EU","AS",
-        "EU","AS","AS","AS","AS","AS","EU","EU","NA","AS",
-        "AS","AF","AS","AS","OC","AF","NA","AS","AS","AS",
-        "NA","AS","AS","AS","NA","EU","AS","AF","AF","EU",
-        "EU","EU","AF","AF","EU","EU","AF","OC","EU","AF",
-        "AS","AS","AS","OC","NA","AF","NA","EU","AF","AS",
-        "AF","NA","AS","AF","AF","OC","AF","OC","AF","NA",
-        "EU","EU","AS","OC","OC","OC","AS","NA","SA","OC",
-        "OC","AS","AS","EU","NA","OC","NA","AS","EU","OC",
-        "SA","AS","AF","EU","EU","AF","AS","OC","AF","AF",
-        "EU","AS","AF","EU","EU","EU","AF","EU","AF","AF",
-        "SA","AF","NA","AS","AF","NA","AF","AN","AF","AS",
-        "AS","OC","AS","AF","OC","AS","EU","NA","OC","AS",
-        "AF","EU","AF","OC","NA","SA","AS","EU","NA","SA",
-        "NA","NA","AS","OC","OC","OC","AS","AF","EU","AF",
-        "AF","EU","AF","--","--","--","EU","EU","EU","EU",
-        "NA","NA","NA"
-};
-
-geoipv6_t _GeoIP_lookupaddress_v6 (const char *host);
-   
-#if defined(_WIN32)
-/* http://www.mail-archive.com/users@ipv6.org/msg02107.html */ 
-static const char * _GeoIP_inet_ntop(int af, const void *src, char *dst, socklen_t cnt) 
-{ 
-        if (af == AF_INET) 
-        { 
-                struct sockaddr_in in; 
-                memset(&in, 0, sizeof(in)); 
-                in.sin_family = AF_INET; 
-                memcpy(&in.sin_addr, src, sizeof(struct in_addr)); 
-                getnameinfo((struct sockaddr *)&in, sizeof(struct 
-sockaddr_in), dst, cnt, NULL, 0, NI_NUMERICHOST); 
-                return dst; 
-        } 
-        else if (af == AF_INET6) 
-        { 
-                struct sockaddr_in6 in; 
-                memset(&in, 0, sizeof(in)); 
-                in.sin6_family = AF_INET6; 
-                memcpy(&in.sin6_addr, src, sizeof(struct in_addr6)); 
-                getnameinfo((struct sockaddr *)&in, sizeof(struct 
-sockaddr_in6), dst, cnt, NULL, 0, NI_NUMERICHOST); 
-                return dst; 
-        } 
-        return NULL; 
-} 
- 
-static int _GeoIP_inet_pton(int af, const char *src, void *dst) 
-{ 
-        struct addrinfo hints, *res, *ressave; 
- 
-        memset(&hints, 0, sizeof(struct addrinfo)); 
-        hints.ai_family = af; 
- 
-        if (getaddrinfo(src, NULL, &hints, &res) != 0) 
-        { 
-                //fprintf(stderr, "Couldn't resolve host %s\n", src); 
-                return -1; 
-        } 
- 
-        ressave = res; 
- 
-        while (res) 
-        { 
-                memcpy(dst, res->ai_addr, res->ai_addrlen); 
-                res = res->ai_next; 
-        } 
- 
-        freeaddrinfo(ressave); 
-        return 0; 
-}
-#else
-static int _GeoIP_inet_pton(int af, const char *src, void *dst) {
-  return inet_pton(af, src, dst);
-}
-static const char * _GeoIP_inet_ntop(int af, const void *src, char *dst, socklen_t cnt) {
-  return inet_ntop(af, src, dst, cnt);
-}
-
-#endif /* defined(_WIN32) */ 
- 
-
-int __GEOIP_V6_IS_NULL(geoipv6_t v6) {
-        int i; 
-        for (i=0;i<16;i++) {
-                if (v6.s6_addr[i])
-                        return 0;
-        }
-        return 1;
-}
-
-void __GEOIP_PREPARE_TEREDO(geoipv6_t* v6){
-   int i;
-   if ((v6->s6_addr[0]) != 0x20) return;
-   if ((v6->s6_addr[1]) != 0x01) return;
-   if ((v6->s6_addr[2]) != 0x00) return;
-   if ((v6->s6_addr[3]) != 0x00) return;
-
-   for ( i = 0; i< 12; i++)
-     v6->s6_addr[i] = 0;
-   for ( ; i < 16; i++)
-     v6->s6_addr[i]^=0xff;
-}
-
-const char * GeoIPDBDescription[NUM_DB_TYPES] = {
-  NULL, 
-  "GeoIP Country Edition", 
-  "GeoIP City Edition, Rev 1", 
-  "GeoIP Region Edition, Rev 1", 
-  "GeoIP ISP Edition", 
-  "GeoIP Organization Edition", 
-  "GeoIP City Edition, Rev 0", 
-  "GeoIP Region Edition, Rev 0",
-  "GeoIP Proxy Edition",
-  "GeoIP ASNum Edition",
-  "GeoIP Netspeed Edition",
-  "GeoIP Domain Name Edition", 
-  "GeoIP Country V6 Edition", 
-  "GeoIP LocationID ASCII Edition", 
-  "GeoIP Accuracy Radius Edition",
-  "GeoIP City with Confidence Edition",
-  "GeoIP City with Confidence and Accuracy Edition",
-  "GeoIP Large Country Edition", 
-  "GeoIP Large Country V6 Edition",
-  NULL,
-  "GeoIP CCM Edition",
-  "GeoIP ASNum V6 Edition",
-  "GeoIP ISP V6 Edition", 
-  "GeoIP Organization V6 Edition", 
-  "GeoIP Domain Name V6 Edition", 
-  "GeoIP LocationID ASCII V6 Edition", 
-  "GeoIP Registrar Edition", 
-  "GeoIP Registrar V6 Edition", 
-  "GeoIP UserType Edition", 
-  "GeoIP UserType V6 Edition",
-  "GeoIP City Edition V6, Rev 1",
-  "GeoIP City Edition V6, Rev 0",
-  "GeoIP Netspeed Edition, Rev 1",
-  "GeoIP Netspeed Edition V6, Rev1"
-};
-
-char * custom_directory = NULL;
-
-void GeoIP_setup_custom_directory (char * dir) {
-	custom_directory = dir;
-}
-
-char *_GeoIP_full_path_to(const char *file_name) {
-	size_t len;
-	char *path = malloc(sizeof(char) * 1024);
-
-	/*if (custom_directory == NULL){
-#if !defined(_WIN32)
-		memset(path, 0, sizeof(char) * 1024);
-		snprintf(path, sizeof(char) * 1024 - 1, "%s/%s", GEOIPDATADIR, file_name);
-#else
-		char buf[MAX_PATH], *p, *q = NULL;
-		memset(buf, 0, sizeof(buf));
-		len = GetModuleFileNameA(GetModuleHandle(NULL), buf, sizeof(buf) - 1);
-		for (p = buf + len; p > buf; p--)
-			if (*p == '\\')
-				{
-					if (!q)
-						q = p;
-					else
-						*p = '/';
-				}
-		*q = 0;
-		memset(path, 0, sizeof(char) * 1024);
-		snprintf(path, sizeof(char) * 1024 - 1, "%s/%s", buf, file_name);
-#endif
-	} else*/ {
-		len = strlen(custom_directory);
-		if (custom_directory[len-1] != '/') {
-			snprintf(path, sizeof(char) * 1024 - 1, "%s/%s",custom_directory, file_name);
-		} else {
-			snprintf(path, sizeof(char) * 1024 - 1, "%s%s", custom_directory, file_name);
-		}
-	}
-	return path;
-}
-
-char ** GeoIPDBFileName = NULL;
-
-void _GeoIP_setup_dbfilename() {
-	if (NULL == GeoIPDBFileName) {
-		GeoIPDBFileName = malloc(sizeof(char *) * NUM_DB_TYPES);
-		memset(GeoIPDBFileName, 0, sizeof(char *) * NUM_DB_TYPES);
-
-		GeoIPDBFileName[GEOIP_COUNTRY_EDITION]		= _GeoIP_full_path_to("GeoIP.dat");
-		GeoIPDBFileName[GEOIP_REGION_EDITION_REV0]	= _GeoIP_full_path_to("GeoIPRegion.dat");
-		GeoIPDBFileName[GEOIP_REGION_EDITION_REV1]	= _GeoIP_full_path_to("GeoIPRegion.dat");
-		GeoIPDBFileName[GEOIP_CITY_EDITION_REV0]	= _GeoIP_full_path_to("GeoIPCity.dat");
-		GeoIPDBFileName[GEOIP_CITY_EDITION_REV1]	= _GeoIP_full_path_to("GeoIPCity.dat");
-		GeoIPDBFileName[GEOIP_ISP_EDITION]		= _GeoIP_full_path_to("GeoIPISP.dat");
-		GeoIPDBFileName[GEOIP_ORG_EDITION]		= _GeoIP_full_path_to("GeoIPOrg.dat");
-		GeoIPDBFileName[GEOIP_PROXY_EDITION]		= _GeoIP_full_path_to("GeoIPProxy.dat");
-		GeoIPDBFileName[GEOIP_ASNUM_EDITION]		= _GeoIP_full_path_to("GeoIPASNum.dat");
-		GeoIPDBFileName[GEOIP_NETSPEED_EDITION]		= _GeoIP_full_path_to("GeoIPNetSpeed.dat");
-		GeoIPDBFileName[GEOIP_DOMAIN_EDITION]		= _GeoIP_full_path_to("GeoIPDomain.dat");
-                GeoIPDBFileName[GEOIP_COUNTRY_EDITION_V6]       = _GeoIP_full_path_to("GeoIPv6.dat");
-                GeoIPDBFileName[GEOIP_LOCATIONA_EDITION]        = _GeoIP_full_path_to("GeoIPLocA.dat");
-                GeoIPDBFileName[GEOIP_ACCURACYRADIUS_EDITION]   = _GeoIP_full_path_to("GeoIPDistance.dat");
-                GeoIPDBFileName[GEOIP_CITYCONFIDENCE_EDITION]   = _GeoIP_full_path_to("GeoIPCityConfidence.dat");
-                GeoIPDBFileName[GEOIP_CITYCONFIDENCEDIST_EDITION]     = _GeoIP_full_path_to("GeoIPCityConfidenceDist.dat");
-                GeoIPDBFileName[GEOIP_LARGE_COUNTRY_EDITION]    = _GeoIP_full_path_to("GeoIP.dat");
-                GeoIPDBFileName[GEOIP_LARGE_COUNTRY_EDITION_V6] = _GeoIP_full_path_to("GeoIPv6.dat");
-		GeoIPDBFileName[GEOIP_ASNUM_EDITION_V6]		= _GeoIP_full_path_to("GeoIPASNumv6.dat");
-		GeoIPDBFileName[GEOIP_ISP_EDITION_V6]		= _GeoIP_full_path_to("GeoIPISPv6.dat");
-		GeoIPDBFileName[GEOIP_ORG_EDITION_V6]		= _GeoIP_full_path_to("GeoIPOrgv6.dat");
-		GeoIPDBFileName[GEOIP_DOMAIN_EDITION_V6]	= _GeoIP_full_path_to("GeoIPDomainv6.dat");
-                GeoIPDBFileName[GEOIP_LOCATIONA_EDITION_V6]     = _GeoIP_full_path_to("GeoIPLocAv6.dat");
-                GeoIPDBFileName[GEOIP_REGISTRAR_EDITION]        = _GeoIP_full_path_to("GeoIPRegistrar.dat");
-                GeoIPDBFileName[GEOIP_REGISTRAR_EDITION_V6]     = _GeoIP_full_path_to("GeoIPRegistrarv6.dat");
-                GeoIPDBFileName[GEOIP_USERTYPE_EDITION]         = _GeoIP_full_path_to("GeoIPUserType.dat");
-                GeoIPDBFileName[GEOIP_USERTYPE_EDITION_V6]      = _GeoIP_full_path_to("GeoIPUserTypev6.dat");
-		GeoIPDBFileName[GEOIP_CITY_EDITION_REV0_V6]	= _GeoIP_full_path_to("GeoIPCityv6.dat");
-		GeoIPDBFileName[GEOIP_CITY_EDITION_REV1_V6]	= _GeoIP_full_path_to("GeoIPCityv6.dat");
-		GeoIPDBFileName[GEOIP_NETSPEED_EDITION_REV1]	= _GeoIP_full_path_to("GeoIPNetspeedCell.dat");
-		GeoIPDBFileName[GEOIP_NETSPEED_EDITION_REV1_V6]	= _GeoIP_full_path_to("GeoIPNetseedCellv6.dat");
-	  }
-}
-
-static
-int _file_exists(const char *file_name) {
-	struct stat file_stat;
-	return( (stat(file_name, &file_stat) == 0) ? 1:0);
-}
-
-char * _GeoIP_iso_8859_1__utf8(const char * iso) {
-	signed char c;
-	char k;
-	char * p;
-	char * t = (char *)iso;
-	int len = 0;
-	while ( ( c = *t++) ){
-		if ( c < 0 )
-			len++; 
-	}
-	len += (int)(t - iso);
-	t = p = malloc( len );
-	
-	if ( p ){
-		while ( ( c = *iso++ ) ) {
-			if (c < 0 ) {
-				k = 0xc2;
-				if (c >= -64 )
-					k++;
-				*t++ = k;
-				c &= ~0x40;
-			}
-			*t++ = c;
-		}
-		*t++ = 0x00;
-	}
-	return p;
-}
-
-int GeoIP_is_private_ipnum_v4( unsigned long ipnum ){
-return ((ipnum >= 167772160U && ipnum <= 184549375U)
-    || (ipnum >= 2851995648U && ipnum <= 2852061183U)
-    || (ipnum >= 2886729728U && ipnum <= 2887778303U)
-    || (ipnum >= 3232235520U && ipnum <= 3232301055U)
-    || (ipnum >= 2130706432U && ipnum <= 2147483647U))? 1 : 0;
-}
-  
-int GeoIP_is_private_v4( const char * addr ){
-  unsigned long ipnum = GeoIP_addr_to_num(addr);
-  return GeoIP_is_private_ipnum_v4(ipnum);
-}
-
-int GeoIP_db_avail(int type) {
-	const char * filePath;
-	if (type < 0 || type >= NUM_DB_TYPES) {
-		return 0;
-	}
-	_GeoIP_setup_dbfilename();
-	filePath = GeoIPDBFileName[type];
-	if (NULL == filePath) {
-		return 0;
-	}
-	return _file_exists(filePath);
-}
-
-static
-void _setup_segments(GeoIP * gi) {
-	int i, j, segment_record_length;
-	unsigned char delim[3];
-	unsigned char buf[LARGE_SEGMENT_RECORD_LENGTH];
-	ssize_t silence;
-        int fno = fileno(gi->GeoIPDatabase);
-
-	gi->databaseSegments = NULL;
-
-	/* default to GeoIP Country Edition */
-	gi->databaseType = GEOIP_COUNTRY_EDITION;
-	gi->record_length = STANDARD_RECORD_LENGTH;
-	lseek(fno, -3l, SEEK_END);
-	for (i = 0; i < STRUCTURE_INFO_MAX_SIZE; i++) {
-		silence = read(fno, delim, 3);
-		if (delim[0] == 255 && delim[1] == 255 && delim[2] == 255) {
-			silence = read(fno, &gi->databaseType, 1 );
-			if (gi->databaseType >= 106) {
-				/* backwards compatibility with databases from April 2003 and earlier */
-				gi->databaseType -= 105;
-			}
-
-			if (gi->databaseType == GEOIP_REGION_EDITION_REV0) {
-				/* Region Edition, pre June 2003 */
-				gi->databaseSegments = malloc(sizeof(int));
-				gi->databaseSegments[0] = STATE_BEGIN_REV0;
-			} else if (gi->databaseType == GEOIP_REGION_EDITION_REV1) {
-				/* Region Edition, post June 2003 */
-				gi->databaseSegments = malloc(sizeof(int));
-				gi->databaseSegments[0] = STATE_BEGIN_REV1;
-                       } else if (gi->databaseType == GEOIP_CITY_EDITION_REV0 ||
-				   gi->databaseType == GEOIP_CITY_EDITION_REV1 ||
-		                   gi->databaseType == GEOIP_ORG_EDITION ||
-		                   gi->databaseType == GEOIP_ORG_EDITION_V6 ||
-		                   gi->databaseType == GEOIP_DOMAIN_EDITION ||
-		                   gi->databaseType == GEOIP_DOMAIN_EDITION_V6 ||
-		 		   gi->databaseType == GEOIP_ISP_EDITION ||
-		 		   gi->databaseType == GEOIP_ISP_EDITION_V6 ||
-			  	   gi->databaseType == GEOIP_REGISTRAR_EDITION ||
-			  	   gi->databaseType == GEOIP_REGISTRAR_EDITION_V6 ||
-			  	   gi->databaseType == GEOIP_USERTYPE_EDITION ||
-			  	   gi->databaseType == GEOIP_USERTYPE_EDITION_V6 ||
-			  	   gi->databaseType == GEOIP_ASNUM_EDITION ||
-			  	   gi->databaseType == GEOIP_ASNUM_EDITION_V6 ||
-			  	   gi->databaseType == GEOIP_NETSPEED_EDITION_REV1 ||
-			  	   gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6 ||
-			  	   gi->databaseType == GEOIP_LOCATIONA_EDITION ||
-			  	   gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION ||
-			  	   gi->databaseType == GEOIP_CITYCONFIDENCE_EDITION ||
-                                   gi->databaseType == GEOIP_CITYCONFIDENCEDIST_EDITION ||
-                                   gi->databaseType == GEOIP_CITY_EDITION_REV0_V6 ||
-				   gi->databaseType == GEOIP_CITY_EDITION_REV1_V6
- 
-                                   ) {
-				/* City/Org Editions have two segments, read offset of second segment */
-				gi->databaseSegments = malloc(sizeof(int));
-				gi->databaseSegments[0] = 0;
-
-                                segment_record_length = gi->databaseType == GEOIP_CITYCONFIDENCEDIST_EDITION ? LARGE_SEGMENT_RECORD_LENGTH : SEGMENT_RECORD_LENGTH;
-
-				silence = read(fno, buf, segment_record_length );
-				for (j = 0; j < segment_record_length; j++) {
-					gi->databaseSegments[0] += (buf[j] << (j * 8));
-				}
-
-                                /* the record_length must be correct from here on */
-				if (gi->databaseType == GEOIP_ORG_EDITION    ||
-				    gi->databaseType == GEOIP_ORG_EDITION_V6 ||
-		                    gi->databaseType == GEOIP_DOMAIN_EDITION ||                                  
-		                    gi->databaseType == GEOIP_DOMAIN_EDITION_V6 ||                                  
-			 	    gi->databaseType == GEOIP_ISP_EDITION    ||
-			 	    gi->databaseType == GEOIP_ISP_EDITION_V6 ||
-                                    gi->databaseType == GEOIP_CITYCONFIDENCEDIST_EDITION 
-                                    )
-					gi->record_length = ORG_RECORD_LENGTH;
-
-                                if ( gi->databaseType == GEOIP_CITYCONFIDENCE_EDITION 
-                                   ||  gi->databaseType == GEOIP_CITYCONFIDENCEDIST_EDITION 
-                                  ) {
-                                  silence = pread(fileno(gi->GeoIPDatabase), buf, gi->record_length,  gi->databaseSegments[0] * 2 * gi->record_length);
-                                  gi->dyn_seg_size = 0;
- 	                          for (j = 0; j < gi->record_length; j++) {
-					gi->dyn_seg_size += (buf[j] << (j * 8));
-				  }
-                                }
-
-			}
-			break;
-		} else {
-			lseek(fno, -4l, SEEK_CUR);
-		}
-	}
-	if (gi->databaseType == GEOIP_COUNTRY_EDITION ||
-			gi->databaseType == GEOIP_PROXY_EDITION ||
-			gi->databaseType == GEOIP_NETSPEED_EDITION ||
-			gi->databaseType == GEOIP_COUNTRY_EDITION_V6 ) {
-		gi->databaseSegments = malloc(sizeof(int));
-		gi->databaseSegments[0] = COUNTRY_BEGIN;
-	}
-        else if ( gi->databaseType == GEOIP_LARGE_COUNTRY_EDITION || 
-          gi->databaseType == GEOIP_LARGE_COUNTRY_EDITION_V6 ) {
-		gi->databaseSegments = malloc(sizeof(int));
-		gi->databaseSegments[0] = LARGE_COUNTRY_BEGIN;
-	                        }
- 
-}
-
-static
-int _check_mtime(GeoIP *gi) {
-	struct stat buf;
-
-#if !defined(_WIN32) 
-        struct timeval t;
-#else /* !defined(_WIN32) */ 
-        FILETIME ft; 
-        ULONGLONG t; 
-#endif /* !defined(_WIN32) */
-
-        if (gi->flags & GEOIP_CHECK_CACHE) {
-
-#if !defined(_WIN32) 
-                /* stat only has second granularity, so don't
-	         * call it more than once a second */
-	        gettimeofday(&t, NULL);
-	        if (t.tv_sec == gi->last_mtime_check){
-		        return 0;
-	        }
-	        gi->last_mtime_check = t.tv_sec;
-
-#else /* !defined(_WIN32) */ 
-
-                /* stat only has second granularity, so don't 
-                  call it more than once a second */ 
-                GetSystemTimeAsFileTime(&ft); 
-                t = FILETIME_TO_USEC(ft) / 1000 / 1000; 
-                if (t == gi->last_mtime_check){ 
-                        return 0; 
-                } 
-                gi->last_mtime_check = t; 
-
-#endif /* !defined(_WIN32) */ 
-
-                if (stat(gi->file_path, &buf) != -1) {
-                        /* make sure that the database file is at least 60
-                         * seconds untouched. Otherwise we might load the
-                         * database only partly and crash
-                         */
-			if (buf.st_mtime != gi->mtime && ( buf.st_mtime + 60 < gi->last_mtime_check  ) ) {
-				/* GeoIP Database file updated */
-				if (gi->flags & (GEOIP_MEMORY_CACHE | GEOIP_MMAP_CACHE)) {
-				   if ( gi->flags & GEOIP_MMAP_CACHE) {
-#if !defined(_WIN32)
-							/* MMAP is only avail on UNIX */
-					munmap(gi->cache, gi->size);
-					gi->cache = NULL;
-#endif
-                                   } else {
-					/* reload database into memory cache */
-					if ((gi->cache = (unsigned char*) realloc(gi->cache, buf.st_size)) == NULL) {
-						//fprintf(stderr,"Out of memory when reloading %s\n",gi->file_path);
-						return -1;
-					}
-				    }
-				}
-				/* refresh filehandle */
-				fclose(gi->GeoIPDatabase);
-				gi->GeoIPDatabase = fopen(gi->file_path,"rb");
-				if (gi->GeoIPDatabase == NULL) {
-					//fprintf(stderr,"Error Opening file %s when reloading\n",gi->file_path);
-					return -1;
-				}
-				gi->mtime = buf.st_mtime;
-				gi->size = buf.st_size;
-
-				if ( gi->flags & GEOIP_MMAP_CACHE) {
-#if defined(_WIN32)
-					//fprintf(stderr, "GEOIP_MMAP_CACHE is not supported on WIN32\n");
-					gi->cache = 0;
-					return -1;
-#else
-				    gi->cache = mmap(NULL, buf.st_size, PROT_READ, MAP_PRIVATE, fileno(gi->GeoIPDatabase), 0);
-				    if ( gi->cache == MAP_FAILED ) {
-
-					    //fprintf(stderr,"Error remapping file %s when reloading\n",gi->file_path);
-
-					    gi->cache = NULL;
-					    return -1;
-				    }
-#endif
-				} else if ( gi->flags & GEOIP_MEMORY_CACHE ) {
-				    if (pread(fileno(gi->GeoIPDatabase), gi->cache,  buf.st_size, 0) != (ssize_t) buf.st_size) {
-					    //fprintf(stderr,"Error reading file %s when reloading\n",gi->file_path);
-					    return -1;
-					}
-				}
-
-				if (gi->databaseSegments != NULL) {
-					free(gi->databaseSegments);
-					gi->databaseSegments = NULL;
-				}
-				_setup_segments(gi);
-				if (gi->databaseSegments == NULL) {
-					//fprintf(stderr, "Error reading file %s -- corrupt\n", gi->file_path);
-					return -1;
-				}
-				if (gi->flags & GEOIP_INDEX_CACHE) {                        
-					gi->index_cache = (unsigned char *) realloc(gi->index_cache, sizeof(unsigned char) * ((gi->databaseSegments[0] * (long)gi->record_length * 2)));
-					if (gi->index_cache != NULL) {
-						if (pread(fileno(gi->GeoIPDatabase), gi->index_cache,
-                                                  gi->databaseSegments[0] * (long)gi->record_length * 2, 0 ) != (ssize_t) (gi->databaseSegments[0]*(long)gi->record_length * 2)) {
-							//fprintf(stderr,"Error reading file %s where reloading\n",gi->file_path);
-							return -1;
-						}
-					}
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-#define ADDR_STR_LEN (8 * 4 + 7 + 1) 
-unsigned int _GeoIP_seek_record_v6 (GeoIP *gi, geoipv6_t ipnum) {
-       int depth;
-       char paddr[ADDR_STR_LEN];
-       unsigned int x;
-       unsigned char stack_buffer[2 * MAX_RECORD_LENGTH];
-       const unsigned char *buf = (gi->cache == NULL) ? stack_buffer : NULL;
-       unsigned int offset = 0;
-
-       const unsigned char * p;
-       int j;
-       ssize_t silence;
-       int fno = fileno(gi->GeoIPDatabase);
-       _check_mtime(gi);
-       if ( GeoIP_teredo(gi) )
-         __GEOIP_PREPARE_TEREDO(&ipnum);
-       for (depth = 127; depth >= 0; depth--) {
-               if (gi->cache == NULL && gi->index_cache == NULL) {
-                       /* read from disk */
-                       silence = pread(fno, stack_buffer,gi->record_length * 2, (long)gi->record_length * 2 * offset );
-               } else if (gi->index_cache == NULL) {
-                       /* simply point to record in memory */
-                       buf = gi->cache + (long)gi->record_length * 2 *offset;
-               } else {
-                       buf = gi->index_cache + (long)gi->record_length * 2 * offset;
-               }
-
-               if (GEOIP_CHKBIT_V6(depth, ipnum.s6_addr )) {
-                       /* Take the right-hand branch */
-                       if ( gi->record_length == 3 ) {
-                               /* Most common case is completely unrolled and uses constants. */
-                               x =   (buf[3*1 + 0] << (0*8))
-                                       + (buf[3*1 + 1] << (1*8))
-                                       + (buf[3*1 + 2] << (2*8));
-
-                       } else {
-                               /* General case */
-                               j = gi->record_length;
-                               p = &buf[2*j];
-                               x = 0;
-                               do {
-                                       x <<= 8;
-                                       x += *(--p);
-                               } while ( --j );
-                       }
-
-               } else {
-                       /* Take the left-hand branch */
-                       if ( gi->record_length == 3 ) {
-                               /* Most common case is completely unrolled and uses constants. */
-                               x =   (buf[3*0 + 0] << (0*8))
-                                       + (buf[3*0 + 1] << (1*8))
-                                       + (buf[3*0 + 2] << (2*8));
-                       } else {
-                               /* General case */
-                               j = gi->record_length;
-                               p = &buf[1*j];
-                               x = 0;
-                               do {
-                                       x <<= 8;
-                                       x += *(--p);
-                               } while ( --j );
-                       }
-               }
-
-               if (x >= gi->databaseSegments[0]) {
-                       gi->netmask = 128 - depth;
-                       return x;
-               }
-               offset = x;
-       }
-
-       /* shouldn't reach here */
-        _GeoIP_inet_ntop(AF_INET6, &ipnum.s6_addr[0], paddr, ADDR_STR_LEN); 
-       //fprintf(stderr,"Error Traversing Database for ipnum = %s - Perhaps database is corrupt?\n", paddr);
-       return 0;
-}
-
-geoipv6_t
-_GeoIP_addr_to_num_v6(const char *addr)
-{
-       geoipv6_t       ipnum;
-        if ( 1 == _GeoIP_inet_pton(AF_INET6, addr, &ipnum.s6_addr[0] ) )
-          return ipnum;
-       return IPV6_NULL;
-}
-
-unsigned int _GeoIP_seek_record (GeoIP *gi, unsigned long ipnum) {
-	int depth;
-	unsigned int x;
-	unsigned char stack_buffer[2 * MAX_RECORD_LENGTH];
-	const unsigned char *buf = (gi->cache == NULL) ? stack_buffer : NULL;
-	unsigned int offset = 0;
-	ssize_t silence;
-
-	const unsigned char * p;
-	int j;
-        int fno = fileno(gi->GeoIPDatabase);
-	_check_mtime(gi);
-	for (depth = 31; depth >= 0; depth--) {
-		if (gi->cache == NULL && gi->index_cache == NULL) {
-			/* read from disk */
-                       silence = pread(fno, stack_buffer, gi->record_length * 2, gi->record_length * 2 * offset);
-		} else if (gi->index_cache == NULL) {
-			/* simply point to record in memory */
-			buf = gi->cache + (long)gi->record_length * 2 *offset;
-		} else {
-			buf = gi->index_cache + (long)gi->record_length * 2 * offset;
-		}
-
-		if (ipnum & (1 << depth)) {
-			/* Take the right-hand branch */
-			if ( gi->record_length == 3 ) {
-				/* Most common case is completely unrolled and uses constants. */
-				x =   (buf[3*1 + 0] << (0*8))
-					+ (buf[3*1 + 1] << (1*8))
-					+ (buf[3*1 + 2] << (2*8));
-
-			} else {
-				/* General case */
-				j = gi->record_length;
-				p = &buf[2*j];
-				x = 0;
-				do {
-					x <<= 8;
-					x += *(--p);
-				} while ( --j );
-			}
-
-		} else {
-			/* Take the left-hand branch */
-			if ( gi->record_length == 3 ) {
-				/* Most common case is completely unrolled and uses constants. */
-				x =   (buf[3*0 + 0] << (0*8))
-					+ (buf[3*0 + 1] << (1*8))
-					+ (buf[3*0 + 2] << (2*8));
-			} else {
-				/* General case */
-				j = gi->record_length;
-				p = &buf[1*j];
-				x = 0;
-				do {
-					x <<= 8;
-					x += *(--p);
-				} while ( --j );
-			}
-		}
-
-		if (x >= gi->databaseSegments[0]) {
-			gi->netmask = 32 - depth;
-			return x;
-		}
-		offset = x;
-	}
-	/* shouldn't reach here */
-	//fprintf(stderr,"Error Traversing Database for ipnum = %lu - Perhaps database is corrupt?\n",ipnum);
-	return 0;
-}
-
-unsigned long
-GeoIP_addr_to_num(const char *addr)
-{
-	unsigned int    c, octet, t;
-	unsigned long   ipnum;
-	int             i = 3;
-
-	octet = ipnum = 0;
-	while ((c = *addr++)) {
-		if (c == '.') {
-			if (octet > 255)
-				return 0;
-			ipnum <<= 8;
-			ipnum += octet;
-			i--;
-			octet = 0;
-		} else {
-			t = octet;
-			octet <<= 3;
-			octet += t;
-			octet += t;
-			c -= '0';
-			if (c > 9)
-				return 0;
-			octet += c;
-		}
-	}
-	if ((octet > 255) || (i != 0))
-		return 0;
-	ipnum <<= 8;
-	return ipnum + octet;
-}
-
-GeoIP* GeoIP_open_type (int type, int flags) {
-	GeoIP * gi;
-	const char * filePath;
-	if (type < 0 || type >= NUM_DB_TYPES) {
-		printf("Invalid database type %d\n", type);
-		return NULL;
-	}
-	_GeoIP_setup_dbfilename();
-	filePath = GeoIPDBFileName[type];
-	if (filePath == NULL) {
-		printf("Invalid database type %d\n", type);
-		return NULL;
-	}
-	gi = GeoIP_open (filePath, flags);
-	return gi;
-}
-
-GeoIP* GeoIP_new (int flags) {
-	GeoIP * gi;
-	_GeoIP_setup_dbfilename();
-	gi = GeoIP_open (GeoIPDBFileName[GEOIP_COUNTRY_EDITION], flags);
-	return gi;
-}
-
-GeoIP* GeoIP_open (const char * filename, int flags) {
-	struct stat buf;
-	GeoIP * gi;
-	size_t len;
-
-	gi = (GeoIP *)malloc(sizeof(GeoIP));
-	if (gi == NULL)
-		return NULL;
-       	len = sizeof(char) * (strlen(filename)+1);
-	gi->file_path = malloc(len);
-	if (gi->file_path == NULL) {
-		free(gi);
-		return NULL;
-	}
-	strncpy(gi->file_path, filename, len);
-	gi->GeoIPDatabase = fopen(filename,"rb");
-	if (gi->GeoIPDatabase == NULL) {
-		//fprintf(stderr,"Error Opening file %s\n",filename);
-		free(gi->file_path);
-		free(gi);
-		return NULL;
-	} else {
-		if (flags & (GEOIP_MEMORY_CACHE | GEOIP_MMAP_CACHE) ) {
-			if (fstat(fileno(gi->GeoIPDatabase), &buf) == -1) {
-				//fprintf(stderr,"Error stating file %s\n",filename);
-				free(gi->file_path);
-				free(gi);
-				return NULL;
-			}
-			gi->mtime = buf.st_mtime;
-			gi->size = buf.st_size;
-
-			/* MMAP added my Peter Shipley */
-			if ( flags & GEOIP_MMAP_CACHE ) {
-#if !defined(_WIN32)
-			    gi->cache = mmap(NULL, buf.st_size, PROT_READ, MAP_PRIVATE, fileno(gi->GeoIPDatabase), 0);
-			    if ( gi->cache == MAP_FAILED ) {
-				fprintf(stderr,"Error mmaping file %s\n",filename);
-				free(gi->file_path);
-				free(gi);
-				return NULL;
-			    }
-#endif
-			} else {
-			    gi->cache = (unsigned char *) malloc(sizeof(unsigned char) * buf.st_size);
-
-			    if (gi->cache != NULL) {
-				if (pread(fileno(gi->GeoIPDatabase),gi->cache, buf.st_size, 0) != (ssize_t) buf.st_size) {
-					//fprintf(stderr,"Error reading file %s\n",filename);
-					free(gi->cache);
-					free(gi->file_path);
-					free(gi);
-					return NULL;
-				}
-			    }
-			}
-		} else {
-			if (flags & GEOIP_CHECK_CACHE) {
-				if (fstat(fileno(gi->GeoIPDatabase), &buf) == -1) {
-					//fprintf(stderr,"Error stating file %s\n",filename);
-					free(gi->file_path);
-					free(gi);
-					return NULL;
-				}
-				gi->mtime = buf.st_mtime;
-			}
-			gi->cache = NULL;
-		}
-		gi->flags = flags;
-		gi->charset = GEOIP_CHARSET_ISO_8859_1;
-                gi->ext_flags = 1U << GEOIP_TEREDO_BIT;
-		_setup_segments(gi);
-		if (flags & GEOIP_INDEX_CACHE) {                        
-			gi->index_cache = (unsigned char *) malloc(sizeof(unsigned char) * ((gi->databaseSegments[0] * (long)gi->record_length * 2)));
-			if (gi->index_cache != NULL) {
-				if (pread(fileno(gi->GeoIPDatabase),gi->index_cache, gi->databaseSegments[0] * (long)gi->record_length * 2, 0) != (size_t) (gi->databaseSegments[0]*(long)gi->record_length * 2)) {
-					//fprintf(stderr,"Error reading file %s\n",filename);
-					free(gi->databaseSegments);
-					free(gi->index_cache);
-					free(gi);
-					return NULL;
-				}
-			}
-		} else {
-			gi->index_cache = NULL;
-		}
-		return gi;
-	}
-}
-
-void GeoIP_delete (GeoIP *gi) {
-	if (gi == NULL )
-		return;
-	if (gi->GeoIPDatabase != NULL)
-		fclose(gi->GeoIPDatabase);
-	if (gi->cache != NULL) {
-	    if ( gi->flags & GEOIP_MMAP_CACHE ) {
-#if !defined(_WIN32)
-		munmap(gi->cache, gi->size);
-#endif
-	    } else {
-		free(gi->cache);
-	    }
-	    gi->cache = NULL;
-	}
-	if (gi->index_cache != NULL)
-		free(gi->index_cache);
-	if (gi->file_path != NULL)
-		free(gi->file_path);
-	if (gi->databaseSegments != NULL)
-		free(gi->databaseSegments);
-	free(gi);
-}
-
-const char *GeoIP_country_code_by_name_v6 (GeoIP* gi, const char *name) {
-	int country_id;
-	country_id = GeoIP_id_by_name_v6(gi, name);
-	return (country_id > 0) ? GeoIP_country_code[country_id] : NULL;
-}
-
-const char *GeoIP_country_code_by_name (GeoIP* gi, const char *name) {
-	int country_id;
-	country_id = GeoIP_id_by_name(gi, name);
-	return (country_id > 0) ? GeoIP_country_code[country_id] : NULL;
-}
-
-const char *GeoIP_country_code3_by_name_v6 (GeoIP* gi, const char *name) {
-	int country_id;
-	country_id = GeoIP_id_by_name_v6(gi, name);
-	return (country_id > 0) ? GeoIP_country_code3[country_id] : NULL;
-}
-
-const char *GeoIP_country_code3_by_name (GeoIP* gi, const char *name) {
-	int country_id;
-	country_id = GeoIP_id_by_name(gi, name);
-	return (country_id > 0) ? GeoIP_country_code3[country_id] : NULL;
-}
-
-const char *GeoIP_country_name_by_name_v6 (GeoIP* gi, const char *name) {
-	int country_id;
-	country_id = GeoIP_id_by_name_v6(gi, name);
-        return GeoIP_country_name_by_id(gi, country_id );
-}
-
-const char *GeoIP_country_name_by_name (GeoIP* gi, const char *name) {
-	int country_id;
-	country_id = GeoIP_id_by_name(gi, name);
-        return GeoIP_country_name_by_id(gi, country_id );
-}
-
-unsigned long _GeoIP_lookupaddress (const char *host) {
-	unsigned long addr = inet_addr(host);
-	struct hostent phe2;
-	struct hostent * phe = &phe2;
-	char *buf = NULL;
-#ifdef HAVE_GETHOSTBYNAME_R
-	int buflength = 16384;
-	int herr = 0;
-#endif
-	int result = 0;
-#ifdef HAVE_GETHOSTBYNAME_R
-	buf = malloc(buflength);
-#endif
-	if (addr == INADDR_NONE) {
-#ifdef HAVE_GETHOSTBYNAME_R
-		while (1) {
-			/* we use gethostbyname_r here because it is thread-safe and gethostbyname is not */
-#ifdef GETHOSTBYNAME_R_RETURNS_INT
-			result = gethostbyname_r(host,&phe2,buf,buflength,&phe,&herr);
-#else
-			phe = gethostbyname_r(host,&phe2,buf,buflength,&herr);
-#endif
-			if (herr != ERANGE)
-				break;
-			if (result == 0)
-				break;
-			/* double the buffer if the buffer is too small */
-			buflength = buflength * 2;
-			buf = realloc(buf,buflength);
-		}
-#else
-		/* Some systems do not support gethostbyname_r, such as Mac OS X */
-		phe = gethostbyname(host);
-#endif
-		if (!phe || result != 0) {
-			free(buf);
-			return 0;
-		}
-#if !defined(_WIN32)
-		addr = *((in_addr_t *) phe->h_addr_list[0]);
-#else
-                addr = ((IN_ADDR *) phe->h_addr_list[0])->S_un.S_addr;
-#endif
-	}
-#ifdef HAVE_GETHOSTBYNAME_R
-	free(buf);
-#endif
-	return ntohl(addr);
-}
-
-geoipv6_t 
-_GeoIP_lookupaddress_v6(const char *host)
-{
-  geoipv6_t       ipnum;
-  int             gaierr;
-  struct addrinfo hints, *aifirst;
-
-  memset(&hints, 0, sizeof(hints));
-  hints.ai_family = AF_INET6;
-  /* hints.ai_flags = AI_V4MAPPED; */
-  hints.ai_socktype = SOCK_STREAM;
-
-  if ((gaierr = getaddrinfo(host, NULL, &hints, &aifirst)) != 0) {
-          /* fprintf(stderr, "Err: %s (%d %s)\n", host, gaierr, gai_strerror(gaierr)); */
-    return IPV6_NULL;
-  }
-  memcpy(ipnum.s6_addr, ((struct sockaddr_in6 *) aifirst->ai_addr)->sin6_addr.s6_addr, sizeof(geoipv6_t));
-  freeaddrinfo(aifirst);
-  /* inet_pton(AF_INET6, host, ipnum.s6_addr); */
-  
-  return ipnum;
-}
-
-int GeoIP_id_by_name (GeoIP* gi, const char *name) {
-	unsigned long ipnum;
-	int ret;
-	if (name == NULL) {
-		return 0;
-	}
-	if (gi->databaseType != GEOIP_LARGE_COUNTRY_EDITION && gi->databaseType != GEOIP_COUNTRY_EDITION && gi->databaseType != GEOIP_PROXY_EDITION && gi->databaseType != GEOIP_NETSPEED_EDITION) {
-		printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_COUNTRY_EDITION]);
-		return 0;
-	}
-	if (!(ipnum = _GeoIP_lookupaddress(name)))
-		return 0;
-	ret = _GeoIP_seek_record(gi, ipnum) - gi->databaseSegments[0];
-	return ret;
-
-}
-
-int GeoIP_id_by_name_v6 (GeoIP* gi, const char *name) {
-       geoipv6_t ipnum;
-       int ret;
-       if (name == NULL) {
-               return 0;
-       }
-       if (gi->databaseType != GEOIP_LARGE_COUNTRY_EDITION_V6 && gi->databaseType != GEOIP_COUNTRY_EDITION_V6) {
-               printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_COUNTRY_EDITION_V6]);
-               return 0;
-       }
-        ipnum = _GeoIP_lookupaddress_v6(name);
-       if (__GEOIP_V6_IS_NULL(ipnum))
-               return 0;
-
-       ret = _GeoIP_seek_record_v6(gi, ipnum) - gi->databaseSegments[0];
-       return ret;
-}
-
-const char *GeoIP_country_code_by_addr_v6 (GeoIP* gi, const char *addr) {
-	int country_id;
-	country_id = GeoIP_id_by_addr_v6(gi, addr);
-	return (country_id > 0) ? GeoIP_country_code[country_id] : NULL;
-}
-
-const char *GeoIP_country_code_by_addr (GeoIP* gi, const char *addr) {
-	int country_id;
-	country_id = GeoIP_id_by_addr(gi, addr);
-	return (country_id > 0) ? GeoIP_country_code[country_id] : NULL;
-}
-
-const char *GeoIP_country_code3_by_addr_v6 (GeoIP* gi, const char *addr) {
-	int country_id;
-	country_id = GeoIP_id_by_addr_v6(gi, addr);
-	return (country_id > 0) ? GeoIP_country_code3[country_id] : NULL;
-}
-
-const char *GeoIP_country_code3_by_addr (GeoIP* gi, const char *addr) {
-	int country_id;
-	country_id = GeoIP_id_by_addr(gi, addr);
-	return (country_id > 0) ? GeoIP_country_code3[country_id] : NULL;
-}
-
-const char *GeoIP_country_name_by_addr_v6 (GeoIP* gi, const char *addr) {
-	int country_id;
-	country_id = GeoIP_id_by_addr_v6(gi, addr);
-        return GeoIP_country_name_by_id(gi, country_id );
-}
-
-const char *GeoIP_country_name_by_addr (GeoIP* gi, const char *addr) {
-	int country_id;
-	country_id = GeoIP_id_by_addr(gi, addr);
-        return GeoIP_country_name_by_id(gi, country_id );
-}
-
-const char *GeoIP_country_name_by_ipnum (GeoIP* gi, unsigned long ipnum) {
-	int country_id;
-	country_id = GeoIP_id_by_ipnum(gi, ipnum);
-        return GeoIP_country_name_by_id(gi, country_id );
-} 
-
-const char *GeoIP_country_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) {
-       int country_id;
-       country_id = GeoIP_id_by_ipnum_v6(gi, ipnum);
-       return GeoIP_country_name_by_id(gi, country_id );
-}
-
-const char *GeoIP_country_code_by_ipnum (GeoIP* gi, unsigned long ipnum) {
-	int country_id;
-	country_id = GeoIP_id_by_ipnum(gi, ipnum);
-	return (country_id > 0) ? GeoIP_country_code[country_id] : NULL;
-}
-
-const char *GeoIP_country_code_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) {
-       int country_id;
-       country_id = GeoIP_id_by_ipnum_v6(gi, ipnum);
-       return (country_id > 0) ? GeoIP_country_code[country_id] : NULL;
-}
-
-const char *GeoIP_country_code3_by_ipnum (GeoIP* gi, unsigned long ipnum) {
-	int country_id;
-	country_id = GeoIP_id_by_ipnum(gi, ipnum);
-	return (country_id > 0) ? GeoIP_country_code3[country_id] : NULL;
-}
-
-const char *GeoIP_country_code3_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) {
-       int country_id;
-       country_id = GeoIP_id_by_ipnum_v6(gi, ipnum);
-       return (country_id > 0) ? GeoIP_country_code3[country_id] : NULL;
-}
-
-int GeoIP_country_id_by_addr_v6 (GeoIP* gi, const char *addr) {
-	return GeoIP_id_by_addr_v6(gi, addr);
-}
-
-int GeoIP_country_id_by_addr (GeoIP* gi, const char *addr) {
-	return GeoIP_id_by_addr(gi, addr);
-}
-
-int GeoIP_country_id_by_name_v6 (GeoIP* gi, const char *host) {
-	return GeoIP_id_by_name_v6(gi, host);
-}
-
-int GeoIP_country_id_by_name (GeoIP* gi, const char *host) {
-	return GeoIP_id_by_name(gi, host);
-}
-
-int GeoIP_id_by_addr_v6 (GeoIP* gi, const char *addr) {
-       geoipv6_t ipnum;
-       int ret;
-       if (addr == NULL) {
-               return 0;
-       }
-       if  (gi->databaseType != GEOIP_COUNTRY_EDITION_V6 
-         && gi->databaseType != GEOIP_LARGE_COUNTRY_EDITION_V6) {
-               printf("Invalid database type %s, expected %s\n",
-                                        GeoIPDBDescription[(int)gi->databaseType],
-                                        GeoIPDBDescription[GEOIP_COUNTRY_EDITION_V6]);
-               return 0;
-       }
-       ipnum = _GeoIP_addr_to_num_v6(addr);
-       ret = _GeoIP_seek_record_v6(gi, ipnum) - gi->databaseSegments[0];
-       return ret;
-}
-
-int GeoIP_id_by_addr (GeoIP* gi, const char *addr) {
-	unsigned long ipnum;
-	int ret;
-	if (addr == NULL) {
-		return 0;
-	}
-	if (gi->databaseType != GEOIP_COUNTRY_EDITION &&
-            gi->databaseType != GEOIP_LARGE_COUNTRY_EDITION &&
-			gi->databaseType != GEOIP_PROXY_EDITION &&
-			gi->databaseType != GEOIP_NETSPEED_EDITION) {
-		printf("Invalid database type %s, expected %s\n",
-					 GeoIPDBDescription[(int)gi->databaseType],
-					 GeoIPDBDescription[GEOIP_COUNTRY_EDITION]);
-		return 0;
-	}
-	ipnum = GeoIP_addr_to_num(addr);
-	ret = _GeoIP_seek_record(gi, ipnum) -  gi->databaseSegments[0];
-	return ret;
-}
-
-int GeoIP_id_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) {
-       int ret;
-/*     if (ipnum == 0) {
-               return 0;
-       }
-*/     
-       if (gi->databaseType != GEOIP_COUNTRY_EDITION_V6
-         && gi->databaseType != GEOIP_LARGE_COUNTRY_EDITION_V6) {
-               printf("Invalid database type %s, expected %s\n",
-                                        GeoIPDBDescription[(int)gi->databaseType],
-                                        GeoIPDBDescription[GEOIP_COUNTRY_EDITION_V6]);
-               return 0;
-       }
-       ret = _GeoIP_seek_record_v6(gi, ipnum) - gi->databaseSegments[0];
-       return ret;
-}
-
-
-
-int GeoIP_id_by_ipnum (GeoIP* gi, unsigned long ipnum) {
-	int ret;
-	if (ipnum == 0) {
-		return 0;
-	}
-	if (gi->databaseType != GEOIP_COUNTRY_EDITION && 
-          gi->databaseType != GEOIP_LARGE_COUNTRY_EDITION && 
-			gi->databaseType != GEOIP_PROXY_EDITION &&
-			gi->databaseType != GEOIP_NETSPEED_EDITION) {
-		printf("Invalid database type %s, expected %s\n",
-					 GeoIPDBDescription[(int)gi->databaseType],
-					 GeoIPDBDescription[GEOIP_COUNTRY_EDITION]);
-		return 0;
-	}
-	ret = _GeoIP_seek_record(gi, ipnum) - gi->databaseSegments[0];
-	return ret;
-}
-
-char *GeoIP_database_info (GeoIP* gi) {
-	int i;
-	unsigned char buf[3];
-	char *retval;
-	int hasStructureInfo = 0;
-	ssize_t silence;
-        int fno = fileno(gi->GeoIPDatabase);
-
-	if(gi == NULL)
-		return NULL;
-
-	_check_mtime(gi);
-	lseek(fno, -3l, SEEK_END);
-
-	/* first get past the database structure information */
-	for (i = 0; i < STRUCTURE_INFO_MAX_SIZE; i++) {
-		silence = read(fno, buf, 3 );
-		if (buf[0] == 255 && buf[1] == 255 && buf[2] == 255) {
-			hasStructureInfo = 1;
-			break;
-		}
-		lseek(fno, -4l, SEEK_CUR);
-	}
-	if (hasStructureInfo == 1) {
-		lseek(fno, -6l, SEEK_CUR);
-	} else {
-		/* no structure info, must be pre Sep 2002 database, go back to end */
-		lseek(fno, -3l, SEEK_END);
-	}
-
-	for (i = 0; i < DATABASE_INFO_MAX_SIZE; i++) {
-		silence = read(fno, buf, 3 );
-		if (buf[0] == 0 && buf[1] == 0 && buf[2] == 0) {
-			retval = malloc(sizeof(char) * (i+1));
-			if (retval == NULL) {
-				return NULL;
-			}
-			silence = read(fno, retval, i);
-			retval[i] = '\0';
-			return retval;
-		}
-		lseek(fno, -4l, SEEK_CUR);
-	}
-	return NULL;
-}
-
-/* GeoIP Region Edition functions */
-
-void GeoIP_assign_region_by_inetaddr(GeoIP* gi, unsigned long inetaddr, GeoIPRegion *region) {
-	unsigned int seek_region;
-
-	/* This also writes in the terminating NULs (if you decide to
-	 * keep them) and clear any fields that are not set. */
-	memset(region, 0, sizeof(GeoIPRegion));
-
-	seek_region = _GeoIP_seek_record(gi, ntohl(inetaddr));
-
-	if (gi->databaseType == GEOIP_REGION_EDITION_REV0) {
-		/* Region Edition, pre June 2003 */
-		seek_region -= STATE_BEGIN_REV0;
-		if (seek_region >= 1000) {
-			region->country_code[0] = 'U';
-			region->country_code[1] = 'S';
-			region->region[0] = (char) ((seek_region - 1000)/26 + 65);
-			region->region[1] = (char) ((seek_region - 1000)%26 + 65);
-		} else {
-			memcpy(region->country_code, GeoIP_country_code[seek_region], 2);
-		}
-	} else if (gi->databaseType == GEOIP_REGION_EDITION_REV1) {
-		/* Region Edition, post June 2003 */
-		seek_region -= STATE_BEGIN_REV1;
-		if (seek_region < US_OFFSET) {
-			/* Unknown */
-			/* we don't need to do anything here b/c we memset region to 0 */
-		} else if (seek_region < CANADA_OFFSET) {
-			/* USA State */
-			region->country_code[0] = 'U';
-			region->country_code[1] = 'S';
-			region->region[0] = (char) ((seek_region - US_OFFSET)/26 + 65);
-			region->region[1] = (char) ((seek_region - US_OFFSET)%26 + 65);
-		} else if (seek_region < WORLD_OFFSET) {
-			/* Canada Province */
-			region->country_code[0] = 'C';
-			region->country_code[1] = 'A';
-			region->region[0] = (char) ((seek_region - CANADA_OFFSET)/26 + 65);
-			region->region[1] = (char) ((seek_region - CANADA_OFFSET)%26 + 65);
-		} else {
-			/* Not US or Canada */
-			memcpy(region->country_code, GeoIP_country_code[(seek_region - WORLD_OFFSET) / FIPS_RANGE], 2);
-		}
-	}
-}
-
-void GeoIP_assign_region_by_inetaddr_v6(GeoIP* gi, geoipv6_t inetaddr, GeoIPRegion *region) {
-       unsigned int seek_region;
-
-       /* This also writes in the terminating NULs (if you decide to
-        * keep them) and clear any fields that are not set. */
-       memset(region, 0, sizeof(GeoIPRegion));
-
-       seek_region = _GeoIP_seek_record_v6(gi, inetaddr);
-
-       if (gi->databaseType == GEOIP_REGION_EDITION_REV0) {
-               /* Region Edition, pre June 2003 */
-               seek_region -= STATE_BEGIN_REV0;
-               if (seek_region >= 1000) {
-                       region->country_code[0] = 'U';
-                       region->country_code[1] = 'S';
-                       region->region[0] = (char) ((seek_region - 1000)/26 + 65);
-                       region->region[1] = (char) ((seek_region - 1000)%26 + 65);
-               } else {
-                       memcpy(region->country_code, GeoIP_country_code[seek_region], 2);
-               }
-       } else if (gi->databaseType == GEOIP_REGION_EDITION_REV1) {
-               /* Region Edition, post June 2003 */
-               seek_region -= STATE_BEGIN_REV1;
-               if (seek_region < US_OFFSET) {
-                       /* Unknown */
-                       /* we don't need to do anything here b/c we memset region to 0 */
-               } else if (seek_region < CANADA_OFFSET) {
-                       /* USA State */
-                       region->country_code[0] = 'U';
-                       region->country_code[1] = 'S';
-                       region->region[0] = (char) ((seek_region - US_OFFSET)/26 + 65);
-                       region->region[1] = (char) ((seek_region - US_OFFSET)%26 + 65);
-               } else if (seek_region < WORLD_OFFSET) {
-                       /* Canada Province */
-                       region->country_code[0] = 'C';
-                       region->country_code[1] = 'A';
-                       region->region[0] = (char) ((seek_region - CANADA_OFFSET)/26 + 65);
-                       region->region[1] = (char) ((seek_region - CANADA_OFFSET)%26 + 65);
-               } else {
-                       /* Not US or Canada */
-                       memcpy(region->country_code, GeoIP_country_code[(seek_region - WORLD_OFFSET) / FIPS_RANGE], 2);
-               }
-       }
-}
-
-static
-GeoIPRegion * _get_region(GeoIP* gi, unsigned long ipnum) {
-	GeoIPRegion * region;
- 
-	region = malloc(sizeof(GeoIPRegion));
-	if (region) {
-		GeoIP_assign_region_by_inetaddr(gi, htonl(ipnum), region);
-	}
-	return region;
-}
-
-static
-GeoIPRegion * _get_region_v6(GeoIP* gi, geoipv6_t ipnum) {
-       GeoIPRegion * region;
- 
-       region = malloc(sizeof(GeoIPRegion));
-       if (region) {
-               GeoIP_assign_region_by_inetaddr_v6(gi, ipnum, region);
-       }
-       return region;
-}
-
-GeoIPRegion * GeoIP_region_by_addr (GeoIP* gi, const char *addr) {
-	unsigned long ipnum;
-	if (addr == NULL) {
-		return 0;
-	}
-	if (gi->databaseType != GEOIP_REGION_EDITION_REV0 &&
-			gi->databaseType != GEOIP_REGION_EDITION_REV1) {
-		printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_REGION_EDITION_REV1]);
-		return 0;
-	}
-	ipnum = GeoIP_addr_to_num(addr);
-	return _get_region(gi, ipnum);
-}
-
-GeoIPRegion * GeoIP_region_by_addr_v6 (GeoIP* gi, const char *addr) {
-       geoipv6_t ipnum;
-       if (addr == NULL) {
-               return 0;
-       }
-       if (gi->databaseType != GEOIP_REGION_EDITION_REV0 &&
-                       gi->databaseType != GEOIP_REGION_EDITION_REV1) {
-               printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_REGION_EDITION_REV1]);
-               return 0;
-       }
-       ipnum = _GeoIP_addr_to_num_v6(addr);
-       return _get_region_v6(gi, ipnum);
-}
-
-GeoIPRegion * GeoIP_region_by_name (GeoIP* gi, const char *name) {
-	unsigned long ipnum;
-	if (name == NULL) {
-		return 0;
-	}
-	if (gi->databaseType != GEOIP_REGION_EDITION_REV0 &&
-			gi->databaseType != GEOIP_REGION_EDITION_REV1) {
-		printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_REGION_EDITION_REV1]);
-		return 0;
-	}
-	if (!(ipnum = _GeoIP_lookupaddress(name)))
-		return 0;
-	return _get_region(gi, ipnum);
-}
-
-GeoIPRegion * GeoIP_region_by_name_v6 (GeoIP* gi, const char *name) {
-       geoipv6_t ipnum;
-       if (name == NULL) {
-               return 0;
-       }
-       if (gi->databaseType != GEOIP_REGION_EDITION_REV0 &&
-                       gi->databaseType != GEOIP_REGION_EDITION_REV1) {
-               printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_REGION_EDITION_REV1]);
-               return 0;
-       }
-        
-        ipnum = _GeoIP_lookupaddress_v6(name);
-       if (__GEOIP_V6_IS_NULL(ipnum))
-               return 0;
-       return _get_region_v6(gi, ipnum);
-}
-
-GeoIPRegion * GeoIP_region_by_ipnum (GeoIP* gi, unsigned long ipnum) {
-	if (gi->databaseType != GEOIP_REGION_EDITION_REV0 &&
-			gi->databaseType != GEOIP_REGION_EDITION_REV1) {
-		printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_REGION_EDITION_REV1]);
-		return 0;
-	}
-	return _get_region(gi, ipnum);
-}
-
-GeoIPRegion * GeoIP_region_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) {
-       if (gi->databaseType != GEOIP_REGION_EDITION_REV0 &&
-                       gi->databaseType != GEOIP_REGION_EDITION_REV1) {
-               printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_REGION_EDITION_REV1]);
-               return 0;
-       }
-       return _get_region_v6(gi, ipnum);
-}
-
-void GeoIPRegion_delete (GeoIPRegion *gir) {
-	free(gir);
-}
-
-/* GeoIP Organization, ISP and AS Number Edition private method */
-static
-char *_get_name (GeoIP* gi, unsigned long ipnum) {
-	int seek_org;
-	char buf[MAX_ORG_RECORD_LENGTH];
-	char * org_buf, * buf_pointer;
-	int record_pointer;
-	size_t len; 
-        ssize_t silence;
-
-	if (gi->databaseType != GEOIP_ORG_EDITION &&
-			gi->databaseType != GEOIP_ISP_EDITION &&
-			gi->databaseType != GEOIP_DOMAIN_EDITION &&
-			gi->databaseType != GEOIP_ASNUM_EDITION &&
-			gi->databaseType != GEOIP_NETSPEED_EDITION_REV1 &&
-			gi->databaseType != GEOIP_USERTYPE_EDITION &&
-			gi->databaseType != GEOIP_REGISTRAR_EDITION &&
-			gi->databaseType != GEOIP_LOCATIONA_EDITION
-                        ) {
-		printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_ORG_EDITION]);
-		return NULL;
-	}
-
-	seek_org = _GeoIP_seek_record(gi, ipnum);
-	if (seek_org == gi->databaseSegments[0])		
-		return NULL;
-
-	record_pointer = seek_org + (2 * gi->record_length - 1) * gi->databaseSegments[0];
-
-	if (gi->cache == NULL) {
-                silence = pread(fileno(gi->GeoIPDatabase), buf, MAX_ORG_RECORD_LENGTH, record_pointer);
-                if ( gi->charset == GEOIP_CHARSET_UTF8 ) {
-	          org_buf = _GeoIP_iso_8859_1__utf8( (const char * ) buf );
-	        } else {
-		  len = sizeof(char) * (strlen(buf)+1);
-		  org_buf = malloc(len);
-		  strncpy(org_buf, buf, len);
-                }
-	} else {
-		buf_pointer = (char *)(gi->cache + (long)record_pointer);
-                if ( gi->charset == GEOIP_CHARSET_UTF8 ) {
-	          org_buf = _GeoIP_iso_8859_1__utf8( (const char * ) buf_pointer );
-	        } else {
-		  len = sizeof(char) * (strlen(buf_pointer)+1);
-		  org_buf = malloc(len);
-		  strncpy(org_buf, buf_pointer, len);
-                }
-	}
-	return org_buf;
-}
-
-char *_get_name_v6 (GeoIP* gi, geoipv6_t ipnum) {
-  int seek_org;
-  char buf[MAX_ORG_RECORD_LENGTH];
-  char * org_buf, * buf_pointer;
-  int record_pointer;
-  size_t len;
-  ssize_t silence;
-
-  if (
-      gi->databaseType != GEOIP_ORG_EDITION_V6 &&
-      gi->databaseType != GEOIP_ISP_EDITION_V6 &&
-      gi->databaseType != GEOIP_DOMAIN_EDITION_V6 &&
-      gi->databaseType != GEOIP_ASNUM_EDITION_V6 &&
-      gi->databaseType != GEOIP_NETSPEED_EDITION_REV1_V6 &&
-      gi->databaseType != GEOIP_USERTYPE_EDITION_V6 &&
-      gi->databaseType != GEOIP_REGISTRAR_EDITION_V6 &&
-      gi->databaseType != GEOIP_LOCATIONA_EDITION
-      ) {
-    printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_ORG_EDITION]);
-    return NULL;
-  }
-
-  seek_org = _GeoIP_seek_record_v6(gi, ipnum);
-  if (seek_org == gi->databaseSegments[0])
-    return NULL;
-
-  record_pointer = seek_org + (2 * gi->record_length - 1) * gi->databaseSegments[0];
-
-  if (gi->cache == NULL) {
-     silence = pread(fileno(gi->GeoIPDatabase), buf, MAX_ORG_RECORD_LENGTH, record_pointer);
-    if ( gi->charset == GEOIP_CHARSET_UTF8 ) {
-      org_buf = _GeoIP_iso_8859_1__utf8( (const char * ) buf );
-    } else {
-      len = sizeof(char) * (strlen(buf)+1);
-      org_buf = malloc(len);
-      strncpy(org_buf, buf, len);
-    }
-  } else {
-    buf_pointer = (char *)(gi->cache + (long)record_pointer);
-    if ( gi->charset == GEOIP_CHARSET_UTF8 ) {
-      org_buf = _GeoIP_iso_8859_1__utf8( (const char * ) buf_pointer );
-    } else {
-      len = sizeof(char) * (strlen(buf_pointer)+1);
-      org_buf = malloc(len);
-      strncpy(org_buf, buf_pointer, len);
-    }
-  }
-  return org_buf;
-}
-
-char * GeoIP_num_to_addr (unsigned long ipnum) {
-	char *ret_str;
-	char *cur_str;
-	int octet[4];
-	int num_chars_written, i;
-
-	ret_str = malloc(sizeof(char) * 16);
-	cur_str = ret_str;
-
-	for (i = 0; i<4; i++) {
-		octet[3 - i] = ipnum % 256;
-		ipnum >>= 8;
-	}
-
-	for (i = 0; i<4; i++) {
-		num_chars_written = sprintf(cur_str, "%d", octet[i]);
-		cur_str += num_chars_written;
-
-		if (i < 3) {
-			cur_str[0] = '.';
-			cur_str++;
-		}
-	}
-
-	return ret_str;
-}
-
-char **GeoIP_range_by_ip (GeoIP* gi, const char *addr) {
-	unsigned long ipnum;
-	unsigned long left_seek;
-	unsigned long right_seek;
-	unsigned long mask;
-	int orig_netmask;
-	int target_value;
-	char **ret;
-	
-	if (addr == NULL) {
-		return 0;
-	}
-
-	ret = malloc(sizeof(char *) * 2);
-
-	ipnum = GeoIP_addr_to_num(addr);
-	target_value = _GeoIP_seek_record(gi, ipnum);
-	orig_netmask = GeoIP_last_netmask(gi);
-	mask = 0xffffffff << ( 32 - orig_netmask );	
-	left_seek = ipnum & mask;
-	right_seek = left_seek + ( 0xffffffff & ~mask );
-
-	while (left_seek != 0 
-	  && target_value == _GeoIP_seek_record(gi, left_seek - 1) ) {
-		
-		/* Go to beginning of netblock defined by netmask */
-		mask = 0xffffffff << ( 32 - GeoIP_last_netmask(gi) );
-		left_seek = ( left_seek - 1 ) & mask;
-	}
-	ret[0] = GeoIP_num_to_addr(left_seek);
-
-	while (right_seek != 0xffffffff
-	  && target_value == _GeoIP_seek_record(gi, right_seek + 1) ) {
-		
-		/* Go to end of netblock defined by netmask */
-		mask = 0xffffffff << ( 32 - GeoIP_last_netmask(gi) );
-		right_seek = ( right_seek + 1 ) & mask;
-		right_seek += 0xffffffff & ~mask;
-	}
-	ret[1] = GeoIP_num_to_addr(right_seek);
-
-	gi->netmask = orig_netmask;
-
-	return ret;
-}
-
-void GeoIP_range_by_ip_delete( char ** ptr ){
-	if ( ptr ){
-		if ( ptr[0] )
-			free(ptr[0]);
-		if ( ptr[1] )
-			free(ptr[1]);
-		free(ptr);
-	}
-}
-
-char *GeoIP_name_by_ipnum (GeoIP* gi, unsigned long ipnum) {
-	return _get_name(gi,ipnum);  
-}
-
-char *GeoIP_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) {
-       return _get_name_v6(gi,ipnum);  
-}
-
-char *GeoIP_name_by_addr (GeoIP* gi, const char *addr) {
-	unsigned long ipnum;
-	if (addr == NULL) {
-		return 0;
-	}
-	ipnum = GeoIP_addr_to_num(addr);
-	return _get_name(gi, ipnum);
-}
-
-char *GeoIP_name_by_addr_v6 (GeoIP* gi, const char *addr) {
-  geoipv6_t ipnum;
-  if (addr == NULL) {
-    return 0;
-  }
-  ipnum = _GeoIP_addr_to_num_v6(addr);
-  return _get_name_v6(gi, ipnum);
-}
-
-char *GeoIP_name_by_name (GeoIP* gi, const char *name) {
-	unsigned long ipnum;
-	if (name == NULL) {
-		return 0;
-	}
-	if (!(ipnum = _GeoIP_lookupaddress(name)))
-		return 0;
-	return _get_name(gi, ipnum);
-}
-
-char *GeoIP_name_by_name_v6 (GeoIP* gi, const char *name) {
-  geoipv6_t ipnum;
-  if (name == NULL) {
-    return 0;
-  }
-        ipnum = _GeoIP_lookupaddress_v6(name);
-  if (__GEOIP_V6_IS_NULL(ipnum))
-    return 0;
-  return _get_name_v6(gi, ipnum);
-}
-
-char *GeoIP_org_by_ipnum (GeoIP* gi, unsigned long ipnum) {
-	return GeoIP_name_by_ipnum(gi, ipnum);
-}
-
-char *GeoIP_org_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum) {
-  return GeoIP_name_by_ipnum_v6(gi, ipnum);
-}
-
-char *GeoIP_org_by_addr (GeoIP* gi, const char *addr) {
-	return GeoIP_name_by_addr(gi, addr);
-}
-
-char *GeoIP_org_by_addr_v6 (GeoIP* gi, const char *addr) {
-  return GeoIP_name_by_addr_v6(gi, addr);
-}
-
-char *GeoIP_org_by_name (GeoIP* gi, const char *name) {
-	return GeoIP_name_by_name(gi, name);
-}
-
-char *GeoIP_org_by_name_v6 (GeoIP* gi, const char *name) {
-  return GeoIP_name_by_name_v6(gi, name);
-}
-
-unsigned char GeoIP_database_edition (GeoIP* gi) {
-	return gi->databaseType;
-}
-
-int GeoIP_enable_teredo(GeoIP* gi, int true_false){
-  unsigned int mask = ( 1U << GEOIP_TEREDO_BIT );
-  int b = ( gi->ext_flags & mask ) ? 1 : 0;
-  gi->ext_flags &= ~mask ;
-  if ( true_false )
-    gi->ext_flags |= true_false;
-  return b;
-}
-
-int GeoIP_teredo ( GeoIP* gi ){
-  unsigned int mask = ( 1U << GEOIP_TEREDO_BIT );
-  return ( gi->ext_flags & mask ) ? 1 : 0;
-}
-
-int GeoIP_charset( GeoIP* gi){
-  return gi->charset;
-}
-
-int GeoIP_set_charset(  GeoIP* gi, int charset ){
-  int old_charset = gi->charset;
-  gi->charset = charset;
-  return old_charset;
-}
-
-int GeoIP_last_netmask (GeoIP* gi) {
-  return gi->netmask;
-}
-
-
-/** return two letter country code */
-const char* GeoIP_code_by_id(int id)
-{
-       if (id < 0 || id >= (int) num_GeoIP_countries)
-               return NULL;
-
-       return GeoIP_country_code[id];
-}
-
-/** return three letter country code */
-const char* GeoIP_code3_by_id(int id)
-{
-       if (id < 0 || id >= (int) num_GeoIP_countries)
-               return NULL;
-
-       return GeoIP_country_code3[id];
-}
-
-
-/** return full name of country in utf8 or iso-8859-1 */
-const char* GeoIP_country_name_by_id(GeoIP * gi, int id)
-{
-       /* return NULL also even for index 0 for backward compatibility */
-       if (id <= 0 || id >= (int) num_GeoIP_countries)
-               return NULL;
-       return ((gi->charset == GEOIP_CHARSET_UTF8)
-         ? GeoIP_utf8_country_name[id]
-         : GeoIP_country_name[id]);
-}
-
-/** return full name of country in iso-8859-1 */
-const char* GeoIP_name_by_id(int id)
-{
-       if (id < 0 || id >= (int) num_GeoIP_countries)
-               return NULL;
-
-       return GeoIP_country_name[id];
-}
-
-/** return continent of country */
-const char* GeoIP_continent_by_id(int id)
-{
-       if (id < 0 || id >= (int) num_GeoIP_countries)
-               return NULL;
-
-       return GeoIP_country_continent[id];
-}
-
-/** return id by country code **/
-int GeoIP_id_by_code(const char *country)
-{
-       unsigned i;
-
-       for ( i = 0; i < num_GeoIP_countries; ++i)
-       {
-               if (strcmp(country, GeoIP_country_code[i]) == 0)
-                       return i;
-       }
-
-       return 0;
-}
-
-unsigned GeoIP_num_countries(void)
-{
-       return num_GeoIP_countries;
-}
-
-/*const char * GeoIP_lib_version(void)
-{
-       return PACKAGE_VERSION;
-}*/
-
-int GeoIP_cleanup(void)
-{
-	int i, result = 0;
-	if (GeoIPDBFileName) {
-
-		for (i = 0; i < NUM_DB_TYPES; i++) {
-			if (GeoIPDBFileName[i]) free(GeoIPDBFileName[i]);
-		}
-
-		free(GeoIPDBFileName);
-		GeoIPDBFileName = NULL;
-		result = 1;
-	}
-
-	return result;
-}
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.h b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.h
deleted file mode 100644
index c1a2a470..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* GeoIP.h
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef GEOIP_H
-#define GEOIP_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <sys/types.h>
-#if !defined(_WIN32)
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#else /* !defined(_WIN32) */ 
-#include <winsock2.h> 
-#include <ws2tcpip.h> 
-#include <wspiapi.h>
-#include <windows.h> 
-#define snprintf _snprintf 
-#define FILETIME_TO_USEC(ft) (((unsigned __int64) ft.dwHighDateTime << 32 | ft.dwLowDateTime) / 10) 
-#endif /* !defined(_WIN32) */ 
- 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h> /* for fstat */
-#include <sys/stat.h>	/* for fstat */
-
-#define SEGMENT_RECORD_LENGTH 3
-#define LARGE_SEGMENT_RECORD_LENGTH 4
-#define STANDARD_RECORD_LENGTH 3
-#define ORG_RECORD_LENGTH 4
-#define MAX_RECORD_LENGTH 4
-#define NUM_DB_TYPES (33+1)
-
-// TODO
-#ifdef _WIN32
-#include <io.h>
-#include <stdio.h>
-#define ssize_t int
-static int pread(unsigned int fd, char *buf, size_t count, int offset);
-#endif
-
-/* 128 bit address in network order */
-typedef struct in6_addr geoipv6_t;
- 
-#define GEOIP_CHKBIT_V6(bit,ptr) (ptr[((127UL - bit) >> 3)] & (1UL << (~(127 - bit) & 7)))
-
-typedef struct GeoIPTag {
-  FILE *GeoIPDatabase;
-  char *file_path;
-	unsigned char *cache;
-	unsigned char *index_cache;
-	unsigned int *databaseSegments;
-	char databaseType;
-	time_t mtime;
-	int flags;
-	off_t	size;
-	char record_length;
-	int charset; /* 0 iso-8859-1 1 utf8 */
-	int record_iter; /* used in GeoIP_next_record */
-	int netmask; /* netmask of last lookup - set using depth in _GeoIP_seek_record */
-	time_t last_mtime_check;
-        off_t dyn_seg_size; /* currently only used by the cityconfidence database */
-        unsigned int ext_flags; /* bit 0 teredo support enabled */
-} GeoIP;
-
-
-typedef enum {
-  GEOIP_TEREDO_BIT = 0
-} GeoIPExtFlags;
-
-typedef enum {
-	GEOIP_CHARSET_ISO_8859_1 = 0,
-	GEOIP_CHARSET_UTF8       = 1
-} GeoIPCharset;
-
-typedef struct GeoIPRegionTag {
-	char country_code[3];
-	char region[3];
-} GeoIPRegion;
-
-typedef enum {
-	GEOIP_STANDARD = 0,
-	GEOIP_MEMORY_CACHE = 1,
-	GEOIP_CHECK_CACHE = 2,
-	GEOIP_INDEX_CACHE = 4,
-	GEOIP_MMAP_CACHE = 8,
-} GeoIPOptions;
-
-typedef enum {
-	GEOIP_COUNTRY_EDITION     = 1,
-	GEOIP_REGION_EDITION_REV0 = 7,
-	GEOIP_CITY_EDITION_REV0   = 6,
-	GEOIP_ORG_EDITION         = 5,
-	GEOIP_ISP_EDITION         = 4,
-	GEOIP_CITY_EDITION_REV1   = 2,
-	GEOIP_REGION_EDITION_REV1 = 3,
-	GEOIP_PROXY_EDITION       = 8,
-	GEOIP_ASNUM_EDITION       = 9,
-	GEOIP_NETSPEED_EDITION    = 10,
-	GEOIP_DOMAIN_EDITION      = 11,
-        GEOIP_COUNTRY_EDITION_V6  = 12,
-        GEOIP_LOCATIONA_EDITION   = 13,
-        GEOIP_ACCURACYRADIUS_EDITION = 14,
-        GEOIP_CITYCONFIDENCE_EDITION = 15,
-        GEOIP_CITYCONFIDENCEDIST_EDITION   = 16,
-        GEOIP_LARGE_COUNTRY_EDITION = 17,
-        GEOIP_LARGE_COUNTRY_EDITION_V6 = 18,
-        GEOIP_CITYCONFIDENCEDIST_ISP_ORG_EDITION = 19, /* unsued, but gaps are not allowed */
-        GEOIP_CCM_COUNTRY_EDITION =20,  /* unsued, but gaps are not allowed */
-        GEOIP_ASNUM_EDITION_V6         = 21,
-        GEOIP_ISP_EDITION_V6           = 22,
-        GEOIP_ORG_EDITION_V6           = 23,
-        GEOIP_DOMAIN_EDITION_V6        = 24,
-        GEOIP_LOCATIONA_EDITION_V6     = 25,
-        GEOIP_REGISTRAR_EDITION        = 26,
-        GEOIP_REGISTRAR_EDITION_V6     = 27,
-        GEOIP_USERTYPE_EDITION         = 28,
-        GEOIP_USERTYPE_EDITION_V6      = 29,
-        GEOIP_CITY_EDITION_REV1_V6     = 30,
-        GEOIP_CITY_EDITION_REV0_V6     = 31,
-        GEOIP_NETSPEED_EDITION_REV1    = 32,
-        GEOIP_NETSPEED_EDITION_REV1_V6 = 33
-} GeoIPDBTypes;
-
-typedef enum {
-	GEOIP_ANON_PROXY = 1,
-	GEOIP_HTTP_X_FORWARDED_FOR_PROXY = 2,
-	GEOIP_HTTP_CLIENT_IP_PROXY = 3,
-} GeoIPProxyTypes;
-
-typedef enum {
-	GEOIP_UNKNOWN_SPEED = 0,
-	GEOIP_DIALUP_SPEED = 1,
-	GEOIP_CABLEDSL_SPEED = 2,
-	GEOIP_CORPORATE_SPEED = 3,
-} GeoIPNetspeedValues;
-
-extern char **GeoIPDBFileName;
-extern const char * GeoIPDBDescription[NUM_DB_TYPES];
-extern const char *GeoIPCountryDBFileName;
-extern const char *GeoIPRegionDBFileName;
-extern const char *GeoIPCityDBFileName;
-extern const char *GeoIPOrgDBFileName;
-extern const char *GeoIPISPDBFileName;
-extern const char *GeoIPLocationADBFileName;
-extern const char *GeoIPAccuracyRadiusFileName;
-extern const char *GeoIPCityConfidenceFileName;
-
-/* Warning: do not use those arrays as doing so may break your
- * program with newer GeoIP versions */
-extern const char GeoIP_country_code[254][3];
-extern const char GeoIP_country_code3[254][4];
-extern const char * GeoIP_country_name[254];
-extern const char * GeoIP_utf8_country_name[254];
-extern const char GeoIP_country_continent[254][3];
-
-#ifdef DLL
-#define GEOIP_API __declspec(dllexport)
-#else
-#define GEOIP_API
-#endif  /* DLL */
-
-GEOIP_API void GeoIP_setup_custom_directory(char *dir);
-GEOIP_API GeoIP* GeoIP_open_type (int type, int flags);
-GEOIP_API GeoIP* GeoIP_new(int flags);
-GEOIP_API GeoIP* GeoIP_open(const char * filename, int flags);
-GEOIP_API int GeoIP_db_avail(int type);
-GEOIP_API void GeoIP_delete(GeoIP* gi);
-GEOIP_API const char *GeoIP_country_code_by_addr (GeoIP* gi, const char *addr);
-GEOIP_API const char *GeoIP_country_code_by_name (GeoIP* gi, const char *host);
-GEOIP_API const char *GeoIP_country_code3_by_addr (GeoIP* gi, const char *addr);
-GEOIP_API const char *GeoIP_country_code3_by_name (GeoIP* gi, const char *host);
-GEOIP_API const char *GeoIP_country_name_by_addr (GeoIP* gi, const char *addr);
-GEOIP_API const char *GeoIP_country_name_by_name (GeoIP* gi, const char *host);
-GEOIP_API const char *GeoIP_country_name_by_ipnum (GeoIP* gi, unsigned long ipnum);
-GEOIP_API const char *GeoIP_country_code_by_ipnum (GeoIP* gi, unsigned long ipnum);
-GEOIP_API const char *GeoIP_country_code3_by_ipnum (GeoIP* gi, unsigned long ipnum);
-
-/* */
-GEOIP_API const char *GeoIP_country_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-GEOIP_API const char *GeoIP_country_code_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-GEOIP_API const char *GeoIP_country_code3_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-
-GEOIP_API const char *GeoIP_country_code_by_addr_v6 (GeoIP* gi, const char *addr);
-GEOIP_API const char *GeoIP_country_code_by_name_v6 (GeoIP* gi, const char *host);
-GEOIP_API const char *GeoIP_country_code3_by_addr_v6 (GeoIP* gi, const char *addr);
-GEOIP_API const char *GeoIP_country_code3_by_name_v6 (GeoIP* gi, const char *host);
-GEOIP_API const char *GeoIP_country_name_by_addr_v6 (GeoIP* gi, const char *addr);
-GEOIP_API const char *GeoIP_country_name_by_name_v6 (GeoIP* gi, const char *host);
-
-/* Deprecated - for backwards compatibility only */
-GEOIP_API int GeoIP_country_id_by_addr (GeoIP* gi, const char *addr);
-GEOIP_API int GeoIP_country_id_by_name (GeoIP* gi, const char *host);
-GEOIP_API char *GeoIP_org_by_addr (GeoIP* gi, const char *addr);
-GEOIP_API char *GeoIP_org_by_name (GeoIP* gi, const char *host);
-GEOIP_API char *GeoIP_org_by_ipnum (GeoIP* gi, unsigned long ipnum);
-
-GEOIP_API char *GeoIP_org_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-GEOIP_API char *GeoIP_org_by_addr_v6 (GeoIP* gi, const char *addr);
-GEOIP_API char *GeoIP_org_by_name_v6 (GeoIP* gi, const char *name);
-
-/* End deprecated */
-
-GEOIP_API int GeoIP_id_by_addr (GeoIP* gi, const char *addr);
-GEOIP_API int GeoIP_id_by_name (GeoIP* gi, const char *host);
-GEOIP_API int GeoIP_id_by_ipnum (GeoIP* gi, unsigned long ipnum);
-
-GEOIP_API int GeoIP_id_by_addr_v6 (GeoIP* gi, const char *addr);
-GEOIP_API int GeoIP_id_by_name_v6 (GeoIP* gi, const char *host);
-GEOIP_API int GeoIP_id_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-
-GEOIP_API GeoIPRegion * GeoIP_region_by_addr (GeoIP* gi, const char *addr);
-GEOIP_API GeoIPRegion * GeoIP_region_by_name (GeoIP* gi, const char *host);
-GEOIP_API GeoIPRegion * GeoIP_region_by_ipnum (GeoIP *gi, unsigned long ipnum);
-
-GEOIP_API GeoIPRegion * GeoIP_region_by_addr_v6 (GeoIP* gi, const char *addr);
-GEOIP_API GeoIPRegion * GeoIP_region_by_name_v6 (GeoIP* gi, const char *host);
-GEOIP_API GeoIPRegion * GeoIP_region_by_ipnum_v6 (GeoIP *gi, geoipv6_t ipnum);
-
-/* Warning - don't call this after GeoIP_assign_region_by_inetaddr calls */
-GEOIP_API void GeoIPRegion_delete (GeoIPRegion *gir);
-
-GEOIP_API void GeoIP_assign_region_by_inetaddr(GeoIP* gi, unsigned long inetaddr, GeoIPRegion *gir);
-
-GEOIP_API void GeoIP_assign_region_by_inetaddr_v6(GeoIP* gi, geoipv6_t inetaddr, GeoIPRegion *gir);
-
-/* Used to query GeoIP Organization, ISP and AS Number databases */
-GEOIP_API char *GeoIP_name_by_ipnum (GeoIP* gi, unsigned long ipnum);
-GEOIP_API char *GeoIP_name_by_addr (GeoIP* gi, const char *addr);
-GEOIP_API char *GeoIP_name_by_name (GeoIP* gi, const char *host);
-
-GEOIP_API char *GeoIP_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-GEOIP_API char *GeoIP_name_by_addr_v6 (GeoIP* gi, const char *addr);
-GEOIP_API char *GeoIP_name_by_name_v6 (GeoIP* gi, const char *name);
-
-/** return two letter country code */
-GEOIP_API const char* GeoIP_code_by_id(int id);
-
-/** return three letter country code */
-GEOIP_API const char* GeoIP_code3_by_id(int id);
-
-/** return full name of country in utf8 or iso-8859-1 */
-GEOIP_API const char* GeoIP_country_name_by_id(GeoIP* gi, int id);
-
-/** return full name of country */
-GEOIP_API const char* GeoIP_name_by_id(int id);
-
-/** return continent of country */
-GEOIP_API const char* GeoIP_continent_by_id(int id);
-
-/** return id by country code **/
-GEOIP_API int GeoIP_id_by_code(const char *country);
-
-/** return return number of known countries */
-GEOIP_API unsigned GeoIP_num_countries(void);
-
-GEOIP_API char *GeoIP_database_info (GeoIP* gi);
-GEOIP_API unsigned char GeoIP_database_edition (GeoIP* gi);
-
-GEOIP_API int GeoIP_charset (GeoIP* gi);
-GEOIP_API int GeoIP_set_charset (GeoIP* gi, int charset);
-GEOIP_API int GeoIP_enable_teredo (GeoIP* gi, int true_false );
-GEOIP_API int GeoIP_teredo (GeoIP* gi );
-
-GEOIP_API int GeoIP_last_netmask (GeoIP* gi);
-GEOIP_API char **GeoIP_range_by_ip (GeoIP* gi, const char *addr);
-GEOIP_API void GeoIP_range_by_ip_delete(char **ptr);
-
-/* Convert region code to region name */
-GEOIP_API const char * GeoIP_region_name_by_code(const char *country_code, const char *region_code);
-
-/* Get timezone from country and region code */
-GEOIP_API const char * GeoIP_time_zone_by_country_and_region(const char *country_code, const char *region_code);
-
-/* some v4 helper functions as of 1.4.7 exported to the public API */
-GEOIP_API unsigned long GeoIP_addr_to_num(const char *addr);
-GEOIP_API char *        GeoIP_num_to_addr(unsigned long ipnum);
-
-/* Internal function -- convert iso to utf8; return a malloced utf8 string. */
-char * _GeoIP_iso_8859_1__utf8(const char * iso);
-
-/* Cleans up memory used to hold file name paths. Returns 1 if successful; otherwise 0. 
- * */
-GEOIP_API int GeoIP_cleanup(void);
-
-/* Returns the library version in use. Helpful if your loading dynamically. */
-GEOIP_API const char * GeoIP_lib_version(void);
-
-#
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GEOIP_H */
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.c b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.c
deleted file mode 100644
index 8503fcb2..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.c
+++ /dev/null
@@ -1,393 +0,0 @@
-
-/*
- * GeoIPCity.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation; either version 2.1 of the License, or (at your
- * option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
- * License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include <GeoIP.h>
-#include <GeoIP_internal.h>
-#include <GeoIPCity.h>
-#if !defined(_WIN32)
-#include <unistd.h>
-#include <netdb.h>
-#include <netinet/in.h>	/* For ntohl */
-#else
-#include <windows.h>
-#include <winsock.h>
-#endif
-#include <sys/types.h>	/* For uint32_t */
-#ifdef HAVE_STDINT_H
-#include <stdint.h>	/* For uint32_t */
-#endif
-
-static
-const int       FULL_RECORD_LENGTH = 50;
-
-static const int CITYCONFIDENCE_FIXED_RECORD = 4;
-static const int CITYCONFIDENCEDIST_FIXED_RECORD = 6;
-
-
-static
-GeoIPRecord    *
-_extract_record(GeoIP * gi, unsigned int seek_record, int *next_record_ptr)
-{
-  int             record_pointer;
-  unsigned char  *record_buf = NULL;
-  unsigned char  *begin_record_buf = NULL;
-  GeoIPRecord    *record;
-  int             str_length = 0;
-  int             j;
-  double          latitude = 0, longitude = 0;
-  int             metroarea_combo = 0;
-  int             bytes_read = 0;
-  if (seek_record == gi->databaseSegments[0])
-    return NULL;
-
-  record = malloc(sizeof(GeoIPRecord));
-  memset(record, 0, sizeof(GeoIPRecord));
-  record->charset = gi->charset;
-
-  if (gi->databaseType == GEOIP_CITYCONFIDENCE_EDITION
-      || gi->databaseType == GEOIP_CITYCONFIDENCEDIST_EDITION) {
-
-    int             fixed_rec_size = gi->record_length +
-    ((gi->databaseType == GEOIP_CITYCONFIDENCE_EDITION)
-     ? CITYCONFIDENCE_FIXED_RECORD
-     : CITYCONFIDENCEDIST_FIXED_RECORD);
-
-    //allocate max rec size, even for CITYCONFIDENCE_FIXED_RECORD
-      //+4 is the max_record_length
-	// TODO
-	unsigned char   tmp_fixed_record[6/*CITYCONFIDENCEDIST_FIXED_RECORD*/ + 4];
-    int             dseg = gi->databaseSegments[0] * gi->record_length * 2 + gi->record_length;
-//    int aligned_dseg = dseg ;
-
-    int             offset = seek_record - gi->databaseSegments[0] - 1;	/* -1 b/c zero is not
-									 * found. but the array
-									 * start with 0 */
-    record_pointer = offset * fixed_rec_size + dseg + gi->dyn_seg_size;
-    if (gi->cache == NULL) {
-
-	/* read from disk */
-      bytes_read = pread(fileno(gi->GeoIPDatabase), tmp_fixed_record, fixed_rec_size, record_pointer);
-
-      if (bytes_read != fixed_rec_size)
-	return NULL;
-
-      record->country_conf = tmp_fixed_record[0];
-      record->region_conf = tmp_fixed_record[1];
-      record->city_conf = tmp_fixed_record[2];
-      record->postal_conf = tmp_fixed_record[3];
-
-      record->accuracy_radius =
-	gi->databaseType == GEOIP_CITYCONFIDENCEDIST_EDITION
-	? ((tmp_fixed_record[4] + (tmp_fixed_record[5] << 8)) & 0x3ff) : 0x3ff;
-
-      int             t = fixed_rec_size - gi->record_length;
-      
-    record_pointer = dseg + tmp_fixed_record[t] +
-	(tmp_fixed_record[t + 1] << 8) + (tmp_fixed_record[t + 2] << 16) ;
-
-    if (gi->record_length == 4)
-	record_pointer += (tmp_fixed_record[t + 3] << 24);
-
-      begin_record_buf = record_buf = malloc(sizeof(char) * FULL_RECORD_LENGTH);
-
-      bytes_read = pread(fileno(gi->GeoIPDatabase), record_buf, FULL_RECORD_LENGTH, record_pointer);
-      
-      if (bytes_read == 0) {
-	/* eof or other error */
-	free(begin_record_buf);
-	free(record);
-	return NULL;
-      }
-
-    }
-    else {
-      record_buf = gi->cache + (long) record_pointer;
-
-      record->country_conf = record_buf[0];
-      record->region_conf = record_buf[1];
-      record->city_conf = record_buf[2];
-      record->postal_conf = record_buf[3];
-
-      record->accuracy_radius =
-	gi->databaseType == GEOIP_CITYCONFIDENCEDIST_EDITION
-	? ((record_buf[4] + (record_buf[5] << 8)) & 0x3ff) : 0x3ff;
-
-      int             t = fixed_rec_size - gi->record_length;
-
-        record_pointer = dseg + record_buf[t] +
-	(record_buf[t + 1] << 8) + (record_buf[t + 2] << 16) ;
-     
-     if (gi->record_length == 4)
-	record_pointer += (record_buf[t + 3] << 24);
-
-      record_buf = gi->cache + (long) record_pointer;
-    }
-
-  }			/* other city records */
-  else {
-
-    record->country_conf = GEOIP_UNKNOWN_CONF;
-    record->region_conf = GEOIP_UNKNOWN_CONF;
-    record->city_conf = GEOIP_UNKNOWN_CONF;
-    record->postal_conf = GEOIP_UNKNOWN_CONF;
-    record->accuracy_radius = GEOIP_UNKNOWN_ACCURACY_RADIUS;
-
-    record_pointer = seek_record + (2 * gi->record_length - 1) * gi->databaseSegments[0];
-
-    if (gi->cache == NULL) {
-      begin_record_buf = record_buf = malloc(sizeof(char) * FULL_RECORD_LENGTH);
-        bytes_read = pread(fileno(gi->GeoIPDatabase), record_buf, FULL_RECORD_LENGTH, record_pointer);
-      if (bytes_read == 0) {
-        /* eof or other error */
-	free(begin_record_buf);
-        free(record);
-	return NULL;
-      }
-    }
-    else {
-      record_buf = gi->cache + (long) record_pointer;
-    }
-  }
-
-  /* get country */
-  record->continent_code = (char *) GeoIP_country_continent[record_buf[0]];
-  record->country_code = (char *) GeoIP_country_code[record_buf[0]];
-  record->country_code3 = (char *) GeoIP_country_code3[record_buf[0]];
-  record->country_name = (char *) GeoIP_country_name_by_id(gi, record_buf[0]);
-  record_buf++;
-
-  /* get region */
-  while (record_buf[str_length] != '\0')
-    str_length++;
-  if (str_length > 0) {
-    record->region = malloc(str_length + 1);
-    strncpy(record->region, (char *) record_buf, str_length + 1);
-  }
-  record_buf += str_length + 1;
-  str_length = 0;
-
-  /* get city */
-  while (record_buf[str_length] != '\0')
-    str_length++;
-  if (str_length > 0) {
-    if (gi->charset == GEOIP_CHARSET_UTF8) {
-      record->city = _GeoIP_iso_8859_1__utf8((const char *) record_buf);
-    }
-    else {
-      record->city = malloc(str_length + 1);
-      strncpy(record->city, (const char *) record_buf, str_length + 1);
-    }
-  }
-  record_buf += (str_length + 1);
-  str_length = 0;
-
-  /* get postal code */
-  while (record_buf[str_length] != '\0')
-    str_length++;
-  if (str_length > 0) {
-    record->postal_code = malloc(str_length + 1);
-    strncpy(record->postal_code, (char *) record_buf, str_length + 1);
-  }
-  record_buf += (str_length + 1);
-
-  /* get latitude */
-  for (j = 0; j < 3; ++j)
-    latitude += (record_buf[j] << (j * 8));
-  record->latitude = latitude / 10000 - 180;
-  record_buf += 3;
-
-  /* get longitude */
-  for (j = 0; j < 3; ++j)
-    longitude += (record_buf[j] << (j * 8));
-  record->longitude = longitude / 10000 - 180;
-
-  /*
-   * get area code and metro code for post April 2002 databases and for US
-   * locations
-   */
-  if (GEOIP_CITY_EDITION_REV1 == gi->databaseType
-      || GEOIP_CITYCONFIDENCE_EDITION == gi->databaseType) {
-    if (!strcmp(record->country_code, "US")) {
-      record_buf += 3;
-      for (j = 0; j < 3; ++j)
-	metroarea_combo += (record_buf[j] << (j * 8));
-      record->metro_code = metroarea_combo / 1000;
-      record->area_code = metroarea_combo % 1000;
-    }
-  }
-
-  if (gi->cache == NULL)
-    free(begin_record_buf);
-
-  /* Used for GeoIP_next_record */
-  if (next_record_ptr != NULL)
-    *next_record_ptr = seek_record + record_buf - begin_record_buf + 3;
-
-  return record;
-}
-
-static
-GeoIPRecord    *
-_get_record(GeoIP * gi, unsigned long ipnum)
-{
-  unsigned int    seek_record;
-  if (gi->databaseType != GEOIP_CITY_EDITION_REV0
-      && gi->databaseType != GEOIP_CITY_EDITION_REV1
-      && gi->databaseType != GEOIP_CITYCONFIDENCE_EDITION
-      && gi->databaseType != GEOIP_CITYCONFIDENCEDIST_EDITION) {
-    printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int) gi->databaseType], GeoIPDBDescription[GEOIP_CITY_EDITION_REV1]);
-    return 0;
-  }
-
-  seek_record = _GeoIP_seek_record(gi, ipnum);
-  return _extract_record(gi, seek_record, NULL);
-}
-
-static
-GeoIPRecord    *
-_get_record_v6(GeoIP * gi, geoipv6_t ipnum)
-{
-  unsigned int    seek_record;
-  if (gi->databaseType != GEOIP_CITY_EDITION_REV0_V6 &&
-      gi->databaseType != GEOIP_CITY_EDITION_REV1_V6) {
-    printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int) gi->databaseType], GeoIPDBDescription[GEOIP_CITY_EDITION_REV1_V6]);
-    return 0;
-  }
-
-  seek_record = _GeoIP_seek_record_v6(gi, ipnum);
-  return _extract_record(gi, seek_record, NULL);
-}
-
-
-
-GeoIPRecord    *
-GeoIP_record_by_ipnum(GeoIP * gi, unsigned long ipnum)
-{
-  return _get_record(gi, ipnum);
-}
-
-GeoIPRecord    *
-GeoIP_record_by_ipnum_v6(GeoIP * gi, geoipv6_t ipnum)
-{
-  return _get_record_v6(gi, ipnum);
-}
-
-GeoIPRecord    *
-GeoIP_record_by_addr(GeoIP * gi, const char *addr)
-{
-  unsigned long   ipnum;
-  if (addr == NULL) {
-    return 0;
-  }
-  ipnum = GeoIP_addr_to_num(addr);
-  return _get_record(gi, ipnum);
-}
-
-GeoIPRecord    *
-GeoIP_record_by_addr_v6(GeoIP * gi, const char *addr)
-{
-  geoipv6_t       ipnum;
-  if (addr == NULL) {
-    return 0;
-  }
-  ipnum = _GeoIP_addr_to_num_v6(addr);
-  return _get_record_v6(gi, ipnum);
-}
-
-GeoIPRecord    *
-GeoIP_record_by_name(GeoIP * gi, const char *name)
-{
-  unsigned long   ipnum;
-  if (name == NULL) {
-    return 0;
-  }
-  ipnum = _GeoIP_lookupaddress(name);
-  return _get_record(gi, ipnum);
-}
-
-GeoIPRecord    *
-GeoIP_record_by_name_v6(GeoIP * gi, const char *name)
-{
-  geoipv6_t       ipnum;
-  if (name == NULL) {
-    return 0;
-  }
-  ipnum = _GeoIP_lookupaddress_v6(name);
-  return _get_record_v6(gi, ipnum);
-}
-
-int
-GeoIP_record_id_by_addr(GeoIP * gi, const char *addr)
-{
-  unsigned long   ipnum;
-  if (gi->databaseType != GEOIP_CITY_EDITION_REV0 &&
-      gi->databaseType != GEOIP_CITY_EDITION_REV1) {
-    printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int) gi->databaseType], GeoIPDBDescription[GEOIP_CITY_EDITION_REV1]);
-    return 0;
-  }
-  if (addr == NULL) {
-    return 0;
-  }
-  ipnum = GeoIP_addr_to_num(addr);
-  return _GeoIP_seek_record(gi, ipnum);
-}
-
-int
-GeoIP_record_id_by_addr_v6(GeoIP * gi, const char *addr)
-{
-  geoipv6_t       ipnum;
-  if (gi->databaseType != GEOIP_CITY_EDITION_REV0_V6 &&
-      gi->databaseType != GEOIP_CITY_EDITION_REV1_V6) {
-    printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int) gi->databaseType], GeoIPDBDescription[GEOIP_CITY_EDITION_REV1]);
-    return 0;
-  }
-  if (addr == NULL) {
-    return 0;
-  }
-  ipnum = _GeoIP_addr_to_num_v6(addr);
-  return _GeoIP_seek_record_v6(gi, ipnum);
-}
-
-int
-GeoIP_init_record_iter(GeoIP * gi)
-{
-  return gi->databaseSegments[0] + 1;
-}
-
-int
-GeoIP_next_record(GeoIP * gi, GeoIPRecord ** gir, int *record_iter)
-{
-  if (gi->cache != NULL) {
-    printf("GeoIP_next_record not supported in memory cache mode\n");
-    return 1;
-  }
-  *gir = _extract_record(gi, *record_iter, record_iter);
-  return 0;
-}
-
-void
-GeoIPRecord_delete(GeoIPRecord * gir)
-{
-  free(gir->region);
-  free(gir->city);
-  free(gir->postal_code);
-  free(gir);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.h b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.h
deleted file mode 100644
index f6f8fc80..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPCity.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* GeoIPCity.h
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef GEOIPCITY_H
-#define GEOIPCITY_H
-
-#include <GeoIP.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define  GEOIP_UNKNOWN_CONF  ( 0x7f )
-#define  GEOIP_UNKNOWN_ACCURACY_RADIUS  ( 0x3ff )
-
-typedef struct GeoIPRecordTag {
-	char *country_code;
-	char *country_code3;
-	char *country_name;
-	char *region;
-	char *city;
-	char *postal_code;
-	float latitude;
-	float longitude;
-	union {
-	  int metro_code; /* metro_code is a alias for dma_code */
-	  int dma_code;
-        };
-	int area_code;
-	int charset;
-	char *continent_code;
-        /* confidence factor for Country/Region/City/Postal */
-        unsigned char country_conf, region_conf, city_conf, postal_conf;
-        int accuracy_radius;
-} GeoIPRecord;
-
-GeoIPRecord * GeoIP_record_by_ipnum (GeoIP* gi, unsigned long ipnum);
-GeoIPRecord * GeoIP_record_by_addr (GeoIP* gi, const char *addr);
-GeoIPRecord * GeoIP_record_by_name (GeoIP* gi, const char *host);
-
-GeoIPRecord * GeoIP_record_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
-GeoIPRecord * GeoIP_record_by_addr_v6 (GeoIP* gi, const char *addr);
-GeoIPRecord * GeoIP_record_by_name_v6 (GeoIP* gi, const char *host);
-
-int GeoIP_record_id_by_addr (GeoIP* gi, const char *addr);
-int GeoIP_record_id_by_addr_v6 (GeoIP* gi, const char *addr);
-
-int GeoIP_init_record_iter (GeoIP* gi);
-/* returns 0 on success, 1 on failure */
-int GeoIP_next_record (GeoIP* gi, GeoIPRecord **gir, int *record_iter);
-
-void GeoIPRecord_delete (GeoIPRecord *gir);
-
-/* NULL on failure otherwise a malloced string in utf8 */
-/* char * GeoIP_iso_8859_1__utf8(const char *); */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GEOIPCITY_H */
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.c b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.c
deleted file mode 100644
index 008c9d93..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.c
+++ /dev/null
@@ -1,975 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* GeoIPUpdate.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "GeoIPCity.h"
-#include "GeoIP.h"
-#include "GeoIPUpdate.h"
-#include "GeoIP_internal.h"
-
-#include "global.h"
-#include "md5.h"
-#include <sys/types.h>
-#if !defined(_WIN32)
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#else
-#include <windows.h>
-//#include <winsock.h>
-#include <winsock2.h>
-#endif
-#include <zlib.h>
-#include <time.h>
-#include <stdio.h>
-//#include <unistd.h>
-
-
-#define BLOCK_SIZE 1024
-
-/* Update DB Host & HTTP GET Request formats:
- * ------------------------------------------
- * GET must support an optional HTTP Proxy.
- */
-const char *GeoIPUpdateHost = "updates.maxmind.com";
-/* This is the direct, or proxy port number. */
-static int GeoIPHTTPPort = 80;
-/* License-only format (OLD) */
-const char *GeoIPHTTPRequest = "GET %s%s/app/update?license_key=%s&md5=%s HTTP/1.0\nHost: updates.maxmind.com\n\n";
-/* General DB Types formats */
-const char *GeoIPHTTPRequestFilename = "GET %s%s/app/update_getfilename?product_id=%s HTTP/1.0\nHost: %s\n\n";
-const char *GeoIPHTTPRequestClientIP = "GET %s%s/app/update_getipaddr HTTP/1.0\nHost: %s\n\n";
-const char *GeoIPHTTPRequestMD5 = "GET %s%s/app/update_secure?db_md5=%s&challenge_md5=%s&user_id=%s&edition_id=%s HTTP/1.0\nHost: updates.maxmind.com\n\n";
-
-/* messages */
-const char *NoCurrentDB = "%s can't be opened, proceeding to download database\n";
-const char *MD5Info = "MD5 Digest of installed database is %s\n";
-const char *SavingGzip = "Saving gzip file to %s ... ";
-const char *WritingFile = "Writing uncompressed data to %s ...";
-
-const char * GeoIP_get_error_message(int i) {
-  switch (i) {
-  case GEOIP_NO_NEW_UPDATES:
-    return "no new updates";
-  case GEOIP_SUCCESS:
-    return "Success";
-  case GEOIP_LICENSE_KEY_INVALID_ERR:
-    return "License Key Invalid";
-  case GEOIP_DNS_ERR:
-    return "Unable to resolve hostname";
-  case GEOIP_NON_IPV4_ERR:
-    return "Non - IPv4 address";
-  case GEOIP_SOCKET_OPEN_ERR:
-    return "Error opening socket";
-  case GEOIP_CONNECTION_ERR:
-    return "Unable to connect";
-  case GEOIP_GZIP_IO_ERR:
-    return "Unable to write GeoIP.dat.gz file";
-  case GEOIP_TEST_IO_ERR:
-    return "Unable to write GeoIP.dat.test file";
-  case GEOIP_GZIP_READ_ERR:
-    return "Unable to read gzip data";
-  case GEOIP_OUT_OF_MEMORY_ERR:
-    return "Out of memory error";
-  case GEOIP_SOCKET_READ_ERR:
-    return "Error reading from socket, see errno";
-  case GEOIP_SANITY_OPEN_ERR:
-    return "Sanity check GeoIP_open error";
-  case GEOIP_SANITY_INFO_FAIL:
-    return "Sanity check database_info string failed";
-  case GEOIP_SANITY_LOOKUP_FAIL:
-    return "Sanity check ip address lookup failed";
-  case GEOIP_RENAME_ERR:
-    return "Rename error while installing db, check errno";
-  case GEOIP_USER_ID_INVALID_ERR:
-    return "Invalid userID";
-  case GEOIP_PRODUCT_ID_INVALID_ERR:
-    return "Invalid product ID or subscription expired";
-  case GEOIP_INVALID_SERVER_RESPONSE:
-    return "Server returned something unexpected";
-  default:
-    return "no error";
-  }  
-}
-int GeoIP_fprintf(int (*f)(FILE *, char *),FILE *fp, const char *str, ...) {
-  va_list ap;
-  int rc;
-  char * f_str;
-  int silence;
-
-  if ( f == NULL )
-    return 0;
-  va_start(ap, str);
-#if defined(HAVE_VASPRINTF)
-  silence = vasprintf(&f_str, str, ap);
-#elif defined (HAVE_VSNPRINTF)
-  f_str = malloc(4096);
-  if ( f_str )
-    silence = vsnprintf(f_str, 4096, str, ap);
-#else
-  f_str = malloc(4096);
-  if ( f_str )
-    silence = vsprintf(f_str, str, ap);
-#endif
-  va_end(ap);
-  if (  f_str == NULL )
-    return -1;
-  rc = (*f)(fp, f_str);
-  free(f_str);
-  return(rc);
-}
-
-void GeoIP_printf(void (*f)(char *), const char *str,...) {
-  va_list params;
-  char * f_str;
-  int silence;
-  if (f == NULL)
-    return;
-  va_start(params, str);
-#if defined(HAVE_VASPRINTF)
-  silence = vasprintf(&f_str, str, params);
-#elif defined (HAVE_VSNPRINTF)
-  f_str = malloc(4096);
-  if ( f_str )
-    silence = vsnprintf(f_str, 4096, str, params);
-#else
-  f_str = malloc(4096);
-  if ( f_str )
-    silence = vsprintf(f_str, str, params);
-#endif
-  va_end(params);
-  if ( f_str == NULL )
-    return;
-  (*f)(f_str);
-  free(f_str);
-}
-
-/* Support HTTP Proxy Host
- * --------------------------------------------------
- * Use typical OS support for the optional HTTP Proxy.
- *
- * Proxy adds http://{real-hostname} to URI format strings:
- * sprintf("GET %s%s/ HTTP/1.0\r\n",GeoIPProxyHTTP,GeoIPProxiedHost, ...);
- */
-
-/* The Protocol is usually "" OR "http://" with a proxy. */
-static char *GeoIPProxyHTTP = "";
-/* GeoIP Hostname where proxy forwards requests. */
-static char *GeoIPProxiedHost = "";
-
-/* Read http_proxy env. variable & parse it.
- * -----------------------------------------
- * Allow only these formats:
- * "http://server.com", "http://server.com:8080"
- * OR
- * "server.com", "server.com:8080"
- *
- * A "user:password@" part will break this.
- */
-short int parse_http_proxy(char **proxy_host, int *port) {
-	char * http_proxy;
-	char * port_value;
-
-	if ((http_proxy = getenv("http_proxy"))) {
-
-		if (! strncmp("http://", http_proxy, 7)) http_proxy += 7;
-
-		*proxy_host = strdup(http_proxy);
-		if ( *proxy_host == NULL )
-			return 0; /* let the other functions deal with the memory error */
-
-		if ((port_value = strchr(*proxy_host, ':'))) {
-			*port_value++ = '\0';
-			*port = atoi(port_value);
-		}
-		else {
-			*port = 80;
-		}
-		return(1);
-	}
-	else {
-		return(0);
-	}
-}
-
-/* Get the GeoIP host or the current HTTP Proxy host. */
-struct hostent *GeoIP_get_host_or_proxy (void) {
-	char * hostname = (char *) GeoIPUpdateHost;
-	char * proxy_host;
-	int proxy_port;
-
-	/* Set Proxy from OS: Unix/Linux */
-	if (parse_http_proxy(&proxy_host,&proxy_port)) {
-		hostname = proxy_host;
-		GeoIPProxyHTTP = "http://";
-		GeoIPProxiedHost = (char *) GeoIPUpdateHost;
-		GeoIPHTTPPort = proxy_port;
-	}
-
-	/* Resolve DNS host entry. */
-	return(gethostbyname(hostname));
-}
-
-short int GeoIP_update_database (char * license_key, int verbose, void (*f)( char * )) {
-	struct hostent *hostlist;
-	int sock;
-	char * buf;
-	struct sockaddr_in sa;
-	int offset = 0, err;
-	char * request_uri;
-	char * compr;
-	unsigned long comprLen;
-	FILE *comp_fh, *cur_db_fh, *gi_fh;
-	gzFile gz_fh;
-	char * file_path_gz, * file_path_test;
-	MD5_CONTEXT context;
-	unsigned char buffer[1024], digest[16];
-	char hex_digest[33] = "00000000000000000000000000000000\0";
-	unsigned int i;
-	GeoIP * gi;
-	char * db_info;
-	char block[BLOCK_SIZE];
-	int block_size = BLOCK_SIZE;
-	size_t len;
-	size_t written;
-	_GeoIP_setup_dbfilename();
-
-	/* get MD5 of current GeoIP database file */
-	if ((cur_db_fh = fopen (GeoIPDBFileName[GEOIP_COUNTRY_EDITION], "rb")) == NULL) {
-    GeoIP_printf(f,"%s%s",  NoCurrentDB, GeoIPDBFileName[GEOIP_COUNTRY_EDITION]);
-	} else {
-		md5_init(&context);
-		while ((len = fread (buffer, 1, 1024, cur_db_fh)) > 0)
-			md5_write (&context, buffer, len);
-		md5_final (&context);
-		memcpy(digest,context.buf,16);
-		fclose (cur_db_fh);
-		for (i = 0; i < 16; i++) {
-			// "%02x" will write 3 chars
-			snprintf (&hex_digest[2*i], 3, "%02x", digest[i]);
-		}
-    GeoIP_printf(f, MD5Info, hex_digest);
-	}
-
-	hostlist = GeoIP_get_host_or_proxy();
-
-	if (hostlist == NULL)
-		return GEOIP_DNS_ERR;
-
-	if (hostlist->h_addrtype != AF_INET)
-		return GEOIP_NON_IPV4_ERR;
-
-	if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
-		return GEOIP_SOCKET_OPEN_ERR;
-	}
-
-	memset(&sa, 0, sizeof(struct sockaddr_in));
-	sa.sin_port = htons(GeoIPHTTPPort);
-	memcpy(&sa.sin_addr, hostlist->h_addr_list[0], hostlist->h_length);
-	sa.sin_family = AF_INET;
-
-	if (verbose == 1){
-		GeoIP_printf(f,"Connecting to MaxMind GeoIP Update server\n");
-		GeoIP_printf(f, "via Host or Proxy Server: %s:%d\n", hostlist->h_name, GeoIPHTTPPort);
-	}	
-
-	/* Download gzip file */
-	if (connect(sock, (struct sockaddr *)&sa, sizeof(struct sockaddr))< 0)
-		return GEOIP_CONNECTION_ERR;
-
-	request_uri = malloc(sizeof(char) * (strlen(license_key) + strlen(GeoIPHTTPRequest)
-                              + strlen(GeoIPProxyHTTP) + strlen(GeoIPProxiedHost) + 36 + 1));
-	if (request_uri == NULL)
-		return GEOIP_OUT_OF_MEMORY_ERR;
-	sprintf(request_uri,GeoIPHTTPRequest,GeoIPProxyHTTP,GeoIPProxiedHost,license_key, hex_digest);
-	send(sock, request_uri, strlen(request_uri),0);
-	free(request_uri);
-
-	buf = malloc(sizeof(char) * block_size + 1);
-	if (buf == NULL)
-		return GEOIP_OUT_OF_MEMORY_ERR;
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Downloading gzipped GeoIP Database...\n");
-
-	for (;;) {
-		int amt;
-		amt = recv(sock, &buf[offset], block_size,0);
-		if (amt == 0) {
-			break;
-		} else if (amt == -1) {
-			free(buf);
-			return GEOIP_SOCKET_READ_ERR;
-		}
-		offset += amt;
-		buf = realloc(buf, offset+block_size + 1);
-		if (buf == NULL)
-			return GEOIP_OUT_OF_MEMORY_ERR;
-	}
-
-        buf[offset]=0;
-	compr = strstr(buf, "\r\n\r\n");
-        if ( compr == NULL ) {
-   		free(buf);
-		return GEOIP_INVALID_SERVER_RESPONSE;
-        }
-        /* skip searchstr  "\r\n\r\n" */
-        compr += 4;
-	comprLen = offset + buf - compr;
-
-	if (strstr(compr, "License Key Invalid") != NULL) {
-		if (verbose == 1)
-			GeoIP_printf(f,"Failed\n");
-		free(buf);
-		return GEOIP_LICENSE_KEY_INVALID_ERR;
-	} else if (strstr(compr, "Invalid product ID or subscription expired") != NULL){
-		free(buf);
-		return GEOIP_PRODUCT_ID_INVALID_ERR;
-	} else if (strstr(compr, "No new updates available") != NULL) {
-		free(buf);
-		return GEOIP_NO_NEW_UPDATES;
-	}
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Done\n");
-
-	/* save gzip file */
-	file_path_gz = malloc(sizeof(char) * (strlen(GeoIPDBFileName[GEOIP_COUNTRY_EDITION]) + 4));
-	if (file_path_gz == NULL)
-		return GEOIP_OUT_OF_MEMORY_ERR;
-	strcpy(file_path_gz,GeoIPDBFileName[GEOIP_COUNTRY_EDITION]);
-	strcat(file_path_gz,".gz");
-	if (verbose == 1) {
-    GeoIP_printf(f, SavingGzip, file_path_gz);
-	}
-	comp_fh = fopen(file_path_gz, "wb");
-
-	if(comp_fh == NULL) {
-		free(file_path_gz);
-		free(buf);
-		return GEOIP_GZIP_IO_ERR;
-	}
-
-	written = fwrite(compr, 1, comprLen, comp_fh);
-	fclose(comp_fh);
-	free(buf);
-
-        if ( written != comprLen )
-		return GEOIP_GZIP_IO_ERR;
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Done\n");
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Uncompressing gzip file ... ");
-
-	/* uncompress gzip file */
-	gz_fh = gzopen(file_path_gz, "rb");
-	file_path_test = malloc(sizeof(char) * (strlen(GeoIPDBFileName[GEOIP_COUNTRY_EDITION]) + 6));
-	if (file_path_test == NULL)
-		return GEOIP_OUT_OF_MEMORY_ERR;
-	strcpy(file_path_test,GeoIPDBFileName[GEOIP_COUNTRY_EDITION]);
-	strcat(file_path_test,".test");
-	gi_fh = fopen(file_path_test, "wb");
-
-	if(gi_fh == NULL) {
-		free(file_path_test);
-		return GEOIP_TEST_IO_ERR;
-	}
-	for (;;) {
-		int amt;
-		amt = gzread(gz_fh, block, block_size);
-		if (amt == -1) {
-			free(file_path_test);
-			fclose(gi_fh);
-			gzclose(gz_fh);
-			return GEOIP_GZIP_READ_ERR;
-		}
-		if (amt == 0) {
-			break;
-		}
-		if ( fwrite(block,1,amt,gi_fh) != amt ){
-			free(file_path_test);
-			fclose(gi_fh);
-			gzclose(gz_fh);
-			return GEOIP_GZIP_READ_ERR;
-		}
-	}
-	gzclose(gz_fh);
-	unlink(file_path_gz);
-	free(file_path_gz);
-	fclose(gi_fh);
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Done\n");
-
-	if (verbose == 1) {
-    GeoIP_printf(f, WritingFile, GeoIPDBFileName[GEOIP_COUNTRY_EDITION]);
-	}
-
-	/* sanity check */
-	gi = GeoIP_open(file_path_test, GEOIP_STANDARD);
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Performing santity checks ... ");
-
-	if (gi == NULL) {
-		GeoIP_printf(f,"Error opening sanity check database\n");
-		return GEOIP_SANITY_OPEN_ERR;
-	}
-
-	/* this checks to make sure the files is complete, since info is at the end */
-	/* dependent on future databases having MaxMind in info */
-	if (verbose == 1)
-		GeoIP_printf(f,"database_info  ");
-	db_info = GeoIP_database_info(gi);
-	if (db_info == NULL) {
-		GeoIP_delete(gi);
-		if (verbose == 1)
-			GeoIP_printf(f,"FAIL\n");
-		return GEOIP_SANITY_INFO_FAIL;
-	}
-	if (strstr(db_info, "MaxMind") == NULL) {
-		free(db_info);
-		GeoIP_delete(gi);
-		if (verbose == 1)
-			GeoIP_printf(f,"FAIL\n");
-		return GEOIP_SANITY_INFO_FAIL;
-	}
-	free(db_info);
-	if (verbose == 1)
-		GeoIP_printf(f,"PASS  ");
-
-	/* this performs an IP lookup test of a US IP address */
-	if (verbose == 1)
-		GeoIP_printf(f,"lookup  ");
-	if (strcmp(GeoIP_country_code_by_addr(gi,"24.24.24.24"), "US") != 0) {
-		GeoIP_delete(gi);
-		if (verbose == 1)
-			GeoIP_printf(f,"FAIL\n");
-		return GEOIP_SANITY_LOOKUP_FAIL;
-	}
-	GeoIP_delete(gi);
-	if (verbose == 1)
-		GeoIP_printf(f,"PASS\n");
-
-	/* install GeoIP.dat.test -> GeoIP.dat */
-	err = rename(file_path_test, GeoIPDBFileName[GEOIP_COUNTRY_EDITION]);
-	if (err != 0) {
-		GeoIP_printf(f,"GeoIP Install error while renaming file\n");
-		return GEOIP_RENAME_ERR;
-	}
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Done\n");
-
-	return 0;
-}
-
-short int GeoIP_update_database_general (char * user_id,char * license_key,char *data_base_type, int verbose,char ** client_ipaddr, void (*f)( char *)) {
-	struct hostent *hostlist;
-	int sock;
-	char * buf;
-	struct sockaddr_in sa;
-	int offset = 0, err;
-	char * request_uri;
-	char * compr;
-	unsigned long comprLen;
-	FILE *comp_fh, *cur_db_fh, *gi_fh;
-	gzFile gz_fh;
-	char * file_path_gz, * file_path_test;
-	MD5_CONTEXT context;
-	MD5_CONTEXT context2;
-	unsigned char buffer[1024], digest[16] ,digest2[16];
-	char hex_digest[33] = "0000000000000000000000000000000\0";
-	char hex_digest2[33] = "0000000000000000000000000000000\0";
-	unsigned int i;
-	char *f_str;
-	GeoIP * gi;
-	char * db_info;
-	char *ipaddress;
-	char *geoipfilename;
-	char *tmpstr;
-	int dbtype;
-	int lookupresult = 1;
-	char block[BLOCK_SIZE];
-	int block_size = BLOCK_SIZE;
-	size_t len;
-	size_t request_uri_len;
-	size_t size;
-
-	hostlist = GeoIP_get_host_or_proxy();
-
-	if (hostlist == NULL)
-		return GEOIP_DNS_ERR;
-
-	if (hostlist->h_addrtype != AF_INET)
-		return GEOIP_NON_IPV4_ERR;
-	if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
-		return GEOIP_SOCKET_OPEN_ERR;
-	}
-
-	memset(&sa, 0, sizeof(struct sockaddr_in));
-	sa.sin_port = htons(GeoIPHTTPPort);
-	memcpy(&sa.sin_addr, hostlist->h_addr_list[0], hostlist->h_length);
-	sa.sin_family = AF_INET;
-	
-	if (verbose == 1) {
-		GeoIP_printf(f,"Connecting to MaxMind GeoIP server\n");
-		GeoIP_printf(f, "via Host or Proxy Server: %s:%d\n", hostlist->h_name, GeoIPHTTPPort);
-	}
-	
-	if (connect(sock, (struct sockaddr *)&sa, sizeof(struct sockaddr))< 0)
-		return GEOIP_CONNECTION_ERR;
-	request_uri = malloc(sizeof(char) * (strlen(GeoIPHTTPRequestFilename) 
-                                             + strlen(GeoIPProxyHTTP) + strlen(GeoIPProxiedHost)
-                                             + strlen(data_base_type) + strlen(GeoIPUpdateHost) + 1));
-	if (request_uri == NULL)
-		return GEOIP_OUT_OF_MEMORY_ERR;
-
-	/* get the file name from a web page using the product id */
-	sprintf(request_uri,GeoIPHTTPRequestFilename,GeoIPProxyHTTP,GeoIPProxiedHost,data_base_type,GeoIPUpdateHost);
-	if (verbose == 1) {
-		GeoIP_printf(f, "sending request %s \n",request_uri);
-	}
-	send(sock, request_uri, strlen(request_uri),0); /* send the request */
-	free(request_uri);
-	buf = malloc(sizeof(char) * (block_size+4));
-	if (buf == NULL)
-		return GEOIP_OUT_OF_MEMORY_ERR;
-	offset = 0;
-	for (;;){
-		int amt;
-		amt = recv(sock, &buf[offset], block_size,0); 
-		if (amt == 0){
-			break;
-		} else if (amt == -1) {
-			free(buf);
-			return GEOIP_SOCKET_READ_ERR;
-		}
-		offset += amt;
-		buf = realloc(buf, offset + block_size + 4);
-	}
-	buf[offset] = 0;
-	offset = 0;
-	tmpstr = strstr(buf, "\r\n\r\n");
-        if ( tmpstr == NULL ) {
-   		free(buf);
-		return GEOIP_INVALID_SERVER_RESPONSE;
-        }
-        /* skip searchstr  "\r\n\r\n" */
-        tmpstr += 4;
-	if (tmpstr[0] == '.' || strchr(tmpstr, '/') != NULL || strchr(tmpstr, '\\') != NULL) {
-		free(buf);
-		return GEOIP_INVALID_SERVER_RESPONSE;
-	}
-	geoipfilename = _GeoIP_full_path_to(tmpstr);
-	free(buf);
-
-	/* print the database product id and the database filename */
-	if (verbose == 1){
-		GeoIP_printf(f, "database product id %s database file name %s \n",data_base_type,geoipfilename);
-	}
-	_GeoIP_setup_dbfilename();
-
-	/* get MD5 of current GeoIP database file */
-	if ((cur_db_fh = fopen (geoipfilename, "rb")) == NULL) {
-    GeoIP_printf(f, NoCurrentDB, geoipfilename);
-	} else {
-		md5_init(&context);
-		while ((len = fread (buffer, 1, 1024, cur_db_fh)) > 0)
-			md5_write (&context, buffer, len);
-		md5_final (&context);
-		memcpy(digest,context.buf,16);
-		fclose (cur_db_fh);
-		for (i = 0; i < 16; i++)
-			sprintf (&hex_digest[2*i], "%02x", digest[i]);
-    GeoIP_printf(f, MD5Info, hex_digest );
-	}
-	if (verbose == 1) {
-		GeoIP_printf(f,"MD5 sum of database %s is %s \n",geoipfilename,hex_digest);
-	}
-	if (client_ipaddr[0] == NULL) {
-		/* We haven't gotten our IP address yet, so let's request it */
-		if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
-			free(geoipfilename);
-			return GEOIP_SOCKET_OPEN_ERR;
-		}
-
-		memset(&sa, 0, sizeof(struct sockaddr_in));
-		sa.sin_port = htons(GeoIPHTTPPort);
-		memcpy(&sa.sin_addr, hostlist->h_addr_list[0], hostlist->h_length);
-		sa.sin_family = AF_INET;
-
-		if (verbose == 1)
-			GeoIP_printf(f,"Connecting to MaxMind GeoIP Update server\n");
-
-		/* Download gzip file */
-		if (connect(sock, (struct sockaddr *)&sa, sizeof(struct sockaddr))< 0) {
-			free(geoipfilename);
-			return GEOIP_CONNECTION_ERR;
-		}
-		request_uri = malloc(sizeof(char) * (strlen(GeoIPHTTPRequestClientIP) 
-                                                     + strlen(GeoIPProxyHTTP) 
-                                                     + strlen(GeoIPProxiedHost)
-                                                     + strlen(GeoIPUpdateHost) + 1 ));
-		if (request_uri == NULL) {
-			free(geoipfilename);
-			return GEOIP_OUT_OF_MEMORY_ERR;
-		}
-
-		/* get client ip address from MaxMind web page */
-		sprintf(request_uri,GeoIPHTTPRequestClientIP,GeoIPProxyHTTP,GeoIPProxiedHost,GeoIPUpdateHost);
-		send(sock, request_uri, strlen(request_uri),0); /* send the request */
-		if (verbose == 1) {
-			GeoIP_printf(f, "sending request %s", request_uri);
-		}
-		free(request_uri);
-		buf = malloc(sizeof(char) * (block_size+1));
-		if (buf == NULL) {
-			free(geoipfilename);
-			return GEOIP_OUT_OF_MEMORY_ERR;
-		}
-		offset = 0;
-
-		for (;;){
-			int amt;
-			amt = recv(sock, &buf[offset], block_size,0); 
-			if (amt == 0) {
-				break;
-			} else if (amt == -1) {
-				free(buf);
-				return GEOIP_SOCKET_READ_ERR;
-			}
-			offset += amt;
-			buf = realloc(buf, offset+block_size+1);
-		}
-
-		buf[offset] = 0;
-		offset = 0;
-		ipaddress = strstr(buf, "\r\n\r\n") + 4; /* get the ip address */
-		ipaddress = malloc(strlen(strstr(buf, "\r\n\r\n") + 4)+5);
-		strcpy(ipaddress,strstr(buf, "\r\n\r\n") + 4);
-		client_ipaddr[0] = ipaddress;
-		if (verbose == 1) {
-			GeoIP_printf(f, "client ip address: %s\n",ipaddress);
-		}
-		free(buf);
-		close(sock);
-	}
-
-	ipaddress = client_ipaddr[0];
-
-	/* make a md5 sum of ip address and license_key and store it in hex_digest2 */
-	md5_init(&context2);
-	md5_write (&context2, (byte *)license_key, 12);//add license key to the md5 sum
-	md5_write (&context2, (byte *)ipaddress, strlen(ipaddress));//add ip address to the md5 sum
-	md5_final (&context2);
-	memcpy(digest2,context2.buf,16);
-	for (i = 0; i < 16; i++)
-		snprintf (&hex_digest2[2*i], 3, "%02x", digest2[i]);// change the digest to a hex digest
-	if (verbose == 1) {
-		GeoIP_printf(f, "md5sum of ip address and license key is %s \n",hex_digest2);
-	}
-
-	/* send the request using the user id,product id, 
-	 * md5 sum of the prev database and 
-	 * the md5 sum of the license_key and ip address */
-	if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
-		return GEOIP_SOCKET_OPEN_ERR;
-	}
-	memset(&sa, 0, sizeof(struct sockaddr_in));
-	sa.sin_port = htons(GeoIPHTTPPort);
-	memcpy(&sa.sin_addr, hostlist->h_addr_list[0], hostlist->h_length);
-	sa.sin_family = AF_INET;
-	if (connect(sock, (struct sockaddr *)&sa, sizeof(struct sockaddr))< 0)
-		return GEOIP_CONNECTION_ERR;
-	request_uri_len = sizeof(char) * 2036;
-	request_uri = malloc(request_uri_len);
-	if (request_uri == NULL)
-	        return GEOIP_OUT_OF_MEMORY_ERR;
-	snprintf(request_uri, request_uri_len, GeoIPHTTPRequestMD5,GeoIPProxyHTTP,GeoIPProxiedHost,hex_digest,hex_digest2,user_id,data_base_type);
-	send(sock, request_uri, strlen(request_uri),0);
-	if (verbose == 1) {
-		GeoIP_printf(f, "sending request %s\n",request_uri);
-	}
-
-	free(request_uri);
-
-	offset = 0;
-	buf = malloc(sizeof(char) * block_size);
-	if (buf == NULL)
-		return GEOIP_OUT_OF_MEMORY_ERR;
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Downloading gzipped GeoIP Database...\n");
-
-	for (;;) {
-		int amt;
-		amt = recv(sock, &buf[offset], block_size,0);
-
-		if (amt == 0) {
-			break;
-		} else if (amt == -1) {
-			free(buf);
-			return GEOIP_SOCKET_READ_ERR;
-		}
-		offset += amt;
-		buf = realloc(buf, offset+block_size);
-		if (buf == NULL)
-			return GEOIP_OUT_OF_MEMORY_ERR;
-	}
-
-	compr = strstr(buf, "\r\n\r\n") + 4;
-	comprLen = offset + buf - compr;
-
-	if (strstr(compr, "License Key Invalid") != NULL) {
-		if (verbose == 1)
-			GeoIP_printf(f,"Failed\n");
-		free(buf);
-		return GEOIP_LICENSE_KEY_INVALID_ERR;
-	} else if (strstr(compr, "No new updates available") != NULL) {
-		free(buf);
-		GeoIP_printf(f, "%s is up to date, no updates required\n", geoipfilename);
-		return GEOIP_NO_NEW_UPDATES;
-	} else if (strstr(compr, "Invalid UserId") != NULL){
-		free(buf);
-		return GEOIP_USER_ID_INVALID_ERR;
-	} else if (strstr(compr, "Invalid product ID or subscription expired") != NULL){
-		free(buf);
-		return GEOIP_PRODUCT_ID_INVALID_ERR;
-	}
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Done\n");
-
-	GeoIP_printf(f, "Updating %s\n", geoipfilename);
-
-	/* save gzip file */
-	file_path_gz = malloc(sizeof(char) * (strlen(geoipfilename) + 4));
-
-	if (file_path_gz == NULL)
-		return GEOIP_OUT_OF_MEMORY_ERR;
-	strcpy(file_path_gz,geoipfilename);
-	strcat(file_path_gz,".gz");
-	if (verbose == 1) {
-    GeoIP_printf(f, SavingGzip, file_path_gz );
-	}
-	comp_fh = fopen(file_path_gz, "wb");
-
-	if(comp_fh == NULL) {
-		free(file_path_gz);
-		free(buf);
-		return GEOIP_GZIP_IO_ERR;
-	}
-
-	size = fwrite(compr, 1, comprLen, comp_fh);
-	fclose(comp_fh);
-	free(buf);
-        if ( size != comprLen ) {
-		return GEOIP_GZIP_IO_ERR;
-	}
-
-	if (verbose == 1) {
-		GeoIP_printf(f, "download data to a gz file named %s \n",file_path_gz);
-		GeoIP_printf(f,"Done\n");
-		GeoIP_printf(f,"Uncompressing gzip file ... ");
-	}
-
-	file_path_test = malloc(sizeof(char) * (strlen(GeoIPDBFileName[GEOIP_COUNTRY_EDITION]) + 6));
-	if (file_path_test == NULL) {
-		free(file_path_gz);
-		return GEOIP_OUT_OF_MEMORY_ERR;
-	}
-	strcpy(file_path_test,GeoIPDBFileName[GEOIP_COUNTRY_EDITION]);
-	strcat(file_path_test,".test");
-	gi_fh = fopen(file_path_test, "wb");
-	if(gi_fh == NULL) {
-		free(file_path_test);
-		free(file_path_gz);
-		return GEOIP_TEST_IO_ERR;
-	}
-	/* uncompress gzip file */
-	offset = 0;
-	gz_fh = gzopen(file_path_gz, "rb");
-	for (;;) {
-		int amt;
-		amt = gzread(gz_fh, block, block_size);
-		if (amt == -1) {
-			free(file_path_gz);
-			free(file_path_test);
-			gzclose(gz_fh);
-			fclose(gi_fh);
-			return GEOIP_GZIP_READ_ERR;
-		}
-		if (amt == 0) {
-			break;
-		}
-		if ( amt != fwrite(block,1,amt,gi_fh) ){
-			return GEOIP_GZIP_IO_ERR;
-		}
-	}
-	gzclose(gz_fh);
-	unlink(file_path_gz);
-	free(file_path_gz);
-	fclose(gi_fh);
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Done\n");
-
-	if (verbose == 1) {
-		len = strlen(WritingFile) + strlen(geoipfilename) - 1;
-		f_str = malloc(len);
-		snprintf(f_str,len,WritingFile,geoipfilename);
-		free(f_str);
-	}
-
-	/* sanity check */
-	gi = GeoIP_open(file_path_test, GEOIP_STANDARD);
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Performing santity checks ... ");
-
-	if (gi == NULL) {
-		GeoIP_printf(f,"Error opening sanity check database\n");
-		return GEOIP_SANITY_OPEN_ERR;
-	}
-
-
-	/* get the database type */
-	dbtype = GeoIP_database_edition(gi);
-	if (verbose == 1) {
-		GeoIP_printf(f, "Database type is %d\n",dbtype);
-	}
-
-	/* this checks to make sure the files is complete, since info is at the end
-		 dependent on future databases having MaxMind in info (ISP and Organization databases currently don't have info string */
-
-	if ((dbtype != GEOIP_ISP_EDITION)&&
-			(dbtype != GEOIP_ORG_EDITION)) {
-		if (verbose == 1)
-			GeoIP_printf(f,"database_info  ");
-		db_info = GeoIP_database_info(gi);
-		if (db_info == NULL) {
-			GeoIP_delete(gi);
-			if (verbose == 1)
-				GeoIP_printf(f,"FAIL null\n");
-			return GEOIP_SANITY_INFO_FAIL;
-		}
-		if (strstr(db_info, "MaxMind") == NULL) {
-			free(db_info);
-			GeoIP_delete(gi);
-			if (verbose == 1)
-				GeoIP_printf(f,"FAIL maxmind\n");
-			return GEOIP_SANITY_INFO_FAIL;
-		}
-		free(db_info);
-		if (verbose == 1)
-			GeoIP_printf(f,"PASS  ");
-	}
-
-	/* this performs an IP lookup test of a US IP address */
-	if (verbose == 1)
-		GeoIP_printf(f,"lookup  ");
-	if (dbtype == GEOIP_NETSPEED_EDITION) {
-		int netspeed = GeoIP_id_by_name(gi,"24.24.24.24");
-		lookupresult = 0;
-		if (netspeed == GEOIP_CABLEDSL_SPEED){
-			lookupresult = 1;
-		}
-	}
-	if (dbtype == GEOIP_COUNTRY_EDITION) {
-		/* if data base type is country then call the function
-		 * named GeoIP_country_code_by_addr */
-		lookupresult = 1;
-		if (strcmp(GeoIP_country_code_by_addr(gi,"24.24.24.24"), "US") != 0) {
-			lookupresult = 0;
-		}
-		if (verbose == 1) {
-			GeoIP_printf(f,"testing GEOIP_COUNTRY_EDITION\n");
-		}
-	}
-	if (dbtype == GEOIP_REGION_EDITION_REV1) {
-		/* if data base type is region then call the function
-		 * named GeoIP_region_by_addr */
-		GeoIPRegion *r = GeoIP_region_by_addr(gi,"24.24.24.24");
-		lookupresult = 0;
-		if (r != NULL) {
-			lookupresult = 1;
-			free(r);
-		}
-		if (verbose == 1) {
-			GeoIP_printf(f,"testing GEOIP_REGION_EDITION\n");
-		}
-	}
-	if (dbtype == GEOIP_CITY_EDITION_REV1) {
-		/* if data base type is city then call the function
-		 * named GeoIP_record_by_addr */
-		GeoIPRecord *r = GeoIP_record_by_addr(gi,"24.24.24.24");
-		lookupresult = 0;
-		if (r != NULL) {
-			lookupresult = 1;
-			free(r);
-		}
-		if (verbose == 1) {
-			GeoIP_printf(f,"testing GEOIP_CITY_EDITION\n");
-		}
-	}
-	if ((dbtype == GEOIP_ISP_EDITION)||
-			(dbtype == GEOIP_ORG_EDITION)) {
-		/* if data base type is isp or org then call the function
-		 * named GeoIP_org_by_addr */
-		GeoIPRecord *r = (GeoIPRecord*)GeoIP_org_by_addr(gi,"24.24.24.24");
-		lookupresult = 0;
-		if (r != NULL) {
-			lookupresult = 1;
-			free(r);
-		}
-		if (verbose == 1) {
-			if (dbtype == GEOIP_ISP_EDITION) {
-				GeoIP_printf(f,"testing GEOIP_ISP_EDITION\n");
-			}
-			if (dbtype == GEOIP_ORG_EDITION) {
-				GeoIP_printf(f,"testing GEOIP_ORG_EDITION\n");
-			}
-		}
-	}
-	if (lookupresult == 0) {
-		GeoIP_delete(gi);
-		if (verbose == 1)
-			GeoIP_printf(f,"FAIL\n");
-		return GEOIP_SANITY_LOOKUP_FAIL;
-	}
-	GeoIP_delete(gi);
-	if (verbose == 1)
-		GeoIP_printf(f,"PASS\n");
-
-	/* install GeoIP.dat.test -> GeoIP.dat */
-	err = rename(file_path_test, geoipfilename);
-	if (err != 0) {
-		GeoIP_printf(f,"GeoIP Install error while renaming file\n");
-		return GEOIP_RENAME_ERR;
-	}
-
-	if (verbose == 1)
-		GeoIP_printf(f,"Done\n");
-	free(geoipfilename);
-	return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.h b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.h
deleted file mode 100644
index 7e6bbe18..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIPUpdate.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* GeoIP.h
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef GEOIPUPDATE_H
-#define GEOIPUPDATE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdarg.h>
-#include <stdio.h>
-
-typedef enum {
-	GEOIP_NO_NEW_UPDATES          = 1,   /* Database up-to-date, no action taken */
-  GEOIP_SUCCESS                 = 0,   /* Success */
-  GEOIP_LICENSE_KEY_INVALID_ERR =	-1,  /* License Key Invalid */
-  GEOIP_DNS_ERR                 = -11, /* Unable to resolve hostname */
-  GEOIP_NON_IPV4_ERR            = -12, /* Non - IPv4 address */
-  GEOIP_SOCKET_OPEN_ERR         = -13, /* Error opening socket */
-	GEOIP_CONNECTION_ERR          = -14, /* Unable to connect */
-	GEOIP_GZIP_IO_ERR             = -15, /* Unable to write GeoIP.dat.gz file */
-  GEOIP_TEST_IO_ERR             = -16, /* Unable to write GeoIP.dat.test file */
-	GEOIP_GZIP_READ_ERR           = -17, /* Unable to read gzip data */
-	GEOIP_OUT_OF_MEMORY_ERR       = -18, /* Out of memory error */
-	GEOIP_SOCKET_READ_ERR         = -19, /* Error reading from socket, see errno */
-	GEOIP_SANITY_OPEN_ERR         = -20, /* Sanity check GeoIP_open error */
-	GEOIP_SANITY_INFO_FAIL        = -21, /* Sanity check database_info string failed */
-	GEOIP_SANITY_LOOKUP_FAIL      = -22, /* Sanity check ip address lookup failed */
-	GEOIP_RENAME_ERR              = -23, /* Rename error while installing db, check errno */
-	GEOIP_USER_ID_INVALID_ERR     = -24, /* Invalid userID */
-	GEOIP_PRODUCT_ID_INVALID_ERR  = -25, /* Invalid product ID or subscription expired */
-	GEOIP_INVALID_SERVER_RESPONSE = -26  /* Server returned invalid response */
-} GeoIPUpdateCode;
-
-const char * GeoIP_get_error_message(int i);
-
-/* Original Update Function, just for MaxMind GeoIP Country database */
-	short int GeoIP_update_database (char * license_key, int verbose, void (*f)( char *));
-
-/* More generalized update function that works more databases */
-	short int GeoIP_update_database_general (char * user_id, char * license_key,char * data_base_type, int verbose,char ** client_ipaddr, void (*f)( char *));
-
-	/* experimental export */
-	int  GeoIP_fprintf(int (*f)(FILE *, char *),FILE *fp, const char *fmt, ...);
-	void GeoIP_printf(void (*f)(char *), const char *fmt, ...);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GEOIPUPDATE_H */
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP_internal.h b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP_internal.h
deleted file mode 100644
index c19870fa..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/GeoIP_internal.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef GEOIP_INTERNAL_H
-#define GEOIP_INTERNAL_H
-
-#include "GeoIP.h"
-
-GEOIP_API unsigned int _GeoIP_seek_record (GeoIP *gi, unsigned long ipnum);
-
-GEOIP_API unsigned int _GeoIP_seek_record_v6 (GeoIP *gi, geoipv6_t ipnum);
-GEOIP_API geoipv6_t _GeoIP_addr_to_num_v6 (const char *addr);
-
-GEOIP_API unsigned long _GeoIP_lookupaddress (const char *host);
-GEOIP_API geoipv6_t _GeoIP_lookupaddress_v6 (const char *host);
-GEOIP_API int __GEOIP_V6_IS_NULL(geoipv6_t v6);
-
-GEOIP_API void _GeoIP_setup_dbfilename();
-GEOIP_API char *_GeoIP_full_path_to(const char *file_name);
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.am b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.am
deleted file mode 100644
index 5fa0a903..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.am
+++ /dev/null
@@ -1,27 +0,0 @@
-lib_LTLIBRARIES = libGeoIP.la libGeoIPUpdate.la
-
-EXTRA_DIST = Makefile.vc md5.h global.h types.h GeoIP_internal.h
-
-AM_CPPFLAGS = -DGEOIPDATADIR=\"$(pkgdatadir)\" -Wall
-
-libGeoIP_la_SOURCES = GeoIP.c GeoIPCity.c regionName.c timeZone.c
-include_HEADERS = GeoIP.h GeoIPCity.h GeoIPUpdate.h
-
-libGeoIPUpdate_la_SOURCES = GeoIPUpdate.c md5.c
-
-libGeoIP_la_LDFLAGS = -version-info @GEOIP_VERSION_INFO@
-
-libGeoIPUpdate_la_LIBADD = -lz libGeoIP.la
-
-GeoIP.lo GeoIP.o: GeoIP.c GeoIP.h
-
-GeoIPCity.lo GeoIPCity.o: GeoIPCity.c GeoIP.h
-
-GeoIPUpdate.lo GeoIPUpdate.o: GeoIPUpdate.c GeoIPCity.h GeoIP.h
-
-regionName.lo regionName.o: regionName.c
-
-md5.lo md5.o: md5.c
-
-timeZone.lo timeZone.o: timeZone.c
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.in b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.in
deleted file mode 100644
index 5cb5c9f1..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.in
+++ /dev/null
@@ -1,567 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = libGeoIP
-DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libGeoIP_la_LIBADD =
-am_libGeoIP_la_OBJECTS = GeoIP.lo GeoIPCity.lo regionName.lo \
-	timeZone.lo
-libGeoIP_la_OBJECTS = $(am_libGeoIP_la_OBJECTS)
-libGeoIP_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(libGeoIP_la_LDFLAGS) $(LDFLAGS) -o $@
-libGeoIPUpdate_la_DEPENDENCIES = libGeoIP.la
-am_libGeoIPUpdate_la_OBJECTS = GeoIPUpdate.lo md5.lo
-libGeoIPUpdate_la_OBJECTS = $(am_libGeoIPUpdate_la_OBJECTS)
-DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = $(libGeoIP_la_SOURCES) $(libGeoIPUpdate_la_SOURCES)
-DIST_SOURCES = $(libGeoIP_la_SOURCES) $(libGeoIPUpdate_la_SOURCES)
-HEADERS = $(include_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GEOIP_VERSION_INFO = @GEOIP_VERSION_INFO@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-lib_LTLIBRARIES = libGeoIP.la libGeoIPUpdate.la
-EXTRA_DIST = Makefile.vc md5.h global.h types.h GeoIP_internal.h
-AM_CPPFLAGS = -DGEOIPDATADIR=\"$(pkgdatadir)\" -Wall
-libGeoIP_la_SOURCES = GeoIP.c GeoIPCity.c regionName.c timeZone.c
-include_HEADERS = GeoIP.h GeoIPCity.h GeoIPUpdate.h
-libGeoIPUpdate_la_SOURCES = GeoIPUpdate.c md5.c
-libGeoIP_la_LDFLAGS = -version-info @GEOIP_VERSION_INFO@
-libGeoIPUpdate_la_LIBADD = -lz libGeoIP.la
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libGeoIP/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu libGeoIP/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libGeoIP.la: $(libGeoIP_la_OBJECTS) $(libGeoIP_la_DEPENDENCIES) 
-	$(libGeoIP_la_LINK) -rpath $(libdir) $(libGeoIP_la_OBJECTS) $(libGeoIP_la_LIBADD) $(LIBS)
-libGeoIPUpdate.la: $(libGeoIPUpdate_la_OBJECTS) $(libGeoIPUpdate_la_DEPENDENCIES) 
-	$(LINK) -rpath $(libdir) $(libGeoIPUpdate_la_OBJECTS) $(libGeoIPUpdate_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeoIP.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeoIPCity.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeoIPUpdate.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regionName.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeZone.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
-	done
-
-uninstall-includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-includeHEADERS install-info \
-	install-info-am install-libLTLIBRARIES install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-includeHEADERS \
-	uninstall-libLTLIBRARIES
-
-
-GeoIP.lo GeoIP.o: GeoIP.c GeoIP.h
-
-GeoIPCity.lo GeoIPCity.o: GeoIPCity.c GeoIP.h
-
-GeoIPUpdate.lo GeoIPUpdate.o: GeoIPUpdate.c GeoIPCity.h GeoIP.h
-
-regionName.lo regionName.o: regionName.c
-
-md5.lo md5.o: md5.c
-
-timeZone.lo timeZone.o: timeZone.c
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.vc b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.vc
deleted file mode 100644
index 2a167319..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/Makefile.vc
+++ /dev/null
@@ -1,34 +0,0 @@
-#NMAKE makefile for Windows developers. 
-#Produces a static library (GeoIP.lib). 
- 
-COMPILER=cl 
- 
-CFLAGS=-DWIN32 -MD -nologo 
- 
-GEOIPINC = -I..\libGeoIP 
- 
-CC1 = $(COMPILER) $(CFLAGS) $(GEOIPINC) -DGEOIPDATADIR=\"$(GEOIPDATADIR)\" 
- 
-OBJS=GeoIP.obj GeoIPCity.obj regionName.obj md5.obj timeZone.obj
- 
-EXTRA_LIBS= advapi32.lib wsock32.lib 
- 
-AR=lib 
- 
-GeoIP.lib:  GeoIP.obj GeoIPCity.obj regionName.obj md5.obj timeZone.obj
-   $(AR) -nologo $(OBJS) $(EXTRA_LIBS) /OUT:GeoIP.lib 
- 
-GeoIP.obj: GeoIP.c 
-   $(CC1) -c GeoIP.c $(GEOIPINC) 
- 
-GeoIPCity.obj: GeoIPCity.c 
-   $(CC1) -c GeoIPCity.c $(GEOIPINC)
-
-regionName.obj: regionName.c 
-   $(CC1) -c regionName.c $(GEOIPINC)
-
-md5.obj: md5.c 
-   $(CC1) -c md5.c $(GEOIPINC)
-
-timeZone.obj: timeZone.c 
-   $(CC1) -c timeZone.c $(GEOIPINC)
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/global.h b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/global.h
deleted file mode 100644
index 22c5684b..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/global.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* GLOBAL.H - RSAREF types and constants
- */
-
-/* PROTOTYPES should be set to one if and only if the compiler supports
-  function argument prototyping.
-The following makes PROTOTYPES default to 0 if it has not already
-
-  been defined with C compiler flags.
- */
-#ifndef PROTOTYPES
-#define PROTOTYPES 0
-#endif
-
-/* POINTER defines a generic pointer type */
-typedef unsigned char *POINTER;
-
-/* UINT2 defines a two byte word */
-typedef unsigned short int UINT2;
-
-/* UINT4 defines a four byte word */
-typedef unsigned long int UINT4;
-
-/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
-If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
-  returns an empty list.
- */
-#if PROTOTYPES
-#define PROTO_LIST(list) list
-#else
-#define PROTO_LIST(list) ()
-#endif
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.c b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.c
deleted file mode 100644
index 4b0c237f..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/* md5.c - MD5 Message-Digest Algorithm
- * Copyright (C) 1995, 1996, 1998, 1999,
- *               2000, 2001 Free Software Foundation, Inc.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * According to the definition of MD5 in RFC 1321 from April 1992.
- * NOTE: This is *not* the same file as the one from glibc.
- */
-/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.  */
-/* Heavily modified for GnuPG by <wk@gnupg.org> */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "types.h"
-
-#ifdef WORDS_BIGENDIAN
-#define BIG_ENDIAN_HOST
-#endif
-
-//#define DIM(v) (sizeof(v)/sizeof((v)[0]))
-#define wipememory2(_ptr,_set,_len) do { volatile char *_vptr=(volatile char *)(_ptr); size_t _vlen=(_len); while(_vlen) { *_vptr=(_set); _vptr++; _vlen--; } } while(0)
-#define wipememory(_ptr,_len) wipememory2(_ptr,0,_len)
-#define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) )
-
-typedef struct {
-  u32 A,B,C,D;  /* chaining variables */
-  u32  nblocks;
-  byte buf[64];
-  int  count;
-} MD5_CONTEXT;
-
-
-void
-md5_init( MD5_CONTEXT *ctx )
-{
-  ctx->A = 0x67452301;
-  ctx->B = 0xefcdab89;
-  ctx->C = 0x98badcfe;
-  ctx->D = 0x10325476;
-
-  ctx->nblocks = 0;
-  ctx->count = 0;
-}
-
-
-
-
-/* These are the four functions used in the four steps of the MD5 algorithm
-   and defined in the RFC 1321.  The first function is a little bit optimized
-   (as found in Colin Plumbs public domain implementation).  */
-/* #define FF(b, c, d) ((b & c) | (~b & d)) */
-#define FF(b, c, d) (d ^ (b & (c ^ d)))
-#define FG(b, c, d) FF (d, b, c)
-#define FH(b, c, d) (b ^ c ^ d)
-#define FI(b, c, d) (c ^ (b | ~d))
-
-static void
-burn_stack (int bytes)
-{
-  char buf[128];
-
-  wipememory(buf,sizeof buf);
-  bytes -= sizeof buf;
-  if (bytes > 0)
-    burn_stack (bytes);
-}
-
-
-
-/****************
- * transform n*64 bytes
- */
-static void
-/*transform( MD5_CONTEXT *ctx, const void *buffer, size_t len )*/
-transform( MD5_CONTEXT *ctx, byte *data )
-{
-  u32 correct_words[16];
-  u32 A = ctx->A;
-  u32 B = ctx->B;
-  u32 C = ctx->C;
-  u32 D = ctx->D;
-  u32 *cwp = correct_words;
-
-#ifdef BIG_ENDIAN_HOST
-  { int i;
-  byte *p2, *p1;
-  for(i=0, p1=data, p2=(byte*)correct_words; i < 16; i++, p2 += 4 ) {
-    p2[3] = *p1++;
-    p2[2] = *p1++;
-    p2[1] = *p1++;
-    p2[0] = *p1++;
-  }
-  }
-#else
-  memcpy( correct_words, data, 64 );
-#endif
-
-
-#define OP(a, b, c, d, s, T)    \
-  do    \
-    {    \
-      a += FF (b, c, d) + (*cwp++) + T;     \
-      a = rol(a, s);    \
-      a += b;    \
-    }    \
-  while (0)
-
-  /* Before we start, one word about the strange constants.
-       They are defined in RFC 1321 as
-
-       T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64
-  */
-
-  /* Round 1.  */
-  OP (A, B, C, D,  7, 0xd76aa478);
-  OP (D, A, B, C, 12, 0xe8c7b756);
-  OP (C, D, A, B, 17, 0x242070db);
-  OP (B, C, D, A, 22, 0xc1bdceee);
-  OP (A, B, C, D,  7, 0xf57c0faf);
-  OP (D, A, B, C, 12, 0x4787c62a);
-  OP (C, D, A, B, 17, 0xa8304613);
-  OP (B, C, D, A, 22, 0xfd469501);
-  OP (A, B, C, D,  7, 0x698098d8);
-  OP (D, A, B, C, 12, 0x8b44f7af);
-  OP (C, D, A, B, 17, 0xffff5bb1);
-  OP (B, C, D, A, 22, 0x895cd7be);
-  OP (A, B, C, D,  7, 0x6b901122);
-  OP (D, A, B, C, 12, 0xfd987193);
-  OP (C, D, A, B, 17, 0xa679438e);
-  OP (B, C, D, A, 22, 0x49b40821);
-
-#undef OP
-#define OP(f, a, b, c, d, k, s, T)  \
-    do      \
-      {       \
-a += f (b, c, d) + correct_words[k] + T;      \
-a = rol(a, s);      \
-a += b;       \
-      }       \
-    while (0)
-
-  /* Round 2.  */
-  OP (FG, A, B, C, D,  1,  5, 0xf61e2562);
-  OP (FG, D, A, B, C,  6,  9, 0xc040b340);
-  OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
-  OP (FG, B, C, D, A,  0, 20, 0xe9b6c7aa);
-  OP (FG, A, B, C, D,  5,  5, 0xd62f105d);
-  OP (FG, D, A, B, C, 10,  9, 0x02441453);
-  OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
-  OP (FG, B, C, D, A,  4, 20, 0xe7d3fbc8);
-  OP (FG, A, B, C, D,  9,  5, 0x21e1cde6);
-  OP (FG, D, A, B, C, 14,  9, 0xc33707d6);
-  OP (FG, C, D, A, B,  3, 14, 0xf4d50d87);
-  OP (FG, B, C, D, A,  8, 20, 0x455a14ed);
-  OP (FG, A, B, C, D, 13,  5, 0xa9e3e905);
-  OP (FG, D, A, B, C,  2,  9, 0xfcefa3f8);
-  OP (FG, C, D, A, B,  7, 14, 0x676f02d9);
-  OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
-
-  /* Round 3.  */
-  OP (FH, A, B, C, D,  5,  4, 0xfffa3942);
-  OP (FH, D, A, B, C,  8, 11, 0x8771f681);
-  OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
-  OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
-  OP (FH, A, B, C, D,  1,  4, 0xa4beea44);
-  OP (FH, D, A, B, C,  4, 11, 0x4bdecfa9);
-  OP (FH, C, D, A, B,  7, 16, 0xf6bb4b60);
-  OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
-  OP (FH, A, B, C, D, 13,  4, 0x289b7ec6);
-  OP (FH, D, A, B, C,  0, 11, 0xeaa127fa);
-  OP (FH, C, D, A, B,  3, 16, 0xd4ef3085);
-  OP (FH, B, C, D, A,  6, 23, 0x04881d05);
-  OP (FH, A, B, C, D,  9,  4, 0xd9d4d039);
-  OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
-  OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
-  OP (FH, B, C, D, A,  2, 23, 0xc4ac5665);
-
-  /* Round 4.  */
-  OP (FI, A, B, C, D,  0,  6, 0xf4292244);
-  OP (FI, D, A, B, C,  7, 10, 0x432aff97);
-  OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
-  OP (FI, B, C, D, A,  5, 21, 0xfc93a039);
-  OP (FI, A, B, C, D, 12,  6, 0x655b59c3);
-  OP (FI, D, A, B, C,  3, 10, 0x8f0ccc92);
-  OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
-  OP (FI, B, C, D, A,  1, 21, 0x85845dd1);
-  OP (FI, A, B, C, D,  8,  6, 0x6fa87e4f);
-  OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
-  OP (FI, C, D, A, B,  6, 15, 0xa3014314);
-  OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
-  OP (FI, A, B, C, D,  4,  6, 0xf7537e82);
-  OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
-  OP (FI, C, D, A, B,  2, 15, 0x2ad7d2bb);
-  OP (FI, B, C, D, A,  9, 21, 0xeb86d391);
-
-  /* Put checksum in context given as argument.  */
-  ctx->A += A;
-  ctx->B += B;
-  ctx->C += C;
-  ctx->D += D;
-}
-
-
-
-/* The routine updates the message-digest context to
- * account for the presence of each of the characters inBuf[0..inLen-1]
- * in the message whose digest is being computed.
- */
-void
-md5_write( MD5_CONTEXT *hd, byte *inbuf, size_t inlen)
-{
-  if( hd->count == 64 ) { /* flush the buffer */
-    transform( hd, hd->buf );
-    burn_stack (80+6*sizeof(void*));
-    hd->count = 0;
-    hd->nblocks++;
-  }
-  if( !inbuf )
-    return;
-  if( hd->count ) {
-    for( ; inlen && hd->count < 64; inlen-- )
-      hd->buf[hd->count++] = *inbuf++;
-    md5_write( hd, NULL, 0 );
-    if( !inlen )
-      return;
-  }
-
-  while( inlen >= 64 ) {
-    transform( hd, inbuf );
-    hd->count = 0;
-    hd->nblocks++;
-    inlen -= 64;
-    inbuf += 64;
-  }
-  burn_stack (80+6*sizeof(void*));
-  for( ; inlen && hd->count < 64; inlen-- )
-    hd->buf[hd->count++] = *inbuf++;
-}
-/* The routine final terminates the message-digest computation and
- * ends with the desired message digest in mdContext->digest[0...15].
- * The handle is prepared for a new MD5 cycle.
- * Returns 16 bytes representing the digest.
- */
-
-void
-md5_final( MD5_CONTEXT *hd )
-{
-  u32 t, msb, lsb;
-  byte *p;
-
-  md5_write(hd, NULL, 0); /* flush */;
-
-  t = hd->nblocks;
-  /* multiply by 64 to make a byte count */
-  lsb = t << 6;
-  msb = t >> 26;
-  /* add the count */
-  t = lsb;
-  if( (lsb += hd->count) < t )
-    msb++;
-  /* multiply by 8 to make a bit count */
-  t = lsb;
-  lsb <<= 3;
-  msb <<= 3;
-  msb |= t >> 29;
-
-  if( hd->count < 56 ) { /* enough room */
-    hd->buf[hd->count++] = 0x80; /* pad */
-    while( hd->count < 56 )
-      hd->buf[hd->count++] = 0;  /* pad */
-  }
-  else { /* need one extra block */
-    hd->buf[hd->count++] = 0x80; /* pad character */
-    while( hd->count < 64 )
-      hd->buf[hd->count++] = 0;
-    md5_write(hd, NULL, 0);  /* flush */;
-    memset(hd->buf, 0, 56 ); /* fill next block with zeroes */
-  }
-  /* append the 64 bit count */
-  hd->buf[56] = lsb   ;
-  hd->buf[57] = lsb >>  8;
-  hd->buf[58] = lsb >> 16;
-  hd->buf[59] = lsb >> 24;
-  hd->buf[60] = msb   ;
-  hd->buf[61] = msb >>  8;
-  hd->buf[62] = msb >> 16;
-  hd->buf[63] = msb >> 24;
-  transform( hd, hd->buf );
-  burn_stack (80+6*sizeof(void*));
-
-  p = hd->buf;
-#ifdef BIG_ENDIAN_HOST
-#define X(a) do { *p++ = hd-> a      ; *p++ = hd-> a >> 8;      \
-      *p++ = hd-> a >> 16; *p++ = hd-> a >> 24; } while(0)
-#else /* little endian */
-#define X(a) do { *(u32*)p = hd-> a ; p += 4; } while(0)
-#endif
-  X(A);
-  X(B);
-  X(C);
-  X(D);
-#undef X
-
-}
-
-static byte *
-md5_read( MD5_CONTEXT *hd )
-{
-  return hd->buf;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.h b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.h
deleted file mode 100644
index e1607be9..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/md5.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* MD5.H - header file for MD5C.C
- */
-
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
- */
-
-/* MD5 context. */
-
-#include "types.h"
-
-typedef struct {
-  u32 A,B,C,D;          /* chaining variables */
-  u32  nblocks;
-  byte buf[64];
-  int  count;
-} MD5_CONTEXT;
-
-void md5_init( MD5_CONTEXT *ctx );
-void md5_write( MD5_CONTEXT *hd, byte *inbuf, size_t inlen);
-void md5_final( MD5_CONTEXT *hd );
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/regionName.c b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/regionName.c
deleted file mode 100644
index 4f90f386..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/regionName.c
+++ /dev/null
@@ -1,12780 +0,0 @@
-#include <string.h>
-#include <stdio.h>
-
-const char * GeoIP_region_name_by_code(const char * country_code,const char * region_code) {
-  const char * name = NULL;
-  int region_code2 = -1;
-  if (region_code == NULL) { return NULL; }
-
-  if (   ((region_code[0] >= 48) && (region_code[0] < (48 + 10)))
-      && ((region_code[1] >= 48) && (region_code[1] < (48 + 10)))
-  ) {
-
-    /* only numbers, that shorten the large switch statements */
-    region_code2 = (region_code[0] - 48) * 10 + region_code[1] - 48;
-  }
-
-  else if (    (    ((region_code[0] >= 65) && (region_code[0] < (65 + 26)))
-                 || ((region_code[0] >= 48) && (region_code[0] < (48 + 10))))
-            && (    ((region_code[1] >= 65) && (region_code[1] < (65 + 26)))
-                 || ((region_code[1] >= 48) && (region_code[1] < (48 + 10))))
-  ) {
-
-    region_code2 = (region_code[0] - 48) * (65 + 26 - 48) + region_code[1] - 48 + 100;
-  }
-
-  if (region_code2 == -1) {return NULL;}
-
-  if (strcmp(country_code,"CA") == 0) {
-    switch (region_code2) {
-      case 849:
-      name = "Alberta";
-      break;
-      case 893:
-      name = "British Columbia";
-      break;
-      case 1365:
-      name = "Manitoba";
-      break;
-      case 1408:
-      name = "New Brunswick";
-      break;
-      case 1418:
-      name = "Newfoundland";
-      break;
-      case 1425:
-      name = "Nova Scotia";
-      break;
-      case 1427:
-      name = "Nunavut";
-      break;
-      case 1463:
-      name = "Ontario";
-      break;
-      case 1497:
-      name = "Prince Edward Island";
-      break;
-      case 1538:
-      name = "Quebec";
-      break;
-      case 1632:
-      name = "Saskatchewan";
-      break;
-      case 1426:
-      name = "Northwest Territories";
-      break;
-      case 1899:
-      name = "Yukon Territory";
-      break;
-    }
-  }
-  if (strcmp(country_code,"US") == 0) {
-    switch (region_code2) {
-      case 848:
-      name = "Armed Forces Americas";
-      break;
-      case 852:
-      name = "Armed Forces Europe, Middle East, & Canada";
-      break;
-      case 858:
-      name = "Alaska";
-      break;
-      case 859:
-      name = "Alabama";
-      break;
-      case 863:
-      name = "Armed Forces Pacific";
-      break;
-      case 865:
-      name = "Arkansas";
-      break;
-      case 866:
-      name = "American Samoa";
-      break;
-      case 873:
-      name = "Arizona";
-      break;
-      case 934:
-      name = "California";
-      break;
-      case 948:
-      name = "Colorado";
-      break;
-      case 953:
-      name = "Connecticut";
-      break;
-      case 979:
-      name = "District of Columbia";
-      break;
-      case 981:
-      name = "Delaware";
-      break;
-      case 1074:
-      name = "Florida";
-      break;
-      case 1075:
-      name = "Federated States of Micronesia";
-      break;
-      case 1106:
-      name = "Georgia";
-      break;
-      case 1126:
-      name = "Guam";
-      break;
-      case 1157:
-      name = "Hawaii";
-      break;
-      case 1192:
-      name = "Iowa";
-      break;
-      case 1195:
-      name = "Idaho";
-      break;
-      case 1203:
-      name = "Illinois";
-      break;
-      case 1205:
-      name = "Indiana";
-      break;
-      case 1296:
-      name = "Kansas";
-      break;
-      case 1302:
-      name = "Kentucky";
-      break;
-      case 1321:
-      name = "Louisiana";
-      break;
-      case 1364:
-      name = "Massachusetts";
-      break;
-      case 1367:
-      name = "Maryland";
-      break;
-      case 1368:
-      name = "Maine";
-      break;
-      case 1371:
-      name = "Marshall Islands";
-      break;
-      case 1372:
-      name = "Michigan";
-      break;
-      case 1377:
-      name = "Minnesota";
-      break;
-      case 1378:
-      name = "Missouri";
-      break;
-      case 1379:
-      name = "Northern Mariana Islands";
-      break;
-      case 1382:
-      name = "Mississippi";
-      break;
-      case 1383:
-      name = "Montana";
-      break;
-      case 1409:
-      name = "North Carolina";
-      break;
-      case 1410:
-      name = "North Dakota";
-      break;
-      case 1411:
-      name = "Nebraska";
-      break;
-      case 1414:
-      name = "New Hampshire";
-      break;
-      case 1416:
-      name = "New Jersey";
-      break;
-      case 1419:
-      name = "New Mexico";
-      break;
-      case 1428:
-      name = "Nevada";
-      break;
-      case 1431:
-      name = "New York";
-      break;
-      case 1457:
-      name = "Ohio";
-      break;
-      case 1460:
-      name = "Oklahoma";
-      break;
-      case 1467:
-      name = "Oregon";
-      break;
-      case 1493:
-      name = "Pennsylvania";
-      break;
-      case 1510:
-      name = "Puerto Rico";
-      break;
-      case 1515:
-      name = "Palau";
-      break;
-      case 1587:
-      name = "Rhode Island";
-      break;
-      case 1624:
-      name = "South Carolina";
-      break;
-      case 1625:
-      name = "South Dakota";
-      break;
-      case 1678:
-      name = "Tennessee";
-      break;
-      case 1688:
-      name = "Texas";
-      break;
-      case 1727:
-      name = "Utah";
-      break;
-      case 1751:
-      name = "Virginia";
-      break;
-      case 1759:
-      name = "Virgin Islands";
-      break;
-      case 1770:
-      name = "Vermont";
-      break;
-      case 1794:
-      name = "Washington";
-      break;
-      case 1815:
-      name = "West Virginia";
-      break;
-      case 1802:
-      name = "Wisconsin";
-      break;
-      case 1818:
-      name = "Wyoming";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AD") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Canillo";
-      break;
-      case 3:
-      name = "Encamp";
-      break;
-      case 4:
-      name = "La Massana";
-      break;
-      case 5:
-      name = "Ordino";
-      break;
-      case 6:
-      name = "Sant Julia de Loria";
-      break;
-      case 7:
-      name = "Andorra la Vella";
-      break;
-      case 8:
-      name = "Escaldes-Engordany";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Abu Dhabi";
-      break;
-      case 2:
-      name = "Ajman";
-      break;
-      case 3:
-      name = "Dubai";
-      break;
-      case 4:
-      name = "Fujairah";
-      break;
-      case 5:
-      name = "Ras Al Khaimah";
-      break;
-      case 6:
-      name = "Sharjah";
-      break;
-      case 7:
-      name = "Umm Al Quwain";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AF") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Badakhshan";
-      break;
-      case 2:
-      name = "Badghis";
-      break;
-      case 3:
-      name = "Baghlan";
-      break;
-      case 5:
-      name = "Bamian";
-      break;
-      case 6:
-      name = "Farah";
-      break;
-      case 7:
-      name = "Faryab";
-      break;
-      case 8:
-      name = "Ghazni";
-      break;
-      case 9:
-      name = "Ghowr";
-      break;
-      case 10:
-      name = "Helmand";
-      break;
-      case 11:
-      name = "Herat";
-      break;
-      case 13:
-      name = "Kabol";
-      break;
-      case 14:
-      name = "Kapisa";
-      break;
-      case 17:
-      name = "Lowgar";
-      break;
-      case 18:
-      name = "Nangarhar";
-      break;
-      case 19:
-      name = "Nimruz";
-      break;
-      case 23:
-      name = "Kandahar";
-      break;
-      case 24:
-      name = "Kondoz";
-      break;
-      case 26:
-      name = "Takhar";
-      break;
-      case 27:
-      name = "Vardak";
-      break;
-      case 28:
-      name = "Zabol";
-      break;
-      case 29:
-      name = "Paktika";
-      break;
-      case 30:
-      name = "Balkh";
-      break;
-      case 31:
-      name = "Jowzjan";
-      break;
-      case 32:
-      name = "Samangan";
-      break;
-      case 33:
-      name = "Sar-e Pol";
-      break;
-      case 34:
-      name = "Konar";
-      break;
-      case 35:
-      name = "Laghman";
-      break;
-      case 36:
-      name = "Paktia";
-      break;
-      case 37:
-      name = "Khowst";
-      break;
-      case 38:
-      name = "Nurestan";
-      break;
-      case 39:
-      name = "Oruzgan";
-      break;
-      case 40:
-      name = "Parvan";
-      break;
-      case 41:
-      name = "Daykondi";
-      break;
-      case 42:
-      name = "Panjshir";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AG") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Barbuda";
-      break;
-      case 3:
-      name = "Saint George";
-      break;
-      case 4:
-      name = "Saint John";
-      break;
-      case 5:
-      name = "Saint Mary";
-      break;
-      case 6:
-      name = "Saint Paul";
-      break;
-      case 7:
-      name = "Saint Peter";
-      break;
-      case 8:
-      name = "Saint Philip";
-      break;
-      case 9:
-      name = "Redonda";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AL") == 0) {
-    switch (region_code2) {
-      case 40:
-      name = "Berat";
-      break;
-      case 41:
-      name = "Diber";
-      break;
-      case 42:
-      name = "Durres";
-      break;
-      case 43:
-      name = "Elbasan";
-      break;
-      case 44:
-      name = "Fier";
-      break;
-      case 45:
-      name = "Gjirokaster";
-      break;
-      case 46:
-      name = "Korce";
-      break;
-      case 47:
-      name = "Kukes";
-      break;
-      case 48:
-      name = "Lezhe";
-      break;
-      case 49:
-      name = "Shkoder";
-      break;
-      case 50:
-      name = "Tirane";
-      break;
-      case 51:
-      name = "Vlore";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aragatsotn";
-      break;
-      case 2:
-      name = "Ararat";
-      break;
-      case 3:
-      name = "Armavir";
-      break;
-      case 4:
-      name = "Geghark'unik'";
-      break;
-      case 5:
-      name = "Kotayk'";
-      break;
-      case 6:
-      name = "Lorri";
-      break;
-      case 7:
-      name = "Shirak";
-      break;
-      case 8:
-      name = "Syunik'";
-      break;
-      case 9:
-      name = "Tavush";
-      break;
-      case 10:
-      name = "Vayots' Dzor";
-      break;
-      case 11:
-      name = "Yerevan";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Benguela";
-      break;
-      case 2:
-      name = "Bie";
-      break;
-      case 3:
-      name = "Cabinda";
-      break;
-      case 4:
-      name = "Cuando Cubango";
-      break;
-      case 5:
-      name = "Cuanza Norte";
-      break;
-      case 6:
-      name = "Cuanza Sul";
-      break;
-      case 7:
-      name = "Cunene";
-      break;
-      case 8:
-      name = "Huambo";
-      break;
-      case 9:
-      name = "Huila";
-      break;
-      case 12:
-      name = "Malanje";
-      break;
-      case 13:
-      name = "Namibe";
-      break;
-      case 14:
-      name = "Moxico";
-      break;
-      case 15:
-      name = "Uige";
-      break;
-      case 16:
-      name = "Zaire";
-      break;
-      case 17:
-      name = "Lunda Norte";
-      break;
-      case 18:
-      name = "Lunda Sul";
-      break;
-      case 19:
-      name = "Bengo";
-      break;
-      case 20:
-      name = "Luanda";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Buenos Aires";
-      break;
-      case 2:
-      name = "Catamarca";
-      break;
-      case 3:
-      name = "Chaco";
-      break;
-      case 4:
-      name = "Chubut";
-      break;
-      case 5:
-      name = "Cordoba";
-      break;
-      case 6:
-      name = "Corrientes";
-      break;
-      case 7:
-      name = "Distrito Federal";
-      break;
-      case 8:
-      name = "Entre Rios";
-      break;
-      case 9:
-      name = "Formosa";
-      break;
-      case 10:
-      name = "Jujuy";
-      break;
-      case 11:
-      name = "La Pampa";
-      break;
-      case 12:
-      name = "La Rioja";
-      break;
-      case 13:
-      name = "Mendoza";
-      break;
-      case 14:
-      name = "Misiones";
-      break;
-      case 15:
-      name = "Neuquen";
-      break;
-      case 16:
-      name = "Rio Negro";
-      break;
-      case 17:
-      name = "Salta";
-      break;
-      case 18:
-      name = "San Juan";
-      break;
-      case 19:
-      name = "San Luis";
-      break;
-      case 20:
-      name = "Santa Cruz";
-      break;
-      case 21:
-      name = "Santa Fe";
-      break;
-      case 22:
-      name = "Santiago del Estero";
-      break;
-      case 23:
-      name = "Tierra del Fuego";
-      break;
-      case 24:
-      name = "Tucuman";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AT") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Burgenland";
-      break;
-      case 2:
-      name = "Karnten";
-      break;
-      case 3:
-      name = "Niederosterreich";
-      break;
-      case 4:
-      name = "Oberosterreich";
-      break;
-      case 5:
-      name = "Salzburg";
-      break;
-      case 6:
-      name = "Steiermark";
-      break;
-      case 7:
-      name = "Tirol";
-      break;
-      case 8:
-      name = "Vorarlberg";
-      break;
-      case 9:
-      name = "Wien";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AU") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Australian Capital Territory";
-      break;
-      case 2:
-      name = "New South Wales";
-      break;
-      case 3:
-      name = "Northern Territory";
-      break;
-      case 4:
-      name = "Queensland";
-      break;
-      case 5:
-      name = "South Australia";
-      break;
-      case 6:
-      name = "Tasmania";
-      break;
-      case 7:
-      name = "Victoria";
-      break;
-      case 8:
-      name = "Western Australia";
-      break;
-    }
-  }
-  if (strcmp(country_code,"AZ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Abseron";
-      break;
-      case 2:
-      name = "Agcabadi";
-      break;
-      case 3:
-      name = "Agdam";
-      break;
-      case 4:
-      name = "Agdas";
-      break;
-      case 5:
-      name = "Agstafa";
-      break;
-      case 6:
-      name = "Agsu";
-      break;
-      case 7:
-      name = "Ali Bayramli";
-      break;
-      case 8:
-      name = "Astara";
-      break;
-      case 9:
-      name = "Baki";
-      break;
-      case 10:
-      name = "Balakan";
-      break;
-      case 11:
-      name = "Barda";
-      break;
-      case 12:
-      name = "Beylaqan";
-      break;
-      case 13:
-      name = "Bilasuvar";
-      break;
-      case 14:
-      name = "Cabrayil";
-      break;
-      case 15:
-      name = "Calilabad";
-      break;
-      case 16:
-      name = "Daskasan";
-      break;
-      case 17:
-      name = "Davaci";
-      break;
-      case 18:
-      name = "Fuzuli";
-      break;
-      case 19:
-      name = "Gadabay";
-      break;
-      case 20:
-      name = "Ganca";
-      break;
-      case 21:
-      name = "Goranboy";
-      break;
-      case 22:
-      name = "Goycay";
-      break;
-      case 23:
-      name = "Haciqabul";
-      break;
-      case 24:
-      name = "Imisli";
-      break;
-      case 25:
-      name = "Ismayilli";
-      break;
-      case 26:
-      name = "Kalbacar";
-      break;
-      case 27:
-      name = "Kurdamir";
-      break;
-      case 28:
-      name = "Lacin";
-      break;
-      case 29:
-      name = "Lankaran";
-      break;
-      case 30:
-      name = "Lankaran";
-      break;
-      case 31:
-      name = "Lerik";
-      break;
-      case 32:
-      name = "Masalli";
-      break;
-      case 33:
-      name = "Mingacevir";
-      break;
-      case 34:
-      name = "Naftalan";
-      break;
-      case 35:
-      name = "Naxcivan";
-      break;
-      case 36:
-      name = "Neftcala";
-      break;
-      case 37:
-      name = "Oguz";
-      break;
-      case 38:
-      name = "Qabala";
-      break;
-      case 39:
-      name = "Qax";
-      break;
-      case 40:
-      name = "Qazax";
-      break;
-      case 41:
-      name = "Qobustan";
-      break;
-      case 42:
-      name = "Quba";
-      break;
-      case 43:
-      name = "Qubadli";
-      break;
-      case 44:
-      name = "Qusar";
-      break;
-      case 45:
-      name = "Saatli";
-      break;
-      case 46:
-      name = "Sabirabad";
-      break;
-      case 47:
-      name = "Saki";
-      break;
-      case 48:
-      name = "Saki";
-      break;
-      case 49:
-      name = "Salyan";
-      break;
-      case 50:
-      name = "Samaxi";
-      break;
-      case 51:
-      name = "Samkir";
-      break;
-      case 52:
-      name = "Samux";
-      break;
-      case 53:
-      name = "Siyazan";
-      break;
-      case 54:
-      name = "Sumqayit";
-      break;
-      case 55:
-      name = "Susa";
-      break;
-      case 56:
-      name = "Susa";
-      break;
-      case 57:
-      name = "Tartar";
-      break;
-      case 58:
-      name = "Tovuz";
-      break;
-      case 59:
-      name = "Ucar";
-      break;
-      case 60:
-      name = "Xacmaz";
-      break;
-      case 61:
-      name = "Xankandi";
-      break;
-      case 62:
-      name = "Xanlar";
-      break;
-      case 63:
-      name = "Xizi";
-      break;
-      case 64:
-      name = "Xocali";
-      break;
-      case 65:
-      name = "Xocavand";
-      break;
-      case 66:
-      name = "Yardimli";
-      break;
-      case 67:
-      name = "Yevlax";
-      break;
-      case 68:
-      name = "Yevlax";
-      break;
-      case 69:
-      name = "Zangilan";
-      break;
-      case 70:
-      name = "Zaqatala";
-      break;
-      case 71:
-      name = "Zardab";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BA") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Federation of Bosnia and Herzegovina";
-      break;
-      case 2:
-      name = "Republika Srpska";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BB") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Christ Church";
-      break;
-      case 2:
-      name = "Saint Andrew";
-      break;
-      case 3:
-      name = "Saint George";
-      break;
-      case 4:
-      name = "Saint James";
-      break;
-      case 5:
-      name = "Saint John";
-      break;
-      case 6:
-      name = "Saint Joseph";
-      break;
-      case 7:
-      name = "Saint Lucy";
-      break;
-      case 8:
-      name = "Saint Michael";
-      break;
-      case 9:
-      name = "Saint Peter";
-      break;
-      case 10:
-      name = "Saint Philip";
-      break;
-      case 11:
-      name = "Saint Thomas";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BD") == 0) {
-    switch (region_code2) {
-      case 81:
-      name = "Dhaka";
-      break;
-      case 82:
-      name = "Khulna";
-      break;
-      case 83:
-      name = "Rajshahi";
-      break;
-      case 84:
-      name = "Chittagong";
-      break;
-      case 85:
-      name = "Barisal";
-      break;
-      case 86:
-      name = "Sylhet";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Antwerpen";
-      break;
-      case 3:
-      name = "Hainaut";
-      break;
-      case 4:
-      name = "Liege";
-      break;
-      case 5:
-      name = "Limburg";
-      break;
-      case 6:
-      name = "Luxembourg";
-      break;
-      case 7:
-      name = "Namur";
-      break;
-      case 8:
-      name = "Oost-Vlaanderen";
-      break;
-      case 9:
-      name = "West-Vlaanderen";
-      break;
-      case 10:
-      name = "Brabant Wallon";
-      break;
-      case 11:
-      name = "Brussels Hoofdstedelijk Gewest";
-      break;
-      case 12:
-      name = "Vlaams-Brabant";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BF") == 0) {
-    switch (region_code2) {
-      case 15:
-      name = "Bam";
-      break;
-      case 19:
-      name = "Boulkiemde";
-      break;
-      case 20:
-      name = "Ganzourgou";
-      break;
-      case 21:
-      name = "Gnagna";
-      break;
-      case 28:
-      name = "Kouritenga";
-      break;
-      case 33:
-      name = "Oudalan";
-      break;
-      case 34:
-      name = "Passore";
-      break;
-      case 36:
-      name = "Sanguie";
-      break;
-      case 40:
-      name = "Soum";
-      break;
-      case 42:
-      name = "Tapoa";
-      break;
-      case 44:
-      name = "Zoundweogo";
-      break;
-      case 45:
-      name = "Bale";
-      break;
-      case 46:
-      name = "Banwa";
-      break;
-      case 47:
-      name = "Bazega";
-      break;
-      case 48:
-      name = "Bougouriba";
-      break;
-      case 49:
-      name = "Boulgou";
-      break;
-      case 50:
-      name = "Gourma";
-      break;
-      case 51:
-      name = "Houet";
-      break;
-      case 52:
-      name = "Ioba";
-      break;
-      case 53:
-      name = "Kadiogo";
-      break;
-      case 54:
-      name = "Kenedougou";
-      break;
-      case 55:
-      name = "Komoe";
-      break;
-      case 56:
-      name = "Komondjari";
-      break;
-      case 57:
-      name = "Kompienga";
-      break;
-      case 58:
-      name = "Kossi";
-      break;
-      case 59:
-      name = "Koulpelogo";
-      break;
-      case 60:
-      name = "Kourweogo";
-      break;
-      case 61:
-      name = "Leraba";
-      break;
-      case 62:
-      name = "Loroum";
-      break;
-      case 63:
-      name = "Mouhoun";
-      break;
-      case 64:
-      name = "Namentenga";
-      break;
-      case 65:
-      name = "Naouri";
-      break;
-      case 66:
-      name = "Nayala";
-      break;
-      case 67:
-      name = "Noumbiel";
-      break;
-      case 68:
-      name = "Oubritenga";
-      break;
-      case 69:
-      name = "Poni";
-      break;
-      case 70:
-      name = "Sanmatenga";
-      break;
-      case 71:
-      name = "Seno";
-      break;
-      case 72:
-      name = "Sissili";
-      break;
-      case 73:
-      name = "Sourou";
-      break;
-      case 74:
-      name = "Tuy";
-      break;
-      case 75:
-      name = "Yagha";
-      break;
-      case 76:
-      name = "Yatenga";
-      break;
-      case 77:
-      name = "Ziro";
-      break;
-      case 78:
-      name = "Zondoma";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BG") == 0) {
-    switch (region_code2) {
-      case 33:
-      name = "Mikhaylovgrad";
-      break;
-      case 38:
-      name = "Blagoevgrad";
-      break;
-      case 39:
-      name = "Burgas";
-      break;
-      case 40:
-      name = "Dobrich";
-      break;
-      case 41:
-      name = "Gabrovo";
-      break;
-      case 42:
-      name = "Grad Sofiya";
-      break;
-      case 43:
-      name = "Khaskovo";
-      break;
-      case 44:
-      name = "Kurdzhali";
-      break;
-      case 45:
-      name = "Kyustendil";
-      break;
-      case 46:
-      name = "Lovech";
-      break;
-      case 47:
-      name = "Montana";
-      break;
-      case 48:
-      name = "Pazardzhik";
-      break;
-      case 49:
-      name = "Pernik";
-      break;
-      case 50:
-      name = "Pleven";
-      break;
-      case 51:
-      name = "Plovdiv";
-      break;
-      case 52:
-      name = "Razgrad";
-      break;
-      case 53:
-      name = "Ruse";
-      break;
-      case 54:
-      name = "Shumen";
-      break;
-      case 55:
-      name = "Silistra";
-      break;
-      case 56:
-      name = "Sliven";
-      break;
-      case 57:
-      name = "Smolyan";
-      break;
-      case 58:
-      name = "Sofiya";
-      break;
-      case 59:
-      name = "Stara Zagora";
-      break;
-      case 60:
-      name = "Turgovishte";
-      break;
-      case 61:
-      name = "Varna";
-      break;
-      case 62:
-      name = "Veliko Turnovo";
-      break;
-      case 63:
-      name = "Vidin";
-      break;
-      case 64:
-      name = "Vratsa";
-      break;
-      case 65:
-      name = "Yambol";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BH") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Al Hadd";
-      break;
-      case 2:
-      name = "Al Manamah";
-      break;
-      case 5:
-      name = "Jidd Hafs";
-      break;
-      case 6:
-      name = "Sitrah";
-      break;
-      case 8:
-      name = "Al Mintaqah al Gharbiyah";
-      break;
-      case 9:
-      name = "Mintaqat Juzur Hawar";
-      break;
-      case 10:
-      name = "Al Mintaqah ash Shamaliyah";
-      break;
-      case 11:
-      name = "Al Mintaqah al Wusta";
-      break;
-      case 12:
-      name = "Madinat";
-      break;
-      case 13:
-      name = "Ar Rifa";
-      break;
-      case 14:
-      name = "Madinat Hamad";
-      break;
-      case 15:
-      name = "Al Muharraq";
-      break;
-      case 16:
-      name = "Al Asimah";
-      break;
-      case 17:
-      name = "Al Janubiyah";
-      break;
-      case 18:
-      name = "Ash Shamaliyah";
-      break;
-      case 19:
-      name = "Al Wusta";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BI") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Bujumbura";
-      break;
-      case 9:
-      name = "Bubanza";
-      break;
-      case 10:
-      name = "Bururi";
-      break;
-      case 11:
-      name = "Cankuzo";
-      break;
-      case 12:
-      name = "Cibitoke";
-      break;
-      case 13:
-      name = "Gitega";
-      break;
-      case 14:
-      name = "Karuzi";
-      break;
-      case 15:
-      name = "Kayanza";
-      break;
-      case 16:
-      name = "Kirundo";
-      break;
-      case 17:
-      name = "Makamba";
-      break;
-      case 18:
-      name = "Muyinga";
-      break;
-      case 19:
-      name = "Ngozi";
-      break;
-      case 20:
-      name = "Rutana";
-      break;
-      case 21:
-      name = "Ruyigi";
-      break;
-      case 22:
-      name = "Muramvya";
-      break;
-      case 23:
-      name = "Mwaro";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BJ") == 0) {
-    switch (region_code2) {
-      case 7:
-      name = "Alibori";
-      break;
-      case 8:
-      name = "Atakora";
-      break;
-      case 9:
-      name = "Atlanyique";
-      break;
-      case 10:
-      name = "Borgou";
-      break;
-      case 11:
-      name = "Collines";
-      break;
-      case 12:
-      name = "Kouffo";
-      break;
-      case 13:
-      name = "Donga";
-      break;
-      case 14:
-      name = "Littoral";
-      break;
-      case 15:
-      name = "Mono";
-      break;
-      case 16:
-      name = "Oueme";
-      break;
-      case 17:
-      name = "Plateau";
-      break;
-      case 18:
-      name = "Zou";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Devonshire";
-      break;
-      case 2:
-      name = "Hamilton";
-      break;
-      case 3:
-      name = "Hamilton";
-      break;
-      case 4:
-      name = "Paget";
-      break;
-      case 5:
-      name = "Pembroke";
-      break;
-      case 6:
-      name = "Saint George";
-      break;
-      case 7:
-      name = "Saint George's";
-      break;
-      case 8:
-      name = "Sandys";
-      break;
-      case 9:
-      name = "Smiths";
-      break;
-      case 10:
-      name = "Southampton";
-      break;
-      case 11:
-      name = "Warwick";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BN") == 0) {
-    switch (region_code2) {
-      case 7:
-      name = "Alibori";
-      break;
-      case 8:
-      name = "Belait";
-      break;
-      case 9:
-      name = "Brunei and Muara";
-      break;
-      case 10:
-      name = "Temburong";
-      break;
-      case 11:
-      name = "Collines";
-      break;
-      case 12:
-      name = "Kouffo";
-      break;
-      case 13:
-      name = "Donga";
-      break;
-      case 14:
-      name = "Littoral";
-      break;
-      case 15:
-      name = "Tutong";
-      break;
-      case 16:
-      name = "Oueme";
-      break;
-      case 17:
-      name = "Plateau";
-      break;
-      case 18:
-      name = "Zou";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Chuquisaca";
-      break;
-      case 2:
-      name = "Cochabamba";
-      break;
-      case 3:
-      name = "El Beni";
-      break;
-      case 4:
-      name = "La Paz";
-      break;
-      case 5:
-      name = "Oruro";
-      break;
-      case 6:
-      name = "Pando";
-      break;
-      case 7:
-      name = "Potosi";
-      break;
-      case 8:
-      name = "Santa Cruz";
-      break;
-      case 9:
-      name = "Tarija";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Acre";
-      break;
-      case 2:
-      name = "Alagoas";
-      break;
-      case 3:
-      name = "Amapa";
-      break;
-      case 4:
-      name = "Amazonas";
-      break;
-      case 5:
-      name = "Bahia";
-      break;
-      case 6:
-      name = "Ceara";
-      break;
-      case 7:
-      name = "Distrito Federal";
-      break;
-      case 8:
-      name = "Espirito Santo";
-      break;
-      case 11:
-      name = "Mato Grosso do Sul";
-      break;
-      case 13:
-      name = "Maranhao";
-      break;
-      case 14:
-      name = "Mato Grosso";
-      break;
-      case 15:
-      name = "Minas Gerais";
-      break;
-      case 16:
-      name = "Para";
-      break;
-      case 17:
-      name = "Paraiba";
-      break;
-      case 18:
-      name = "Parana";
-      break;
-      case 20:
-      name = "Piaui";
-      break;
-      case 21:
-      name = "Rio de Janeiro";
-      break;
-      case 22:
-      name = "Rio Grande do Norte";
-      break;
-      case 23:
-      name = "Rio Grande do Sul";
-      break;
-      case 24:
-      name = "Rondonia";
-      break;
-      case 25:
-      name = "Roraima";
-      break;
-      case 26:
-      name = "Santa Catarina";
-      break;
-      case 27:
-      name = "Sao Paulo";
-      break;
-      case 28:
-      name = "Sergipe";
-      break;
-      case 29:
-      name = "Goias";
-      break;
-      case 30:
-      name = "Pernambuco";
-      break;
-      case 31:
-      name = "Tocantins";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BS") == 0) {
-    switch (region_code2) {
-      case 5:
-      name = "Bimini";
-      break;
-      case 6:
-      name = "Cat Island";
-      break;
-      case 10:
-      name = "Exuma";
-      break;
-      case 13:
-      name = "Inagua";
-      break;
-      case 15:
-      name = "Long Island";
-      break;
-      case 16:
-      name = "Mayaguana";
-      break;
-      case 18:
-      name = "Ragged Island";
-      break;
-      case 22:
-      name = "Harbour Island";
-      break;
-      case 23:
-      name = "New Providence";
-      break;
-      case 24:
-      name = "Acklins and Crooked Islands";
-      break;
-      case 25:
-      name = "Freeport";
-      break;
-      case 26:
-      name = "Fresh Creek";
-      break;
-      case 27:
-      name = "Governor's Harbour";
-      break;
-      case 28:
-      name = "Green Turtle Cay";
-      break;
-      case 29:
-      name = "High Rock";
-      break;
-      case 30:
-      name = "Kemps Bay";
-      break;
-      case 31:
-      name = "Marsh Harbour";
-      break;
-      case 32:
-      name = "Nichollstown and Berry Islands";
-      break;
-      case 33:
-      name = "Rock Sound";
-      break;
-      case 34:
-      name = "Sandy Point";
-      break;
-      case 35:
-      name = "San Salvador and Rum Cay";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BT") == 0) {
-    switch (region_code2) {
-      case 5:
-      name = "Bumthang";
-      break;
-      case 6:
-      name = "Chhukha";
-      break;
-      case 7:
-      name = "Chirang";
-      break;
-      case 8:
-      name = "Daga";
-      break;
-      case 9:
-      name = "Geylegphug";
-      break;
-      case 10:
-      name = "Ha";
-      break;
-      case 11:
-      name = "Lhuntshi";
-      break;
-      case 12:
-      name = "Mongar";
-      break;
-      case 13:
-      name = "Paro";
-      break;
-      case 14:
-      name = "Pemagatsel";
-      break;
-      case 15:
-      name = "Punakha";
-      break;
-      case 16:
-      name = "Samchi";
-      break;
-      case 17:
-      name = "Samdrup";
-      break;
-      case 18:
-      name = "Shemgang";
-      break;
-      case 19:
-      name = "Tashigang";
-      break;
-      case 20:
-      name = "Thimphu";
-      break;
-      case 21:
-      name = "Tongsa";
-      break;
-      case 22:
-      name = "Wangdi Phodrang";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BW") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Central";
-      break;
-      case 3:
-      name = "Ghanzi";
-      break;
-      case 4:
-      name = "Kgalagadi";
-      break;
-      case 5:
-      name = "Kgatleng";
-      break;
-      case 6:
-      name = "Kweneng";
-      break;
-      case 8:
-      name = "North-East";
-      break;
-      case 9:
-      name = "South-East";
-      break;
-      case 10:
-      name = "Southern";
-      break;
-      case 11:
-      name = "North-West";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BY") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Brestskaya Voblasts'";
-      break;
-      case 2:
-      name = "Homyel'skaya Voblasts'";
-      break;
-      case 3:
-      name = "Hrodzyenskaya Voblasts'";
-      break;
-      case 4:
-      name = "Minsk";
-      break;
-      case 5:
-      name = "Minskaya Voblasts'";
-      break;
-      case 6:
-      name = "Mahilyowskaya Voblasts'";
-      break;
-      case 7:
-      name = "Vitsyebskaya Voblasts'";
-      break;
-    }
-  }
-  if (strcmp(country_code,"BZ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Belize";
-      break;
-      case 2:
-      name = "Cayo";
-      break;
-      case 3:
-      name = "Corozal";
-      break;
-      case 4:
-      name = "Orange Walk";
-      break;
-      case 5:
-      name = "Stann Creek";
-      break;
-      case 6:
-      name = "Toledo";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CD") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bandundu";
-      break;
-      case 2:
-      name = "Equateur";
-      break;
-      case 4:
-      name = "Kasai-Oriental";
-      break;
-      case 5:
-      name = "Katanga";
-      break;
-      case 6:
-      name = "Kinshasa";
-      break;
-      case 8:
-      name = "Bas-Congo";
-      break;
-      case 9:
-      name = "Orientale";
-      break;
-      case 10:
-      name = "Maniema";
-      break;
-      case 11:
-      name = "Nord-Kivu";
-      break;
-      case 12:
-      name = "Sud-Kivu";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CF") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bamingui-Bangoran";
-      break;
-      case 2:
-      name = "Basse-Kotto";
-      break;
-      case 3:
-      name = "Haute-Kotto";
-      break;
-      case 4:
-      name = "Mambere-Kadei";
-      break;
-      case 5:
-      name = "Haut-Mbomou";
-      break;
-      case 6:
-      name = "Kemo";
-      break;
-      case 7:
-      name = "Lobaye";
-      break;
-      case 8:
-      name = "Mbomou";
-      break;
-      case 9:
-      name = "Nana-Mambere";
-      break;
-      case 11:
-      name = "Ouaka";
-      break;
-      case 12:
-      name = "Ouham";
-      break;
-      case 13:
-      name = "Ouham-Pende";
-      break;
-      case 14:
-      name = "Cuvette-Ouest";
-      break;
-      case 15:
-      name = "Nana-Grebizi";
-      break;
-      case 16:
-      name = "Sangha-Mbaere";
-      break;
-      case 17:
-      name = "Ombella-Mpoko";
-      break;
-      case 18:
-      name = "Bangui";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CG") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bouenza";
-      break;
-      case 4:
-      name = "Kouilou";
-      break;
-      case 5:
-      name = "Lekoumou";
-      break;
-      case 6:
-      name = "Likouala";
-      break;
-      case 7:
-      name = "Niari";
-      break;
-      case 8:
-      name = "Plateaux";
-      break;
-      case 10:
-      name = "Sangha";
-      break;
-      case 11:
-      name = "Pool";
-      break;
-      case 12:
-      name = "Brazzaville";
-      break;
-      case 13:
-      name = "Cuvette";
-      break;
-      case 14:
-      name = "Cuvette-Ouest";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CH") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aargau";
-      break;
-      case 2:
-      name = "Ausser-Rhoden";
-      break;
-      case 3:
-      name = "Basel-Landschaft";
-      break;
-      case 4:
-      name = "Basel-Stadt";
-      break;
-      case 5:
-      name = "Bern";
-      break;
-      case 6:
-      name = "Fribourg";
-      break;
-      case 7:
-      name = "Geneve";
-      break;
-      case 8:
-      name = "Glarus";
-      break;
-      case 9:
-      name = "Graubunden";
-      break;
-      case 10:
-      name = "Inner-Rhoden";
-      break;
-      case 11:
-      name = "Luzern";
-      break;
-      case 12:
-      name = "Neuchatel";
-      break;
-      case 13:
-      name = "Nidwalden";
-      break;
-      case 14:
-      name = "Obwalden";
-      break;
-      case 15:
-      name = "Sankt Gallen";
-      break;
-      case 16:
-      name = "Schaffhausen";
-      break;
-      case 17:
-      name = "Schwyz";
-      break;
-      case 18:
-      name = "Solothurn";
-      break;
-      case 19:
-      name = "Thurgau";
-      break;
-      case 20:
-      name = "Ticino";
-      break;
-      case 21:
-      name = "Uri";
-      break;
-      case 22:
-      name = "Valais";
-      break;
-      case 23:
-      name = "Vaud";
-      break;
-      case 24:
-      name = "Zug";
-      break;
-      case 25:
-      name = "Zurich";
-      break;
-      case 26:
-      name = "Jura";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CI") == 0) {
-    switch (region_code2) {
-      case 74:
-      name = "Agneby";
-      break;
-      case 75:
-      name = "Bafing";
-      break;
-      case 76:
-      name = "Bas-Sassandra";
-      break;
-      case 77:
-      name = "Denguele";
-      break;
-      case 78:
-      name = "Dix-Huit Montagnes";
-      break;
-      case 79:
-      name = "Fromager";
-      break;
-      case 80:
-      name = "Haut-Sassandra";
-      break;
-      case 81:
-      name = "Lacs";
-      break;
-      case 82:
-      name = "Lagunes";
-      break;
-      case 83:
-      name = "Marahoue";
-      break;
-      case 84:
-      name = "Moyen-Cavally";
-      break;
-      case 85:
-      name = "Moyen-Comoe";
-      break;
-      case 86:
-      name = "N'zi-Comoe";
-      break;
-      case 87:
-      name = "Savanes";
-      break;
-      case 88:
-      name = "Sud-Bandama";
-      break;
-      case 89:
-      name = "Sud-Comoe";
-      break;
-      case 90:
-      name = "Vallee du Bandama";
-      break;
-      case 91:
-      name = "Worodougou";
-      break;
-      case 92:
-      name = "Zanzan";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CL") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Valparaiso";
-      break;
-      case 2:
-      name = "Aisen del General Carlos Ibanez del Campo";
-      break;
-      case 3:
-      name = "Antofagasta";
-      break;
-      case 4:
-      name = "Araucania";
-      break;
-      case 5:
-      name = "Atacama";
-      break;
-      case 6:
-      name = "Bio-Bio";
-      break;
-      case 7:
-      name = "Coquimbo";
-      break;
-      case 8:
-      name = "Libertador General Bernardo O'Higgins";
-      break;
-      case 9:
-      name = "Los Lagos";
-      break;
-      case 10:
-      name = "Magallanes y de la Antartica Chilena";
-      break;
-      case 11:
-      name = "Maule";
-      break;
-      case 12:
-      name = "Region Metropolitana";
-      break;
-      case 13:
-      name = "Tarapaca";
-      break;
-      case 14:
-      name = "Los Lagos";
-      break;
-      case 15:
-      name = "Tarapaca";
-      break;
-      case 16:
-      name = "Arica y Parinacota";
-      break;
-      case 17:
-      name = "Los Rios";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CM") == 0) {
-    switch (region_code2) {
-      case 4:
-      name = "Est";
-      break;
-      case 5:
-      name = "Littoral";
-      break;
-      case 7:
-      name = "Nord-Ouest";
-      break;
-      case 8:
-      name = "Ouest";
-      break;
-      case 9:
-      name = "Sud-Ouest";
-      break;
-      case 10:
-      name = "Adamaoua";
-      break;
-      case 11:
-      name = "Centre";
-      break;
-      case 12:
-      name = "Extreme-Nord";
-      break;
-      case 13:
-      name = "Nord";
-      break;
-      case 14:
-      name = "Sud";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CN") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Anhui";
-      break;
-      case 2:
-      name = "Zhejiang";
-      break;
-      case 3:
-      name = "Jiangxi";
-      break;
-      case 4:
-      name = "Jiangsu";
-      break;
-      case 5:
-      name = "Jilin";
-      break;
-      case 6:
-      name = "Qinghai";
-      break;
-      case 7:
-      name = "Fujian";
-      break;
-      case 8:
-      name = "Heilongjiang";
-      break;
-      case 9:
-      name = "Henan";
-      break;
-      case 10:
-      name = "Hebei";
-      break;
-      case 11:
-      name = "Hunan";
-      break;
-      case 12:
-      name = "Hubei";
-      break;
-      case 13:
-      name = "Xinjiang";
-      break;
-      case 14:
-      name = "Xizang";
-      break;
-      case 15:
-      name = "Gansu";
-      break;
-      case 16:
-      name = "Guangxi";
-      break;
-      case 18:
-      name = "Guizhou";
-      break;
-      case 19:
-      name = "Liaoning";
-      break;
-      case 20:
-      name = "Nei Mongol";
-      break;
-      case 21:
-      name = "Ningxia";
-      break;
-      case 22:
-      name = "Beijing";
-      break;
-      case 23:
-      name = "Shanghai";
-      break;
-      case 24:
-      name = "Shanxi";
-      break;
-      case 25:
-      name = "Shandong";
-      break;
-      case 26:
-      name = "Shaanxi";
-      break;
-      case 28:
-      name = "Tianjin";
-      break;
-      case 29:
-      name = "Yunnan";
-      break;
-      case 30:
-      name = "Guangdong";
-      break;
-      case 31:
-      name = "Hainan";
-      break;
-      case 32:
-      name = "Sichuan";
-      break;
-      case 33:
-      name = "Chongqing";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Amazonas";
-      break;
-      case 2:
-      name = "Antioquia";
-      break;
-      case 3:
-      name = "Arauca";
-      break;
-      case 4:
-      name = "Atlantico";
-      break;
-      case 5:
-      name = "Bolivar Department";
-      break;
-      case 6:
-      name = "Boyaca Department";
-      break;
-      case 7:
-      name = "Caldas Department";
-      break;
-      case 8:
-      name = "Caqueta";
-      break;
-      case 9:
-      name = "Cauca";
-      break;
-      case 10:
-      name = "Cesar";
-      break;
-      case 11:
-      name = "Choco";
-      break;
-      case 12:
-      name = "Cordoba";
-      break;
-      case 14:
-      name = "Guaviare";
-      break;
-      case 15:
-      name = "Guainia";
-      break;
-      case 16:
-      name = "Huila";
-      break;
-      case 17:
-      name = "La Guajira";
-      break;
-      case 18:
-      name = "Magdalena Department";
-      break;
-      case 19:
-      name = "Meta";
-      break;
-      case 20:
-      name = "Narino";
-      break;
-      case 21:
-      name = "Norte de Santander";
-      break;
-      case 22:
-      name = "Putumayo";
-      break;
-      case 23:
-      name = "Quindio";
-      break;
-      case 24:
-      name = "Risaralda";
-      break;
-      case 25:
-      name = "San Andres y Providencia";
-      break;
-      case 26:
-      name = "Santander";
-      break;
-      case 27:
-      name = "Sucre";
-      break;
-      case 28:
-      name = "Tolima";
-      break;
-      case 29:
-      name = "Valle del Cauca";
-      break;
-      case 30:
-      name = "Vaupes";
-      break;
-      case 31:
-      name = "Vichada";
-      break;
-      case 32:
-      name = "Casanare";
-      break;
-      case 33:
-      name = "Cundinamarca";
-      break;
-      case 34:
-      name = "Distrito Especial";
-      break;
-      case 35:
-      name = "Bolivar";
-      break;
-      case 36:
-      name = "Boyaca";
-      break;
-      case 37:
-      name = "Caldas";
-      break;
-      case 38:
-      name = "Magdalena";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Alajuela";
-      break;
-      case 2:
-      name = "Cartago";
-      break;
-      case 3:
-      name = "Guanacaste";
-      break;
-      case 4:
-      name = "Heredia";
-      break;
-      case 6:
-      name = "Limon";
-      break;
-      case 7:
-      name = "Puntarenas";
-      break;
-      case 8:
-      name = "San Jose";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CU") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Pinar del Rio";
-      break;
-      case 2:
-      name = "Ciudad de la Habana";
-      break;
-      case 3:
-      name = "Matanzas";
-      break;
-      case 4:
-      name = "Isla de la Juventud";
-      break;
-      case 5:
-      name = "Camaguey";
-      break;
-      case 7:
-      name = "Ciego de Avila";
-      break;
-      case 8:
-      name = "Cienfuegos";
-      break;
-      case 9:
-      name = "Granma";
-      break;
-      case 10:
-      name = "Guantanamo";
-      break;
-      case 11:
-      name = "La Habana";
-      break;
-      case 12:
-      name = "Holguin";
-      break;
-      case 13:
-      name = "Las Tunas";
-      break;
-      case 14:
-      name = "Sancti Spiritus";
-      break;
-      case 15:
-      name = "Santiago de Cuba";
-      break;
-      case 16:
-      name = "Villa Clara";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CV") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Boa Vista";
-      break;
-      case 2:
-      name = "Brava";
-      break;
-      case 4:
-      name = "Maio";
-      break;
-      case 5:
-      name = "Paul";
-      break;
-      case 7:
-      name = "Ribeira Grande";
-      break;
-      case 8:
-      name = "Sal";
-      break;
-      case 10:
-      name = "Sao Nicolau";
-      break;
-      case 11:
-      name = "Sao Vicente";
-      break;
-      case 13:
-      name = "Mosteiros";
-      break;
-      case 14:
-      name = "Praia";
-      break;
-      case 15:
-      name = "Santa Catarina";
-      break;
-      case 16:
-      name = "Santa Cruz";
-      break;
-      case 17:
-      name = "Sao Domingos";
-      break;
-      case 18:
-      name = "Sao Filipe";
-      break;
-      case 19:
-      name = "Sao Miguel";
-      break;
-      case 20:
-      name = "Tarrafal";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CY") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Famagusta";
-      break;
-      case 2:
-      name = "Kyrenia";
-      break;
-      case 3:
-      name = "Larnaca";
-      break;
-      case 4:
-      name = "Nicosia";
-      break;
-      case 5:
-      name = "Limassol";
-      break;
-      case 6:
-      name = "Paphos";
-      break;
-    }
-  }
-  if (strcmp(country_code,"CZ") == 0) {
-    switch (region_code2) {
-      case 52:
-      name = "Hlavni mesto Praha";
-      break;
-      case 78:
-      name = "Jihomoravsky kraj";
-      break;
-      case 79:
-      name = "Jihocesky kraj";
-      break;
-      case 80:
-      name = "Vysocina";
-      break;
-      case 81:
-      name = "Karlovarsky kraj";
-      break;
-      case 82:
-      name = "Kralovehradecky kraj";
-      break;
-      case 83:
-      name = "Liberecky kraj";
-      break;
-      case 84:
-      name = "Olomoucky kraj";
-      break;
-      case 85:
-      name = "Moravskoslezsky kraj";
-      break;
-      case 86:
-      name = "Pardubicky kraj";
-      break;
-      case 87:
-      name = "Plzensky kraj";
-      break;
-      case 88:
-      name = "Stredocesky kraj";
-      break;
-      case 89:
-      name = "Ustecky kraj";
-      break;
-      case 90:
-      name = "Zlinsky kraj";
-      break;
-    }
-  }
-  if (strcmp(country_code,"DE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Baden-Wurttemberg";
-      break;
-      case 2:
-      name = "Bayern";
-      break;
-      case 3:
-      name = "Bremen";
-      break;
-      case 4:
-      name = "Hamburg";
-      break;
-      case 5:
-      name = "Hessen";
-      break;
-      case 6:
-      name = "Niedersachsen";
-      break;
-      case 7:
-      name = "Nordrhein-Westfalen";
-      break;
-      case 8:
-      name = "Rheinland-Pfalz";
-      break;
-      case 9:
-      name = "Saarland";
-      break;
-      case 10:
-      name = "Schleswig-Holstein";
-      break;
-      case 11:
-      name = "Brandenburg";
-      break;
-      case 12:
-      name = "Mecklenburg-Vorpommern";
-      break;
-      case 13:
-      name = "Sachsen";
-      break;
-      case 14:
-      name = "Sachsen-Anhalt";
-      break;
-      case 15:
-      name = "Thuringen";
-      break;
-      case 16:
-      name = "Berlin";
-      break;
-    }
-  }
-  if (strcmp(country_code,"DJ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ali Sabieh";
-      break;
-      case 4:
-      name = "Obock";
-      break;
-      case 5:
-      name = "Tadjoura";
-      break;
-      case 6:
-      name = "Dikhil";
-      break;
-      case 7:
-      name = "Djibouti";
-      break;
-      case 8:
-      name = "Arta";
-      break;
-    }
-  }
-  if (strcmp(country_code,"DK") == 0) {
-    switch (region_code2) {
-      case 17:
-      name = "Hovedstaden";
-      break;
-      case 18:
-      name = "Midtjylland";
-      break;
-      case 19:
-      name = "Nordjylland";
-      break;
-      case 20:
-      name = "Sjelland";
-      break;
-      case 21:
-      name = "Syddanmark";
-      break;
-    }
-  }
-  if (strcmp(country_code,"DM") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Saint Andrew";
-      break;
-      case 3:
-      name = "Saint David";
-      break;
-      case 4:
-      name = "Saint George";
-      break;
-      case 5:
-      name = "Saint John";
-      break;
-      case 6:
-      name = "Saint Joseph";
-      break;
-      case 7:
-      name = "Saint Luke";
-      break;
-      case 8:
-      name = "Saint Mark";
-      break;
-      case 9:
-      name = "Saint Patrick";
-      break;
-      case 10:
-      name = "Saint Paul";
-      break;
-      case 11:
-      name = "Saint Peter";
-      break;
-    }
-  }
-  if (strcmp(country_code,"DO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Azua";
-      break;
-      case 2:
-      name = "Baoruco";
-      break;
-      case 3:
-      name = "Barahona";
-      break;
-      case 4:
-      name = "Dajabon";
-      break;
-      case 5:
-      name = "Distrito Nacional";
-      break;
-      case 6:
-      name = "Duarte";
-      break;
-      case 8:
-      name = "Espaillat";
-      break;
-      case 9:
-      name = "Independencia";
-      break;
-      case 10:
-      name = "La Altagracia";
-      break;
-      case 11:
-      name = "Elias Pina";
-      break;
-      case 12:
-      name = "La Romana";
-      break;
-      case 14:
-      name = "Maria Trinidad Sanchez";
-      break;
-      case 15:
-      name = "Monte Cristi";
-      break;
-      case 16:
-      name = "Pedernales";
-      break;
-      case 17:
-      name = "Peravia";
-      break;
-      case 18:
-      name = "Puerto Plata";
-      break;
-      case 19:
-      name = "Salcedo";
-      break;
-      case 20:
-      name = "Samana";
-      break;
-      case 21:
-      name = "Sanchez Ramirez";
-      break;
-      case 23:
-      name = "San Juan";
-      break;
-      case 24:
-      name = "San Pedro De Macoris";
-      break;
-      case 25:
-      name = "Santiago";
-      break;
-      case 26:
-      name = "Santiago Rodriguez";
-      break;
-      case 27:
-      name = "Valverde";
-      break;
-      case 28:
-      name = "El Seibo";
-      break;
-      case 29:
-      name = "Hato Mayor";
-      break;
-      case 30:
-      name = "La Vega";
-      break;
-      case 31:
-      name = "Monsenor Nouel";
-      break;
-      case 32:
-      name = "Monte Plata";
-      break;
-      case 33:
-      name = "San Cristobal";
-      break;
-      case 34:
-      name = "Distrito Nacional";
-      break;
-      case 35:
-      name = "Peravia";
-      break;
-      case 36:
-      name = "San Jose de Ocoa";
-      break;
-      case 37:
-      name = "Santo Domingo";
-      break;
-    }
-  }
-  if (strcmp(country_code,"DZ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Alger";
-      break;
-      case 3:
-      name = "Batna";
-      break;
-      case 4:
-      name = "Constantine";
-      break;
-      case 6:
-      name = "Medea";
-      break;
-      case 7:
-      name = "Mostaganem";
-      break;
-      case 9:
-      name = "Oran";
-      break;
-      case 10:
-      name = "Saida";
-      break;
-      case 12:
-      name = "Setif";
-      break;
-      case 13:
-      name = "Tiaret";
-      break;
-      case 14:
-      name = "Tizi Ouzou";
-      break;
-      case 15:
-      name = "Tlemcen";
-      break;
-      case 18:
-      name = "Bejaia";
-      break;
-      case 19:
-      name = "Biskra";
-      break;
-      case 20:
-      name = "Blida";
-      break;
-      case 21:
-      name = "Bouira";
-      break;
-      case 22:
-      name = "Djelfa";
-      break;
-      case 23:
-      name = "Guelma";
-      break;
-      case 24:
-      name = "Jijel";
-      break;
-      case 25:
-      name = "Laghouat";
-      break;
-      case 26:
-      name = "Mascara";
-      break;
-      case 27:
-      name = "M'sila";
-      break;
-      case 29:
-      name = "Oum el Bouaghi";
-      break;
-      case 30:
-      name = "Sidi Bel Abbes";
-      break;
-      case 31:
-      name = "Skikda";
-      break;
-      case 33:
-      name = "Tebessa";
-      break;
-      case 34:
-      name = "Adrar";
-      break;
-      case 35:
-      name = "Ain Defla";
-      break;
-      case 36:
-      name = "Ain Temouchent";
-      break;
-      case 37:
-      name = "Annaba";
-      break;
-      case 38:
-      name = "Bechar";
-      break;
-      case 39:
-      name = "Bordj Bou Arreridj";
-      break;
-      case 40:
-      name = "Boumerdes";
-      break;
-      case 41:
-      name = "Chlef";
-      break;
-      case 42:
-      name = "El Bayadh";
-      break;
-      case 43:
-      name = "El Oued";
-      break;
-      case 44:
-      name = "El Tarf";
-      break;
-      case 45:
-      name = "Ghardaia";
-      break;
-      case 46:
-      name = "Illizi";
-      break;
-      case 47:
-      name = "Khenchela";
-      break;
-      case 48:
-      name = "Mila";
-      break;
-      case 49:
-      name = "Naama";
-      break;
-      case 50:
-      name = "Ouargla";
-      break;
-      case 51:
-      name = "Relizane";
-      break;
-      case 52:
-      name = "Souk Ahras";
-      break;
-      case 53:
-      name = "Tamanghasset";
-      break;
-      case 54:
-      name = "Tindouf";
-      break;
-      case 55:
-      name = "Tipaza";
-      break;
-      case 56:
-      name = "Tissemsilt";
-      break;
-    }
-  }
-  if (strcmp(country_code,"EC") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Galapagos";
-      break;
-      case 2:
-      name = "Azuay";
-      break;
-      case 3:
-      name = "Bolivar";
-      break;
-      case 4:
-      name = "Canar";
-      break;
-      case 5:
-      name = "Carchi";
-      break;
-      case 6:
-      name = "Chimborazo";
-      break;
-      case 7:
-      name = "Cotopaxi";
-      break;
-      case 8:
-      name = "El Oro";
-      break;
-      case 9:
-      name = "Esmeraldas";
-      break;
-      case 10:
-      name = "Guayas";
-      break;
-      case 11:
-      name = "Imbabura";
-      break;
-      case 12:
-      name = "Loja";
-      break;
-      case 13:
-      name = "Los Rios";
-      break;
-      case 14:
-      name = "Manabi";
-      break;
-      case 15:
-      name = "Morona-Santiago";
-      break;
-      case 17:
-      name = "Pastaza";
-      break;
-      case 18:
-      name = "Pichincha";
-      break;
-      case 19:
-      name = "Tungurahua";
-      break;
-      case 20:
-      name = "Zamora-Chinchipe";
-      break;
-      case 22:
-      name = "Sucumbios";
-      break;
-      case 23:
-      name = "Napo";
-      break;
-      case 24:
-      name = "Orellana";
-      break;
-    }
-  }
-  if (strcmp(country_code,"EE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Harjumaa";
-      break;
-      case 2:
-      name = "Hiiumaa";
-      break;
-      case 3:
-      name = "Ida-Virumaa";
-      break;
-      case 4:
-      name = "Jarvamaa";
-      break;
-      case 5:
-      name = "Jogevamaa";
-      break;
-      case 6:
-      name = "Kohtla-Jarve";
-      break;
-      case 7:
-      name = "Laanemaa";
-      break;
-      case 8:
-      name = "Laane-Virumaa";
-      break;
-      case 9:
-      name = "Narva";
-      break;
-      case 10:
-      name = "Parnu";
-      break;
-      case 11:
-      name = "Parnumaa";
-      break;
-      case 12:
-      name = "Polvamaa";
-      break;
-      case 13:
-      name = "Raplamaa";
-      break;
-      case 14:
-      name = "Saaremaa";
-      break;
-      case 15:
-      name = "Sillamae";
-      break;
-      case 16:
-      name = "Tallinn";
-      break;
-      case 17:
-      name = "Tartu";
-      break;
-      case 18:
-      name = "Tartumaa";
-      break;
-      case 19:
-      name = "Valgamaa";
-      break;
-      case 20:
-      name = "Viljandimaa";
-      break;
-      case 21:
-      name = "Vorumaa";
-      break;
-    }
-  }
-  if (strcmp(country_code,"EG") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ad Daqahliyah";
-      break;
-      case 2:
-      name = "Al Bahr al Ahmar";
-      break;
-      case 3:
-      name = "Al Buhayrah";
-      break;
-      case 4:
-      name = "Al Fayyum";
-      break;
-      case 5:
-      name = "Al Gharbiyah";
-      break;
-      case 6:
-      name = "Al Iskandariyah";
-      break;
-      case 7:
-      name = "Al Isma'iliyah";
-      break;
-      case 8:
-      name = "Al Jizah";
-      break;
-      case 9:
-      name = "Al Minufiyah";
-      break;
-      case 10:
-      name = "Al Minya";
-      break;
-      case 11:
-      name = "Al Qahirah";
-      break;
-      case 12:
-      name = "Al Qalyubiyah";
-      break;
-      case 13:
-      name = "Al Wadi al Jadid";
-      break;
-      case 14:
-      name = "Ash Sharqiyah";
-      break;
-      case 15:
-      name = "As Suways";
-      break;
-      case 16:
-      name = "Aswan";
-      break;
-      case 17:
-      name = "Asyut";
-      break;
-      case 18:
-      name = "Bani Suwayf";
-      break;
-      case 19:
-      name = "Bur Sa'id";
-      break;
-      case 20:
-      name = "Dumyat";
-      break;
-      case 21:
-      name = "Kafr ash Shaykh";
-      break;
-      case 22:
-      name = "Matruh";
-      break;
-      case 23:
-      name = "Qina";
-      break;
-      case 24:
-      name = "Suhaj";
-      break;
-      case 26:
-      name = "Janub Sina'";
-      break;
-      case 27:
-      name = "Shamal Sina'";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ER") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Anseba";
-      break;
-      case 2:
-      name = "Debub";
-      break;
-      case 3:
-      name = "Debubawi K'eyih Bahri";
-      break;
-      case 4:
-      name = "Gash Barka";
-      break;
-      case 5:
-      name = "Ma'akel";
-      break;
-      case 6:
-      name = "Semenawi K'eyih Bahri";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ES") == 0) {
-    switch (region_code2) {
-      case 7:
-      name = "Islas Baleares";
-      break;
-      case 27:
-      name = "La Rioja";
-      break;
-      case 29:
-      name = "Madrid";
-      break;
-      case 31:
-      name = "Murcia";
-      break;
-      case 32:
-      name = "Navarra";
-      break;
-      case 34:
-      name = "Asturias";
-      break;
-      case 39:
-      name = "Cantabria";
-      break;
-      case 51:
-      name = "Andalucia";
-      break;
-      case 52:
-      name = "Aragon";
-      break;
-      case 53:
-      name = "Canarias";
-      break;
-      case 54:
-      name = "Castilla-La Mancha";
-      break;
-      case 55:
-      name = "Castilla y Leon";
-      break;
-      case 56:
-      name = "Catalonia";
-      break;
-      case 57:
-      name = "Extremadura";
-      break;
-      case 58:
-      name = "Galicia";
-      break;
-      case 59:
-      name = "Pais Vasco";
-      break;
-      case 60:
-      name = "Comunidad Valenciana";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ET") == 0) {
-    switch (region_code2) {
-      case 44:
-      name = "Adis Abeba";
-      break;
-      case 45:
-      name = "Afar";
-      break;
-      case 46:
-      name = "Amara";
-      break;
-      case 47:
-      name = "Binshangul Gumuz";
-      break;
-      case 48:
-      name = "Dire Dawa";
-      break;
-      case 49:
-      name = "Gambela Hizboch";
-      break;
-      case 50:
-      name = "Hareri Hizb";
-      break;
-      case 51:
-      name = "Oromiya";
-      break;
-      case 52:
-      name = "Sumale";
-      break;
-      case 53:
-      name = "Tigray";
-      break;
-      case 54:
-      name = "YeDebub Biheroch Bihereseboch na Hizboch";
-      break;
-    }
-  }
-  if (strcmp(country_code,"FI") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aland";
-      break;
-      case 6:
-      name = "Lapland";
-      break;
-      case 8:
-      name = "Oulu";
-      break;
-      case 13:
-      name = "Southern Finland";
-      break;
-      case 14:
-      name = "Eastern Finland";
-      break;
-      case 15:
-      name = "Western Finland";
-      break;
-    }
-  }
-  if (strcmp(country_code,"FJ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Central";
-      break;
-      case 2:
-      name = "Eastern";
-      break;
-      case 3:
-      name = "Northern";
-      break;
-      case 4:
-      name = "Rotuma";
-      break;
-      case 5:
-      name = "Western";
-      break;
-    }
-  }
-  if (strcmp(country_code,"FM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Kosrae";
-      break;
-      case 2:
-      name = "Pohnpei";
-      break;
-      case 3:
-      name = "Chuuk";
-      break;
-      case 4:
-      name = "Yap";
-      break;
-    }
-  }
-  if (strcmp(country_code,"FR") == 0) {
-    switch (region_code2) {
-      case 97:
-      name = "Aquitaine";
-      break;
-      case 98:
-      name = "Auvergne";
-      break;
-      case 99:
-      name = "Basse-Normandie";
-      break;
-      case 832:
-      name = "Bourgogne";
-      break;
-      case 833:
-      name = "Bretagne";
-      break;
-      case 834:
-      name = "Centre";
-      break;
-      case 835:
-      name = "Champagne-Ardenne";
-      break;
-      case 836:
-      name = "Corse";
-      break;
-      case 837:
-      name = "Franche-Comte";
-      break;
-      case 838:
-      name = "Haute-Normandie";
-      break;
-      case 839:
-      name = "Ile-de-France";
-      break;
-      case 840:
-      name = "Languedoc-Roussillon";
-      break;
-      case 875:
-      name = "Limousin";
-      break;
-      case 876:
-      name = "Lorraine";
-      break;
-      case 877:
-      name = "Midi-Pyrenees";
-      break;
-      case 878:
-      name = "Nord-Pas-de-Calais";
-      break;
-      case 879:
-      name = "Pays de la Loire";
-      break;
-      case 880:
-      name = "Picardie";
-      break;
-      case 881:
-      name = "Poitou-Charentes";
-      break;
-      case 882:
-      name = "Provence-Alpes-Cote d'Azur";
-      break;
-      case 883:
-      name = "Rhone-Alpes";
-      break;
-      case 918:
-      name = "Alsace";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GA") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Estuaire";
-      break;
-      case 2:
-      name = "Haut-Ogooue";
-      break;
-      case 3:
-      name = "Moyen-Ogooue";
-      break;
-      case 4:
-      name = "Ngounie";
-      break;
-      case 5:
-      name = "Nyanga";
-      break;
-      case 6:
-      name = "Ogooue-Ivindo";
-      break;
-      case 7:
-      name = "Ogooue-Lolo";
-      break;
-      case 8:
-      name = "Ogooue-Maritime";
-      break;
-      case 9:
-      name = "Woleu-Ntem";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GB") == 0) {
-    switch (region_code2) {
-      case 832:
-      name = "Barking and Dagenham";
-      break;
-      case 833:
-      name = "Barnet";
-      break;
-      case 834:
-      name = "Barnsley";
-      break;
-      case 835:
-      name = "Bath and North East Somerset";
-      break;
-      case 836:
-      name = "Bedfordshire";
-      break;
-      case 837:
-      name = "Bexley";
-      break;
-      case 838:
-      name = "Birmingham";
-      break;
-      case 839:
-      name = "Blackburn with Darwen";
-      break;
-      case 840:
-      name = "Blackpool";
-      break;
-      case 875:
-      name = "Bolton";
-      break;
-      case 876:
-      name = "Bournemouth";
-      break;
-      case 877:
-      name = "Bracknell Forest";
-      break;
-      case 878:
-      name = "Bradford";
-      break;
-      case 879:
-      name = "Brent";
-      break;
-      case 880:
-      name = "Brighton and Hove";
-      break;
-      case 881:
-      name = "Bristol, City of";
-      break;
-      case 882:
-      name = "Bromley";
-      break;
-      case 883:
-      name = "Buckinghamshire";
-      break;
-      case 918:
-      name = "Bury";
-      break;
-      case 919:
-      name = "Calderdale";
-      break;
-      case 920:
-      name = "Cambridgeshire";
-      break;
-      case 921:
-      name = "Camden";
-      break;
-      case 922:
-      name = "Cheshire";
-      break;
-      case 923:
-      name = "Cornwall";
-      break;
-      case 924:
-      name = "Coventry";
-      break;
-      case 925:
-      name = "Croydon";
-      break;
-      case 926:
-      name = "Cumbria";
-      break;
-      case 961:
-      name = "Darlington";
-      break;
-      case 962:
-      name = "Derby";
-      break;
-      case 963:
-      name = "Derbyshire";
-      break;
-      case 964:
-      name = "Devon";
-      break;
-      case 965:
-      name = "Doncaster";
-      break;
-      case 966:
-      name = "Dorset";
-      break;
-      case 967:
-      name = "Dudley";
-      break;
-      case 968:
-      name = "Durham";
-      break;
-      case 969:
-      name = "Ealing";
-      break;
-      case 1004:
-      name = "East Riding of Yorkshire";
-      break;
-      case 1005:
-      name = "East Sussex";
-      break;
-      case 1006:
-      name = "Enfield";
-      break;
-      case 1007:
-      name = "Essex";
-      break;
-      case 1008:
-      name = "Gateshead";
-      break;
-      case 1009:
-      name = "Gloucestershire";
-      break;
-      case 1010:
-      name = "Greenwich";
-      break;
-      case 1011:
-      name = "Hackney";
-      break;
-      case 1012:
-      name = "Halton";
-      break;
-      case 1047:
-      name = "Hammersmith and Fulham";
-      break;
-      case 1048:
-      name = "Hampshire";
-      break;
-      case 1049:
-      name = "Haringey";
-      break;
-      case 1050:
-      name = "Harrow";
-      break;
-      case 1051:
-      name = "Hartlepool";
-      break;
-      case 1052:
-      name = "Havering";
-      break;
-      case 1053:
-      name = "Herefordshire";
-      break;
-      case 1054:
-      name = "Hertford";
-      break;
-      case 1055:
-      name = "Hillingdon";
-      break;
-      case 1090:
-      name = "Hounslow";
-      break;
-      case 1091:
-      name = "Isle of Wight";
-      break;
-      case 1092:
-      name = "Islington";
-      break;
-      case 1093:
-      name = "Kensington and Chelsea";
-      break;
-      case 1094:
-      name = "Kent";
-      break;
-      case 1095:
-      name = "Kingston upon Hull, City of";
-      break;
-      case 1096:
-      name = "Kingston upon Thames";
-      break;
-      case 1097:
-      name = "Kirklees";
-      break;
-      case 1098:
-      name = "Knowsley";
-      break;
-      case 1133:
-      name = "Lambeth";
-      break;
-      case 1134:
-      name = "Lancashire";
-      break;
-      case 1135:
-      name = "Leeds";
-      break;
-      case 1136:
-      name = "Leicester";
-      break;
-      case 1137:
-      name = "Leicestershire";
-      break;
-      case 1138:
-      name = "Lewisham";
-      break;
-      case 1139:
-      name = "Lincolnshire";
-      break;
-      case 1140:
-      name = "Liverpool";
-      break;
-      case 1141:
-      name = "London, City of";
-      break;
-      case 1176:
-      name = "Luton";
-      break;
-      case 1177:
-      name = "Manchester";
-      break;
-      case 1178:
-      name = "Medway";
-      break;
-      case 1179:
-      name = "Merton";
-      break;
-      case 1180:
-      name = "Middlesbrough";
-      break;
-      case 1181:
-      name = "Milton Keynes";
-      break;
-      case 1182:
-      name = "Newcastle upon Tyne";
-      break;
-      case 1183:
-      name = "Newham";
-      break;
-      case 1184:
-      name = "Norfolk";
-      break;
-      case 1219:
-      name = "Northamptonshire";
-      break;
-      case 1220:
-      name = "North East Lincolnshire";
-      break;
-      case 1221:
-      name = "North Lincolnshire";
-      break;
-      case 1222:
-      name = "North Somerset";
-      break;
-      case 1223:
-      name = "North Tyneside";
-      break;
-      case 1224:
-      name = "Northumberland";
-      break;
-      case 1225:
-      name = "North Yorkshire";
-      break;
-      case 1226:
-      name = "Nottingham";
-      break;
-      case 1227:
-      name = "Nottinghamshire";
-      break;
-      case 1262:
-      name = "Oldham";
-      break;
-      case 1263:
-      name = "Oxfordshire";
-      break;
-      case 1264:
-      name = "Peterborough";
-      break;
-      case 1265:
-      name = "Plymouth";
-      break;
-      case 1266:
-      name = "Poole";
-      break;
-      case 1267:
-      name = "Portsmouth";
-      break;
-      case 1268:
-      name = "Reading";
-      break;
-      case 1269:
-      name = "Redbridge";
-      break;
-      case 1270:
-      name = "Redcar and Cleveland";
-      break;
-      case 1305:
-      name = "Richmond upon Thames";
-      break;
-      case 1306:
-      name = "Rochdale";
-      break;
-      case 1307:
-      name = "Rotherham";
-      break;
-      case 1308:
-      name = "Rutland";
-      break;
-      case 1309:
-      name = "Salford";
-      break;
-      case 1310:
-      name = "Shropshire";
-      break;
-      case 1311:
-      name = "Sandwell";
-      break;
-      case 1312:
-      name = "Sefton";
-      break;
-      case 1313:
-      name = "Sheffield";
-      break;
-      case 1348:
-      name = "Slough";
-      break;
-      case 1349:
-      name = "Solihull";
-      break;
-      case 1350:
-      name = "Somerset";
-      break;
-      case 1351:
-      name = "Southampton";
-      break;
-      case 1352:
-      name = "Southend-on-Sea";
-      break;
-      case 1353:
-      name = "South Gloucestershire";
-      break;
-      case 1354:
-      name = "South Tyneside";
-      break;
-      case 1355:
-      name = "Southwark";
-      break;
-      case 1356:
-      name = "Staffordshire";
-      break;
-      case 1391:
-      name = "St. Helens";
-      break;
-      case 1392:
-      name = "Stockport";
-      break;
-      case 1393:
-      name = "Stockton-on-Tees";
-      break;
-      case 1394:
-      name = "Stoke-on-Trent";
-      break;
-      case 1395:
-      name = "Suffolk";
-      break;
-      case 1396:
-      name = "Sunderland";
-      break;
-      case 1397:
-      name = "Surrey";
-      break;
-      case 1398:
-      name = "Sutton";
-      break;
-      case 1399:
-      name = "Swindon";
-      break;
-      case 1434:
-      name = "Tameside";
-      break;
-      case 1435:
-      name = "Telford and Wrekin";
-      break;
-      case 1436:
-      name = "Thurrock";
-      break;
-      case 1437:
-      name = "Torbay";
-      break;
-      case 1438:
-      name = "Tower Hamlets";
-      break;
-      case 1439:
-      name = "Trafford";
-      break;
-      case 1440:
-      name = "Wakefield";
-      break;
-      case 1441:
-      name = "Walsall";
-      break;
-      case 1442:
-      name = "Waltham Forest";
-      break;
-      case 1477:
-      name = "Wandsworth";
-      break;
-      case 1478:
-      name = "Warrington";
-      break;
-      case 1479:
-      name = "Warwickshire";
-      break;
-      case 1480:
-      name = "West Berkshire";
-      break;
-      case 1481:
-      name = "Westminster";
-      break;
-      case 1482:
-      name = "West Sussex";
-      break;
-      case 1483:
-      name = "Wigan";
-      break;
-      case 1484:
-      name = "Wiltshire";
-      break;
-      case 1485:
-      name = "Windsor and Maidenhead";
-      break;
-      case 1520:
-      name = "Wirral";
-      break;
-      case 1521:
-      name = "Wokingham";
-      break;
-      case 1522:
-      name = "Wolverhampton";
-      break;
-      case 1523:
-      name = "Worcestershire";
-      break;
-      case 1524:
-      name = "York";
-      break;
-      case 1525:
-      name = "Antrim";
-      break;
-      case 1526:
-      name = "Ards";
-      break;
-      case 1527:
-      name = "Armagh";
-      break;
-      case 1528:
-      name = "Ballymena";
-      break;
-      case 1563:
-      name = "Ballymoney";
-      break;
-      case 1564:
-      name = "Banbridge";
-      break;
-      case 1565:
-      name = "Belfast";
-      break;
-      case 1566:
-      name = "Carrickfergus";
-      break;
-      case 1567:
-      name = "Castlereagh";
-      break;
-      case 1568:
-      name = "Coleraine";
-      break;
-      case 1569:
-      name = "Cookstown";
-      break;
-      case 1570:
-      name = "Craigavon";
-      break;
-      case 1571:
-      name = "Down";
-      break;
-      case 1606:
-      name = "Dungannon";
-      break;
-      case 1607:
-      name = "Fermanagh";
-      break;
-      case 1608:
-      name = "Larne";
-      break;
-      case 1609:
-      name = "Limavady";
-      break;
-      case 1610:
-      name = "Lisburn";
-      break;
-      case 1611:
-      name = "Derry";
-      break;
-      case 1612:
-      name = "Magherafelt";
-      break;
-      case 1613:
-      name = "Moyle";
-      break;
-      case 1614:
-      name = "Newry and Mourne";
-      break;
-      case 1649:
-      name = "Newtownabbey";
-      break;
-      case 1650:
-      name = "North Down";
-      break;
-      case 1651:
-      name = "Omagh";
-      break;
-      case 1652:
-      name = "Strabane";
-      break;
-      case 1653:
-      name = "Aberdeen City";
-      break;
-      case 1654:
-      name = "Aberdeenshire";
-      break;
-      case 1655:
-      name = "Angus";
-      break;
-      case 1656:
-      name = "Argyll and Bute";
-      break;
-      case 1657:
-      name = "Scottish Borders, The";
-      break;
-      case 1692:
-      name = "Clackmannanshire";
-      break;
-      case 1693:
-      name = "Dumfries and Galloway";
-      break;
-      case 1694:
-      name = "Dundee City";
-      break;
-      case 1695:
-      name = "East Ayrshire";
-      break;
-      case 1696:
-      name = "East Dunbartonshire";
-      break;
-      case 1697:
-      name = "East Lothian";
-      break;
-      case 1698:
-      name = "East Renfrewshire";
-      break;
-      case 1699:
-      name = "Edinburgh, City of";
-      break;
-      case 1700:
-      name = "Falkirk";
-      break;
-      case 1735:
-      name = "Fife";
-      break;
-      case 1736:
-      name = "Glasgow City";
-      break;
-      case 1737:
-      name = "Highland";
-      break;
-      case 1738:
-      name = "Inverclyde";
-      break;
-      case 1739:
-      name = "Midlothian";
-      break;
-      case 1740:
-      name = "Moray";
-      break;
-      case 1741:
-      name = "North Ayrshire";
-      break;
-      case 1742:
-      name = "North Lanarkshire";
-      break;
-      case 1743:
-      name = "Orkney";
-      break;
-      case 1778:
-      name = "Perth and Kinross";
-      break;
-      case 1779:
-      name = "Renfrewshire";
-      break;
-      case 1780:
-      name = "Shetland Islands";
-      break;
-      case 1781:
-      name = "South Ayrshire";
-      break;
-      case 1782:
-      name = "South Lanarkshire";
-      break;
-      case 1783:
-      name = "Stirling";
-      break;
-      case 1784:
-      name = "West Dunbartonshire";
-      break;
-      case 1785:
-      name = "Eilean Siar";
-      break;
-      case 1786:
-      name = "West Lothian";
-      break;
-      case 1821:
-      name = "Isle of Anglesey";
-      break;
-      case 1822:
-      name = "Blaenau Gwent";
-      break;
-      case 1823:
-      name = "Bridgend";
-      break;
-      case 1824:
-      name = "Caerphilly";
-      break;
-      case 1825:
-      name = "Cardiff";
-      break;
-      case 1826:
-      name = "Ceredigion";
-      break;
-      case 1827:
-      name = "Carmarthenshire";
-      break;
-      case 1828:
-      name = "Conwy";
-      break;
-      case 1829:
-      name = "Denbighshire";
-      break;
-      case 1864:
-      name = "Flintshire";
-      break;
-      case 1865:
-      name = "Gwynedd";
-      break;
-      case 1866:
-      name = "Merthyr Tydfil";
-      break;
-      case 1867:
-      name = "Monmouthshire";
-      break;
-      case 1868:
-      name = "Neath Port Talbot";
-      break;
-      case 1869:
-      name = "Newport";
-      break;
-      case 1870:
-      name = "Pembrokeshire";
-      break;
-      case 1871:
-      name = "Powys";
-      break;
-      case 1872:
-      name = "Rhondda Cynon Taff";
-      break;
-      case 1907:
-      name = "Swansea";
-      break;
-      case 1908:
-      name = "Torfaen";
-      break;
-      case 1909:
-      name = "Vale of Glamorgan, The";
-      break;
-      case 1910:
-      name = "Wrexham";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GD") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Saint Andrew";
-      break;
-      case 2:
-      name = "Saint David";
-      break;
-      case 3:
-      name = "Saint George";
-      break;
-      case 4:
-      name = "Saint John";
-      break;
-      case 5:
-      name = "Saint Mark";
-      break;
-      case 6:
-      name = "Saint Patrick";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Abashis Raioni";
-      break;
-      case 2:
-      name = "Abkhazia";
-      break;
-      case 3:
-      name = "Adigenis Raioni";
-      break;
-      case 4:
-      name = "Ajaria";
-      break;
-      case 5:
-      name = "Akhalgoris Raioni";
-      break;
-      case 6:
-      name = "Akhalk'alak'is Raioni";
-      break;
-      case 7:
-      name = "Akhalts'ikhis Raioni";
-      break;
-      case 8:
-      name = "Akhmetis Raioni";
-      break;
-      case 9:
-      name = "Ambrolauris Raioni";
-      break;
-      case 10:
-      name = "Aspindzis Raioni";
-      break;
-      case 11:
-      name = "Baghdat'is Raioni";
-      break;
-      case 12:
-      name = "Bolnisis Raioni";
-      break;
-      case 13:
-      name = "Borjomis Raioni";
-      break;
-      case 14:
-      name = "Chiat'ura";
-      break;
-      case 15:
-      name = "Ch'khorotsqus Raioni";
-      break;
-      case 16:
-      name = "Ch'okhatauris Raioni";
-      break;
-      case 17:
-      name = "Dedop'listsqaros Raioni";
-      break;
-      case 18:
-      name = "Dmanisis Raioni";
-      break;
-      case 19:
-      name = "Dushet'is Raioni";
-      break;
-      case 20:
-      name = "Gardabanis Raioni";
-      break;
-      case 21:
-      name = "Gori";
-      break;
-      case 22:
-      name = "Goris Raioni";
-      break;
-      case 23:
-      name = "Gurjaanis Raioni";
-      break;
-      case 24:
-      name = "Javis Raioni";
-      break;
-      case 25:
-      name = "K'arelis Raioni";
-      break;
-      case 26:
-      name = "Kaspis Raioni";
-      break;
-      case 27:
-      name = "Kharagaulis Raioni";
-      break;
-      case 28:
-      name = "Khashuris Raioni";
-      break;
-      case 29:
-      name = "Khobis Raioni";
-      break;
-      case 30:
-      name = "Khonis Raioni";
-      break;
-      case 31:
-      name = "K'ut'aisi";
-      break;
-      case 32:
-      name = "Lagodekhis Raioni";
-      break;
-      case 33:
-      name = "Lanch'khut'is Raioni";
-      break;
-      case 34:
-      name = "Lentekhis Raioni";
-      break;
-      case 35:
-      name = "Marneulis Raioni";
-      break;
-      case 36:
-      name = "Martvilis Raioni";
-      break;
-      case 37:
-      name = "Mestiis Raioni";
-      break;
-      case 38:
-      name = "Mts'khet'is Raioni";
-      break;
-      case 39:
-      name = "Ninotsmindis Raioni";
-      break;
-      case 40:
-      name = "Onis Raioni";
-      break;
-      case 41:
-      name = "Ozurget'is Raioni";
-      break;
-      case 42:
-      name = "P'ot'i";
-      break;
-      case 43:
-      name = "Qazbegis Raioni";
-      break;
-      case 44:
-      name = "Qvarlis Raioni";
-      break;
-      case 45:
-      name = "Rust'avi";
-      break;
-      case 46:
-      name = "Sach'kheris Raioni";
-      break;
-      case 47:
-      name = "Sagarejos Raioni";
-      break;
-      case 48:
-      name = "Samtrediis Raioni";
-      break;
-      case 49:
-      name = "Senakis Raioni";
-      break;
-      case 50:
-      name = "Sighnaghis Raioni";
-      break;
-      case 51:
-      name = "T'bilisi";
-      break;
-      case 52:
-      name = "T'elavis Raioni";
-      break;
-      case 53:
-      name = "T'erjolis Raioni";
-      break;
-      case 54:
-      name = "T'et'ritsqaros Raioni";
-      break;
-      case 55:
-      name = "T'ianet'is Raioni";
-      break;
-      case 56:
-      name = "Tqibuli";
-      break;
-      case 57:
-      name = "Ts'ageris Raioni";
-      break;
-      case 58:
-      name = "Tsalenjikhis Raioni";
-      break;
-      case 59:
-      name = "Tsalkis Raioni";
-      break;
-      case 60:
-      name = "Tsqaltubo";
-      break;
-      case 61:
-      name = "Vanis Raioni";
-      break;
-      case 62:
-      name = "Zestap'onis Raioni";
-      break;
-      case 63:
-      name = "Zugdidi";
-      break;
-      case 64:
-      name = "Zugdidis Raioni";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GH") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Greater Accra";
-      break;
-      case 2:
-      name = "Ashanti";
-      break;
-      case 3:
-      name = "Brong-Ahafo";
-      break;
-      case 4:
-      name = "Central";
-      break;
-      case 5:
-      name = "Eastern";
-      break;
-      case 6:
-      name = "Northern";
-      break;
-      case 8:
-      name = "Volta";
-      break;
-      case 9:
-      name = "Western";
-      break;
-      case 10:
-      name = "Upper East";
-      break;
-      case 11:
-      name = "Upper West";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GL") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Nordgronland";
-      break;
-      case 2:
-      name = "Ostgronland";
-      break;
-      case 3:
-      name = "Vestgronland";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Banjul";
-      break;
-      case 2:
-      name = "Lower River";
-      break;
-      case 3:
-      name = "Central River";
-      break;
-      case 4:
-      name = "Upper River";
-      break;
-      case 5:
-      name = "Western";
-      break;
-      case 7:
-      name = "North Bank";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GN") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Beyla";
-      break;
-      case 2:
-      name = "Boffa";
-      break;
-      case 3:
-      name = "Boke";
-      break;
-      case 4:
-      name = "Conakry";
-      break;
-      case 5:
-      name = "Dabola";
-      break;
-      case 6:
-      name = "Dalaba";
-      break;
-      case 7:
-      name = "Dinguiraye";
-      break;
-      case 9:
-      name = "Faranah";
-      break;
-      case 10:
-      name = "Forecariah";
-      break;
-      case 11:
-      name = "Fria";
-      break;
-      case 12:
-      name = "Gaoual";
-      break;
-      case 13:
-      name = "Gueckedou";
-      break;
-      case 15:
-      name = "Kerouane";
-      break;
-      case 16:
-      name = "Kindia";
-      break;
-      case 17:
-      name = "Kissidougou";
-      break;
-      case 18:
-      name = "Koundara";
-      break;
-      case 19:
-      name = "Kouroussa";
-      break;
-      case 21:
-      name = "Macenta";
-      break;
-      case 22:
-      name = "Mali";
-      break;
-      case 23:
-      name = "Mamou";
-      break;
-      case 25:
-      name = "Pita";
-      break;
-      case 27:
-      name = "Telimele";
-      break;
-      case 28:
-      name = "Tougue";
-      break;
-      case 29:
-      name = "Yomou";
-      break;
-      case 30:
-      name = "Coyah";
-      break;
-      case 31:
-      name = "Dubreka";
-      break;
-      case 32:
-      name = "Kankan";
-      break;
-      case 33:
-      name = "Koubia";
-      break;
-      case 34:
-      name = "Labe";
-      break;
-      case 35:
-      name = "Lelouma";
-      break;
-      case 36:
-      name = "Lola";
-      break;
-      case 37:
-      name = "Mandiana";
-      break;
-      case 38:
-      name = "Nzerekore";
-      break;
-      case 39:
-      name = "Siguiri";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GQ") == 0) {
-    switch (region_code2) {
-      case 3:
-      name = "Annobon";
-      break;
-      case 4:
-      name = "Bioko Norte";
-      break;
-      case 5:
-      name = "Bioko Sur";
-      break;
-      case 6:
-      name = "Centro Sur";
-      break;
-      case 7:
-      name = "Kie-Ntem";
-      break;
-      case 8:
-      name = "Litoral";
-      break;
-      case 9:
-      name = "Wele-Nzas";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Evros";
-      break;
-      case 2:
-      name = "Rodhopi";
-      break;
-      case 3:
-      name = "Xanthi";
-      break;
-      case 4:
-      name = "Drama";
-      break;
-      case 5:
-      name = "Serrai";
-      break;
-      case 6:
-      name = "Kilkis";
-      break;
-      case 7:
-      name = "Pella";
-      break;
-      case 8:
-      name = "Florina";
-      break;
-      case 9:
-      name = "Kastoria";
-      break;
-      case 10:
-      name = "Grevena";
-      break;
-      case 11:
-      name = "Kozani";
-      break;
-      case 12:
-      name = "Imathia";
-      break;
-      case 13:
-      name = "Thessaloniki";
-      break;
-      case 14:
-      name = "Kavala";
-      break;
-      case 15:
-      name = "Khalkidhiki";
-      break;
-      case 16:
-      name = "Pieria";
-      break;
-      case 17:
-      name = "Ioannina";
-      break;
-      case 18:
-      name = "Thesprotia";
-      break;
-      case 19:
-      name = "Preveza";
-      break;
-      case 20:
-      name = "Arta";
-      break;
-      case 21:
-      name = "Larisa";
-      break;
-      case 22:
-      name = "Trikala";
-      break;
-      case 23:
-      name = "Kardhitsa";
-      break;
-      case 24:
-      name = "Magnisia";
-      break;
-      case 25:
-      name = "Kerkira";
-      break;
-      case 26:
-      name = "Levkas";
-      break;
-      case 27:
-      name = "Kefallinia";
-      break;
-      case 28:
-      name = "Zakinthos";
-      break;
-      case 29:
-      name = "Fthiotis";
-      break;
-      case 30:
-      name = "Evritania";
-      break;
-      case 31:
-      name = "Aitolia kai Akarnania";
-      break;
-      case 32:
-      name = "Fokis";
-      break;
-      case 33:
-      name = "Voiotia";
-      break;
-      case 34:
-      name = "Evvoia";
-      break;
-      case 35:
-      name = "Attiki";
-      break;
-      case 36:
-      name = "Argolis";
-      break;
-      case 37:
-      name = "Korinthia";
-      break;
-      case 38:
-      name = "Akhaia";
-      break;
-      case 39:
-      name = "Ilia";
-      break;
-      case 40:
-      name = "Messinia";
-      break;
-      case 41:
-      name = "Arkadhia";
-      break;
-      case 42:
-      name = "Lakonia";
-      break;
-      case 43:
-      name = "Khania";
-      break;
-      case 44:
-      name = "Rethimni";
-      break;
-      case 45:
-      name = "Iraklion";
-      break;
-      case 46:
-      name = "Lasithi";
-      break;
-      case 47:
-      name = "Dhodhekanisos";
-      break;
-      case 48:
-      name = "Samos";
-      break;
-      case 49:
-      name = "Kikladhes";
-      break;
-      case 50:
-      name = "Khios";
-      break;
-      case 51:
-      name = "Lesvos";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GT") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Alta Verapaz";
-      break;
-      case 2:
-      name = "Baja Verapaz";
-      break;
-      case 3:
-      name = "Chimaltenango";
-      break;
-      case 4:
-      name = "Chiquimula";
-      break;
-      case 5:
-      name = "El Progreso";
-      break;
-      case 6:
-      name = "Escuintla";
-      break;
-      case 7:
-      name = "Guatemala";
-      break;
-      case 8:
-      name = "Huehuetenango";
-      break;
-      case 9:
-      name = "Izabal";
-      break;
-      case 10:
-      name = "Jalapa";
-      break;
-      case 11:
-      name = "Jutiapa";
-      break;
-      case 12:
-      name = "Peten";
-      break;
-      case 13:
-      name = "Quetzaltenango";
-      break;
-      case 14:
-      name = "Quiche";
-      break;
-      case 15:
-      name = "Retalhuleu";
-      break;
-      case 16:
-      name = "Sacatepequez";
-      break;
-      case 17:
-      name = "San Marcos";
-      break;
-      case 18:
-      name = "Santa Rosa";
-      break;
-      case 19:
-      name = "Solola";
-      break;
-      case 20:
-      name = "Suchitepequez";
-      break;
-      case 21:
-      name = "Totonicapan";
-      break;
-      case 22:
-      name = "Zacapa";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GW") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bafata";
-      break;
-      case 2:
-      name = "Quinara";
-      break;
-      case 4:
-      name = "Oio";
-      break;
-      case 5:
-      name = "Bolama";
-      break;
-      case 6:
-      name = "Cacheu";
-      break;
-      case 7:
-      name = "Tombali";
-      break;
-      case 10:
-      name = "Gabu";
-      break;
-      case 11:
-      name = "Bissau";
-      break;
-      case 12:
-      name = "Biombo";
-      break;
-    }
-  }
-  if (strcmp(country_code,"GY") == 0) {
-    switch (region_code2) {
-      case 10:
-      name = "Barima-Waini";
-      break;
-      case 11:
-      name = "Cuyuni-Mazaruni";
-      break;
-      case 12:
-      name = "Demerara-Mahaica";
-      break;
-      case 13:
-      name = "East Berbice-Corentyne";
-      break;
-      case 14:
-      name = "Essequibo Islands-West Demerara";
-      break;
-      case 15:
-      name = "Mahaica-Berbice";
-      break;
-      case 16:
-      name = "Pomeroon-Supenaam";
-      break;
-      case 17:
-      name = "Potaro-Siparuni";
-      break;
-      case 18:
-      name = "Upper Demerara-Berbice";
-      break;
-      case 19:
-      name = "Upper Takutu-Upper Essequibo";
-      break;
-    }
-  }
-  if (strcmp(country_code,"HN") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Atlantida";
-      break;
-      case 2:
-      name = "Choluteca";
-      break;
-      case 3:
-      name = "Colon";
-      break;
-      case 4:
-      name = "Comayagua";
-      break;
-      case 5:
-      name = "Copan";
-      break;
-      case 6:
-      name = "Cortes";
-      break;
-      case 7:
-      name = "El Paraiso";
-      break;
-      case 8:
-      name = "Francisco Morazan";
-      break;
-      case 9:
-      name = "Gracias a Dios";
-      break;
-      case 10:
-      name = "Intibuca";
-      break;
-      case 11:
-      name = "Islas de la Bahia";
-      break;
-      case 12:
-      name = "La Paz";
-      break;
-      case 13:
-      name = "Lempira";
-      break;
-      case 14:
-      name = "Ocotepeque";
-      break;
-      case 15:
-      name = "Olancho";
-      break;
-      case 16:
-      name = "Santa Barbara";
-      break;
-      case 17:
-      name = "Valle";
-      break;
-      case 18:
-      name = "Yoro";
-      break;
-    }
-  }
-  if (strcmp(country_code,"HR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bjelovarsko-Bilogorska";
-      break;
-      case 2:
-      name = "Brodsko-Posavska";
-      break;
-      case 3:
-      name = "Dubrovacko-Neretvanska";
-      break;
-      case 4:
-      name = "Istarska";
-      break;
-      case 5:
-      name = "Karlovacka";
-      break;
-      case 6:
-      name = "Koprivnicko-Krizevacka";
-      break;
-      case 7:
-      name = "Krapinsko-Zagorska";
-      break;
-      case 8:
-      name = "Licko-Senjska";
-      break;
-      case 9:
-      name = "Medimurska";
-      break;
-      case 10:
-      name = "Osjecko-Baranjska";
-      break;
-      case 11:
-      name = "Pozesko-Slavonska";
-      break;
-      case 12:
-      name = "Primorsko-Goranska";
-      break;
-      case 13:
-      name = "Sibensko-Kninska";
-      break;
-      case 14:
-      name = "Sisacko-Moslavacka";
-      break;
-      case 15:
-      name = "Splitsko-Dalmatinska";
-      break;
-      case 16:
-      name = "Varazdinska";
-      break;
-      case 17:
-      name = "Viroviticko-Podravska";
-      break;
-      case 18:
-      name = "Vukovarsko-Srijemska";
-      break;
-      case 19:
-      name = "Zadarska";
-      break;
-      case 20:
-      name = "Zagrebacka";
-      break;
-      case 21:
-      name = "Grad Zagreb";
-      break;
-    }
-  }
-  if (strcmp(country_code,"HT") == 0) {
-    switch (region_code2) {
-      case 3:
-      name = "Nord-Ouest";
-      break;
-      case 6:
-      name = "Artibonite";
-      break;
-      case 7:
-      name = "Centre";
-      break;
-      case 9:
-      name = "Nord";
-      break;
-      case 10:
-      name = "Nord-Est";
-      break;
-      case 11:
-      name = "Ouest";
-      break;
-      case 12:
-      name = "Sud";
-      break;
-      case 13:
-      name = "Sud-Est";
-      break;
-      case 14:
-      name = "Grand' Anse";
-      break;
-      case 15:
-      name = "Nippes";
-      break;
-    }
-  }
-  if (strcmp(country_code,"HU") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bacs-Kiskun";
-      break;
-      case 2:
-      name = "Baranya";
-      break;
-      case 3:
-      name = "Bekes";
-      break;
-      case 4:
-      name = "Borsod-Abauj-Zemplen";
-      break;
-      case 5:
-      name = "Budapest";
-      break;
-      case 6:
-      name = "Csongrad";
-      break;
-      case 7:
-      name = "Debrecen";
-      break;
-      case 8:
-      name = "Fejer";
-      break;
-      case 9:
-      name = "Gyor-Moson-Sopron";
-      break;
-      case 10:
-      name = "Hajdu-Bihar";
-      break;
-      case 11:
-      name = "Heves";
-      break;
-      case 12:
-      name = "Komarom-Esztergom";
-      break;
-      case 13:
-      name = "Miskolc";
-      break;
-      case 14:
-      name = "Nograd";
-      break;
-      case 15:
-      name = "Pecs";
-      break;
-      case 16:
-      name = "Pest";
-      break;
-      case 17:
-      name = "Somogy";
-      break;
-      case 18:
-      name = "Szabolcs-Szatmar-Bereg";
-      break;
-      case 19:
-      name = "Szeged";
-      break;
-      case 20:
-      name = "Jasz-Nagykun-Szolnok";
-      break;
-      case 21:
-      name = "Tolna";
-      break;
-      case 22:
-      name = "Vas";
-      break;
-      case 23:
-      name = "Veszprem";
-      break;
-      case 24:
-      name = "Zala";
-      break;
-      case 25:
-      name = "Gyor";
-      break;
-      case 26:
-      name = "Bekescsaba";
-      break;
-      case 27:
-      name = "Dunaujvaros";
-      break;
-      case 28:
-      name = "Eger";
-      break;
-      case 29:
-      name = "Hodmezovasarhely";
-      break;
-      case 30:
-      name = "Kaposvar";
-      break;
-      case 31:
-      name = "Kecskemet";
-      break;
-      case 32:
-      name = "Nagykanizsa";
-      break;
-      case 33:
-      name = "Nyiregyhaza";
-      break;
-      case 34:
-      name = "Sopron";
-      break;
-      case 35:
-      name = "Szekesfehervar";
-      break;
-      case 36:
-      name = "Szolnok";
-      break;
-      case 37:
-      name = "Szombathely";
-      break;
-      case 38:
-      name = "Tatabanya";
-      break;
-      case 39:
-      name = "Veszprem";
-      break;
-      case 40:
-      name = "Zalaegerszeg";
-      break;
-      case 41:
-      name = "Salgotarjan";
-      break;
-      case 42:
-      name = "Szekszard";
-      break;
-      case 43:
-      name = "Erd";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ID") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aceh";
-      break;
-      case 2:
-      name = "Bali";
-      break;
-      case 3:
-      name = "Bengkulu";
-      break;
-      case 4:
-      name = "Jakarta Raya";
-      break;
-      case 5:
-      name = "Jambi";
-      break;
-      case 6:
-      name = "Jawa Barat";
-      break;
-      case 7:
-      name = "Jawa Tengah";
-      break;
-      case 8:
-      name = "Jawa Timur";
-      break;
-      case 9:
-      name = "Papua";
-      break;
-      case 10:
-      name = "Yogyakarta";
-      break;
-      case 11:
-      name = "Kalimantan Barat";
-      break;
-      case 12:
-      name = "Kalimantan Selatan";
-      break;
-      case 13:
-      name = "Kalimantan Tengah";
-      break;
-      case 14:
-      name = "Kalimantan Timur";
-      break;
-      case 15:
-      name = "Lampung";
-      break;
-      case 16:
-      name = "Maluku";
-      break;
-      case 17:
-      name = "Nusa Tenggara Barat";
-      break;
-      case 18:
-      name = "Nusa Tenggara Timur";
-      break;
-      case 19:
-      name = "Riau";
-      break;
-      case 20:
-      name = "Sulawesi Selatan";
-      break;
-      case 21:
-      name = "Sulawesi Tengah";
-      break;
-      case 22:
-      name = "Sulawesi Tenggara";
-      break;
-      case 23:
-      name = "Sulawesi Utara";
-      break;
-      case 24:
-      name = "Sumatera Barat";
-      break;
-      case 25:
-      name = "Sumatera Selatan";
-      break;
-      case 26:
-      name = "Sumatera Utara";
-      break;
-      case 28:
-      name = "Maluku";
-      break;
-      case 29:
-      name = "Maluku Utara";
-      break;
-      case 30:
-      name = "Jawa Barat";
-      break;
-      case 31:
-      name = "Sulawesi Utara";
-      break;
-      case 32:
-      name = "Sumatera Selatan";
-      break;
-      case 33:
-      name = "Banten";
-      break;
-      case 34:
-      name = "Gorontalo";
-      break;
-      case 35:
-      name = "Kepulauan Bangka Belitung";
-      break;
-      case 36:
-      name = "Papua";
-      break;
-      case 37:
-      name = "Riau";
-      break;
-      case 38:
-      name = "Sulawesi Selatan";
-      break;
-      case 39:
-      name = "Irian Jaya Barat";
-      break;
-      case 40:
-      name = "Kepulauan Riau";
-      break;
-      case 41:
-      name = "Sulawesi Barat";
-      break;
-    }
-  }
-  if (strcmp(country_code,"IE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Carlow";
-      break;
-      case 2:
-      name = "Cavan";
-      break;
-      case 3:
-      name = "Clare";
-      break;
-      case 4:
-      name = "Cork";
-      break;
-      case 6:
-      name = "Donegal";
-      break;
-      case 7:
-      name = "Dublin";
-      break;
-      case 10:
-      name = "Galway";
-      break;
-      case 11:
-      name = "Kerry";
-      break;
-      case 12:
-      name = "Kildare";
-      break;
-      case 13:
-      name = "Kilkenny";
-      break;
-      case 14:
-      name = "Leitrim";
-      break;
-      case 15:
-      name = "Laois";
-      break;
-      case 16:
-      name = "Limerick";
-      break;
-      case 18:
-      name = "Longford";
-      break;
-      case 19:
-      name = "Louth";
-      break;
-      case 20:
-      name = "Mayo";
-      break;
-      case 21:
-      name = "Meath";
-      break;
-      case 22:
-      name = "Monaghan";
-      break;
-      case 23:
-      name = "Offaly";
-      break;
-      case 24:
-      name = "Roscommon";
-      break;
-      case 25:
-      name = "Sligo";
-      break;
-      case 26:
-      name = "Tipperary";
-      break;
-      case 27:
-      name = "Waterford";
-      break;
-      case 29:
-      name = "Westmeath";
-      break;
-      case 30:
-      name = "Wexford";
-      break;
-      case 31:
-      name = "Wicklow";
-      break;
-    }
-  }
-  if (strcmp(country_code,"IL") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "HaDarom";
-      break;
-      case 2:
-      name = "HaMerkaz";
-      break;
-      case 3:
-      name = "HaZafon";
-      break;
-      case 4:
-      name = "Hefa";
-      break;
-      case 5:
-      name = "Tel Aviv";
-      break;
-      case 6:
-      name = "Yerushalayim";
-      break;
-    }
-  }
-  if (strcmp(country_code,"IN") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Andaman and Nicobar Islands";
-      break;
-      case 2:
-      name = "Andhra Pradesh";
-      break;
-      case 3:
-      name = "Assam";
-      break;
-      case 5:
-      name = "Chandigarh";
-      break;
-      case 6:
-      name = "Dadra and Nagar Haveli";
-      break;
-      case 7:
-      name = "Delhi";
-      break;
-      case 9:
-      name = "Gujarat";
-      break;
-      case 10:
-      name = "Haryana";
-      break;
-      case 11:
-      name = "Himachal Pradesh";
-      break;
-      case 12:
-      name = "Jammu and Kashmir";
-      break;
-      case 13:
-      name = "Kerala";
-      break;
-      case 14:
-      name = "Lakshadweep";
-      break;
-      case 16:
-      name = "Maharashtra";
-      break;
-      case 17:
-      name = "Manipur";
-      break;
-      case 18:
-      name = "Meghalaya";
-      break;
-      case 19:
-      name = "Karnataka";
-      break;
-      case 20:
-      name = "Nagaland";
-      break;
-      case 21:
-      name = "Orissa";
-      break;
-      case 22:
-      name = "Puducherry";
-      break;
-      case 23:
-      name = "Punjab";
-      break;
-      case 24:
-      name = "Rajasthan";
-      break;
-      case 25:
-      name = "Tamil Nadu";
-      break;
-      case 26:
-      name = "Tripura";
-      break;
-      case 28:
-      name = "West Bengal";
-      break;
-      case 29:
-      name = "Sikkim";
-      break;
-      case 30:
-      name = "Arunachal Pradesh";
-      break;
-      case 31:
-      name = "Mizoram";
-      break;
-      case 32:
-      name = "Daman and Diu";
-      break;
-      case 33:
-      name = "Goa";
-      break;
-      case 34:
-      name = "Bihar";
-      break;
-      case 35:
-      name = "Madhya Pradesh";
-      break;
-      case 36:
-      name = "Uttar Pradesh";
-      break;
-      case 37:
-      name = "Chhattisgarh";
-      break;
-      case 38:
-      name = "Jharkhand";
-      break;
-      case 39:
-      name = "Uttarakhand";
-      break;
-    }
-  }
-  if (strcmp(country_code,"IQ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Al Anbar";
-      break;
-      case 2:
-      name = "Al Basrah";
-      break;
-      case 3:
-      name = "Al Muthanna";
-      break;
-      case 4:
-      name = "Al Qadisiyah";
-      break;
-      case 5:
-      name = "As Sulaymaniyah";
-      break;
-      case 6:
-      name = "Babil";
-      break;
-      case 7:
-      name = "Baghdad";
-      break;
-      case 8:
-      name = "Dahuk";
-      break;
-      case 9:
-      name = "Dhi Qar";
-      break;
-      case 10:
-      name = "Diyala";
-      break;
-      case 11:
-      name = "Arbil";
-      break;
-      case 12:
-      name = "Karbala'";
-      break;
-      case 13:
-      name = "At Ta'mim";
-      break;
-      case 14:
-      name = "Maysan";
-      break;
-      case 15:
-      name = "Ninawa";
-      break;
-      case 16:
-      name = "Wasit";
-      break;
-      case 17:
-      name = "An Najaf";
-      break;
-      case 18:
-      name = "Salah ad Din";
-      break;
-    }
-  }
-  if (strcmp(country_code,"IR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Azarbayjan-e Bakhtari";
-      break;
-      case 3:
-      name = "Chahar Mahall va Bakhtiari";
-      break;
-      case 4:
-      name = "Sistan va Baluchestan";
-      break;
-      case 5:
-      name = "Kohkiluyeh va Buyer Ahmadi";
-      break;
-      case 7:
-      name = "Fars";
-      break;
-      case 8:
-      name = "Gilan";
-      break;
-      case 9:
-      name = "Hamadan";
-      break;
-      case 10:
-      name = "Ilam";
-      break;
-      case 11:
-      name = "Hormozgan";
-      break;
-      case 12:
-      name = "Kerman";
-      break;
-      case 13:
-      name = "Bakhtaran";
-      break;
-      case 15:
-      name = "Khuzestan";
-      break;
-      case 16:
-      name = "Kordestan";
-      break;
-      case 17:
-      name = "Mazandaran";
-      break;
-      case 18:
-      name = "Semnan Province";
-      break;
-      case 19:
-      name = "Markazi";
-      break;
-      case 21:
-      name = "Zanjan";
-      break;
-      case 22:
-      name = "Bushehr";
-      break;
-      case 23:
-      name = "Lorestan";
-      break;
-      case 24:
-      name = "Markazi";
-      break;
-      case 25:
-      name = "Semnan";
-      break;
-      case 26:
-      name = "Tehran";
-      break;
-      case 27:
-      name = "Zanjan";
-      break;
-      case 28:
-      name = "Esfahan";
-      break;
-      case 29:
-      name = "Kerman";
-      break;
-      case 30:
-      name = "Khorasan";
-      break;
-      case 31:
-      name = "Yazd";
-      break;
-      case 32:
-      name = "Ardabil";
-      break;
-      case 33:
-      name = "East Azarbaijan";
-      break;
-      case 34:
-      name = "Markazi";
-      break;
-      case 35:
-      name = "Mazandaran";
-      break;
-      case 36:
-      name = "Zanjan";
-      break;
-      case 37:
-      name = "Golestan";
-      break;
-      case 38:
-      name = "Qazvin";
-      break;
-      case 39:
-      name = "Qom";
-      break;
-      case 40:
-      name = "Yazd";
-      break;
-      case 41:
-      name = "Khorasan-e Janubi";
-      break;
-      case 42:
-      name = "Khorasan-e Razavi";
-      break;
-      case 43:
-      name = "Khorasan-e Shemali";
-      break;
-    }
-  }
-  if (strcmp(country_code,"IS") == 0) {
-    switch (region_code2) {
-      case 3:
-      name = "Arnessysla";
-      break;
-      case 5:
-      name = "Austur-Hunavatnssysla";
-      break;
-      case 6:
-      name = "Austur-Skaftafellssysla";
-      break;
-      case 7:
-      name = "Borgarfjardarsysla";
-      break;
-      case 9:
-      name = "Eyjafjardarsysla";
-      break;
-      case 10:
-      name = "Gullbringusysla";
-      break;
-      case 15:
-      name = "Kjosarsysla";
-      break;
-      case 17:
-      name = "Myrasysla";
-      break;
-      case 20:
-      name = "Nordur-Mulasysla";
-      break;
-      case 21:
-      name = "Nordur-Tingeyjarsysla";
-      break;
-      case 23:
-      name = "Rangarvallasysla";
-      break;
-      case 28:
-      name = "Skagafjardarsysla";
-      break;
-      case 29:
-      name = "Snafellsnes- og Hnappadalssysla";
-      break;
-      case 30:
-      name = "Strandasysla";
-      break;
-      case 31:
-      name = "Sudur-Mulasysla";
-      break;
-      case 32:
-      name = "Sudur-Tingeyjarsysla";
-      break;
-      case 34:
-      name = "Vestur-Bardastrandarsysla";
-      break;
-      case 35:
-      name = "Vestur-Hunavatnssysla";
-      break;
-      case 36:
-      name = "Vestur-Isafjardarsysla";
-      break;
-      case 37:
-      name = "Vestur-Skaftafellssysla";
-      break;
-      case 40:
-      name = "Norourland Eystra";
-      break;
-      case 41:
-      name = "Norourland Vestra";
-      break;
-      case 42:
-      name = "Suourland";
-      break;
-      case 43:
-      name = "Suournes";
-      break;
-      case 44:
-      name = "Vestfiroir";
-      break;
-      case 45:
-      name = "Vesturland";
-      break;
-    }
-  }
-  if (strcmp(country_code,"IT") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Abruzzi";
-      break;
-      case 2:
-      name = "Basilicata";
-      break;
-      case 3:
-      name = "Calabria";
-      break;
-      case 4:
-      name = "Campania";
-      break;
-      case 5:
-      name = "Emilia-Romagna";
-      break;
-      case 6:
-      name = "Friuli-Venezia Giulia";
-      break;
-      case 7:
-      name = "Lazio";
-      break;
-      case 8:
-      name = "Liguria";
-      break;
-      case 9:
-      name = "Lombardia";
-      break;
-      case 10:
-      name = "Marche";
-      break;
-      case 11:
-      name = "Molise";
-      break;
-      case 12:
-      name = "Piemonte";
-      break;
-      case 13:
-      name = "Puglia";
-      break;
-      case 14:
-      name = "Sardegna";
-      break;
-      case 15:
-      name = "Sicilia";
-      break;
-      case 16:
-      name = "Toscana";
-      break;
-      case 17:
-      name = "Trentino-Alto Adige";
-      break;
-      case 18:
-      name = "Umbria";
-      break;
-      case 19:
-      name = "Valle d'Aosta";
-      break;
-      case 20:
-      name = "Veneto";
-      break;
-    }
-  }
-  if (strcmp(country_code,"JM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Clarendon";
-      break;
-      case 2:
-      name = "Hanover";
-      break;
-      case 4:
-      name = "Manchester";
-      break;
-      case 7:
-      name = "Portland";
-      break;
-      case 8:
-      name = "Saint Andrew";
-      break;
-      case 9:
-      name = "Saint Ann";
-      break;
-      case 10:
-      name = "Saint Catherine";
-      break;
-      case 11:
-      name = "Saint Elizabeth";
-      break;
-      case 12:
-      name = "Saint James";
-      break;
-      case 13:
-      name = "Saint Mary";
-      break;
-      case 14:
-      name = "Saint Thomas";
-      break;
-      case 15:
-      name = "Trelawny";
-      break;
-      case 16:
-      name = "Westmoreland";
-      break;
-      case 17:
-      name = "Kingston";
-      break;
-    }
-  }
-  if (strcmp(country_code,"JO") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Al Balqa'";
-      break;
-      case 7:
-      name = "Ma";
-      break;
-      case 9:
-      name = "Al Karak";
-      break;
-      case 10:
-      name = "Al Mafraq";
-      break;
-      case 11:
-      name = "Amman Governorate";
-      break;
-      case 12:
-      name = "At Tafilah";
-      break;
-      case 13:
-      name = "Az Zarqa";
-      break;
-      case 14:
-      name = "Irbid";
-      break;
-      case 16:
-      name = "Amman";
-      break;
-    }
-  }
-  if (strcmp(country_code,"JP") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aichi";
-      break;
-      case 2:
-      name = "Akita";
-      break;
-      case 3:
-      name = "Aomori";
-      break;
-      case 4:
-      name = "Chiba";
-      break;
-      case 5:
-      name = "Ehime";
-      break;
-      case 6:
-      name = "Fukui";
-      break;
-      case 7:
-      name = "Fukuoka";
-      break;
-      case 8:
-      name = "Fukushima";
-      break;
-      case 9:
-      name = "Gifu";
-      break;
-      case 10:
-      name = "Gumma";
-      break;
-      case 11:
-      name = "Hiroshima";
-      break;
-      case 12:
-      name = "Hokkaido";
-      break;
-      case 13:
-      name = "Hyogo";
-      break;
-      case 14:
-      name = "Ibaraki";
-      break;
-      case 15:
-      name = "Ishikawa";
-      break;
-      case 16:
-      name = "Iwate";
-      break;
-      case 17:
-      name = "Kagawa";
-      break;
-      case 18:
-      name = "Kagoshima";
-      break;
-      case 19:
-      name = "Kanagawa";
-      break;
-      case 20:
-      name = "Kochi";
-      break;
-      case 21:
-      name = "Kumamoto";
-      break;
-      case 22:
-      name = "Kyoto";
-      break;
-      case 23:
-      name = "Mie";
-      break;
-      case 24:
-      name = "Miyagi";
-      break;
-      case 25:
-      name = "Miyazaki";
-      break;
-      case 26:
-      name = "Nagano";
-      break;
-      case 27:
-      name = "Nagasaki";
-      break;
-      case 28:
-      name = "Nara";
-      break;
-      case 29:
-      name = "Niigata";
-      break;
-      case 30:
-      name = "Oita";
-      break;
-      case 31:
-      name = "Okayama";
-      break;
-      case 32:
-      name = "Osaka";
-      break;
-      case 33:
-      name = "Saga";
-      break;
-      case 34:
-      name = "Saitama";
-      break;
-      case 35:
-      name = "Shiga";
-      break;
-      case 36:
-      name = "Shimane";
-      break;
-      case 37:
-      name = "Shizuoka";
-      break;
-      case 38:
-      name = "Tochigi";
-      break;
-      case 39:
-      name = "Tokushima";
-      break;
-      case 40:
-      name = "Tokyo";
-      break;
-      case 41:
-      name = "Tottori";
-      break;
-      case 42:
-      name = "Toyama";
-      break;
-      case 43:
-      name = "Wakayama";
-      break;
-      case 44:
-      name = "Yamagata";
-      break;
-      case 45:
-      name = "Yamaguchi";
-      break;
-      case 46:
-      name = "Yamanashi";
-      break;
-      case 47:
-      name = "Okinawa";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Central";
-      break;
-      case 2:
-      name = "Coast";
-      break;
-      case 3:
-      name = "Eastern";
-      break;
-      case 5:
-      name = "Nairobi Area";
-      break;
-      case 6:
-      name = "North-Eastern";
-      break;
-      case 7:
-      name = "Nyanza";
-      break;
-      case 8:
-      name = "Rift Valley";
-      break;
-      case 9:
-      name = "Western";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KG") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bishkek";
-      break;
-      case 2:
-      name = "Chuy";
-      break;
-      case 3:
-      name = "Jalal-Abad";
-      break;
-      case 4:
-      name = "Naryn";
-      break;
-      case 5:
-      name = "Osh";
-      break;
-      case 6:
-      name = "Talas";
-      break;
-      case 7:
-      name = "Ysyk-Kol";
-      break;
-      case 8:
-      name = "Osh";
-      break;
-      case 9:
-      name = "Batken";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KH") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Batdambang";
-      break;
-      case 2:
-      name = "Kampong Cham";
-      break;
-      case 3:
-      name = "Kampong Chhnang";
-      break;
-      case 4:
-      name = "Kampong Speu";
-      break;
-      case 5:
-      name = "Kampong Thum";
-      break;
-      case 6:
-      name = "Kampot";
-      break;
-      case 7:
-      name = "Kandal";
-      break;
-      case 8:
-      name = "Koh Kong";
-      break;
-      case 9:
-      name = "Kracheh";
-      break;
-      case 10:
-      name = "Mondulkiri";
-      break;
-      case 11:
-      name = "Phnum Penh";
-      break;
-      case 12:
-      name = "Pursat";
-      break;
-      case 13:
-      name = "Preah Vihear";
-      break;
-      case 14:
-      name = "Prey Veng";
-      break;
-      case 15:
-      name = "Ratanakiri Kiri";
-      break;
-      case 16:
-      name = "Siem Reap";
-      break;
-      case 17:
-      name = "Stung Treng";
-      break;
-      case 18:
-      name = "Svay Rieng";
-      break;
-      case 19:
-      name = "Takeo";
-      break;
-      case 25:
-      name = "Banteay Meanchey";
-      break;
-      case 29:
-      name = "Batdambang";
-      break;
-      case 30:
-      name = "Pailin";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KI") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Gilbert Islands";
-      break;
-      case 2:
-      name = "Line Islands";
-      break;
-      case 3:
-      name = "Phoenix Islands";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Anjouan";
-      break;
-      case 2:
-      name = "Grande Comore";
-      break;
-      case 3:
-      name = "Moheli";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KN") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Christ Church Nichola Town";
-      break;
-      case 2:
-      name = "Saint Anne Sandy Point";
-      break;
-      case 3:
-      name = "Saint George Basseterre";
-      break;
-      case 4:
-      name = "Saint George Gingerland";
-      break;
-      case 5:
-      name = "Saint James Windward";
-      break;
-      case 6:
-      name = "Saint John Capisterre";
-      break;
-      case 7:
-      name = "Saint John Figtree";
-      break;
-      case 8:
-      name = "Saint Mary Cayon";
-      break;
-      case 9:
-      name = "Saint Paul Capisterre";
-      break;
-      case 10:
-      name = "Saint Paul Charlestown";
-      break;
-      case 11:
-      name = "Saint Peter Basseterre";
-      break;
-      case 12:
-      name = "Saint Thomas Lowland";
-      break;
-      case 13:
-      name = "Saint Thomas Middle Island";
-      break;
-      case 15:
-      name = "Trinity Palmetto Point";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KP") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Chagang-do";
-      break;
-      case 3:
-      name = "Hamgyong-namdo";
-      break;
-      case 6:
-      name = "Hwanghae-namdo";
-      break;
-      case 7:
-      name = "Hwanghae-bukto";
-      break;
-      case 8:
-      name = "Kaesong-si";
-      break;
-      case 9:
-      name = "Kangwon-do";
-      break;
-      case 11:
-      name = "P'yongan-bukto";
-      break;
-      case 12:
-      name = "P'yongyang-si";
-      break;
-      case 13:
-      name = "Yanggang-do";
-      break;
-      case 14:
-      name = "Namp'o-si";
-      break;
-      case 15:
-      name = "P'yongan-namdo";
-      break;
-      case 17:
-      name = "Hamgyong-bukto";
-      break;
-      case 18:
-      name = "Najin Sonbong-si";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Cheju-do";
-      break;
-      case 3:
-      name = "Cholla-bukto";
-      break;
-      case 5:
-      name = "Ch'ungch'ong-bukto";
-      break;
-      case 6:
-      name = "Kangwon-do";
-      break;
-      case 10:
-      name = "Pusan-jikhalsi";
-      break;
-      case 11:
-      name = "Seoul-t'ukpyolsi";
-      break;
-      case 12:
-      name = "Inch'on-jikhalsi";
-      break;
-      case 13:
-      name = "Kyonggi-do";
-      break;
-      case 14:
-      name = "Kyongsang-bukto";
-      break;
-      case 15:
-      name = "Taegu-jikhalsi";
-      break;
-      case 16:
-      name = "Cholla-namdo";
-      break;
-      case 17:
-      name = "Ch'ungch'ong-namdo";
-      break;
-      case 18:
-      name = "Kwangju-jikhalsi";
-      break;
-      case 19:
-      name = "Taejon-jikhalsi";
-      break;
-      case 20:
-      name = "Kyongsang-namdo";
-      break;
-      case 21:
-      name = "Ulsan-gwangyoksi";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KW") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Al Ahmadi";
-      break;
-      case 2:
-      name = "Al Kuwayt";
-      break;
-      case 5:
-      name = "Al Jahra";
-      break;
-      case 7:
-      name = "Al Farwaniyah";
-      break;
-      case 8:
-      name = "Hawalli";
-      break;
-      case 9:
-      name = "Mubarak al Kabir";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KY") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Creek";
-      break;
-      case 2:
-      name = "Eastern";
-      break;
-      case 3:
-      name = "Midland";
-      break;
-      case 4:
-      name = "South Town";
-      break;
-      case 5:
-      name = "Spot Bay";
-      break;
-      case 6:
-      name = "Stake Bay";
-      break;
-      case 7:
-      name = "West End";
-      break;
-      case 8:
-      name = "Western";
-      break;
-    }
-  }
-  if (strcmp(country_code,"KZ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Almaty";
-      break;
-      case 2:
-      name = "Almaty City";
-      break;
-      case 3:
-      name = "Aqmola";
-      break;
-      case 4:
-      name = "Aqtobe";
-      break;
-      case 5:
-      name = "Astana";
-      break;
-      case 6:
-      name = "Atyrau";
-      break;
-      case 7:
-      name = "West Kazakhstan";
-      break;
-      case 8:
-      name = "Bayqonyr";
-      break;
-      case 9:
-      name = "Mangghystau";
-      break;
-      case 10:
-      name = "South Kazakhstan";
-      break;
-      case 11:
-      name = "Pavlodar";
-      break;
-      case 12:
-      name = "Qaraghandy";
-      break;
-      case 13:
-      name = "Qostanay";
-      break;
-      case 14:
-      name = "Qyzylorda";
-      break;
-      case 15:
-      name = "East Kazakhstan";
-      break;
-      case 16:
-      name = "North Kazakhstan";
-      break;
-      case 17:
-      name = "Zhambyl";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LA") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Attapu";
-      break;
-      case 2:
-      name = "Champasak";
-      break;
-      case 3:
-      name = "Houaphan";
-      break;
-      case 4:
-      name = "Khammouan";
-      break;
-      case 5:
-      name = "Louang Namtha";
-      break;
-      case 7:
-      name = "Oudomxai";
-      break;
-      case 8:
-      name = "Phongsali";
-      break;
-      case 9:
-      name = "Saravan";
-      break;
-      case 10:
-      name = "Savannakhet";
-      break;
-      case 11:
-      name = "Vientiane";
-      break;
-      case 13:
-      name = "Xaignabouri";
-      break;
-      case 14:
-      name = "Xiangkhoang";
-      break;
-      case 17:
-      name = "Louangphrabang";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LB") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Beqaa";
-      break;
-      case 2:
-      name = "Al Janub";
-      break;
-      case 3:
-      name = "Liban-Nord";
-      break;
-      case 4:
-      name = "Beyrouth";
-      break;
-      case 5:
-      name = "Mont-Liban";
-      break;
-      case 6:
-      name = "Liban-Sud";
-      break;
-      case 7:
-      name = "Nabatiye";
-      break;
-      case 8:
-      name = "Beqaa";
-      break;
-      case 9:
-      name = "Liban-Nord";
-      break;
-      case 10:
-      name = "Aakk,r";
-      break;
-      case 11:
-      name = "Baalbek-Hermel";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LC") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Anse-la-Raye";
-      break;
-      case 2:
-      name = "Dauphin";
-      break;
-      case 3:
-      name = "Castries";
-      break;
-      case 4:
-      name = "Choiseul";
-      break;
-      case 5:
-      name = "Dennery";
-      break;
-      case 6:
-      name = "Gros-Islet";
-      break;
-      case 7:
-      name = "Laborie";
-      break;
-      case 8:
-      name = "Micoud";
-      break;
-      case 9:
-      name = "Soufriere";
-      break;
-      case 10:
-      name = "Vieux-Fort";
-      break;
-      case 11:
-      name = "Praslin";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LI") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Balzers";
-      break;
-      case 2:
-      name = "Eschen";
-      break;
-      case 3:
-      name = "Gamprin";
-      break;
-      case 4:
-      name = "Mauren";
-      break;
-      case 5:
-      name = "Planken";
-      break;
-      case 6:
-      name = "Ruggell";
-      break;
-      case 7:
-      name = "Schaan";
-      break;
-      case 8:
-      name = "Schellenberg";
-      break;
-      case 9:
-      name = "Triesen";
-      break;
-      case 10:
-      name = "Triesenberg";
-      break;
-      case 11:
-      name = "Vaduz";
-      break;
-      case 21:
-      name = "Gbarpolu";
-      break;
-      case 22:
-      name = "River Gee";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LK") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Amparai";
-      break;
-      case 2:
-      name = "Anuradhapura";
-      break;
-      case 3:
-      name = "Badulla";
-      break;
-      case 4:
-      name = "Batticaloa";
-      break;
-      case 6:
-      name = "Galle";
-      break;
-      case 7:
-      name = "Hambantota";
-      break;
-      case 9:
-      name = "Kalutara";
-      break;
-      case 10:
-      name = "Kandy";
-      break;
-      case 11:
-      name = "Kegalla";
-      break;
-      case 12:
-      name = "Kurunegala";
-      break;
-      case 14:
-      name = "Matale";
-      break;
-      case 15:
-      name = "Matara";
-      break;
-      case 16:
-      name = "Moneragala";
-      break;
-      case 17:
-      name = "Nuwara Eliya";
-      break;
-      case 18:
-      name = "Polonnaruwa";
-      break;
-      case 19:
-      name = "Puttalam";
-      break;
-      case 20:
-      name = "Ratnapura";
-      break;
-      case 21:
-      name = "Trincomalee";
-      break;
-      case 23:
-      name = "Colombo";
-      break;
-      case 24:
-      name = "Gampaha";
-      break;
-      case 25:
-      name = "Jaffna";
-      break;
-      case 26:
-      name = "Mannar";
-      break;
-      case 27:
-      name = "Mullaittivu";
-      break;
-      case 28:
-      name = "Vavuniya";
-      break;
-      case 29:
-      name = "Central";
-      break;
-      case 30:
-      name = "North Central";
-      break;
-      case 31:
-      name = "Northern";
-      break;
-      case 32:
-      name = "North Western";
-      break;
-      case 33:
-      name = "Sabaragamuwa";
-      break;
-      case 34:
-      name = "Southern";
-      break;
-      case 35:
-      name = "Uva";
-      break;
-      case 36:
-      name = "Western";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bong";
-      break;
-      case 4:
-      name = "Grand Cape Mount";
-      break;
-      case 5:
-      name = "Lofa";
-      break;
-      case 6:
-      name = "Maryland";
-      break;
-      case 7:
-      name = "Monrovia";
-      break;
-      case 9:
-      name = "Nimba";
-      break;
-      case 10:
-      name = "Sino";
-      break;
-      case 11:
-      name = "Grand Bassa";
-      break;
-      case 12:
-      name = "Grand Cape Mount";
-      break;
-      case 13:
-      name = "Maryland";
-      break;
-      case 14:
-      name = "Montserrado";
-      break;
-      case 17:
-      name = "Margibi";
-      break;
-      case 18:
-      name = "River Cess";
-      break;
-      case 19:
-      name = "Grand Gedeh";
-      break;
-      case 20:
-      name = "Lofa";
-      break;
-      case 21:
-      name = "Gbarpolu";
-      break;
-      case 22:
-      name = "River Gee";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LS") == 0) {
-    switch (region_code2) {
-      case 10:
-      name = "Berea";
-      break;
-      case 11:
-      name = "Butha-Buthe";
-      break;
-      case 12:
-      name = "Leribe";
-      break;
-      case 13:
-      name = "Mafeteng";
-      break;
-      case 14:
-      name = "Maseru";
-      break;
-      case 15:
-      name = "Mohales Hoek";
-      break;
-      case 16:
-      name = "Mokhotlong";
-      break;
-      case 17:
-      name = "Qachas Nek";
-      break;
-      case 18:
-      name = "Quthing";
-      break;
-      case 19:
-      name = "Thaba-Tseka";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LT") == 0) {
-    switch (region_code2) {
-      case 56:
-      name = "Alytaus Apskritis";
-      break;
-      case 57:
-      name = "Kauno Apskritis";
-      break;
-      case 58:
-      name = "Klaipedos Apskritis";
-      break;
-      case 59:
-      name = "Marijampoles Apskritis";
-      break;
-      case 60:
-      name = "Panevezio Apskritis";
-      break;
-      case 61:
-      name = "Siauliu Apskritis";
-      break;
-      case 62:
-      name = "Taurages Apskritis";
-      break;
-      case 63:
-      name = "Telsiu Apskritis";
-      break;
-      case 64:
-      name = "Utenos Apskritis";
-      break;
-      case 65:
-      name = "Vilniaus Apskritis";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LU") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Diekirch";
-      break;
-      case 2:
-      name = "Grevenmacher";
-      break;
-      case 3:
-      name = "Luxembourg";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LV") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aizkraukles";
-      break;
-      case 2:
-      name = "Aluksnes";
-      break;
-      case 3:
-      name = "Balvu";
-      break;
-      case 4:
-      name = "Bauskas";
-      break;
-      case 5:
-      name = "Cesu";
-      break;
-      case 6:
-      name = "Daugavpils";
-      break;
-      case 7:
-      name = "Daugavpils";
-      break;
-      case 8:
-      name = "Dobeles";
-      break;
-      case 9:
-      name = "Gulbenes";
-      break;
-      case 10:
-      name = "Jekabpils";
-      break;
-      case 11:
-      name = "Jelgava";
-      break;
-      case 12:
-      name = "Jelgavas";
-      break;
-      case 13:
-      name = "Jurmala";
-      break;
-      case 14:
-      name = "Kraslavas";
-      break;
-      case 15:
-      name = "Kuldigas";
-      break;
-      case 16:
-      name = "Liepaja";
-      break;
-      case 17:
-      name = "Liepajas";
-      break;
-      case 18:
-      name = "Limbazu";
-      break;
-      case 19:
-      name = "Ludzas";
-      break;
-      case 20:
-      name = "Madonas";
-      break;
-      case 21:
-      name = "Ogres";
-      break;
-      case 22:
-      name = "Preilu";
-      break;
-      case 23:
-      name = "Rezekne";
-      break;
-      case 24:
-      name = "Rezeknes";
-      break;
-      case 25:
-      name = "Riga";
-      break;
-      case 26:
-      name = "Rigas";
-      break;
-      case 27:
-      name = "Saldus";
-      break;
-      case 28:
-      name = "Talsu";
-      break;
-      case 29:
-      name = "Tukuma";
-      break;
-      case 30:
-      name = "Valkas";
-      break;
-      case 31:
-      name = "Valmieras";
-      break;
-      case 32:
-      name = "Ventspils";
-      break;
-      case 33:
-      name = "Ventspils";
-      break;
-    }
-  }
-  if (strcmp(country_code,"LY") == 0) {
-    switch (region_code2) {
-      case 3:
-      name = "Al Aziziyah";
-      break;
-      case 5:
-      name = "Al Jufrah";
-      break;
-      case 8:
-      name = "Al Kufrah";
-      break;
-      case 13:
-      name = "Ash Shati'";
-      break;
-      case 30:
-      name = "Murzuq";
-      break;
-      case 34:
-      name = "Sabha";
-      break;
-      case 41:
-      name = "Tarhunah";
-      break;
-      case 42:
-      name = "Tubruq";
-      break;
-      case 45:
-      name = "Zlitan";
-      break;
-      case 47:
-      name = "Ajdabiya";
-      break;
-      case 48:
-      name = "Al Fatih";
-      break;
-      case 49:
-      name = "Al Jabal al Akhdar";
-      break;
-      case 50:
-      name = "Al Khums";
-      break;
-      case 51:
-      name = "An Nuqat al Khams";
-      break;
-      case 52:
-      name = "Awbari";
-      break;
-      case 53:
-      name = "Az Zawiyah";
-      break;
-      case 54:
-      name = "Banghazi";
-      break;
-      case 55:
-      name = "Darnah";
-      break;
-      case 56:
-      name = "Ghadamis";
-      break;
-      case 57:
-      name = "Gharyan";
-      break;
-      case 58:
-      name = "Misratah";
-      break;
-      case 59:
-      name = "Sawfajjin";
-      break;
-      case 60:
-      name = "Surt";
-      break;
-      case 61:
-      name = "Tarabulus";
-      break;
-      case 62:
-      name = "Yafran";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MA") == 0) {
-    switch (region_code2) {
-      case 45:
-      name = "Grand Casablanca";
-      break;
-      case 46:
-      name = "Fes-Boulemane";
-      break;
-      case 47:
-      name = "Marrakech-Tensift-Al Haouz";
-      break;
-      case 48:
-      name = "Meknes-Tafilalet";
-      break;
-      case 49:
-      name = "Rabat-Sale-Zemmour-Zaer";
-      break;
-      case 50:
-      name = "Chaouia-Ouardigha";
-      break;
-      case 51:
-      name = "Doukkala-Abda";
-      break;
-      case 52:
-      name = "Gharb-Chrarda-Beni Hssen";
-      break;
-      case 53:
-      name = "Guelmim-Es Smara";
-      break;
-      case 54:
-      name = "Oriental";
-      break;
-      case 55:
-      name = "Souss-Massa-Dr,a";
-      break;
-      case 56:
-      name = "Tadla-Azilal";
-      break;
-      case 57:
-      name = "Tanger-Tetouan";
-      break;
-      case 58:
-      name = "Taza-Al Hoceima-Taounate";
-      break;
-      case 59:
-      name = "La,youne-Boujdour-Sakia El Hamra";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MC") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "La Condamine";
-      break;
-      case 2:
-      name = "Monaco";
-      break;
-      case 3:
-      name = "Monte-Carlo";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MD") == 0) {
-    switch (region_code2) {
-      case 51:
-      name = "Gagauzia";
-      break;
-      case 57:
-      name = "Chisinau";
-      break;
-      case 58:
-      name = "Stinga Nistrului";
-      break;
-      case 59:
-      name = "Anenii Noi";
-      break;
-      case 60:
-      name = "Balti";
-      break;
-      case 61:
-      name = "Basarabeasca";
-      break;
-      case 62:
-      name = "Bender";
-      break;
-      case 63:
-      name = "Briceni";
-      break;
-      case 64:
-      name = "Cahul";
-      break;
-      case 65:
-      name = "Cantemir";
-      break;
-      case 66:
-      name = "Calarasi";
-      break;
-      case 67:
-      name = "Causeni";
-      break;
-      case 68:
-      name = "Cimislia";
-      break;
-      case 69:
-      name = "Criuleni";
-      break;
-      case 70:
-      name = "Donduseni";
-      break;
-      case 71:
-      name = "Drochia";
-      break;
-      case 72:
-      name = "Dubasari";
-      break;
-      case 73:
-      name = "Edinet";
-      break;
-      case 74:
-      name = "Falesti";
-      break;
-      case 75:
-      name = "Floresti";
-      break;
-      case 76:
-      name = "Glodeni";
-      break;
-      case 77:
-      name = "Hincesti";
-      break;
-      case 78:
-      name = "Ialoveni";
-      break;
-      case 79:
-      name = "Leova";
-      break;
-      case 80:
-      name = "Nisporeni";
-      break;
-      case 81:
-      name = "Ocnita";
-      break;
-      case 83:
-      name = "Rezina";
-      break;
-      case 84:
-      name = "Riscani";
-      break;
-      case 85:
-      name = "Singerei";
-      break;
-      case 86:
-      name = "Soldanesti";
-      break;
-      case 87:
-      name = "Soroca";
-      break;
-      case 88:
-      name = "Stefan-Voda";
-      break;
-      case 89:
-      name = "Straseni";
-      break;
-      case 90:
-      name = "Taraclia";
-      break;
-      case 91:
-      name = "Telenesti";
-      break;
-      case 92:
-      name = "Ungheni";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MG") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Antsiranana";
-      break;
-      case 2:
-      name = "Fianarantsoa";
-      break;
-      case 3:
-      name = "Mahajanga";
-      break;
-      case 4:
-      name = "Toamasina";
-      break;
-      case 5:
-      name = "Antananarivo";
-      break;
-      case 6:
-      name = "Toliara";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MK") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aracinovo";
-      break;
-      case 2:
-      name = "Bac";
-      break;
-      case 3:
-      name = "Belcista";
-      break;
-      case 4:
-      name = "Berovo";
-      break;
-      case 5:
-      name = "Bistrica";
-      break;
-      case 6:
-      name = "Bitola";
-      break;
-      case 7:
-      name = "Blatec";
-      break;
-      case 8:
-      name = "Bogdanci";
-      break;
-      case 9:
-      name = "Bogomila";
-      break;
-      case 10:
-      name = "Bogovinje";
-      break;
-      case 11:
-      name = "Bosilovo";
-      break;
-      case 12:
-      name = "Brvenica";
-      break;
-      case 13:
-      name = "Cair";
-      break;
-      case 14:
-      name = "Capari";
-      break;
-      case 15:
-      name = "Caska";
-      break;
-      case 16:
-      name = "Cegrane";
-      break;
-      case 17:
-      name = "Centar";
-      break;
-      case 18:
-      name = "Centar Zupa";
-      break;
-      case 19:
-      name = "Cesinovo";
-      break;
-      case 20:
-      name = "Cucer-Sandevo";
-      break;
-      case 21:
-      name = "Debar";
-      break;
-      case 22:
-      name = "Delcevo";
-      break;
-      case 23:
-      name = "Delogozdi";
-      break;
-      case 24:
-      name = "Demir Hisar";
-      break;
-      case 25:
-      name = "Demir Kapija";
-      break;
-      case 26:
-      name = "Dobrusevo";
-      break;
-      case 27:
-      name = "Dolna Banjica";
-      break;
-      case 28:
-      name = "Dolneni";
-      break;
-      case 29:
-      name = "Dorce Petrov";
-      break;
-      case 30:
-      name = "Drugovo";
-      break;
-      case 31:
-      name = "Dzepciste";
-      break;
-      case 32:
-      name = "Gazi Baba";
-      break;
-      case 33:
-      name = "Gevgelija";
-      break;
-      case 34:
-      name = "Gostivar";
-      break;
-      case 35:
-      name = "Gradsko";
-      break;
-      case 36:
-      name = "Ilinden";
-      break;
-      case 37:
-      name = "Izvor";
-      break;
-      case 38:
-      name = "Jegunovce";
-      break;
-      case 39:
-      name = "Kamenjane";
-      break;
-      case 40:
-      name = "Karbinci";
-      break;
-      case 41:
-      name = "Karpos";
-      break;
-      case 42:
-      name = "Kavadarci";
-      break;
-      case 43:
-      name = "Kicevo";
-      break;
-      case 44:
-      name = "Kisela Voda";
-      break;
-      case 45:
-      name = "Klecevce";
-      break;
-      case 46:
-      name = "Kocani";
-      break;
-      case 47:
-      name = "Konce";
-      break;
-      case 48:
-      name = "Kondovo";
-      break;
-      case 49:
-      name = "Konopiste";
-      break;
-      case 50:
-      name = "Kosel";
-      break;
-      case 51:
-      name = "Kratovo";
-      break;
-      case 52:
-      name = "Kriva Palanka";
-      break;
-      case 53:
-      name = "Krivogastani";
-      break;
-      case 54:
-      name = "Krusevo";
-      break;
-      case 55:
-      name = "Kuklis";
-      break;
-      case 56:
-      name = "Kukurecani";
-      break;
-      case 57:
-      name = "Kumanovo";
-      break;
-      case 58:
-      name = "Labunista";
-      break;
-      case 59:
-      name = "Lipkovo";
-      break;
-      case 60:
-      name = "Lozovo";
-      break;
-      case 61:
-      name = "Lukovo";
-      break;
-      case 62:
-      name = "Makedonska Kamenica";
-      break;
-      case 63:
-      name = "Makedonski Brod";
-      break;
-      case 64:
-      name = "Mavrovi Anovi";
-      break;
-      case 65:
-      name = "Meseista";
-      break;
-      case 66:
-      name = "Miravci";
-      break;
-      case 67:
-      name = "Mogila";
-      break;
-      case 68:
-      name = "Murtino";
-      break;
-      case 69:
-      name = "Negotino";
-      break;
-      case 70:
-      name = "Negotino-Polosko";
-      break;
-      case 71:
-      name = "Novaci";
-      break;
-      case 72:
-      name = "Novo Selo";
-      break;
-      case 73:
-      name = "Oblesevo";
-      break;
-      case 74:
-      name = "Ohrid";
-      break;
-      case 75:
-      name = "Orasac";
-      break;
-      case 76:
-      name = "Orizari";
-      break;
-      case 77:
-      name = "Oslomej";
-      break;
-      case 78:
-      name = "Pehcevo";
-      break;
-      case 79:
-      name = "Petrovec";
-      break;
-      case 80:
-      name = "Plasnica";
-      break;
-      case 81:
-      name = "Podares";
-      break;
-      case 82:
-      name = "Prilep";
-      break;
-      case 83:
-      name = "Probistip";
-      break;
-      case 84:
-      name = "Radovis";
-      break;
-      case 85:
-      name = "Rankovce";
-      break;
-      case 86:
-      name = "Resen";
-      break;
-      case 87:
-      name = "Rosoman";
-      break;
-      case 88:
-      name = "Rostusa";
-      break;
-      case 89:
-      name = "Samokov";
-      break;
-      case 90:
-      name = "Saraj";
-      break;
-      case 91:
-      name = "Sipkovica";
-      break;
-      case 92:
-      name = "Sopiste";
-      break;
-      case 93:
-      name = "Sopotnica";
-      break;
-      case 94:
-      name = "Srbinovo";
-      break;
-      case 95:
-      name = "Staravina";
-      break;
-      case 96:
-      name = "Star Dojran";
-      break;
-      case 97:
-      name = "Staro Nagoricane";
-      break;
-      case 98:
-      name = "Stip";
-      break;
-      case 99:
-      name = "Struga";
-      break;
-      case 832:
-      name = "Strumica";
-      break;
-      case 833:
-      name = "Studenicani";
-      break;
-      case 834:
-      name = "Suto Orizari";
-      break;
-      case 835:
-      name = "Sveti Nikole";
-      break;
-      case 836:
-      name = "Tearce";
-      break;
-      case 837:
-      name = "Tetovo";
-      break;
-      case 838:
-      name = "Topolcani";
-      break;
-      case 839:
-      name = "Valandovo";
-      break;
-      case 840:
-      name = "Vasilevo";
-      break;
-      case 875:
-      name = "Veles";
-      break;
-      case 876:
-      name = "Velesta";
-      break;
-      case 877:
-      name = "Vevcani";
-      break;
-      case 878:
-      name = "Vinica";
-      break;
-      case 879:
-      name = "Vitoliste";
-      break;
-      case 880:
-      name = "Vranestica";
-      break;
-      case 881:
-      name = "Vrapciste";
-      break;
-      case 882:
-      name = "Vratnica";
-      break;
-      case 883:
-      name = "Vrutok";
-      break;
-      case 918:
-      name = "Zajas";
-      break;
-      case 919:
-      name = "Zelenikovo";
-      break;
-      case 920:
-      name = "Zelino";
-      break;
-      case 921:
-      name = "Zitose";
-      break;
-      case 922:
-      name = "Zletovo";
-      break;
-      case 923:
-      name = "Zrnovci";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ML") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bamako";
-      break;
-      case 3:
-      name = "Kayes";
-      break;
-      case 4:
-      name = "Mopti";
-      break;
-      case 5:
-      name = "Segou";
-      break;
-      case 6:
-      name = "Sikasso";
-      break;
-      case 7:
-      name = "Koulikoro";
-      break;
-      case 8:
-      name = "Tombouctou";
-      break;
-      case 9:
-      name = "Gao";
-      break;
-      case 10:
-      name = "Kidal";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Rakhine State";
-      break;
-      case 2:
-      name = "Chin State";
-      break;
-      case 3:
-      name = "Irrawaddy";
-      break;
-      case 4:
-      name = "Kachin State";
-      break;
-      case 5:
-      name = "Karan State";
-      break;
-      case 6:
-      name = "Kayah State";
-      break;
-      case 7:
-      name = "Magwe";
-      break;
-      case 8:
-      name = "Mandalay";
-      break;
-      case 9:
-      name = "Pegu";
-      break;
-      case 10:
-      name = "Sagaing";
-      break;
-      case 11:
-      name = "Shan State";
-      break;
-      case 12:
-      name = "Tenasserim";
-      break;
-      case 13:
-      name = "Mon State";
-      break;
-      case 14:
-      name = "Rangoon";
-      break;
-      case 17:
-      name = "Yangon";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MN") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Arhangay";
-      break;
-      case 2:
-      name = "Bayanhongor";
-      break;
-      case 3:
-      name = "Bayan-Olgiy";
-      break;
-      case 5:
-      name = "Darhan";
-      break;
-      case 6:
-      name = "Dornod";
-      break;
-      case 7:
-      name = "Dornogovi";
-      break;
-      case 8:
-      name = "Dundgovi";
-      break;
-      case 9:
-      name = "Dzavhan";
-      break;
-      case 10:
-      name = "Govi-Altay";
-      break;
-      case 11:
-      name = "Hentiy";
-      break;
-      case 12:
-      name = "Hovd";
-      break;
-      case 13:
-      name = "Hovsgol";
-      break;
-      case 14:
-      name = "Omnogovi";
-      break;
-      case 15:
-      name = "Ovorhangay";
-      break;
-      case 16:
-      name = "Selenge";
-      break;
-      case 17:
-      name = "Suhbaatar";
-      break;
-      case 18:
-      name = "Tov";
-      break;
-      case 19:
-      name = "Uvs";
-      break;
-      case 20:
-      name = "Ulaanbaatar";
-      break;
-      case 21:
-      name = "Bulgan";
-      break;
-      case 22:
-      name = "Erdenet";
-      break;
-      case 23:
-      name = "Darhan-Uul";
-      break;
-      case 24:
-      name = "Govisumber";
-      break;
-      case 25:
-      name = "Orhon";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ilhas";
-      break;
-      case 2:
-      name = "Macau";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Hodh Ech Chargui";
-      break;
-      case 2:
-      name = "Hodh El Gharbi";
-      break;
-      case 3:
-      name = "Assaba";
-      break;
-      case 4:
-      name = "Gorgol";
-      break;
-      case 5:
-      name = "Brakna";
-      break;
-      case 6:
-      name = "Trarza";
-      break;
-      case 7:
-      name = "Adrar";
-      break;
-      case 8:
-      name = "Dakhlet Nouadhibou";
-      break;
-      case 9:
-      name = "Tagant";
-      break;
-      case 10:
-      name = "Guidimaka";
-      break;
-      case 11:
-      name = "Tiris Zemmour";
-      break;
-      case 12:
-      name = "Inchiri";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MS") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Saint Anthony";
-      break;
-      case 2:
-      name = "Saint Georges";
-      break;
-      case 3:
-      name = "Saint Peter";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MU") == 0) {
-    switch (region_code2) {
-      case 12:
-      name = "Black River";
-      break;
-      case 13:
-      name = "Flacq";
-      break;
-      case 14:
-      name = "Grand Port";
-      break;
-      case 15:
-      name = "Moka";
-      break;
-      case 16:
-      name = "Pamplemousses";
-      break;
-      case 17:
-      name = "Plaines Wilhems";
-      break;
-      case 18:
-      name = "Port Louis";
-      break;
-      case 19:
-      name = "Riviere du Rempart";
-      break;
-      case 20:
-      name = "Savanne";
-      break;
-      case 21:
-      name = "Agalega Islands";
-      break;
-      case 22:
-      name = "Cargados Carajos";
-      break;
-      case 23:
-      name = "Rodrigues";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MV") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Seenu";
-      break;
-      case 5:
-      name = "Laamu";
-      break;
-      case 30:
-      name = "Alifu";
-      break;
-      case 31:
-      name = "Baa";
-      break;
-      case 32:
-      name = "Dhaalu";
-      break;
-      case 33:
-      name = "Faafu ";
-      break;
-      case 34:
-      name = "Gaafu Alifu";
-      break;
-      case 35:
-      name = "Gaafu Dhaalu";
-      break;
-      case 36:
-      name = "Haa Alifu";
-      break;
-      case 37:
-      name = "Haa Dhaalu";
-      break;
-      case 38:
-      name = "Kaafu";
-      break;
-      case 39:
-      name = "Lhaviyani";
-      break;
-      case 40:
-      name = "Maale";
-      break;
-      case 41:
-      name = "Meemu";
-      break;
-      case 42:
-      name = "Gnaviyani";
-      break;
-      case 43:
-      name = "Noonu";
-      break;
-      case 44:
-      name = "Raa";
-      break;
-      case 45:
-      name = "Shaviyani";
-      break;
-      case 46:
-      name = "Thaa";
-      break;
-      case 47:
-      name = "Vaavu";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MW") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Chikwawa";
-      break;
-      case 3:
-      name = "Chiradzulu";
-      break;
-      case 4:
-      name = "Chitipa";
-      break;
-      case 5:
-      name = "Thyolo";
-      break;
-      case 6:
-      name = "Dedza";
-      break;
-      case 7:
-      name = "Dowa";
-      break;
-      case 8:
-      name = "Karonga";
-      break;
-      case 9:
-      name = "Kasungu";
-      break;
-      case 11:
-      name = "Lilongwe";
-      break;
-      case 12:
-      name = "Mangochi";
-      break;
-      case 13:
-      name = "Mchinji";
-      break;
-      case 15:
-      name = "Mzimba";
-      break;
-      case 16:
-      name = "Ntcheu";
-      break;
-      case 17:
-      name = "Nkhata Bay";
-      break;
-      case 18:
-      name = "Nkhotakota";
-      break;
-      case 19:
-      name = "Nsanje";
-      break;
-      case 20:
-      name = "Ntchisi";
-      break;
-      case 21:
-      name = "Rumphi";
-      break;
-      case 22:
-      name = "Salima";
-      break;
-      case 23:
-      name = "Zomba";
-      break;
-      case 24:
-      name = "Blantyre";
-      break;
-      case 25:
-      name = "Mwanza";
-      break;
-      case 26:
-      name = "Balaka";
-      break;
-      case 27:
-      name = "Likoma";
-      break;
-      case 28:
-      name = "Machinga";
-      break;
-      case 29:
-      name = "Mulanje";
-      break;
-      case 30:
-      name = "Phalombe";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MX") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aguascalientes";
-      break;
-      case 2:
-      name = "Baja California";
-      break;
-      case 3:
-      name = "Baja California Sur";
-      break;
-      case 4:
-      name = "Campeche";
-      break;
-      case 5:
-      name = "Chiapas";
-      break;
-      case 6:
-      name = "Chihuahua";
-      break;
-      case 7:
-      name = "Coahuila de Zaragoza";
-      break;
-      case 8:
-      name = "Colima";
-      break;
-      case 9:
-      name = "Distrito Federal";
-      break;
-      case 10:
-      name = "Durango";
-      break;
-      case 11:
-      name = "Guanajuato";
-      break;
-      case 12:
-      name = "Guerrero";
-      break;
-      case 13:
-      name = "Hidalgo";
-      break;
-      case 14:
-      name = "Jalisco";
-      break;
-      case 15:
-      name = "Mexico";
-      break;
-      case 16:
-      name = "Michoacan de Ocampo";
-      break;
-      case 17:
-      name = "Morelos";
-      break;
-      case 18:
-      name = "Nayarit";
-      break;
-      case 19:
-      name = "Nuevo Leon";
-      break;
-      case 20:
-      name = "Oaxaca";
-      break;
-      case 21:
-      name = "Puebla";
-      break;
-      case 22:
-      name = "Queretaro de Arteaga";
-      break;
-      case 23:
-      name = "Quintana Roo";
-      break;
-      case 24:
-      name = "San Luis Potosi";
-      break;
-      case 25:
-      name = "Sinaloa";
-      break;
-      case 26:
-      name = "Sonora";
-      break;
-      case 27:
-      name = "Tabasco";
-      break;
-      case 28:
-      name = "Tamaulipas";
-      break;
-      case 29:
-      name = "Tlaxcala";
-      break;
-      case 30:
-      name = "Veracruz-Llave";
-      break;
-      case 31:
-      name = "Yucatan";
-      break;
-      case 32:
-      name = "Zacatecas";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MY") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Johor";
-      break;
-      case 2:
-      name = "Kedah";
-      break;
-      case 3:
-      name = "Kelantan";
-      break;
-      case 4:
-      name = "Melaka";
-      break;
-      case 5:
-      name = "Negeri Sembilan";
-      break;
-      case 6:
-      name = "Pahang";
-      break;
-      case 7:
-      name = "Perak";
-      break;
-      case 8:
-      name = "Perlis";
-      break;
-      case 9:
-      name = "Pulau Pinang";
-      break;
-      case 11:
-      name = "Sarawak";
-      break;
-      case 12:
-      name = "Selangor";
-      break;
-      case 13:
-      name = "Terengganu";
-      break;
-      case 14:
-      name = "Kuala Lumpur";
-      break;
-      case 15:
-      name = "Labuan";
-      break;
-      case 16:
-      name = "Sabah";
-      break;
-      case 17:
-      name = "Putrajaya";
-      break;
-    }
-  }
-  if (strcmp(country_code,"MZ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Cabo Delgado";
-      break;
-      case 2:
-      name = "Gaza";
-      break;
-      case 3:
-      name = "Inhambane";
-      break;
-      case 4:
-      name = "Maputo";
-      break;
-      case 5:
-      name = "Sofala";
-      break;
-      case 6:
-      name = "Nampula";
-      break;
-      case 7:
-      name = "Niassa";
-      break;
-      case 8:
-      name = "Tete";
-      break;
-      case 9:
-      name = "Zambezia";
-      break;
-      case 10:
-      name = "Manica";
-      break;
-      case 11:
-      name = "Maputo";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NA") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bethanien";
-      break;
-      case 2:
-      name = "Caprivi Oos";
-      break;
-      case 3:
-      name = "Boesmanland";
-      break;
-      case 4:
-      name = "Gobabis";
-      break;
-      case 5:
-      name = "Grootfontein";
-      break;
-      case 6:
-      name = "Kaokoland";
-      break;
-      case 7:
-      name = "Karibib";
-      break;
-      case 8:
-      name = "Keetmanshoop";
-      break;
-      case 9:
-      name = "Luderitz";
-      break;
-      case 10:
-      name = "Maltahohe";
-      break;
-      case 11:
-      name = "Okahandja";
-      break;
-      case 12:
-      name = "Omaruru";
-      break;
-      case 13:
-      name = "Otjiwarongo";
-      break;
-      case 14:
-      name = "Outjo";
-      break;
-      case 15:
-      name = "Owambo";
-      break;
-      case 16:
-      name = "Rehoboth";
-      break;
-      case 17:
-      name = "Swakopmund";
-      break;
-      case 18:
-      name = "Tsumeb";
-      break;
-      case 20:
-      name = "Karasburg";
-      break;
-      case 21:
-      name = "Windhoek";
-      break;
-      case 22:
-      name = "Damaraland";
-      break;
-      case 23:
-      name = "Hereroland Oos";
-      break;
-      case 24:
-      name = "Hereroland Wes";
-      break;
-      case 25:
-      name = "Kavango";
-      break;
-      case 26:
-      name = "Mariental";
-      break;
-      case 27:
-      name = "Namaland";
-      break;
-      case 28:
-      name = "Caprivi";
-      break;
-      case 29:
-      name = "Erongo";
-      break;
-      case 30:
-      name = "Hardap";
-      break;
-      case 31:
-      name = "Karas";
-      break;
-      case 32:
-      name = "Kunene";
-      break;
-      case 33:
-      name = "Ohangwena";
-      break;
-      case 34:
-      name = "Okavango";
-      break;
-      case 35:
-      name = "Omaheke";
-      break;
-      case 36:
-      name = "Omusati";
-      break;
-      case 37:
-      name = "Oshana";
-      break;
-      case 38:
-      name = "Oshikoto";
-      break;
-      case 39:
-      name = "Otjozondjupa";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Agadez";
-      break;
-      case 2:
-      name = "Diffa";
-      break;
-      case 3:
-      name = "Dosso";
-      break;
-      case 4:
-      name = "Maradi";
-      break;
-      case 5:
-      name = "Niamey";
-      break;
-      case 6:
-      name = "Tahoua";
-      break;
-      case 7:
-      name = "Zinder";
-      break;
-      case 8:
-      name = "Niamey";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NG") == 0) {
-    switch (region_code2) {
-      case 5:
-      name = "Lagos";
-      break;
-      case 11:
-      name = "Federal Capital Territory";
-      break;
-      case 16:
-      name = "Ogun";
-      break;
-      case 21:
-      name = "Akwa Ibom";
-      break;
-      case 22:
-      name = "Cross River";
-      break;
-      case 23:
-      name = "Kaduna";
-      break;
-      case 24:
-      name = "Katsina";
-      break;
-      case 25:
-      name = "Anambra";
-      break;
-      case 26:
-      name = "Benue";
-      break;
-      case 27:
-      name = "Borno";
-      break;
-      case 28:
-      name = "Imo";
-      break;
-      case 29:
-      name = "Kano";
-      break;
-      case 30:
-      name = "Kwara";
-      break;
-      case 31:
-      name = "Niger";
-      break;
-      case 32:
-      name = "Oyo";
-      break;
-      case 35:
-      name = "Adamawa";
-      break;
-      case 36:
-      name = "Delta";
-      break;
-      case 37:
-      name = "Edo";
-      break;
-      case 39:
-      name = "Jigawa";
-      break;
-      case 40:
-      name = "Kebbi";
-      break;
-      case 41:
-      name = "Kogi";
-      break;
-      case 42:
-      name = "Osun";
-      break;
-      case 43:
-      name = "Taraba";
-      break;
-      case 44:
-      name = "Yobe";
-      break;
-      case 45:
-      name = "Abia";
-      break;
-      case 46:
-      name = "Bauchi";
-      break;
-      case 47:
-      name = "Enugu";
-      break;
-      case 48:
-      name = "Ondo";
-      break;
-      case 49:
-      name = "Plateau";
-      break;
-      case 50:
-      name = "Rivers";
-      break;
-      case 51:
-      name = "Sokoto";
-      break;
-      case 52:
-      name = "Bayelsa";
-      break;
-      case 53:
-      name = "Ebonyi";
-      break;
-      case 54:
-      name = "Ekiti";
-      break;
-      case 55:
-      name = "Gombe";
-      break;
-      case 56:
-      name = "Nassarawa";
-      break;
-      case 57:
-      name = "Zamfara";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NI") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Boaco";
-      break;
-      case 2:
-      name = "Carazo";
-      break;
-      case 3:
-      name = "Chinandega";
-      break;
-      case 4:
-      name = "Chontales";
-      break;
-      case 5:
-      name = "Esteli";
-      break;
-      case 6:
-      name = "Granada";
-      break;
-      case 7:
-      name = "Jinotega";
-      break;
-      case 8:
-      name = "Leon";
-      break;
-      case 9:
-      name = "Madriz";
-      break;
-      case 10:
-      name = "Managua";
-      break;
-      case 11:
-      name = "Masaya";
-      break;
-      case 12:
-      name = "Matagalpa";
-      break;
-      case 13:
-      name = "Nueva Segovia";
-      break;
-      case 14:
-      name = "Rio San Juan";
-      break;
-      case 15:
-      name = "Rivas";
-      break;
-      case 16:
-      name = "Zelaya";
-      break;
-      case 17:
-      name = "Autonoma Atlantico Norte";
-      break;
-      case 18:
-      name = "Region Autonoma Atlantico Sur";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NL") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Drenthe";
-      break;
-      case 2:
-      name = "Friesland";
-      break;
-      case 3:
-      name = "Gelderland";
-      break;
-      case 4:
-      name = "Groningen";
-      break;
-      case 5:
-      name = "Limburg";
-      break;
-      case 6:
-      name = "Noord-Brabant";
-      break;
-      case 7:
-      name = "Noord-Holland";
-      break;
-      case 8:
-      name = "Overijssel";
-      break;
-      case 9:
-      name = "Utrecht";
-      break;
-      case 10:
-      name = "Zeeland";
-      break;
-      case 11:
-      name = "Zuid-Holland";
-      break;
-      case 15:
-      name = "Overijssel";
-      break;
-      case 16:
-      name = "Flevoland";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Akershus";
-      break;
-      case 2:
-      name = "Aust-Agder";
-      break;
-      case 4:
-      name = "Buskerud";
-      break;
-      case 5:
-      name = "Finnmark";
-      break;
-      case 6:
-      name = "Hedmark";
-      break;
-      case 7:
-      name = "Hordaland";
-      break;
-      case 8:
-      name = "More og Romsdal";
-      break;
-      case 9:
-      name = "Nordland";
-      break;
-      case 10:
-      name = "Nord-Trondelag";
-      break;
-      case 11:
-      name = "Oppland";
-      break;
-      case 12:
-      name = "Oslo";
-      break;
-      case 13:
-      name = "Ostfold";
-      break;
-      case 14:
-      name = "Rogaland";
-      break;
-      case 15:
-      name = "Sogn og Fjordane";
-      break;
-      case 16:
-      name = "Sor-Trondelag";
-      break;
-      case 17:
-      name = "Telemark";
-      break;
-      case 18:
-      name = "Troms";
-      break;
-      case 19:
-      name = "Vest-Agder";
-      break;
-      case 20:
-      name = "Vestfold";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NP") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bagmati";
-      break;
-      case 2:
-      name = "Bheri";
-      break;
-      case 3:
-      name = "Dhawalagiri";
-      break;
-      case 4:
-      name = "Gandaki";
-      break;
-      case 5:
-      name = "Janakpur";
-      break;
-      case 6:
-      name = "Karnali";
-      break;
-      case 7:
-      name = "Kosi";
-      break;
-      case 8:
-      name = "Lumbini";
-      break;
-      case 9:
-      name = "Mahakali";
-      break;
-      case 10:
-      name = "Mechi";
-      break;
-      case 11:
-      name = "Narayani";
-      break;
-      case 12:
-      name = "Rapti";
-      break;
-      case 13:
-      name = "Sagarmatha";
-      break;
-      case 14:
-      name = "Seti";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NR") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Aiwo";
-      break;
-      case 2:
-      name = "Anabar";
-      break;
-      case 3:
-      name = "Anetan";
-      break;
-      case 4:
-      name = "Anibare";
-      break;
-      case 5:
-      name = "Baiti";
-      break;
-      case 6:
-      name = "Boe";
-      break;
-      case 7:
-      name = "Buada";
-      break;
-      case 8:
-      name = "Denigomodu";
-      break;
-      case 9:
-      name = "Ewa";
-      break;
-      case 10:
-      name = "Ijuw";
-      break;
-      case 11:
-      name = "Meneng";
-      break;
-      case 12:
-      name = "Nibok";
-      break;
-      case 13:
-      name = "Uaboe";
-      break;
-      case 14:
-      name = "Yaren";
-      break;
-    }
-  }
-  if (strcmp(country_code,"NZ") == 0) {
-    switch (region_code2) {
-      case 10:
-      name = "Chatham Islands";
-      break;
-      case 1010:
-      name = "Auckland";
-      break;
-      case 1011:
-      name = "Bay of Plenty";
-      break;
-      case 1012:
-      name = "Canterbury";
-      break;
-      case 1047:
-      name = "Gisborne";
-      break;
-      case 1048:
-      name = "Hawke's Bay";
-      break;
-      case 1049:
-      name = "Manawatu-Wanganui";
-      break;
-      case 1050:
-      name = "Marlborough";
-      break;
-      case 1051:
-      name = "Nelson";
-      break;
-      case 1052:
-      name = "Northland";
-      break;
-      case 1053:
-      name = "Otago";
-      break;
-      case 1054:
-      name = "Southland";
-      break;
-      case 1055:
-      name = "Taranaki";
-      break;
-      case 1090:
-      name = "Waikato";
-      break;
-      case 1091:
-      name = "Wellington";
-      break;
-      case 1092:
-      name = "West Coast";
-      break;
-    }
-  }
-  if (strcmp(country_code,"OM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ad Dakhiliyah";
-      break;
-      case 2:
-      name = "Al Batinah";
-      break;
-      case 3:
-      name = "Al Wusta";
-      break;
-      case 4:
-      name = "Ash Sharqiyah";
-      break;
-      case 5:
-      name = "Az Zahirah";
-      break;
-      case 6:
-      name = "Masqat";
-      break;
-      case 7:
-      name = "Musandam";
-      break;
-      case 8:
-      name = "Zufar";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PA") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bocas del Toro";
-      break;
-      case 2:
-      name = "Chiriqui";
-      break;
-      case 3:
-      name = "Cocle";
-      break;
-      case 4:
-      name = "Colon";
-      break;
-      case 5:
-      name = "Darien";
-      break;
-      case 6:
-      name = "Herrera";
-      break;
-      case 7:
-      name = "Los Santos";
-      break;
-      case 8:
-      name = "Panama";
-      break;
-      case 9:
-      name = "San Blas";
-      break;
-      case 10:
-      name = "Veraguas";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Amazonas";
-      break;
-      case 2:
-      name = "Ancash";
-      break;
-      case 3:
-      name = "Apurimac";
-      break;
-      case 4:
-      name = "Arequipa";
-      break;
-      case 5:
-      name = "Ayacucho";
-      break;
-      case 6:
-      name = "Cajamarca";
-      break;
-      case 7:
-      name = "Callao";
-      break;
-      case 8:
-      name = "Cusco";
-      break;
-      case 9:
-      name = "Huancavelica";
-      break;
-      case 10:
-      name = "Huanuco";
-      break;
-      case 11:
-      name = "Ica";
-      break;
-      case 12:
-      name = "Junin";
-      break;
-      case 13:
-      name = "La Libertad";
-      break;
-      case 14:
-      name = "Lambayeque";
-      break;
-      case 15:
-      name = "Lima";
-      break;
-      case 16:
-      name = "Loreto";
-      break;
-      case 17:
-      name = "Madre de Dios";
-      break;
-      case 18:
-      name = "Moquegua";
-      break;
-      case 19:
-      name = "Pasco";
-      break;
-      case 20:
-      name = "Piura";
-      break;
-      case 21:
-      name = "Puno";
-      break;
-      case 22:
-      name = "San Martin";
-      break;
-      case 23:
-      name = "Tacna";
-      break;
-      case 24:
-      name = "Tumbes";
-      break;
-      case 25:
-      name = "Ucayali";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PG") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Central";
-      break;
-      case 2:
-      name = "Gulf";
-      break;
-      case 3:
-      name = "Milne Bay";
-      break;
-      case 4:
-      name = "Northern";
-      break;
-      case 5:
-      name = "Southern Highlands";
-      break;
-      case 6:
-      name = "Western";
-      break;
-      case 7:
-      name = "North Solomons";
-      break;
-      case 8:
-      name = "Chimbu";
-      break;
-      case 9:
-      name = "Eastern Highlands";
-      break;
-      case 10:
-      name = "East New Britain";
-      break;
-      case 11:
-      name = "East Sepik";
-      break;
-      case 12:
-      name = "Madang";
-      break;
-      case 13:
-      name = "Manus";
-      break;
-      case 14:
-      name = "Morobe";
-      break;
-      case 15:
-      name = "New Ireland";
-      break;
-      case 16:
-      name = "Western Highlands";
-      break;
-      case 17:
-      name = "West New Britain";
-      break;
-      case 18:
-      name = "Sandaun";
-      break;
-      case 19:
-      name = "Enga";
-      break;
-      case 20:
-      name = "National Capital";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PH") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Abra";
-      break;
-      case 2:
-      name = "Agusan del Norte";
-      break;
-      case 3:
-      name = "Agusan del Sur";
-      break;
-      case 4:
-      name = "Aklan";
-      break;
-      case 5:
-      name = "Albay";
-      break;
-      case 6:
-      name = "Antique";
-      break;
-      case 7:
-      name = "Bataan";
-      break;
-      case 8:
-      name = "Batanes";
-      break;
-      case 9:
-      name = "Batangas";
-      break;
-      case 10:
-      name = "Benguet";
-      break;
-      case 11:
-      name = "Bohol";
-      break;
-      case 12:
-      name = "Bukidnon";
-      break;
-      case 13:
-      name = "Bulacan";
-      break;
-      case 14:
-      name = "Cagayan";
-      break;
-      case 15:
-      name = "Camarines Norte";
-      break;
-      case 16:
-      name = "Camarines Sur";
-      break;
-      case 17:
-      name = "Camiguin";
-      break;
-      case 18:
-      name = "Capiz";
-      break;
-      case 19:
-      name = "Catanduanes";
-      break;
-      case 20:
-      name = "Cavite";
-      break;
-      case 21:
-      name = "Cebu";
-      break;
-      case 22:
-      name = "Basilan";
-      break;
-      case 23:
-      name = "Eastern Samar";
-      break;
-      case 24:
-      name = "Davao";
-      break;
-      case 25:
-      name = "Davao del Sur";
-      break;
-      case 26:
-      name = "Davao Oriental";
-      break;
-      case 27:
-      name = "Ifugao";
-      break;
-      case 28:
-      name = "Ilocos Norte";
-      break;
-      case 29:
-      name = "Ilocos Sur";
-      break;
-      case 30:
-      name = "Iloilo";
-      break;
-      case 31:
-      name = "Isabela";
-      break;
-      case 32:
-      name = "Kalinga-Apayao";
-      break;
-      case 33:
-      name = "Laguna";
-      break;
-      case 34:
-      name = "Lanao del Norte";
-      break;
-      case 35:
-      name = "Lanao del Sur";
-      break;
-      case 36:
-      name = "La Union";
-      break;
-      case 37:
-      name = "Leyte";
-      break;
-      case 38:
-      name = "Marinduque";
-      break;
-      case 39:
-      name = "Masbate";
-      break;
-      case 40:
-      name = "Mindoro Occidental";
-      break;
-      case 41:
-      name = "Mindoro Oriental";
-      break;
-      case 42:
-      name = "Misamis Occidental";
-      break;
-      case 43:
-      name = "Misamis Oriental";
-      break;
-      case 44:
-      name = "Mountain";
-      break;
-      case 45:
-      name = "Negros Occidental";
-      break;
-      case 46:
-      name = "Negros Oriental";
-      break;
-      case 47:
-      name = "Nueva Ecija";
-      break;
-      case 48:
-      name = "Nueva Vizcaya";
-      break;
-      case 49:
-      name = "Palawan";
-      break;
-      case 50:
-      name = "Pampanga";
-      break;
-      case 51:
-      name = "Pangasinan";
-      break;
-      case 53:
-      name = "Rizal";
-      break;
-      case 54:
-      name = "Romblon";
-      break;
-      case 55:
-      name = "Samar";
-      break;
-      case 56:
-      name = "Maguindanao";
-      break;
-      case 57:
-      name = "North Cotabato";
-      break;
-      case 58:
-      name = "Sorsogon";
-      break;
-      case 59:
-      name = "Southern Leyte";
-      break;
-      case 60:
-      name = "Sulu";
-      break;
-      case 61:
-      name = "Surigao del Norte";
-      break;
-      case 62:
-      name = "Surigao del Sur";
-      break;
-      case 63:
-      name = "Tarlac";
-      break;
-      case 64:
-      name = "Zambales";
-      break;
-      case 65:
-      name = "Zamboanga del Norte";
-      break;
-      case 66:
-      name = "Zamboanga del Sur";
-      break;
-      case 67:
-      name = "Northern Samar";
-      break;
-      case 68:
-      name = "Quirino";
-      break;
-      case 69:
-      name = "Siquijor";
-      break;
-      case 70:
-      name = "South Cotabato";
-      break;
-      case 71:
-      name = "Sultan Kudarat";
-      break;
-      case 72:
-      name = "Tawitawi";
-      break;
-      case 832:
-      name = "Angeles";
-      break;
-      case 833:
-      name = "Bacolod";
-      break;
-      case 834:
-      name = "Bago";
-      break;
-      case 835:
-      name = "Baguio";
-      break;
-      case 836:
-      name = "Bais";
-      break;
-      case 837:
-      name = "Basilan City";
-      break;
-      case 838:
-      name = "Batangas City";
-      break;
-      case 839:
-      name = "Butuan";
-      break;
-      case 840:
-      name = "Cabanatuan";
-      break;
-      case 875:
-      name = "Cadiz";
-      break;
-      case 876:
-      name = "Cagayan de Oro";
-      break;
-      case 877:
-      name = "Calbayog";
-      break;
-      case 878:
-      name = "Caloocan";
-      break;
-      case 879:
-      name = "Canlaon";
-      break;
-      case 880:
-      name = "Cavite City";
-      break;
-      case 881:
-      name = "Cebu City";
-      break;
-      case 882:
-      name = "Cotabato";
-      break;
-      case 883:
-      name = "Dagupan";
-      break;
-      case 918:
-      name = "Danao";
-      break;
-      case 919:
-      name = "Dapitan";
-      break;
-      case 920:
-      name = "Davao City";
-      break;
-      case 921:
-      name = "Dipolog";
-      break;
-      case 922:
-      name = "Dumaguete";
-      break;
-      case 923:
-      name = "General Santos";
-      break;
-      case 924:
-      name = "Gingoog";
-      break;
-      case 925:
-      name = "Iligan";
-      break;
-      case 926:
-      name = "Iloilo City";
-      break;
-      case 961:
-      name = "Iriga";
-      break;
-      case 962:
-      name = "La Carlota";
-      break;
-      case 963:
-      name = "Laoag";
-      break;
-      case 964:
-      name = "Lapu-Lapu";
-      break;
-      case 965:
-      name = "Legaspi";
-      break;
-      case 966:
-      name = "Lipa";
-      break;
-      case 967:
-      name = "Lucena";
-      break;
-      case 968:
-      name = "Mandaue";
-      break;
-      case 969:
-      name = "Manila";
-      break;
-      case 1004:
-      name = "Marawi";
-      break;
-      case 1005:
-      name = "Naga";
-      break;
-      case 1006:
-      name = "Olongapo";
-      break;
-      case 1007:
-      name = "Ormoc";
-      break;
-      case 1008:
-      name = "Oroquieta";
-      break;
-      case 1009:
-      name = "Ozamis";
-      break;
-      case 1010:
-      name = "Pagadian";
-      break;
-      case 1011:
-      name = "Palayan";
-      break;
-      case 1012:
-      name = "Pasay";
-      break;
-      case 1047:
-      name = "Puerto Princesa";
-      break;
-      case 1048:
-      name = "Quezon City";
-      break;
-      case 1049:
-      name = "Roxas";
-      break;
-      case 1050:
-      name = "San Carlos";
-      break;
-      case 1051:
-      name = "San Carlos";
-      break;
-      case 1052:
-      name = "San Jose";
-      break;
-      case 1053:
-      name = "San Pablo";
-      break;
-      case 1054:
-      name = "Silay";
-      break;
-      case 1055:
-      name = "Surigao";
-      break;
-      case 1090:
-      name = "Tacloban";
-      break;
-      case 1091:
-      name = "Tagaytay";
-      break;
-      case 1092:
-      name = "Tagbilaran";
-      break;
-      case 1093:
-      name = "Tangub";
-      break;
-      case 1094:
-      name = "Toledo";
-      break;
-      case 1095:
-      name = "Trece Martires";
-      break;
-      case 1096:
-      name = "Zamboanga";
-      break;
-      case 1097:
-      name = "Aurora";
-      break;
-      case 1134:
-      name = "Quezon";
-      break;
-      case 1135:
-      name = "Negros Occidental";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PK") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Federally Administered Tribal Areas";
-      break;
-      case 2:
-      name = "Balochistan";
-      break;
-      case 3:
-      name = "North-West Frontier";
-      break;
-      case 4:
-      name = "Punjab";
-      break;
-      case 5:
-      name = "Sindh";
-      break;
-      case 6:
-      name = "Azad Kashmir";
-      break;
-      case 7:
-      name = "Northern Areas";
-      break;
-      case 8:
-      name = "Islamabad";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PL") == 0) {
-    switch (region_code2) {
-      case 72:
-      name = "Dolnoslaskie";
-      break;
-      case 73:
-      name = "Kujawsko-Pomorskie";
-      break;
-      case 74:
-      name = "Lodzkie";
-      break;
-      case 75:
-      name = "Lubelskie";
-      break;
-      case 76:
-      name = "Lubuskie";
-      break;
-      case 77:
-      name = "Malopolskie";
-      break;
-      case 78:
-      name = "Mazowieckie";
-      break;
-      case 79:
-      name = "Opolskie";
-      break;
-      case 80:
-      name = "Podkarpackie";
-      break;
-      case 81:
-      name = "Podlaskie";
-      break;
-      case 82:
-      name = "Pomorskie";
-      break;
-      case 83:
-      name = "Slaskie";
-      break;
-      case 84:
-      name = "Swietokrzyskie";
-      break;
-      case 85:
-      name = "Warminsko-Mazurskie";
-      break;
-      case 86:
-      name = "Wielkopolskie";
-      break;
-      case 87:
-      name = "Zachodniopomorskie";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PS") == 0) {
-    switch (region_code2) {
-      case 1131:
-      name = "Gaza";
-      break;
-      case 1798:
-      name = "West Bank";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PT") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Aveiro";
-      break;
-      case 3:
-      name = "Beja";
-      break;
-      case 4:
-      name = "Braga";
-      break;
-      case 5:
-      name = "Braganca";
-      break;
-      case 6:
-      name = "Castelo Branco";
-      break;
-      case 7:
-      name = "Coimbra";
-      break;
-      case 8:
-      name = "Evora";
-      break;
-      case 9:
-      name = "Faro";
-      break;
-      case 10:
-      name = "Madeira";
-      break;
-      case 11:
-      name = "Guarda";
-      break;
-      case 13:
-      name = "Leiria";
-      break;
-      case 14:
-      name = "Lisboa";
-      break;
-      case 16:
-      name = "Portalegre";
-      break;
-      case 17:
-      name = "Porto";
-      break;
-      case 18:
-      name = "Santarem";
-      break;
-      case 19:
-      name = "Setubal";
-      break;
-      case 20:
-      name = "Viana do Castelo";
-      break;
-      case 21:
-      name = "Vila Real";
-      break;
-      case 22:
-      name = "Viseu";
-      break;
-      case 23:
-      name = "Azores";
-      break;
-    }
-  }
-  if (strcmp(country_code,"PY") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Alto Parana";
-      break;
-      case 2:
-      name = "Amambay";
-      break;
-      case 3:
-      name = "Boqueron";
-      break;
-      case 4:
-      name = "Caaguazu";
-      break;
-      case 5:
-      name = "Caazapa";
-      break;
-      case 6:
-      name = "Central";
-      break;
-      case 7:
-      name = "Concepcion";
-      break;
-      case 8:
-      name = "Cordillera";
-      break;
-      case 10:
-      name = "Guaira";
-      break;
-      case 11:
-      name = "Itapua";
-      break;
-      case 12:
-      name = "Misiones";
-      break;
-      case 13:
-      name = "Neembucu";
-      break;
-      case 15:
-      name = "Paraguari";
-      break;
-      case 16:
-      name = "Presidente Hayes";
-      break;
-      case 17:
-      name = "San Pedro";
-      break;
-      case 19:
-      name = "Canindeyu";
-      break;
-      case 20:
-      name = "Chaco";
-      break;
-      case 21:
-      name = "Nueva Asuncion";
-      break;
-      case 23:
-      name = "Alto Paraguay";
-      break;
-    }
-  }
-  if (strcmp(country_code,"QA") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ad Dawhah";
-      break;
-      case 2:
-      name = "Al Ghuwariyah";
-      break;
-      case 3:
-      name = "Al Jumaliyah";
-      break;
-      case 4:
-      name = "Al Khawr";
-      break;
-      case 5:
-      name = "Al Wakrah Municipality";
-      break;
-      case 6:
-      name = "Ar Rayyan";
-      break;
-      case 8:
-      name = "Madinat ach Shamal";
-      break;
-      case 9:
-      name = "Umm Salal";
-      break;
-      case 10:
-      name = "Al Wakrah";
-      break;
-      case 11:
-      name = "Jariyan al Batnah";
-      break;
-      case 12:
-      name = "Umm Sa'id";
-      break;
-    }
-  }
-  if (strcmp(country_code,"RO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Alba";
-      break;
-      case 2:
-      name = "Arad";
-      break;
-      case 3:
-      name = "Arges";
-      break;
-      case 4:
-      name = "Bacau";
-      break;
-      case 5:
-      name = "Bihor";
-      break;
-      case 6:
-      name = "Bistrita-Nasaud";
-      break;
-      case 7:
-      name = "Botosani";
-      break;
-      case 8:
-      name = "Braila";
-      break;
-      case 9:
-      name = "Brasov";
-      break;
-      case 10:
-      name = "Bucuresti";
-      break;
-      case 11:
-      name = "Buzau";
-      break;
-      case 12:
-      name = "Caras-Severin";
-      break;
-      case 13:
-      name = "Cluj";
-      break;
-      case 14:
-      name = "Constanta";
-      break;
-      case 15:
-      name = "Covasna";
-      break;
-      case 16:
-      name = "Dambovita";
-      break;
-      case 17:
-      name = "Dolj";
-      break;
-      case 18:
-      name = "Galati";
-      break;
-      case 19:
-      name = "Gorj";
-      break;
-      case 20:
-      name = "Harghita";
-      break;
-      case 21:
-      name = "Hunedoara";
-      break;
-      case 22:
-      name = "Ialomita";
-      break;
-      case 23:
-      name = "Iasi";
-      break;
-      case 25:
-      name = "Maramures";
-      break;
-      case 26:
-      name = "Mehedinti";
-      break;
-      case 27:
-      name = "Mures";
-      break;
-      case 28:
-      name = "Neamt";
-      break;
-      case 29:
-      name = "Olt";
-      break;
-      case 30:
-      name = "Prahova";
-      break;
-      case 31:
-      name = "Salaj";
-      break;
-      case 32:
-      name = "Satu Mare";
-      break;
-      case 33:
-      name = "Sibiu";
-      break;
-      case 34:
-      name = "Suceava";
-      break;
-      case 35:
-      name = "Teleorman";
-      break;
-      case 36:
-      name = "Timis";
-      break;
-      case 37:
-      name = "Tulcea";
-      break;
-      case 38:
-      name = "Vaslui";
-      break;
-      case 39:
-      name = "Valcea";
-      break;
-      case 40:
-      name = "Vrancea";
-      break;
-      case 41:
-      name = "Calarasi";
-      break;
-      case 42:
-      name = "Giurgiu";
-      break;
-      case 43:
-      name = "Ilfov";
-      break;
-    }
-  }
-  if (strcmp(country_code,"RS") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Kosovo";
-      break;
-      case 2:
-      name = "Vojvodina";
-      break;
-    }
-  }
-  if (strcmp(country_code,"RU") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Adygeya, Republic of";
-      break;
-      case 2:
-      name = "Aginsky Buryatsky AO";
-      break;
-      case 3:
-      name = "Gorno-Altay";
-      break;
-      case 4:
-      name = "Altaisky krai";
-      break;
-      case 5:
-      name = "Amur";
-      break;
-      case 6:
-      name = "Arkhangel'sk";
-      break;
-      case 7:
-      name = "Astrakhan'";
-      break;
-      case 8:
-      name = "Bashkortostan";
-      break;
-      case 9:
-      name = "Belgorod";
-      break;
-      case 10:
-      name = "Bryansk";
-      break;
-      case 11:
-      name = "Buryat";
-      break;
-      case 12:
-      name = "Chechnya";
-      break;
-      case 13:
-      name = "Chelyabinsk";
-      break;
-      case 14:
-      name = "Chita";
-      break;
-      case 15:
-      name = "Chukot";
-      break;
-      case 16:
-      name = "Chuvashia";
-      break;
-      case 17:
-      name = "Dagestan";
-      break;
-      case 18:
-      name = "Evenk";
-      break;
-      case 19:
-      name = "Ingush";
-      break;
-      case 20:
-      name = "Irkutsk";
-      break;
-      case 21:
-      name = "Ivanovo";
-      break;
-      case 22:
-      name = "Kabardin-Balkar";
-      break;
-      case 23:
-      name = "Kaliningrad";
-      break;
-      case 24:
-      name = "Kalmyk";
-      break;
-      case 25:
-      name = "Kaluga";
-      break;
-      case 26:
-      name = "Kamchatka";
-      break;
-      case 27:
-      name = "Karachay-Cherkess";
-      break;
-      case 28:
-      name = "Karelia";
-      break;
-      case 29:
-      name = "Kemerovo";
-      break;
-      case 30:
-      name = "Khabarovsk";
-      break;
-      case 31:
-      name = "Khakass";
-      break;
-      case 32:
-      name = "Khanty-Mansiy";
-      break;
-      case 33:
-      name = "Kirov";
-      break;
-      case 34:
-      name = "Komi";
-      break;
-      case 35:
-      name = "Komi-Permyak";
-      break;
-      case 36:
-      name = "Koryak";
-      break;
-      case 37:
-      name = "Kostroma";
-      break;
-      case 38:
-      name = "Krasnodar";
-      break;
-      case 39:
-      name = "Krasnoyarsk";
-      break;
-      case 40:
-      name = "Kurgan";
-      break;
-      case 41:
-      name = "Kursk";
-      break;
-      case 42:
-      name = "Leningrad";
-      break;
-      case 43:
-      name = "Lipetsk";
-      break;
-      case 44:
-      name = "Magadan";
-      break;
-      case 45:
-      name = "Mariy-El";
-      break;
-      case 46:
-      name = "Mordovia";
-      break;
-      case 47:
-      name = "Moskva";
-      break;
-      case 48:
-      name = "Moscow City";
-      break;
-      case 49:
-      name = "Murmansk";
-      break;
-      case 50:
-      name = "Nenets";
-      break;
-      case 51:
-      name = "Nizhegorod";
-      break;
-      case 52:
-      name = "Novgorod";
-      break;
-      case 53:
-      name = "Novosibirsk";
-      break;
-      case 54:
-      name = "Omsk";
-      break;
-      case 55:
-      name = "Orenburg";
-      break;
-      case 56:
-      name = "Orel";
-      break;
-      case 57:
-      name = "Penza";
-      break;
-      case 58:
-      name = "Perm'";
-      break;
-      case 59:
-      name = "Primor'ye";
-      break;
-      case 60:
-      name = "Pskov";
-      break;
-      case 61:
-      name = "Rostov";
-      break;
-      case 62:
-      name = "Ryazan'";
-      break;
-      case 63:
-      name = "Sakha";
-      break;
-      case 64:
-      name = "Sakhalin";
-      break;
-      case 65:
-      name = "Samara";
-      break;
-      case 66:
-      name = "Saint Petersburg City";
-      break;
-      case 67:
-      name = "Saratov";
-      break;
-      case 68:
-      name = "North Ossetia";
-      break;
-      case 69:
-      name = "Smolensk";
-      break;
-      case 70:
-      name = "Stavropol'";
-      break;
-      case 71:
-      name = "Sverdlovsk";
-      break;
-      case 72:
-      name = "Tambovskaya oblast";
-      break;
-      case 73:
-      name = "Tatarstan";
-      break;
-      case 74:
-      name = "Taymyr";
-      break;
-      case 75:
-      name = "Tomsk";
-      break;
-      case 76:
-      name = "Tula";
-      break;
-      case 77:
-      name = "Tver'";
-      break;
-      case 78:
-      name = "Tyumen'";
-      break;
-      case 79:
-      name = "Tuva";
-      break;
-      case 80:
-      name = "Udmurt";
-      break;
-      case 81:
-      name = "Ul'yanovsk";
-      break;
-      case 82:
-      name = "Ust-Orda Buryat";
-      break;
-      case 83:
-      name = "Vladimir";
-      break;
-      case 84:
-      name = "Volgograd";
-      break;
-      case 85:
-      name = "Vologda";
-      break;
-      case 86:
-      name = "Voronezh";
-      break;
-      case 87:
-      name = "Yamal-Nenets";
-      break;
-      case 88:
-      name = "Yaroslavl'";
-      break;
-      case 89:
-      name = "Yevrey";
-      break;
-      case 90:
-      name = "Permskiy Kray";
-      break;
-      case 91:
-      name = "Krasnoyarskiy Kray";
-      break;
-      case 942:
-      name = "Chechnya Republic";
-      break;
-    }
-  }
-  if (strcmp(country_code,"RW") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Butare";
-      break;
-      case 6:
-      name = "Gitarama";
-      break;
-      case 7:
-      name = "Kibungo";
-      break;
-      case 9:
-      name = "Kigali";
-      break;
-      case 11:
-      name = "Est";
-      break;
-      case 12:
-      name = "Kigali";
-      break;
-      case 13:
-      name = "Nord";
-      break;
-      case 14:
-      name = "Ouest";
-      break;
-      case 15:
-      name = "Sud";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SA") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Al Bahah";
-      break;
-      case 3:
-      name = "Al Jawf";
-      break;
-      case 5:
-      name = "Al Madinah";
-      break;
-      case 6:
-      name = "Ash Sharqiyah";
-      break;
-      case 8:
-      name = "Al Qasim";
-      break;
-      case 9:
-      name = "Al Qurayyat";
-      break;
-      case 10:
-      name = "Ar Riyad";
-      break;
-      case 13:
-      name = "Ha'il";
-      break;
-      case 14:
-      name = "Makkah";
-      break;
-      case 15:
-      name = "Al Hudud ash Shamaliyah";
-      break;
-      case 16:
-      name = "Najran";
-      break;
-      case 17:
-      name = "Jizan";
-      break;
-      case 19:
-      name = "Tabuk";
-      break;
-      case 20:
-      name = "Al Jawf";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SB") == 0) {
-    switch (region_code2) {
-      case 3:
-      name = "Malaita";
-      break;
-      case 6:
-      name = "Guadalcanal";
-      break;
-      case 7:
-      name = "Isabel";
-      break;
-      case 8:
-      name = "Makira";
-      break;
-      case 9:
-      name = "Temotu";
-      break;
-      case 10:
-      name = "Central";
-      break;
-      case 11:
-      name = "Western";
-      break;
-      case 12:
-      name = "Choiseul";
-      break;
-      case 13:
-      name = "Rennell and Bellona";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SC") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Anse aux Pins";
-      break;
-      case 2:
-      name = "Anse Boileau";
-      break;
-      case 3:
-      name = "Anse Etoile";
-      break;
-      case 4:
-      name = "Anse Louis";
-      break;
-      case 5:
-      name = "Anse Royale";
-      break;
-      case 6:
-      name = "Baie Lazare";
-      break;
-      case 7:
-      name = "Baie Sainte Anne";
-      break;
-      case 8:
-      name = "Beau Vallon";
-      break;
-      case 9:
-      name = "Bel Air";
-      break;
-      case 10:
-      name = "Bel Ombre";
-      break;
-      case 11:
-      name = "Cascade";
-      break;
-      case 12:
-      name = "Glacis";
-      break;
-      case 13:
-      name = "Grand' Anse";
-      break;
-      case 14:
-      name = "Grand' Anse";
-      break;
-      case 15:
-      name = "La Digue";
-      break;
-      case 16:
-      name = "La Riviere Anglaise";
-      break;
-      case 17:
-      name = "Mont Buxton";
-      break;
-      case 18:
-      name = "Mont Fleuri";
-      break;
-      case 19:
-      name = "Plaisance";
-      break;
-      case 20:
-      name = "Pointe La Rue";
-      break;
-      case 21:
-      name = "Port Glaud";
-      break;
-      case 22:
-      name = "Saint Louis";
-      break;
-      case 23:
-      name = "Takamaka";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SD") == 0) {
-    switch (region_code2) {
-      case 27:
-      name = "Al Wusta";
-      break;
-      case 28:
-      name = "Al Istiwa'iyah";
-      break;
-      case 29:
-      name = "Al Khartum";
-      break;
-      case 30:
-      name = "Ash Shamaliyah";
-      break;
-      case 31:
-      name = "Ash Sharqiyah";
-      break;
-      case 32:
-      name = "Bahr al Ghazal";
-      break;
-      case 33:
-      name = "Darfur";
-      break;
-      case 34:
-      name = "Kurdufan";
-      break;
-      case 35:
-      name = "Upper Nile";
-      break;
-      case 40:
-      name = "Al Wahadah State";
-      break;
-      case 44:
-      name = "Central Equatoria State";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SE") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Blekinge Lan";
-      break;
-      case 3:
-      name = "Gavleborgs Lan";
-      break;
-      case 5:
-      name = "Gotlands Lan";
-      break;
-      case 6:
-      name = "Hallands Lan";
-      break;
-      case 7:
-      name = "Jamtlands Lan";
-      break;
-      case 8:
-      name = "Jonkopings Lan";
-      break;
-      case 9:
-      name = "Kalmar Lan";
-      break;
-      case 10:
-      name = "Dalarnas Lan";
-      break;
-      case 12:
-      name = "Kronobergs Lan";
-      break;
-      case 14:
-      name = "Norrbottens Lan";
-      break;
-      case 15:
-      name = "Orebro Lan";
-      break;
-      case 16:
-      name = "Ostergotlands Lan";
-      break;
-      case 18:
-      name = "Sodermanlands Lan";
-      break;
-      case 21:
-      name = "Uppsala Lan";
-      break;
-      case 22:
-      name = "Varmlands Lan";
-      break;
-      case 23:
-      name = "Vasterbottens Lan";
-      break;
-      case 24:
-      name = "Vasternorrlands Lan";
-      break;
-      case 25:
-      name = "Vastmanlands Lan";
-      break;
-      case 26:
-      name = "Stockholms Lan";
-      break;
-      case 27:
-      name = "Skane Lan";
-      break;
-      case 28:
-      name = "Vastra Gotaland";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SH") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ascension";
-      break;
-      case 2:
-      name = "Saint Helena";
-      break;
-      case 3:
-      name = "Tristan da Cunha";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SI") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ajdovscina";
-      break;
-      case 2:
-      name = "Beltinci";
-      break;
-      case 3:
-      name = "Bled";
-      break;
-      case 4:
-      name = "Bohinj";
-      break;
-      case 5:
-      name = "Borovnica";
-      break;
-      case 6:
-      name = "Bovec";
-      break;
-      case 7:
-      name = "Brda";
-      break;
-      case 8:
-      name = "Brezice";
-      break;
-      case 9:
-      name = "Brezovica";
-      break;
-      case 11:
-      name = "Celje";
-      break;
-      case 12:
-      name = "Cerklje na Gorenjskem";
-      break;
-      case 13:
-      name = "Cerknica";
-      break;
-      case 14:
-      name = "Cerkno";
-      break;
-      case 15:
-      name = "Crensovci";
-      break;
-      case 16:
-      name = "Crna na Koroskem";
-      break;
-      case 17:
-      name = "Crnomelj";
-      break;
-      case 19:
-      name = "Divaca";
-      break;
-      case 20:
-      name = "Dobrepolje";
-      break;
-      case 22:
-      name = "Dol pri Ljubljani";
-      break;
-      case 24:
-      name = "Dornava";
-      break;
-      case 25:
-      name = "Dravograd";
-      break;
-      case 26:
-      name = "Duplek";
-      break;
-      case 27:
-      name = "Gorenja Vas-Poljane";
-      break;
-      case 28:
-      name = "Gorisnica";
-      break;
-      case 29:
-      name = "Gornja Radgona";
-      break;
-      case 30:
-      name = "Gornji Grad";
-      break;
-      case 31:
-      name = "Gornji Petrovci";
-      break;
-      case 32:
-      name = "Grosuplje";
-      break;
-      case 34:
-      name = "Hrastnik";
-      break;
-      case 35:
-      name = "Hrpelje-Kozina";
-      break;
-      case 36:
-      name = "Idrija";
-      break;
-      case 37:
-      name = "Ig";
-      break;
-      case 38:
-      name = "Ilirska Bistrica";
-      break;
-      case 39:
-      name = "Ivancna Gorica";
-      break;
-      case 40:
-      name = "Izola-Isola";
-      break;
-      case 42:
-      name = "Jursinci";
-      break;
-      case 44:
-      name = "Kanal";
-      break;
-      case 45:
-      name = "Kidricevo";
-      break;
-      case 46:
-      name = "Kobarid";
-      break;
-      case 47:
-      name = "Kobilje";
-      break;
-      case 49:
-      name = "Komen";
-      break;
-      case 50:
-      name = "Koper-Capodistria";
-      break;
-      case 51:
-      name = "Kozje";
-      break;
-      case 52:
-      name = "Kranj";
-      break;
-      case 53:
-      name = "Kranjska Gora";
-      break;
-      case 54:
-      name = "Krsko";
-      break;
-      case 55:
-      name = "Kungota";
-      break;
-      case 57:
-      name = "Lasko";
-      break;
-      case 61:
-      name = "Ljubljana";
-      break;
-      case 62:
-      name = "Ljubno";
-      break;
-      case 64:
-      name = "Logatec";
-      break;
-      case 66:
-      name = "Loski Potok";
-      break;
-      case 68:
-      name = "Lukovica";
-      break;
-      case 71:
-      name = "Medvode";
-      break;
-      case 72:
-      name = "Menges";
-      break;
-      case 73:
-      name = "Metlika";
-      break;
-      case 74:
-      name = "Mezica";
-      break;
-      case 76:
-      name = "Mislinja";
-      break;
-      case 77:
-      name = "Moravce";
-      break;
-      case 78:
-      name = "Moravske Toplice";
-      break;
-      case 79:
-      name = "Mozirje";
-      break;
-      case 80:
-      name = "Murska Sobota";
-      break;
-      case 81:
-      name = "Muta";
-      break;
-      case 82:
-      name = "Naklo";
-      break;
-      case 83:
-      name = "Nazarje";
-      break;
-      case 84:
-      name = "Nova Gorica";
-      break;
-      case 86:
-      name = "Odranci";
-      break;
-      case 87:
-      name = "Ormoz";
-      break;
-      case 88:
-      name = "Osilnica";
-      break;
-      case 89:
-      name = "Pesnica";
-      break;
-      case 91:
-      name = "Pivka";
-      break;
-      case 92:
-      name = "Podcetrtek";
-      break;
-      case 94:
-      name = "Postojna";
-      break;
-      case 97:
-      name = "Puconci";
-      break;
-      case 98:
-      name = "Racam";
-      break;
-      case 99:
-      name = "Radece";
-      break;
-      case 832:
-      name = "Radenci";
-      break;
-      case 833:
-      name = "Radlje ob Dravi";
-      break;
-      case 834:
-      name = "Radovljica";
-      break;
-      case 837:
-      name = "Rogasovci";
-      break;
-      case 838:
-      name = "Rogaska Slatina";
-      break;
-      case 839:
-      name = "Rogatec";
-      break;
-      case 875:
-      name = "Semic";
-      break;
-      case 876:
-      name = "Sencur";
-      break;
-      case 877:
-      name = "Sentilj";
-      break;
-      case 878:
-      name = "Sentjernej";
-      break;
-      case 880:
-      name = "Sevnica";
-      break;
-      case 881:
-      name = "Sezana";
-      break;
-      case 882:
-      name = "Skocjan";
-      break;
-      case 883:
-      name = "Skofja Loka";
-      break;
-      case 918:
-      name = "Skofljica";
-      break;
-      case 919:
-      name = "Slovenj Gradec";
-      break;
-      case 921:
-      name = "Slovenske Konjice";
-      break;
-      case 922:
-      name = "Smarje pri Jelsah";
-      break;
-      case 923:
-      name = "Smartno ob Paki";
-      break;
-      case 924:
-      name = "Sostanj";
-      break;
-      case 925:
-      name = "Starse";
-      break;
-      case 926:
-      name = "Store";
-      break;
-      case 961:
-      name = "Sveti Jurij";
-      break;
-      case 962:
-      name = "Tolmin";
-      break;
-      case 963:
-      name = "Trbovlje";
-      break;
-      case 964:
-      name = "Trebnje";
-      break;
-      case 965:
-      name = "Trzic";
-      break;
-      case 966:
-      name = "Turnisce";
-      break;
-      case 967:
-      name = "Velenje";
-      break;
-      case 968:
-      name = "Velike Lasce";
-      break;
-      case 1004:
-      name = "Vipava";
-      break;
-      case 1005:
-      name = "Vitanje";
-      break;
-      case 1006:
-      name = "Vodice";
-      break;
-      case 1008:
-      name = "Vrhnika";
-      break;
-      case 1009:
-      name = "Vuzenica";
-      break;
-      case 1010:
-      name = "Zagorje ob Savi";
-      break;
-      case 1012:
-      name = "Zavrc";
-      break;
-      case 1047:
-      name = "Zelezniki";
-      break;
-      case 1048:
-      name = "Ziri";
-      break;
-      case 1049:
-      name = "Zrece";
-      break;
-      case 1093:
-      name = "Dobrova-Horjul-Polhov Gradec";
-      break;
-      case 1096:
-      name = "Domzale";
-      break;
-      case 1136:
-      name = "Jesenice";
-      break;
-      case 1138:
-      name = "Kamnik";
-      break;
-      case 1139:
-      name = "Kocevje";
-      break;
-      case 1177:
-      name = "Kuzma";
-      break;
-      case 1178:
-      name = "Lenart";
-      break;
-      case 1180:
-      name = "Litija";
-      break;
-      case 1181:
-      name = "Ljutomer";
-      break;
-      case 1182:
-      name = "Loska Dolina";
-      break;
-      case 1184:
-      name = "Luce";
-      break;
-      case 1219:
-      name = "Majsperk";
-      break;
-      case 1220:
-      name = "Maribor";
-      break;
-      case 1223:
-      name = "Miren-Kostanjevica";
-      break;
-      case 1225:
-      name = "Novo Mesto";
-      break;
-      case 1227:
-      name = "Piran";
-      break;
-      case 1266:
-      name = "Preddvor";
-      break;
-      case 1268:
-      name = "Ptuj";
-      break;
-      case 1305:
-      name = "Ribnica";
-      break;
-      case 1307:
-      name = "Ruse";
-      break;
-      case 1311:
-      name = "Sentjur pri Celju";
-      break;
-      case 1312:
-      name = "Slovenska Bistrica";
-      break;
-      case 1392:
-      name = "Videm";
-      break;
-      case 1393:
-      name = "Vojnik";
-      break;
-      case 1395:
-      name = "Zalec";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SK") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Banska Bystrica";
-      break;
-      case 2:
-      name = "Bratislava";
-      break;
-      case 3:
-      name = "Kosice";
-      break;
-      case 4:
-      name = "Nitra";
-      break;
-      case 5:
-      name = "Presov";
-      break;
-      case 6:
-      name = "Trencin";
-      break;
-      case 7:
-      name = "Trnava";
-      break;
-      case 8:
-      name = "Zilina";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SL") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Eastern";
-      break;
-      case 2:
-      name = "Northern";
-      break;
-      case 3:
-      name = "Southern";
-      break;
-      case 4:
-      name = "Western Area";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Acquaviva";
-      break;
-      case 2:
-      name = "Chiesanuova";
-      break;
-      case 3:
-      name = "Domagnano";
-      break;
-      case 4:
-      name = "Faetano";
-      break;
-      case 5:
-      name = "Fiorentino";
-      break;
-      case 6:
-      name = "Borgo Maggiore";
-      break;
-      case 7:
-      name = "San Marino";
-      break;
-      case 8:
-      name = "Monte Giardino";
-      break;
-      case 9:
-      name = "Serravalle";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SN") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Dakar";
-      break;
-      case 3:
-      name = "Diourbel";
-      break;
-      case 5:
-      name = "Tambacounda";
-      break;
-      case 7:
-      name = "Thies";
-      break;
-      case 9:
-      name = "Fatick";
-      break;
-      case 10:
-      name = "Kaolack";
-      break;
-      case 11:
-      name = "Kolda";
-      break;
-      case 12:
-      name = "Ziguinchor";
-      break;
-      case 13:
-      name = "Louga";
-      break;
-      case 14:
-      name = "Saint-Louis";
-      break;
-      case 15:
-      name = "Matam";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Bakool";
-      break;
-      case 2:
-      name = "Banaadir";
-      break;
-      case 3:
-      name = "Bari";
-      break;
-      case 4:
-      name = "Bay";
-      break;
-      case 5:
-      name = "Galguduud";
-      break;
-      case 6:
-      name = "Gedo";
-      break;
-      case 7:
-      name = "Hiiraan";
-      break;
-      case 8:
-      name = "Jubbada Dhexe";
-      break;
-      case 9:
-      name = "Jubbada Hoose";
-      break;
-      case 10:
-      name = "Mudug";
-      break;
-      case 11:
-      name = "Nugaal";
-      break;
-      case 12:
-      name = "Sanaag";
-      break;
-      case 13:
-      name = "Shabeellaha Dhexe";
-      break;
-      case 14:
-      name = "Shabeellaha Hoose";
-      break;
-      case 16:
-      name = "Woqooyi Galbeed";
-      break;
-      case 18:
-      name = "Nugaal";
-      break;
-      case 19:
-      name = "Togdheer";
-      break;
-      case 20:
-      name = "Woqooyi Galbeed";
-      break;
-      case 21:
-      name = "Awdal";
-      break;
-      case 22:
-      name = "Sool";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SR") == 0) {
-    switch (region_code2) {
-      case 10:
-      name = "Brokopondo";
-      break;
-      case 11:
-      name = "Commewijne";
-      break;
-      case 12:
-      name = "Coronie";
-      break;
-      case 13:
-      name = "Marowijne";
-      break;
-      case 14:
-      name = "Nickerie";
-      break;
-      case 15:
-      name = "Para";
-      break;
-      case 16:
-      name = "Paramaribo";
-      break;
-      case 17:
-      name = "Saramacca";
-      break;
-      case 18:
-      name = "Sipaliwini";
-      break;
-      case 19:
-      name = "Wanica";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ST") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Principe";
-      break;
-      case 2:
-      name = "Sao Tome";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SV") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ahuachapan";
-      break;
-      case 2:
-      name = "Cabanas";
-      break;
-      case 3:
-      name = "Chalatenango";
-      break;
-      case 4:
-      name = "Cuscatlan";
-      break;
-      case 5:
-      name = "La Libertad";
-      break;
-      case 6:
-      name = "La Paz";
-      break;
-      case 7:
-      name = "La Union";
-      break;
-      case 8:
-      name = "Morazan";
-      break;
-      case 9:
-      name = "San Miguel";
-      break;
-      case 10:
-      name = "San Salvador";
-      break;
-      case 11:
-      name = "Santa Ana";
-      break;
-      case 12:
-      name = "San Vicente";
-      break;
-      case 13:
-      name = "Sonsonate";
-      break;
-      case 14:
-      name = "Usulutan";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SY") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Al Hasakah";
-      break;
-      case 2:
-      name = "Al Ladhiqiyah";
-      break;
-      case 3:
-      name = "Al Qunaytirah";
-      break;
-      case 4:
-      name = "Ar Raqqah";
-      break;
-      case 5:
-      name = "As Suwayda'";
-      break;
-      case 6:
-      name = "Dar";
-      break;
-      case 7:
-      name = "Dayr az Zawr";
-      break;
-      case 8:
-      name = "Rif Dimashq";
-      break;
-      case 9:
-      name = "Halab";
-      break;
-      case 10:
-      name = "Hamah";
-      break;
-      case 11:
-      name = "Hims";
-      break;
-      case 12:
-      name = "Idlib";
-      break;
-      case 13:
-      name = "Dimashq";
-      break;
-      case 14:
-      name = "Tartus";
-      break;
-    }
-  }
-  if (strcmp(country_code,"SZ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Hhohho";
-      break;
-      case 2:
-      name = "Lubombo";
-      break;
-      case 3:
-      name = "Manzini";
-      break;
-      case 4:
-      name = "Shiselweni";
-      break;
-      case 5:
-      name = "Praslin";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TD") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Batha";
-      break;
-      case 2:
-      name = "Biltine";
-      break;
-      case 3:
-      name = "Borkou-Ennedi-Tibesti";
-      break;
-      case 4:
-      name = "Chari-Baguirmi";
-      break;
-      case 5:
-      name = "Guera";
-      break;
-      case 6:
-      name = "Kanem";
-      break;
-      case 7:
-      name = "Lac";
-      break;
-      case 8:
-      name = "Logone Occidental";
-      break;
-      case 9:
-      name = "Logone Oriental";
-      break;
-      case 10:
-      name = "Mayo-Kebbi";
-      break;
-      case 11:
-      name = "Moyen-Chari";
-      break;
-      case 12:
-      name = "Ouaddai";
-      break;
-      case 13:
-      name = "Salamat";
-      break;
-      case 14:
-      name = "Tandjile";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TG") == 0) {
-    switch (region_code2) {
-      case 22:
-      name = "Centrale";
-      break;
-      case 23:
-      name = "Kara";
-      break;
-      case 24:
-      name = "Maritime";
-      break;
-      case 25:
-      name = "Plateaux";
-      break;
-      case 26:
-      name = "Savanes";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TH") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Mae Hong Son";
-      break;
-      case 2:
-      name = "Chiang Mai";
-      break;
-      case 3:
-      name = "Chiang Rai";
-      break;
-      case 4:
-      name = "Nan";
-      break;
-      case 5:
-      name = "Lamphun";
-      break;
-      case 6:
-      name = "Lampang";
-      break;
-      case 7:
-      name = "Phrae";
-      break;
-      case 8:
-      name = "Tak";
-      break;
-      case 9:
-      name = "Sukhothai";
-      break;
-      case 10:
-      name = "Uttaradit";
-      break;
-      case 11:
-      name = "Kamphaeng Phet";
-      break;
-      case 12:
-      name = "Phitsanulok";
-      break;
-      case 13:
-      name = "Phichit";
-      break;
-      case 14:
-      name = "Phetchabun";
-      break;
-      case 15:
-      name = "Uthai Thani";
-      break;
-      case 16:
-      name = "Nakhon Sawan";
-      break;
-      case 17:
-      name = "Nong Khai";
-      break;
-      case 18:
-      name = "Loei";
-      break;
-      case 20:
-      name = "Sakon Nakhon";
-      break;
-      case 21:
-      name = "Nakhon Phanom";
-      break;
-      case 22:
-      name = "Khon Kaen";
-      break;
-      case 23:
-      name = "Kalasin";
-      break;
-      case 24:
-      name = "Maha Sarakham";
-      break;
-      case 25:
-      name = "Roi Et";
-      break;
-      case 26:
-      name = "Chaiyaphum";
-      break;
-      case 27:
-      name = "Nakhon Ratchasima";
-      break;
-      case 28:
-      name = "Buriram";
-      break;
-      case 29:
-      name = "Surin";
-      break;
-      case 30:
-      name = "Sisaket";
-      break;
-      case 31:
-      name = "Narathiwat";
-      break;
-      case 32:
-      name = "Chai Nat";
-      break;
-      case 33:
-      name = "Sing Buri";
-      break;
-      case 34:
-      name = "Lop Buri";
-      break;
-      case 35:
-      name = "Ang Thong";
-      break;
-      case 36:
-      name = "Phra Nakhon Si Ayutthaya";
-      break;
-      case 37:
-      name = "Saraburi";
-      break;
-      case 38:
-      name = "Nonthaburi";
-      break;
-      case 39:
-      name = "Pathum Thani";
-      break;
-      case 40:
-      name = "Krung Thep";
-      break;
-      case 41:
-      name = "Phayao";
-      break;
-      case 42:
-      name = "Samut Prakan";
-      break;
-      case 43:
-      name = "Nakhon Nayok";
-      break;
-      case 44:
-      name = "Chachoengsao";
-      break;
-      case 45:
-      name = "Prachin Buri";
-      break;
-      case 46:
-      name = "Chon Buri";
-      break;
-      case 47:
-      name = "Rayong";
-      break;
-      case 48:
-      name = "Chanthaburi";
-      break;
-      case 49:
-      name = "Trat";
-      break;
-      case 50:
-      name = "Kanchanaburi";
-      break;
-      case 51:
-      name = "Suphan Buri";
-      break;
-      case 52:
-      name = "Ratchaburi";
-      break;
-      case 53:
-      name = "Nakhon Pathom";
-      break;
-      case 54:
-      name = "Samut Songkhram";
-      break;
-      case 55:
-      name = "Samut Sakhon";
-      break;
-      case 56:
-      name = "Phetchaburi";
-      break;
-      case 57:
-      name = "Prachuap Khiri Khan";
-      break;
-      case 58:
-      name = "Chumphon";
-      break;
-      case 59:
-      name = "Ranong";
-      break;
-      case 60:
-      name = "Surat Thani";
-      break;
-      case 61:
-      name = "Phangnga";
-      break;
-      case 62:
-      name = "Phuket";
-      break;
-      case 63:
-      name = "Krabi";
-      break;
-      case 64:
-      name = "Nakhon Si Thammarat";
-      break;
-      case 65:
-      name = "Trang";
-      break;
-      case 66:
-      name = "Phatthalung";
-      break;
-      case 67:
-      name = "Satun";
-      break;
-      case 68:
-      name = "Songkhla";
-      break;
-      case 69:
-      name = "Pattani";
-      break;
-      case 70:
-      name = "Yala";
-      break;
-      case 71:
-      name = "Ubon Ratchathani";
-      break;
-      case 72:
-      name = "Yasothon";
-      break;
-      case 73:
-      name = "Nakhon Phanom";
-      break;
-      case 75:
-      name = "Ubon Ratchathani";
-      break;
-      case 76:
-      name = "Udon Thani";
-      break;
-      case 77:
-      name = "Amnat Charoen";
-      break;
-      case 78:
-      name = "Mukdahan";
-      break;
-      case 79:
-      name = "Nong Bua Lamphu";
-      break;
-      case 80:
-      name = "Sa Kaeo";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TJ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Kuhistoni Badakhshon";
-      break;
-      case 2:
-      name = "Khatlon";
-      break;
-      case 3:
-      name = "Sughd";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ahal";
-      break;
-      case 2:
-      name = "Balkan";
-      break;
-      case 3:
-      name = "Dashoguz";
-      break;
-      case 4:
-      name = "Lebap";
-      break;
-      case 5:
-      name = "Mary";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TN") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Kasserine";
-      break;
-      case 3:
-      name = "Kairouan";
-      break;
-      case 6:
-      name = "Jendouba";
-      break;
-      case 10:
-      name = "Qafsah";
-      break;
-      case 14:
-      name = "El Kef";
-      break;
-      case 15:
-      name = "Al Mahdia";
-      break;
-      case 16:
-      name = "Al Munastir";
-      break;
-      case 17:
-      name = "Bajah";
-      break;
-      case 18:
-      name = "Bizerte";
-      break;
-      case 19:
-      name = "Nabeul";
-      break;
-      case 22:
-      name = "Siliana";
-      break;
-      case 23:
-      name = "Sousse";
-      break;
-      case 27:
-      name = "Ben Arous";
-      break;
-      case 28:
-      name = "Madanin";
-      break;
-      case 29:
-      name = "Gabes";
-      break;
-      case 31:
-      name = "Kebili";
-      break;
-      case 32:
-      name = "Sfax";
-      break;
-      case 33:
-      name = "Sidi Bou Zid";
-      break;
-      case 34:
-      name = "Tataouine";
-      break;
-      case 35:
-      name = "Tozeur";
-      break;
-      case 36:
-      name = "Tunis";
-      break;
-      case 37:
-      name = "Zaghouan";
-      break;
-      case 38:
-      name = "Aiana";
-      break;
-      case 39:
-      name = "Manouba";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TO") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Ha";
-      break;
-      case 2:
-      name = "Tongatapu";
-      break;
-      case 3:
-      name = "Vava";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TR") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Adiyaman";
-      break;
-      case 3:
-      name = "Afyonkarahisar";
-      break;
-      case 4:
-      name = "Agri";
-      break;
-      case 5:
-      name = "Amasya";
-      break;
-      case 7:
-      name = "Antalya";
-      break;
-      case 8:
-      name = "Artvin";
-      break;
-      case 9:
-      name = "Aydin";
-      break;
-      case 10:
-      name = "Balikesir";
-      break;
-      case 11:
-      name = "Bilecik";
-      break;
-      case 12:
-      name = "Bingol";
-      break;
-      case 13:
-      name = "Bitlis";
-      break;
-      case 14:
-      name = "Bolu";
-      break;
-      case 15:
-      name = "Burdur";
-      break;
-      case 16:
-      name = "Bursa";
-      break;
-      case 17:
-      name = "Canakkale";
-      break;
-      case 19:
-      name = "Corum";
-      break;
-      case 20:
-      name = "Denizli";
-      break;
-      case 21:
-      name = "Diyarbakir";
-      break;
-      case 22:
-      name = "Edirne";
-      break;
-      case 23:
-      name = "Elazig";
-      break;
-      case 24:
-      name = "Erzincan";
-      break;
-      case 25:
-      name = "Erzurum";
-      break;
-      case 26:
-      name = "Eskisehir";
-      break;
-      case 28:
-      name = "Giresun";
-      break;
-      case 31:
-      name = "Hatay";
-      break;
-      case 32:
-      name = "Mersin";
-      break;
-      case 33:
-      name = "Isparta";
-      break;
-      case 34:
-      name = "Istanbul";
-      break;
-      case 35:
-      name = "Izmir";
-      break;
-      case 37:
-      name = "Kastamonu";
-      break;
-      case 38:
-      name = "Kayseri";
-      break;
-      case 39:
-      name = "Kirklareli";
-      break;
-      case 40:
-      name = "Kirsehir";
-      break;
-      case 41:
-      name = "Kocaeli";
-      break;
-      case 43:
-      name = "Kutahya";
-      break;
-      case 44:
-      name = "Malatya";
-      break;
-      case 45:
-      name = "Manisa";
-      break;
-      case 46:
-      name = "Kahramanmaras";
-      break;
-      case 48:
-      name = "Mugla";
-      break;
-      case 49:
-      name = "Mus";
-      break;
-      case 50:
-      name = "Nevsehir";
-      break;
-      case 52:
-      name = "Ordu";
-      break;
-      case 53:
-      name = "Rize";
-      break;
-      case 54:
-      name = "Sakarya";
-      break;
-      case 55:
-      name = "Samsun";
-      break;
-      case 57:
-      name = "Sinop";
-      break;
-      case 58:
-      name = "Sivas";
-      break;
-      case 59:
-      name = "Tekirdag";
-      break;
-      case 60:
-      name = "Tokat";
-      break;
-      case 61:
-      name = "Trabzon";
-      break;
-      case 62:
-      name = "Tunceli";
-      break;
-      case 63:
-      name = "Sanliurfa";
-      break;
-      case 64:
-      name = "Usak";
-      break;
-      case 65:
-      name = "Van";
-      break;
-      case 66:
-      name = "Yozgat";
-      break;
-      case 68:
-      name = "Ankara";
-      break;
-      case 69:
-      name = "Gumushane";
-      break;
-      case 70:
-      name = "Hakkari";
-      break;
-      case 71:
-      name = "Konya";
-      break;
-      case 72:
-      name = "Mardin";
-      break;
-      case 73:
-      name = "Nigde";
-      break;
-      case 74:
-      name = "Siirt";
-      break;
-      case 75:
-      name = "Aksaray";
-      break;
-      case 76:
-      name = "Batman";
-      break;
-      case 77:
-      name = "Bayburt";
-      break;
-      case 78:
-      name = "Karaman";
-      break;
-      case 79:
-      name = "Kirikkale";
-      break;
-      case 80:
-      name = "Sirnak";
-      break;
-      case 81:
-      name = "Adana";
-      break;
-      case 82:
-      name = "Cankiri";
-      break;
-      case 83:
-      name = "Gaziantep";
-      break;
-      case 84:
-      name = "Kars";
-      break;
-      case 85:
-      name = "Zonguldak";
-      break;
-      case 86:
-      name = "Ardahan";
-      break;
-      case 87:
-      name = "Bartin";
-      break;
-      case 88:
-      name = "Igdir";
-      break;
-      case 89:
-      name = "Karabuk";
-      break;
-      case 90:
-      name = "Kilis";
-      break;
-      case 91:
-      name = "Osmaniye";
-      break;
-      case 92:
-      name = "Yalova";
-      break;
-      case 93:
-      name = "Duzce";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TT") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Arima";
-      break;
-      case 2:
-      name = "Caroni";
-      break;
-      case 3:
-      name = "Mayaro";
-      break;
-      case 4:
-      name = "Nariva";
-      break;
-      case 5:
-      name = "Port-of-Spain";
-      break;
-      case 6:
-      name = "Saint Andrew";
-      break;
-      case 7:
-      name = "Saint David";
-      break;
-      case 8:
-      name = "Saint George";
-      break;
-      case 9:
-      name = "Saint Patrick";
-      break;
-      case 10:
-      name = "San Fernando";
-      break;
-      case 11:
-      name = "Tobago";
-      break;
-      case 12:
-      name = "Victoria";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TW") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Fu-chien";
-      break;
-      case 2:
-      name = "Kao-hsiung";
-      break;
-      case 3:
-      name = "T'ai-pei";
-      break;
-      case 4:
-      name = "T'ai-wan";
-      break;
-    }
-  }
-  if (strcmp(country_code,"TZ") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Pwani";
-      break;
-      case 3:
-      name = "Dodoma";
-      break;
-      case 4:
-      name = "Iringa";
-      break;
-      case 5:
-      name = "Kigoma";
-      break;
-      case 6:
-      name = "Kilimanjaro";
-      break;
-      case 7:
-      name = "Lindi";
-      break;
-      case 8:
-      name = "Mara";
-      break;
-      case 9:
-      name = "Mbeya";
-      break;
-      case 10:
-      name = "Morogoro";
-      break;
-      case 11:
-      name = "Mtwara";
-      break;
-      case 12:
-      name = "Mwanza";
-      break;
-      case 13:
-      name = "Pemba North";
-      break;
-      case 14:
-      name = "Ruvuma";
-      break;
-      case 15:
-      name = "Shinyanga";
-      break;
-      case 16:
-      name = "Singida";
-      break;
-      case 17:
-      name = "Tabora";
-      break;
-      case 18:
-      name = "Tanga";
-      break;
-      case 19:
-      name = "Kagera";
-      break;
-      case 20:
-      name = "Pemba South";
-      break;
-      case 21:
-      name = "Zanzibar Central";
-      break;
-      case 22:
-      name = "Zanzibar North";
-      break;
-      case 23:
-      name = "Dar es Salaam";
-      break;
-      case 24:
-      name = "Rukwa";
-      break;
-      case 25:
-      name = "Zanzibar Urban";
-      break;
-      case 26:
-      name = "Arusha";
-      break;
-      case 27:
-      name = "Manyara";
-      break;
-    }
-  }
-  if (strcmp(country_code,"UA") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Cherkas'ka Oblast'";
-      break;
-      case 2:
-      name = "Chernihivs'ka Oblast'";
-      break;
-      case 3:
-      name = "Chernivets'ka Oblast'";
-      break;
-      case 4:
-      name = "Dnipropetrovs'ka Oblast'";
-      break;
-      case 5:
-      name = "Donets'ka Oblast'";
-      break;
-      case 6:
-      name = "Ivano-Frankivs'ka Oblast'";
-      break;
-      case 7:
-      name = "Kharkivs'ka Oblast'";
-      break;
-      case 8:
-      name = "Khersons'ka Oblast'";
-      break;
-      case 9:
-      name = "Khmel'nyts'ka Oblast'";
-      break;
-      case 10:
-      name = "Kirovohrads'ka Oblast'";
-      break;
-      case 11:
-      name = "Krym";
-      break;
-      case 12:
-      name = "Kyyiv";
-      break;
-      case 13:
-      name = "Kyyivs'ka Oblast'";
-      break;
-      case 14:
-      name = "Luhans'ka Oblast'";
-      break;
-      case 15:
-      name = "L'vivs'ka Oblast'";
-      break;
-      case 16:
-      name = "Mykolayivs'ka Oblast'";
-      break;
-      case 17:
-      name = "Odes'ka Oblast'";
-      break;
-      case 18:
-      name = "Poltavs'ka Oblast'";
-      break;
-      case 19:
-      name = "Rivnens'ka Oblast'";
-      break;
-      case 20:
-      name = "Sevastopol'";
-      break;
-      case 21:
-      name = "Sums'ka Oblast'";
-      break;
-      case 22:
-      name = "Ternopil's'ka Oblast'";
-      break;
-      case 23:
-      name = "Vinnyts'ka Oblast'";
-      break;
-      case 24:
-      name = "Volyns'ka Oblast'";
-      break;
-      case 25:
-      name = "Zakarpats'ka Oblast'";
-      break;
-      case 26:
-      name = "Zaporiz'ka Oblast'";
-      break;
-      case 27:
-      name = "Zhytomyrs'ka Oblast'";
-      break;
-    }
-  }
-  if (strcmp(country_code,"UG") == 0) {
-    switch (region_code2) {
-      case 26:
-      name = "Apac";
-      break;
-      case 28:
-      name = "Bundibugyo";
-      break;
-      case 29:
-      name = "Bushenyi";
-      break;
-      case 30:
-      name = "Gulu";
-      break;
-      case 31:
-      name = "Hoima";
-      break;
-      case 33:
-      name = "Jinja";
-      break;
-      case 36:
-      name = "Kalangala";
-      break;
-      case 37:
-      name = "Kampala";
-      break;
-      case 38:
-      name = "Kamuli";
-      break;
-      case 39:
-      name = "Kapchorwa";
-      break;
-      case 40:
-      name = "Kasese";
-      break;
-      case 41:
-      name = "Kibale";
-      break;
-      case 42:
-      name = "Kiboga";
-      break;
-      case 43:
-      name = "Kisoro";
-      break;
-      case 45:
-      name = "Kotido";
-      break;
-      case 46:
-      name = "Kumi";
-      break;
-      case 47:
-      name = "Lira";
-      break;
-      case 50:
-      name = "Masindi";
-      break;
-      case 52:
-      name = "Mbarara";
-      break;
-      case 56:
-      name = "Mubende";
-      break;
-      case 58:
-      name = "Nebbi";
-      break;
-      case 59:
-      name = "Ntungamo";
-      break;
-      case 60:
-      name = "Pallisa";
-      break;
-      case 61:
-      name = "Rakai";
-      break;
-      case 65:
-      name = "Adjumani";
-      break;
-      case 66:
-      name = "Bugiri";
-      break;
-      case 67:
-      name = "Busia";
-      break;
-      case 69:
-      name = "Katakwi";
-      break;
-      case 70:
-      name = "Luwero";
-      break;
-      case 71:
-      name = "Masaka";
-      break;
-      case 72:
-      name = "Moyo";
-      break;
-      case 73:
-      name = "Nakasongola";
-      break;
-      case 74:
-      name = "Sembabule";
-      break;
-      case 76:
-      name = "Tororo";
-      break;
-      case 77:
-      name = "Arua";
-      break;
-      case 78:
-      name = "Iganga";
-      break;
-      case 79:
-      name = "Kabarole";
-      break;
-      case 80:
-      name = "Kaberamaido";
-      break;
-      case 81:
-      name = "Kamwenge";
-      break;
-      case 82:
-      name = "Kanungu";
-      break;
-      case 83:
-      name = "Kayunga";
-      break;
-      case 84:
-      name = "Kitgum";
-      break;
-      case 85:
-      name = "Kyenjojo";
-      break;
-      case 86:
-      name = "Mayuge";
-      break;
-      case 87:
-      name = "Mbale";
-      break;
-      case 88:
-      name = "Moroto";
-      break;
-      case 89:
-      name = "Mpigi";
-      break;
-      case 90:
-      name = "Mukono";
-      break;
-      case 91:
-      name = "Nakapiripirit";
-      break;
-      case 92:
-      name = "Pader";
-      break;
-      case 93:
-      name = "Rukungiri";
-      break;
-      case 94:
-      name = "Sironko";
-      break;
-      case 95:
-      name = "Soroti";
-      break;
-      case 96:
-      name = "Wakiso";
-      break;
-      case 97:
-      name = "Yumbe";
-      break;
-    }
-  }
-  if (strcmp(country_code,"UY") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Artigas";
-      break;
-      case 2:
-      name = "Canelones";
-      break;
-      case 3:
-      name = "Cerro Largo";
-      break;
-      case 4:
-      name = "Colonia";
-      break;
-      case 5:
-      name = "Durazno";
-      break;
-      case 6:
-      name = "Flores";
-      break;
-      case 7:
-      name = "Florida";
-      break;
-      case 8:
-      name = "Lavalleja";
-      break;
-      case 9:
-      name = "Maldonado";
-      break;
-      case 10:
-      name = "Montevideo";
-      break;
-      case 11:
-      name = "Paysandu";
-      break;
-      case 12:
-      name = "Rio Negro";
-      break;
-      case 13:
-      name = "Rivera";
-      break;
-      case 14:
-      name = "Rocha";
-      break;
-      case 15:
-      name = "Salto";
-      break;
-      case 16:
-      name = "San Jose";
-      break;
-      case 17:
-      name = "Soriano";
-      break;
-      case 18:
-      name = "Tacuarembo";
-      break;
-      case 19:
-      name = "Treinta y Tres";
-      break;
-    }
-  }
-  if (strcmp(country_code,"UZ") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Andijon";
-      break;
-      case 2:
-      name = "Bukhoro";
-      break;
-      case 3:
-      name = "Farghona";
-      break;
-      case 4:
-      name = "Jizzakh";
-      break;
-      case 5:
-      name = "Khorazm";
-      break;
-      case 6:
-      name = "Namangan";
-      break;
-      case 7:
-      name = "Nawoiy";
-      break;
-      case 8:
-      name = "Qashqadaryo";
-      break;
-      case 9:
-      name = "Qoraqalpoghiston";
-      break;
-      case 10:
-      name = "Samarqand";
-      break;
-      case 11:
-      name = "Sirdaryo";
-      break;
-      case 12:
-      name = "Surkhondaryo";
-      break;
-      case 13:
-      name = "Toshkent";
-      break;
-      case 14:
-      name = "Toshkent";
-      break;
-    }
-  }
-  if (strcmp(country_code,"VC") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Charlotte";
-      break;
-      case 2:
-      name = "Saint Andrew";
-      break;
-      case 3:
-      name = "Saint David";
-      break;
-      case 4:
-      name = "Saint George";
-      break;
-      case 5:
-      name = "Saint Patrick";
-      break;
-      case 6:
-      name = "Grenadines";
-      break;
-    }
-  }
-  if (strcmp(country_code,"VE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Amazonas";
-      break;
-      case 2:
-      name = "Anzoategui";
-      break;
-      case 3:
-      name = "Apure";
-      break;
-      case 4:
-      name = "Aragua";
-      break;
-      case 5:
-      name = "Barinas";
-      break;
-      case 6:
-      name = "Bolivar";
-      break;
-      case 7:
-      name = "Carabobo";
-      break;
-      case 8:
-      name = "Cojedes";
-      break;
-      case 9:
-      name = "Delta Amacuro";
-      break;
-      case 11:
-      name = "Falcon";
-      break;
-      case 12:
-      name = "Guarico";
-      break;
-      case 13:
-      name = "Lara";
-      break;
-      case 14:
-      name = "Merida";
-      break;
-      case 15:
-      name = "Miranda";
-      break;
-      case 16:
-      name = "Monagas";
-      break;
-      case 17:
-      name = "Nueva Esparta";
-      break;
-      case 18:
-      name = "Portuguesa";
-      break;
-      case 19:
-      name = "Sucre";
-      break;
-      case 20:
-      name = "Tachira";
-      break;
-      case 21:
-      name = "Trujillo";
-      break;
-      case 22:
-      name = "Yaracuy";
-      break;
-      case 23:
-      name = "Zulia";
-      break;
-      case 24:
-      name = "Dependencias Federales";
-      break;
-      case 25:
-      name = "Distrito Federal";
-      break;
-      case 26:
-      name = "Vargas";
-      break;
-    }
-  }
-  if (strcmp(country_code,"VN") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "An Giang";
-      break;
-      case 3:
-      name = "Ben Tre";
-      break;
-      case 5:
-      name = "Cao Bang";
-      break;
-      case 9:
-      name = "Dong Thap";
-      break;
-      case 13:
-      name = "Hai Phong";
-      break;
-      case 20:
-      name = "Ho Chi Minh";
-      break;
-      case 21:
-      name = "Kien Giang";
-      break;
-      case 23:
-      name = "Lam Dong";
-      break;
-      case 24:
-      name = "Long An";
-      break;
-      case 30:
-      name = "Quang Ninh";
-      break;
-      case 32:
-      name = "Son La";
-      break;
-      case 33:
-      name = "Tay Ninh";
-      break;
-      case 34:
-      name = "Thanh Hoa";
-      break;
-      case 35:
-      name = "Thai Binh";
-      break;
-      case 37:
-      name = "Tien Giang";
-      break;
-      case 39:
-      name = "Lang Son";
-      break;
-      case 43:
-      name = "An Giang";
-      break;
-      case 44:
-      name = "Dac Lac";
-      break;
-      case 45:
-      name = "Dong Nai";
-      break;
-      case 46:
-      name = "Dong Thap";
-      break;
-      case 47:
-      name = "Kien Giang";
-      break;
-      case 49:
-      name = "Song Be";
-      break;
-      case 50:
-      name = "Vinh Phu";
-      break;
-      case 51:
-      name = "Ha Noi";
-      break;
-      case 52:
-      name = "Ho Chi Minh";
-      break;
-      case 53:
-      name = "Ba Ria-Vung Tau";
-      break;
-      case 54:
-      name = "Binh Dinh";
-      break;
-      case 55:
-      name = "Binh Thuan";
-      break;
-      case 58:
-      name = "Ha Giang";
-      break;
-      case 59:
-      name = "Ha Tay";
-      break;
-      case 60:
-      name = "Ha Tinh";
-      break;
-      case 61:
-      name = "Hoa Binh";
-      break;
-      case 62:
-      name = "Khanh Hoa";
-      break;
-      case 63:
-      name = "Kon Tum";
-      break;
-      case 64:
-      name = "Quang Tri";
-      break;
-      case 65:
-      name = "Nam Ha";
-      break;
-      case 66:
-      name = "Nghe An";
-      break;
-      case 67:
-      name = "Ninh Binh";
-      break;
-      case 68:
-      name = "Ninh Thuan";
-      break;
-      case 69:
-      name = "Phu Yen";
-      break;
-      case 70:
-      name = "Quang Binh";
-      break;
-      case 71:
-      name = "Quang Ngai";
-      break;
-      case 72:
-      name = "Quang Tri";
-      break;
-      case 73:
-      name = "Soc Trang";
-      break;
-      case 74:
-      name = "Thua Thien";
-      break;
-      case 75:
-      name = "Tra Vinh";
-      break;
-      case 76:
-      name = "Tuyen Quang";
-      break;
-      case 77:
-      name = "Vinh Long";
-      break;
-      case 78:
-      name = "Da Nang";
-      break;
-      case 79:
-      name = "Hai Duong";
-      break;
-      case 80:
-      name = "Ha Nam";
-      break;
-      case 81:
-      name = "Hung Yen";
-      break;
-      case 82:
-      name = "Nam Dinh";
-      break;
-      case 83:
-      name = "Phu Tho";
-      break;
-      case 84:
-      name = "Quang Nam";
-      break;
-      case 85:
-      name = "Thai Nguyen";
-      break;
-      case 86:
-      name = "Vinh Puc Province";
-      break;
-      case 87:
-      name = "Can Tho";
-      break;
-      case 88:
-      name = "Dak Lak";
-      break;
-      case 89:
-      name = "Lai Chau";
-      break;
-      case 90:
-      name = "Lao Cai";
-      break;
-      case 91:
-      name = "Dak Nong";
-      break;
-      case 92:
-      name = "Dien Bien";
-      break;
-      case 93:
-      name = "Hau Giang";
-      break;
-    }
-  }
-  if (strcmp(country_code,"VU") == 0) {
-    switch (region_code2) {
-      case 5:
-      name = "Ambrym";
-      break;
-      case 6:
-      name = "Aoba";
-      break;
-      case 7:
-      name = "Torba";
-      break;
-      case 8:
-      name = "Efate";
-      break;
-      case 9:
-      name = "Epi";
-      break;
-      case 10:
-      name = "Malakula";
-      break;
-      case 11:
-      name = "Paama";
-      break;
-      case 12:
-      name = "Pentecote";
-      break;
-      case 13:
-      name = "Sanma";
-      break;
-      case 14:
-      name = "Shepherd";
-      break;
-      case 15:
-      name = "Tafea";
-      break;
-      case 16:
-      name = "Malampa";
-      break;
-      case 17:
-      name = "Penama";
-      break;
-      case 18:
-      name = "Shefa";
-      break;
-    }
-  }
-  if (strcmp(country_code,"WS") == 0) {
-    switch (region_code2) {
-      case 2:
-      name = "Aiga-i-le-Tai";
-      break;
-      case 3:
-      name = "Atua";
-      break;
-      case 4:
-      name = "Fa";
-      break;
-      case 5:
-      name = "Gaga";
-      break;
-      case 6:
-      name = "Va";
-      break;
-      case 7:
-      name = "Gagaifomauga";
-      break;
-      case 8:
-      name = "Palauli";
-      break;
-      case 9:
-      name = "Satupa";
-      break;
-      case 10:
-      name = "Tuamasaga";
-      break;
-      case 11:
-      name = "Vaisigano";
-      break;
-    }
-  }
-  if (strcmp(country_code,"YE") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Abyan";
-      break;
-      case 2:
-      name = "Adan";
-      break;
-      case 3:
-      name = "Al Mahrah";
-      break;
-      case 4:
-      name = "Hadramawt";
-      break;
-      case 5:
-      name = "Shabwah";
-      break;
-      case 6:
-      name = "Al Ghaydah";
-      break;
-      case 8:
-      name = "Al Hudaydah";
-      break;
-      case 10:
-      name = "Al Mahwit";
-      break;
-      case 11:
-      name = "Dhamar";
-      break;
-      case 14:
-      name = "Ma'rib";
-      break;
-      case 15:
-      name = "Sa";
-      break;
-      case 16:
-      name = "San";
-      break;
-      case 20:
-      name = "Al Bayda'";
-      break;
-      case 21:
-      name = "Al Jawf";
-      break;
-      case 22:
-      name = "Hajjah";
-      break;
-      case 23:
-      name = "Ibb";
-      break;
-      case 24:
-      name = "Lahij";
-      break;
-      case 25:
-      name = "Ta";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ZA") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "North-Western Province";
-      break;
-      case 2:
-      name = "KwaZulu-Natal";
-      break;
-      case 3:
-      name = "Free State";
-      break;
-      case 5:
-      name = "Eastern Cape";
-      break;
-      case 6:
-      name = "Gauteng";
-      break;
-      case 7:
-      name = "Mpumalanga";
-      break;
-      case 8:
-      name = "Northern Cape";
-      break;
-      case 9:
-      name = "Limpopo";
-      break;
-      case 10:
-      name = "North-West";
-      break;
-      case 11:
-      name = "Western Cape";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ZM") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Western";
-      break;
-      case 2:
-      name = "Central";
-      break;
-      case 3:
-      name = "Eastern";
-      break;
-      case 4:
-      name = "Luapula";
-      break;
-      case 5:
-      name = "Northern";
-      break;
-      case 6:
-      name = "North-Western";
-      break;
-      case 7:
-      name = "Southern";
-      break;
-      case 8:
-      name = "Copperbelt";
-      break;
-      case 9:
-      name = "Lusaka";
-      break;
-    }
-  }
-  if (strcmp(country_code,"ZW") == 0) {
-    switch (region_code2) {
-      case 1:
-      name = "Manicaland";
-      break;
-      case 2:
-      name = "Midlands";
-      break;
-      case 3:
-      name = "Mashonaland Central";
-      break;
-      case 4:
-      name = "Mashonaland East";
-      break;
-      case 5:
-      name = "Mashonaland West";
-      break;
-      case 6:
-      name = "Matabeleland North";
-      break;
-      case 7:
-      name = "Matabeleland South";
-      break;
-      case 8:
-      name = "Masvingo";
-      break;
-      case 9:
-      name = "Bulawayo";
-      break;
-      case 10:
-      name = "Harare";
-      break;
-    }
-  }
-  return name;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/timeZone.c b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/timeZone.c
deleted file mode 100644
index 9db5fb8a..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/timeZone.c
+++ /dev/null
@@ -1,2077 +0,0 @@
-#include <string.h> 
-const char* GeoIP_time_zone_by_country_and_region(const char * country,const char * region) {
-  const char* timezone = NULL;
-  if (country == NULL) {
-    return NULL;
-  }
-  if (region == NULL) {
-    region = "";
-  }
-  if ( strcmp (country, "AD") == 0 ) {
-    timezone = "Europe/Andorra";
-  }
-  else if ( strcmp (country, "AE") == 0 ) {
-    timezone = "Asia/Dubai";
-  }
-  else if ( strcmp (country, "AF") == 0 ) {
-    timezone = "Asia/Kabul";
-  }
-  else if ( strcmp (country, "AG") == 0 ) {
-    timezone = "America/Antigua";
-  }
-  else if ( strcmp (country, "AI") == 0 ) {
-    timezone = "America/Anguilla";
-  }
-  else if ( strcmp (country, "AL") == 0 ) {
-    timezone = "Europe/Tirane";
-  }
-  else if ( strcmp (country, "AM") == 0 ) {
-    timezone = "Asia/Yerevan";
-  }
-  else if ( strcmp (country, "AO") == 0 ) {
-    timezone = "Africa/Luanda";
-  }
-  else if ( strcmp (country, "AR") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "America/Argentina/Buenos_Aires";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "America/Argentina/Catamarca";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "America/Argentina/Tucuman";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "America/Argentina/Rio_Gallegos";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "America/Argentina/Cordoba";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "America/Argentina/Tucuman";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "America/Argentina/Buenos_Aires";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "America/Argentina/Buenos_Aires";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "America/Argentina/Tucuman";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "America/Argentina/Jujuy";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "America/Argentina/San_Luis";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "America/Argentina/La_Rioja";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "America/Argentina/Mendoza";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "America/Argentina/Buenos_Aires";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "America/Argentina/San_Luis";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "America/Argentina/Buenos_Aires";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "America/Argentina/Salta";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "America/Argentina/San_Juan";
-    }
-    else if ( strcmp (region, "19") == 0 ) {
-      timezone = "America/Argentina/San_Luis";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "America/Argentina/Rio_Gallegos";
-    }
-    else if ( strcmp (region, "21") == 0 ) {
-      timezone = "America/Argentina/Buenos_Aires";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "America/Argentina/Catamarca";
-    }
-    else if ( strcmp (region, "23") == 0 ) {
-      timezone = "America/Argentina/Ushuaia";
-    }
-    else if ( strcmp (region, "24") == 0 ) {
-      timezone = "America/Argentina/Tucuman";
-    }
-  }
-  else if ( strcmp (country, "AS") == 0 ) {
-    timezone = "US/Samoa";
-  }
-  else if ( strcmp (country, "AT") == 0 ) {
-    timezone = "Europe/Vienna";
-  }
-  else if ( strcmp (country, "AU") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Australia/Canberra";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "Australia/NSW";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Australia/North";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "Australia/Queensland";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Australia/South";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Australia/Tasmania";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Australia/Victoria";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Australia/West";
-    }
-  }
-  else if ( strcmp (country, "AW") == 0 ) {
-    timezone = "America/Aruba";
-  }
-  else if ( strcmp (country, "AX") == 0 ) {
-    timezone = "Europe/Mariehamn";
-  }
-  else if ( strcmp (country, "AZ") == 0 ) {
-    timezone = "Asia/Baku";
-  }
-  else if ( strcmp (country, "BA") == 0 ) {
-    timezone = "Europe/Sarajevo";
-  }
-  else if ( strcmp (country, "BB") == 0 ) {
-    timezone = "America/Barbados";
-  }
-  else if ( strcmp (country, "BD") == 0 ) {
-    timezone = "Asia/Dhaka";
-  }
-  else if ( strcmp (country, "BE") == 0 ) {
-    timezone = "Europe/Brussels";
-  }
-  else if ( strcmp (country, "BF") == 0 ) {
-    timezone = "Africa/Ouagadougou";
-  }
-  else if ( strcmp (country, "BG") == 0 ) {
-    timezone = "Europe/Sofia";
-  }
-  else if ( strcmp (country, "BH") == 0 ) {
-    timezone = "Asia/Bahrain";
-  }
-  else if ( strcmp (country, "BI") == 0 ) {
-    timezone = "Africa/Bujumbura";
-  }
-  else if ( strcmp (country, "BJ") == 0 ) {
-    timezone = "Africa/Porto-Novo";
-  }
-  else if ( strcmp (country, "BL") == 0 ) {
-    timezone = "America/St_Barthelemy";
-  }
-  else if ( strcmp (country, "BM") == 0 ) {
-    timezone = "Atlantic/Bermuda";
-  }
-  else if ( strcmp (country, "BN") == 0 ) {
-    timezone = "Asia/Brunei";
-  }
-  else if ( strcmp (country, "BO") == 0 ) {
-    timezone = "America/La_Paz";
-  }
-  else if ( strcmp (country, "BQ") == 0 ) {
-    timezone = "America/Curacao";
-  }
-  else if ( strcmp (country, "BR") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "America/Rio_Branco";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "America/Maceio";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "America/Manaus";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "America/Bahia";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "America/Fortaleza";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "America/Campo_Grande";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "America/Belem";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "America/Cuiaba";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "America/Belem";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "America/Recife";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "America/Fortaleza";
-    }
-    else if ( strcmp (region, "21") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "America/Recife";
-    }
-    else if ( strcmp (region, "23") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "24") == 0 ) {
-      timezone = "America/Porto_Velho";
-    }
-    else if ( strcmp (region, "25") == 0 ) {
-      timezone = "America/Boa_Vista";
-    }
-    else if ( strcmp (region, "26") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "27") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "28") == 0 ) {
-      timezone = "America/Maceio";
-    }
-    else if ( strcmp (region, "29") == 0 ) {
-      timezone = "America/Sao_Paulo";
-    }
-    else if ( strcmp (region, "30") == 0 ) {
-      timezone = "America/Recife";
-    }
-    else if ( strcmp (region, "31") == 0 ) {
-      timezone = "America/Araguaina";
-    }
-  }
-  else if ( strcmp (country, "BS") == 0 ) {
-    timezone = "America/Nassau";
-  }
-  else if ( strcmp (country, "BT") == 0 ) {
-    timezone = "Asia/Thimphu";
-  }
-  else if ( strcmp (country, "BW") == 0 ) {
-    timezone = "Africa/Gaborone";
-  }
-  else if ( strcmp (country, "BY") == 0 ) {
-    timezone = "Europe/Minsk";
-  }
-  else if ( strcmp (country, "BZ") == 0 ) {
-    timezone = "America/Belize";
-  }
-  else if ( strcmp (country, "CA") == 0 ) {
-    if ( strcmp (region, "AB") == 0 ) {
-      timezone = "America/Edmonton";
-    }
-    else if ( strcmp (region, "BC") == 0 ) {
-      timezone = "America/Vancouver";
-    }
-    else if ( strcmp (region, "MB") == 0 ) {
-      timezone = "America/Winnipeg";
-    }
-    else if ( strcmp (region, "NB") == 0 ) {
-      timezone = "America/Halifax";
-    }
-    else if ( strcmp (region, "NL") == 0 ) {
-      timezone = "America/St_Johns";
-    }
-    else if ( strcmp (region, "NS") == 0 ) {
-      timezone = "America/Halifax";
-    }
-    else if ( strcmp (region, "NT") == 0 ) {
-      timezone = "America/Yellowknife";
-    }
-    else if ( strcmp (region, "NU") == 0 ) {
-      timezone = "America/Rankin_Inlet";
-    }
-    else if ( strcmp (region, "ON") == 0 ) {
-      timezone = "America/Rainy_River";
-    }
-    else if ( strcmp (region, "PE") == 0 ) {
-      timezone = "America/Halifax";
-    }
-    else if ( strcmp (region, "QC") == 0 ) {
-      timezone = "America/Montreal";
-    }
-    else if ( strcmp (region, "SK") == 0 ) {
-      timezone = "America/Regina";
-    }
-    else if ( strcmp (region, "YT") == 0 ) {
-      timezone = "America/Whitehorse";
-    }
-  }
-  else if ( strcmp (country, "CC") == 0 ) {
-    timezone = "Indian/Cocos";
-  }
-  else if ( strcmp (country, "CD") == 0 ) {
-    if ( strcmp (region, "02") == 0 ) {
-      timezone = "Africa/Kinshasa";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Africa/Lubumbashi";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Africa/Kinshasa";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Africa/Kinshasa";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "Africa/Lubumbashi";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "Africa/Lubumbashi";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "Africa/Lubumbashi";
-    }
-  }
-  else if ( strcmp (country, "CF") == 0 ) {
-    timezone = "Africa/Bangui";
-  }
-  else if ( strcmp (country, "CG") == 0 ) {
-    timezone = "Africa/Brazzaville";
-  }
-  else if ( strcmp (country, "CH") == 0 ) {
-    timezone = "Europe/Zurich";
-  }
-  else if ( strcmp (country, "CI") == 0 ) {
-    timezone = "Africa/Abidjan";
-  }
-  else if ( strcmp (country, "CK") == 0 ) {
-    timezone = "Pacific/Rarotonga";
-  }
-  else if ( strcmp (country, "CL") == 0 ) {
-    timezone = "Chile/Continental";
-  }
-  else if ( strcmp (country, "CM") == 0 ) {
-    timezone = "Africa/Lagos";
-  }
-  else if ( strcmp (country, "CN") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Asia/Harbin";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Asia/Harbin";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "Asia/Urumqi";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "19") == 0 ) {
-      timezone = "Asia/Harbin";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "Asia/Harbin";
-    }
-    else if ( strcmp (region, "21") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "Asia/Harbin";
-    }
-    else if ( strcmp (region, "23") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "24") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "25") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "26") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "28") == 0 ) {
-      timezone = "Asia/Shanghai";
-    }
-    else if ( strcmp (region, "29") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "30") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "31") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "32") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-    else if ( strcmp (region, "33") == 0 ) {
-      timezone = "Asia/Chongqing";
-    }
-  }
-  else if ( strcmp (country, "CO") == 0 ) {
-    timezone = "America/Bogota";
-  }
-  else if ( strcmp (country, "CR") == 0 ) {
-    timezone = "America/Costa_Rica";
-  }
-  else if ( strcmp (country, "CU") == 0 ) {
-    timezone = "America/Havana";
-  }
-  else if ( strcmp (country, "CV") == 0 ) {
-    timezone = "Atlantic/Cape_Verde";
-  }
-  else if ( strcmp (country, "CW") == 0 ) {
-    timezone = "America/Curacao";
-  }
-  else if ( strcmp (country, "CX") == 0 ) {
-    timezone = "Indian/Christmas";
-  }
-  else if ( strcmp (country, "CY") == 0 ) {
-    timezone = "Asia/Nicosia";
-  }
-  else if ( strcmp (country, "CZ") == 0 ) {
-    timezone = "Europe/Prague";
-  }
-  else if ( strcmp (country, "DE") == 0 ) {
-    timezone = "Europe/Berlin";
-  }
-  else if ( strcmp (country, "DJ") == 0 ) {
-    timezone = "Africa/Djibouti";
-  }
-  else if ( strcmp (country, "DK") == 0 ) {
-    timezone = "Europe/Copenhagen";
-  }
-  else if ( strcmp (country, "DM") == 0 ) {
-    timezone = "America/Dominica";
-  }
-  else if ( strcmp (country, "DO") == 0 ) {
-    timezone = "America/Santo_Domingo";
-  }
-  else if ( strcmp (country, "DZ") == 0 ) {
-    timezone = "Africa/Algiers";
-  }
-  else if ( strcmp (country, "EC") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Pacific/Galapagos";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "19") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "America/Guayaquil";
-    }
-  }
-  else if ( strcmp (country, "EE") == 0 ) {
-    timezone = "Europe/Tallinn";
-  }
-  else if ( strcmp (country, "EG") == 0 ) {
-    timezone = "Africa/Cairo";
-  }
-  else if ( strcmp (country, "EH") == 0 ) {
-    timezone = "Africa/El_Aaiun";
-  }
-  else if ( strcmp (country, "ER") == 0 ) {
-    timezone = "Africa/Asmera";
-  }
-  else if ( strcmp (country, "ES") == 0 ) {
-    if ( strcmp (region, "07") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "27") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "29") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "31") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "32") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "34") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "39") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "51") == 0 ) {
-      timezone = "Africa/Ceuta";
-    }
-    else if ( strcmp (region, "52") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "53") == 0 ) {
-      timezone = "Atlantic/Canary";
-    }
-    else if ( strcmp (region, "54") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "55") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "56") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "57") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "58") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "59") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-    else if ( strcmp (region, "60") == 0 ) {
-      timezone = "Europe/Madrid";
-    }
-  }
-  else if ( strcmp (country, "ET") == 0 ) {
-    timezone = "Africa/Addis_Ababa";
-  }
-  else if ( strcmp (country, "FI") == 0 ) {
-    timezone = "Europe/Helsinki";
-  }
-  else if ( strcmp (country, "FJ") == 0 ) {
-    timezone = "Pacific/Fiji";
-  }
-  else if ( strcmp (country, "FK") == 0 ) {
-    timezone = "Atlantic/Stanley";
-  }
-  else if ( strcmp (country, "FO") == 0 ) {
-    timezone = "Atlantic/Faeroe";
-  }
-  else if ( strcmp (country, "FR") == 0 ) {
-    timezone = "Europe/Paris";
-  }
-  else if ( strcmp (country, "GA") == 0 ) {
-    timezone = "Africa/Libreville";
-  }
-  else if ( strcmp (country, "GB") == 0 ) {
-    timezone = "Europe/London";
-  }
-  else if ( strcmp (country, "GD") == 0 ) {
-    timezone = "America/Grenada";
-  }
-  else if ( strcmp (country, "GE") == 0 ) {
-    timezone = "Asia/Tbilisi";
-  }
-  else if ( strcmp (country, "GF") == 0 ) {
-    timezone = "America/Cayenne";
-  }
-  else if ( strcmp (country, "GG") == 0 ) {
-    timezone = "Europe/Guernsey";
-  }
-  else if ( strcmp (country, "GH") == 0 ) {
-    timezone = "Africa/Accra";
-  }
-  else if ( strcmp (country, "GI") == 0 ) {
-    timezone = "Europe/Gibraltar";
-  }
-  else if ( strcmp (country, "GL") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "America/Thule";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "America/Godthab";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "America/Godthab";
-    }
-  }
-  else if ( strcmp (country, "GM") == 0 ) {
-    timezone = "Africa/Banjul";
-  }
-  else if ( strcmp (country, "GN") == 0 ) {
-    timezone = "Africa/Conakry";
-  }
-  else if ( strcmp (country, "GP") == 0 ) {
-    timezone = "America/Guadeloupe";
-  }
-  else if ( strcmp (country, "GQ") == 0 ) {
-    timezone = "Africa/Malabo";
-  }
-  else if ( strcmp (country, "GR") == 0 ) {
-    timezone = "Europe/Athens";
-  }
-  else if ( strcmp (country, "GS") == 0 ) {
-    timezone = "Atlantic/South_Georgia";
-  }
-  else if ( strcmp (country, "GT") == 0 ) {
-    timezone = "America/Guatemala";
-  }
-  else if ( strcmp (country, "GU") == 0 ) {
-    timezone = "Pacific/Guam";
-  }
-  else if ( strcmp (country, "GW") == 0 ) {
-    timezone = "Africa/Bissau";
-  }
-  else if ( strcmp (country, "GY") == 0 ) {
-    timezone = "America/Guyana";
-  }
-  else if ( strcmp (country, "HK") == 0 ) {
-    timezone = "Asia/Hong_Kong";
-  }
-  else if ( strcmp (country, "HN") == 0 ) {
-    timezone = "America/Tegucigalpa";
-  }
-  else if ( strcmp (country, "HR") == 0 ) {
-    timezone = "Europe/Zagreb";
-  }
-  else if ( strcmp (country, "HT") == 0 ) {
-    timezone = "America/Port-au-Prince";
-  }
-  else if ( strcmp (country, "HU") == 0 ) {
-    timezone = "Europe/Budapest";
-  }
-  else if ( strcmp (country, "ID") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Asia/Pontianak";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "Asia/Jayapura";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "Asia/Pontianak";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "19") == 0 ) {
-      timezone = "Asia/Pontianak";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "21") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "23") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "24") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "25") == 0 ) {
-      timezone = "Asia/Pontianak";
-    }
-    else if ( strcmp (region, "26") == 0 ) {
-      timezone = "Asia/Pontianak";
-    }
-    else if ( strcmp (region, "30") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-    else if ( strcmp (region, "31") == 0 ) {
-      timezone = "Asia/Makassar";
-    }
-    else if ( strcmp (region, "33") == 0 ) {
-      timezone = "Asia/Jakarta";
-    }
-  }
-  else if ( strcmp (country, "IE") == 0 ) {
-    timezone = "Europe/Dublin";
-  }
-  else if ( strcmp (country, "IL") == 0 ) {
-    timezone = "Asia/Jerusalem";
-  }
-  else if ( strcmp (country, "IM") == 0 ) {
-    timezone = "Europe/Isle_of_Man";
-  }
-  else if ( strcmp (country, "IN") == 0 ) {
-    timezone = "Asia/Calcutta";
-  }
-  else if ( strcmp (country, "IO") == 0 ) {
-    timezone = "Indian/Chagos";
-  }
-  else if ( strcmp (country, "IQ") == 0 ) {
-    timezone = "Asia/Baghdad";
-  }
-  else if ( strcmp (country, "IR") == 0 ) {
-    timezone = "Asia/Tehran";
-  }
-  else if ( strcmp (country, "IS") == 0 ) {
-    timezone = "Atlantic/Reykjavik";
-  }
-  else if ( strcmp (country, "IT") == 0 ) {
-    timezone = "Europe/Rome";
-  }
-  else if ( strcmp (country, "JE") == 0 ) {
-    timezone = "Europe/Jersey";
-  }
-  else if ( strcmp (country, "JM") == 0 ) {
-    timezone = "America/Jamaica";
-  }
-  else if ( strcmp (country, "JO") == 0 ) {
-    timezone = "Asia/Amman";
-  }
-  else if ( strcmp (country, "JP") == 0 ) {
-    timezone = "Asia/Tokyo";
-  }
-  else if ( strcmp (country, "KE") == 0 ) {
-    timezone = "Africa/Nairobi";
-  }
-  else if ( strcmp (country, "KG") == 0 ) {
-    timezone = "Asia/Bishkek";
-  }
-  else if ( strcmp (country, "KH") == 0 ) {
-    timezone = "Asia/Phnom_Penh";
-  }
-  else if ( strcmp (country, "KI") == 0 ) {
-    timezone = "Pacific/Tarawa";
-  }
-  else if ( strcmp (country, "KM") == 0 ) {
-    timezone = "Indian/Comoro";
-  }
-  else if ( strcmp (country, "KN") == 0 ) {
-    timezone = "America/St_Kitts";
-  }
-  else if ( strcmp (country, "KP") == 0 ) {
-    timezone = "Asia/Pyongyang";
-  }
-  else if ( strcmp (country, "KR") == 0 ) {
-    timezone = "Asia/Seoul";
-  }
-  else if ( strcmp (country, "KW") == 0 ) {
-    timezone = "Asia/Kuwait";
-  }
-  else if ( strcmp (country, "KY") == 0 ) {
-    timezone = "America/Cayman";
-  }
-  else if ( strcmp (country, "KZ") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Asia/Almaty";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "Asia/Almaty";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Asia/Qyzylorda";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "Asia/Aqtobe";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Asia/Qyzylorda";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Asia/Aqtau";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Asia/Oral";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Asia/Qyzylorda";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "Asia/Aqtau";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "Asia/Qyzylorda";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "Asia/Almaty";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "Asia/Qyzylorda";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "Asia/Aqtobe";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "Asia/Qyzylorda";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "Asia/Almaty";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "Asia/Aqtobe";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "Asia/Almaty";
-    }
-  }
-  else if ( strcmp (country, "LA") == 0 ) {
-    timezone = "Asia/Vientiane";
-  }
-  else if ( strcmp (country, "LB") == 0 ) {
-    timezone = "Asia/Beirut";
-  }
-  else if ( strcmp (country, "LC") == 0 ) {
-    timezone = "America/St_Lucia";
-  }
-  else if ( strcmp (country, "LI") == 0 ) {
-    timezone = "Europe/Vaduz";
-  }
-  else if ( strcmp (country, "LK") == 0 ) {
-    timezone = "Asia/Colombo";
-  }
-  else if ( strcmp (country, "LR") == 0 ) {
-    timezone = "Africa/Monrovia";
-  }
-  else if ( strcmp (country, "LS") == 0 ) {
-    timezone = "Africa/Maseru";
-  }
-  else if ( strcmp (country, "LT") == 0 ) {
-    timezone = "Europe/Vilnius";
-  }
-  else if ( strcmp (country, "LU") == 0 ) {
-    timezone = "Europe/Luxembourg";
-  }
-  else if ( strcmp (country, "LV") == 0 ) {
-    timezone = "Europe/Riga";
-  }
-  else if ( strcmp (country, "LY") == 0 ) {
-    timezone = "Africa/Tripoli";
-  }
-  else if ( strcmp (country, "MA") == 0 ) {
-    timezone = "Africa/Casablanca";
-  }
-  else if ( strcmp (country, "MC") == 0 ) {
-    timezone = "Europe/Monaco";
-  }
-  else if ( strcmp (country, "MD") == 0 ) {
-    timezone = "Europe/Chisinau";
-  }
-  else if ( strcmp (country, "ME") == 0 ) {
-    timezone = "Europe/Podgorica";
-  }
-  else if ( strcmp (country, "MF") == 0 ) {
-    timezone = "America/Marigot";
-  }
-  else if ( strcmp (country, "MG") == 0 ) {
-    timezone = "Indian/Antananarivo";
-  }
-  else if ( strcmp (country, "MK") == 0 ) {
-    timezone = "Europe/Skopje";
-  }
-  else if ( strcmp (country, "ML") == 0 ) {
-    timezone = "Africa/Bamako";
-  }
-  else if ( strcmp (country, "MM") == 0 ) {
-    timezone = "Asia/Rangoon";
-  }
-  else if ( strcmp (country, "MN") == 0 ) {
-    timezone = "Asia/Choibalsan";
-  }
-  else if ( strcmp (country, "MO") == 0 ) {
-    timezone = "Asia/Macao";
-  }
-  else if ( strcmp (country, "MP") == 0 ) {
-    timezone = "Pacific/Saipan";
-  }
-  else if ( strcmp (country, "MQ") == 0 ) {
-    timezone = "America/Martinique";
-  }
-  else if ( strcmp (country, "MR") == 0 ) {
-    timezone = "Africa/Nouakchott";
-  }
-  else if ( strcmp (country, "MS") == 0 ) {
-    timezone = "America/Montserrat";
-  }
-  else if ( strcmp (country, "MT") == 0 ) {
-    timezone = "Europe/Malta";
-  }
-  else if ( strcmp (country, "MU") == 0 ) {
-    timezone = "Indian/Mauritius";
-  }
-  else if ( strcmp (country, "MV") == 0 ) {
-    timezone = "Indian/Maldives";
-  }
-  else if ( strcmp (country, "MW") == 0 ) {
-    timezone = "Africa/Blantyre";
-  }
-  else if ( strcmp (country, "MX") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "America/Tijuana";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "America/Hermosillo";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "America/Merida";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "America/Chihuahua";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "America/Monterrey";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "America/Mazatlan";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "America/Mazatlan";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "America/Chihuahua";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "America/Mazatlan";
-    }
-    else if ( strcmp (region, "19") == 0 ) {
-      timezone = "America/Monterrey";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "21") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "23") == 0 ) {
-      timezone = "America/Cancun";
-    }
-    else if ( strcmp (region, "24") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "25") == 0 ) {
-      timezone = "America/Mazatlan";
-    }
-    else if ( strcmp (region, "26") == 0 ) {
-      timezone = "America/Hermosillo";
-    }
-    else if ( strcmp (region, "27") == 0 ) {
-      timezone = "America/Merida";
-    }
-    else if ( strcmp (region, "28") == 0 ) {
-      timezone = "America/Monterrey";
-    }
-    else if ( strcmp (region, "29") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "30") == 0 ) {
-      timezone = "America/Mexico_City";
-    }
-    else if ( strcmp (region, "31") == 0 ) {
-      timezone = "America/Merida";
-    }
-    else if ( strcmp (region, "32") == 0 ) {
-      timezone = "America/Monterrey";
-    }
-  }
-  else if ( strcmp (country, "MY") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "Asia/Kuching";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "Asia/Kuala_Lumpur";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "Asia/Kuching";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "Asia/Kuching";
-    }
-  }
-  else if ( strcmp (country, "MZ") == 0 ) {
-    timezone = "Africa/Maputo";
-  }
-  else if ( strcmp (country, "NA") == 0 ) {
-    timezone = "Africa/Windhoek";
-  }
-  else if ( strcmp (country, "NC") == 0 ) {
-    timezone = "Pacific/Noumea";
-  }
-  else if ( strcmp (country, "NE") == 0 ) {
-    timezone = "Africa/Niamey";
-  }
-  else if ( strcmp (country, "NF") == 0 ) {
-    timezone = "Pacific/Norfolk";
-  }
-  else if ( strcmp (country, "NG") == 0 ) {
-    timezone = "Africa/Lagos";
-  }
-  else if ( strcmp (country, "NI") == 0 ) {
-    timezone = "America/Managua";
-  }
-  else if ( strcmp (country, "NL") == 0 ) {
-    timezone = "Europe/Amsterdam";
-  }
-  else if ( strcmp (country, "NO") == 0 ) {
-    timezone = "Europe/Oslo";
-  }
-  else if ( strcmp (country, "NP") == 0 ) {
-    timezone = "Asia/Katmandu";
-  }
-  else if ( strcmp (country, "NR") == 0 ) {
-    timezone = "Pacific/Nauru";
-  }
-  else if ( strcmp (country, "NU") == 0 ) {
-    timezone = "Pacific/Niue";
-  }
-  else if ( strcmp (country, "NZ") == 0 ) {
-    if ( strcmp (region, "85") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "E7") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "E8") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "E9") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "F1") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "F2") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "F3") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "F4") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "F5") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "F7") == 0 ) {
-      timezone = "Pacific/Chatham";
-    }
-    else if ( strcmp (region, "F8") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "F9") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "G1") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "G2") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-    else if ( strcmp (region, "G3") == 0 ) {
-      timezone = "Pacific/Auckland";
-    }
-  }
-  else if ( strcmp (country, "OM") == 0 ) {
-    timezone = "Asia/Muscat";
-  }
-  else if ( strcmp (country, "PA") == 0 ) {
-    timezone = "America/Panama";
-  }
-  else if ( strcmp (country, "PE") == 0 ) {
-    timezone = "America/Lima";
-  }
-  else if ( strcmp (country, "PF") == 0 ) {
-    timezone = "Pacific/Marquesas";
-  }
-  else if ( strcmp (country, "PG") == 0 ) {
-    timezone = "Pacific/Port_Moresby";
-  }
-  else if ( strcmp (country, "PH") == 0 ) {
-    timezone = "Asia/Manila";
-  }
-  else if ( strcmp (country, "PK") == 0 ) {
-    timezone = "Asia/Karachi";
-  }
-  else if ( strcmp (country, "PL") == 0 ) {
-    timezone = "Europe/Warsaw";
-  }
-  else if ( strcmp (country, "PM") == 0 ) {
-    timezone = "America/Miquelon";
-  }
-  else if ( strcmp (country, "PN") == 0 ) {
-    timezone = "Pacific/Pitcairn";
-  }
-  else if ( strcmp (country, "PR") == 0 ) {
-    timezone = "America/Puerto_Rico";
-  }
-  else if ( strcmp (country, "PS") == 0 ) {
-    timezone = "Asia/Gaza";
-  }
-  else if ( strcmp (country, "PT") == 0 ) {
-    if ( strcmp (region, "02") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "Atlantic/Madeira";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "19") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "21") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "Europe/Lisbon";
-    }
-  }
-  else if ( strcmp (country, "PW") == 0 ) {
-    timezone = "Pacific/Palau";
-  }
-  else if ( strcmp (country, "PY") == 0 ) {
-    timezone = "America/Asuncion";
-  }
-  else if ( strcmp (country, "QA") == 0 ) {
-    timezone = "Asia/Qatar";
-  }
-  else if ( strcmp (country, "RE") == 0 ) {
-    timezone = "Indian/Reunion";
-  }
-  else if ( strcmp (country, "RO") == 0 ) {
-    timezone = "Europe/Bucharest";
-  }
-  else if ( strcmp (country, "RS") == 0 ) {
-    timezone = "Europe/Belgrade";
-  }
-  else if ( strcmp (country, "RU") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "Asia/Irkutsk";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Asia/Novokuznetsk";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "Asia/Novosibirsk";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Asia/Vladivostok";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "Asia/Irkutsk";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "Asia/Irkutsk";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "Asia/Anadyr";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "Asia/Krasnoyarsk";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "Asia/Irkutsk";
-    }
-    else if ( strcmp (region, "21") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "23") == 0 ) {
-      timezone = "Europe/Kaliningrad";
-    }
-    else if ( strcmp (region, "24") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "25") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "26") == 0 ) {
-      timezone = "Asia/Kamchatka";
-    }
-    else if ( strcmp (region, "27") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "28") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "29") == 0 ) {
-      timezone = "Asia/Novokuznetsk";
-    }
-    else if ( strcmp (region, "30") == 0 ) {
-      timezone = "Asia/Vladivostok";
-    }
-    else if ( strcmp (region, "31") == 0 ) {
-      timezone = "Asia/Krasnoyarsk";
-    }
-    else if ( strcmp (region, "32") == 0 ) {
-      timezone = "Asia/Omsk";
-    }
-    else if ( strcmp (region, "33") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "34") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "35") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "36") == 0 ) {
-      timezone = "Asia/Anadyr";
-    }
-    else if ( strcmp (region, "37") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "38") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "39") == 0 ) {
-      timezone = "Asia/Krasnoyarsk";
-    }
-    else if ( strcmp (region, "40") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "41") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "42") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "43") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "44") == 0 ) {
-      timezone = "Asia/Magadan";
-    }
-    else if ( strcmp (region, "45") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "46") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "47") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "48") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "49") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "50") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "51") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "52") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "53") == 0 ) {
-      timezone = "Asia/Novosibirsk";
-    }
-    else if ( strcmp (region, "54") == 0 ) {
-      timezone = "Asia/Omsk";
-    }
-    else if ( strcmp (region, "55") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "56") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "57") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "58") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "59") == 0 ) {
-      timezone = "Asia/Vladivostok";
-    }
-    else if ( strcmp (region, "60") == 0 ) {
-      timezone = "Europe/Kaliningrad";
-    }
-    else if ( strcmp (region, "61") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "62") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "63") == 0 ) {
-      timezone = "Asia/Yakutsk";
-    }
-    else if ( strcmp (region, "64") == 0 ) {
-      timezone = "Asia/Sakhalin";
-    }
-    else if ( strcmp (region, "65") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "66") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "67") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "68") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "69") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "70") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "71") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "72") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "73") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "74") == 0 ) {
-      timezone = "Asia/Krasnoyarsk";
-    }
-    else if ( strcmp (region, "75") == 0 ) {
-      timezone = "Asia/Novosibirsk";
-    }
-    else if ( strcmp (region, "76") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "77") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "78") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "79") == 0 ) {
-      timezone = "Asia/Irkutsk";
-    }
-    else if ( strcmp (region, "80") == 0 ) {
-      timezone = "Asia/Yekaterinburg";
-    }
-    else if ( strcmp (region, "81") == 0 ) {
-      timezone = "Europe/Samara";
-    }
-    else if ( strcmp (region, "82") == 0 ) {
-      timezone = "Asia/Irkutsk";
-    }
-    else if ( strcmp (region, "83") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "84") == 0 ) {
-      timezone = "Europe/Volgograd";
-    }
-    else if ( strcmp (region, "85") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "86") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "87") == 0 ) {
-      timezone = "Asia/Novosibirsk";
-    }
-    else if ( strcmp (region, "88") == 0 ) {
-      timezone = "Europe/Moscow";
-    }
-    else if ( strcmp (region, "89") == 0 ) {
-      timezone = "Asia/Vladivostok";
-    }
-  }
-  else if ( strcmp (country, "RW") == 0 ) {
-    timezone = "Africa/Kigali";
-  }
-  else if ( strcmp (country, "SA") == 0 ) {
-    timezone = "Asia/Riyadh";
-  }
-  else if ( strcmp (country, "SB") == 0 ) {
-    timezone = "Pacific/Guadalcanal";
-  }
-  else if ( strcmp (country, "SC") == 0 ) {
-    timezone = "Indian/Mahe";
-  }
-  else if ( strcmp (country, "SD") == 0 ) {
-    timezone = "Africa/Khartoum";
-  }
-  else if ( strcmp (country, "SE") == 0 ) {
-    timezone = "Europe/Stockholm";
-  }
-  else if ( strcmp (country, "SG") == 0 ) {
-    timezone = "Asia/Singapore";
-  }
-  else if ( strcmp (country, "SH") == 0 ) {
-    timezone = "Atlantic/St_Helena";
-  }
-  else if ( strcmp (country, "SI") == 0 ) {
-    timezone = "Europe/Ljubljana";
-  }
-  else if ( strcmp (country, "SJ") == 0 ) {
-    timezone = "Arctic/Longyearbyen";
-  }
-  else if ( strcmp (country, "SK") == 0 ) {
-    timezone = "Europe/Bratislava";
-  }
-  else if ( strcmp (country, "SL") == 0 ) {
-    timezone = "Africa/Freetown";
-  }
-  else if ( strcmp (country, "SM") == 0 ) {
-    timezone = "Europe/San_Marino";
-  }
-  else if ( strcmp (country, "SN") == 0 ) {
-    timezone = "Africa/Dakar";
-  }
-  else if ( strcmp (country, "SO") == 0 ) {
-    timezone = "Africa/Mogadishu";
-  }
-  else if ( strcmp (country, "SR") == 0 ) {
-    timezone = "America/Paramaribo";
-  }
-  else if ( strcmp (country, "ST") == 0 ) {
-    timezone = "Africa/Sao_Tome";
-  }
-  else if ( strcmp (country, "SV") == 0 ) {
-    timezone = "America/El_Salvador";
-  }
-  else if ( strcmp (country, "SX") == 0 ) {
-    timezone = "America/Curacao";
-  }
-  else if ( strcmp (country, "SY") == 0 ) {
-    timezone = "Asia/Damascus";
-  }
-  else if ( strcmp (country, "SZ") == 0 ) {
-    timezone = "Africa/Mbabane";
-  }
-  else if ( strcmp (country, "TC") == 0 ) {
-    timezone = "America/Grand_Turk";
-  }
-  else if ( strcmp (country, "TD") == 0 ) {
-    timezone = "Africa/Ndjamena";
-  }
-  else if ( strcmp (country, "TF") == 0 ) {
-    timezone = "Indian/Kerguelen";
-  }
-  else if ( strcmp (country, "TG") == 0 ) {
-    timezone = "Africa/Lome";
-  }
-  else if ( strcmp (country, "TH") == 0 ) {
-    timezone = "Asia/Bangkok";
-  }
-  else if ( strcmp (country, "TJ") == 0 ) {
-    timezone = "Asia/Dushanbe";
-  }
-  else if ( strcmp (country, "TK") == 0 ) {
-    timezone = "Pacific/Fakaofo";
-  }
-  else if ( strcmp (country, "TL") == 0 ) {
-    timezone = "Asia/Dili";
-  }
-  else if ( strcmp (country, "TM") == 0 ) {
-    timezone = "Asia/Ashgabat";
-  }
-  else if ( strcmp (country, "TN") == 0 ) {
-    timezone = "Africa/Tunis";
-  }
-  else if ( strcmp (country, "TO") == 0 ) {
-    timezone = "Pacific/Tongatapu";
-  }
-  else if ( strcmp (country, "TR") == 0 ) {
-    timezone = "Asia/Istanbul";
-  }
-  else if ( strcmp (country, "TT") == 0 ) {
-    timezone = "America/Port_of_Spain";
-  }
-  else if ( strcmp (country, "TV") == 0 ) {
-    timezone = "Pacific/Funafuti";
-  }
-  else if ( strcmp (country, "TW") == 0 ) {
-    timezone = "Asia/Taipei";
-  }
-  else if ( strcmp (country, "TZ") == 0 ) {
-    timezone = "Africa/Dar_es_Salaam";
-  }
-  else if ( strcmp (country, "UA") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Europe/Kiev";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "Europe/Kiev";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Europe/Uzhgorod";
-    }
-    else if ( strcmp (region, "04") == 0 ) {
-      timezone = "Europe/Zaporozhye";
-    }
-    else if ( strcmp (region, "05") == 0 ) {
-      timezone = "Europe/Zaporozhye";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Europe/Uzhgorod";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Europe/Zaporozhye";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Europe/Simferopol";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "Europe/Kiev";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "Europe/Zaporozhye";
-    }
-    else if ( strcmp (region, "11") == 0 ) {
-      timezone = "Europe/Simferopol";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "Europe/Kiev";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "Europe/Zaporozhye";
-    }
-    else if ( strcmp (region, "15") == 0 ) {
-      timezone = "Europe/Uzhgorod";
-    }
-    else if ( strcmp (region, "16") == 0 ) {
-      timezone = "Europe/Zaporozhye";
-    }
-    else if ( strcmp (region, "17") == 0 ) {
-      timezone = "Europe/Simferopol";
-    }
-    else if ( strcmp (region, "18") == 0 ) {
-      timezone = "Europe/Zaporozhye";
-    }
-    else if ( strcmp (region, "19") == 0 ) {
-      timezone = "Europe/Kiev";
-    }
-    else if ( strcmp (region, "20") == 0 ) {
-      timezone = "Europe/Simferopol";
-    }
-    else if ( strcmp (region, "21") == 0 ) {
-      timezone = "Europe/Kiev";
-    }
-    else if ( strcmp (region, "22") == 0 ) {
-      timezone = "Europe/Uzhgorod";
-    }
-    else if ( strcmp (region, "23") == 0 ) {
-      timezone = "Europe/Kiev";
-    }
-    else if ( strcmp (region, "24") == 0 ) {
-      timezone = "Europe/Uzhgorod";
-    }
-    else if ( strcmp (region, "25") == 0 ) {
-      timezone = "Europe/Uzhgorod";
-    }
-    else if ( strcmp (region, "26") == 0 ) {
-      timezone = "Europe/Zaporozhye";
-    }
-    else if ( strcmp (region, "27") == 0 ) {
-      timezone = "Europe/Kiev";
-    }
-  }
-  else if ( strcmp (country, "UG") == 0 ) {
-    timezone = "Africa/Kampala";
-  }
-  else if ( strcmp (country, "US") == 0 ) {
-    if ( strcmp (region, "AK") == 0 ) {
-      timezone = "America/Anchorage";
-    }
-    else if ( strcmp (region, "AL") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "AR") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "AZ") == 0 ) {
-      timezone = "America/Phoenix";
-    }
-    else if ( strcmp (region, "CA") == 0 ) {
-      timezone = "America/Los_Angeles";
-    }
-    else if ( strcmp (region, "CO") == 0 ) {
-      timezone = "America/Denver";
-    }
-    else if ( strcmp (region, "CT") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "DC") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "DE") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "FL") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "GA") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "HI") == 0 ) {
-      timezone = "Pacific/Honolulu";
-    }
-    else if ( strcmp (region, "IA") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "ID") == 0 ) {
-      timezone = "America/Denver";
-    }
-    else if ( strcmp (region, "IL") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "IN") == 0 ) {
-      timezone = "America/Indianapolis";
-    }
-    else if ( strcmp (region, "KS") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "KY") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "LA") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "MA") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "MD") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "ME") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "MI") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "MN") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "MO") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "MS") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "MT") == 0 ) {
-      timezone = "America/Denver";
-    }
-    else if ( strcmp (region, "NC") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "ND") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "NE") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "NH") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "NJ") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "NM") == 0 ) {
-      timezone = "America/Denver";
-    }
-    else if ( strcmp (region, "NV") == 0 ) {
-      timezone = "America/Los_Angeles";
-    }
-    else if ( strcmp (region, "NY") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "OH") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "OK") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "OR") == 0 ) {
-      timezone = "America/Los_Angeles";
-    }
-    else if ( strcmp (region, "PA") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "RI") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "SC") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "SD") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "TN") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "TX") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "UT") == 0 ) {
-      timezone = "America/Denver";
-    }
-    else if ( strcmp (region, "VA") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "VT") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "WA") == 0 ) {
-      timezone = "America/Los_Angeles";
-    }
-    else if ( strcmp (region, "WI") == 0 ) {
-      timezone = "America/Chicago";
-    }
-    else if ( strcmp (region, "WV") == 0 ) {
-      timezone = "America/New_York";
-    }
-    else if ( strcmp (region, "WY") == 0 ) {
-      timezone = "America/Denver";
-    }
-  }
-  else if ( strcmp (country, "UY") == 0 ) {
-    timezone = "America/Montevideo";
-  }
-  else if ( strcmp (country, "UZ") == 0 ) {
-    if ( strcmp (region, "01") == 0 ) {
-      timezone = "Asia/Tashkent";
-    }
-    else if ( strcmp (region, "02") == 0 ) {
-      timezone = "Asia/Samarkand";
-    }
-    else if ( strcmp (region, "03") == 0 ) {
-      timezone = "Asia/Tashkent";
-    }
-    else if ( strcmp (region, "06") == 0 ) {
-      timezone = "Asia/Tashkent";
-    }
-    else if ( strcmp (region, "07") == 0 ) {
-      timezone = "Asia/Samarkand";
-    }
-    else if ( strcmp (region, "08") == 0 ) {
-      timezone = "Asia/Samarkand";
-    }
-    else if ( strcmp (region, "09") == 0 ) {
-      timezone = "Asia/Samarkand";
-    }
-    else if ( strcmp (region, "10") == 0 ) {
-      timezone = "Asia/Samarkand";
-    }
-    else if ( strcmp (region, "12") == 0 ) {
-      timezone = "Asia/Samarkand";
-    }
-    else if ( strcmp (region, "13") == 0 ) {
-      timezone = "Asia/Tashkent";
-    }
-    else if ( strcmp (region, "14") == 0 ) {
-      timezone = "Asia/Tashkent";
-    }
-  }
-  else if ( strcmp (country, "VA") == 0 ) {
-    timezone = "Europe/Vatican";
-  }
-  else if ( strcmp (country, "VC") == 0 ) {
-    timezone = "America/St_Vincent";
-  }
-  else if ( strcmp (country, "VE") == 0 ) {
-    timezone = "America/Caracas";
-  }
-  else if ( strcmp (country, "VG") == 0 ) {
-    timezone = "America/Tortola";
-  }
-  else if ( strcmp (country, "VI") == 0 ) {
-    timezone = "America/St_Thomas";
-  }
-  else if ( strcmp (country, "VN") == 0 ) {
-    timezone = "Asia/Phnom_Penh";
-  }
-  else if ( strcmp (country, "VU") == 0 ) {
-    timezone = "Pacific/Efate";
-  }
-  else if ( strcmp (country, "WF") == 0 ) {
-    timezone = "Pacific/Wallis";
-  }
-  else if ( strcmp (country, "WS") == 0 ) {
-    timezone = "Pacific/Samoa";
-  }
-  else if ( strcmp (country, "YE") == 0 ) {
-    timezone = "Asia/Aden";
-  }
-  else if ( strcmp (country, "YT") == 0 ) {
-    timezone = "Indian/Mayotte";
-  }
-  else if ( strcmp (country, "YU") == 0 ) {
-    timezone = "Europe/Belgrade";
-  }
-  else if ( strcmp (country, "ZA") == 0 ) {
-    timezone = "Africa/Johannesburg";
-  }
-  else if ( strcmp (country, "ZM") == 0 ) {
-    timezone = "Africa/Lusaka";
-  }
-  else if ( strcmp (country, "ZW") == 0 ) {
-    timezone = "Africa/Harare";
-  }
-  return timezone;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/types.h b/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/types.h
deleted file mode 100644
index 42c5ddd0..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/libGeoIP/types.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* types.h - some common typedefs
- *	Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- *
- * This file is part of GNUPG.
- *
- * GNUPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GNUPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#ifndef G10_TYPES_H
-#define G10_TYPES_H
-
-#ifdef HAVE_INTTYPES_H
-/* For uint64_t */
-#include <inttypes.h>
-#endif
-
-/* The AC_CHECK_SIZEOF() in configure fails for some machines.
- * we provide some fallback values here */
-#if !SIZEOF_UNSIGNED_SHORT
-#undef SIZEOF_UNSIGNED_SHORT
-#define SIZEOF_UNSIGNED_SHORT 2
-#endif
-#if !SIZEOF_UNSIGNED_INT
-#undef SIZEOF_UNSIGNED_INT
-#define SIZEOF_UNSIGNED_INT 4
-#endif
-#if !SIZEOF_UNSIGNED_LONG
-#undef SIZEOF_UNSIGNED_LONG
-#define SIZEOF_UNSIGNED_LONG 4
-#endif
-
-
-#include <sys/types.h>
-
-#ifndef HAVE_BYTE_TYPEDEF
-#undef byte	    /* maybe there is a macro with this name */
-#ifndef __riscos__
-typedef unsigned char byte;
-#else 
-/* Norcroft treats char  = unsigned char  as legal assignment
-               but char* = unsigned char* as illegal assignment
-   and the same applies to the signed variants as well  */
-typedef char byte;
-#endif
-#define HAVE_BYTE_TYPEDEF
-#endif
-
-#ifndef HAVE_USHORT_TYPEDEF
-#undef ushort     /* maybe there is a macro with this name */
-typedef unsigned short ushort;
-#define HAVE_USHORT_TYPEDEF
-#endif
-
-#ifndef HAVE_ULONG_TYPEDEF
-#undef ulong	    /* maybe there is a macro with this name */
-typedef unsigned long ulong;
-#define HAVE_ULONG_TYPEDEF
-#endif
-
-#ifndef HAVE_U16_TYPEDEF
-#undef u16	    /* maybe there is a macro with this name */
-#if SIZEOF_UNSIGNED_INT == 2
-typedef unsigned int   u16;
-#elif SIZEOF_UNSIGNED_SHORT == 2
-typedef unsigned short u16;
-#else
-#error no typedef for u16
-#endif
-#define HAVE_U16_TYPEDEF
-#endif
-
-#ifndef HAVE_U32_TYPEDEF
-#undef u32	    /* maybe there is a macro with this name */
-#if SIZEOF_UNSIGNED_INT == 4
-typedef unsigned int u32;
-#elif SIZEOF_UNSIGNED_LONG == 4
-typedef unsigned long u32;
-#else
-#error no typedef for u32
-#endif
-#define HAVE_U32_TYPEDEF
-#endif
-
-/****************
- * Warning: Some systems segfault when this u64 typedef and
- * the dummy code in cipher/md.c is not available.  Examples are
- * Solaris and IRIX.
- */
-#ifndef HAVE_U64_TYPEDEF
-#undef u64	    /* maybe there is a macro with this name */
-#if SIZEOF_UINT64_T == 8
-typedef uint64_t u64;
-#define U64_C(c) (UINT64_C(c))
-#define HAVE_U64_TYPEDEF
-#elif SIZEOF_UNSIGNED_INT == 8
-typedef unsigned int u64;
-#define U64_C(c) (c ## U)
-#define HAVE_U64_TYPEDEF
-#elif SIZEOF_UNSIGNED_LONG == 8
-typedef unsigned long u64;
-#define U64_C(c) (c ## UL)
-#define HAVE_U64_TYPEDEF
-#elif SIZEOF_UNSIGNED_LONG_LONG == 8
-typedef unsigned long long u64;
-#define U64_C(c) (c ## ULL)
-#define HAVE_U64_TYPEDEF
-#endif
-#endif
-
-typedef union {
-    int a;
-    short b;
-    char c[1];
-    long d;
-#ifdef HAVE_U64_TYPEDEF
-    u64 e;
-#endif
-    float f;
-    double g;
-} PROPERLY_ALIGNED_TYPE;
-
-typedef struct string_list {
-    struct string_list *next;
-    unsigned int flags;
-    char d[1];
-} *STRLIST;
-
-#endif /*G10_TYPES_H*/
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/ltmain.sh b/Src/Plugins/DSP/sc_serv3/GeoIP/ltmain.sh
deleted file mode 100644
index 7ed280bc..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/ltmain.sh
+++ /dev/null
@@ -1,8413 +0,0 @@
-# Generated from ltmain.m4sh.
-
-# ltmain.sh (GNU libtool) 2.2.6b
-# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#     --config             show all configuration variables
-#     --debug              enable verbose shell tracing
-# -n, --dry-run            display commands without modifying any files
-#     --features           display basic configuration information and exit
-#     --mode=MODE          use operation mode MODE
-#     --preserve-dup-deps  don't remove duplicate dependency libraries
-#     --quiet, --silent    don't print informational messages
-#     --tag=TAG            use configuration variables from tag TAG
-# -v, --verbose            print informational messages (default)
-#     --version            print version information
-# -h, --help               print short or long help message
-#
-# MODE must be one of the following:
-#
-#       clean              remove files from the build directory
-#       compile            compile a source file into a libtool object
-#       execute            automatically set library path, then run a program
-#       finish             complete the installation of libtool libraries
-#       install            install libraries or executables
-#       link               create a library or an executable
-#       uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#       host-triplet:	$host
-#       shell:		$SHELL
-#       compiler:		$LTCC
-#       compiler flags:		$LTCFLAGS
-#       linker:		$LD (gnu? $with_gnu_ld)
-#       $progname:		(GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
-#       automake:		$automake_version
-#       autoconf:		$autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"
-TIMESTAMP=""
-package_revision=1.3017
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# NLS nuisances: We save the old values to restore during execute mode.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
-	fi"
-done
-
-$lt_unset CDPATH
-
-
-
-
-
-: ${CP="cp -f"}
-: ${ECHO="echo"}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SED="/bin/sed"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-# Generated shell functions inserted here.
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-# The name of this program:
-# In the unlikely event $progname began with a '-', it would play havoc with
-# func_echo (imagine progname=-n), so we prepend ./ in that case:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-case $progname in
-  -*) progname=./$progname ;;
-esac
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=:
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
-    $ECHO "$progname${mode+: }$mode: $*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
-
-    # bash bug again:
-    :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
-
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
-
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
-
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
-
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
-
-    $ECHO "X$my_tmpdir" | $Xsed
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
-
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    case $1 in
-      *[\\\`\"]*)
-	my_arg=`$ECHO "X$1" | $Xsed \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
-
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
-
-    func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $SED -n '/^# Usage:/,/# -h/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    $ECHO
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
-}
-
-# func_help
-# Echo long help message to standard output and exit.
-func_help ()
-{
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
-	p
-     }' < "$progpath"
-    exit $?
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    func_error "missing argument for $1"
-    exit_cmd=exit
-}
-
-exit_cmd=:
-
-
-
-
-
-# Check that we have a working $ECHO.
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell, and then maybe $ECHO will work.
-  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit $EXIT_SUCCESS
-fi
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-# $mode is unset
-nonopt=
-execute_dlfiles=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
-    $ECHO "host: $host"
-    if test "$build_libtool_libs" = yes; then
-      $ECHO "enable shared libraries"
-    else
-      $ECHO "disable shared libraries"
-    fi
-    if test "$build_old_libs" = yes; then
-      $ECHO "enable static libraries"
-    else
-      $ECHO "disable static libraries"
-    fi
-
-    exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-  # Global variable:
-  tagname="$1"
-
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
-
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
-    *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
-
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
-      else
-	func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
-}
-
-# Parse options once, thoroughly.  This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
-{
-
-  # Shorthand for --mode=foo, only valid as the first argument
-  case $1 in
-  clean|clea|cle|cl)
-    shift; set dummy --mode clean ${1+"$@"}; shift
-    ;;
-  compile|compil|compi|comp|com|co|c)
-    shift; set dummy --mode compile ${1+"$@"}; shift
-    ;;
-  execute|execut|execu|exec|exe|ex|e)
-    shift; set dummy --mode execute ${1+"$@"}; shift
-    ;;
-  finish|finis|fini|fin|fi|f)
-    shift; set dummy --mode finish ${1+"$@"}; shift
-    ;;
-  install|instal|insta|inst|ins|in|i)
-    shift; set dummy --mode install ${1+"$@"}; shift
-    ;;
-  link|lin|li|l)
-    shift; set dummy --mode link ${1+"$@"}; shift
-    ;;
-  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-    shift; set dummy --mode uninstall ${1+"$@"}; shift
-    ;;
-  esac
-
-  # Parse non-mode specific arguments:
-  while test "$#" -gt 0; do
-    opt="$1"
-    shift
-
-    case $opt in
-      --config)		func_config					;;
-
-      --debug)		preserve_args="$preserve_args $opt"
-			func_echo "enabling shell trace mode"
-			opt_debug='set -x'
-			$opt_debug
-			;;
-
-      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			execute_dlfiles="$execute_dlfiles $1"
-			shift
-			;;
-
-      --dry-run | -n)	opt_dry_run=:					;;
-      --features)       func_features					;;
-      --finish)		mode="finish"					;;
-
-      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			case $1 in
-			  # Valid mode arguments:
-			  clean)	;;
-			  compile)	;;
-			  execute)	;;
-			  finish)	;;
-			  install)	;;
-			  link)		;;
-			  relink)	;;
-			  uninstall)	;;
-
-			  # Catch anything else as an error
-			  *) func_error "invalid argument for $opt"
-			     exit_cmd=exit
-			     break
-			     ;;
-		        esac
-
-			mode="$1"
-			shift
-			;;
-
-      --preserve-dup-deps)
-			opt_duplicate_deps=:				;;
-
-      --quiet|--silent)	preserve_args="$preserve_args $opt"
-			opt_silent=:
-			;;
-
-      --verbose| -v)	preserve_args="$preserve_args $opt"
-			opt_silent=false
-			;;
-
-      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			preserve_args="$preserve_args $opt $1"
-			func_enable_tag "$1"	# tagname is set here
-			shift
-			;;
-
-      # Separate optargs to long options:
-      -dlopen=*|--mode=*|--tag=*)
-			func_opt_split "$opt"
-			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
-			shift
-			;;
-
-      -\?|-h)		func_usage					;;
-      --help)		opt_help=:					;;
-      --version)	func_version					;;
-
-      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
-
-      *)		nonopt="$opt"
-			break
-			;;
-    esac
-  done
-
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
-      ;;
-  esac
-
-  # Having warned about all mis-specified options, bail out if
-  # anything was wrong.
-  $exit_cmd $EXIT_FAILURE
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-    fi
-
-    exit $EXIT_MISMATCH
-  fi
-}
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-$opt_help || {
-  # Sanity checks first:
-  func_check_version_match
-
-  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-    func_fatal_configuration "not configured to build any kind of library"
-  fi
-
-  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
-
-
-  # Darwin sucks
-  eval std_shrext=\"$shrext_cmds\"
-
-
-  # Only execute mode is allowed to have -dlopen flags.
-  if test -n "$execute_dlfiles" && test "$mode" != execute; then
-    func_error "unrecognized option \`-dlopen'"
-    $ECHO "$help" 1>&2
-    exit $EXIT_FAILURE
-  fi
-
-  # Change the help message to a mode-specific one.
-  generic_help="$help"
-  help="Try \`$progname --help --mode=$mode' for more information."
-}
-
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-	for lalib_p_l in 1 2 3 4
-	do
-	    read lalib_p_line
-	    case "$lalib_p_line" in
-		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-	    esac
-	done
-	exec 0<&5 5<&-
-    fi
-    test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_ltwrapper_scriptname_result=""
-    if func_ltwrapper_executable_p "$1"; then
-	func_dirname_and_basename "$1" "" "."
-	func_stripname '' '.exe' "$func_basename_result"
-	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-    fi
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $opt_debug
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$save_ifs
-      eval cmd=\"$cmd\"
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $opt_debug
-    case $1 in
-    */* | *\\*)	. "$1" ;;
-    *)		. "./$1" ;;
-    esac
-}
-
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $opt_debug
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-        func_quote_for_eval "$arg"
-	CC_quoted="$CC_quoted $func_quote_for_eval_result"
-      done
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-	for z in $available_tags; do
-	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-	    CC_quoted=
-	    for arg in $CC; do
-	      # Double-quote args containing other shell metacharacters.
-	      func_quote_for_eval "$arg"
-	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
-	    done
-	    case "$@ " in
-	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
-	      # The compiler in the base compile command matches
-	      # the one in the tagged configuration.
-	      # Assume this is the tagged configuration we want.
-	      tagname=$z
-	      break
-	      ;;
-	    esac
-	  fi
-	done
-	# If $tagname still isn't set, then no tagged configuration
-	# was found and let the user know that the "--tag" command
-	# line option must be used.
-	if test -z "$tagname"; then
-	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
-#	else
-#	  func_verbose "using $tagname tagged configuration"
-	fi
-	;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
-    else
-      write_lobj=none
-    fi
-
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "${write_libobj}"
-    }
-}
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $opt_debug
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
-	arg_mode=normal
-	;;
-
-      target )
-	libobj="$arg"
-	arg_mode=normal
-	continue
-	;;
-
-      normal )
-	# Accept any command-line options.
-	case $arg in
-	-o)
-	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
-	  arg_mode=target
-	  continue
-	  ;;
-
-	-pie | -fpie | -fPIE)
-          pie_flag="$pie_flag $arg"
-	  continue
-	  ;;
-
-	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  later="$later $arg"
-	  continue
-	  ;;
-
-	-no-suppress)
-	  suppress_opt=no
-	  continue
-	  ;;
-
-	-Xcompiler)
-	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
-	  continue      #  The current "srcfile" will either be retained or
-	  ;;            #  replaced later.  I would guess that would be a bug.
-
-	-Wc,*)
-	  func_stripname '-Wc,' '' "$arg"
-	  args=$func_stripname_result
-	  lastarg=
-	  save_ifs="$IFS"; IFS=','
-	  for arg in $args; do
-	    IFS="$save_ifs"
-	    func_quote_for_eval "$arg"
-	    lastarg="$lastarg $func_quote_for_eval_result"
-	  done
-	  IFS="$save_ifs"
-	  func_stripname ' ' '' "$lastarg"
-	  lastarg=$func_stripname_result
-
-	  # Add the arguments to base_compile.
-	  base_compile="$base_compile $lastarg"
-	  continue
-	  ;;
-
-	*)
-	  # Accept the current argument as the source file.
-	  # The previous "srcfile" becomes the current argument.
-	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
-	  ;;
-	esac  #  case $arg
-	;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_quote_for_eval "$lastarg"
-      base_compile="$base_compile $func_quote_for_eval_result"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with \`-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-	func_basename "$srcfile"
-	libobj="$func_basename_result"
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	continue
-	;;
-
-      -static)
-	build_libtool_libs=no
-	build_old_libs=yes
-	continue
-	;;
-
-      -prefer-pic)
-	pic_mode=yes
-	continue
-	;;
-
-      -prefer-non-pic)
-	pic_mode=no
-	continue
-	;;
-      esac
-    done
-
-    func_quote_for_eval "$libobj"
-    test "X$libobj" != "X$func_quote_for_eval_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    elif test "$need_locks" = warn; then
-      if test -f "$lockfile"; then
-	$ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-      removelist="$removelist $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    removelist="$removelist $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    if test -n "$fix_srcfile_path"; then
-      eval srcfile=\"$fix_srcfile_path\"
-    fi
-    func_quote_for_eval "$srcfile"
-    qsrcfile=$func_quote_for_eval_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test "$pic_mode" != no; then
-	command="$base_compile $qsrcfile $pic_flag"
-      else
-	# Don't build PIC code
-	command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-	# Place PIC objects in $objdir
-	command="$command -o $lobj"
-      fi
-
-      func_show_eval_locale "$command"	\
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-	func_show_eval '$MV "$output_obj" "$lobj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
-	suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
-	# Don't build PIC code
-	command="$base_compile $qsrcfile$pie_flag"
-      else
-	command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test "$compiler_c_o" = yes; then
-	command="$command -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      command="$command$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-	func_show_eval '$MV "$output_obj" "$obj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
-	removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-test "$mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to building PIC objects only
-  -prefer-non-pic   try to building non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode \`$mode'"
-        ;;
-    esac
-
-    $ECHO
-    $ECHO "Try \`$progname --help' for more information about other modes."
-
-    exit $?
-}
-
-  # Now that we've collected a possible --mode arg, show help if necessary
-  $opt_help && func_mode_help
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $opt_debug
-    # The first argument is the command name.
-    cmd="$nonopt"
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $execute_dlfiles; do
-      test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
-
-	# Read the libtool library.
-	dlname=
-	library_names=
-	func_source "$file"
-
-	# Skip this library if it cannot be dlopened.
-	if test -z "$dlname"; then
-	  # Warn if it was a shared library.
-	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
-	  continue
-	fi
-
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-
-	if test -f "$dir/$objdir/$dlname"; then
-	  dir="$dir/$objdir"
-	else
-	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-	  fi
-	fi
-	;;
-
-      *.lo)
-	# Just add the directory containing the .lo file.
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-	;;
-
-      *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
-	continue
-	;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-	eval "$shlibpath_var=\"\$dir\""
-      else
-	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -*) ;;
-      *)
-	# Do a test to see if this is really a libtool program.
-	if func_ltwrapper_script_p "$file"; then
-	  func_source "$file"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	elif func_ltwrapper_executable_p "$file"; then
-	  func_ltwrapper_scriptname "$file"
-	  func_source "$func_ltwrapper_scriptname_result"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	fi
-	;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_quote_for_eval "$file"
-      args="$args $func_quote_for_eval_result"
-    done
-
-    if test "X$opt_dry_run" = Xfalse; then
-      if test -n "$shlibpath_var"; then
-	# Export the shlibpath_var.
-	eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-	eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-	      else
-		$lt_unset $lt_var
-	      fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	$ECHO "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $opt_debug
-    libdirs="$nonopt"
-    admincmds=
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for dir
-      do
-	libdirs="$libdirs $dir"
-      done
-
-      for libdir in $libdirs; do
-	if test -n "$finish_cmds"; then
-	  # Do each command in the finish commands.
-	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-	fi
-	if test -n "$finish_eval"; then
-	  # Do the single finish_eval.
-	  eval cmds=\"$finish_eval\"
-	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
-       $cmds"
-	fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
-
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    $ECHO "Libraries have been installed in:"
-    for libdir in $libdirs; do
-      $ECHO "   $libdir"
-    done
-    $ECHO
-    $ECHO "If you ever happen to want to link against installed libraries"
-    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
-    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
-    $ECHO "flag during linking and do at least one of the following:"
-    if test -n "$shlibpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-      $ECHO "     during execution"
-    fi
-    if test -n "$runpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
-      $ECHO "     during linking"
-    fi
-    if test -n "$hardcode_libdir_flag_spec"; then
-      libdir=LIBDIR
-      eval flag=\"$hardcode_libdir_flag_spec\"
-
-      $ECHO "   - use the \`$flag' linker flag"
-    fi
-    if test -n "$admincmds"; then
-      $ECHO "   - have your system administrator run these commands:$admincmds"
-    fi
-    if test -f /etc/ld.so.conf; then
-      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-    fi
-    $ECHO
-
-    $ECHO "See any operating system documentation about shared libraries for"
-    case $host in
-      solaris2.[6789]|solaris2.1[0-9])
-        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-	$ECHO "pages."
-	;;
-      *)
-        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
-        ;;
-    esac
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    exit $EXIT_SUCCESS
-}
-
-test "$mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $opt_debug
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-       # Allow the use of GNU shtool's install command.
-       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
-      # Aesthetically quote it.
-      func_quote_for_eval "$nonopt"
-      install_prog="$func_quote_for_eval_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_for_eval "$arg"
-    install_prog="$install_prog$func_quote_for_eval_result"
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    for arg
-    do
-      if test -n "$dest"; then
-	files="$files $dest"
-	dest=$arg
-	continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f)
-	case " $install_prog " in
-	*[\\\ /]cp\ *) ;;
-	*) prev=$arg ;;
-	esac
-	;;
-      -g | -m | -o)
-	prev=$arg
-	;;
-      -s)
-	stripme=" -s"
-	continue
-	;;
-      -*)
-	;;
-      *)
-	# If the previous option needed an argument, then skip it.
-	if test -n "$prev"; then
-	  prev=
-	else
-	  dest=$arg
-	  continue
-	fi
-	;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      install_prog="$install_prog $func_quote_for_eval_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-	func_fatal_help "no file or destination specified"
-      else
-	func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-	case $file in
-	*.lo) ;;
-	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
-	  ;;
-	esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-	# Do the static libraries later.
-	staticlibs="$staticlibs $file"
-	;;
-
-      *.la)
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
-
-	library_names=
-	old_library=
-	relink_command=
-	func_source "$file"
-
-	# Add the libdir to current_libdirs if it is the destination.
-	if test "X$destdir" = "X$libdir"; then
-	  case "$current_libdirs " in
-	  *" $libdir "*) ;;
-	  *) current_libdirs="$current_libdirs $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) future_libdirs="$future_libdirs $libdir" ;;
-	  esac
-	fi
-
-	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	dir="$dir$objdir"
-
-	if test -n "$relink_command"; then
-	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
-
-	  # Don't allow the user to place us outside of our expected
-	  # location b/c this prevents finding dependent libraries that
-	  # are installed to the same prefix.
-	  # At present, this check doesn't affect windows .dll's that
-	  # are installed into $libdir/../bin (currently, that works fine)
-	  # but it's something to keep an eye on.
-	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
-	  if test -n "$inst_prefix_dir"; then
-	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-	  else
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
-	  fi
-
-	  func_warning "relinking \`$file'"
-	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
-	fi
-
-	# See the names of the shared library.
-	set dummy $library_names; shift
-	if test -n "$1"; then
-	  realname="$1"
-	  shift
-
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
-
-	  # Install the shared library and build the symlinks.
-	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
-	      'exit $?'
-	  tstripme="$stripme"
-	  case $host_os in
-	  cygwin* | mingw* | pw32* | cegcc*)
-	    case $realname in
-	    *.dll.a)
-	      tstripme=""
-	      ;;
-	    esac
-	    ;;
-	  esac
-	  if test -n "$tstripme" && test -n "$striplib"; then
-	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
-	  fi
-
-	  if test "$#" -gt 0; then
-	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
-	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
-	    # so we also need to try rm && ln -s.
-	    for linkname
-	    do
-	      test "$linkname" != "$realname" \
-		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-	    done
-	  fi
-
-	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
-	  func_execute_cmds "$postinstall_cmds" 'exit $?'
-	fi
-
-	# Install the pseudo-library for information purposes.
-	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
-	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-	# Maybe install the static library, too.
-	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
-	;;
-
-      *.lo)
-	# Install (i.e. copy) a libtool object.
-
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# Deduce the name of the destination old-style object file.
-	case $destfile in
-	*.lo)
-	  func_lo2o "$destfile"
-	  staticdest=$func_lo2o_result
-	  ;;
-	*.$objext)
-	  staticdest="$destfile"
-	  destfile=
-	  ;;
-	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
-	  ;;
-	esac
-
-	# Install the libtool object if requested.
-	test -n "$destfile" && \
-	  func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
-	  # Deduce the name of the old-style object file.
-	  func_lo2o "$file"
-	  staticobj=$func_lo2o_result
-	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-	fi
-	exit $EXIT_SUCCESS
-	;;
-
-      *)
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# If the file is missing, and there is a .exe on the end, strip it
-	# because it is most likely a libtool script we actually want to
-	# install
-	stripped_ext=""
-	case $file in
-	  *.exe)
-	    if test ! -f "$file"; then
-	      func_stripname '' '.exe' "$file"
-	      file=$func_stripname_result
-	      stripped_ext=".exe"
-	    fi
-	    ;;
-	esac
-
-	# Do a test to see if this is really a libtool program.
-	case $host in
-	*cygwin* | *mingw*)
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      wrapper=$func_ltwrapper_scriptname_result
-	    else
-	      func_stripname '' '.exe' "$file"
-	      wrapper=$func_stripname_result
-	    fi
-	    ;;
-	*)
-	    wrapper=$file
-	    ;;
-	esac
-	if func_ltwrapper_script_p "$wrapper"; then
-	  notinst_deplibs=
-	  relink_command=
-
-	  func_source "$wrapper"
-
-	  # Check the variables that should have been set.
-	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
-	  finalize=yes
-	  for lib in $notinst_deplibs; do
-	    # Check to see that each library is installed.
-	    libdir=
-	    if test -f "$lib"; then
-	      func_source "$lib"
-	    fi
-	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
-	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
-	    fi
-	  done
-
-	  relink_command=
-	  func_source "$wrapper"
-
-	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
-	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
-	        tmpdir=`func_mktempdir`
-		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
-	        # Replace the output file specification.
-	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-
-	        $opt_silent || {
-	          func_quote_for_expand "$relink_command"
-		  eval "func_echo $func_quote_for_expand_result"
-	        }
-	        if eval "$relink_command"; then :
-	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
-		  $opt_dry_run || ${RM}r "$tmpdir"
-		  continue
-	        fi
-	        file="$outputname"
-	      else
-	        func_warning "cannot relink \`$file'"
-	      fi
-	    }
-	  else
-	    # Install the binary that we compiled earlier.
-	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
-	  fi
-	fi
-
-	# remove .exe since cygwin /usr/bin/install will append another
-	# one anyway
-	case $install_prog,$host in
-	*/usr/bin/install*,*cygwin*)
-	  case $file:$destfile in
-	  *.exe:*.exe)
-	    # this is ok
-	    ;;
-	  *.exe:*)
-	    destfile=$destfile.exe
-	    ;;
-	  *:*.exe)
-	    func_stripname '' '.exe' "$destfile"
-	    destfile=$func_stripname_result
-	    ;;
-	  esac
-	  ;;
-	esac
-	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-	$opt_dry_run || if test -n "$outputname"; then
-	  ${RM}r "$tmpdir"
-	fi
-	;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name="$func_basename_result"
-
-      # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
-      else
-	func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
-
-	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-	# Parse the name list into a source file.
-	func_verbose "creating $output_objdir/$my_dlsyms"
-
-	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
-
-	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-	  # Add our own program objects to the symbol list.
-	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	  for progfile in $progfiles; do
-	    func_verbose "extracting global C symbols from \`$progfile'"
-	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
-	  done
-
-	  if test -n "$exclude_expsyms"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  if test -n "$export_symbols_regex"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  # Prepare the list of exported symbols
-	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
-	    $opt_dry_run || {
-	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-	      case $host in
-	      *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-	        ;;
-	      esac
-	    }
-	  else
-	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	      case $host in
-	        *cygwin | *mingw* | *cegcc* )
-	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-	          ;;
-	      esac
-	    }
-	  fi
-	fi
-
-	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
-	  func_basename "$dlprefile"
-	  name="$func_basename_result"
-	  $opt_dry_run || {
-	    eval '$ECHO ": $name " >> "$nlist"'
-	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	  }
-	done
-
-	$opt_dry_run || {
-	  # Make sure we have at least an empty file.
-	  test -f "$nlist" || : > "$nlist"
-
-	  if test -n "$exclude_expsyms"; then
-	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-	    $MV "$nlist"T "$nlist"
-	  fi
-
-	  # Try sorting and uniquifying the output.
-	  if $GREP -v "^: " < "$nlist" |
-	      if sort -k 3 </dev/null >/dev/null 2>&1; then
-		sort -k 3
-	      else
-		sort +2
-	      fi |
-	      uniq > "$nlist"S; then
-	    :
-	  else
-	    $GREP -v "^: " < "$nlist" > "$nlist"S
-	  fi
-
-	  if test -f "$nlist"S; then
-	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-	  else
-	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
-	  fi
-
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-"
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc* )
-	    $ECHO >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
-   runtime relocations are performed -- see ld's documentation
-   on pseudo-relocs.  */"
-	    lt_dlsym_const= ;;
-	  *osf5*)
-	    echo >> "$output_objdir/$my_dlsyms" "\
-/* This system does not cope well with relocations in const data */"
-	    lt_dlsym_const= ;;
-	  *)
-	    lt_dlsym_const=const ;;
-	  esac
-
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-extern $lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-$lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
-
-	  case $need_lib_prefix in
-	  no)
-	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  *)
-	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  esac
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-	} # !$opt_dry_run
-
-	pic_flag_for_symtable=
-	case "$compile_command " in
-	*" -static "*) ;;
-	*)
-	  case $host in
-	  # compiling the symbol table file with pic_flag works around
-	  # a FreeBSD bug that causes programs to crash when -lm is
-	  # linked before any other PIC object.  But we must not use
-	  # pic_flag when linking with -static.  The problem exists in
-	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-	  *-*-hpux*)
-	    pic_flag_for_symtable=" $pic_flag"  ;;
-	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
-	    ;;
-	  esac
-	  ;;
-	esac
-	symtab_cflags=
-	for arg in $LTCFLAGS; do
-	  case $arg in
-	  -pie | -fpie | -fPIE) ;;
-	  *) symtab_cflags="$symtab_cflags $arg" ;;
-	  esac
-	done
-
-	# Now compile the dynamic symbol file.
-	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
-	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
-	case $host in
-	*cygwin* | *mingw* | *cegcc* )
-	  if test -f "$output_objdir/$my_outputname.def"; then
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	  else
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  fi
-	  ;;
-	*)
-	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  ;;
-	esac
-	;;
-      *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
-	;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-func_win32_libid ()
-{
-  $opt_debug
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
-      win32_nmres=`eval $NM -f posix -A $1 |
-	$SED -n -e '
-	    1,100{
-		/ I /{
-		    s,.*,import,
-		    p
-		    q
-		}
-	    }'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $opt_debug
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-	*) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-	*" $my_xlib_u "*)
-	  func_arith $extracted_serial + 1
-	  extracted_serial=$func_arith_result
-	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
-	*) break ;;
-	esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-	func_verbose "Extracting $my_xabs"
-	# Do not bother doing anything if just a dry run
-	$opt_dry_run || {
-	  darwin_orig_dir=`pwd`
-	  cd $my_xdir || exit $?
-	  darwin_archive=$my_xabs
-	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
-	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-	  if test -n "$darwin_arches"; then
-	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-	    darwin_arch=
-	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-	    done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
-	    darwin_file=
-	    darwin_files=
-	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
-	      $LIPO -create -output "$darwin_file" $darwin_files
-	    done # $darwin_filelist
-	    $RM -rf unfat-$$
-	    cd "$darwin_orig_dir"
-	  else
-	    cd $darwin_orig_dir
-	    func_extract_an_archive "$my_xdir" "$my_xabs"
-	  fi # $darwin_arches
-	} # !$opt_dry_run
-	;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-	;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-    done
-
-    func_extract_archives_result="$my_oldobjs"
-}
-
-
-
-# func_emit_wrapper_part1 [arg=no]
-#
-# Emit the first part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part1 ()
-{
-	func_emit_wrapper_part1_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part1_arg1=$1
-	fi
-
-	$ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='${SED} -e 1s/^X//'
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    ECHO=\"$qecho\"
-    file=\"\$0\"
-    # Make sure echo works.
-    if test \"X\$1\" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
-      # Yippee, \$ECHO works!
-      :
-    else
-      # Restart under the correct shell, and then maybe \$ECHO will work.
-      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-    fi
-  fi\
-"
-	$ECHO "\
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
-  done
-"
-}
-# end: func_emit_wrapper_part1
-
-# func_emit_wrapper_part2 [arg=no]
-#
-# Emit the second part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part2 ()
-{
-	func_emit_wrapper_part2_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part2_arg1=$1
-	fi
-
-	$ECHO "\
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-	if test "$fast_install" = yes; then
-	  $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-	  $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-	$ECHO \"\$relink_command_output\" >&2
-	$RM \"\$progdir/\$file\"
-	exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-	else
-	  $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-	fi
-
-	$ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-	  $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-	fi
-
-	# fixup the dll searchpath if we need to.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
-	$ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-"
-	case $host in
-	# Backslashes separate directories on plain windows
-	*-*-mingw | *-*-os2* | *-cegcc*)
-	  $ECHO "\
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-	  ;;
-
-	*)
-	  $ECHO "\
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-	  ;;
-	esac
-	$ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-# end: func_emit_wrapper_part2
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-	func_emit_wrapper_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_arg1=$1
-	fi
-
-	# split this up so that func_emit_cwrapperexe_src
-	# can call each part independently.
-	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
-	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
-}
-
-
-# func_to_host_path arg
-#
-# Convert paths to host format when used with build tools.
-# Intended for use with "native" mingw (where libtool itself
-# is running under the msys shell), or in the following cross-
-# build environments:
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-# where wine is equipped with the `winepath' executable.
-# In the native mingw case, the (msys) shell automatically
-# converts paths for any non-msys applications it launches,
-# but that facility isn't available from inside the cwrapper.
-# Similar accommodations are necessary for $host mingw and
-# $build cygwin.  Calling this function does no harm for other
-# $host/$build combinations not listed above.
-#
-# ARG is the path (on $build) that should be converted to
-# the proper representation for $host. The result is stored
-# in $func_to_host_path_result.
-func_to_host_path ()
-{
-  func_to_host_path_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        case $build in
-          *mingw* ) # actually, msys
-            # awkward: cmd appends spaces to result
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_path_tmp1=`cygpath -w "$1"`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # Unfortunately, winepath does not exit with a non-zero
-            # error code, so we are forced to check the contents of
-            # stdout. On the other hand, if the command is not
-            # found, the shell will set an exit code of 127 and print
-            # *an error message* to stdout. So we must check for both
-            # error code of zero AND non-empty stdout, which explains
-            # the odd construction:
-            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
-            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
-              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-                $SED -e "$lt_sed_naive_backslashify"`
-            else
-              # Allow warning below.
-              func_to_host_path_result=""
-            fi
-            ;;
-        esac
-        if test -z "$func_to_host_path_result" ; then
-          func_error "Could not determine host path corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback:
-          func_to_host_path_result="$1"
-        fi
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_path
-
-# func_to_host_pathlist arg
-#
-# Convert pathlists to host format when used with build tools.
-# See func_to_host_path(), above. This function supports the
-# following $build/$host combinations (but does no harm for
-# combinations not listed here):
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-#
-# Path separators are also converted from $build format to
-# $host format. If ARG begins or ends with a path separator
-# character, it is preserved (but converted to $host format)
-# on output.
-#
-# ARG is a pathlist (on $build) that should be converted to
-# the proper representation on $host. The result is stored
-# in $func_to_host_pathlist_result.
-func_to_host_pathlist ()
-{
-  func_to_host_pathlist_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        # Remove leading and trailing path separator characters from
-        # ARG. msys behavior is inconsistent here, cygpath turns them
-        # into '.;' and ';.', and winepath ignores them completely.
-        func_to_host_pathlist_tmp2="$1"
-        # Once set for this call, this variable should not be
-        # reassigned. It is used in tha fallback case.
-        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
-          $SED -e 's|^:*||' -e 's|:*$||'`
-        case $build in
-          *mingw* ) # Actually, msys.
-            # Awkward: cmd appends spaces to result.
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # unfortunately, winepath doesn't convert pathlists
-            func_to_host_pathlist_result=""
-            func_to_host_pathlist_oldIFS=$IFS
-            IFS=:
-            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
-              IFS=$func_to_host_pathlist_oldIFS
-              if test -n "$func_to_host_pathlist_f" ; then
-                func_to_host_path "$func_to_host_pathlist_f"
-                if test -n "$func_to_host_path_result" ; then
-                  if test -z "$func_to_host_pathlist_result" ; then
-                    func_to_host_pathlist_result="$func_to_host_path_result"
-                  else
-                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
-                  fi
-                fi
-              fi
-              IFS=:
-            done
-            IFS=$func_to_host_pathlist_oldIFS
-            ;;
-        esac
-        if test -z "$func_to_host_pathlist_result" ; then
-          func_error "Could not determine the host path(s) corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback. This may break if $1 contains DOS-style drive
-          # specifications. The fix is not to complicate the expression
-          # below, but for the user to provide a working wine installation
-          # with winepath so that path translation in the cross-to-mingw
-          # case works properly.
-          lt_replace_pathsep_nix_to_dos="s|:|;|g"
-          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
-            $SED -e "$lt_replace_pathsep_nix_to_dos"`
-        fi
-        # Now, add the leading and trailing path separators back
-        case "$1" in
-          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
-            ;;
-        esac
-        case "$1" in
-          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
-            ;;
-        esac
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_pathlist
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-	cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-
-   Currently, it simply execs the wrapper *script* "$SHELL $output",
-   but could eventually absorb all of the scripts functionality and
-   exec $objdir/$outputname directly.
-*/
-EOF
-	    cat <<"EOF"
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-# define setmode _setmode
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-#  define HAVE_SETENV
-#  ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-#  endif
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-#ifdef _MSC_VER
-# define S_IXUSR _S_IEXEC
-# define stat _stat
-# ifndef _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifdef __CYGWIN__
-# define FOPEN_WB "wb"
-#endif
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#undef LTWRAPPER_DEBUGPRINTF
-#if defined DEBUGWRAPPER
-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
-static void
-ltwrapper_debugprintf (const char *fmt, ...)
-{
-    va_list args;
-    va_start (args, fmt);
-    (void) vfprintf (stderr, fmt, args);
-    va_end (args);
-}
-#else
-# define LTWRAPPER_DEBUGPRINTF(args)
-#endif
-
-const char *program_name = NULL;
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_fatal (const char *message, ...);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_opt_process_env_set (const char *arg);
-void lt_opt_process_env_prepend (const char *arg);
-void lt_opt_process_env_append (const char *arg);
-int lt_split_name_value (const char *arg, char** name, char** value);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-
-static const char *script_text_part1 =
-EOF
-
-	    func_emit_wrapper_part1 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-	    cat <<EOF
-
-static const char *script_text_part2 =
-EOF
-	    func_emit_wrapper_part2 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-
-	    cat <<EOF
-const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_pathlist "$temp_rpath"
-	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test -n "$dllsearchpath"; then
-              func_to_host_pathlist "$dllsearchpath:"
-	      cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test "$fast_install" = yes; then
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-	    else
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-	    fi
-
-
-	    cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
-
-static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-
-static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
-static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
-  /* argument is putenv-style "foo=bar", value of foo is set to bar */
-
-static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
-static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
-  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
-
-static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
-static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
-  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  intptr_t rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
-
-  /* very simple arg parsing; don't want to rely on getopt */
-  for (i = 1; i < argc; i++)
-    {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
-	{
-EOF
-	    case "$host" in
-	      *mingw* | *cygwin* )
-		# make stdout use "unix" line endings
-		echo "          setmode(1,_O_BINARY);"
-		;;
-	      esac
-
-	    cat <<"EOF"
-	  printf ("%s", script_text_part1);
-	  printf ("%s", script_text_part2);
-	  return 0;
-	}
-    }
-
-  newargz = XMALLOC (char *, argc + 1);
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal ("Couldn't find %s", argv[0]);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
-			  tmp_pathspec));
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
-			  actual_cwrapper_path));
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
-			  target_name));
-EOF
-
-	    cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-	    cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-	    case $host_os in
-	      mingw*)
-	    cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-	*p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-	*p = '/';
-      }
-  }
-EOF
-	    ;;
-	    esac
-
-	    cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
-        {
-          if (argv[i][env_set_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_set_opt_len + 1;
-              lt_opt_process_env_set (p);
-            }
-          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_set (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_set_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
-        {
-          if (argv[i][env_prepend_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_prepend_opt_len + 1;
-              lt_opt_process_env_prepend (p);
-            }
-          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_prepend_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
-        {
-          if (argv[i][env_append_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_append_opt_len + 1;
-              lt_opt_process_env_append (p);
-            }
-          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_append (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_append_opt);
-          continue;
-        }
-      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal ("Unrecognized option in %s namespace: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
-  for (i = 0; i < newargc; i++)
-    {
-      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
-    }
-
-EOF
-
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
-      return 127;
-    }
-  return rval;
-EOF
-		;;
-	      *)
-		cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-		;;
-	    esac
-
-	    cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal ("Memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-			  string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char *concat_name;
-
-  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
-			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-	return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-	{
-	  concat_name = xstrdup (wrapper);
-	  if (check_executable (concat_name))
-	    return concat_name;
-	  XFREE (concat_name);
-	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-	has_slash = 1;
-	break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-	{
-	  for (p = path; *p; p = p_next)
-	    {
-	      const char *q;
-	      size_t p_len;
-	      for (q = p; *q; q++)
-		if (IS_PATH_SEPARATOR (*q))
-		  break;
-	      p_len = q - p;
-	      p_next = (*q == '\0' ? q : q + 1);
-	      if (p_len == 0)
-		{
-		  /* empty path: current directory */
-		  if (getcwd (tmp, LT_PATHMAX) == NULL)
-		    lt_fatal ("getcwd failed");
-		  tmp_len = strlen (tmp);
-		  concat_name =
-		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, tmp, tmp_len);
-		  concat_name[tmp_len] = '/';
-		  strcpy (concat_name + tmp_len + 1, wrapper);
-		}
-	      else
-		{
-		  concat_name =
-		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, p, p_len);
-		  concat_name[p_len] = '/';
-		  strcpy (concat_name + p_len + 1, wrapper);
-		}
-	      if (check_executable (concat_name))
-		return concat_name;
-	      XFREE (concat_name);
-	    }
-	}
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal ("getcwd failed");
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
-			      tmp_pathspec));
-      if (lstat (tmp_pathspec, &s) == 0)
-	{
-	  if (S_ISLNK (s.st_mode) != 0)
-	    {
-	      has_symlinks = 1;
-	      break;
-	    }
-
-	  /* search backwards for last DIR_SEPARATOR */
-	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    p--;
-	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    {
-	      /* no more DIR_SEPARATORS left */
-	      break;
-	    }
-	  *p = '\0';
-	}
-      else
-	{
-	  char *errstr = strerror (errno);
-	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
-	}
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal ("Could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (strcmp (str, pat) == 0)
-	*str = '\0';
-    }
-  return str;
-}
-
-static void
-lt_error_core (int exit_status, const char *mode,
-	       const char *message, va_list ap)
-{
-  fprintf (stderr, "%s: %s: ", program_name, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
-  va_end (ap);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    int len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-int
-lt_split_name_value (const char *arg, char** name, char** value)
-{
-  const char *p;
-  int len;
-  if (!arg || !*arg)
-    return 1;
-
-  p = strchr (arg, (int)'=');
-
-  if (!p)
-    return 1;
-
-  *value = xstrdup (++p);
-
-  len = strlen (arg) - strlen (*value);
-  *name = XMALLOC (char, len);
-  strncpy (*name, arg, len-1);
-  (*name)[len - 1] = '\0';
-
-  return 0;
-}
-
-void
-lt_opt_process_env_set (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
-    }
-
-  lt_setenv (name, value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_prepend (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 0);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_append (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 1);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[len-1] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $opt_debug
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=no
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module="${wl}-single_module"
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	break
-	;;
-      -all-static | -static | -static-libtool-libs)
-	case $arg in
-	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-	    func_warning "complete static linking is impossible in this configuration"
-	  fi
-	  if test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	-static)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=built
-	  ;;
-	-static-libtool-libs)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	esac
-	build_libtool_libs=no
-	build_old_libs=yes
-	break
-	;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg="$1"
-      shift
-      func_quote_for_eval "$arg"
-      qarg=$func_quote_for_eval_unquoted_result
-      func_append libtool_args " $func_quote_for_eval_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-	case $prev in
-	output)
-	  func_append compile_command " @OUTPUT@"
-	  func_append finalize_command " @OUTPUT@"
-	  ;;
-	esac
-
-	case $prev in
-	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
-	    # Add the symbol object into the linking commands.
-	    func_append compile_command " @SYMFILE@"
-	    func_append finalize_command " @SYMFILE@"
-	    preload=yes
-	  fi
-	  case $arg in
-	  *.la | *.lo) ;;  # We handle these cases below.
-	  force)
-	    if test "$dlself" = no; then
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  self)
-	    if test "$prev" = dlprefiles; then
-	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-	      dlself=yes
-	    else
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  *)
-	    if test "$prev" = dlfiles; then
-	      dlfiles="$dlfiles $arg"
-	    else
-	      dlprefiles="$dlprefiles $arg"
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  esac
-	  ;;
-	expsyms)
-	  export_symbols="$arg"
-	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
-	  prev=
-	  continue
-	  ;;
-	expsyms_regex)
-	  export_symbols_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	framework)
-	  case $host in
-	    *-*-darwin*)
-	      case "$deplibs " in
-		*" $qarg.ltframework "*) ;;
-		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
-		   ;;
-	      esac
-	      ;;
-	  esac
-	  prev=
-	  continue
-	  ;;
-	inst_prefix)
-	  inst_prefix_dir="$arg"
-	  prev=
-	  continue
-	  ;;
-	objectlist)
-	  if test -f "$arg"; then
-	    save_arg=$arg
-	    moreargs=
-	    for fil in `cat "$save_arg"`
-	    do
-#	      moreargs="$moreargs $fil"
-	      arg=$fil
-	      # A libtool-controlled object.
-
-	      # Check to see that this really is a libtool object.
-	      if func_lalib_unsafe_p "$arg"; then
-		pic_object=
-		non_pic_object=
-
-		# Read the .lo file
-		func_source "$arg"
-
-		if test -z "$pic_object" ||
-		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
-		fi
-
-		# Extract subdirectory from the argument.
-		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
-
-		if test "$pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
-
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      dlfiles="$dlfiles $pic_object"
-		      prev=
-		      continue
-		    else
-		      # If libtool objects are unsupported, then we need to preload.
-		      prev=dlprefiles
-		    fi
-		  fi
-
-		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
-		    # Preload the old-style object.
-		    dlprefiles="$dlprefiles $pic_object"
-		    prev=
-		  fi
-
-		  # A PIC object.
-		  func_append libobjs " $pic_object"
-		  arg="$pic_object"
-		fi
-
-		# Non-PIC object.
-		if test "$non_pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
-
-		  # A standard non-PIC object
-		  func_append non_pic_objects " $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
-		  fi
-		else
-		  # If the PIC object exists, use it instead.
-		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-		fi
-	      else
-		# Only an error if not doing a dry-run.
-		if $opt_dry_run; then
-		  # Extract subdirectory from the argument.
-		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
-
-		  func_lo2o "$arg"
-		  pic_object=$xdir$objdir/$func_lo2o_result
-		  non_pic_object=$xdir$func_lo2o_result
-		  func_append libobjs " $pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
-		fi
-	      fi
-	    done
-	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
-	  fi
-	  arg=$save_arg
-	  prev=
-	  continue
-	  ;;
-	precious_regex)
-	  precious_files_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	release)
-	  release="-$arg"
-	  prev=
-	  continue
-	  ;;
-	rpath | xrpath)
-	  # We need an absolute path.
-	  case $arg in
-	  [\\/]* | [A-Za-z]:[\\/]*) ;;
-	  *)
-	    func_fatal_error "only absolute run-paths are allowed"
-	    ;;
-	  esac
-	  if test "$prev" = rpath; then
-	    case "$rpath " in
-	    *" $arg "*) ;;
-	    *) rpath="$rpath $arg" ;;
-	    esac
-	  else
-	    case "$xrpath " in
-	    *" $arg "*) ;;
-	    *) xrpath="$xrpath $arg" ;;
-	    esac
-	  fi
-	  prev=
-	  continue
-	  ;;
-	shrext)
-	  shrext_cmds="$arg"
-	  prev=
-	  continue
-	  ;;
-	weak)
-	  weak_libs="$weak_libs $arg"
-	  prev=
-	  continue
-	  ;;
-	xcclinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xcompiler)
-	  compiler_flags="$compiler_flags $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xlinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $wl$qarg"
-	  prev=
-	  func_append compile_command " $wl$qarg"
-	  func_append finalize_command " $wl$qarg"
-	  continue
-	  ;;
-	*)
-	  eval "$prev=\"\$arg\""
-	  prev=
-	  continue
-	  ;;
-	esac
-      fi # test -n "$prev"
-
-      prevarg="$arg"
-
-      case $arg in
-      -all-static)
-	if test -n "$link_static_flag"; then
-	  # See comment for -static flag below, for more details.
-	  func_append compile_command " $link_static_flag"
-	  func_append finalize_command " $link_static_flag"
-	fi
-	continue
-	;;
-
-      -allow-undefined)
-	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
-	;;
-
-      -avoid-version)
-	avoid_version=yes
-	continue
-	;;
-
-      -dlopen)
-	prev=dlfiles
-	continue
-	;;
-
-      -dlpreopen)
-	prev=dlprefiles
-	continue
-	;;
-
-      -export-dynamic)
-	export_dynamic=yes
-	continue
-	;;
-
-      -export-symbols | -export-symbols-regex)
-	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-	  func_fatal_error "more than one -exported-symbols argument is not allowed"
-	fi
-	if test "X$arg" = "X-export-symbols"; then
-	  prev=expsyms
-	else
-	  prev=expsyms_regex
-	fi
-	continue
-	;;
-
-      -framework)
-	prev=framework
-	continue
-	;;
-
-      -inst-prefix-dir)
-	prev=inst_prefix
-	continue
-	;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-	case $with_gcc/$host in
-	no/*-*-irix* | /*-*-irix*)
-	  func_append compile_command " $arg"
-	  func_append finalize_command " $arg"
-	  ;;
-	esac
-	continue
-	;;
-
-      -L*)
-	func_stripname '-L' '' "$arg"
-	dir=$func_stripname_result
-	if test -z "$dir"; then
-	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
-	  else
-	    func_fatal_error "need path for \`-L' option"
-	  fi
-	fi
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  absdir=`cd "$dir" && pwd`
-	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
-	  ;;
-	esac
-	case "$deplibs " in
-	*" -L$dir "*) ;;
-	*)
-	  deplibs="$deplibs -L$dir"
-	  lib_search_path="$lib_search_path $dir"
-	  ;;
-	esac
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$dir:"*) ;;
-	  ::) dllsearchpath=$dir;;
-	  *) dllsearchpath="$dllsearchpath:$dir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
-	  esac
-	  ;;
-	esac
-	continue
-	;;
-
-      -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
-	    # These systems don't actually have a C or math library (as such)
-	    continue
-	    ;;
-	  *-*-os2*)
-	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C and math libraries are in the System framework
-	    deplibs="$deplibs System.ltframework"
-	    continue
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  esac
-	elif test "X$arg" = "X-lc_r"; then
-	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	   # Do not include libc_r directly, use -pthread flag.
-	   continue
-	   ;;
-	 esac
-	fi
-	deplibs="$deplibs $arg"
-	continue
-	;;
-
-      -module)
-	module=yes
-	continue
-	;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot)
-	compiler_flags="$compiler_flags $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	prev=xcompiler
-	continue
-	;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	compiler_flags="$compiler_flags $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	case "$new_inherited_linker_flags " in
-	    *" $arg "*) ;;
-	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
-	esac
-	continue
-	;;
-
-      -multi_module)
-	single_module="${wl}-multi_module"
-	continue
-	;;
-
-      -no-fast-install)
-	fast_install=no
-	continue
-	;;
-
-      -no-install)
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-	  # The PATH hackery in wrapper scripts is required on Windows
-	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
-	  fast_install=no
-	  ;;
-	*) no_install=yes ;;
-	esac
-	continue
-	;;
-
-      -no-undefined)
-	allow_undefined=no
-	continue
-	;;
-
-      -objectlist)
-	prev=objectlist
-	continue
-	;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-	prev=precious_regex
-	continue
-	;;
-
-      -release)
-	prev=release
-	continue
-	;;
-
-      -rpath)
-	prev=rpath
-	continue
-	;;
-
-      -R)
-	prev=xrpath
-	continue
-	;;
-
-      -R*)
-	func_stripname '-R' '' "$arg"
-	dir=$func_stripname_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  func_fatal_error "only absolute run-paths are allowed"
-	  ;;
-	esac
-	case "$xrpath " in
-	*" $dir "*) ;;
-	*) xrpath="$xrpath $dir" ;;
-	esac
-	continue
-	;;
-
-      -shared)
-	# The effects of -shared are defined in a previous loop.
-	continue
-	;;
-
-      -shrext)
-	prev=shrext
-	continue
-	;;
-
-      -static | -static-libtool-libs)
-	# The effects of -static are defined in a previous loop.
-	# We used to do the same as -all-static on platforms that
-	# didn't have a PIC flag, but the assumption that the effects
-	# would be equivalent was wrong.  It would break on at least
-	# Digital Unix and AIX.
-	continue
-	;;
-
-      -thread-safe)
-	thread_safe=yes
-	continue
-	;;
-
-      -version-info)
-	prev=vinfo
-	continue
-	;;
-
-      -version-number)
-	prev=vinfo
-	vinfo_number=yes
-	continue
-	;;
-
-      -weak)
-        prev=weak
-	continue
-	;;
-
-      -Wc,*)
-	func_stripname '-Wc,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Wl,*)
-	func_stripname '-Wl,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  arg="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
-	  linker_flags="$linker_flags $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Xcompiler)
-	prev=xcompiler
-	continue
-	;;
-
-      -Xlinker)
-	prev=xlinker
-	continue
-	;;
-
-      -XCClinker)
-	prev=xcclinker
-	continue
-	;;
-
-      # -msg_* for osf cc
-      -msg_*)
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-      # -r[0-9][0-9]* specifies the processor on the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-      # +DA*, +DD* enable 64-bit mode on the HP compiler
-      # -q* pass through compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* pass through architecture-specific
-      # compiler args for GCC
-      # -F/path gives path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-      # @file GCC response files
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        compiler_flags="$compiler_flags $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      *.$objext)
-	# A standard object.
-	objs="$objs $arg"
-	;;
-
-      *.lo)
-	# A libtool-controlled object.
-
-	# Check to see that this really is a libtool object.
-	if func_lalib_unsafe_p "$arg"; then
-	  pic_object=
-	  non_pic_object=
-
-	  # Read the .lo file
-	  func_source "$arg"
-
-	  if test -z "$pic_object" ||
-	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
-	  fi
-
-	  # Extract subdirectory from the argument.
-	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
-
-	  if test "$pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
-
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		dlfiles="$dlfiles $pic_object"
-		prev=
-		continue
-	      else
-		# If libtool objects are unsupported, then we need to preload.
-		prev=dlprefiles
-	      fi
-	    fi
-
-	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
-	      # Preload the old-style object.
-	      dlprefiles="$dlprefiles $pic_object"
-	      prev=
-	    fi
-
-	    # A PIC object.
-	    func_append libobjs " $pic_object"
-	    arg="$pic_object"
-	  fi
-
-	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
-
-	    # A standard non-PIC object
-	    func_append non_pic_objects " $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
-	    fi
-	  else
-	    # If the PIC object exists, use it instead.
-	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  fi
-	else
-	  # Only an error if not doing a dry-run.
-	  if $opt_dry_run; then
-	    # Extract subdirectory from the argument.
-	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
-
-	    func_lo2o "$arg"
-	    pic_object=$xdir$objdir/$func_lo2o_result
-	    non_pic_object=$xdir$func_lo2o_result
-	    func_append libobjs " $pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
-	  fi
-	fi
-	;;
-
-      *.$libext)
-	# An archive.
-	deplibs="$deplibs $arg"
-	old_deplibs="$old_deplibs $arg"
-	continue
-	;;
-
-      *.la)
-	# A libtool-controlled library.
-
-	if test "$prev" = dlfiles; then
-	  # This library was specified with -dlopen.
-	  dlfiles="$dlfiles $arg"
-	  prev=
-	elif test "$prev" = dlprefiles; then
-	  # The library was specified with -dlpreopen.
-	  dlprefiles="$dlprefiles $arg"
-	  prev=
-	else
-	  deplibs="$deplibs $arg"
-	fi
-	continue
-	;;
-
-      # Some other compiler argument.
-      *)
-	# Unknown arguments in both finalize_command and compile_command need
-	# to be aesthetically quoted because they are evaled later.
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
-
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      func_append compile_command " $arg"
-      func_append finalize_command " $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_duplicate_deps ; then
-	case "$libs " in
-	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	esac
-      fi
-      libs="$libs $deplib"
-    done
-
-    if test "$linkmode" = lib; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-	for pre_post_dep in $predeps $postdeps; do
-	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
-	  esac
-	  pre_post_deps="$pre_post_deps $pre_post_dep"
-	done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-	passes="conv dlpreopen link"
-	for file in $dlfiles $dlprefiles; do
-	  case $file in
-	  *.la) ;;
-	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
-	    ;;
-	  esac
-	done
-	;;
-    prog)
-	compile_deplibs=
-	finalize_deplibs=
-	alldeplibs=no
-	newdlfiles=
-	newdlprefiles=
-	passes="conv scan dlopen dlpreopen link"
-	;;
-    *)  passes="conv"
-	;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
-	## FIXME: Find the place where the list is rebuilt in the wrong
-	##        order, and fix it there properly
-        tmp_deplibs=
-	for deplib in $deplibs; do
-	  tmp_deplibs="$deplib $tmp_deplibs"
-	done
-	deplibs="$tmp_deplibs"
-      fi
-
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
-	deplibs=
-      fi
-      if test "$linkmode" = prog; then
-	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
-	link)
-	  libs="$deplibs %DEPLIBS%"
-	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
-	  ;;
-	esac
-      fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
-	# Collect and forward deplibs of preopened libtool libs
-	for lib in $dlprefiles; do
-	  # Ignore non-libtool-libs
-	  dependency_libs=
-	  case $lib in
-	  *.la)	func_source "$lib" ;;
-	  esac
-
-	  # Collect preopened libtool deplibs, except any this library
-	  # has declared as weak libs
-	  for deplib in $dependency_libs; do
-            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
-	    case " $weak_libs " in
-	    *" $deplib_base "*) ;;
-	    *) deplibs="$deplibs $deplib" ;;
-	    esac
-	  done
-	done
-	libs="$dlprefiles"
-      fi
-      if test "$pass" = dlopen; then
-	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
-	deplibs=
-      fi
-
-      for deplib in $libs; do
-	lib=
-	found=no
-	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    compiler_flags="$compiler_flags $deplib"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
-	    continue
-	  fi
-	  func_stripname '-l' '' "$deplib"
-	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
-	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-	  else
-	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-	  fi
-	  for searchdir in $searchdirs; do
-	    for search_ext in .la $std_shrext .so .a; do
-	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
-	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
-		else
-		  found=no
-		fi
-		break 2
-	      fi
-	    done
-	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
-	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	      case " $predeps $postdeps " in
-	      *" $deplib "*)
-		if func_lalib_p "$lib"; then
-		  library_names=
-		  old_library=
-		  func_source "$lib"
-		  for l in $old_library $library_names; do
-		    ll="$l"
-		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
-		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
-		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
-		      compile_deplibs="$deplib $compile_deplibs"
-		      finalize_deplibs="$deplib $finalize_deplibs"
-		    else
-		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-		    fi
-		    continue
-		  fi
-		fi
-		;;
-	      *) ;;
-	      esac
-	    fi
-	  fi
-	  ;; # -l
-	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-L*)
-	  case $linkmode in
-	  lib)
-	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
-	    newdependency_libs="$deplib $newdependency_libs"
-	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
-	    ;;
-	  prog)
-	    if test "$pass" = conv; then
-	      deplibs="$deplib $deplibs"
-	      continue
-	    fi
-	    if test "$pass" = scan; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    func_stripname '-L' '' "$deplib"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
-	    ;;
-	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
-	    ;;
-	  esac # linkmode
-	  continue
-	  ;; # -L
-	-R*)
-	  if test "$pass" = link; then
-	    func_stripname '-R' '' "$deplib"
-	    dir=$func_stripname_result
-	    # Make sure the xrpath contains only unique directories.
-	    case "$xrpath " in
-	    *" $dir "*) ;;
-	    *) xrpath="$xrpath $dir" ;;
-	    esac
-	  fi
-	  deplibs="$deplib $deplibs"
-	  continue
-	  ;;
-	*.la) lib="$deplib" ;;
-	*.$libext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	    continue
-	  fi
-	  case $linkmode in
-	  lib)
-	    # Linking convenience modules into shared libraries is allowed,
-	    # but linking other static libraries is non-portable.
-	    case " $dlpreconveniencelibs " in
-	    *" $deplib "*) ;;
-	    *)
-	      valid_a_lib=no
-	      case $deplibs_check_method in
-		match_pattern*)
-		  set dummy $deplibs_check_method; shift
-		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
-		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
-		  fi
-		;;
-		pass_all)
-		  valid_a_lib=yes
-		;;
-	      esac
-	      if test "$valid_a_lib" != yes; then
-		$ECHO
-		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
-		$ECHO "*** that it is just a static archive that I should not use here."
-	      else
-		$ECHO
-		$ECHO "*** Warning: Linking the shared library $output against the"
-		$ECHO "*** static library $deplib is not portable!"
-		deplibs="$deplib $deplibs"
-	      fi
-	      ;;
-	    esac
-	    continue
-	    ;;
-	  prog)
-	    if test "$pass" != link; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    continue
-	    ;;
-	  esac # linkmode
-	  ;; # *.$libext
-	*.lo | *.$objext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-	      # If there is no dlopen support or we're linking statically,
-	      # we need to preload.
-	      newdlprefiles="$newdlprefiles $deplib"
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      newdlfiles="$newdlfiles $deplib"
-	    fi
-	  fi
-	  continue
-	  ;;
-	%DEPLIBS%)
-	  alldeplibs=yes
-	  continue
-	  ;;
-	esac # case $deplib
-
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
-
-	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
-
-	dlname=
-	dlopen=
-	dlpreopen=
-	libdir=
-	library_names=
-	old_library=
-	inherited_linker_flags=
-	# If the library was installed with an old release of libtool,
-	# it will not redefine variables installed, or shouldnotlink
-	installed=yes
-	shouldnotlink=no
-	avoidtemprpath=
-
-
-	# Read the .la file
-	func_source "$lib"
-
-	# Convert "-framework foo" to "foo.ltframework"
-	if test -n "$inherited_linker_flags"; then
-	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
-	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-	    case " $new_inherited_linker_flags " in
-	      *" $tmp_inherited_linker_flag "*) ;;
-	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
-	    esac
-	  done
-	fi
-	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
-	fi
-
-	if test "$pass" = conv; then
-	  # Only check for convenience libraries
-	  deplibs="$lib $deplibs"
-	  if test -z "$libdir"; then
-	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
-	    fi
-	    # It is a libtool convenience library, so add in its objects.
-	    convenience="$convenience $ladir/$objdir/$old_library"
-	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
-	    tmp_libs=
-	    for deplib in $dependency_libs; do
-	      deplibs="$deplib $deplibs"
-	      if $opt_duplicate_deps ; then
-		case "$tmp_libs " in
-		*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-		esac
-	      fi
-	      tmp_libs="$tmp_libs $deplib"
-	    done
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
-	  fi
-	  continue
-	fi # $pass = conv
-
-
-	# Get the name of the library we link against.
-	linklib=
-	for l in $old_library $library_names; do
-	  linklib="$l"
-	done
-	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
-	fi
-
-	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
-	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
-	    # If there is no dlname, no dlopen support or we're linking
-	    # statically, we need to preload.  We also need to preload any
-	    # dependent libraries so libltdl's deplib preloader doesn't
-	    # bomb out in the load deplibs phase.
-	    dlprefiles="$dlprefiles $lib $dependency_libs"
-	  else
-	    newdlfiles="$newdlfiles $lib"
-	  fi
-	  continue
-	fi # $pass = dlopen
-
-	# We need an absolute path.
-	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-	*)
-	  abs_ladir=`cd "$ladir" && pwd`
-	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
-	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
-	  fi
-	  ;;
-	esac
-	func_basename "$lib"
-	laname="$func_basename_result"
-
-	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
-	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
-	  else
-	    dir="$libdir"
-	    absdir="$libdir"
-	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
-	else
-	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
-	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
-	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
-	  fi
-	fi # $installed = yes
-	func_stripname 'lib' '.la' "$laname"
-	name=$func_stripname_result
-
-	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-	  fi
-	  # Prefer using a static library (so that no silly _DYNAMIC symbols
-	  # are required to link).
-	  if test -n "$old_library"; then
-	    newdlprefiles="$newdlprefiles $dir/$old_library"
-	    # Keep a list of preopened convenience libraries to check
-	    # that they are being used correctly in the link pass.
-	    test -z "$libdir" && \
-		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
-	  # Otherwise, use the dlname, so that lt_dlopen finds it.
-	  elif test -n "$dlname"; then
-	    newdlprefiles="$newdlprefiles $dir/$dlname"
-	  else
-	    newdlprefiles="$newdlprefiles $dir/$linklib"
-	  fi
-	fi # $pass = dlpreopen
-
-	if test -z "$libdir"; then
-	  # Link the convenience library
-	  if test "$linkmode" = lib; then
-	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$dir/$old_library $compile_deplibs"
-	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
-	  else
-	    deplibs="$lib $deplibs" # used for prog,scan pass
-	  fi
-	  continue
-	fi
-
-
-	if test "$linkmode" = prog && test "$pass" != link; then
-	  newlib_search_path="$newlib_search_path $ladir"
-	  deplibs="$lib $deplibs"
-
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
-	  fi
-
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    case $deplib in
-	    -L*) func_stripname '-L' '' "$deplib"
-	         newlib_search_path="$newlib_search_path $func_stripname_result"
-		 ;;
-	    esac
-	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      # Need to hardcode shared library paths
-	      # or/and link against static libraries
-	      newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    if $opt_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done # for deplib
-	  continue
-	fi # $linkmode = prog...
-
-	if test "$linkmode,$pass" = "prog,link"; then
-	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
-	       test -z "$old_library"; }; then
-	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
-	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
-	      *"$absdir:"*) ;;
-	      *) temp_rpath="$temp_rpath$absdir:" ;;
-	      esac
-	    fi
-
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
-	      esac
-	      ;;
-	    esac
-	  fi # $linkmode,$pass = prog,link...
-
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
-		 test -n "$library_names"; }; }; then
-	    # We only need to search for static libraries
-	    continue
-	  fi
-	fi
-
-	link_static=no # Whether the deplib will be linked statically
-	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
-	  use_static_libs=no
-	fi
-	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
-	      # No point in relinking DLLs because paths are not encoded
-	      notinst_deplibs="$notinst_deplibs $lib"
-	      need_relink=no
-	    ;;
-	  *)
-	    if test "$installed" = no; then
-	      notinst_deplibs="$notinst_deplibs $lib"
-	      need_relink=yes
-	    fi
-	    ;;
-	  esac
-	  # This is a shared library
-
-	  # Warn about portability, can't link against -module's on some
-	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
-	  for dlpremoduletest in $dlprefiles; do
-	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
-	      break
-	    fi
-	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-	    $ECHO
-	    if test "$linkmode" = prog; then
-	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
-	    else
-	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-	    fi
-	    $ECHO "*** $linklib is not portable!"
-	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
-	      esac
-	      ;;
-	    esac
-	  fi
-
-	  if test -n "$old_archive_from_expsyms_cmds"; then
-	    # figure out the soname
-	    set dummy $library_names
-	    shift
-	    realname="$1"
-	    shift
-	    libname=`eval "\\$ECHO \"$libname_spec\""`
-	    # use dlname if we got it. it's perfectly good, no?
-	    if test -n "$dlname"; then
-	      soname="$dlname"
-	    elif test -n "$soname_spec"; then
-	      # bleh windows
-	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
-	        func_arith $current - $age
-		major=$func_arith_result
-		versuffix="-$major"
-		;;
-	      esac
-	      eval soname=\"$soname_spec\"
-	    else
-	      soname="$realname"
-	    fi
-
-	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
-	    func_basename "$soroot"
-	    soname="$func_basename_result"
-	    func_stripname 'lib' '.dll' "$soname"
-	    newlib=libimp-$func_stripname_result.a
-
-	    # If the library has no export list, then create one now
-	    if test -f "$output_objdir/$soname-def"; then :
-	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
-	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-	    fi
-
-	    # Create $newlib
-	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
-	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-	    fi
-	    # make sure the library variables are pointing to the new library
-	    dir=$output_objdir
-	    linklib=$newlib
-	  fi # test -n "$old_archive_from_expsyms_cmds"
-
-	  if test "$linkmode" = prog || test "$mode" != relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    lib_linked=yes
-	    case $hardcode_action in
-	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
-		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
-		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
-		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
-		    # link against it, someone is ignoring the earlier warnings
-		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
-		      if test "X$dlopenmodule" != "X$lib"; then
-			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
-			  $ECHO
-			  $ECHO "*** And there doesn't seem to be a static archive available"
-			  $ECHO "*** The link will probably fail, sorry"
-			else
-			  add="$dir/$old_library"
-			fi
-		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
-		      fi
-		    fi
-		esac
-	      elif test "$hardcode_minus_L" = no; then
-		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
-		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
-		# Try looking first in the location we're being installed to.
-		if test -n "$inst_prefix_dir"; then
-		  case $libdir in
-		    [\\/]*)
-		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
-		      ;;
-		  esac
-		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    *) lib_linked=no ;;
-	    esac
-
-	    if test "$lib_linked" != yes; then
-	      func_fatal_configuration "unsupported hardcode properties"
-	    fi
-
-	    if test -n "$add_shlibpath"; then
-	      case :$compile_shlibpath: in
-	      *":$add_shlibpath:"*) ;;
-	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
-	      esac
-	    fi
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
-		case :$finalize_shlibpath: in
-		*":$libdir:"*) ;;
-		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-		esac
-	      fi
-	    fi
-	  fi
-
-	  if test "$linkmode" = prog || test "$mode" = relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
-	      case :$finalize_shlibpath: in
-	      *":$libdir:"*) ;;
-	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
-	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
-	      else
-		add="$libdir/$linklib"
-	      fi
-	    else
-	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
-	      # Try looking first in the location we're being installed to.
-	      if test -n "$inst_prefix_dir"; then
-		case $libdir in
-		  [\\/]*)
-		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
-		    ;;
-		esac
-	      fi
-	      add="-l$name"
-	    fi
-
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	    fi
-	  fi
-	elif test "$linkmode" = prog; then
-	  # Here we assume that one of hardcode_direct or hardcode_minus_L
-	  # is not unsupported.  This is valid on all known static and
-	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
-	    compile_deplibs="$dir/$linklib $compile_deplibs"
-	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
-	  else
-	    compile_deplibs="-l$name -L$dir $compile_deplibs"
-	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-	  fi
-	elif test "$build_libtool_libs" = yes; then
-	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
-	    # We're trying link a shared library against a static one
-	    # but the system doesn't support it.
-
-	    # Just print a warning and add the library to dependency_libs so
-	    # that the program can be linked against the static library.
-	    $ECHO
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
-	    $ECHO "*** I have the capability to make that library automatically link in when"
-	    $ECHO "*** you link to this library.  But I can only do this if you have a"
-	    $ECHO "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
-	      $ECHO "*** But as you try to build a module library, libtool will still create "
-	      $ECHO "*** a static module, that should work as long as the dlopening application"
-	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
-	      if test -z "$global_symbol_pipe"; then
-		$ECHO
-		$ECHO "*** However, this would only work if libtool was able to extract symbol"
-		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		$ECHO "*** not find such a program.  So, this module is probably useless."
-		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-	      fi
-	      if test "$build_old_libs" = no; then
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  else
-	    deplibs="$dir/$old_library $deplibs"
-	    link_static=yes
-	  fi
-	fi # link shared/static library?
-
-	if test "$linkmode" = lib; then
-	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
-	    # Extract -R from dependency_libs
-	    temp_deplibs=
-	    for libdir in $dependency_libs; do
-	      case $libdir in
-	      -R*) func_stripname '-R' '' "$libdir"
-	           temp_xrpath=$func_stripname_result
-		   case " $xrpath " in
-		   *" $temp_xrpath "*) ;;
-		   *) xrpath="$xrpath $temp_xrpath";;
-		   esac;;
-	      *) temp_deplibs="$temp_deplibs $libdir";;
-	      esac
-	    done
-	    dependency_libs="$temp_deplibs"
-	  fi
-
-	  newlib_search_path="$newlib_search_path $absdir"
-	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-	  # ... and its dependency_libs
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    newdependency_libs="$deplib $newdependency_libs"
-	    if $opt_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done
-
-	  if test "$link_all_deplibs" != no; then
-	    # Add the search paths of all dependency libraries
-	    for deplib in $dependency_libs; do
-	      path=
-	      case $deplib in
-	      -L*) path="$deplib" ;;
-	      *.la)
-	        func_dirname "$deplib" "" "."
-		dir="$func_dirname_result"
-		# We need an absolute path.
-		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-		*)
-		  absdir=`cd "$dir" && pwd`
-		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
-		  fi
-		  ;;
-		esac
-		if $GREP "^installed=no" $deplib > /dev/null; then
-		case $host in
-		*-*-darwin*)
-		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
-		      depdepl=$tmp
-		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
-		      path=
-		    fi
-		  fi
-		  ;;
-		*)
-		  path="-L$absdir/$objdir"
-		  ;;
-		esac
-		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
-		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
-
-		  path="-L$absdir"
-		fi
-		;;
-	      esac
-	      case " $deplibs " in
-	      *" $path "*) ;;
-	      *) deplibs="$path $deplibs" ;;
-	      esac
-	    done
-	  fi # link_all_deplibs != no
-	fi # linkmode = lib
-      done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
-	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-	else
-	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	fi
-      fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
-	# Link the dlpreopened libraries before other libraries
-	for deplib in $save_deplibs; do
-	  deplibs="$deplib $deplibs"
-	done
-      fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
-	  # Make sure lib_search_path contains only unique directories.
-	  lib_search_path=
-	  for dir in $newlib_search_path; do
-	    case "$lib_search_path " in
-	    *" $dir "*) ;;
-	    *) lib_search_path="$lib_search_path $dir" ;;
-	    esac
-	  done
-	  newlib_search_path=
-	fi
-
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
-	  vars="compile_deplibs finalize_deplibs"
-	fi
-	for var in $vars dependency_libs; do
-	  # Add libraries to $var in reverse order
-	  eval tmp_libs=\"\$$var\"
-	  new_libs=
-	  for deplib in $tmp_libs; do
-	    # FIXME: Pedantically, this is the right thing to do, so
-	    #        that some nasty dependency loop isn't accidentally
-	    #        broken:
-	    #new_libs="$deplib $new_libs"
-	    # Pragmatically, this seems to cause very few problems in
-	    # practice:
-	    case $deplib in
-	    -L*) new_libs="$deplib $new_libs" ;;
-	    -R*) ;;
-	    *)
-	      # And here is the reason: when a library appears more
-	      # than once as an explicit dependence of a library, or
-	      # is implicitly linked in more than once by the
-	      # compiler, it is considered special, and multiple
-	      # occurrences thereof are not removed.  Compare this
-	      # with having the same library being listed as a
-	      # dependency of multiple other libraries: in this case,
-	      # we know (pedantically, we assume) the library does not
-	      # need to be listed more than once, so we keep only the
-	      # last copy.  This is not always right, but it is rare
-	      # enough that we require users that really mean to play
-	      # such unportable linking tricks to link the library
-	      # using -Wl,-lname, so that libtool does not consider it
-	      # for duplicate removal.
-	      case " $specialdeplibs " in
-	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
-	      *)
-		case " $new_libs " in
-		*" $deplib "*) ;;
-		*) new_libs="$deplib $new_libs" ;;
-		esac
-		;;
-	      esac
-	      ;;
-	    esac
-	  done
-	  tmp_libs=
-	  for deplib in $new_libs; do
-	    case $deplib in
-	    -L*)
-	      case " $tmp_libs " in
-	      *" $deplib "*) ;;
-	      *) tmp_libs="$tmp_libs $deplib" ;;
-	      esac
-	      ;;
-	    *) tmp_libs="$tmp_libs $deplib" ;;
-	    esac
-	  done
-	  eval $var=\"$tmp_libs\"
-	done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-	case " $predeps $postdeps $compiler_lib_search_path " in
-	*" $i "*)
-	  i=""
-	  ;;
-	esac
-	if test -n "$i" ; then
-	  tmp_libs="$tmp_libs $i"
-	fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
-    fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs="$output"
-      objs="$objs$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
-      case $outputname in
-      lib*)
-	func_stripname 'lib' '.la' "$outputname"
-	name=$func_stripname_result
-	eval shared_ext=\"$shrext_cmds\"
-	eval libname=\"$libname_spec\"
-	;;
-      *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
-	if test "$need_lib_prefix" != no; then
-	  # Add the "lib" prefix for modules if required
-	  func_stripname '' '.la' "$outputname"
-	  name=$func_stripname_result
-	  eval shared_ext=\"$shrext_cmds\"
-	  eval libname=\"$libname_spec\"
-	else
-	  func_stripname '' '.la' "$outputname"
-	  libname=$func_stripname_result
-	fi
-	;;
-      esac
-
-      if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
-	else
-	  $ECHO
-	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-	  $ECHO "*** objects $objs is not portable!"
-	  libobjs="$libobjs $objs"
-	fi
-      fi
-
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
-
-      install_libdir="$1"
-
-      oldlibs=
-      if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
-	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
-	  # convenience libraries should have the same extension an
-	  # archive normally would.
-	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
-	  build_libtool_libs=convenience
-	  build_old_libs=yes
-	fi
-
-	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
-	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
-      else
-
-	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
-	set dummy $vinfo 0 0 0
-	shift
-	IFS="$save_ifs"
-
-	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
-
-	# convert absolute version numbers to libtool ages
-	# this retains compatibility with .la files and attempts
-	# to make the code below a bit more comprehensible
-
-	case $vinfo_number in
-	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
-	  #
-	  # There are really only two kinds -- those that
-	  # use the current revision as the major version
-	  # and those that subtract age and use age as
-	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
-	  #
-	  case $version_type in
-	  darwin|linux|osf|windows|none)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
-	    ;;
-	  freebsd-aout|freebsd-elf|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
-	    ;;
-	  irix|nonstopux)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
-	    lt_irix_increment=no
-	    ;;
-	  *)
-	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
-	    ;;
-	  esac
-	  ;;
-	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
-	  ;;
-	esac
-
-	# Check that each of the things are valid numbers.
-	case $current in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $revision in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $age in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	fi
-
-	# Calculate the version variables.
-	major=
-	versuffix=
-	verstring=
-	case $version_type in
-	none) ;;
-
-	darwin)
-	  # Like Linux, but with the current version available in
-	  # verstring for coding it into the library header
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  # Darwin ld doesn't like 0 for these options...
-	  func_arith $current + 1
-	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
-	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-	  ;;
-
-	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
-	  ;;
-
-	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
-	    func_arith $current - $age
-	  else
-	    func_arith $current - $age + 1
-	  fi
-	  major=$func_arith_result
-
-	  case $version_type in
-	    nonstopux) verstring_prefix=nonstopux ;;
-	    *)         verstring_prefix=sgi ;;
-	  esac
-	  verstring="$verstring_prefix$major.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$revision
-	  while test "$loop" -ne 0; do
-	    func_arith $revision - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
-	  done
-
-	  # Before this point, $major must not contain `.'.
-	  major=.$major
-	  versuffix="$major.$revision"
-	  ;;
-
-	linux)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  ;;
-
-	osf)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$age
-	  while test "$loop" -ne 0; do
-	    func_arith $current - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
-	  done
-
-	  # Make executables depend on our current version.
-	  verstring="$verstring:${current}.0"
-	  ;;
-
-	qnx)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
-	  ;;
-
-	windows)
-	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
-	  func_arith $current - $age
-	  major=$func_arith_result
-	  versuffix="-$major"
-	  ;;
-
-	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
-	  ;;
-	esac
-
-	# Clear the version info if we defaulted, and they specified a release.
-	if test -z "$vinfo" && test -n "$release"; then
-	  major=
-	  case $version_type in
-	  darwin)
-	    # we can't check for "0.0" in archive_cmds due to quoting
-	    # problems, so we reset it completely
-	    verstring=
-	    ;;
-	  *)
-	    verstring="0.0"
-	    ;;
-	  esac
-	  if test "$need_version" = no; then
-	    versuffix=
-	  else
-	    versuffix=".0.0"
-	  fi
-	fi
-
-	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
-	  major=
-	  versuffix=
-	  verstring=""
-	fi
-
-	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
-	  fi
-	else
-	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
-	fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      libobjs="$libobjs $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
-
-      if test "$mode" != relink; then
-	# Remove our outputs, but don't remove object files since they
-	# may have been created when compiling PIC objects.
-	removelist=
-	tempremovelist=`$ECHO "$output_objdir/*"`
-	for p in $tempremovelist; do
-	  case $p in
-	    *.$objext | *.gcno)
-	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
-		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-		 then
-		   continue
-		 fi
-	       fi
-	       removelist="$removelist $p"
-	       ;;
-	    *) ;;
-	  esac
-	done
-	test -n "$removelist" && \
-	  func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	oldlibs="$oldlibs $output_objdir/$libname.$libext"
-
-	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
-      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	temp_xrpath=
-	for libdir in $xrpath; do
-	  temp_xrpath="$temp_xrpath -R$libdir"
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
-	  esac
-	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-	  dependency_libs="$temp_xrpath $dependency_libs"
-	fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-	case " $dlprefiles $dlfiles " in
-	*" $lib "*) ;;
-	*) dlfiles="$dlfiles $lib" ;;
-	esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-	case "$dlprefiles " in
-	*" $lib "*) ;;
-	*) dlprefiles="$dlprefiles $lib" ;;
-	esac
-      done
-
-      if test "$build_libtool_libs" = yes; then
-	if test -n "$rpath"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
-	    # these systems don't actually have a c library (as such)!
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C library is in the System framework
-	    deplibs="$deplibs System.ltframework"
-	    ;;
-	  *-*-netbsd*)
-	    # Don't link with libc until the a.out ld.so is fixed.
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    ;;
-	  *)
-	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
-	      deplibs="$deplibs -lc"
-	    fi
-	    ;;
-	  esac
-	fi
-
-	# Transform deplibs into only deplibs that can be linked in shared.
-	name_save=$name
-	libname_save=$libname
-	release_save=$release
-	versuffix_save=$versuffix
-	major_save=$major
-	# I'm not sure if I'm treating the release correctly.  I think
-	# release should show up in the -l (ie -lgmp5) so we don't want to
-	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
-	newdeplibs=
-	droppeddeps=no
-	case $deplibs_check_method in
-	pass_all)
-	  # Don't check for shared/static.  Everything works.
-	  # This might be a little naive.  We might want to check
-	  # whether the library exists or not.  But this is on
-	  # osf3 & osf4 and I'm not really sure... Just
-	  # implementing what was already the behavior.
-	  newdeplibs=$deplibs
-	  ;;
-	test_compile)
-	  # This code stresses the "libraries are programs" paradigm to its
-	  # limits. Maybe even breaks it.  We compile a program, linking it
-	  # against the deplibs as a proxy for the library.  Then we can check
-	  # whether they linked in statically or dynamically with ldd.
-	  $opt_dry_run || $RM conftest.c
-	  cat > conftest.c <<EOF
-	  int main() { return 0; }
-EOF
-	  $opt_dry_run || $RM conftest
-	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-	    ldd_output=`ldd conftest`
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		  case " $predeps $postdeps " in
-		  *" $i "*)
-		    newdeplibs="$newdeplibs $i"
-		    i=""
-		    ;;
-		  esac
-		fi
-		if test -n "$i" ; then
-		  libname=`eval "\\$ECHO \"$libname_spec\""`
-		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		  set dummy $deplib_matches; shift
-		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    newdeplibs="$newdeplibs $i"
-		  else
-		    droppeddeps=yes
-		    $ECHO
-		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		    $ECHO "*** I have the capability to make that library automatically link in when"
-		    $ECHO "*** you link to this library.  But I can only do this if you have a"
-		    $ECHO "*** shared version of the library, which I believe you do not have"
-		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
-		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
-		  fi
-		fi
-		;;
-	      *)
-		newdeplibs="$newdeplibs $i"
-		;;
-	      esac
-	    done
-	  else
-	    # Error occurred in the first compile.  Let's try to salvage
-	    # the situation: Compile a separate program for each library.
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		$opt_dry_run || $RM conftest
-		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		    case " $predeps $postdeps " in
-		    *" $i "*)
-		      newdeplibs="$newdeplibs $i"
-		      i=""
-		      ;;
-		    esac
-		  fi
-		  if test -n "$i" ; then
-		    libname=`eval "\\$ECHO \"$libname_spec\""`
-		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		    set dummy $deplib_matches; shift
-		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      newdeplibs="$newdeplibs $i"
-		    else
-		      droppeddeps=yes
-		      $ECHO
-		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		      $ECHO "*** I have the capability to make that library automatically link in when"
-		      $ECHO "*** you link to this library.  But I can only do this if you have a"
-		      $ECHO "*** shared version of the library, which you do not appear to have"
-		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
-		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
-		    fi
-		  fi
-		else
-		  droppeddeps=yes
-		  $ECHO
-		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-		  $ECHO "*** make it link in!  You will probably need to install it or some"
-		  $ECHO "*** library that it depends on before this library will be fully"
-		  $ECHO "*** functional.  Installing it before continuing would be even better."
-		fi
-		;;
-	      *)
-		newdeplibs="$newdeplibs $i"
-		;;
-	      esac
-	    done
-	  fi
-	  ;;
-	file_magic*)
-	  set dummy $deplibs_check_method; shift
-	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		      # Follow soft links.
-		      if ls -lLd "$potent_lib" 2>/dev/null |
-			 $GREP " -> " >/dev/null; then
-			continue
-		      fi
-		      # The statement above tries to avoid entering an
-		      # endless loop below, in case of cyclic links.
-		      # We might still enter an endless loop, since a link
-		      # loop can be closed while we follow links,
-		      # but so what?
-		      potlib="$potent_lib"
-		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
-			esac
-		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-			 $SED -e 10q |
-			 $EGREP "$file_magic_regex" > /dev/null; then
-			newdeplibs="$newdeplibs $a_deplib"
-			a_deplib=""
-			break 2
-		      fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		$ECHO
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a file magic. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	match_pattern*)
-	  set dummy $deplibs_check_method; shift
-	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
-		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs="$newdeplibs $a_deplib"
-		      a_deplib=""
-		      break 2
-		    fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		$ECHO
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		$ECHO "*** I have the capability to make that library automatically link in when"
-		$ECHO "*** you link to this library.  But I can only do this if you have a"
-		$ECHO "*** shared version of the library, which you do not appear to have"
-		$ECHO "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	none | unknown | *)
-	  newdeplibs=""
-	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
-	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
-	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
-	    done
-	  fi
-	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
-	     $GREP . >/dev/null; then
-	    $ECHO
-	    if test "X$deplibs_check_method" = "Xnone"; then
-	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
-	    else
-	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
-	    fi
-	    $ECHO "*** All declared inter-library dependencies are being dropped."
-	    droppeddeps=yes
-	  fi
-	  ;;
-	esac
-	versuffix=$versuffix_save
-	major=$major_save
-	release=$release_save
-	libname=$libname_save
-	name=$name_save
-
-	case $host in
-	*-*-rhapsody* | *-*-darwin1.[012])
-	  # On Rhapsody replace the C library with the System framework
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	  ;;
-	esac
-
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
-	    $ECHO
-	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
-	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-	    $ECHO "*** a static module, that should work as long as the dlopening"
-	    $ECHO "*** application is linked with the -dlopen flag."
-	    if test -z "$global_symbol_pipe"; then
-	      $ECHO
-	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
-	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      $ECHO "*** not find such a program.  So, this module is probably useless."
-	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
-	      build_libtool_libs=module
-	      build_old_libs=yes
-	    else
-	      build_libtool_libs=no
-	    fi
-	  else
-	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
-	    $ECHO "*** automatically added whenever a program is linked with this library"
-	    $ECHO "*** or is declared to -dlopen it."
-
-	    if test "$allow_undefined" = no; then
-	      $ECHO
-	      $ECHO "*** Since this library must not contain undefined symbols,"
-	      $ECHO "*** because either the platform does not support them or"
-	      $ECHO "*** it was explicitly requested with -no-undefined,"
-	      $ECHO "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  fi
-	fi
-	# Done checking deplibs!
-	deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-	*-*-darwin*)
-	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $deplibs " in
-	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs="$new_libs $deplib" ;;
-	esac
-      done
-      deplibs="$new_libs"
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	if test "$hardcode_into_libs" = yes; then
-	  # Hardcode the library paths
-	  hardcode_libdirs=
-	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$mode" != relink && rpath="$compile_rpath$rpath"
-	  for libdir in $rpath; do
-	    if test -n "$hardcode_libdir_flag_spec"; then
-	      if test -n "$hardcode_libdir_separator"; then
-		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
-		else
-		  # Just accumulate the unique libdirs.
-		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		    ;;
-		  *)
-		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		    ;;
-		  esac
-		fi
-	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath="$dep_rpath $flag"
-	      fi
-	    elif test -n "$runpath_var"; then
-	      case "$perm_rpath " in
-	      *" $libdir "*) ;;
-	      *) perm_rpath="$perm_rpath $libdir" ;;
-	      esac
-	    fi
-	  done
-	  # Substitute the hardcoded libdirs into the rpath.
-	  if test -n "$hardcode_libdir_separator" &&
-	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
-	  fi
-	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
-	    # We should set the runpath_var.
-	    rpath=
-	    for dir in $perm_rpath; do
-	      rpath="$rpath$dir:"
-	    done
-	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-	  fi
-	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-	fi
-
-	shlibpath="$finalize_shlibpath"
-	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-	if test -n "$shlibpath"; then
-	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-	fi
-
-	# Get the real and link names of the library.
-	eval shared_ext=\"$shrext_cmds\"
-	eval library_names=\"$library_names_spec\"
-	set dummy $library_names
-	shift
-	realname="$1"
-	shift
-
-	if test -n "$soname_spec"; then
-	  eval soname=\"$soname_spec\"
-	else
-	  soname="$realname"
-	fi
-	if test -z "$dlname"; then
-	  dlname=$soname
-	fi
-
-	lib="$output_objdir/$realname"
-	linknames=
-	for link
-	do
-	  linknames="$linknames $link"
-	done
-
-	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	test "X$libobjs" = "X " && libobjs=
-
-	delfiles=
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
-	  delfiles="$delfiles $export_symbols"
-	fi
-
-	orig_export_symbols=
-	case $host_os in
-	cygwin* | mingw* | cegcc*)
-	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-	      # and it's NOT already a .def file. Must figure out
-	      # which of the given symbols are data symbols and tag
-	      # them as such. So, trigger use of export_symbols_cmds.
-	      # export_symbols gets reassigned inside the "prepare
-	      # the list of exported symbols" if statement, so the
-	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
-	      export_symbols=
-	      always_export_symbols=yes
-	    fi
-	  fi
-	  ;;
-	esac
-
-	# Prepare the list of exported symbols
-	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
-	    $opt_dry_run || $RM $export_symbols
-	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $cmds; do
-	      IFS="$save_ifs"
-	      eval cmd=\"$cmd\"
-	      func_len " $cmd"
-	      len=$func_len_result
-	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-		func_show_eval "$cmd" 'exit $?'
-		skipped_export=false
-	      else
-		# The command line is too long to execute in one step.
-		func_verbose "using reloadable object file for export list..."
-		skipped_export=:
-		# Break out early, otherwise skipped_export may be
-		# set to false by a later but shorter cmd.
-		break
-	      fi
-	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-	fi
-
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-	fi
-
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
-	  # though. Also, the filter scales superlinearly with the number of
-	  # global variables. join(1) would be nice here, but unfortunately
-	  # isn't a blessed tool.
-	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-	  export_symbols=$output_objdir/$libname.def
-	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	fi
-
-	tmp_deplibs=
-	for test_deplib in $deplibs; do
-	  case " $convenience " in
-	  *" $test_deplib "*) ;;
-	  *)
-	    tmp_deplibs="$tmp_deplibs $test_deplib"
-	    ;;
-	  esac
-	done
-	deplibs="$tmp_deplibs"
-
-	if test -n "$convenience"; then
-	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
-	    test -z "$libobjs"; then
-	    # extract the archives, so we have objects to list.
-	    # TODO: could optimize this to just extract one archive.
-	    whole_archive_flag_spec=
-	  fi
-	  if test -n "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  else
-	    gentop="$output_objdir/${outputname}x"
-	    generated="$generated $gentop"
-
-	    func_extract_archives $gentop $convenience
-	    libobjs="$libobjs $func_extract_archives_result"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	fi
-
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-	  eval flag=\"$thread_safe_flag_spec\"
-	  linker_flags="$linker_flags $flag"
-	fi
-
-	# Make a backup of the uninstalled library when relinking
-	if test "$mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-	fi
-
-	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
-	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	    eval test_cmds=\"$module_expsym_cmds\"
-	    cmds=$module_expsym_cmds
-	  else
-	    eval test_cmds=\"$module_cmds\"
-	    cmds=$module_cmds
-	  fi
-	else
-	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	    eval test_cmds=\"$archive_expsym_cmds\"
-	    cmds=$archive_expsym_cmds
-	  else
-	    eval test_cmds=\"$archive_cmds\"
-	    cmds=$archive_cmds
-	  fi
-	fi
-
-	if test "X$skipped_export" != "X:" &&
-	   func_len " $test_cmds" &&
-	   len=$func_len_result &&
-	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  :
-	else
-	  # The command line is too long to link in one step, link piecewise
-	  # or, if using GNU ld and skipped_export is not :, use a linker
-	  # script.
-
-	  # Save the value of $output and $libobjs because we want to
-	  # use them later.  If we have whole_archive_flag_spec, we
-	  # want to use save_libobjs as it was before
-	  # whole_archive_flag_spec was expanded, because we can't
-	  # assume the linker understands whole_archive_flag_spec.
-	  # This may have to be revisited, in case too many
-	  # convenience libraries get linked in and end up exceeding
-	  # the spec.
-	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	  fi
-	  save_output=$output
-	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
-
-	  # Clear the reloadable object creation command queue and
-	  # initialize k to one.
-	  test_cmds=
-	  concat_cmds=
-	  objlist=
-	  last_robj=
-	  k=1
-
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
-	    func_verbose "creating GNU ld script: $output"
-	    $ECHO 'INPUT (' > $output
-	    for obj in $save_libobjs
-	    do
-	      $ECHO "$obj" >> $output
-	    done
-	    $ECHO ')' >> $output
-	    delfiles="$delfiles $output"
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
-	    func_verbose "creating linker input file list: $output"
-	    : > $output
-	    set x $save_libobjs
-	    shift
-	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
-	      firstobj="$1 "
-	      shift
-	    fi
-	    for obj
-	    do
-	      $ECHO "$obj" >> $output
-	    done
-	    delfiles="$delfiles $output"
-	    output=$firstobj\"$file_list_spec$output\"
-	  else
-	    if test -n "$save_libobjs"; then
-	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
-	      eval test_cmds=\"$reload_cmds\"
-	      func_len " $test_cmds"
-	      len0=$func_len_result
-	      len=$len0
-
-	      # Loop over the list of objects to be linked.
-	      for obj in $save_libobjs
-	      do
-		func_len " $obj"
-		func_arith $len + $func_len_result
-		len=$func_arith_result
-		if test "X$objlist" = X ||
-		   test "$len" -lt "$max_cmd_len"; then
-		  func_append objlist " $obj"
-		else
-		  # The command $test_cmds is almost too long, add a
-		  # command to the queue.
-		  if test "$k" -eq 1 ; then
-		    # The first file doesn't have a previous command to add.
-		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
-		  else
-		    # All subsequent reloadable object files will link in
-		    # the last one created.
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
-		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
-		  func_arith $k + 1
-		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
-		  objlist=$obj
-		  func_len " $last_robj"
-		  func_arith $len0 + $func_len_result
-		  len=$func_arith_result
-		fi
-	      done
-	      # Handle the remaining objects by creating one last
-	      # reloadable object file.  All subsequent reloadable object
-	      # files will link in the last one created.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
-	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
-	      fi
-	      delfiles="$delfiles $output"
-
-	    else
-	      output=
-	    fi
-
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
-	      $opt_dry_run || $RM $export_symbols
-	      libobjs=$output
-	      # Append the command to create the export file.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-	      if test -n "$last_robj"; then
-		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-	      fi
-	    fi
-
-	    test -n "$save_libobjs" &&
-	      func_verbose "creating a temporary reloadable object file: $output"
-
-	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
-		  func_quote_for_expand "$cmd"
-		  eval "func_echo $func_quote_for_expand_result"
-	      }
-	      $opt_dry_run || eval "$cmd" || {
-		lt_exit=$?
-
-		# Restore the uninstalled library and exit
-		if test "$mode" = relink; then
-		  ( cd "$output_objdir" && \
-		    $RM "${realname}T" && \
-		    $MV "${realname}U" "$realname" )
-		fi
-
-		exit $lt_exit
-	      }
-	    done
-	    IFS="$save_ifs"
-
-	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-
-          if ${skipped_export-false}; then
-	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-	    fi
-
-	    if test -n "$orig_export_symbols"; then
-	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
-	      # though. Also, the filter scales superlinearly with the number of
-	      # global variables. join(1) would be nice here, but unfortunately
-	      # isn't a blessed tool.
-	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-	      export_symbols=$output_objdir/$libname.def
-	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	    fi
-	  fi
-
-	  libobjs=$output
-	  # Restore the value of output.
-	  output=$save_output
-
-	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	  # Expand the library linking commands again to reset the
-	  # value of $libobjs for piecewise linking.
-
-	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
-	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	      cmds=$module_expsym_cmds
-	    else
-	      cmds=$module_cmds
-	    fi
-	  else
-	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	      cmds=$archive_expsym_cmds
-	    else
-	      cmds=$archive_cmds
-	    fi
-	  fi
-	fi
-
-	if test -n "$delfiles"; then
-	  # Append the command to remove temporary files to $cmds.
-	  eval cmds=\"\$cmds~\$RM $delfiles\"
-	fi
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  libobjs="$libobjs $func_extract_archives_result"
-	  test "X$libobjs" = "X " && libobjs=
-	fi
-
-	save_ifs="$IFS"; IFS='~'
-	for cmd in $cmds; do
-	  IFS="$save_ifs"
-	  eval cmd=\"$cmd\"
-	  $opt_silent || {
-	    func_quote_for_expand "$cmd"
-	    eval "func_echo $func_quote_for_expand_result"
-	  }
-	  $opt_dry_run || eval "$cmd" || {
-	    lt_exit=$?
-
-	    # Restore the uninstalled library and exit
-	    if test "$mode" = relink; then
-	      ( cd "$output_objdir" && \
-	        $RM "${realname}T" && \
-		$MV "${realname}U" "$realname" )
-	    fi
-
-	    exit $lt_exit
-	  }
-	done
-	IFS="$save_ifs"
-
-	# Restore the uninstalled library and exit
-	if test "$mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-	  if test -n "$convenience"; then
-	    if test -z "$whole_archive_flag_spec"; then
-	      func_show_eval '${RM}r "$gentop"'
-	    fi
-	  fi
-
-	  exit $EXIT_SUCCESS
-	fi
-
-	# Create links to the real library.
-	for linkname in $linknames; do
-	  if test "$realname" != "$linkname"; then
-	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-	  fi
-	done
-
-	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
-	  # On all known operating systems, these are identical.
-	  dlname="$soname"
-	fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
-	libobj=$output
-	func_lo2o "$libobj"
-	obj=$func_lo2o_result
-	;;
-      *)
-	libobj=
-	obj="$output"
-	;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
-      if test -n "$convenience"; then
-	if test -n "$whole_archive_flag_spec"; then
-	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
-	else
-	  gentop="$output_objdir/${obj}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $convenience
-	  reload_conv_objs="$reload_objs $func_extract_archives_result"
-	fi
-      fi
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-      output="$obj"
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$build_libtool_libs" != yes; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	# Create an invalid libtool object if no PIC, so that we don't
-	# accidentally link it into a program.
-	# $show "echo timestamp > $libobj"
-	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-	exit $EXIT_SUCCESS
-      fi
-
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
-	# Only do commands if we really have different PIC objects.
-	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
-	func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-	func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-	*cygwin*) func_stripname '' '.exe' "$output"
-	          output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
-
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-	# Don't allow lazy linking, it breaks C++ global constructors
-	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
-	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-	    10.[0123])
-	      compile_command="$compile_command ${wl}-bind_at_load"
-	      finalize_command="$finalize_command ${wl}-bind_at_load"
-	    ;;
-	  esac
-	fi
-	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $compile_deplibs " in
-	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $compile_deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs="$new_libs $deplib" ;;
-	esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      compile_command="$compile_command $compile_deplibs"
-      finalize_command="$finalize_command $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	for libdir in $rpath $xrpath; do
-	  # This is the magic to use -rpath.
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
-	  esac
-	done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) perm_rpath="$perm_rpath $libdir" ;;
-	  esac
-	fi
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$libdir:"*) ;;
-	  ::) dllsearchpath=$libdir;;
-	  *) dllsearchpath="$dllsearchpath:$libdir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
-	  esac
-	  ;;
-	esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$finalize_perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
-	  esac
-	fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath="$rpath"
-
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
-	# Transform all the library objects into standard objects.
-	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-	func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=yes
-      case $host in
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *cegcc)
-        # Disable wrappers for cegcc, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
-      *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      esac
-      if test "$wrappers_required" = no; then
-	# Replace the output file specification.
-	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
-
-	# We have no uninstalled library dependencies, so finalize right now.
-	exit_status=0
-	func_show_eval "$link_command" 'exit_status=$?'
-
-	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-	fi
-
-	exit $exit_status
-      fi
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-	if test -n "$perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $perm_rpath; do
-	    rpath="$rpath$dir:"
-	  done
-	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-	if test -n "$finalize_perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $finalize_perm_rpath; do
-	    rpath="$rpath$dir:"
-	  done
-	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-      fi
-
-      if test "$no_install" = yes; then
-	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
-	# Replace the output file specification.
-	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-	# Delete the old output file.
-	$opt_dry_run || $RM $output
-	# Link the executable and exit
-	func_show_eval "$link_command" 'exit $?'
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
-
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
-
-      # Replace the output file specification.
-      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-	# Preserve any variables that may affect compiler behavior
-	for var in $variables_saved_for_relink; do
-	  if eval test -z \"\${$var+set}\"; then
-	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	  elif eval var_value=\$$var; test -z "$var_value"; then
-	    relink_command="$var=; export $var; $relink_command"
-	  else
-	    func_quote_for_eval "$var_value"
-	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	  fi
-	done
-	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Quote $ECHO for shipping.
-      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
-	case $progpath in
-	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
-	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
-	esac
-	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
-      else
-	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-	# win32 will think the script is a binary if it has
-	# a .exe suffix, so we strip it off here.
-	case $output in
-	  *.exe) func_stripname '' '.exe' "$output"
-	         output=$func_stripname_result ;;
-	esac
-	# test for cygwin because mv fails w/o .exe extensions
-	case $host in
-	  *cygwin*)
-	    exeext=.exe
-	    func_stripname '' '.exe' "$outputname"
-	    outputname=$func_stripname_result ;;
-	  *) exeext= ;;
-	esac
-	case $host in
-	  *cygwin* | *mingw* )
-	    func_dirname_and_basename "$output" "" "."
-	    output_name=$func_basename_result
-	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
-	    $RM $cwrappersource $cwrapper
-	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_cwrapperexe_src > $cwrappersource
-
-	    # The wrapper executable is built using the $host compiler,
-	    # because it contains $host paths and files. If cross-
-	    # compiling, it, like the target executable, must be
-	    # executed on the $host or under an emulation environment.
-	    $opt_dry_run || {
-	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-	      $STRIP $cwrapper
-	    }
-
-	    # Now, create the wrapper script for func_source use:
-	    func_ltwrapper_scriptname $cwrapper
-	    $RM $func_ltwrapper_scriptname_result
-	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-	    $opt_dry_run || {
-	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
-		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-	      else
-		func_emit_wrapper no > $func_ltwrapper_scriptname_result
-	      fi
-	    }
-	  ;;
-	  * )
-	    $RM $output
-	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_wrapper no > $output
-	    chmod +x $output
-	  ;;
-	esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
-	  build_libtool_libs=no
-	else
-	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    oldobjs="$oldobjs $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	generated="$generated $gentop"
-
-	func_extract_archives $gentop $addlibs
-	oldobjs="$oldobjs $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-	cmds=$old_archive_from_new_cmds
-      else
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  oldobjs="$oldobjs $func_extract_archives_result"
-	fi
-
-	# POSIX demands no paths to be encoded in archives.  We have
-	# to avoid creating archives with duplicate basenames if we
-	# might have to extract them afterwards, e.g., when creating a
-	# static archive out of a convenience library, or when linking
-	# the entirety of a libtool archive into another (currently
-	# not supported by libtool).
-	if (for obj in $oldobjs
-	    do
-	      func_basename "$obj"
-	      $ECHO "$func_basename_result"
-	    done | sort | sort -uc >/dev/null 2>&1); then
-	  :
-	else
-	  $ECHO "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
-	  generated="$generated $gentop"
-	  func_mkdir_p "$gentop"
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  counter=1
-	  for obj in $save_oldobjs
-	  do
-	    func_basename "$obj"
-	    objbase="$func_basename_result"
-	    case " $oldobjs " in
-	    " ") oldobjs=$obj ;;
-	    *[\ /]"$objbase "*)
-	      while :; do
-		# Make sure we don't pick an alternate name that also
-		# overlaps.
-		newobj=lt$counter-$objbase
-		func_arith $counter + 1
-		counter=$func_arith_result
-		case " $oldobjs " in
-		*[\ /]"$newobj "*) ;;
-		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
-		esac
-	      done
-	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      oldobjs="$oldobjs $gentop/$newobj"
-	      ;;
-	    *) oldobjs="$oldobjs $obj" ;;
-	    esac
-	  done
-	fi
-	eval cmds=\"$old_archive_cmds\"
-
-	func_len " $cmds"
-	len=$func_len_result
-	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  cmds=$old_archive_cmds
-	else
-	  # the command line is too long to link in one step, link in parts
-	  func_verbose "using piecewise archive linking..."
-	  save_RANLIB=$RANLIB
-	  RANLIB=:
-	  objlist=
-	  concat_cmds=
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  # Is there a better way of finding the last object in the list?
-	  for obj in $save_oldobjs
-	  do
-	    last_oldobj=$obj
-	  done
-	  eval test_cmds=\"$old_archive_cmds\"
-	  func_len " $test_cmds"
-	  len0=$func_len_result
-	  len=$len0
-	  for obj in $save_oldobjs
-	  do
-	    func_len " $obj"
-	    func_arith $len + $func_len_result
-	    len=$func_arith_result
-	    func_append objlist " $obj"
-	    if test "$len" -lt "$max_cmd_len"; then
-	      :
-	    else
-	      # the above command should be used before it gets too long
-	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
-		RANLIB=$save_RANLIB
-	      fi
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
-	      objlist=
-	      len=$len0
-	    fi
-	  done
-	  RANLIB=$save_RANLIB
-	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
-	    eval cmds=\"\$concat_cmds\"
-	  else
-	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-	  fi
-	fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-	if eval test -z \"\${$var+set}\"; then
-	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	elif eval var_value=\$$var; test -z "$var_value"; then
-	  relink_command="$var=; export $var; $relink_command"
-	else
-	  func_quote_for_eval "$var_value"
-	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	fi
-      done
-      # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
-	relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-	for installed in no yes; do
-	  if test "$installed" = yes; then
-	    if test -z "$install_libdir"; then
-	      break
-	    fi
-	    output="$output_objdir/$outputname"i
-	    # Replace all uninstalled libtool libraries with the installed ones
-	    newdependency_libs=
-	    for deplib in $dependency_libs; do
-	      case $deplib in
-	      *.la)
-		func_basename "$deplib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		newdependency_libs="$newdependency_libs $libdir/$name"
-		;;
-	      *) newdependency_libs="$newdependency_libs $deplib" ;;
-	      esac
-	    done
-	    dependency_libs="$newdependency_libs"
-	    newdlfiles=
-
-	    for lib in $dlfiles; do
-	      case $lib in
-	      *.la)
-	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlfiles="$newdlfiles $libdir/$name"
-		;;
-	      *) newdlfiles="$newdlfiles $lib" ;;
-	      esac
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-	      *.la)
-		# Only pass preopened files to the pseudo-archive (for
-		# eventual linking with the app. that links it) if we
-		# didn't already link the preopened objects directly into
-		# the library:
-		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlprefiles="$newdlprefiles $libdir/$name"
-		;;
-	      esac
-	    done
-	    dlprefiles="$newdlprefiles"
-	  else
-	    newdlfiles=
-	    for lib in $dlfiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlfiles="$newdlfiles $abs"
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlprefiles="$newdlprefiles $abs"
-	    done
-	    dlprefiles="$newdlprefiles"
-	  fi
-	  $RM $output
-	  # place dlname in correct position for cygwin
-	  tdlname=$dlname
-	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
-	  esac
-	  $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
-	    $ECHO >> $output "\
-relink_command=\"$relink_command\""
-	  fi
-	done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-{ test "$mode" = link || test "$mode" = relink; } &&
-    func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $opt_debug
-    RM="$nonopt"
-    files=
-    rmforce=
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    for arg
-    do
-      case $arg in
-      -f) RM="$RM $arg"; rmforce=yes ;;
-      -*) RM="$RM $arg" ;;
-      *) files="$files $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    origobjdir="$objdir"
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	objdir="$origobjdir"
-      else
-	objdir="$dir/$origobjdir"
-      fi
-      func_basename "$file"
-      name="$func_basename_result"
-      test "$mode" = uninstall && objdir="$dir"
-
-      # Remember objdir for removal later, being careful to avoid duplicates
-      if test "$mode" = clean; then
-	case " $rmdirs " in
-	  *" $objdir "*) ;;
-	  *) rmdirs="$rmdirs $objdir" ;;
-	esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-	 { test -h "$file"; } >/dev/null 2>&1 ||
-	 test -f "$file"; then
-	:
-      elif test -d "$file"; then
-	exit_status=1
-	continue
-      elif test "$rmforce" = yes; then
-	continue
-      fi
-
-      rmfiles="$file"
-
-      case $name in
-      *.la)
-	# Possibly a libtool archive, so verify it.
-	if func_lalib_p "$file"; then
-	  func_source $dir/$name
-
-	  # Delete the libtool libraries and symlinks.
-	  for n in $library_names; do
-	    rmfiles="$rmfiles $objdir/$n"
-	  done
-	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-
-	  case "$mode" in
-	  clean)
-	    case "  $library_names " in
-	    # "  " in the beginning catches empty $dlname
-	    *" $dlname "*) ;;
-	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
-	    esac
-	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
-	    ;;
-	  uninstall)
-	    if test -n "$library_names"; then
-	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-
-	    if test -n "$old_library"; then
-	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-	    # FIXME: should reinstall the best remaining shared library.
-	    ;;
-	  esac
-	fi
-	;;
-
-      *.lo)
-	# Possibly a libtool object, so verify it.
-	if func_lalib_p "$file"; then
-
-	  # Read the .lo file
-	  func_source $dir/$name
-
-	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$pic_object"
-	  fi
-
-	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$non_pic_object"
-	  fi
-	fi
-	;;
-
-      *)
-	if test "$mode" = clean ; then
-	  noexename=$name
-	  case $file in
-	  *.exe)
-	    func_stripname '' '.exe' "$file"
-	    file=$func_stripname_result
-	    func_stripname '' '.exe' "$name"
-	    noexename=$func_stripname_result
-	    # $file with .exe has already been added to rmfiles,
-	    # add $file without .exe
-	    rmfiles="$rmfiles $file"
-	    ;;
-	  esac
-	  # Do a test to see if this is a libtool program.
-	  if func_ltwrapper_p "$file"; then
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      relink_command=
-	      func_source $func_ltwrapper_scriptname_result
-	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
-	    else
-	      relink_command=
-	      func_source $dir/$noexename
-	    fi
-
-	    # note $name still contains .exe if it was in $file originally
-	    # as does the version of $file that was added into $rmfiles
-	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles="$rmfiles $objdir/lt-$name"
-	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
-	    fi
-	  fi
-	fi
-	;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-    objdir="$origobjdir"
-
-    # Try to remove the ${objdir}s in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-	func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-{ test "$mode" = uninstall || test "$mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
-
-test -z "$mode" && {
-  help="$generic_help"
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/man/Makefile.am b/Src/Plugins/DSP/sc_serv3/GeoIP/man/Makefile.am
deleted file mode 100644
index 0db02e3c..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/man/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-man_MANS = geoipupdate.1 geoiplookup6.1 geoiplookup.1
-
-EXTRA_DIST = geoiplookup6.1.in geoiplookup.1.in geoipupdate.1.in
-
-
-edit = sed \
-	-e 's|DATADIR|$(pkgdatadir)|g' \
-	-e 's|CONF_DIR|$(sysconfdir)|g'
-
-geoipupdate.1 geoiplookup.1 geoiplookup6.1: Makefile
-	rm -f $@ $@.tmp
-	$(edit) '$(srcdir)/$@.in' >$@.tmp
-	mv $@.tmp $@
-
-geoipupdate.1: geoipupdate.1.in
-geoiplookup.1: geoiplookup.1.in
-geoiplookup6.1: geoiplookup6.1.in
-
-CLEANFILES = geoiplookup6.1 geoipupdate.1 geoiplookup.1
-
-UPDATE_MAN = $(mandir)/man1/geoipupdate.1
-LOOKUP_MAN = $(mandir)/man1/geoiplookup.1
-LOOKUP6_MAN = $(mandir)/man1/geoiplookup6.1
-
-install-data-hook:
-	cat geoipupdate.1 | sed s,DATADIR,$(pkgdatadir), | sed s,CONF_DIR,$(sysconfdir), > $(DESTDIR)$(UPDATE_MAN)
-	cat geoiplookup.1 | sed s,DATADIR,$(pkgdatadir), > $(DESTDIR)$(LOOKUP_MAN)
-	cat geoiplookup6.1 | sed s,DATADIR,$(pkgdatadir), > $(DESTDIR)$(LOOKUP6_MAN)
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/man/Makefile.in b/Src/Plugins/DSP/sc_serv3/GeoIP/man/Makefile.in
deleted file mode 100644
index 0e8b1436..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/man/Makefile.in
+++ /dev/null
@@ -1,455 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = man
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-man1dir = $(mandir)/man1
-am__installdirs = "$(DESTDIR)$(man1dir)"
-NROFF = nroff
-MANS = $(man_MANS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GEOIP_VERSION_INFO = @GEOIP_VERSION_INFO@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-man_MANS = geoipupdate.1 geoiplookup6.1 geoiplookup.1
-EXTRA_DIST = geoiplookup6.1.in geoiplookup.1.in geoipupdate.1.in
-edit = sed \
-	-e 's|DATADIR|$(pkgdatadir)|g' \
-	-e 's|CONF_DIR|$(sysconfdir)|g'
-
-CLEANFILES = geoiplookup6.1 geoipupdate.1 geoiplookup.1
-UPDATE_MAN = $(mandir)/man1/geoipupdate.1
-LOOKUP_MAN = $(mandir)/man1/geoiplookup.1
-LOOKUP6_MAN = $(mandir)/man1/geoiplookup6.1
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu man/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-man1: $(man_MANS)
-	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list=''; test -n "$(man1dir)" || exit 0; \
-	{ for i in $$list; do echo "$$i"; done; \
-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.1[a-z]*$$/p'; \
-	} | while read p; do \
-	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; echo "$$p"; \
-	done | \
-	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
-	sed 'N;N;s,\n, ,g' | { \
-	list=; while read file base inst; do \
-	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
-	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
-	  fi; \
-	done; \
-	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
-	while read files; do \
-	  test -z "$$files" || { \
-	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
-	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
-	done; }
-
-uninstall-man1:
-	@$(NORMAL_UNINSTALL)
-	@list=''; test -n "$(man1dir)" || exit 0; \
-	files=`{ for i in $$list; do echo "$$i"; done; \
-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.1[a-z]*$$/p'; \
-	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
-	test -z "$$files" || { \
-	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
-	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@list='$(MANS)'; if test -n "$$list"; then \
-	  list=`for p in $$list; do \
-	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
-	  if test -n "$$list" && \
-	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
-	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
-	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
-	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
-	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
-	    exit 1; \
-	  else :; fi; \
-	else :; fi
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(MANS)
-installdirs:
-	for dir in "$(DESTDIR)$(man1dir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man
-	@$(NORMAL_INSTALL)
-	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man: install-man1
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-man
-
-uninstall-man: uninstall-man1
-
-.MAKE: install-am install-data-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-data-hook install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-man1 install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am uninstall uninstall-am uninstall-man uninstall-man1
-
-
-geoipupdate.1 geoiplookup.1 geoiplookup6.1: Makefile
-	rm -f $@ $@.tmp
-	$(edit) '$(srcdir)/$@.in' >$@.tmp
-	mv $@.tmp $@
-
-geoipupdate.1: geoipupdate.1.in
-geoiplookup.1: geoiplookup.1.in
-geoiplookup6.1: geoiplookup6.1.in
-
-install-data-hook:
-	cat geoipupdate.1 | sed s,DATADIR,$(pkgdatadir), | sed s,CONF_DIR,$(sysconfdir), > $(DESTDIR)$(UPDATE_MAN)
-	cat geoiplookup.1 | sed s,DATADIR,$(pkgdatadir), > $(DESTDIR)$(LOOKUP_MAN)
-	cat geoiplookup6.1 | sed s,DATADIR,$(pkgdatadir), > $(DESTDIR)$(LOOKUP6_MAN)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoiplookup.1.in b/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoiplookup.1.in
deleted file mode 100644
index ede2e518..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoiplookup.1.in
+++ /dev/null
@@ -1,37 +0,0 @@
-.TH GEOIPLOOKUP 1 "2 Jan 2007"
-.UC 4
-.SH NAME
-geoiplookup \- look up country using IP Address or hostname
-.SH SYNOPSIS
-geoiplookup [\-d directory] [\-f filename] [\-v] <ipaddress|hostname>
-.SH DESCRIPTION
-geoiplookup uses the GeoIP library and database to find the Country
-that an IP address or hostname originates from.
-.PP
-For example
-.PP
-.I geoiplookup 80.60.233.195
-.PP
-will find the Country that 80.60.233.195 originates from, in the following format:
-.PP
-.I NL, Netherlands
-.PP
-.SH OPTIONS
-.IP "\-f"
-Specify a custom path to a single GeoIP datafile.
-.IP "\-d"
-Specify a custom directory containing GeoIP datafile(s).  By default geoiplookup looks in DATADIR
-.IP "\-v"
-Lists the date and build number for the GeoIP datafile(s).
-.SH AUTHOR
-Written by T.J. Mather
-.SH "REPORTING BUGS"
-Report bugs to <support@maxmind.com>
-.SH COPYRIGHT
-Copyright � 2006 MaxMind LLC
-
-This is free software; see the source for copying conditions.
-There is NO warranty; not even for MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.
-.SH "SEE ALSO"
-geoipupdate(1), nslookup(1).
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoiplookup6.1.in b/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoiplookup6.1.in
deleted file mode 100644
index 2a49ee1a..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoiplookup6.1.in
+++ /dev/null
@@ -1,42 +0,0 @@
-.TH GEOIPLOOKUP6 1 "28 Oct 2008"
-.UC 4
-.SH NAME
-geouplookup6 \- look up country using IP Address or hostname
-.SH SYNOPSIS
-geouplookup6 [\-d directory] [\-f filename] [\-v] <ipaddress|hostname>
-.SH DESCRIPTION
-geouplookup6 uses the GeoIP library and database to find the Country
-that an IP address or hostname originates from. You must install a database suitable for geoiplookup6. IE: GeoIPv6.dat
-.PP
-For example:
-.PP
-.I geouplookup6 2001:4860:0:1001::68
-.PP
-.I geoiplookup6 ipv6.google.com
-.PP
-will find the Country that 2001:4860:0:1001::68 originates from, in the following format:
-.PP
-.I US, United States
-.PP
-.PP Please notice, that names must resolve to a ipv6 address. For example
-.PP geoiplookup6 www.maxmind.com does not work, since there is no ipv6 
-.PP DNS entry
-.SH OPTIONS
-.IP "\-f"
-Specify a custom path to a single GeoIP datafile.
-.IP "\-d"
-Specify a custom directory containing GeoIP datafile(s).  By default geouplookup6 looks in DATADIR
-.IP "\-v"
-Lists the date and build number for the GeoIP datafile(s).
-.SH AUTHOR
-Written by T.J. Mather
-.SH "REPORTING BUGS"
-Report bugs to <support@maxmind.com>
-.SH COPYRIGHT
-Copyright � 2008 MaxMind LLC
-
-This is free software; see the source for copying conditions.
-There is NO warranty; not even for MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.
-.SH "SEE ALSO"
-geoipupdate(1), nslookup(1).
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoipupdate.1.in b/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoipupdate.1.in
deleted file mode 100644
index c0f9a854..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/man/geoipupdate.1.in
+++ /dev/null
@@ -1,68 +0,0 @@
-.TH GEOIPUPDATE 1 "5 Oct 2010"
-.UC 4
-.SH NAME
-geoipupdate \- a program for updating the MaxMind GeoIP databases
-.SH SYNOPSIS
-geoipupdate [\-v] [\-f licensefile]
-.SH DESCRIPTION
-geoipupdate automatically updates the GeoIP database for GeoIP
-subscribers.  It connects to the MaxMind GeoIP Update server
-and checks for an updated database.  If it finds an updated
-database, then it downloads it, uncompresses it, and installs it.
-If you are running a firewall, it requires that the DNS and
-HTTP (80) ports be open.
-.PP
-For example
-.PP
-.I geoipupdate \-v
-.PP
-Performs the update in verbose mode.
-.PP
-.SH OPTIONS
-.IP "\-v"
-Verbose mode, prints out the steps that geoipupdate takes.
-.IP "\-d"
-Specify a custom directory target to install the GeoIP datafile(s).  By default geoipupdate installs to DATADIR
-.IP "\-f"
-Specifies the configuration file that contains the license key.
-Defaults to CONF_DIR/GeoIP.conf
-.SH USAGE
-Typically you'll want to write a weekly crontab that will run geoipupdate.
-Below is a sample crontab that runs geoipupdate on each Wednesday at noon:
-.PP
-.RS
-# top of crontab
-.PP
-MAILTO=your@email.com
-.PP
-0 12 * * 3 BIN_DIR/geoipupdate
-.PP
-# end of crontab
-.RE
-To use with a proxy server, set the http_proxy environment variable.
-E.g.
-.RS
-export http_proxy="http://proxy-hostname:port"
-.RE
-.SH RETURN CODES
-geoipupdate returns 0 on success, 1 on error.
-.SH FILES
-.PP
-.I CONF_DIR/GeoIP.conf
-.PP
-Configuration file for GeoIP, should contain license key.
-.SH AUTHOR
-Written by T.J. Mather
-.SH "REPORTING BUGS"
-Report bugs to <support@maxmind.com>
-.SH COPYRIGHT
-Copyright � 2011 MaxMind LLC
-
-This is free software; see the source for copying conditions.
-There is NO warranty; not even for MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.
-.SH "SEE ALSO"
-Visit <http://www.maxmind.com/app/products> to
-sign up for a GeoIP subscription.
-.PP
-geoiplookup(1), crontab(5)
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/missing b/Src/Plugins/DSP/sc_serv3/GeoIP/missing
deleted file mode 100644
index 28055d2a..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/missing
+++ /dev/null
@@ -1,376 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f y.tab.h; then
-	echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f lex.yy.c; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-	/^@setfilename/{
-	  s/.* \([^ ]*\) *$/\1/
-	  p
-	  q
-	}' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.am b/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.am
deleted file mode 100644
index fffcbed3..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-INCLUDES =	\
-	-I$(top_srcdir)/libGeoIP		\
-	-Wall
-
-check_PROGRAMS = test-geoip
-
-noinst_PROGRAMS = benchmark test-geoip-region test-geoip-city test-geoip-org test-geoip-asnum test-geoip-isp test-geoip-netspeed
-
-EXTRA_PROGRAMS = benchmark \
-		 test-geoip-region \
-		 test-geoip-city \
-		 test-geoip-org \
-		 test-geoip-asnum \
-		 test-geoip-isp \
-		 test-geoip-netspeed
-
-LDADD = $(top_builddir)/libGeoIP/libGeoIP.la
-AM_CPPFLAGS = -DSRCDIR=\"$(top_srcdir)\"
-
-test_geoip_SOURCES = test-geoip.c
-
-test_geoip_region_SOURCES = test-geoip-region.c
-
-test_geoip_org_SOURCES = test-geoip-org.c
-
-test_geoip_isp_SOURCES = test-geoip-isp.c
-
-test_geoip_asnum_SOURCES = test-geoip-asnum.c
-
-test_geoip_netspeed_SOURCES = test-geoip-netspeed.c
-
-test_geoip_city_SOURCES = test-geoip-city.c
-
-benchmark_SOURCES = benchmark.c
-
-EXTRA_DIST = Makefile.vc city_test.txt country_test.txt country_test2.txt country_test_name.txt region_test.txt 
-TESTS = test-geoip
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.in b/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.in
deleted file mode 100644
index 6d1282bd..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.in
+++ /dev/null
@@ -1,657 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-check_PROGRAMS = test-geoip$(EXEEXT)
-noinst_PROGRAMS = benchmark$(EXEEXT) test-geoip-region$(EXEEXT) \
-	test-geoip-city$(EXEEXT) test-geoip-org$(EXEEXT) \
-	test-geoip-asnum$(EXEEXT) test-geoip-isp$(EXEEXT) \
-	test-geoip-netspeed$(EXEEXT)
-EXTRA_PROGRAMS = benchmark$(EXEEXT) test-geoip-region$(EXEEXT) \
-	test-geoip-city$(EXEEXT) test-geoip-org$(EXEEXT) \
-	test-geoip-asnum$(EXEEXT) test-geoip-isp$(EXEEXT) \
-	test-geoip-netspeed$(EXEEXT)
-TESTS = test-geoip$(EXEEXT)
-subdir = test
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_benchmark_OBJECTS = benchmark.$(OBJEXT)
-benchmark_OBJECTS = $(am_benchmark_OBJECTS)
-benchmark_LDADD = $(LDADD)
-benchmark_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-am_test_geoip_OBJECTS = test-geoip.$(OBJEXT)
-test_geoip_OBJECTS = $(am_test_geoip_OBJECTS)
-test_geoip_LDADD = $(LDADD)
-test_geoip_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-am_test_geoip_asnum_OBJECTS = test-geoip-asnum.$(OBJEXT)
-test_geoip_asnum_OBJECTS = $(am_test_geoip_asnum_OBJECTS)
-test_geoip_asnum_LDADD = $(LDADD)
-test_geoip_asnum_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-am_test_geoip_city_OBJECTS = test-geoip-city.$(OBJEXT)
-test_geoip_city_OBJECTS = $(am_test_geoip_city_OBJECTS)
-test_geoip_city_LDADD = $(LDADD)
-test_geoip_city_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-am_test_geoip_isp_OBJECTS = test-geoip-isp.$(OBJEXT)
-test_geoip_isp_OBJECTS = $(am_test_geoip_isp_OBJECTS)
-test_geoip_isp_LDADD = $(LDADD)
-test_geoip_isp_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-am_test_geoip_netspeed_OBJECTS = test-geoip-netspeed.$(OBJEXT)
-test_geoip_netspeed_OBJECTS = $(am_test_geoip_netspeed_OBJECTS)
-test_geoip_netspeed_LDADD = $(LDADD)
-test_geoip_netspeed_DEPENDENCIES =  \
-	$(top_builddir)/libGeoIP/libGeoIP.la
-am_test_geoip_org_OBJECTS = test-geoip-org.$(OBJEXT)
-test_geoip_org_OBJECTS = $(am_test_geoip_org_OBJECTS)
-test_geoip_org_LDADD = $(LDADD)
-test_geoip_org_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-am_test_geoip_region_OBJECTS = test-geoip-region.$(OBJEXT)
-test_geoip_region_OBJECTS = $(am_test_geoip_region_OBJECTS)
-test_geoip_region_LDADD = $(LDADD)
-test_geoip_region_DEPENDENCIES = $(top_builddir)/libGeoIP/libGeoIP.la
-DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = $(benchmark_SOURCES) $(test_geoip_SOURCES) \
-	$(test_geoip_asnum_SOURCES) $(test_geoip_city_SOURCES) \
-	$(test_geoip_isp_SOURCES) $(test_geoip_netspeed_SOURCES) \
-	$(test_geoip_org_SOURCES) $(test_geoip_region_SOURCES)
-DIST_SOURCES = $(benchmark_SOURCES) $(test_geoip_SOURCES) \
-	$(test_geoip_asnum_SOURCES) $(test_geoip_city_SOURCES) \
-	$(test_geoip_isp_SOURCES) $(test_geoip_netspeed_SOURCES) \
-	$(test_geoip_org_SOURCES) $(test_geoip_region_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GEOIP_VERSION_INFO = @GEOIP_VERSION_INFO@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-INCLUDES = \
-	-I$(top_srcdir)/libGeoIP		\
-	-Wall
-
-LDADD = $(top_builddir)/libGeoIP/libGeoIP.la
-AM_CPPFLAGS = -DSRCDIR=\"$(top_srcdir)\"
-test_geoip_SOURCES = test-geoip.c
-test_geoip_region_SOURCES = test-geoip-region.c
-test_geoip_org_SOURCES = test-geoip-org.c
-test_geoip_isp_SOURCES = test-geoip-isp.c
-test_geoip_asnum_SOURCES = test-geoip-asnum.c
-test_geoip_netspeed_SOURCES = test-geoip-netspeed.c
-test_geoip_city_SOURCES = test-geoip-city.c
-benchmark_SOURCES = benchmark.c
-EXTRA_DIST = Makefile.vc city_test.txt country_test.txt country_test2.txt country_test_name.txt region_test.txt 
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu test/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-checkPROGRAMS:
-	@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-benchmark$(EXEEXT): $(benchmark_OBJECTS) $(benchmark_DEPENDENCIES) 
-	@rm -f benchmark$(EXEEXT)
-	$(LINK) $(benchmark_OBJECTS) $(benchmark_LDADD) $(LIBS)
-test-geoip$(EXEEXT): $(test_geoip_OBJECTS) $(test_geoip_DEPENDENCIES) 
-	@rm -f test-geoip$(EXEEXT)
-	$(LINK) $(test_geoip_OBJECTS) $(test_geoip_LDADD) $(LIBS)
-test-geoip-asnum$(EXEEXT): $(test_geoip_asnum_OBJECTS) $(test_geoip_asnum_DEPENDENCIES) 
-	@rm -f test-geoip-asnum$(EXEEXT)
-	$(LINK) $(test_geoip_asnum_OBJECTS) $(test_geoip_asnum_LDADD) $(LIBS)
-test-geoip-city$(EXEEXT): $(test_geoip_city_OBJECTS) $(test_geoip_city_DEPENDENCIES) 
-	@rm -f test-geoip-city$(EXEEXT)
-	$(LINK) $(test_geoip_city_OBJECTS) $(test_geoip_city_LDADD) $(LIBS)
-test-geoip-isp$(EXEEXT): $(test_geoip_isp_OBJECTS) $(test_geoip_isp_DEPENDENCIES) 
-	@rm -f test-geoip-isp$(EXEEXT)
-	$(LINK) $(test_geoip_isp_OBJECTS) $(test_geoip_isp_LDADD) $(LIBS)
-test-geoip-netspeed$(EXEEXT): $(test_geoip_netspeed_OBJECTS) $(test_geoip_netspeed_DEPENDENCIES) 
-	@rm -f test-geoip-netspeed$(EXEEXT)
-	$(LINK) $(test_geoip_netspeed_OBJECTS) $(test_geoip_netspeed_LDADD) $(LIBS)
-test-geoip-org$(EXEEXT): $(test_geoip_org_OBJECTS) $(test_geoip_org_DEPENDENCIES) 
-	@rm -f test-geoip-org$(EXEEXT)
-	$(LINK) $(test_geoip_org_OBJECTS) $(test_geoip_org_LDADD) $(LIBS)
-test-geoip-region$(EXEEXT): $(test_geoip_region_OBJECTS) $(test_geoip_region_DEPENDENCIES) 
-	@rm -f test-geoip-region$(EXEEXT)
-	$(LINK) $(test_geoip_region_OBJECTS) $(test_geoip_region_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/benchmark.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-geoip-asnum.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-geoip-city.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-geoip-isp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-geoip-netspeed.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-geoip-org.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-geoip-region.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-geoip.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	$(am__tty_colors); \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=XPASS; \
-	      ;; \
-	      *) \
-		col=$$grn; res=PASS; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		col=$$lgn; res=XFAIL; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=FAIL; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      col=$$blu; res=SKIP; \
-	    fi; \
-	    echo "$${col}$$res$${std}: $$tst"; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
-	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
-	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
-	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
-	    else \
-	      skipped="($$skip tests were not run)"; \
-	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  if test "$$failed" -eq 0; then \
-	    echo "$$grn$$dashes"; \
-	  else \
-	    echo "$$red$$dashes"; \
-	  fi; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes$$std"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
-	clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool \
-	clean-noinstPROGRAMS ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.vc b/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.vc
deleted file mode 100644
index eaa23763..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/Makefile.vc
+++ /dev/null
@@ -1,29 +0,0 @@
-#NMAKE makefile for Windows developers. 
-#Produces a static library (GeoIP.lib). 
- 
-COMPILER=cl 
- 
-LINK = link -nologo 
- 
-CFLAGS=-DWIN32 -MD -nologo 
- 
-GEOIPINC = -I..\libGeoIP 
- 
-CC1 = $(COMPILER) $(CFLAGS) $(GEOIPINC) 
- 
-GEOIPLIB = ..\libGeoIP\GeoIP.lib 
- 
-EXTRA_LIBS= advapi32.lib wsock32.lib 
- 
-AR=lib 
- 
-TEST: benchmark.exe test-geoip.exe 
- 
-benchmark.exe: benchmark.c 
-   $(CC1) -c benchmark.c 
-   $(LINK) benchmark.obj $(GEOIPLIB) 
- 
-test-geoip.exe: test-geoip.c 
-   $(CC1) -c test-geoip.c 
-   $(LINK) test-geoip.obj $(GEOIPLIB)
-
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/benchmark.c b/Src/Plugins/DSP/sc_serv3/GeoIP/test/benchmark.c
deleted file mode 100644
index 3d2346f2..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/benchmark.c
+++ /dev/null
@@ -1,135 +0,0 @@
-#include <stdio.h>
-#include <GeoIP.h>
-#include <GeoIPCity.h>
-#if !defined(_WIN32)
-#include <sys/time.h>
-#endif /* !defined(_WIN32) */
-
-char *ipstring[4] = {"24.24.24.24","80.24.24.80",
-"200.24.24.40","68.24.24.46"};
-int numipstrings = 4;
-
-#if !defined(_WIN32)
-struct timeval timer_t1;
-struct timeval timer_t2;
-#else /* !defined(_WIN32) */ 
-FILETIME timer_t1; /* 100 ns */ 
-FILETIME timer_t2; 
-#endif /* !defined(_WIN32) */ 
-
-#if !defined(_WIN32)
-void timerstart() {
-  gettimeofday(&timer_t1,NULL);
-}
-double timerstop() {
-  int a1 = 0;
-  int a2 = 0;
-  double r = 0;
-  gettimeofday(&timer_t2,NULL);
-  a1 = timer_t2.tv_sec - timer_t1.tv_sec;
-  a2 = timer_t2.tv_usec - timer_t1.tv_usec;
-  if (a1 < 0) {
-    a1 = a1 - 1;
-    a2 = a2 + 1000000;
-  }
-  r = (((double) a1) + (((double) a2) / 1000000));
-  return r;
-}
-#else /* !defined(_WIN32) */ 
-void timerstart() { 
-  GetSystemTimeAsFileTime(&timer_t1); 
-} 
-double timerstop() { 
-  __int64 delta; /* VC6 can't convert an unsigned int64 to to double */ 
-  GetSystemTimeAsFileTime(&timer_t2); 
-  delta = FILETIME_TO_USEC(timer_t2) - FILETIME_TO_USEC(timer_t2); 
-  return delta; 
-} 
-#endif /* !defined(_WIN32) */ 
-
-void testgeoipcountry(int flags,const char *msg,int numlookups) {
-  const char *str = NULL;
-  double t = 0;
-  int i4 = 0;
-  int i2 = 0;
-  GeoIP *i = NULL;
-  i = GeoIP_open("/usr/local/share/GeoIP/GeoIP.dat",flags);
-  if (i == NULL) {
-    printf("error: GeoIP.dat does not exist\n");
-    return;
-  }
-  timerstart();
-  for (i2 = 0;i2 < numlookups;i2++) {
-    str = GeoIP_country_name_by_addr(i,ipstring[i4]);
-    i4 = (i4 + 1) % numipstrings;
-  }
-  t = timerstop();
-  printf("%s\n", msg);
-  printf("%d lookups made in %f seconds \n",numlookups,t);
-  GeoIP_delete(i);
-}
-
-void testgeoipregion(int flags,const char *msg,int numlookups) {
-  GeoIP *i = NULL;
-  GeoIPRegion *i3 = NULL;
-  int i4 = 0;
-  int i2 = 0;
-  double t = 0;
-  i = GeoIP_open("/usr/local/share/GeoIP/GeoIPRegion.dat",flags);
-  if (i == NULL) {
-    printf("error: GeoIPRegion.dat does not exist\n");
-    return;
-  }
-  timerstart();
-  for (i2 = 0;i2 < numlookups;i2++) {
-    i3 = GeoIP_region_by_addr(i,ipstring[i4]);
-    GeoIPRegion_delete(i3); 
-    i4 = (i4 + 1) % numipstrings;
-  }
-  t = timerstop();
-  printf("%s\n", msg);
-  printf("%d lookups made in %f seconds \n",numlookups,t);
-  GeoIP_delete(i);
-}
-
-void testgeoipcity(int flags,const char *msg,int numlookups) {
-  GeoIP *i = NULL;
-  GeoIPRecord * i3 = NULL;
-  int i4 = 0;
-  int i2 = 0;
-  double t = 0;
-  i = GeoIP_open("/usr/local/share/GeoIP/GeoIPCity.dat",flags);
-  if (i == NULL) {
-    printf("error: GeoLiteCity.dat does not exist\n");
-    return;
-  }
-  timerstart();
-  for (i2 = 0;i2 < numlookups;i2++) {
-    i3 = GeoIP_record_by_addr(i,ipstring[i4]);
-    GeoIPRecord_delete(i3);
-    i4 = (i4 + 1) % numipstrings;
-  }
-  t = timerstop();
-  printf("%s\n", msg);
-  printf("%d lookups made in %f seconds \n",numlookups,t);
-  GeoIP_delete(i);
-}
-
-int main(){
-  int time = 300*numipstrings;
-  testgeoipcountry(0,"GeoIP Country",100*time);
-  testgeoipcountry(GEOIP_CHECK_CACHE,"GeoIP Country with GEOIP_CHECK_CACHE",100*time);
-  testgeoipcountry(GEOIP_MEMORY_CACHE,"GeoIP Country with GEOIP_MEMORY_CACHE",1000*time);
-  testgeoipcountry(GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE,"GeoIP Country with GEOIP_MEMORY_CACHE and GEOIP_CHECK_CACHE",1000*time);
-
-  testgeoipregion(0,"GeoIP Region",100*time);
-  testgeoipregion(GEOIP_CHECK_CACHE,"GeoIP Region with GEOIP_CHECK_CACHE",100*time);
-  testgeoipregion(GEOIP_MEMORY_CACHE,"GeoIP Region with GEOIP_MEMORY_CACHE",1000*time);
-  testgeoipregion(GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE,"GeoIP Region with GEOIP_MEMORY_CACHE and GEOIP_CHECK_CACHE",1000*time);
-
-  testgeoipcity(0,"GeoIP City",50*time);
-  testgeoipcity(GEOIP_INDEX_CACHE,"GeoIP City with GEOIP_INDEX_CACHE",200*time);
-  testgeoipcity(GEOIP_INDEX_CACHE | GEOIP_CHECK_CACHE,"GeoIP City with GEOIP_INDEX_CACHE and GEOIP_CHECK_CACHE",200*time);
-  testgeoipcity(GEOIP_MEMORY_CACHE,"GeoIP City with GEOIP_MEMORY_CACHE",500*time);
-  return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/city_test.txt b/Src/Plugins/DSP/sc_serv3/GeoIP/test/city_test.txt
deleted file mode 100644
index 20cd8e15..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/city_test.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-24.24.24.24	# Should return Ithaca, NY, US
-80.24.24.24	# Should return Madrid, 29, ES
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test.txt b/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test.txt
deleted file mode 100644
index eaffb935..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-216.236.135.152	US	USA
-192.106.51.100	IT	ITA
-147.251.48.1	CZ	CZE
-203.174.65.12	JP	JPN
-212.208.74.140	FR	FRA
-200.219.192.106	BR	BRA
-134.102.101.18	DE	DEU
-193.75.148.28	BE	BEL
-194.244.83.2	IT	ITA
-203.15.106.23	AU	AUS
-196.31.1.1	ZA	ZAF
-151.28.39.114	IT	ITA
-151.38.70.94	IT	ITA
-193.56.4.124	FR	FRA
-195.142.146.198	TR	TUR
-211.232.0.0	KR	KOR
-211.240.0.0	KR	KOR
-193.194.4.0	MA	MAR
-139.20.112.104	DE	DEU
-139.20.112.3	DE	DEU
-145.236.125.211	HU	HUN
-149.225.169.61	DE	DEU
-151.17.191.46	IT	ITA
-151.24.176.194	IT	ITA
-151.25.8.136	IT	ITA
-151.26.146.192	IT	ITA
-151.26.153.66	IT	ITA
-151.26.167.71	IT	ITA
-151.26.35.204	IT	ITA
-151.26.64.157	IT	ITA
-151.27.138.182	IT	ITA
-151.28.39.114	IT	ITA
-151.29.150.217	IT	ITA
-151.29.237.39	IT	ITA
-151.29.73.189	IT	ITA
-151.30.134.242	IT	ITA
-151.30.135.85	IT	ITA
-151.30.168.224	IT	ITA
-151.35.80.202	IT	ITA
-151.35.80.240	IT	ITA
-151.36.191.229	IT	ITA
-151.38.70.94	IT	ITA
-151.38.92.126	IT	ITA
-151.42.100.132	IT	ITA
-151.42.169.71	IT	ITA
-193.56.4.124	FR	FRA
-195.142.146.198	TR	TUR
-195.142.49.205	TR	TUR
-202.247.74.18	JP	JPN
-202.247.74.71	JP	JPN
-202.247.74.81	JP	JPN
-202.247.74.88	JP	JPN
-203.242.239.188	KR	KOR
-203.174.65.12	JP	JPN
-212.208.74.140	FR	FRA
-200.219.192.106	BR	BRA
-202.53.254.193	ID	IDN
-12.168.0.0	US	USA
-12.169.0.0	US	USA
-12.200.0.0	US	USA
-203.121.0.8	MY	MYS
-203.20.231.1	AU	AUS
-203.87.98.29	AU	AUS
-203.181.121.150	JP	JPN
-202.166.127.246	SG	SGP
-62.188.202.242	GB	GBR
-12.12.197.23	US	USA
-12.12.199.3	US	USA
-12.12.200.79	US	USA
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test2.txt b/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test2.txt
deleted file mode 100644
index eb078a83..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test2.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-212.118.5.94	JO
-64.170.57.29	US
-202.7.216.215	AU
-212.33.164.149	SA
-68.96.110.210	US
-213.166.131.168	SA
-64.158.191.179	US
-24.247.251.23	US
-203.199.228.66	IN
-195.14.141.225	CY
-200.52.94.98	MX
-203.197.187.193	IN
-203.128.9.170	PK
-144.106.240.140	US
-195.248.180.102	UA
-213.1.0.118	GB
-64.255.148.52	US
-12.78.124.119	US
-212.68.224.183	BE
-62.148.73.85	PL
-203.146.135.180	TH
-209.204.179.145	US
-64.123.0.164	US
-202.56.198.16	IN
-61.0.94.172	IN
-62.42.171.190	ES
-192.117.245.177	IL
-213.123.75.243	GB
-80.56.171.62	NL
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test_name.txt b/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test_name.txt
deleted file mode 100644
index 366b2f26..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/country_test_name.txt
+++ /dev/null
@@ -1 +0,0 @@
-yahoo.com	US
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/region_test.txt b/Src/Plugins/DSP/sc_serv3/GeoIP/test/region_test.txt
deleted file mode 100644
index 4df7ea79..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/region_test.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-216.236.135.152	US	USA
-24.24.24.24	US	USA
-147.251.48.1	CZ	CZE
-203.174.65.12	JP	JPN
-212.208.74.140	FR	FRA
-200.219.192.106	BR	BRA
-134.102.101.18	DE	DEU
-193.75.148.28	BE	BEL
-194.244.83.2	IT	ITA
-203.15.106.23	AU	AUS
-196.31.1.1	ZA	ZAF
-151.28.39.114	IT	ITA
-151.38.70.94	IT	ITA
-193.56.4.124	FR	FRA
-195.142.146.198	TR	TUR
-211.232.0.0	KR	KOR
-211.240.0.0	KR	KOR
-193.194.4.0	MA	MAR
-139.20.112.104	DE	DEU
-139.20.112.3	DE	DEU
-145.236.125.211	HU	HUN
-yahoo.com	US	USA
-amazon.com	US	USA
-www.uspto.gov	US	USA
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-asnum.c b/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-asnum.c
deleted file mode 100644
index d6c3afcd..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-asnum.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* test-geoip-asnum.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "GeoIP.h"
-
-static const char * _mk_NA( const char * p ){
- return p ? p : "N/A";
-}
-
-int main (int argc, char* argv[]) {
-	FILE *f;
-	GeoIP * gi;
-        char * org;
-	int generate = 0;
-	char host[50];
-
-	if (argc == 2)
-		if (!strcmp(argv[1],"gen"))
-			generate = 1;
-
-	gi = GeoIP_open("../data/GeoIPASNum.dat", GEOIP_STANDARD);
-
-	if (gi == NULL) {
-		fprintf(stderr, "Error opening database\n");
-		exit(1);
-	}
-
-	f = fopen("asnum_test.txt","r");
-
-	if (f == NULL) {
-		fprintf(stderr, "Error opening asnum_test.txt\n");
-		exit(1);
-	}
-
-	while (fscanf(f, "%s", host) != EOF) {
-		org = GeoIP_org_by_name (gi, (const char *)host);
-
-		if (org != NULL) {
-                  printf("%s\t%s\n", host, _mk_NA(org));
-		}
-	}
-
-	GeoIP_delete(gi);
-
-	return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-city.c b/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-city.c
deleted file mode 100644
index 4a48fdea..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-city.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* test-geoip-city.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "GeoIP.h"
-#include "GeoIPCity.h"
-
-
-static const char * _mk_NA( const char * p ){
- return p ? p : "N/A";
-}
-
-int 
-main(int argc, char *argv[])
-{
-  FILE           *f;
-  GeoIP          *gi;
-  GeoIPRecord    *gir;
-  int             generate = 0;
-  char            host[50];
-  const char     *time_zone = NULL;
-  char          **ret;
-  if (argc == 2)
-    if (!strcmp(argv[1], "gen"))
-      generate = 1;
-
-  gi = GeoIP_open("../data/GeoIPCity.dat", GEOIP_INDEX_CACHE);
-
-  if (gi == NULL) {
-    fprintf(stderr, "Error opening database\n");
-    exit(1);
-  }
-
-  f = fopen("city_test.txt", "r");
-
-  if (f == NULL) {
-    fprintf(stderr, "Error opening city_test.txt\n");
-    exit(1);
-  }
-
-  while (fscanf(f, "%s", host) != EOF) {
-    gir = GeoIP_record_by_name(gi, (const char *) host);
-
-    if (gir != NULL) {
-      ret = GeoIP_range_by_ip(gi, (const char *) host);
-      time_zone = GeoIP_time_zone_by_country_and_region(gir->country_code, gir->region);
-      printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%f\t%d\t%d\t%s\t%s\t%s\n", host,
-	     _mk_NA(gir->country_code),
-	     _mk_NA(gir->region),
-	     _mk_NA(GeoIP_region_name_by_code(gir->country_code, gir->region)),
-	     _mk_NA(gir->city),
-	     _mk_NA(gir->postal_code),
-	     gir->latitude,
-	     gir->longitude,
-	     gir->metro_code,
-	     gir->area_code,
-	     _mk_NA(time_zone),
-	     ret[0],
-	     ret[1]);
-      GeoIP_range_by_ip_delete(ret);
-      GeoIPRecord_delete(gir);
-    }
-  }
-  GeoIP_delete(gi);
-  return 0;
-
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-isp.c b/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-isp.c
deleted file mode 100644
index d6212b86..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-isp.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* test-geoip-isp.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "GeoIP.h"
-
-static const char * _mk_NA( const char * p ){
- return p ? p : "N/A";
-}
-
-int main (int argc, char* argv[]) {
-	FILE *f;
-	GeoIP * gi;
-        char * org;
-	int generate = 0;
-	char host[50];
-
-	if (argc == 2)
-		if (!strcmp(argv[1],"gen"))
-			generate = 1;
-
-	gi = GeoIP_open("../data/GeoIPISP.dat", GEOIP_STANDARD);
-
-	if (gi == NULL) {
-		fprintf(stderr, "Error opening database\n");
-		exit(1);
-	}
-
-	f = fopen("isp_test.txt","r");
-
-	if (f == NULL) {
-		fprintf(stderr, "Error opening isp_test.txt\n");
-		exit(1);
-	}
-
-	while (fscanf(f, "%s", host) != EOF) {
-		org = GeoIP_org_by_name (gi, (const char *)host);
-
-		if (org != NULL) {
-			printf("%s\t%s\n", host, _mk_NA(org));
-			free(org);
-		}
-	}
-
-	fclose(f);
-	GeoIP_delete(gi);
-
-	return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-netspeed.c b/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-netspeed.c
deleted file mode 100644
index 05def4e9..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-netspeed.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* test-geoip-netspeed.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "GeoIP.h"
-
-int main (int argc, char* argv[]) {
-	FILE *f;
-	GeoIP * gi;
-	int netspeed;
-	char host[50];
-
-	gi = GeoIP_open("../data/GeoIPNetSpeed.dat", GEOIP_STANDARD);
-
-	if (gi == NULL) {
-		fprintf(stderr, "Error opening database\n");
-		exit(1);
-	}
-
-	f = fopen("netspeed_test.txt","r");
-
-	if (f == NULL) {
-		fprintf(stderr, "Error opening netspeed_test.txt\n");
-		exit(1);
-	}
-
-	while (fscanf(f, "%s", host) != EOF) {
-		netspeed = GeoIP_id_by_name (gi, (const char *)host);
-		if (netspeed == GEOIP_UNKNOWN_SPEED) {
-			printf("%s\tUnknown\n", host);
-		} else if (netspeed == GEOIP_DIALUP_SPEED) {
-			printf("%s\tDialup\n", host);
-		} else if (netspeed == GEOIP_CABLEDSL_SPEED) {
-			printf("%s\tCable/DSL\n", host);
-		} else if (netspeed == GEOIP_CORPORATE_SPEED) {
-			printf("%s\tCorporate\n", host);
-		}
-	}
-	fclose(f);
-	GeoIP_delete(gi);
-
-	return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-org.c b/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-org.c
deleted file mode 100644
index 74ba01be..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-org.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* test-geoip-org.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-
-#include "GeoIP.h"
-
-static const char * _mk_NA( const char * p ){
- return p ? p : "N/A";
-}
-
-int 
-main(int argc, char *argv[])
-{
-  FILE           *f;
-  GeoIP          *gi;
-  char           *org;
-  int             generate = 0;
-  char            host[50];
-  char          **ret;
-  if (argc == 2)
-    if (!strcmp(argv[1], "gen"))
-      generate = 1;
-
-  gi = GeoIP_open("../data/GeoIPOrg.dat", GEOIP_INDEX_CACHE);
-
-  if (gi == NULL) {
-    fprintf(stderr, "Error opening database\n");
-    exit(1);
-  }
-
-  f = fopen("org_test.txt", "r");
-
-  if (f == NULL) {
-    fprintf(stderr, "Error opening org_test.txt\n");
-    exit(1);
-  }
-
-  printf("IP\torganization\tnetmask\tbeginIp\tendIp\n");
-  while (fscanf(f, "%s", host) != EOF) {
-    org = GeoIP_name_by_name(gi, (const char *) host);
-
-    if (org != NULL) {
-      ret = GeoIP_range_by_ip(gi, (const char *) host);
-
-      printf("%s\t%s\t%d\t%s\t%s\n", host, _mk_NA(org), GeoIP_last_netmask(gi), ret[0], ret[1]);
-      GeoIP_range_by_ip_delete(ret);
-      free(org);
-    }
-  }
-
-  fclose(f);
-  GeoIP_delete(gi);
-  return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-region.c b/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-region.c
deleted file mode 100644
index 0be75177..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip-region.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* test-geoip-region.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include <GeoIP.h>
-#include <sys/types.h> /* For uint32_t */
-#ifdef HAVE_STDINT_H
-#include <stdint.h>     /* For uint32_t */
-#endif
-#if !defined(_WIN32)
-#include <netdb.h>  /* For gethostbyname */
-#include <netinet/in.h> /* For ntohl */
-#else
-#include <windows.h>
-#include <winsock.h>
-#endif
-#include <assert.h>
-
-unsigned long inetaddr(const char * name)
-{
-	struct hostent * host;
-	struct in_addr inaddr;
-
-	host = gethostbyname(name);       assert(host);
-	inaddr.s_addr = *((uint32_t*)host->h_addr_list[0]);
-	return inaddr.s_addr;
-}
-
-static const char * _mk_NA ( const char * p ){
-  return p ? p : "N/A";
-}
-
-int main () {
-	GeoIP * gi;
-	GeoIPRegion * gir, giRegion;
-
-  FILE *f;
-  char ipAddress[30];
-  char expectedCountry[3];
-  char expectedCountry3[4];
-  const char * time_zone;
-
-	gi = GeoIP_open("../data/GeoIPRegion.dat", GEOIP_MEMORY_CACHE);
-
-	if (gi == NULL) {
-		fprintf(stderr, "Error opening database\n");
-		exit(1);
-	}
-
-  f = fopen("region_test.txt","r");
-
-	if (f == NULL) {
-		fprintf(stderr, "Error opening region_test.txt\n");
-		exit(1);
-	}
-
-	gir = GeoIP_region_by_addr (gi, "10.0.0.0");
-	if (gir != NULL) {
-		printf("lookup of private IP address: country = %s, region = %s\n", gir->country_code, gir->region);
-	}
-
-  while (fscanf(f, "%s%s%s", ipAddress, expectedCountry, expectedCountry3 ) != EOF) {
-		printf("ip = %s\n",ipAddress);
-
-		gir = GeoIP_region_by_name (gi, ipAddress);
-		time_zone = GeoIP_time_zone_by_country_and_region(gir->country_code, gir->region);
-		if (gir != NULL) {
-			printf("%s, %s, %s, %s\n",
-						gir->country_code,
-						(!gir->region[0]) ? "N/A" : gir->region,
-						_mk_NA(GeoIP_region_name_by_code(gir->country_code, gir->region)),
-						_mk_NA(time_zone));
-		} else {
-			printf("NULL!\n");
-		}
-
-		GeoIP_assign_region_by_inetaddr (gi, inetaddr(ipAddress), &giRegion);
-		if (gir != NULL) {
-			assert(giRegion.country_code[0]);
-			assert(!strcmp(gir->country_code, giRegion.country_code));
-			if ( gir->region[0] ) {
-				assert(giRegion.region[0]);
-				assert(!strcmp(gir->region, giRegion.region));
-			} else {
-				assert(!giRegion.region[0]);
-			}
-		} else {
-			assert(!giRegion.country_code[0]);
-		}
-
-		if ( gir != NULL ) {
-			GeoIPRegion_delete(gir);
-		}
-	}
-
-	GeoIP_delete(gi);
-	return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip.c b/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip.c
deleted file mode 100644
index 4bb209e8..00000000
--- a/Src/Plugins/DSP/sc_serv3/GeoIP/test/test-geoip.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
-/* test-geoip.c
- *
- * Copyright (C) 2006 MaxMind LLC
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include <GeoIP.h>
-
-int main () {
-  FILE *f;
-  char ipAddress[30];
-  char expectedCountry[3];
-  char expectedCountry3[4];
-  const char * returnedCountry;
-	GeoIP * gi;
-	int failed = 0;
-	int test_num = 1;
-
-	int i;
-	for (i = 0; i < 2; ++i) {
-		if (0 == i) {
-			/* Read from filesystem, check for updated file */
-			gi = GeoIP_open(SRCDIR"/data/GeoIP.dat", GEOIP_STANDARD | GEOIP_CHECK_CACHE);
-		} else {
-			/* Read from memory, faster but takes up more memory */
-			gi = GeoIP_open(SRCDIR"/data/GeoIP.dat", GEOIP_MEMORY_CACHE);
-		}
-
-		if (gi == NULL) {
-			fprintf(stderr, "Error opening database\n");
-			exit(1);
-		}
-
-		/* make sure GeoIP deals with invalid query gracefully */
-		returnedCountry = GeoIP_country_code_by_addr(gi,NULL);
-		if (returnedCountry != NULL) {
-			fprintf(stderr,"Invalid Query test failed, got non NULL, expected NULL\n");
-			failed = 1;
-		}
-
-		returnedCountry = GeoIP_country_code_by_name(gi,NULL);
-		if (returnedCountry != NULL) {
-			fprintf(stderr,"Invalid Query test failed, got non NULL, expected NULL\n");
-			failed = 1;
-		}
-
-		f = fopen(SRCDIR"/test/country_test.txt","r");
-
-		while (fscanf(f, "%s%s%s", ipAddress, expectedCountry, expectedCountry3) != EOF) {
-			returnedCountry = GeoIP_country_code_by_addr(gi,ipAddress);
-			if (returnedCountry == NULL || strcmp(returnedCountry, expectedCountry) != 0) {
-				fprintf(stderr,"Test addr %d for %s failed, got %s, expected %s\n",test_num,ipAddress,returnedCountry,expectedCountry);
-				failed = 1;
-			}
-			returnedCountry = GeoIP_country_code_by_name(gi,ipAddress);
-			if (returnedCountry == NULL || strcmp(returnedCountry, expectedCountry) != 0) {
-				fprintf(stderr,"Test name %d for %s failed, got %s, expected %s\n",test_num,ipAddress,returnedCountry,expectedCountry);
-				failed = 1;
-			}
-			returnedCountry = GeoIP_country_code3_by_addr(gi,ipAddress);
-			if (returnedCountry == NULL || strcmp(returnedCountry, expectedCountry3) != 0) {
-				fprintf(stderr,"Test addr %d for %s failed, got %s, expected %s\n",test_num,ipAddress,returnedCountry,expectedCountry);
-				failed = 1;
-			}
-			returnedCountry = GeoIP_country_code3_by_name(gi,ipAddress);
-			if (returnedCountry == NULL || strcmp(returnedCountry, expectedCountry3) != 0) {
-				fprintf(stderr,"Test name %d for %s failed, got %s, expected %s\n",test_num,ipAddress,returnedCountry,expectedCountry);
-				failed = 1;
-			}
-			test_num++;
-		}
-		fclose(f);
-
-		f = fopen(SRCDIR"/test/country_test2.txt","r");
-		while (fscanf(f, "%s%s", ipAddress, expectedCountry ) != EOF) {
-			returnedCountry = GeoIP_country_code_by_addr(gi,ipAddress);
-			if (returnedCountry == NULL || strcmp(returnedCountry, expectedCountry) != 0) {
-				fprintf(stderr,"Test addr %d %s failed, got %s, expected %s\n",test_num,ipAddress,returnedCountry,expectedCountry);
-				failed = 1;
-			}
-			test_num++;
-		}
-		fclose(f);
-
-		f = fopen(SRCDIR"/test/country_test_name.txt","r");
-		while (fscanf(f, "%s%s", ipAddress, expectedCountry) != EOF) {
-			returnedCountry = GeoIP_country_code_by_name(gi,ipAddress);
-			if (returnedCountry == NULL || strcmp(returnedCountry, expectedCountry) != 0) {
-				fprintf(stderr,"Test addr %d %s failed, got %s, expected %s\n",test_num,ipAddress,returnedCountry,expectedCountry);
-				failed = 1;
-			}
-			test_num++;
-		}
-
-		fclose(f);
-		GeoIP_delete(gi);
-	}
-	return failed;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/ID3miniParsers.cpp b/Src/Plugins/DSP/sc_serv3/ID3miniParsers.cpp
deleted file mode 100644
index 430c8c4b..00000000
--- a/Src/Plugins/DSP/sc_serv3/ID3miniParsers.cpp
+++ /dev/null
@@ -1,827 +0,0 @@
-#include "ID3miniParsers.h"
-#include "stl/stringUtils.h"
-#include <locale>
-
-using namespace ID3V2;
-using namespace uniString;
-using namespace std;
-
-static const __uint8 E_LATIN1(0);
-static const __uint8 E_UTF16(1); // with COM
-static const __uint8 E_UTF16BE(2); // big endian no BOM
-static const __uint8 E_UTF8(3); // utf8
-
-void ID3V2::base64encode(const char *in,size_t siz,string &out) throw()
-{
-	char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-	int shift = 0;
-	int accum = 0;
-
-	while (siz)
-	{
-		accum <<= 8;
-		shift += 8;
-		accum |= *in++;
-		siz--;
-		while ( shift >= 6 )
-		{
-			shift -= 6;
-			out.push_back(alphabet[(accum >> shift) & 0x3F]);
-		}
-	}
-	if (shift == 4)
-	{
-		out.push_back(alphabet[(accum & 0xF)<<2]);
-		out.push_back('=');
-	}
-	else if (shift == 2)
-	{
-	    out.push_back(alphabet[(accum & 0x3)<<4]);
-		out.push_back('=');
-		out.push_back('=');
-	}
-}
-
-// way cool function. Given a hunk of data from an ID3V2 entry, break it into a collection
-// of unicode strings based on a format string (sort of like sprintf for ID3V2 data)
-vector<utf8> ID3V2::extractor(const vector<__uint8> &data,const char *format) throw(exception)
-{
-	vector<utf8> result;
-
-	__uint8 encoding = E_LATIN1;
-
-	int bytesRemaining = (int)data.size();
-	vector<__uint8>::size_type offset = 0;
-
-	const char *f = format;
-	while((*f) && (bytesRemaining > 0))
-	{
-		switch(*f)
-		{
-			case ' ': break; // do nothing, just move to next
-			case 'e': // encoding
-				encoding = data[offset++];
-				--bytesRemaining;
-			break;
-
-			case 'c': // single digit code
-			{
-				__uint8 code = data[offset++];
-				--bytesRemaining;
-				result.push_back(stringUtil::tos((int)code));
-			}
-			break;
-
-			case 'y': // dynamic counter
-			{
-				__uint64 counter = 0;
-				while(bytesRemaining > 0)
-				{
-					counter = counter << 8;
-					counter += data[offset];
-					++offset;
-					--bytesRemaining;
-				}
-				result.push_back(stringUtil::tos(counter));
-			}
-			break;
-
-			case 'u': // non-encoding string
-			{
-				size_t slen = uniString::strlen(&(data[offset]),bytesRemaining);
-				utf32 u32;
-				u32.assignFromLatinExtended(&(data[offset]),slen);
-				offset += (slen+1);
-				bytesRemaining -= (slen+1);
-				result.push_back(u32.toUtf8());
-			}
-			break;
-
-			case 's': // encoding string
-			{
-				if (encoding == E_LATIN1)
-				{
-					size_t slen = uniString::strlen(&(data[offset]),bytesRemaining);
-					utf32 u32;
-					u32.assignFromLatinExtended(&(data[offset]),slen);
-					offset += (slen+1);
-					bytesRemaining -= (slen+1);
-					result.push_back(u32.toUtf8());
-				}
-				else if (encoding == E_UTF16)
-				{
-					const utf16::value_type *v16 = reinterpret_cast<const utf16::value_type*>(&(data[offset]));
-					size_t slen = uniString::strlen(v16,bytesRemaining / 2);
-					utf32 u32(v16,slen);
-					offset += ((slen * 2) + 2);
-					bytesRemaining -= ((slen * 2) + 2);
-					result.push_back(u32.toUtf8());
-				}
-				else if (encoding == E_UTF16BE)
-				{
-					const utf16::value_type *v16 = reinterpret_cast<const utf16::value_type*>(&(data[offset]));
-					size_t slen = uniString::strlen(v16,bytesRemaining / 2);
-					utf32 u32(v16,slen,false); // assume big endian
-					offset += ((slen * 2) + 2);
-					bytesRemaining -= ((slen * 2) + 2);
-					result.push_back(u32.toUtf8());
-				}
-				else if (encoding == E_UTF8)
-				{
-					size_t slen = uniString::strlen(&(data[offset]),bytesRemaining);
-					utf32 u32(&(data[offset]),slen);
-					offset += (slen+1);
-					bytesRemaining -= (slen+1);
-					result.push_back(u32.toUtf8());
-				}
-				else throw runtime_error("unknown encoding " + stringUtil::tos((int)encoding));
-			}
-			break;
-
-			case 'b': // binary data
-			{
-				string b64;
-				base64encode((const char *)&(data[offset]),bytesRemaining,b64);
-				result.push_back(b64);
-				offset += bytesRemaining;
-				bytesRemaining = 0;
-			}
-			break;
-
-			case 'l': // three char language code
-			{
-				if (bytesRemaining < 3) throw runtime_error("not enough data");
-				utf8 l;
-				bool bad = 
-					(data[offset] < '0' || data[offset] > 'z' ||
-					data[offset+1] < '0' || data[offset+1] > 'z' ||
-					data[offset+2] < '0' || data[offset+2] > 'z');
-					
-				l.push_back(data[offset++]); l.push_back(data[offset++]); l.push_back(data[offset++]);
-				bytesRemaining -= 3;
-				if (bad)
-					result.push_back(utf8());
-				else
-					result.push_back(l);				
-			}
-			break;
-
-			case '+':
-				while(f > format && ((*f) == '+' || (*f) == ' ')) --f;
-				--f;
-				break;
-		}
-	++f;
-	}
-
-	while((!result.empty()) && (result.back().empty())) result.pop_back();
-	return result;
-}
-
-static const utf8 LT("<");
-static const utf8 GT(">");
-static const utf8 LTSLASH("</");
-static const utf8 EMPTYSTRING;
-static const utf8::value_type LPAREN('(');
-static const utf8::value_type RPAREN(')');
-
-// genres can be a list of codes and subgenres of high complexity. Parse it all out
-// (see ID3V2 specification for genre tag)
-//
-// some examples
-// (21)
-// (42) Eurodisco
-// (16) (18) Trance
-void ID3V2::fromStringList(const vector<utf8> &slist,genreList_t &gl) throw(runtime_error)
-{
-	gl.clear();
-
-	static const int state_Initial = 0;
-	static const int state_LeadingParen = 1;
-	static const int state_Code = 2;
-	static const int state_Subgenre = 3;
-	int state = state_Initial;
-
-	genreEntry e;
-
-	for(vector<utf8>::const_iterator li = slist.begin(); li != slist.end(); ++li)
-	{
-		for(utf8::const_iterator i = (*li).begin(); i != (*li).end(); ++i)
-		{
-			switch(state)
-			{
-				case state_Initial:
-					e.m_genreCode = EMPTYSTRING;
-					e.m_refinement = EMPTYSTRING;
-					if (stringUtil::safe_is_space(*i)) {}
-					else if ((*i) == LPAREN)
-					{
-						state = state_LeadingParen;
-					}
-					else
-					{
-						state = state_Subgenre;
-						e.m_refinement += (*i);
-					}
-				break;
-
-				case state_LeadingParen:
-					if ((*i) == LPAREN)
-					{
-						state = state_Subgenre;
-						e.m_refinement += (*i);
-					}
-					else if ((*i) == RPAREN)
-					{
-						if (!e.m_genreCode.empty() || !e.m_refinement.empty())
-							gl.push_back(e);
-						e.m_genreCode = EMPTYSTRING;
-						e.m_refinement = EMPTYSTRING;
-						state = state_Initial;
-					}
-					else
-					{
-						if (!e.m_genreCode.empty() || !e.m_refinement.empty())
-							gl.push_back(e);
-						e.m_genreCode = EMPTYSTRING;
-						e.m_refinement = EMPTYSTRING;
-						e.m_genreCode += (*i);
-						state = state_Code;
-					}
-				break;
-
-				case state_Code:
-					if ((*i) == RPAREN)
-					{
-						state = state_Subgenre;
-					}
-					else
-					{
-						e.m_genreCode += *i;
-					}
-				break;
-
-				case state_Subgenre:
-					if ((*i) == LPAREN)
-					{
-						state = state_LeadingParen;
-					}
-					else
-					{
-						e.m_refinement += (*i);
-					}
-				break;
-
-				default:
-					throw logic_error(string(__FUNCTION__) + " internal error. Bad state");
-				break;
-			}
-		}
-
-		switch(state)
-		{
-			case state_Initial:
-			break;
-
-			case state_LeadingParen:
-				throw runtime_error(string(__FUNCTION__) + " badly formed TCON data " + (*li).hideAsString());
-			break;
-
-			case state_Code:
-				throw runtime_error(string(__FUNCTION__) + " badly formed TCON data " + (*li).hideAsString());
-			break;
-
-			case state_Subgenre:
-				if (!e.m_genreCode.empty() || !e.m_refinement.empty())
-					gl.push_back(e);
-			break;
-
-			default:
-				throw logic_error(string(__FUNCTION__) + " internal error. Bad state");
-			break;
-		} // character iteration
-	} // end string list iteration
-}
-
-uniString::utf8 ID3V2::toXML(const utf8 &tag,const genreList_t &l) throw()
-{
-	utf8 result;
-	utf8 endTag = utf8("</") + tag + utf8(">");
-
-	for(genreList_t::const_iterator i = l.begin(); i != l.end(); ++i)
-	{
-		result += LT + tag;
-		if (!(*i).m_genreCode.empty())
-			result += utf8(" v1=\"") + (*i).m_genreCode.escapeXML() + utf8("\"");
-		result += GT + (*i).m_refinement.escapeXML() + endTag;
-	} 
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const genreList_t &l) throw()
-{
-	for(genreList_t::const_iterator i = l.begin(); i != l.end(); ++i)
-	{
-		if (!(*i).m_genreCode.empty()) return (*i).m_genreCode;
-	}
-	return uniString::utf8();
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////
-void ID3V2::fromStringList(const vector<uniString::utf8> &s,stringList_t &l) throw()
-{
-	//l = stringUtil::tokenizer(s,(utf8::value_type)'/');
-	l = s;
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const stringList_t &l) throw()
-{
-	utf8 result;
-	utf8 startTag = LT + tag + GT;
-	utf8 endTag = LTSLASH + tag + GT;
-	for(stringList_t::const_iterator i = l.begin(); i != l.end(); ++i)
-	{
-		result += startTag + (*i).escapeXML() + endTag;
-	} 
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const stringList_t &l) throw()
-{
-	return (l.empty() ? uniString::utf8() : l.front());
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,comment_t &c) throw()
-{
-	if (s.size() >= 3)
-	{
-		c.m_languageCode = s[0];
-		c.m_id = s[1];
-		c.m_comment = s[2];
-	}
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const comment_t &c) throw()
-{
-	utf8 result;
-	result += LT + tag;
-	if (!c.m_languageCode.empty())
-		result += utf8(" language=\"") + c.m_languageCode.escapeXML() + utf8("\"");
-	if (!c.m_id.empty())
-		result += utf8(" id=\"") + c.m_id.escapeXML() + utf8("\"");
-	result += GT + c.m_comment.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const comment_t &c) throw()
-{
-	return c.m_comment;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,userUrl_t &c) throw()
-{
-	if (!s.empty())
-		c.m_id = s[0];
-	if (s.size() > 1)
-		c.m_url = s[1];
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const userUrl_t &c) throw()
-{
-	if (c.m_id.empty() && c.m_url.empty()) return utf8();
-
-	utf8 result = LT + tag;
-	if (!c.m_id.empty())
-		result += utf8(" id=\"") + c.m_id.escapeXML() + utf8("\"");
-	result += GT + c.m_url.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const userUrl_t &c) throw()
-{ return c.m_url; }
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////
-
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,userText_t &t) throw()
-{
-	if (!s.empty())
-		t.m_id = s[0];
-	if (s.size() > 1)
-		t.m_text = s[1];
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const userText_t &t) throw()
-{
-	if (t.m_id.empty() && t.m_text.empty()) return utf8();
-
-	utf8 result = LT + tag;
-	if (!t.m_id.empty())
-		result += utf8(" id=\"") + t.m_id.escapeXML() + utf8("\"");
-	result += GT + t.m_text.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const userText_t &t) throw()
-{ return t.m_text; }
-
-/////////////////////////////////////////////////////////////////////////////////////////////
-
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,popularimeter_t &p) throw()
-{
-	vector<utf8>::size_type siz = s.size();
-
-	if (siz > 0)
-		p.m_email = s[0];
-	if (siz > 1)
-		p.m_rating = s[1];
-	if (siz > 2)
-		p.m_counter = s[2];
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const popularimeter_t &p) throw()
-{
-	if (p.m_counter.empty() && p.m_email.empty() && p.m_rating.empty()) return utf8();
-
-	utf8 result = LT + tag + GT;
-
-	result += LT + utf8("email") + GT;
-	result += p.m_email.escapeXML();
-	result += LTSLASH + utf8("email") + GT;
-
-	result += LT + utf8("rating") + GT;
-	result += p.m_rating.escapeXML();
-	result += LTSLASH + utf8("rating") + GT;
-
-	result += LT + utf8("counter") + GT;
-	result += p.m_counter.escapeXML();
-	result += LTSLASH + utf8("counter") + GT;
-
-	result += LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const popularimeter_t &p) throw()
-{ return p.m_rating; }
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,unsyncLyrics_t &c) throw()
-{
-	if (s.size() >= 3)
-	{
-		c.m_languageCode = s[0];
-		c.m_id = s[1];
-		c.m_lyrics = s[2];
-	}
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const unsyncLyrics_t &c) throw()
-{
-	if (c.m_lyrics.empty()) return utf8();
-
-	utf8 result;
-	result += LT + tag;
-	if (!c.m_languageCode.empty())
-		result += utf8(" language=\"") + c.m_languageCode.escapeXML() + utf8("\"");
-	if (!c.m_id.empty())
-		result += utf8(" id=\"") + c.m_id.escapeXML() + utf8("\"");
-	result += GT + c.m_lyrics.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const unsyncLyrics_t &c) throw()
-{
-	return c.m_lyrics;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,picture_t &p) throw()
-{
-	vector<uniString::utf8>::size_type siz = s.size();
-	if (siz > 0)	p.m_mimeType = s[0];
-	if (siz > 1)	p.m_pictureType = s[1];
-	if (siz > 2)	p.m_id = s[2];
-	if (siz > 3)	p.m_pictureData = s[3];
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const picture_t &p) throw()
-{
-	utf8 result;
-	result += LT + tag;
-	if (!p.m_mimeType.empty())
-		result += utf8(" mime=\"") + p.m_mimeType.escapeXML() + utf8("\"");
-	if (!p.m_id.empty())
-		result += utf8(" id=\"") + p.m_id.escapeXML() + utf8("\"");
-	if (!p.m_pictureType.empty())
-		result += utf8(" type=\"") + p.m_pictureType.escapeXML() + utf8("\"");
-	result += GT + p.m_pictureData.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const picture_t &p) throw()
-{
-	return p.m_pictureData;
-}
-
-////////////////////////////////////////////////////////////////////////////////////
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,mcdi_t &m) throw()
-{
-	if (!s.empty()) m.m_cdTOC = s[0];
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const mcdi_t &m) throw()
-{
-	utf8 result;
-	result += LT + tag;
-	result += GT + m.m_cdTOC.escapeXML() + LTSLASH + tag + GT;
-	return result;	
-}
-
-uniString::utf8 ID3V2::toString(const mcdi_t &m) throw()
-{ return m.m_cdTOC; }
-	
-////////////////////////////////////////////////////////////////////////////////////
-
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,ufid_t &u) throw()
-{
-	vector<utf8>::size_type siz = s.size();
-	if (siz > 0) u.m_id = s[0];
-	if (siz > 1) u.m_data = s[1];
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const ufid_t &u) throw()
-{
-	utf8 result;
-	result += LT + tag;
-	if (!u.m_id.empty())
-		result += utf8(" id=\"") + u.m_id.escapeXML() + utf8("\"");
-	result += GT + u.m_data.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const ufid_t &u) throw()
-{ return u.m_data; }
-
-////////////////////////////////////////////////////////////////////////////////////
-
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,part_t &p) throw()
-{
-	if (!s.empty())
-	{
-		vector<utf8> l = stringUtil::tokenizer(s[0],(utf8::value_type)'/');
-		if (!l.empty()) p.m_part = l[0];
-		if (l.size() > 1) p.m_total = l[1];
-	}
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const part_t &p) throw()
-{
-	utf8 result;
-	result += LT + tag;
-	if (!p.m_total.empty())
-		result += utf8(" total=\"") + p.m_total.escapeXML() + utf8("\"");
-	result += GT + p.m_part.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const part_t &p) throw()
-{ return p.m_part; }
-
-////////////////////////////////////////////////////////////////////////////////////
-
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,geob_t &g) throw()
-{
-	vector<utf8>::size_type siz = s.size();
-	if (siz > 0) g.m_mimeType = s[0];
-	if (siz > 1) g.m_filename = s[1];
-	if (siz > 2) g.m_id = s[2];
-	if (siz > 3) g.m_data = s[3];
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const geob_t &g) throw()
-{
-	utf8 result;
-	result += LT + tag;
-	if (!g.m_mimeType.empty())
-		result += utf8(" mime=\"") + g.m_mimeType.escapeXML() + utf8("\"");
-	if (!g.m_id.empty())
-		result += utf8(" id=\"") + g.m_id.escapeXML() + utf8("\"");
-	if (!g.m_filename.empty())
-		result += utf8(" filename=\"") + g.m_filename.escapeXML() + utf8("\"");
-	result += GT + g.m_data.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const geob_t &g) throw()
-{ return g.m_data; }
-
-////////////////////////////////////////////////////////////////////////////////////
-
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,priv_t &p) throw()
-{
-	vector<utf8>::size_type siz = s.size();
-	if (siz > 0) p.m_id = s[0];
-	if (siz > 1) p.m_data = s[1];
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const priv_t &p) throw()
-{
-	utf8 result;
-	result += LT + tag;
-	if (!p.m_id.empty())
-		result += utf8(" id=\"") + p.m_id.escapeXML() + utf8("\"");
-	result += GT + p.m_data.escapeXML() + LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const priv_t &p) throw()
-{ return p.m_data; }
-
-////////////////////////////////////////////////////////////////////////////////////
-
-void ID3V2::fromStringList(const std::vector<uniString::utf8> &s,timestamp_t &t) throw(runtime_error)
-{
-	if (s.empty()) return;
-
-	static const int state_year = 0;
-	static const int state_month = 1;
-	static const int state_day = 2;
-	static const int state_hour = 3;
-	static const int state_minute = 4;
-	static const int state_second = 5;
-
-	int state = state_year;
-	utf8 value;
-	for(utf8::const_iterator i = s[0].begin(); i != s[0].end(); ++i)
-	{
-		switch(state)
-		{
-			case state_year:
-				if (uniString::is_a_number(*i))
-				{
-					value += *i;
-					if (value.size() > 4) throw runtime_error("Year has too many digits");
-				}
-				else if ((*i) == '-')
-				{
-					if (value.size() != 4) throw runtime_error("Year has the wrong digit count");
-					t.m_year = value;
-					value.clear();
-					state = state_month;
-				}
-				else throw runtime_error("Unexpected character while processing year");
-			break;
-
-			case state_month:
-				if (uniString::is_a_number(*i))
-				{
-					value += *i;
-					if (value.size() > 2) throw runtime_error("Month has too many digits");
-				}
-				else if ((*i) == '-')
-				{
-					if (value.empty()) throw runtime_error("No digits for month");
-					t.m_month = value;
-					value.clear();
-					state = state_day;
-				}
-				else throw runtime_error("Unexpected character while processing month");
-			break;
-
-			case state_day:
-				if (uniString::is_a_number(*i))
-				{
-					value += *i;
-					if (value.size() > 2) throw runtime_error("Day has too many digits");
-				}
-				else if ((*i) == 'T')
-				{
-					if (value.empty()) throw runtime_error("No digits for day");
-					t.m_day = value;
-					value.clear();
-					state = state_hour;
-				}
-				else throw runtime_error("Unexpected character while processing day");
-			break;
-
-			case state_hour:
-				if (uniString::is_a_number(*i))
-				{
-					value += *i;
-					if (value.size() > 2) throw runtime_error("Hour has too many digits");
-				}
-				else if ((*i) == ':')
-				{
-					if (value.empty()) throw runtime_error("No digits for hour");
-					t.m_hour = value;
-					value.clear();
-					state = state_minute;
-				}
-				else throw runtime_error("Unexpected character while processing hour");
-			break;
-
-			case state_minute:
-				if (uniString::is_a_number(*i))
-				{
-					value += *i;
-					if (value.size() > 2) throw runtime_error("Minute has too many digits");
-				}
-				else if ((*i) == ':')
-				{
-					if (value.empty()) throw runtime_error("No digits for minute");
-					t.m_minute = value;
-					value.clear();
-					state = state_second;
-				}
-				else throw runtime_error("Unexpected character while processing minute");
-			break;
-
-			case state_second:
-				if (uniString::is_a_number(*i))
-				{
-					value += *i;
-					if (value.size() > 2) throw runtime_error("Second has too many digits");
-				}
-				else throw runtime_error("Unexpected character while processing second");
-			break;
-
-			default:
-				throw runtime_error(string(__FUNCTION__) + " internal error. Unknown state");
-			break;
-		}
-	}
-
-	if (!value.empty())
-	{
-		switch(state)
-		{
-			case state_year:
-				if (value.size() != 4) throw runtime_error("Wrong digit count for year");
-				t.m_year = value;
-			break;
-
-			case state_month:
-				if (value.size() > 2) throw runtime_error("Month has too many digits");
-				t.m_month = value;
-			break;
-
-			case state_day:
-				if (value.size() > 2) throw runtime_error("Day has too many digits");
-				t.m_day = value;
-			break;
-
-			case state_hour:
-				if (value.size() > 2) throw runtime_error("Hour has too many digits");
-				t.m_hour = value;
-			break;
-
-			case state_minute:
-				if (value.size() > 2) throw runtime_error("Minute has too many digits");
-				t.m_minute = value;
-			break;
-
-			case state_second:
-				if (value.size() > 2) throw runtime_error("Second has too many digits");
-				t.m_second = value;
-			break;
-
-			default:
-				throw runtime_error(string(__FUNCTION__) + " internal error. Unknown state");
-			break;
-		}
-	}
-}
-
-uniString::utf8 ID3V2::toXML(const uniString::utf8 &tag,const timestamp_t &t) throw()
-{
-	utf8 result;
-	if (t.m_year.empty()) return result;
-	result += LT + tag + GT;
-	if (!t.m_year.empty())	 result += LT + utf8("year")	+ GT + t.m_year.escapeXML()		+ LTSLASH + utf8("year")	+ GT;
-	if (!t.m_month.empty())  result += LT + utf8("month")	+ GT + t.m_month.escapeXML()	+ LTSLASH + utf8("month")	+ GT;
-	if (!t.m_day.empty())	 result += LT + utf8("day")		+ GT + t.m_day.escapeXML()		+ LTSLASH + utf8("day")		+ GT;
-	if (!t.m_hour.empty())	 result += LT + utf8("hour")	+ GT + t.m_hour.escapeXML()		+ LTSLASH + utf8("hour")	+ GT;
-	if (!t.m_minute.empty()) result += LT + utf8("minute")	+ GT + t.m_minute.escapeXML()	+ LTSLASH + utf8("minute")	+ GT;
-	if (!t.m_second.empty()) result += LT + utf8("second")	+ GT + t.m_second.escapeXML()	+ LTSLASH + utf8("second")	+ GT;
-	result += LTSLASH + tag + GT;
-	return result;
-}
-
-uniString::utf8 ID3V2::toString(const timestamp_t &t) throw()
-{ 
-	utf8 result;
-	if (t.m_year.empty()) return result;
-	result += t.m_year;
-	if (t.m_month.empty()) return result;
-	result += utf8("-") + t.m_month;
-	if (t.m_day.empty()) return result;
-	result += utf8("-") + t.m_day;
-	if (t.m_hour.empty()) return result;
-	result += utf8("T") + t.m_hour;
-	if (t.m_minute.empty()) return result;
-	result += utf8(":") + t.m_minute;
-	if (t.m_second.empty()) return result;
-	result += utf8(":") + t.m_second;
-	return result;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/ID3miniParsers.h b/Src/Plugins/DSP/sc_serv3/ID3miniParsers.h
deleted file mode 100644
index 263a5cda..00000000
--- a/Src/Plugins/DSP/sc_serv3/ID3miniParsers.h
+++ /dev/null
@@ -1,184 +0,0 @@
-#ifndef ID3miniParsers_H_
-#define ID3miniParsers_H_
-
-#include "unicode/uniString.h"
-#include <vector>
-#include <stdexcept>
-
-// parsers for complex ID3V2 fields (like genre)
-
-namespace ID3V2
-{
-	void base64encode(const char *in,size_t siz,std::string &out) throw();
-
-	////////////////////
-	/* Extracts strings based on a coded formatter
-	
-		e - single byte encoding. Will be used for all subsequence encoding based strings
-		u - non-encoded latin-1 string 
-		s - encoded string
-		b - binary coded data to end of block
-		l - three char language code
-		c - single byte code
-		y - dynamic counter (value in popularimeter)
-		
-		modifiers:
-		
-			+ - repeats to end of block
-	*/
-
-	std::vector<uniString::utf8> extractor(const std::vector<__uint8> &data,const char *format) throw(std::exception);
-	//////////////////////
-	//// structs for various tag types
-	struct genreEntry
-	{
-		uniString::utf8 m_genreCode;
-		uniString::utf8 m_refinement;
-	};
-
-	struct comment_t
-	{
-		uniString::utf8 m_languageCode;
-		uniString::utf8 m_id;
-		uniString::utf8 m_comment;
-	};
-
-	struct userUrl_t
-	{
-		uniString::utf8 m_id;
-		uniString::utf8 m_url;
-	};
-
-	struct userText_t
-	{
-		uniString::utf8 m_id;
-		uniString::utf8 m_text;
-	};
-
-	struct popularimeter_t
-	{
-		uniString::utf8 m_email;
-		uniString::utf8 m_rating;
-		uniString::utf8 m_counter;
-	};
-
-	struct unsyncLyrics_t
-	{
-		uniString::utf8 m_languageCode;
-		uniString::utf8 m_id;
-		uniString::utf8 m_lyrics;
-	};
-
-	struct picture_t
-	{
-		uniString::utf8 m_mimeType;
-		uniString::utf8 m_pictureType;
-		uniString::utf8 m_id;
-		uniString::utf8 m_pictureData;
-	};
-
-	struct mcdi_t // CD TOC
-	{
-		uniString::utf8 m_cdTOC;
-	};
-
-	struct ufid_t // universal file id
-	{
-		uniString::utf8 m_id;
-		uniString::utf8 m_data;
-	};
-
-	struct part_t // TRCK or TPOS (ie 3/7)
-	{
-		uniString::utf8 m_part;
-		uniString::utf8 m_total;
-	};
-
-	struct geob_t	// general encapsulated object
-	{
-		uniString::utf8 m_mimeType;
-		uniString::utf8 m_filename;
-		uniString::utf8 m_id;
-		uniString::utf8 m_data;
-	};
-
-	struct priv_t	// private frame
-	{
-		uniString::utf8 m_id;
-		uniString::utf8 m_data;
-	};
-
-	struct timestamp_t
-	{
-		uniString::utf8 m_year;
-		uniString::utf8 m_month;
-		uniString::utf8 m_day;
-		uniString::utf8 m_hour;
-		uniString::utf8 m_minute;
-		uniString::utf8 m_second;
-	};
-
-	typedef std::vector<ID3V2::genreEntry> genreList_t;
-	typedef std::vector<uniString::utf8> stringList_t;
-	typedef uniString::utf8 string_t;
-
-	// parser and extractor overloads for the various data types
-	/////
-	void fromStringList(const std::vector<uniString::utf8> &s,genreList_t &l) throw(std::runtime_error);
-	uniString::utf8 toXML(const uniString::utf8 &tag,const genreList_t &l) throw();
-	uniString::utf8 toString(const genreList_t &l) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,stringList_t &l) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const stringList_t &l) throw();
-	uniString::utf8 toString(const stringList_t &l) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,comment_t &c) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const comment_t &c) throw();
-	uniString::utf8 toString(const comment_t &c) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,userUrl_t &c) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const userUrl_t &c) throw();
-	uniString::utf8 toString(const userUrl_t &c) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,userText_t &t) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const userText_t &t) throw();
-	uniString::utf8 toString(const userText_t &t) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,popularimeter_t &p) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const popularimeter_t &p) throw();
-	uniString::utf8 toString(const popularimeter_t &p) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,unsyncLyrics_t &c) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const unsyncLyrics_t &c) throw();
-	uniString::utf8 toString(const unsyncLyrics_t &c) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,picture_t &c) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const picture_t &c) throw();
-	uniString::utf8 toString(const picture_t &c) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,mcdi_t &m) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const mcdi_t &m) throw();
-	uniString::utf8 toString(const mcdi_t &m) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,ufid_t &u) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const ufid_t &u) throw();
-	uniString::utf8 toString(const ufid_t &u) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,part_t &u) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const part_t &u) throw();
-	uniString::utf8 toString(const part_t &u) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,geob_t &g) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const geob_t &g) throw();
-	uniString::utf8 toString(const geob_t &g) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,priv_t &p) throw();
-	uniString::utf8 toXML(const uniString::utf8 &tag,const priv_t &p) throw();
-	uniString::utf8 toString(const priv_t &p) throw();
-
-	void fromStringList(const std::vector<uniString::utf8> &s,timestamp_t &t) throw(std::runtime_error);
-	uniString::utf8 toXML(const uniString::utf8 &tag,const timestamp_t &t) throw();
-	uniString::utf8 toString(const timestamp_t &t) throw();
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/MP3Header.cpp b/Src/Plugins/DSP/sc_serv3/MP3Header.cpp
deleted file mode 100644
index 5ac4a465..00000000
--- a/Src/Plugins/DSP/sc_serv3/MP3Header.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-#include "MP3Header.h"
-#include "global.h"
-#include "nmrCommon/stl/stringUtils.h"
-#include "nmrCommon/services/stdServiceImpl.h"
-#include "nmrCommon/unicode/uniString.h"
-
-const __uint32 make28BitValue(const __uint8 buf[4])
-{
-	return ((((__uint32)buf[0]) << 21) | 
-			(((__uint32)buf[1]) << 14) | 
-			(((__uint32)buf[2]) <<  7) | 
-			(((__uint32)buf[3])));
-}
-
-// Bitrates - use [version][layer][bitrate]
-const __uint16 mpeg_bitrates[4][4][16] = {
-  { // Version 2.5
-    { 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0 }, // Reserved
-    { 0,   8,  16,  24,  32,  40,  48,  56,  64,  80,  96, 112, 128, 144, 160, 0 }, // Layer 3
-    { 0,   8,  16,  24,  32,  40,  48,  56,  64,  80,  96, 112, 128, 144, 160, 0 }, // Layer 2
-    { 0,  32,  48,  56,  64,  80,  96, 112, 128, 144, 160, 176, 192, 224, 256, 0 }  // Layer 1
-  },
-  { // Reserved
-    { 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0 }, // Invalid
-    { 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0 }, // Invalid
-    { 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0 }, // Invalid
-    { 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0 }  // Invalid
-  },
-  { // Version 2
-    { 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0 }, // Reserved
-    { 0,   8,  16,  24,  32,  40,  48,  56,  64,  80,  96, 112, 128, 144, 160, 0 }, // Layer 3
-    { 0,   8,  16,  24,  32,  40,  48,  56,  64,  80,  96, 112, 128, 144, 160, 0 }, // Layer 2
-    { 0,  32,  48,  56,  64,  80,  96, 112, 128, 144, 160, 176, 192, 224, 256, 0 }  // Layer 1
-  },
-  { // Version 1
-    { 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0 }, // Reserved
-    { 0,  32,  40,  48,  56,  64,  80,  96, 112, 128, 160, 192, 224, 256, 320, 0 }, // Layer 3
-    { 0,  32,  48,  56,  64,  80,  96, 112, 128, 160, 192, 224, 256, 320, 384, 0 }, // Layer 2
-    { 0,  32,  64,  96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 0 }, // Layer 1
-  }
-};
-
-// Sample rates - use [version][srate]
-const __uint16 mpeg_srates[4][4] = {
-    { 11025, 12000,  8000, 0 }, // MPEG 2.5
-    {     0,     0,     0, 0 }, // Reserved
-    { 22050, 24000, 16000, 0 }, // MPEG 2
-    { 44100, 48000, 32000, 0 }  // MPEG 1
-};
-
-// Samples per frame - use [version][layer]
-const __uint16 mpeg_frame_samples[4][4] = {
-//    Rsvd     3     2     1  < Layer  v Version
-    {    0,  576, 1152,  384 }, //       2.5
-    {    0,    0,    0,    0 }, //       Reserved
-    {    0,  576, 1152,  384 }, //       2
-    {    0, 1152, 1152,  384 }  //       1
-};
-
-// Slot size (MPEG unit of measurement) - use [layer]
-const __uint8 mpeg_slot_size[4] = { 0, 1, 1, 4 }; // Rsvd, 3, 2, 1
-
-const char *MP3_FrameInfo::getLayerName() const
-{
-    switch (m_layer)
-    {
-        case 1: return "3";
-        case 2: return "2";
-        case 3: return "1";
-    }
-    return "unknown layer";
-}
-
-const char *MP3_FrameInfo::getVersionName() const
-{
-    switch (m_version)
-    {
-        case 0: return "v2.5";
-        case 2: return "v2";
-        case 3: return "v1";
-    }
-    return "unknown version";
-}
-
-int getMP3FrameSize (MP3_FrameInfo &info, const unsigned char *hdr, unsigned int len)
-{
-    if (len < 4)
-        return 0;
-    int samples = mpeg_frame_samples[info.m_version][info.m_layer];
-    if (samples == 0)
-        return -1;
-    int bitrate = mpeg_bitrates [info.m_version] [info.m_layer] [((hdr[2] & 0xf0) >> 4)];
-    if (bitrate == 0)
-        return -1;
-    info.m_bitrate = bitrate;
-    info.m_samples = samples;
-
-    return (int)(((float)(samples / 8.0) * (float)bitrate * 1000) /
-            (float)info.m_samplerate) + (((hdr[2] & 0x02) >> 1) ? mpeg_slot_size[info.m_layer] : 0);
-}
-
-const int getMP3FrameInfo(const char *hdr, unsigned int *samplerate, int *bitrate, bool *mono)
-{
-    // Quick validity check
-    if ( ( ((unsigned char)hdr[0] & 0xFF) != 0xFF)
-      || ( ((unsigned char)hdr[1] & 0xE0) != 0xE0)   // 3 sync bits
-      || ( ((unsigned char)hdr[1] & 0x18) == 0x08)   // Version rsvd
-      || ( ((unsigned char)hdr[1] & 0x06) == 0x00)   // Layer rsvd
-      || ( ((unsigned char)hdr[2] & 0xF0) == 0xF0)   // Bitrate rsvd
-    ) return 0;
-
-    // Data to be extracted from the header
-    __uint8 ver = (hdr[1] & 0x18) >> 3;   // Version index
-    __uint8 lyr = (hdr[1] & 0x06) >> 1;   // Layer index
-    //__uint8 pad = (hdr[2] & 0x02) >> 1;   // Padding? 0/1
-    //__uint8 brx = (hdr[2] & 0xf0) >> 4;   // Bitrate index
-    __uint8 srx = (hdr[2] & 0x0c) >> 2;   // SampRate index
-
-	if (mono)
-	{
-		*mono = (((hdr[3] >> 6) & 3) == 0x3);	// Channel mode
-	}
-
-    // Lookup real values of these fields
-	*samplerate = mpeg_srates[ver][srx];
-    *bitrate = mpeg_bitrates[ver][lyr][((hdr[2] & 0xf0) >> 4)];
-    //__uint16 samples = mpeg_frame_samples[ver][lyr];
-    //__uint8 slot_size = mpeg_slot_size[lyr];
-
-    // Frame sizes are truncated integers
-    return (__uint16)(((float)(mpeg_frame_samples[ver][lyr] / 8.0) *
-			(float)*bitrate * 1000) / (float)mpeg_srates[ver][srx]) +
-			(((hdr[2] & 0x02) >> 1) ? mpeg_slot_size[lyr] : 0);
-}
-
-
-const int getMP3FrameInfo (const unsigned char *hdr, unsigned int len, MP3_FrameInfo &info)
-{
-    // Quick validity check
-    if ( len < 4
-      || ( ((unsigned char)hdr[0] & 0xFF) != 0xFF)
-      || ( ((unsigned char)hdr[1] & 0xE0) != 0xE0)   // 3 sync bits
-      || ( ((unsigned char)hdr[1] & 0x18) == 0x08)   // Version rsvd
-      || ( ((unsigned char)hdr[1] & 0x06) == 0x00)   // Layer rsvd
-      || ( ((unsigned char)hdr[2] & 0xF0) == 0xF0)   // Bitrate rsvd
-    ) return -1;
-
-    // Data to be extracted from the header
-    __uint8 ver = (hdr[1] & 0x18) >> 3;   // Version index
-    __uint8 lyr = (hdr[1] & 0x06) >> 1;   // Layer index
-    __uint8 srx = (hdr[2] & 0x0c) >> 2;   // SampRate index
-
-    do
-    {
-        // Lookup real values of these fields
-        unsigned int samplerate = mpeg_srates [ver][srx];
-        if (samplerate == 0)
-            break;
-
-        int bitrate = mpeg_bitrates [ver][lyr][((hdr[2] & 0xf0) >> 4)];
-        if (bitrate == 0)
-            break;
-        info.m_bitrate = bitrate;
-        // the following are not supposed to change
-        info.m_samplerate = samplerate;
-        info.m_mono = (((hdr[3] >> 6) & 3) == 0x3);         // Channel mode
-        info.m_layer = lyr;                                 // Layer index
-        info.m_version = ver;
-        if (info.m_pattern == 0)
-            info.m_pattern = (unsigned long)(hdr[0]<<24 | (hdr[1]<<16) | (hdr[2]<<8) | hdr[0]) & info.m_mask;
-
-        // DLOG (uniString::utf8("MPEG ") + info.getVersionName() + " layer " + info.getLayerName() + (info.m_mono ? " mono (" : " stereo (") + stringUtil::tos(bitrate) + "k)");
-
-        return getMP3FrameSize (info, hdr, 4);
-    } while (0);
-    return -1;
-}
-
-int MP3_FrameInfo::verifyFrame (const unsigned char *buf, unsigned int len)
-{
-     if (len > 4)
-     {
-         unsigned long v = (unsigned long)(buf[0])<<24 | (buf[1]<<16) | (buf[2]<<8) | buf[0];
-
-         if ((v & m_mask) == m_pattern)
-         {
-#if 0
-             if (len > 40)
-             {
-                unsigned char str[6] = "LAME";
-                int i;
-                for (i=0; i < 5 && buf[36+i] == str[i]; i++)
-                    ;
-                if (str[i] == '\0') DLOG ("LAME header found");
-             }
-#endif
-             return getMP3FrameSize (*this, buf, len);
-         }
-         // DLOG ("MPG: mask is " + stringUtil::tos(v&m_mask) + ", patt " + stringUtil::tos(m_pattern));
-         return -1;
-     }
-     return 0;
-}
-
-MP3_FrameInfo::MP3_FrameInfo (unsigned long value) : parserInfo (0xFFFE0000, value)
-{
-    m_description = "MPEG ";
-}
-
-MP3_FrameInfo::MP3_FrameInfo(const unsigned char *p, unsigned int len) : parserInfo()
-{
-    m_mask = 0xFFFE0000;
-    m_description = "MPEG ";
-    getMP3FrameInfo (p, len, *this);
-}
-
diff --git a/Src/Plugins/DSP/sc_serv3/MP3Header.h b/Src/Plugins/DSP/sc_serv3/MP3Header.h
deleted file mode 100644
index d1fbe704..00000000
--- a/Src/Plugins/DSP/sc_serv3/MP3Header.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#pragma once
-#ifndef _MP3_HEADER_H
-#define _MP3_HEADER_H
-
-#include "nmrCommon/intTypes.h"
-#include <stddef.h>
-#include "global.h"
-#include "uvox2Common.h"
-
-
-struct MP3_FrameInfo : public parserInfo
-{
-    bool    m_mono;
-    int     m_layer;
-    int     m_samples;
-
-    int verifyFrame (const unsigned char *buf, unsigned int len);
-
-    MP3_FrameInfo (unsigned long value = 0);
-    MP3_FrameInfo (const unsigned char *p, unsigned int len);
-
-    const char *getLayerName() const;
-    const char *getVersionName() const;
-    int getUvoxType() { return MP3_DATA; }
-};
-
-
-const __uint32 make28BitValue(const __uint8 buf[4]);
-const int getMP3FrameInfo(const char *hdr, unsigned int *samplerate, int *bitrate, bool *mono = 0);
-const int getMP3FrameInfo (const unsigned char *hdr, unsigned int len, MP3_FrameInfo &info);
-int getMP3FrameSize (MP3_FrameInfo &info, const unsigned char *hdr, unsigned int len);
-
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/MSG00001.bin b/Src/Plugins/DSP/sc_serv3/MSG00001.bin
deleted file mode 100644
index a528a83b86febcd25e060d0558b10e08070bfc2d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 32
hcmZQ%U|?WmU^oE60zkF^kf+LE$iU0M1>`X>001eB0ulfK

diff --git a/Src/Plugins/DSP/sc_serv3/adminList.cpp b/Src/Plugins/DSP/sc_serv3/adminList.cpp
deleted file mode 100644
index 547a2176..00000000
--- a/Src/Plugins/DSP/sc_serv3/adminList.cpp
+++ /dev/null
@@ -1,303 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#else
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#endif
-
-#include <algorithm>
-#include <stdio.h>
-#include "adminList.h"
-#include "global.h"
-#include "stl/stringUtils.h"
-#include "macros.h"
-#include "webNet/socketOps.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-#include <assert.h>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME "[ADMINCGI] "
-
-#ifdef _WIN32
-typedef unsigned long in_addr_t;
-#endif
-
-adminList g_adminList;
-
-class adminList::impl
-{
-private:
-	struct adminEntry: public admin_t
-	{
-		in_addr_t	m_ip;		// ip as binary type. Old style, but that's how the old sc_serv did it and we'll
-								// continue to do it that way until we're ready to break the old software
-
-		bool validIP() throw()
-		{
-			return ((m_ip != INADDR_NONE) && (m_ip != 0));
-		}
-
-		static in_addr_t stringToIP(const utf8 &sIP, utf8 &hostIP)
-		{
-			// default is to assume a raw IP address in the list
-			in_addr_t ip =  inet_addr((const char *)sIP.c_str());
-			if (ip == INADDR_NONE)
-			{
-				// though if that fails then attempt to
-				// get an IP address from a hostname...
-				string sHost;
-				try
-				{
-					sHost = socketOps::hostNameToAddress(sIP.hideAsString());
-				}
-				catch(...)
-				{
-				}
-				if (!sHost.empty())
-				{
-					ip =  inet_addr((const char *)sHost.c_str());
-					if (ip != INADDR_NONE)
-					{
-						hostIP = sHost;
-					}
-				}
-			}
-			return ip;
-		}
-
-		explicit adminEntry(const utf8 &numericIP) throw() : admin_t(numericIP), m_ip(stringToIP(numericIP, m_hostIP)) {}
-		adminEntry() throw() : m_ip(0) {}
-	};
-
-	AOL_namespace::mutex	m_lock;
-	list<adminEntry>		m_list;
-
-public:
-	bool load(const uniFile::filenameType &fn) throw(exception)
-	{
-		if (fn.empty())
-		{
-			throwEx<tagged_error>(LOGNAME "No admin access file");
-		}
-		else if (gOptions.microServerDebug())
-		{
-			DLOG(LOGNAME "Attempting to read admin access file: " + fileUtil::getFullFilePath(fn));
-		}
-
-		stackLock sml(m_lock);
-
-		FILE *f = uniFile::fopen(fn,"rb");
-		if (!f) return false;
-
-		bool updating = (!m_list.empty());
-		m_list.clear();
-
-		try 
-		{
-			int l = 0;
-			int count = 0;
-			while (true)
-			{
-				char buffer[4096] = {0};
-
-				if (!fgets(buffer, sizeof(buffer), f)) break; // get a line
-
-				++l; // increment line counter
-
-				utf8 s;
-
-				// skip utf-8 BOM
-				if ((strlen(buffer) > 2) &&
-					(((unsigned char*)buffer)[0] == 0xef) &&
-					(((unsigned char*)buffer)[1] == 0xbb) &&
-					(((unsigned char*)buffer)[2] == 0xbf))
-				{
-					s = &(buffer[3]);
-				}
-				else
-				{
-					s = buffer;
-				}
-
-				adminEntry e(stripWhitespace(s));
-
-				if (!e.validIP())
-				{
-					WLOG(LOGNAME "Line " + tos(l) + " of admin access list has been ignored (bad IP)");
-				}
-				else
-				{
-					if (this->find(e.m_numericIP,false) < 1)
-					{
-						m_list.push_back(e);
-						++count;
-					}
-				}
-			}
-			if (!updating)
-			{
-				if (count > 0)
-				{
-					ILOG(LOGNAME "Enabled " + tos(count) + " IP" +
-						 (count != 1 ? "'s" : "") + " from admin access file");
-				}
-				else if (gOptions.microServerDebug())
-				{
-					DLOG(LOGNAME "No IPs read from admin access file");
-				}
-			}
-			else
-			{
-				ILOG(LOGNAME "Reloaded " + tos(count) + " IP" +
-					 (count != 1 ? "'s" : "") + " from admin access file");
-			}
-		}
-		catch(...)
-		{
-			if (f) ::fclose(f);
-			throw;
-		}
-		if (f) ::fclose(f);
-		return true;
-	}
-
-	bool add(const utf8 &ipAddr, const bool soft) throw(exception)
-	{
-		// skip loopback addresses as we treat them specially anyway
-		if ((ipAddr.find(utf8("127.")) == utf8::npos))
-		{
-			adminEntry e(ipAddr);
-			if (!e.validIP())
-			{
-				if (!soft)
-				{
-					throwEx<runtime_error>(LOGNAME "Invalid IP specified - `" + ipAddr + "'");
-				}
-				else
-				{
-					return false;
-				}
-			}
-
-			stackLock sml(m_lock);
-			m_list.push_back(e);
-			return true;
-		}
-		return false;
-	}
-
-	// true if removed
-	bool remove(const utf8 &ipAddr, const bool allStream, const bool fallback = false, const bool use_lock = true)
-	{
-		if (use_lock)
-		{
-			stackLock sml(m_lock);
-		}
-
-		for ( list<adminEntry>::iterator i = m_list.begin(); i != m_list.end(); ++i )
-		{
-			if ( ( allStream || ( ( !allStream && ( ( *i ).m_numericIP == ipAddr ) ) || ( ( *i ).m_hostIP == ipAddr ) ) ) )
-			{
-				m_list.erase( i );
-				return true;
-			}
-		}
-
-		// attempt to see if we've got a hostname which has not been detected from the loading mapping
-		if (!fallback)
-		{
-			string sHost;
-			try
-			{
-				sHost = socketOps::hostNameToAddress(ipAddr.hideAsString());
-			}
-			catch(...)
-			{
-			}
-			if (!sHost.empty())
-			{
-				return remove(sHost, allStream, true, false);
-			}
-		}
-
-		return false;
-	}
-
-	// 1 if found, 0 if not, -1 if empty (assume allowed)
-	int find(const utf8 &ipAddr, const bool use_lock=true) throw()
-	{
-		if (use_lock)
-		{
-			stackLock sml(m_lock);
-		}
-
-		if (!m_list.empty())
-		{
-			for (list<adminEntry>::const_iterator i = m_list.begin(); i != m_list.end(); ++i)
-			{
-				if ((ipAddr == (*i).m_numericIP) || (ipAddr == (*i).m_hostIP))
-				{
-					return 1;
-				}
-			}
-			return 0;
-		}
-		return -1;
-	}
-};
-
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-adminList::adminList():m_impl(0)
-{
-	m_impl = new adminList::impl;
-}
-
-adminList::~adminList() throw()
-{
-	forget(m_impl);
-}
-
-bool adminList::load(const uniFile::filenameType &fn) throw()
-{
-	assert(m_impl);
-
-	bool result(false);
-
-	try
-	{
-		result = m_impl->load(fn);
-	}
-	catch(const exception &ex)
-	{
-		ELOG(ex.what());
-	}
-	return result;
-}
-
-// throws if parameters are invalid
-bool adminList::add(const utf8 &ipAddr, const bool soft) throw(exception)
-{
-	assert(m_impl);
-	return m_impl->add(ipAddr, soft);
-}
-
-// true if removed
-bool adminList::remove(const utf8 &ipAddr, const bool allStream) throw()
-{
-	assert(m_impl);
-	return m_impl->remove(ipAddr, allStream);
-}
-
-// 1 if found, 0 if not, -1 if empty (assume allowed)
-int adminList::find(const utf8 &ipAddr) throw()
-{
-	assert(m_impl);
-	return m_impl->find(ipAddr);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/adminList.h b/Src/Plugins/DSP/sc_serv3/adminList.h
deleted file mode 100644
index 32645f76..00000000
--- a/Src/Plugins/DSP/sc_serv3/adminList.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#pragma once
-#ifndef adminList_H_
-#define adminList_H_
-
-#include "unicode/uniFile.h"
-
-// class that manages lists of reserved IPs
-// these are remote addresses that must always be allowed in no matter what.
-
-class adminList
-{
-private:
-	class impl;
-	impl	*m_impl;
-
-public:
-	struct admin_t
-	{
-		uniString::utf8		m_numericIP;
-		uniString::utf8		m_hostIP;		// used to hold the converted IP from a hostname
-
-		explicit admin_t(const uniString::utf8 &numericIP) throw() : m_numericIP(numericIP) {}
-		admin_t() throw() {}
-	};
-
-	// throws if parameters are invalid
-	bool add(const uniString::utf8 &ipAddr, const bool soft) throw(std::exception);
-	// true if removed
-	bool remove(const uniString::utf8 &ipAddr, const bool allStream) throw();
-	// 1 if found, 0 if not, -1 if empty (assume allowed)
-	int find(const uniString::utf8 &ipAddr) throw();
-
-	bool load(const uniFile::filenameType &fn) throw();
-
-	adminList();
-	~adminList() throw();
-};
-
-extern adminList g_adminList;
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/agentList.cpp b/Src/Plugins/DSP/sc_serv3/agentList.cpp
deleted file mode 100644
index 28202f33..00000000
--- a/Src/Plugins/DSP/sc_serv3/agentList.cpp
+++ /dev/null
@@ -1,294 +0,0 @@
-#include <algorithm>
-#include <stdio.h>
-#include "agentList.h"
-#include "global.h"
-#include "stl/stringUtils.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-#include "macros.h"
-#include <assert.h>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME "[AGENT] "
-
-agentList g_agentList;
-
-class agentList::impl
-{
-private:
-	struct agentEntrySave
-	{
-		FILE *f;
-		size_t stream_ID;
-	};
-
-	struct agentEntry: public agent_t
-	{
-		void save(agentEntrySave entrySave) throw(exception)
-		{
-			if(m_stream_ID == entrySave.stream_ID)
-			{
-				utf8 s(m_agent + eol());
-				if (fwrite(s.c_str(),1,s.size(),entrySave.f) != s.size())
-				{
-					throwEx<tagged_error>(LOGNAME "I/O error writing " + (!entrySave.stream_ID ? "global" : "sid=" + tos(entrySave.stream_ID)) + " agent file");
-				}
-			}
-		}
-
-		agentEntry(const utf8 &agent, const size_t stream_ID) throw() : agent_t(agent, stream_ID) {}
-		agentEntry() throw() {}
-	};
-
-	AOL_namespace::mutex	m_lock;
-	list<agentEntry>		m_list;
-
-public:
-	bool load(const uniFile::filenameType &fn, size_t stream_ID) throw(exception)
-	{
-		if (fn.empty())
-		{
-			throwEx<tagged_error>(LOGNAME "No " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " agent file");
-		}
-		else if (gOptions.microServerDebug())
-		{
-			DLOG(LOGNAME "Attempting to read agent file: " + fileUtil::getFullFilePath(fn));
-		}
-
-		stackLock sml(m_lock);
-
-		FILE *f = uniFile::fopen(fn,"rb");
-		if (!f) return false;
-
-		bool updating = (!m_list.empty());
-		m_list.clear();
-
-		try 
-		{
-			int l = 0;
-			int count = 0;
-			while (true)
-			{
-				char buffer[4096] = {0};
-
-				if (!fgets(buffer, sizeof(buffer), f)) break; // get a line
-
-				++l; // increment line counter
-
-				utf8 s;
-
-				// skip utf-8 BOM
-				if ((strlen(buffer) > 2) &&
-					(((unsigned char*)buffer)[0] == 0xef) &&
-					(((unsigned char*)buffer)[1] == 0xbb) &&
-					(((unsigned char*)buffer)[2] == 0xbf))
-					s = &(buffer[3]);
-				else
-					s = buffer;
-
-				if (stripWhitespace(s).empty())
-				{
-					WLOG(LOGNAME "Line " + tos(l) + " of " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " user agent list has been ignored");
-				}
-				else
-				{
-					agentEntry e(stripWhitespace(s),stream_ID);
-					if(this->find(e.m_agent,e.m_stream_ID,false) == false)
-					{
-						m_list.push_back(e);
-						++count;
-					}
-				}
-			}
-			if (!updating)
-			{
-				ILOG(LOGNAME "Loaded " + tos(count) + " blocked user agents" + (count != 1 ? "'s" : "") + " from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " agent file");
-			}
-			else
-			{
-				ILOG(LOGNAME "Reloaded " + tos(count) + " blocked user agents" + (count != 1 ? "'s" : "") + " from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " agent file");
-			}
-		}
-		catch(...)
-		{
-			if (f) ::fclose(f);
-			throw;
-		}
-		if (f) ::fclose(f);
-		return true;
-	}
-
-	void save(const uniFile::filenameType &fn,size_t stream_ID) throw(exception)
-	{
-		stackLock sml(m_lock);
-
-		FILE *f = uniFile::fopen(fn,"wb");
-		if (!f)
-		{
-			throwEx<tagged_error>(LOGNAME "Could not open " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) +
-								  " agent file `" + fn + "' for writing (" + errMessage().hideAsString() + ")");
-		}
-		try 
-		{
-			agentEntrySave entrySave;
-			entrySave.f = f;
-			entrySave.stream_ID = stream_ID;
-			for_each(m_list.begin(),m_list.end(),bind2nd(mem_fun_ref(&agentEntry::save),entrySave));
-		}
-		catch(...)
-		{
-			if (f) ::fclose(f);
-			throw;
-		}
-		if (f) ::fclose(f);
-
-		if(!uniFile::fileSize(fn))
-		{
-			uniFile::unlink(fn);
-		}
-	}
-
-	bool add(const utf8 &agent, const size_t stream_ID, const bool soft) throw(exception)
-	{
-		if (agent.empty())
-		{
-			if (!soft) throwEx<runtime_error>(LOGNAME "Empty User Agent specified");
-			else return false;
-		}
-
-		agentEntry e(agent,stream_ID);
-		stackLock sml(m_lock);
-		m_list.push_back(e);
-		return true;
-	}
-
-	// true if removed
-	bool remove(const utf8 &agent, const size_t stream_ID, const bool allStream) throw()
-	{
-		stackLock sml(m_lock);
-
-		for (list<agentEntry>::iterator i = m_list.begin(); i != m_list.end(); ++i)
-		{
-			if (allStream || (((!allStream && ((*i).m_agent == agent))) && ((*i).m_stream_ID == stream_ID)))
-			{
-				m_list.erase(i);
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	// true if found
-	bool find(const utf8 &agent, size_t stream_ID, bool use_lock = true) throw()
-	{
-		if(use_lock)
-		{
-			stackLock sml(m_lock);
-		}
-
-		if(!m_list.empty())
-		{
-			for (list<agentEntry>::const_iterator i = m_list.begin(); i != m_list.end(); ++i)
-			{
-				if (((*i).m_stream_ID == stream_ID) && (agent == (*i).m_agent))
-				{
-					return true;
-				}
-			}
-		}
-
-		return false;
-	}
-
-	void get(std::vector<agentList::agent_t> &rl, size_t stream_ID) throw()
-	{
-		stackLock sml(m_lock);
-
-		for (list<agentEntry>::const_iterator i = m_list.begin(); i != m_list.end(); ++i)
-		{
-			if ((*i).m_stream_ID == stream_ID)
-			{
-				rl.push_back(*i);
-			}
-		}
-	}
-};
-
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-agentList::agentList():m_impl(0)
-{
-	m_impl = new agentList::impl;
-}
-
-agentList::~agentList() throw()
-{
-	forget(m_impl);
-}
-
-bool agentList::load(const uniFile::filenameType &fn,size_t stream_ID) throw()
-{
-	assert(m_impl);
-
-	bool result(false);
-
-	try
-	{
-		result = m_impl->load(fn,stream_ID);
-	}
-	catch(const exception &ex)
-	{
-		ELOG(ex.what());
-	}
-	return result;
-}
-
-bool agentList::save(const uniFile::filenameType &fn,size_t stream_ID) throw()
-{
-	assert(m_impl);
-
-	bool result(false);
-
-	try
-	{
-		m_impl->save(fn,stream_ID);
-		result = true;
-	}
-	catch(const exception &ex)
-	{
-		ELOG(ex.what());
-	}
-	return result;
-}
-
-// throws if parameters are invalid
-bool agentList::add(const utf8 &agent, const size_t stream_ID, bool soft) throw(exception)
-{
-	assert(m_impl);
-	return m_impl->add(agent,stream_ID,soft);
-}
-
-// true if removed
-bool agentList::remove(const utf8 &agent, const size_t stream_ID, bool allStream) throw()
-{
-	assert(m_impl);
-	return m_impl->remove(agent,stream_ID,allStream);
-}
-
-// true if found
-bool agentList::find(const utf8 &agent, const size_t stream_ID) throw()
-{
-	assert(m_impl);
-	return m_impl->find(agent, stream_ID);
-}
-
-void agentList::get(vector<agentList::agent_t> &bl,size_t stream_ID) throw()
-{
-	assert(m_impl);
-	m_impl->get(bl,stream_ID);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/agentList.h b/Src/Plugins/DSP/sc_serv3/agentList.h
deleted file mode 100644
index 87b1861d..00000000
--- a/Src/Plugins/DSP/sc_serv3/agentList.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#pragma once
-#ifndef agentList_H_
-#define agentList_H_
-
-#include "unicode/uniFile.h"
-
-// class that manages lists of blocked user agents
-
-class agentList
-{
-private:
-	class impl;
-	impl *m_impl;
-
-public:
-	struct agent_t
-	{
-		uniString::utf8		m_agent;		// used to hold the user agent to not allow
-		size_t				m_stream_ID;	// used to differentiate
-
-		agent_t(const uniString::utf8 &agent, const size_t stream_ID) throw() : m_agent(agent), m_stream_ID(stream_ID) {}
-		agent_t() throw() : m_stream_ID(0) {}
-	};
-
-	// throws if parameters are invalid
-	bool add(const uniString::utf8 &agent, const size_t stream_ID, const bool soft) throw(std::exception);
-	// true if removed
-	bool remove(const uniString::utf8 &agent, const size_t stream_ID, const bool allStream) throw();
-	// true if found
-	bool find(const uniString::utf8 &agent, const size_t stream_ID) throw();
-
-	bool load(const uniFile::filenameType &fn, const size_t stream_ID) throw();
-	bool save(const uniFile::filenameType &fn, const size_t stream_ID) throw();
-
-	agentList();
-	~agentList() throw();
-
-	// for web administration reference
-	void get(std::vector<agent_t> &rl, const size_t stream_ID) throw();
-};
-
-extern agentList g_agentList;
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/amf.cpp b/Src/Plugins/DSP/sc_serv3/amf.cpp
deleted file mode 100644
index bb7adddb..00000000
--- a/Src/Plugins/DSP/sc_serv3/amf.cpp
+++ /dev/null
@@ -1,759 +0,0 @@
-#if 0
-#include "amf.h"
-#include "global.h"
-
-#define DEBUG_LOG(x) { if (gOptions.RTMPClientDebug()) DLOG((x)); }
-
-#ifndef _WIN32
-#include <arpa/inet.h>
-#endif
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-#ifdef _WIN32
-// Windows is little endian only
-#define __LITTLE_ENDIAN 1234
-#define __BIG_ENDIAN    4321
-#define __BYTE_ORDER __LITTLE_ENDIAN
-#define __FLOAT_WORD_ORDER __BYTE_ORDER
-
-typedef unsigned char uint8_t;
-
-#else /* !_WIN32 */
-
-#include <sys/param.h>
-
-#if defined(BYTE_ORDER) && !defined(__BYTE_ORDER)
-#define __BYTE_ORDER    BYTE_ORDER
-#endif
-
-#if defined(BIG_ENDIAN) && !defined(__BIG_ENDIAN)
-#define __BIG_ENDIAN	BIG_ENDIAN
-#endif
-
-#if defined(LITTLE_ENDIAN) && !defined(__LITTLE_ENDIAN)
-#define __LITTLE_ENDIAN	LITTLE_ENDIAN
-#endif
-
-#endif /* !_WIN32 */
-
-// define default endianness
-#ifndef __LITTLE_ENDIAN
-#define __LITTLE_ENDIAN	1234
-#endif
-
-#ifndef __BIG_ENDIAN
-#define __BIG_ENDIAN	4321
-#endif
-
-#ifndef __BYTE_ORDER
-#warning "Byte order not defined on your system, assuming little endian!"
-#define __BYTE_ORDER	__LITTLE_ENDIAN
-#endif
-
-// ok, we assume to have the same float word order and byte order if float word order is not defined
-#ifndef __FLOAT_WORD_ORDER
-//#warning "Float word order not defined, assuming the same as byte order!"
-#define __FLOAT_WORD_ORDER	__BYTE_ORDER
-#endif
-
-#if !defined(__BYTE_ORDER) || !defined(__FLOAT_WORD_ORDER)
-#error "Undefined byte or float word order!"
-#endif
-
-#if __FLOAT_WORD_ORDER != __BIG_ENDIAN && __FLOAT_WORD_ORDER != __LITTLE_ENDIAN
-#error "Unknown/unsupported float word order!"
-#endif
-
-#if __BYTE_ORDER != __BIG_ENDIAN && __BYTE_ORDER != __LITTLE_ENDIAN
-#error "Unknown/unsupported byte order!"
-#endif
-
-static double
-AMF0_DecodeNumber(const char *data)
-{
-	double dVal;
-#if __FLOAT_WORD_ORDER == __BYTE_ORDER
-#if __BYTE_ORDER == __BIG_ENDIAN
-	memcpy(&dVal, data, 8);
-#elif __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned char *ci, *co;
-	ci = (unsigned char *)data;
-	co = (unsigned char *)&dVal;
-	co[0] = ci[7];
-	co[1] = ci[6];
-	co[2] = ci[5];
-	co[3] = ci[4];
-	co[4] = ci[3];
-	co[5] = ci[2];
-	co[6] = ci[1];
-	co[7] = ci[0];
-#endif
-#else
-#if __BYTE_ORDER == __LITTLE_ENDIAN	// __FLOAT_WORD_ORER == __BIG_ENDIAN
-	unsigned char *ci, *co;
-	ci = (unsigned char *)data;
-	co = (unsigned char *)&dVal;
-	co[0] = ci[3];
-	co[1] = ci[2];
-	co[2] = ci[1];
-	co[3] = ci[0];
-	co[4] = ci[7];
-	co[5] = ci[6];
-	co[6] = ci[5];
-	co[7] = ci[4];
-#else // __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN
-	unsigned char *ci, *co;
-	ci = (unsigned char *)data;
-	co = (unsigned char *)&dVal;
-	co[0] = ci[4];
-	co[1] = ci[5];
-	co[2] = ci[6];
-	co[3] = ci[7];
-	co[4] = ci[0];
-	co[5] = ci[1];
-	co[6] = ci[2];
-	co[7] = ci[3];
-#endif
-#endif
-	return dVal;
-}
-
-char *
-AMF0_EncodeNumber(char *output, char *outend, double dVal)
-{
-	if (output+8 > outend)
-		return NULL;
-
-//  *output++ = AMF_NUMBER;	// type: Number
-
-#if __FLOAT_WORD_ORDER == __BYTE_ORDER
-#if __BYTE_ORDER == __BIG_ENDIAN
-	memcpy(output, &dVal, 8);
-#elif __BYTE_ORDER == __LITTLE_ENDIAN
-	{
-		unsigned char *ci, *co;
-		ci = (unsigned char *)&dVal;
-		co = (unsigned char *)output;
-		co[0] = ci[7];
-		co[1] = ci[6];
-		co[2] = ci[5];
-		co[3] = ci[4];
-		co[4] = ci[3];
-		co[5] = ci[2];
-		co[6] = ci[1];
-		co[7] = ci[0];
-	}
-#endif
-#else
-#if __BYTE_ORDER == __LITTLE_ENDIAN	/* __FLOAT_WORD_ORER == __BIG_ENDIAN */
-	{
-		unsigned char *ci, *co;
-		ci = (unsigned char *)&dVal;
-		co = (unsigned char *)output;
-		co[0] = ci[3];
-		co[1] = ci[2];
-		co[2] = ci[1];
-		co[3] = ci[0];
-		co[4] = ci[7];
-		co[5] = ci[6];
-		co[6] = ci[5];
-		co[7] = ci[4];
-	}
-#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */
-	{
-		unsigned char *ci, *co;
-		ci = (unsigned char *)&dVal;
-		co = (unsigned char *)output;
-		co[0] = ci[4];
-		co[1] = ci[5];
-		co[2] = ci[6];
-		co[3] = ci[7];
-		co[4] = ci[0];
-		co[5] = ci[1];
-		co[6] = ci[2];
-		co[7] = ci[3];
-	}
-#endif
-#endif
-	return output+8;
-}
-
-static void serialize(vector<__uint8> &s,const utf8 &v,int mode,const utf8 &logMsgPrefix) throw(exception)
-{
-	assert(mode == 0); // AMF3 not yet implemented
-	__uint16 slen = (__uint16)v.length();
-	slen = htons(slen);
-	s.insert(s.end(),(const char *)&slen,((const char *)&slen) + 2);
-	s.insert(s.end(),v.begin(),v.end());
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-
-AMFObject::AMFObject() throw() {}
-
-AMFObject::~AMFObject() throw()
-{
-	clearProperties();
-}
-
-AMFObject::AMFObject(const AMFObject &obj) throw()
-{
-	for(propertyMap_t::const_iterator i = obj.m_properties.begin(); i != obj.m_properties.end(); ++i)
-	{
-		m_properties[(*i).first] = new AMFVal(*(*i).second);
-	}
-}
-
-AMFObject& AMFObject::operator=(const AMFObject &obj) throw()
-{
-	clearProperties();
-	for(propertyMap_t::const_iterator i = obj.m_properties.begin(); i != obj.m_properties.end(); ++i)
-	{
-		m_properties[(*i).first] = new AMFVal(*(*i).second);
-	}	
-	return *this;
-}
-
-void AMFObject::clearProperties() throw()
-{	
-	for(propertyMap_t::iterator i = m_properties.begin(); i != m_properties.end(); ++i)
-	{
-		delete (*i).second;
-	}
-	m_properties.clear();
-}
-
-// add property. Takes possession of value "v"
-// throws if value already exists
-void AMFObject::addProperty(const utf8 &key,AMFVal *v) throw(exception)
-{
-	assert(v);
-	assert(m_properties.find(key) == m_properties.end());
-
-	if (m_properties.find(key) != m_properties.end())
-		throwEx<runtime_error>(string(__FUNCTION__) + " property " + key + " already exists");
-	if (!v)
-		throwEx<runtime_error>(string(__FUNCTION__) + " value is null.");
-
-	m_properties[key] = v;
-}
-
-const AMFVal* AMFObject::getProperty(const uniString::utf8 &key) const throw()
-{
-	propertyMap_t::const_iterator i = m_properties.find(key);
-	if (i == m_properties.end()) return 0;
-	return (*i).second;
-}
-
-utf8 AMFObject::prettyPrint(int mode,const utf8 &tabs) const throw()
-{
-	utf8 result;
-	result += tabs + "{" + eol();
-
-	for(propertyMap_t::const_iterator i = m_properties.begin(); i != m_properties.end(); ++i)
-	{
-		assert((*i).second);
-		result += tabs + "\t" + (*i).first + ": ";
-		result += (*i).second->prettyPrint(mode,tabs + "\t");
-		result += eol();
-	}
-
-	result += tabs + "}";
-	return result;
-}
-
-void AMFObject::serialize(vector<__uint8> &s,int mode,const utf8 &logMsgPrefix) const throw(exception)
-{
-	assert(mode == 0); // AMF3 not yet implemented
-	for(propertyMap_t::const_iterator i = m_properties.begin(); i != m_properties.end(); ++i)
-	{
-		assert((*i).second);
-		::serialize(s,(*i).first,mode,logMsgPrefix);
-		(*i).second->serialize(s,mode,logMsgPrefix);
-	}
-	s.push_back(0);
-	s.push_back(0);
-	s.push_back(AMF0_object_end_marker);	
-}
-
-void AMFObject::loadFromBitstream(const char *&bitstream,int &bitstreamLen,int mode,const utf8 &logMsgPrefix) throw(exception)
-{
-	assert(mode == 0); // AMF3 not implemented yet
-	propertyMap_t pmap;
-
-	AMFVal *val = 0;
-	try
-	{
-		while(true)
-		{
-			if (bitstreamLen < 3) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 object marker.");
-			if (bitstream[0] == 0 && bitstream[1] == 0 && bitstream[2] == 9)
-			{
-				// end of object
-				bitstream += 3;
-				bitstreamLen -= 3;
-				break;
-			}
-			if (bitstream[0] == 0 && bitstream[1] == 0) throwEx<runtime_error>(logMsgPrefix + " AMF0 object has null string keyed property");
-			if (bitstreamLen < 4) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 object marker.");
-
-			// alright, we've taken care of the abberant cases and end-of-object. Now let's get a property
-			int slen = ntohs(*(__uint16*)bitstream);
-			bitstream += 2;
-			bitstreamLen -= 2;
-			if (bitstreamLen < slen) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 object property key.");
-			utf8 key(bitstream,bitstream + slen);
-			bitstream += slen;
-			bitstreamLen -= slen;
-			assert(!val);
-			val = new AMFVal;
-			val->loadFromBitstream(bitstream,bitstreamLen,mode,logMsgPrefix);
-			pmap[key] = val;
-			val = 0;
-		}
-
-		clearProperties();
-		m_properties = pmap;
-	}
-	catch(...)
-	{
-		delete val;
-		throw;
-	}
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////////////////////
-
-AMFEMCAArray::AMFEMCAArray() throw() {}
-
-AMFEMCAArray::~AMFEMCAArray() throw()
-{
-	clearProperties();
-}
-
-AMFEMCAArray::AMFEMCAArray(const AMFEMCAArray &obj) throw()
-{
-	for(propertyMap_t::const_iterator i = obj.m_properties.begin(); i != obj.m_properties.end(); ++i)
-	{
-		m_properties[(*i).first] = new AMFVal(*(*i).second);
-	}
-}
-
-AMFEMCAArray& AMFEMCAArray::operator=(const AMFEMCAArray &obj) throw()
-{
-	clearProperties();
-	for(propertyMap_t::const_iterator i = obj.m_properties.begin(); i != obj.m_properties.end(); ++i)
-	{
-		m_properties[(*i).first] = new AMFVal(*(*i).second);
-	}	
-	return *this;
-}
-
-void AMFEMCAArray::clearProperties() throw()
-{	
-	for(propertyMap_t::iterator i = m_properties.begin(); i != m_properties.end(); ++i)
-	{
-		delete (*i).second;
-	}
-	m_properties.clear();
-}
-
-// add property. Takes possession of value "v"
-// throws if value already exists
-void AMFEMCAArray::addProperty(const utf8 &key,AMFVal *v) throw(exception)
-{
-	assert(v);
-	assert(m_properties.find(key) == m_properties.end());
-
-	if (m_properties.find(key) != m_properties.end())
-		throwEx<runtime_error>(string(__FUNCTION__) + " property " + key + " already exists");
-	if (!v)
-		throwEx<runtime_error>(string(__FUNCTION__) + " value is null.");
-
-	m_properties[key] = v;
-}
-
-const AMFVal* AMFEMCAArray::getProperty(const uniString::utf8 &key) const throw()
-{
-	propertyMap_t::const_iterator i = m_properties.find(key);
-	if (i == m_properties.end()) return 0;
-	return (*i).second;
-}
-
-utf8 AMFEMCAArray::prettyPrint(int mode,const utf8 &tabs) const throw()
-{
-	utf8 result;
-	result += tabs + "{" + eol();
-
-	for(propertyMap_t::const_iterator i = m_properties.begin(); i != m_properties.end(); ++i)
-	{
-		assert((*i).second);
-		result += tabs + "\t" + (*i).first + ": ";
-		result += (*i).second->prettyPrint(mode,tabs + "\t");
-		result += eol();
-	}
-
-	result += tabs + "}";
-	return result;
-}
-
-void AMFEMCAArray::serialize(vector<__uint8> &s,int mode,const utf8 &logMsgPrefix) const throw(exception)
-{
-	assert(mode == 0); // amf3 not implemented
-	// wowza seems to always just use zero as array length
-	s.push_back(0); s.push_back(0); s.push_back(0); s.push_back(0);
-
-	for(propertyMap_t::const_iterator i = m_properties.begin(); i != m_properties.end(); ++i)
-	{
-		assert((*i).second);
-		::serialize(s,(*i).first,mode,logMsgPrefix);
-		(*i).second->serialize(s,mode,logMsgPrefix);
-	}
-	s.push_back(0);
-	s.push_back(0);
-	s.push_back(AMF0_object_end_marker);	
-}
-
-void AMFEMCAArray::loadFromBitstream(const char *&bitstream,int &bitstreamLen,int mode,const utf8 &logMsgPrefix) throw(exception)
-{
-	assert(mode == 0); // AMF3 not implemented yet
-	propertyMap_t pmap;
-
-	AMFVal *val = 0;
-	try
-	{
-		if (bitstreamLen < 7) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 ECMA array type.");
-
-		// skip length
-		bitstream += 4;
-		bitstreamLen -= 4;
-
-		while(true)
-		{
-			if (bitstreamLen < 3) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for ECMA array type.");
-			if (bitstream[0] == 0 && bitstream[1] == 0 && bitstream[2] == 9)
-			{
-				// end of object
-				bitstream += 3;
-				bitstreamLen -= 3;
-				break;
-			}
-			if (bitstream[0] == 0 && bitstream[1] == 0) throwEx<runtime_error>(logMsgPrefix + " AMF0 ECMA array type has null string keyed property");
-			if (bitstreamLen < 4) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 ECMA array type.");
-
-			// alright, we've taken care of the abberant cases and end-of-object. Now let's get a property
-			int slen = ntohs(*(__uint16*)bitstream);
-			bitstream += 2;
-			bitstreamLen -= 2;
-			if (bitstreamLen < slen) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 ECMA array type property key.");
-			utf8 key(bitstream,bitstream + slen);
-			bitstream += slen;
-			bitstreamLen -= slen;
-			assert(!val);
-			val = new AMFVal;
-			val->loadFromBitstream(bitstream,bitstreamLen,mode,logMsgPrefix);
-			pmap[key] = val;
-			val = 0;
-		}
-
-		clearProperties();
-		m_properties = pmap;
-	}
-	catch(...)
-	{
-		delete val;
-		throw;
-	}
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-const uniString::utf8 & AMFVal::getString() const throw(std::exception)	
-{
-	if (m_type3 == AMF3_string_marker) return m_string_val;
-	if (m_type0 != AMF0_string_marker) throwEx<runtime_error>("AMFVal type error. Wanted string but type is " + tos(m_type0));
-	return m_string_val;
-}
-
-int AMFVal::getInteger() const throw(std::exception)
-{
-	if (m_type3 != AMF3_integer_marker) throwEx<runtime_error>("AMFVal type error. Wanted integer but type is " + tos(m_type3));
-	return m_integer_val;
-}
-
-double AMFVal::getNumber() const throw(std::exception)
-{
-	if (m_type3 == AMF3_double_marker) return m_number_val;
-	if (m_type0 != AMF0_number_marker) throwEx<runtime_error>("AMFVal type error. Wanted number but type is " + tos(m_type0));
-	return m_number_val;
-}
-
-bool AMFVal::getBool() const throw(std::exception)
-{
-	if (m_type3 == AMF3_true_marker) return true;
-	if (m_type3 == AMF3_false_marker) return false;
-	if (m_type0 != AMF0_boolean_marker) throwEx<runtime_error>("AMFVal type error. Wanted boolean but type is " + tos(m_type0));
-	return m_boolean_val;
-}
-
-const AMFObject& AMFVal::getObject() const throw(std::exception)
-{
-	if (m_type3 == AMF3_object_marker) return m_object_val;
-	if (m_type0 != AMF0_object_marker) throwEx<runtime_error>("AMFVal type error. Wanted object but type is " + tos(m_type0));
-	return m_object_val;
-}
-
-void AMFVal::serialize(vector<__uint8> &s,int mode,const utf8 &logMsgPrefix) const throw(exception)
-{
-	s.push_back(mode == 3 ? (__uint8)m_type3 : (__uint8)m_type0);
-	if (mode == 3)
-	{
-		switch(m_type3)
-		{
-			case AMF3_double_marker:
-			{
-				__uint8 buf[8] = {0};
-				AMF0_EncodeNumber((char *)buf,(char *)buf+8,m_number_val);
-				s.insert(s.end(),buf,buf+8);
-			}
-			break;
-
-			default:
-				throwEx<runtime_error>(logMsgPrefix + __FUNCTION__ + " unsupported type " + tos(m_type3));
-		}
-	}
-	else
-	{
-		switch(m_type0)
-		{
-			case AMF0_number_marker:
-			{
-				__uint8 buf[8] = {0};
-				AMF0_EncodeNumber((char *)buf,(char *)buf+8,m_number_val);
-				s.insert(s.end(),buf,buf+8);
-			}
-			break;
-
-			case AMF0_boolean_marker:
-				s.push_back(m_boolean_val ? 1 : 0);
-			break;
-
-			case AMF0_string_marker:
-				::serialize(s,m_string_val,mode,logMsgPrefix);
-			break;
-
-			case AMF0_object_marker:
-				m_object_val.serialize(s,mode,logMsgPrefix);
-			break;
-
-			case AMF0_ecma_array_marker:
-				m_ecma_array_val.serialize(s,mode,logMsgPrefix);
-			break;
-
-			case AMF0_null_marker:
-			break;
-
-			default:
-				throwEx<runtime_error>(logMsgPrefix + __FUNCTION__ + " unsupported type " + tos(m_type0));
-			break;
-		}
-	}
-}
-
-utf8 AMFVal::prettyPrint(int mode,const utf8 &tabs) const throw()
-{
-	if (mode == 3)
-	{
-		switch(m_type3)
-		{
-			case AMF3_double_marker:
-			return tabs + tos(m_number_val);
-
-			case AMF3_integer_marker:
-			return tabs + tos(m_integer_val);
-
-			default:
-			break;
-		}
-	}
-	else
-	{
-		switch(m_type0)
-		{
-			case AMF0_number_marker:
-			return tabs + tos(m_number_val);
-
-			case AMF0_boolean_marker:
-			return tabs + (m_boolean_val ? "true" : "false");
-
-			case AMF0_string_marker:
-			return tabs + m_string_val;
-
-			case AMF0_object_marker:
-			return m_object_val.prettyPrint(mode,tabs);
-
-			case AMF0_ecma_array_marker:
-			return m_ecma_array_val.prettyPrint(mode,tabs);
-
-			default:
-			break;
-		}
-	}
-	return "";
-}
-
-void AMFVal::loadFromBitstream(const char *&bitstream,int &bitstreamLen,int mode,const utf8 &logMsgPrefix) throw(exception)
-{
-	if (!bitstreamLen) throwEx<runtime_error>(logMsgPrefix + " AMF bitstream is empty");
-	if (mode == 3)
-	{
-		m_type3 = (AMF3Marker_t)*bitstream;
-		bitstreamLen -= 1;
-		bitstream += 1;
-		switch(m_type3)
-		{
-			case AMF3_double_marker:
-				if (bitstreamLen < 8) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF3 double marker.");
-				m_number_val = AMF0_DecodeNumber(bitstream);
-				bitstream += 8;
-				bitstreamLen -= 8;
-			break;
-
-			case AMF3_null_marker:
-			case AMF3_false_marker:
-			case AMF3_true_marker:
-			case AMF3_integer_marker:
-			case AMF3_string_marker:
-			case AMF3_xml_doc_marker:
-			case AMF3_date_marker:
-			case AMF3_array_marker:
-			case AMF3_object_marker:
-			case AMF3_xml_marker:
-			case AMF3_byte_array_marker:
-			case AMF3_undefined_marker:
-				throwEx<runtime_error>(logMsgPrefix + " Unsupported AMF3 marker " + tos(m_type3));
-			break;
-
-			default:
-				throwEx<runtime_error>(logMsgPrefix + " Unknown AMF3 marker " + tos(m_type3));
-			break;
-		}
-	}
-	else
-	{
-		m_type0 = (AMF0Marker_t)*bitstream;
-		bitstreamLen -= 1;
-		bitstream += 1;
-		switch(m_type0)
-		{
-			case AMF0_number_marker:
-				if (bitstreamLen < 8) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 number marker.");
-				m_number_val = AMF0_DecodeNumber(bitstream);
-				bitstream += 8;
-				bitstreamLen -= 8;
-			break;
-
-			case AMF0_boolean_marker:
-				if (bitstreamLen < 1) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 boolean marker.");
-				m_boolean_val = ((*bitstream) ? true : false);
-				bitstream += 1;
-				bitstreamLen -= 1;
-			break;
-
-			case AMF0_string_marker:
-			{
-				if (bitstreamLen < 2) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 string marker.");
-				__uint16 slen = ntohs(*(__uint16*)bitstream);
-				bitstream += 2;
-				bitstreamLen -= 2;
-				if (bitstreamLen < slen) throwEx<runtime_error>(logMsgPrefix + " Insufficient data for AMF0 string marker.");
-				m_string_val = utf8(bitstream,bitstream + slen);
-				bitstream += slen;
-				bitstreamLen -= slen;
-			}
-			break;
-
-			case AMF0_object_marker:
-				m_object_val.loadFromBitstream(bitstream,bitstreamLen,0,logMsgPrefix);
-			break;
-
-			case AMF0_ecma_array_marker:
-				m_ecma_array_val.loadFromBitstream(bitstream,bitstreamLen,0,logMsgPrefix);
-			break;
-
-			case AMF0_undefined_marker:
-				DEBUG_LOG(logMsgPrefix + "Warning -  Undefined AMF0 marker " + tos(m_type0));
-			case AMF0_null_marker:
-			break;
-
-			case AMF0_reference_marker:
-			case AMF0_object_end_marker:
-			case AMF0_strict_array_marker:
-			case AMF0_date_marker:
-			case AMF0_long_string_marker:
-			case AMF0_unsupported_marker:
-			case AMF0_recordset_marker:
-			case AMF0_xml_Document_marker:
-			case AMF0_typed_object_marker:
-			case AMF0_amvplus_object_marker:
-			case AMF0_movieclip_marker:
-				throwEx<runtime_error>(logMsgPrefix + " Unsupported AMF0 marker " + tos(m_type0));
-			break;
-
-			default:
-				throwEx<runtime_error>(logMsgPrefix + " Unknown AMF0 marker " + tos(m_type0));
-			break;
-		}
-	}
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////
-
-void AMFEncoding::loadFromBitstream(const char *bitstream, int bitstreamLen,const uniString::utf8 &logMsgPrefix) throw(exception)
-{
-	int blen = bitstreamLen;
-	const char *bs = bitstream;
-	vector<AMFVal> values;
-	while(blen)
-	{
-		AMFVal v;
-		v.loadFromBitstream(bs,blen,m_mode,logMsgPrefix);
-		values.push_back(v);
-	}
-	m_values=values;
-}
-
-const AMFVal& AMFEncoding::getValue(size_t index) const throw(std::exception)
-{
-	if (index >= m_values.size())
-		throwEx<runtime_error>("AMFEncoding::getValue(" + tos(index) + ") out of range");
-	return m_values[index];
-}
-
-void AMFEncoding::appendValue(const AMFVal &v) throw()
-{
-	m_values.push_back(v);
-}
-
-void AMFEncoding::serialize(vector<__uint8> &s,const utf8 &logMsgPrefix) const throw(exception)
-{
-	for(vector<AMFVal>::const_iterator i = m_values.begin(); i != m_values.end(); ++i)
-		(*i).serialize(s,m_mode,logMsgPrefix);
-}
-
-utf8 AMFEncoding::prettyPrint() const throw()
-{
-	utf8 result("INVOKE(");
-	result += eol();
-	for(vector<AMFVal>::const_iterator i = m_values.begin(); i != m_values.end(); ++i)
-		result += (*i).prettyPrint(m_mode,"\t") + eol();
-	result += ")";
-	return result;
-}
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/amf.h b/Src/Plugins/DSP/sc_serv3/amf.h
deleted file mode 100644
index 41ae87f9..00000000
--- a/Src/Plugins/DSP/sc_serv3/amf.h
+++ /dev/null
@@ -1,156 +0,0 @@
-#ifndef amf_H_
-#define amf_H_
-
-#include <vector>
-#include <map>
-#include <stdexcept>
-#include "unicode/uniString.h"
-
-enum AMF0Marker_t
-{
-	AMF0_number_marker = 0x00,
-	AMF0_boolean_marker,
-	AMF0_string_marker,
-	AMF0_object_marker,
-	AMF0_movieclip_marker,
-	AMF0_null_marker,
-	AMF0_undefined_marker,
-	AMF0_reference_marker,
-	AMF0_ecma_array_marker,
-	AMF0_object_end_marker,
-	AMF0_strict_array_marker,
-	AMF0_date_marker,
-	AMF0_long_string_marker,
-	AMF0_unsupported_marker,
-	AMF0_recordset_marker,
-	AMF0_xml_Document_marker,
-	AMF0_typed_object_marker,
-	AMF0_amvplus_object_marker
-};
-
-enum AMF3Marker_t
-{
-	AMF3_undefined_marker = 0x00,
-	AMF3_null_marker,
-	AMF3_false_marker,
-	AMF3_true_marker,
-	AMF3_integer_marker,
-	AMF3_double_marker,
-	AMF3_string_marker,
-	AMF3_xml_doc_marker,
-	AMF3_date_marker,
-	AMF3_array_marker,
-	AMF3_object_marker,
-	AMF3_xml_marker,
-	AMF3_byte_array_marker,
-};
-
-struct AMFStrictArray
-{
-};
-
-struct AMFDate
-{
-};
-
-class AMFVal;
-
-struct AMFEMCAArray
-{
-private:
-	typedef std::map<uniString::utf8,AMFVal*> propertyMap_t;
-	std::map<uniString::utf8,AMFVal*> m_properties;
-
-public:
-	AMFEMCAArray() throw();
-	~AMFEMCAArray() throw();
-	AMFEMCAArray(const AMFEMCAArray &obj) throw();
-	AMFEMCAArray& operator=(const AMFEMCAArray &obj) throw();
-
-	void loadFromBitstream(const char *&bitstream,int &bitstreamLen,int mode,const uniString::utf8 &logMsgPrefix) throw(std::exception);
-	const AMFVal* getProperty(const uniString::utf8 &key) const throw();
-	void addProperty(const uniString::utf8 &key,AMFVal *v) throw(std::exception); // takes possession of "v"
-	void clearProperties() throw();
-	void serialize(std::vector<__uint8> &s,int mode,const uniString::utf8 &logMsgPrefix) const throw(std::exception);
-	uniString::utf8 prettyPrint(int mode,const uniString::utf8 &tabs) const throw();
-};
-
-class AMFObject
-{
-private:
-	typedef std::map<uniString::utf8,AMFVal*> propertyMap_t;
-	std::map<uniString::utf8,AMFVal*> m_properties;
-
-public:
-	AMFObject() throw();
-	~AMFObject() throw();
-	AMFObject(const AMFObject &obj) throw();
-	AMFObject& operator=(const AMFObject &obj) throw();
-
-	void loadFromBitstream(const char *&bitstream,int &bitstreamLen,int mode,const uniString::utf8 &logMsgPrefix) throw(std::exception);
-	const AMFVal* getProperty(const uniString::utf8 &key) const throw();
-	void addProperty(const uniString::utf8 &key,AMFVal *v) throw(std::exception); // takes possession of "v"
-	void clearProperties() throw();
-	void serialize(std::vector<__uint8> &s,int mode,const uniString::utf8 &logMsgPrefix) const throw(std::exception);
-	uniString::utf8 prettyPrint(int mode,const uniString::utf8 &tabs) const throw();
-};
-
-class AMFVal
-{
-private:
-	AMF0Marker_t	m_type0;		// type
-	AMF3Marker_t	m_type3;
-
-	// value depends on type
-	int				m_integer_val;
-	double			m_number_val;
-	bool			m_boolean_val;
-	uniString::utf8	m_string_val;
-	AMFObject		m_object_val;
-	__uint16		m_reference_val;
-	AMFEMCAArray	m_ecma_array_val;	
-	AMFStrictArray	m_strict_array_val;
-	AMFDate			m_date_val;
-
-public:
-	void loadFromBitstream(const char *&bitstream,int &bitstreamLen,int mode,const uniString::utf8 &logMsgPrefix) throw(std::exception);
-
-	const uniString::utf8 &getString() const throw(std::exception);
-	double			getNumber() const throw(std::exception);
-	bool			getBool() const throw(std::exception);
-	const AMFObject& getObject() const throw(std::exception);
-	int				getInteger() const throw(std::exception);
-
-	AMFVal()						 throw(): m_type0(AMF0_null_marker),m_type3(AMF3_undefined_marker){}
-	AMFVal(double v)				 throw(): m_type0(AMF0_number_marker),m_type3(AMF3_undefined_marker) ,m_number_val(v){}
-	AMFVal(bool v)					 throw(): m_type0(AMF0_boolean_marker),m_type3(AMF3_undefined_marker),m_boolean_val(v){}
-	AMFVal(const uniString::utf8 &v) throw(): m_type0(AMF0_string_marker),m_type3(AMF3_undefined_marker) ,m_string_val(v){}
-	AMFVal(const AMFObject &v)		 throw(): m_type0(AMF0_object_marker),m_type3(AMF3_undefined_marker) ,m_object_val(v){}
-	AMFVal(const AMFEMCAArray &v)	 throw(): m_type0(AMF0_ecma_array_marker),m_type3(AMF3_undefined_marker),m_ecma_array_val(v){}
-
-	void serialize(std::vector<__uint8> &s,int mode,const uniString::utf8 &logMsgPrefix) const throw(std::exception);
-	uniString::utf8 prettyPrint(int mode,const uniString::utf8 &tabs) const throw();
-};
-	
-class AMFEncoding
-{
-private:
-	std::vector<AMFVal> m_values;
-	int m_mode;
-
-public:
-	AMFEncoding(int mode = 0) throw():m_mode(mode){}
-	~AMFEncoding() throw(){}
-
-	void clear() throw() { m_values.clear(); }
-
-	void loadFromBitstream(const char *bitstream,int bitstreamLen,const uniString::utf8 &logMsgPrefix) throw(std::exception);	
-	const AMFVal& getValue(size_t index) const throw(std::exception);
-
-	void appendValue(const AMFVal &v) throw();
-	void serialize(std::vector<__uint8> &s,const uniString::utf8 &logMsgPrefix) const throw(std::exception);
-
-	uniString::utf8 prettyPrint() const throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/GNUmakefile b/Src/Plugins/DSP/sc_serv3/aolxml/GNUmakefile
deleted file mode 100644
index f1a5feaf..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/GNUmakefile
+++ /dev/null
@@ -1,2 +0,0 @@
-build:
-	./unix_build_expat
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/CMake.README b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/CMake.README
deleted file mode 100644
index eda302d9..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/CMake.README
+++ /dev/null
@@ -1,42 +0,0 @@
-== How to build expat with cmake (experimental) ==
-
-The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual 
-Studio) and should work on all other platform cmake supports.
-
-Assuming ~/expat-2.1.0 is the source directory of expat, add a subdirectory
-build and change into that directory:
-~/expat-2.1.0$ mkdir build && cd build
-~/expat-2.1.0/build$
-
-From that directory, call cmake first, then call make, make test and 
-make install in the usual way:
-~/expat-2.1.0/build$ cmake ..
--- The C compiler identification is GNU
--- The CXX compiler identification is GNU
-....
--- Configuring done
--- Generating done
--- Build files have been written to: /home/patrick/expat-2.1.0/build
-
-If you want to specify the install location for your files, append 
--DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call.
-
-~/expat-2.1.0/build$ make && make test && make install
-Scanning dependencies of target expat
-[  5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o
-[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o
-....
--- Installing: /usr/local/lib/pkgconfig/expat.pc
--- Installing: /usr/local/bin/xmlwf
--- Installing: /usr/local/share/man/man1/xmlwf.1
-
-For Windows builds, you must make sure to call cmake from an environment where 
-your compiler is reachable, that means either you call it from the 
-Visual Studio Command Prompt or when using mingw, you must open a cmd.exe and
-make sure that gcc can be called. On Windows, you also might want to specify a 
-special Generator for CMake:
-for Visual Studio builds do: 
-cmake .. -G "Visual Studio 10" && vcexpress expat.sln
-for mingw builds do: 
-cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=D:\expat-install 
-    && gmake && gmake install
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/CMakeLists.txt b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/CMakeLists.txt
deleted file mode 100644
index 0c923baa..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/CMakeLists.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-# This file is copyrighted under the BSD-license for buildsystem files of KDE
-# copyright 2010, Patrick Spendrin <ps_ml@gmx.de>
-
-project(expat)
-
-cmake_minimum_required(VERSION 2.6)
-set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org")
-set(PACKAGE_NAME "expat")
-set(PACKAGE_VERSION "2.1.0")
-set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
-set(PACKAGE_TARNAME "${PACKAGE_NAME}")
-
-option(BUILD_tools "build the xmlwf tool for expat library" ON)
-option(BUILD_examples "build the examples for expat library" ON)
-option(BUILD_tests "build the tests for expat library" ON)
-option(BUILD_shared "build a shared expat library" ON)
-
-# configuration options
-set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
-option(XML_DTD "Define to make parameter entity parsing functionality available" ON)
-option(XML_NS "Define to make XML Namespaces functionality available" ON)
-
-if(XML_DTD)
-    set(XML_DTD 1)
-else(XML_DTD)
-    set(XML_DTD 0)
-endif(XML_DTD)
-if(XML_NS)
-    set(XML_NS 1)
-else(XML_NS)
-    set(XML_NS 0)
-endif(XML_NS)
-
-if(BUILD_tests)
-    enable_testing()
-endif(BUILD_tests)
-
-include(ConfigureChecks.cmake)
-
-include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib)
-if(MSVC)
-    add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
-endif(MSVC)
-
-set(expat_SRCS
-    lib/xmlparse.c
-    lib/xmlrole.c
-    lib/xmltok.c 
-    lib/xmltok_impl.c 
-    lib/xmltok_ns.c
-)
-
-if(WIN32 AND BUILD_shared)
-    set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
-endif(WIN32 AND BUILD_shared)
-
-if(BUILD_shared)
-    set(_SHARED SHARED)
-else(BUILD_shared)
-    set(_SHARED STATIC)
-endif(BUILD_shared)
-
-add_library(expat ${_SHARED} ${expat_SRCS})
-
-install(TARGETS expat RUNTIME DESTINATION bin
-                      LIBRARY DESTINATION lib
-                      ARCHIVE DESTINATION lib)
-
-set(prefix ${CMAKE_INSTALL_PREFIX})
-set(exec_prefix "\${prefix}/bin")
-set(libdir "\${prefix}/lib")
-set(includedir "\${prefix}/include")
-configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc)
-
-install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)
-
-
-
-if(BUILD_tools AND NOT WINCE)
-    set(xmlwf_SRCS
-        xmlwf/xmlwf.c
-        xmlwf/xmlfile.c
-        xmlwf/codepage.c
-        xmlwf/readfilemap.c
-    )
-
-    add_executable(xmlwf ${xmlwf_SRCS})
-    target_link_libraries(xmlwf expat)
-    install(TARGETS xmlwf DESTINATION bin)
-    install(FILES doc/xmlwf.1 DESTINATION share/man/man1)
-endif(BUILD_tools AND NOT WINCE)
-
-if(BUILD_examples)
-    add_executable(elements examples/elements.c)
-    target_link_libraries(elements expat)
-
-    add_executable(outline examples/outline.c)
-    target_link_libraries(outline expat)
-endif(BUILD_examples)
-
-if(BUILD_tests)
-    ## these are unittests that can be run on any platform
-    add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c)
-    target_link_libraries(runtests expat)
-    add_test(runtests runtests)
-
-    add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c)
-    target_link_libraries(runtestspp expat)
-    add_test(runtestspp runtestspp)
-endif(BUILD_tests)
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/COPYING b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/COPYING
deleted file mode 100644
index dcb45064..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/COPYING
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-                               and Clark Cooper
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/Changes b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/Changes
deleted file mode 100644
index 08897b9f..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/Changes
+++ /dev/null
@@ -1,205 +0,0 @@
-Release 2.1.0 Sat March 24 2012
-        - Bug Fixes:
-          #1742315: Harmful XML_ParserCreateNS suggestion.
-          #2895533: CVE-2012-1147 - Resource leak in readfilemap.c.
-          #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3.
-          #1983953, 2517952, 2517962, 2649838: 
-                Build modifications using autoreconf instead of buildconf.sh.
-          #2815947, #2884086: OBJEXT and EXEEXT support while building.
-          #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences.
-          #2517938: xmlwf should return non-zero exit status if not well-formed.
-          #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml.
-          #2855609: Dangling positionPtr after error.
-          #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8().
-          #2958794: CVE-2012-1148 - Memory leak in poolGrow.
-          #2990652: CMake support.
-          #3010819: UNEXPECTED_STATE with a trailing "%" in entity value.
-          #3206497: Unitialized memory returned from XML_Parse.
-          #3287849: make check fails on mingw-w64.
-          #3496608: CVE-2012-0876 - Hash DOS attack.
-        - Patches:
-          #1749198: pkg-config support.
-          #3010222: Fix for bug #3010819.
-          #3312568: CMake support.
-          #3446384: Report byte offsets for attr names and values.
-        - New Features / API changes:
-          Added new API member XML_SetHashSalt() that allows setting an intial
-                value (salt) for hash calculations. This is part of the fix for
-                bug #3496608 to randomize hash parameters.
-          When compiled with XML_ATTR_INFO defined, adds new API member
-                XML_GetAttributeInfo() that allows retrieving the byte
-                offsets for attribute names and values (patch #3446384).
-          Added CMake build system.
-                See bug #2990652 and patch #3312568.
-          Added run-benchmark target to Makefile.in - relies on testdata module
-                present in the same relative location as in the repository.
-          
-Release 2.0.1 Tue June 5 2007
-        - Fixed bugs #1515266, #1515600: The character data handler's calling
-          of XML_StopParser() was not handled properly; if the parser was
-          stopped and the handler set to NULL, the parser would segfault.
-        - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed
-          some character constants to be ASCII encoded.
-        - Minor cleanups of the test harness.
-        - Fixed xmlwf bug #1513566: "out of memory" error on file size zero.
-        - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call.
-        - Fixes and improvements for Windows platform:
-          bugs #1409451, #1476160, #1548182, #1602769, #1717322.
-        - Build fixes for various platforms:
-          HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180.
-          All Unix: #1554618 (refreshed config.sub/config.guess).
-                    #1490371, #1613457: support both, DESTDIR and INSTALL_ROOT,
-                    without relying on GNU-Make specific features.
-          #1647805: Patched configure.in to work better with Intel compiler.
-        - Fixes to Makefile.in to have make check work correctly:
-          bugs #1408143, #1535603, #1536684.
-        - Added Open Watcom support: patch #1523242.
-
-Release 2.0.0 Wed Jan 11 2006
-        - We no longer use the "check" library for C unit testing; we
-          always use the (partial) internal implementation of the API.
-        - Report XML_NS setting via XML_GetFeatureList().
-        - Fixed headers for use from C++.
-        - XML_GetCurrentLineNumber() and  XML_GetCurrentColumnNumber()
-          now return unsigned integers.
-        - Added XML_LARGE_SIZE switch to enable 64-bit integers for
-          byte indexes and line/column numbers.
-        - Updated to use libtool 1.5.22 (the most recent).
-        - Added support for AmigaOS.
-        - Some mostly minor bug fixes. SF issues include: #1006708,
-          #1021776, #1023646, #1114960, #1156398, #1221160, #1271642.
-
-Release 1.95.8 Fri Jul 23 2004
-        - Major new feature: suspend/resume.  Handlers can now request
-          that a parse be suspended for later resumption or aborted
-          altogether.  See "Temporarily Stopping Parsing" in the
-          documentation for more details.
-        - Some mostly minor bug fixes, but compilation should no
-          longer generate warnings on most platforms.  SF issues
-          include: #827319, #840173, #846309, #888329, #896188, #923913,
-          #928113, #961698, #985192.
-
-Release 1.95.7 Mon Oct 20 2003
-        - Fixed enum XML_Status issue (reported on SourceForge many
-          times), so compilers that are properly picky will be happy.
-        - Introduced an XMLCALL macro to control the calling
-          convention used by the Expat API; this macro should be used
-          to annotate prototypes and definitions of callback
-          implementations in code compiled with a calling convention
-          other than the default convention for the host platform.
-        - Improved ability to build without the configure-generated
-          expat_config.h header.  This is useful for applications
-          which embed Expat rather than linking in the library.
-        - Fixed a variety of bugs: see SF issues #458907, #609603,
-          #676844, #679754, #692878, #692964, #695401, #699323, #699487,
-          #820946.
-        - Improved hash table lookups.
-        - Added more regression tests and improved documentation.
-
-Release 1.95.6 Tue Jan 28 2003
-        - Added XML_FreeContentModel().
-        - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree().
-        - Fixed a variety of bugs: see SF issues #615606, #616863,
-          #618199, #653180, #673791.
-        - Enhanced the regression test suite.
-        - Man page improvements: includes SF issue #632146.
-
-Release 1.95.5 Fri Sep 6 2002
-        - Added XML_UseForeignDTD() for improved SAX2 support.
-        - Added XML_GetFeatureList().
-        - Defined XML_Bool type and the values XML_TRUE and XML_FALSE.
-        - Use an incomplete struct instead of a void* for the parser
-          (may not retain).
-        - Fixed UTF-8 decoding bug that caused legal UTF-8 to be rejected.
-        - Finally fixed bug where default handler would report DTD
-          events that were already handled by another handler.
-          Initial patch contributed by Darryl Miles.
-        - Removed unnecessary DllMain() function that caused static
-          linking into a DLL to be difficult.
-        - Added VC++ projects for building static libraries.
-        - Reduced line-length for all source code and headers to be
-          no longer than 80 characters, to help with AS/400 support.
-        - Reduced memory copying during parsing (SF patch #600964).
-        - Fixed a variety of bugs: see SF issues #580793, #434664,
-          #483514, #580503, #581069, #584041, #584183, #584832, #585537,
-          #596555, #596678, #598352, #598944, #599715, #600479, #600971.
-
-Release 1.95.4 Fri Jul 12 2002
-        - Added support for VMS, contributed by Craig Berry.  See
-          vms/README.vms for more information.
-        - Added Mac OS (classic) support, with a makefile for MPW,
-          contributed by Thomas Wegner and Daryle Walker.
-        - Added Borland C++ Builder 5 / BCC 5.5 support, contributed
-          by Patrick McConnell (SF patch #538032).
-        - Fixed a variety of bugs: see SF issues #441449, #563184,
-          #564342, #566334, #566901, #569461, #570263, #575168, #579196.
-        - Made skippedEntityHandler conform to SAX2 (see source comment)
-        - Re-implemented WFC: Entity Declared from XML 1.0 spec and
-          added a new error "entity declared in parameter entity":
-          see SF bug report #569461 and SF patch #578161
-        - Re-implemented section 5.1 from XML 1.0 spec:
-          see SF bug report #570263 and SF patch #578161
-
-Release 1.95.3 Mon Jun 3 2002
-        - Added a project to the MSVC workspace to create a wchar_t
-          version of the library; the DLLs are named libexpatw.dll.
-        - Changed the name of the Windows DLLs from expat.dll to
-          libexpat.dll; this fixes SF bug #432456.
-        - Added the XML_ParserReset() API function.
-        - Fixed XML_SetReturnNSTriplet() to work for element names.
-        - Made the XML_UNICODE builds usable (thanks, Karl!).
-        - Allow xmlwf to read from standard input.
-        - Install a man page for xmlwf on Unix systems.
-        - Fixed many bugs; see SF bug reports #231864, #461380, #464837,
-          #466885, #469226, #477667, #484419, #487840, #494749, #496505,
-          #547350.  Other bugs which we can't test as easily may also
-          have been fixed, especially in the area of build support.
-
-Release 1.95.2 Fri Jul 27 2001
-        - More changes to make MSVC happy with the build; add a single
-          workspace to support both the library and xmlwf application.
-        - Added a Windows installer for Windows users; includes
-          xmlwf.exe.
-        - Added compile-time constants that can be used to determine the
-          Expat version
-        - Removed a lot of GNU-specific dependencies to aide portability
-          among the various Unix flavors.
-        - Fix the UTF-8 BOM bug.
-        - Cleaned up warning messages for several compilers.
-        - Added the -Wall, -Wstrict-prototypes options for GCC.
-
-Release 1.95.1 Sun Oct 22 15:11:36 EDT 2000
-        - Changes to get expat to build under Microsoft compiler
-        - Removed all aborts and instead return an UNEXPECTED_STATE error.
-        - Fixed a bug where a stray '%' in an entity value would cause an
-          abort.
-        - Defined XML_SetEndNamespaceDeclHandler. Thanks to Darryl Miles for
-          finding this oversight.
-        - Changed default patterns in lib/Makefile.in to fit non-GNU makes
-          Thanks to robin@unrated.net for reporting and providing an
-          account to test on.
-        - The reference had the wrong label for XML_SetStartNamespaceDecl.
-          Reported by an anonymous user.
-
-Release 1.95.0 Fri Sep 29 2000
-        - XML_ParserCreate_MM
-                Allows you to set a memory management suite to replace the
-                standard malloc,realloc, and free.
-        - XML_SetReturnNSTriplet
-                If you turn this feature on when namespace processing is in
-                effect, then qualified, prefixed element and attribute names
-                are returned as "uri|name|prefix" where '|' is whatever
-                separator character is used in namespace processing.
-        - Merged in features from perl-expat
-                o XML_SetElementDeclHandler
-                o XML_SetAttlistDeclHandler
-                o XML_SetXmlDeclHandler
-                o XML_SetEntityDeclHandler
-                o StartDoctypeDeclHandler takes 3 additional parameters:
-                        sysid, pubid, has_internal_subset
-                o Many paired handler setters (like XML_SetElementHandler)
-                  now have corresponding individual handler setters
-                o XML_GetInputContext for getting the input context of
-                  the current parse position.
-        - Added reference material
-        - Packaged into a distribution that builds a sharable library
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/ConfigureChecks.cmake b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/ConfigureChecks.cmake
deleted file mode 100644
index f03faa63..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/ConfigureChecks.cmake
+++ /dev/null
@@ -1,44 +0,0 @@
-include(CheckIncludeFile)
-include(CheckIncludeFiles)
-include(CheckFunctionExists)
-include(CheckSymbolExists)
-include(TestBigEndian)
-
-check_include_file("dlfcn.h" HAVE_DLFCN_H)
-check_include_file("fcntl.h" HAVE_FCNTL_H)
-check_include_file("inttypes.h" HAVE_INTTYPES_H)
-check_include_file("memory.h" HAVE_MEMORY_H)
-check_include_file("stdint.h" HAVE_STDINT_H)
-check_include_file("stdlib.h" HAVE_STDLIB_H)
-check_include_file("strings.h" HAVE_STRINGS_H)
-check_include_file("string.h" HAVE_STRING_H)
-check_include_file("sys/stat.h" HAVE_SYS_STAT_H)
-check_include_file("sys/types.h" HAVE_SYS_TYPES_H)
-check_include_file("unistd.h" HAVE_UNISTD_H)
-
-check_function_exists("getpagesize" HAVE_GETPAGESIZE)
-check_function_exists("bcopy" HAVE_BCOPY)
-check_symbol_exists("memmove" "string.h" HAVE_MEMMOVE)
-check_function_exists("mmap" HAVE_MMAP)
-
-#/* Define to 1 if you have the ANSI C header files. */
-check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
-
-test_big_endian(WORDS_BIGENDIAN)
-#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
-if(WORDS_BIGENDIAN)
-    set(BYTEORDER 4321)
-else(WORDS_BIGENDIAN)
-    set(BYTEORDER 1234)
-endif(WORDS_BIGENDIAN)
-
-if(HAVE_SYS_TYPES_H)
-    check_symbol_exists("off_t" "sys/types.h" OFF_T)
-    check_symbol_exists("size_t" "sys/types.h" SIZE_T)
-else(HAVE_SYS_TYPES_H)
-    set(OFF_T "long")
-    set(SIZE_T "unsigned")
-endif(HAVE_SYS_TYPES_H)
-
-configure_file(expat_config.h.cmake expat_config.h)
-add_definitions(-DHAVE_EXPAT_CONFIG_H)
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/MANIFEST b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/MANIFEST
deleted file mode 100644
index 7a020dc0..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/MANIFEST
+++ /dev/null
@@ -1,141 +0,0 @@
-amiga/launch.c
-amiga/expat_68k.c
-amiga/expat_68k.h
-amiga/expat_68k_handler_stubs.c
-amiga/expat_base.h
-amiga/expat_vectors.c
-amiga/expat_lib.c
-amiga/expat.xml
-amiga/README.txt
-amiga/Makefile
-amiga/include/proto/expat.h
-amiga/include/libraries/expat.h
-amiga/include/interfaces/expat.h
-amiga/include/inline4/expat.h
-bcb5/README.txt
-bcb5/all_projects.bpg
-bcb5/elements.bpf
-bcb5/elements.bpr
-bcb5/elements.mak
-bcb5/expat.bpf
-bcb5/expat.bpr
-bcb5/expat.mak
-bcb5/expat_static.bpf
-bcb5/expat_static.bpr
-bcb5/expat_static.mak
-bcb5/expatw.bpf
-bcb5/expatw.bpr
-bcb5/expatw.mak
-bcb5/expatw_static.bpf
-bcb5/expatw_static.bpr
-bcb5/expatw_static.mak
-bcb5/libexpat_mtd.def
-bcb5/libexpatw_mtd.def
-bcb5/makefile.mak
-bcb5/outline.bpf
-bcb5/outline.bpr
-bcb5/outline.mak
-bcb5/setup.bat
-bcb5/xmlwf.bpf
-bcb5/xmlwf.bpr
-bcb5/xmlwf.mak
-doc/expat.png
-doc/reference.html
-doc/style.css
-doc/valid-xhtml10.png
-doc/xmlwf.1
-doc/xmlwf.sgml
-CMakeLists.txt
-CMake.README
-COPYING
-Changes
-ConfigureChecks.cmake
-MANIFEST
-Makefile.in
-README
-configure
-configure.in
-expat_config.h.in
-expat_config.h.cmake
-expat.pc.in
-expat.dsw
-aclocal.m4
-conftools/PrintPath
-conftools/ac_c_bigendian_cross.m4
-conftools/expat.m4
-conftools/get-version.sh
-conftools/mkinstalldirs
-conftools/config.guess
-conftools/config.sub
-conftools/install-sh
-conftools/ltmain.sh
-m4/libtool.m4
-m4/ltversion.m4
-m4/ltoptions.m4
-m4/ltsugar.m4
-m4/lt~obsolete.m4
-examples/elements.c
-examples/elements.dsp
-examples/outline.c
-examples/outline.dsp
-lib/Makefile.MPW
-lib/amigaconfig.h
-lib/ascii.h
-lib/asciitab.h
-lib/expat.dsp
-lib/expat.h
-lib/expat_external.h
-lib/expat_static.dsp
-lib/expatw.dsp
-lib/expatw_static.dsp
-lib/iasciitab.h
-lib/internal.h
-lib/latin1tab.h
-lib/libexpat.def
-lib/libexpatw.def
-lib/macconfig.h
-lib/nametab.h
-lib/utf8tab.h
-lib/winconfig.h
-lib/xmlparse.c
-lib/xmlrole.c
-lib/xmlrole.h
-lib/xmltok.c
-lib/xmltok.h
-lib/xmltok_impl.c
-lib/xmltok_impl.h
-lib/xmltok_ns.c
-tests/benchmark/README.txt
-tests/benchmark/benchmark.c
-tests/benchmark/benchmark.dsp
-tests/benchmark/benchmark.dsw
-tests/README.txt
-tests/chardata.c
-tests/chardata.h
-tests/minicheck.c
-tests/minicheck.h
-tests/runtests.c
-tests/runtestspp.cpp
-tests/xmltest.sh
-vms/README.vms
-vms/descrip.mms
-vms/expat_config.h
-win32/MANIFEST.txt
-win32/README.txt
-win32/expat.iss
-xmlwf/codepage.c
-xmlwf/codepage.h
-xmlwf/ct.c
-xmlwf/filemap.h
-xmlwf/readfilemap.c
-xmlwf/unixfilemap.c
-xmlwf/win32filemap.c
-xmlwf/xmlfile.c
-xmlwf/xmlfile.h
-xmlwf/xmlmime.c
-xmlwf/xmlmime.h
-xmlwf/xmltchar.h
-xmlwf/xmlurl.h
-xmlwf/xmlwf.c
-xmlwf/xmlwf.dsp
-xmlwf/xmlwin32url.cxx
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/Makefile.in b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/Makefile.in
deleted file mode 100644
index 9c0f5d49..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/Makefile.in
+++ /dev/null
@@ -1,201 +0,0 @@
-################################################################
-# Process this file with top-level configure script to produce Makefile
-#
-# Copyright 2000 Clark Cooper
-#
-#  This file is part of EXPAT.
-#
-#  EXPAT is free software; you can redistribute it and/or modify it
-#  under the terms of the License (based on the MIT/X license) contained
-#  in the file COPYING that comes with this distribution.
-#
-# EXPAT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN EXPAT.
-#
-
-SHELL = @SHELL@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-libdir = @libdir@
-includedir = @includedir@
-man1dir = @mandir@/man1
-pkgconfigdir = $(libdir)/pkgconfig
-
-top_builddir = .
-
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-mkinstalldirs = $(SHELL) $(top_srcdir)/conftools/mkinstalldirs
-
-MANFILE = $(srcdir)/doc/xmlwf.1
-APIHEADER = $(srcdir)/lib/expat.h $(srcdir)/lib/expat_external.h
-LIBRARY = libexpat.la
-
-DESTDIR = $(INSTALL_ROOT)
-
-default:  buildlib xmlwf/xmlwf@EXEEXT@
-
-buildlib: $(LIBRARY) expat.pc
-
-all: $(LIBRARY) expat.pc xmlwf/xmlwf@EXEEXT@ examples/elements examples/outline
-
-clean:
-	cd lib && rm -f $(LIBRARY) *.@OBJEXT@ *.lo && rm -rf .libs _libs
-	cd xmlwf && rm -f xmlwf *.@OBJEXT@ *.lo && rm -rf .libs _libs
-	cd examples && rm -f elements outline *.@OBJEXT@ *.lo && rm -rf .libs _libs
-	cd tests && rm -rf .libs runtests runtests.@OBJEXT@ runtestspp runtestspp.@OBJEXT@
-	cd tests && rm -f chardata.@OBJEXT@ minicheck.@OBJEXT@
-	rm -rf .libs libexpat.la
-	rm -f examples/core tests/core xmlwf/core
-
-clobber: clean
-
-distclean: clean
-	rm -f expat_config.h config.status config.log config.cache libtool
-	rm -f Makefile expat.pc
-
-extraclean: distclean
-	rm -f expat_config.h.in configure
-	rm -f aclocal.m4 m4/*
-	rm -f conftools/ltmain.sh conftools/install-sh conftools/config.guess conftools/config.sub
-
-check: tests/runtests tests/runtestspp
-	tests/runtests
-	tests/runtestspp
-
-install: xmlwf/xmlwf@EXEEXT@ installlib
-	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir)
-	$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf@EXEEXT@ $(DESTDIR)$(bindir)/xmlwf
-	$(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir)
-
-installlib: $(LIBRARY) $(APIHEADER) expat.pc
-	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(pkgconfigdir)
-	$(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY)
-	for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(DESTDIR)$(includedir) ; done
-	$(INSTALL_DATA) expat.pc $(DESTDIR)$(pkgconfigdir)/expat.pc
-
-uninstall: uninstalllib
-	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf@EXEEXT@
-	rm -f $(DESTDIR)$(man1dir)/xmlwf.1
-
-uninstalllib:
-	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY)
-	rm -f $(DESTDIR)$(includedir)/expat.h
-	rm -f $(DESTDIR)$(includedir)/expat_external.h
-	rm -f $(DESTDIR)$(pkgconfigdir)/expat.pc
-
-# for VPATH builds (invoked by configure)
-mkdir-init:
-	@for d in lib xmlwf examples tests ; do \
-		(mkdir $$d 2> /dev/null || test 1) ; \
-	done
-
-CC = @CC@
-CXX = @CXX@
-LIBTOOL = @LIBTOOL@
-
-INCLUDES = -I$(srcdir)/lib -I.
-LDFLAGS = @LDFLAGS@
-CPPFLAGS = @CPPFLAGS@ -DHAVE_EXPAT_CONFIG_H
-CFLAGS = @CFLAGS@
-CXXFLAGS = @CXXFLAGS@
-VSNFLAG = -version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@
-
-### autoconf this?
-LTFLAGS = --silent
-
-COMPILE = $(CC) $(INCLUDES) $(CFLAGS) $(DEFS) $(CPPFLAGS)
-CXXCOMPILE = $(CXX) $(INCLUDES) $(CXXFLAGS) $(DEFS) $(CPPFLAGS)
-LTCOMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE)
-LINK_LIB = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -no-undefined $(VSNFLAG) -rpath $(libdir) $(LDFLAGS) -o $@
-LINK_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) $(LDFLAGS) -o $@
-LINK_CXX_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(CXXCOMPILE) $(LDFLAGS) -o $@
-
-LIB_OBJS = lib/xmlparse.lo lib/xmltok.lo lib/xmlrole.lo
-$(LIBRARY): $(LIB_OBJS)
-	$(LINK_LIB) $(LIB_OBJS)
-
-expat.pc: $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-
-lib/xmlparse.lo: lib/xmlparse.c lib/expat.h lib/xmlrole.h lib/xmltok.h \
-	$(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h
-
-lib/xmlrole.lo: lib/xmlrole.c lib/ascii.h lib/xmlrole.h \
-	$(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h
-
-lib/xmltok.lo: lib/xmltok.c lib/xmltok_impl.c lib/xmltok_ns.c \
-	lib/ascii.h lib/asciitab.h lib/iasciitab.h lib/latin1tab.h \
-	lib/nametab.h lib/utf8tab.h lib/xmltok.h lib/xmltok_impl.h \
-	$(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h
-
-
-XMLWF_OBJS = xmlwf/xmlwf.@OBJEXT@ xmlwf/xmlfile.@OBJEXT@ xmlwf/codepage.@OBJEXT@ xmlwf/@FILEMAP@.@OBJEXT@
-xmlwf/xmlwf.@OBJEXT@: xmlwf/xmlwf.c
-xmlwf/xmlfile.@OBJEXT@: xmlwf/xmlfile.c
-xmlwf/codepage.@OBJEXT@: xmlwf/codepage.c
-xmlwf/@FILEMAP@.@OBJEXT@: xmlwf/@FILEMAP@.c
-xmlwf/xmlwf@EXEEXT@: $(XMLWF_OBJS) $(LIBRARY)
-	$(LINK_EXE) $(XMLWF_OBJS) $(LIBRARY)
-
-examples/elements.@OBJEXT@: examples/elements.c
-examples/elements: examples/elements.@OBJEXT@ $(LIBRARY)
-	$(LINK_EXE) $< $(LIBRARY)
-
-examples/outline.@OBJEXT@: examples/outline.c
-examples/outline: examples/outline.@OBJEXT@ $(LIBRARY)
-	$(LINK_EXE) $< $(LIBRARY)
-
-tests/chardata.@OBJEXT@: tests/chardata.c tests/chardata.h
-tests/minicheck.@OBJEXT@: tests/minicheck.c tests/minicheck.h
-tests/runtests.@OBJEXT@: tests/runtests.c tests/chardata.h
-tests/runtests: tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY)
-	$(LINK_EXE) tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY)
-tests/runtestspp.@OBJEXT@: tests/runtestspp.cpp tests/runtests.c tests/chardata.h
-tests/runtestspp: tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY)
-	$(LINK_CXX_EXE) tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY)
-
-tests/benchmark/benchmark.@OBJEXT@: tests/benchmark/benchmark.c
-tests/benchmark/benchmark: tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY)
-	$(LINK_EXE) tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY)
-
-run-benchmark: tests/benchmark/benchmark
-	tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3
-
-tests/xmlts.zip:
-	wget --output-document=tests/xmlts.zip \
-		http://www.w3.org/XML/Test/xmlts20080827.zip
-
-tests/XML-Test-Suite: tests/xmlts.zip
-	cd tests && unzip -q xmlts.zip
-
-run-xmltest: xmlwf/xmlwf@EXEEXT@ tests/XML-Test-Suite
-	tests/xmltest.sh
-
-.SUFFIXES: .c .cpp .lo .@OBJEXT@
-
-.cpp.@OBJEXT@:
-	$(CXXCOMPILE) -o $@ -c $<
-.c.@OBJEXT@:
-	$(COMPILE) -o $@ -c $<
-.c.lo:
-	$(LTCOMPILE) -o $@ -c $<
-
-.PHONY: buildlib all \
-	clean distclean extraclean maintainer-clean \
-	dist distdir \
-	install uninstall
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/README b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/README
deleted file mode 100644
index 1f88467d..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/README
+++ /dev/null
@@ -1,139 +0,0 @@
-
-                        Expat, Release 2.1.0
-
-This is Expat, a C library for parsing XML, written by James Clark.
-Expat is a stream-oriented XML parser.  This means that you register
-handlers with the parser before starting the parse.  These handlers
-are called when the parser discovers the associated structures in the
-document being parsed.  A start tag is an example of the kind of
-structures for which you may register handlers.
-
-Windows users should use the expat_win32bin package, which includes
-both precompiled libraries and executables, and source code for
-developers.
-
-Expat is free software.  You may copy, distribute, and modify it under
-the terms of the License contained in the file COPYING distributed
-with this package.  This license is the same as the MIT/X Consortium
-license.
-
-Versions of Expat that have an odd minor version (the middle number in
-the release above), are development releases and should be considered
-as beta software.  Releases with even minor version numbers are
-intended to be production grade software.
-
-If you are building Expat from a check-out from the CVS repository,
-you need to run a script that generates the configure script using the
-GNU autoconf and libtool tools.  To do this, you need to have
-autoconf 2.58 or newer. Run the script like this:
-
-        ./buildconf.sh
-
-Once this has been done, follow the same instructions as for building
-from a source distribution.
-
-To build Expat from a source distribution, you first run the
-configuration shell script in the top level distribution directory:
-
-        ./configure
-
-There are many options which you may provide to configure (which you
-can discover by running configure with the --help option).  But the
-one of most interest is the one that sets the installation directory.
-By default, the configure script will set things up to install
-libexpat into /usr/local/lib, expat.h into /usr/local/include, and
-xmlwf into /usr/local/bin.  If, for example, you'd prefer to install
-into /home/me/mystuff/lib, /home/me/mystuff/include, and
-/home/me/mystuff/bin, you can tell configure about that with:
-
-        ./configure --prefix=/home/me/mystuff
-        
-Another interesting option is to enable 64-bit integer support for
-line and column numbers and the over-all byte index:
-
-        ./configure CPPFLAGS=-DXML_LARGE_SIZE
-        
-However, such a modification would be a breaking change to the ABI
-and is therefore not recommended for general use - e.g. as part of
-a Linux distribution - but rather for builds with special requirements.
-
-After running the configure script, the "make" command will build
-things and "make install" will install things into their proper
-location.  Have a look at the "Makefile" to learn about additional
-"make" options.  Note that you need to have write permission into
-the directories into which things will be installed.
-
-If you are interested in building Expat to provide document
-information in UTF-16 encoding rather than the default UTF-8, follow
-these instructions (after having run "make distclean"):
-
-        1. For UTF-16 output as unsigned short (and version/error
-           strings as char), run:
-
-               ./configure CPPFLAGS=-DXML_UNICODE
-
-           For UTF-16 output as wchar_t (incl. version/error strings),
-           run:
-
-               ./configure CFLAGS="-g -O2 -fshort-wchar" \
-                           CPPFLAGS=-DXML_UNICODE_WCHAR_T
-
-        2. Edit the MakeFile, changing:
-
-               LIBRARY = libexpat.la
-
-           to:
-
-               LIBRARY = libexpatw.la
-
-           (Note the additional "w" in the library name.)
-
-        3. Run "make buildlib" (which builds the library only).
-           Or, to save step 2, run "make buildlib LIBRARY=libexpatw.la".
-
-        4. Run "make installlib" (which installs the library only).
-           Or, if step 2 was omitted, run "make installlib LIBRARY=libexpatw.la".
-           
-Using DESTDIR or INSTALL_ROOT is enabled, with INSTALL_ROOT being the default
-value for DESTDIR, and the rest of the make file using only DESTDIR.
-It works as follows:
-   $ make install DESTDIR=/path/to/image
-overrides the in-makefile set DESTDIR, while both
-   $ INSTALL_ROOT=/path/to/image make install
-   $ make install INSTALL_ROOT=/path/to/image
-use DESTDIR=$(INSTALL_ROOT), even if DESTDIR eventually is defined in the
-environment, because variable-setting priority is
-1) commandline
-2) in-makefile
-3) environment  
-
-Note: This only applies to the Expat library itself, building UTF-16 versions
-of xmlwf and the tests is currently not supported.         
-
-Note for Solaris users:  The "ar" command is usually located in
-"/usr/ccs/bin", which is not in the default PATH.  You will need to
-add this to your path for the "make" command, and probably also switch
-to GNU make (the "make" found in /usr/ccs/bin does not seem to work
-properly -- appearantly it does not understand .PHONY directives).  If
-you're using ksh or bash, use this command to build:
-
-        PATH=/usr/ccs/bin:$PATH make
-
-When using Expat with a project using autoconf for configuration, you
-can use the probing macro in conftools/expat.m4 to determine how to
-include Expat.  See the comments at the top of that file for more
-information.
-
-A reference manual is available in the file doc/reference.html in this
-distribution.
-
-The homepage for this project is http://www.libexpat.org/.  There
-are links there to connect you to the bug reports page.  If you need
-to report a bug when you don't have access to a browser, you may also
-send a bug report by email to expat-bugs@mail.libexpat.org.
-
-Discussion related to the direction of future expat development takes
-place on expat-discuss@mail.libexpat.org.  Archives of this list and
-other Expat-related lists may be found at:
-
-        http://mail.libexpat.org/mailman/listinfo/
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/aclocal.m4 b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/aclocal.m4
deleted file mode 100644
index 6fe5ffd2..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/aclocal.m4
+++ /dev/null
@@ -1,8460 +0,0 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 57 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-		   [m4_fatal([Libtool version $1 or higher is required],
-		             63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\	*)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_WITH_SYSROOT])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PREPARE_SED_QUOTE_VARS
-# --------------------------
-# Define a few sed substitution that help us do robust quoting.
-m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
-[# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-])
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-	[m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-	[tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-	   m4_quote(lt_decl_varnames),
-	m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-					   [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-	dnl If the libtool generation code has been placed in $CONFIG_LT,
-	dnl instead of duplicating it all over again into config.status,
-	dnl then we will have config.status run $CONFIG_LT later, so it
-	dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$[]1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-# ------------------------------------
-# Generate a child script FILE with all initialization necessary to
-# reuse the environment learned by the parent script, and make the
-# file executable.  If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins.  After this
-# macro, additional text can be appended to FILE to form the body of
-# the child script.  The macro ends with non-zero status if the
-# file could not be fully written (such as if the disk is full).
-m4_ifdef([AS_INIT_GENERATED],
-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
-[m4_defun([_LT_GENERATED_FILE_INIT],
-[m4_require([AS_PREPARE])]dnl
-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
-[lt_write_fail=0
-cat >$1 <<_ASEOF || lt_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-$2
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$1 <<\_ASEOF || lt_write_fail=1
-AS_SHELL_SANITIZE
-_AS_PREPARE
-exec AS_MESSAGE_FD>&1
-_ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_REPLACE_SHELLFNS
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-dnl AC_DEFUN([AC_LIBTOOL_RC], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi])
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-	[lt_cv_ld_exported_symbols_list=yes],
-	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
-    ])
-    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
-      [lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
-      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
-      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
-      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
-      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&AS_MESSAGE_LOG_FD
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-  else
-    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  fi
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-# ----------------------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-# Store the results from the different compilers for each TAGNAME.
-# Allow to override them for all tags through lt_cv_aix_libpath.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
-  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
-  lt_aix_libpath_sed='[
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }]'
-  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi],[])
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
-  fi
-  ])
-  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[m4_divert_text([M4SH-INIT], [$1
-])])# _LT_SHELL_INIT
-
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Find how we can fake an echo command that does not interpret backslash.
-# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-AC_MSG_CHECKING([how to print strings])
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$[]1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*" 
-}
-
-case "$ECHO" in
-  printf*) AC_MSG_RESULT([printf]) ;;
-  print*) AC_MSG_RESULT([print -r]) ;;
-  *) AC_MSG_RESULT([cat]) ;;
-esac
-
-m4_ifdef([_AS_DETECT_SUGGESTED],
-[_AS_DETECT_SUGGESTED([
-  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test "X`printf %s $ECHO`" = "X$ECHO" \
-      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_WITH_SYSROOT
-# ----------------
-AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted.  We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   AC_MSG_RESULT([${with_sysroot}])
-   AC_MSG_ERROR([The sysroot must be an absolute path.])
-   ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_PROG_AR
-# -----------
-m4_defun([_LT_PROG_AR],
-[AC_CHECK_TOOLS(AR, [ar], false)
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
-
-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
-  [lt_cv_ar_at_file=no
-   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-     [echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
-      AC_TRY_EVAL([lt_ar_try])
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	AC_TRY_EVAL([lt_ar_try])
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     ])
-  ])
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-_LT_DECL([], [archiver_list_spec], [1],
-  [How to feed a file listing to the archiver])
-])# _LT_PROG_AR
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[_LT_PROG_AR
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-_LT_DECL([], [lock_old_archive_extraction], [0],
-    [Whether to use a lock for old archive extraction])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-	[Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-	[], [
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-m4_if([$1], [],[
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
-    [lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-	 [lt_cv_shlibpath_overrides_runpath=yes])])
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    ])
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [install_override_mode], [1],
-    [Permission mode override for installation of shared libraries])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_TAGDECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method = "file_magic"])
-_LT_DECL([], [file_magic_glob], [1],
-    [How to find potential files when deplibs_check_method = "file_magic"])
-_LT_DECL([], [want_nocaseglob], [1],
-    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-# --------------------------------
-# how to determine the name of the shared library
-# associated with a specific link library.
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-m4_require([_LT_DECL_DLLTOOL])
-AC_CACHE_CHECK([how to associate runtime and link libraries],
-lt_cv_sharedlib_from_linklib_cmd,
-[lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-])
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
-    [Command to associate shared and link libraries])
-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-
-
-# _LT_PATH_MANIFEST_TOOL
-# ----------------------
-# locate the manifest tool
-m4_defun([_LT_PATH_MANIFEST_TOOL],
-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
-  [lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-])# _LT_PATH_MANIFEST_TOOL
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
-  esac
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-	[Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t@_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t@_DLSYM_CONST
-#else
-# define LT@&t@_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t@_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-_LT_DECL([], [nm_file_list_spec], [1],
-    [Specify filename containing input files for $NM])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	else
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-	# This hack is so that the source file can tell whether it is being
-	# built for inclusion in a dll (and should export symbols for example).
-	m4_if([$1], [GCJ], [],
-	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
-	    # IBM XL 8.0, 9.0 on PPC and BlueGene
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd* | netbsdelf*-gnu)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-	;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-
-AC_CACHE_CHECK([for $compiler option to produce PIC],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-	[Additional compiler flags for building library objects])
-
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-	[Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*) ;;
-    *)
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-      ;;
-    esac
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
-	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    haiku*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	_LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[[012]]|aix4.[[012]].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	_LT_TAGVAR(link_all_deplibs, $1)=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX([$1])
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  fi
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	_LT_TAGVAR(always_export_symbols, $1)=yes
-	_LT_TAGVAR(file_list_spec, $1)='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	# FIXME: Should let the user specify the lib program.
-	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	_LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	m4_if($1, [], [
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  _LT_LINKER_OPTION([if $CC understands -b],
-	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
-	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	*)
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
-	  [lt_cv_irix_exported_symbol],
-	  [save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   AC_LINK_IFELSE(
-	     [AC_LANG_SOURCE(
-	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
-			      [C++], [[int foo (void) { return 0; }]],
-			      [Fortran 77], [[
-      subroutine foo
-      end]],
-			      [Fortran], [[
-      subroutine foo
-      end]])])],
-	      [lt_cv_irix_exported_symbol=yes],
-	      [lt_cv_irix_exported_symbol=no])
-           LDFLAGS="$save_LDFLAGS"])
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-	motorola)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	_LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
-	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
-	[$RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-	  _LT_TAGVAR(allow_undefined_flag, $1)=
-	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-	  then
-	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	  else
-	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  fi
-	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	])
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [postlink_cmds], [2],
-    [Commands necessary for finishing linking programs])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report which library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX([$1])
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX([$1])
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
-	      # We only use this code for GNU lds that support --whole-archive.
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    else
-	      # Exported symbols can be pulled into shared objects from archives
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	    fi
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-	case $GXX,$cc_basename in
-	,cl* | no,cl*)
-	  # Native MSVC
-	  # hardcode_libdir_flag_spec is actually meaningless, as there is
-	  # no search path for DLLs.
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  _LT_TAGVAR(always_export_symbols, $1)=yes
-	  _LT_TAGVAR(file_list_spec, $1)='@'
-	  # Tell ltmain to make .lib files, not .a files.
-	  libext=lib
-	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
-	  # FIXME: Setting linknames here is a bad hack.
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
-	  # The linker will not automatically build a static lib if we build a DLL.
-	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	  # Don't use ranlib
-	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
-	  ;;
-	*)
-	  # g++
-	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-	  # as there is no search path for DLLs.
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  _LT_TAGVAR(always_export_symbols, $1)=no
-	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	  ;;
-	esac
-	;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      freebsd[[12]]*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      haiku*)
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-	_LT_TAGVAR(hardcode_direct, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-	      fi
-	    fi
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-	    ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
-	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
-	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 and above use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-	    ;;
-	  xl* | mpixl* | bgxl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	      _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='func_echo_all'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=func_echo_all
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-		;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	    case $host_os in
-	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-	    output_verbose_link_cmd='func_echo_all'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      fi
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
-	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-	      '"$_LT_TAGVAR(reload_cmds, $1)"
-	    ;;
-	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_FUNC_STRIPNAME_CNF
-# ----------------------
-# func_stripname_cnf prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-#
-# This function is identical to the (non-XSI) version of func_stripname,
-# except this one can be used by m4 code that may be executed by configure,
-# rather than the libtool script.
-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-AC_REQUIRE([_LT_DECL_SED])
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-])# _LT_FUNC_STRIPNAME_CNF
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-])
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-esac
-
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
-	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-	 fi
-       else
-	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_LANG_PUSH(Fortran)
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-CFLAGS=$GCJFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-CFLAGS=
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-# _LT_DECL_DLLTOOL
-# ----------------
-# Ensure DLLTOOL variable is set.
-m4_defun([_LT_DECL_DLLTOOL],
-[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-AC_SUBST([DLLTOOL])
-])
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary parameter first.
-    func_stripname_result=${3}
-    func_stripname_result=${func_stripname_result#"${1}"}
-    func_stripname_result=${func_stripname_result%"${2}"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
-    func_split_long_opt_name=${1%%=*}
-    func_split_long_opt_arg=${1#*=}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
-    func_split_short_opt_arg=${1#??}
-    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
-    case ${1} in
-      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-      *)    func_lo2o_result=${1} ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
-
-  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
-
-  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
-    func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
-    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
-# _LT_PATH_CONVERSION_FUNCTIONS
-# -----------------------------
-# Determine which file name conversion functions should be used by
-# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
-# for certain cross-compile configurations and native mingw.
-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_MSG_CHECKING([how to convert $build file names to $host format])
-AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-[case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-])
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
-         [0], [convert $build file names to $host format])dnl
-
-AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-[#assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-])
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
-         [0], [convert $build files to toolchain format])dnl
-])# _LT_PATH_CONVERSION_FUNCTIONS
-
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-#   Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 7 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-		      [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
-  ])
-])# _LT_SET_OPTIONS
-
-
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [1], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-	[Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-	[Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-	 [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-		 [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-		 [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-		 [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-		 [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-		 [m4_define([_LTDL_TYPE], [convenience])])
-
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-	     [m4_foreach([_Lt_suffix],
-		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-		 [lt_append([$1], [$2], [$3])$4],
-		 [$5])],
-	  [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-	[$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
-
-# ltversion.m4 -- version numbers			-*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 3293 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4'
-macro_revision='1.3293'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
-
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
-m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
-m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
-
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/configure b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/configure
deleted file mode 100644
index 247d0ef2..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/configure
+++ /dev/null
@@ -1,18632 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for expat 2.1.0.
-#
-# Report bugs to <expat-bugs@libexpat.org>.
-#
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	# Preserve -v and -x to the replacement shell.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	case $- in # ((((
-	  *v*x* | *x*v* ) as_opts=-vx ;;
-	  *v* ) as_opts=-v ;;
-	  *x* ) as_opts=-x ;;
-	  * ) as_opts= ;;
-	esac
-	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: expat-bugs@libexpat.org about your system, including
-$0: any error possibly output before this message. Then
-$0: install a modern shell, or manually run the script
-$0: under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='expat'
-PACKAGE_TARNAME='expat'
-PACKAGE_VERSION='2.1.0'
-PACKAGE_STRING='expat 2.1.0'
-PACKAGE_BUGREPORT='expat-bugs@libexpat.org'
-PACKAGE_URL=''
-
-ac_unique_file="Makefile.in"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_header_list=
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-FILEMAP
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-CXXCPP
-ac_ct_CXX
-CXXFLAGS
-CXX
-LIBAGE
-LIBREVISION
-LIBCURRENT
-CPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-AWK
-RANLIB
-STRIP
-ac_ct_AR
-AR
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-GREP
-SED
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-LIBTOOL
-OBJDUMP
-DLLTOOL
-AS
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-CXX
-CXXFLAGS
-CCC
-CXXCPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures expat 2.1.0 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/expat]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of expat 2.1.0:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic              try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CXXCPP      C++ preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <expat-bugs@libexpat.org>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-expat configure 2.1.0
-generated by GNU Autoconf 2.68
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_compile
-
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_cpp
-
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_link
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## -------------------------------------- ##
-## Report this to expat-bugs@libexpat.org ##
-## -------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by expat $as_me 2.1.0, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-as_fn_append ac_header_list " stdlib.h"
-as_fn_append ac_header_list " unistd.h"
-as_fn_append ac_header_list " sys/param.h"
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-ac_aux_dir=
-for ac_dir in conftools "$srcdir"/conftools; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in conftools \"$srcdir\"/conftools" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-
-
-
-LIBCURRENT=7
-LIBREVISION=0
-LIBAGE=6
-
-ac_config_headers="$ac_config_headers expat_config.h"
-
-
-
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AS="as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AS" = x; then
-    AS="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AS=$ac_ct_AS
-  fi
-else
-  AS="$ac_cv_prog_AS"
-fi
-
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-  ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4'
-macro_revision='1.3293'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO ""
-}
-
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-
-
-
-
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      lt_prog_compiler_pic='-Xcompiler -fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl='-Wl,-Wl,,'
-	lt_prog_compiler_pic='-PIC'
-	lt_prog_compiler_static='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    link_all_deplibs=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	link_all_deplibs=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec='$convenience'
-	  fi
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	always_export_symbols=yes
-	file_list_spec='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-	enable_shared_with_static_runtimes=yes
-	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds='chmod 644 $oldlib'
-	postlink_cmds='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld='+b $libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-
-      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP"; then
-  if ${ac_cv_prog_CXXCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-else
-  _lt_caught_CXX_error=yes
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-compiler_needs_object_CXX=no
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_direct_absolute_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-inherit_rpath_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-reload_flag_CXX=$reload_flag
-reload_cmds_CXX=$reload_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  compiler_CXX=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-    else
-      lt_prog_compiler_no_builtin_flag_CXX=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          whole_archive_flag_spec_CXX=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-    ld_shlibs_CXX=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-      aix[4-9]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        archive_cmds_CXX=''
-        hardcode_direct_CXX=yes
-        hardcode_direct_absolute_CXX=yes
-        hardcode_libdir_separator_CXX=':'
-        link_all_deplibs_CXX=yes
-        file_list_spec_CXX='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[012]|aix4.[012].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    hardcode_direct_CXX=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    hardcode_minus_L_CXX=yes
-	    hardcode_libdir_flag_spec_CXX='-L$libdir'
-	    hardcode_libdir_separator_CXX=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        export_dynamic_flag_spec_CXX='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        always_export_symbols_CXX=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          allow_undefined_flag_CXX='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
-	    allow_undefined_flag_CXX="-z nodefs"
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    no_undefined_flag_CXX=' ${wl}-bernotok'
-	    allow_undefined_flag_CXX=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
-	      # We only use this code for GNU lds that support --whole-archive.
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    else
-	      # Exported symbols can be pulled into shared objects from archives
-	      whole_archive_flag_spec_CXX='$convenience'
-	    fi
-	    archive_cmds_need_lc_CXX=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  allow_undefined_flag_CXX=unsupported
-	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  ld_shlibs_CXX=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  ld_shlibs_CXX=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-	case $GXX,$cc_basename in
-	,cl* | no,cl*)
-	  # Native MSVC
-	  # hardcode_libdir_flag_spec is actually meaningless, as there is
-	  # no search path for DLLs.
-	  hardcode_libdir_flag_spec_CXX=' '
-	  allow_undefined_flag_CXX=unsupported
-	  always_export_symbols_CXX=yes
-	  file_list_spec_CXX='@'
-	  # Tell ltmain to make .lib files, not .a files.
-	  libext=lib
-	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
-	  # FIXME: Setting linknames here is a bad hack.
-	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
-	  # The linker will not automatically build a static lib if we build a DLL.
-	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
-	  enable_shared_with_static_runtimes_CXX=yes
-	  # Don't use ranlib
-	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
-	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
-	  ;;
-	*)
-	  # g++
-	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-	  # as there is no search path for DLLs.
-	  hardcode_libdir_flag_spec_CXX='-L$libdir'
-	  export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
-	  allow_undefined_flag_CXX=unsupported
-	  always_export_symbols_CXX=no
-	  enable_shared_with_static_runtimes_CXX=yes
-
-	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	  else
-	    ld_shlibs_CXX=no
-	  fi
-	  ;;
-	esac
-	;;
-      darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_CXX=no
-  hardcode_direct_CXX=no
-  hardcode_automatic_CXX=yes
-  hardcode_shlibpath_var_CXX=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-  else
-    whole_archive_flag_spec_CXX=''
-  fi
-  link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-
-  else
-  ld_shlibs_CXX=no
-  fi
-
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      freebsd[12]*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        ld_shlibs_CXX=no
-        ;;
-
-      freebsd-elf*)
-        archive_cmds_need_lc_CXX=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        ld_shlibs_CXX=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      haiku*)
-        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        link_all_deplibs_CXX=yes
-        ;;
-
-      hpux9*)
-        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='${wl}-E'
-        hardcode_direct_CXX=yes
-        hardcode_minus_L_CXX=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            ld_shlibs_CXX=no
-            ;;
-          aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              ld_shlibs_CXX=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_separator_CXX=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      export_dynamic_flag_spec_CXX='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct_CXX=no
-            hardcode_shlibpath_var_CXX=no
-            ;;
-          *)
-            hardcode_direct_CXX=yes
-            hardcode_direct_absolute_CXX=yes
-            hardcode_minus_L_CXX=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[3-9]*)
-	hardcode_direct_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-	      fi
-	    fi
-	    link_all_deplibs_CXX=yes
-	    ;;
-        esac
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        inherit_rpath_CXX=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    archive_cmds_need_lc_CXX=no
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
-	      prelink_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-	      old_archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
-	      archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 and above use weak symbols
-	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-	    ;;
-	  xl* | mpixl* | bgxl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      no_undefined_flag_CXX=' -zdefs'
-	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      hardcode_libdir_flag_spec_CXX='-R$libdir'
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	      compiler_needs_object_CXX=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='func_echo_all'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  hardcode_libdir_flag_spec_CXX='-R$libdir'
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        ld_shlibs_CXX=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	ld_shlibs_CXX=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	  hardcode_direct_absolute_CXX=yes
-	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    export_dynamic_flag_spec_CXX='${wl}-E'
-	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=func_echo_all
-	else
-	  ld_shlibs_CXX=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        allow_undefined_flag_CXX=' -expect_unresolved \*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-		;;
-	    esac
-
-	    hardcode_libdir_separator_CXX=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	      hardcode_libdir_separator_CXX=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            archive_cmds_need_lc_CXX=yes
-	    no_undefined_flag_CXX=' -zdefs'
-	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    hardcode_libdir_flag_spec_CXX='-R$libdir'
-	    hardcode_shlibpath_var_CXX=no
-	    case $host_os in
-	      solaris2.[0-5] | solaris2.[0-5].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    link_all_deplibs_CXX=yes
-
-	    output_verbose_link_cmd='func_echo_all'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      fi
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[0-5] | solaris2.[0-5].*) ;;
-		*)
-		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='${wl}-z,text'
-      archive_cmds_need_lc_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	no_undefined_flag_CXX='${wl}-z,text'
-	allow_undefined_flag_CXX='${wl}-z,nodefs'
-	archive_cmds_need_lc_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
-	hardcode_libdir_separator_CXX=':'
-	link_all_deplibs_CXX=yes
-	export_dynamic_flag_spec_CXX='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
-	      '"$old_archive_cmds_CXX"
-	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
-	      '"$reload_cmds_CXX"
-	    ;;
-	  *)
-	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-    esac
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-    test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-    GCC_CXX="$GXX"
-    LD_CXX="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-
-cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_CXX"; then
-	     compiler_lib_search_path_CXX="${prev}${p}"
-	   else
-	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_CXX"; then
-	   postdeps_CXX="${prev}${p}"
-	 else
-	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_CXX"; then
-	   predep_objects_CXX="$p"
-	 else
-	   predep_objects_CXX="$predep_objects_CXX $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_CXX"; then
-	   postdep_objects_CXX="$p"
-	 else
-	   postdep_objects_CXX="$postdep_objects_CXX $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling CXX test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-case $host_os in
-interix[3-9]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-
-
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
- compiler_lib_search_dirs_CXX=
-if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_CXX='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_CXX='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_CXX=
-      ;;
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_CXX=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	lt_prog_compiler_pic_CXX='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_CXX='-fPIC -shared'
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[4-9]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  lt_prog_compiler_static_CXX='-Bstatic'
-	else
-	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-	# This hack is so that the source file can tell whether it is being
-	# built for inclusion in a dll (and should export symbols for example).
-	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      lt_prog_compiler_pic_CXX='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      lt_prog_compiler_pic_CXX='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fpic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
-	    # IBM XL 8.0, 9.0 on PPC and BlueGene
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-qpic'
-	    lt_prog_compiler_static_CXX='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      lt_prog_compiler_pic_CXX='-KPIC'
-	      lt_prog_compiler_static_CXX='-Bstatic'
-	      lt_prog_compiler_wl_CXX='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    lt_prog_compiler_pic_CXX='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd* | netbsdelf*-gnu)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        lt_prog_compiler_pic_CXX='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    lt_prog_compiler_wl_CXX='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    lt_prog_compiler_pic_CXX='-pic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	lt_prog_compiler_can_build_shared_CXX=no
-	;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
-lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_CXX=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_CXX=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_CXX=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_CXX=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
-    :
-else
-    lt_prog_compiler_static_CXX=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  case $host_os in
-  aix[4-9]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*) ;;
-    *)
-      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-      ;;
-    esac
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    link_all_deplibs_CXX=no
-    ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-with_gnu_ld_CXX=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_CXX in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_CXX
-	  pic_flag=$lt_prog_compiler_pic_CXX
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-	  allow_undefined_flag_CXX=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_CXX=no
-	  else
-	    lt_cv_archive_cmds_need_lc_CXX=yes
-	  fi
-	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
-      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" ||
-   test -n "$runpath_var_CXX" ||
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_CXX" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
-$as_echo "$hardcode_action_CXX" >&6; }
-
-if test "$hardcode_action_CXX" = relink ||
-   test "$inherit_rpath_CXX" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-if test "$GCC" = yes ; then
-                        OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes"
-    CFLAGS="$OLDCFLAGS -fexceptions"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -fexceptions" >&5
-$as_echo_n "checking whether $CC accepts -fexceptions... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; CFLAGS="$OLDCFLAGS"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    CXXFLAGS=`echo "$CFLAGS" | sed 's/ -Wmissing-prototypes -Wstrict-prototypes//'`
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_c_bigendian=unknown
-# See if sys/param.h defines the BYTE_ORDER macro.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/param.h>
-int
-main ()
-{
-
-#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
- bogus endian macros
-#endif
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to BIG_ENDIAN or not.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/param.h>
-int
-main ()
-{
-
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
-#endif
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
-else
-  ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-if test $ac_cv_c_bigendian = unknown; then
-if test "$cross_compiling" = yes; then :
-   echo $ac_n "cross-compiling... " 2>&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-main () {
-  /* Are we little or big endian?  From Harbison&Steele.  */
-  union
-  {
-    long l;
-    char c[sizeof (long)];
-  } u;
-  u.l = 1;
-  exit (u.c[sizeof (long) - 1] == 1);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_bigendian=no
-else
-  ac_cv_c_bigendian=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
-if test $ac_cv_c_bigendian = unknown; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking to probe for byte ordering" >&5
-$as_echo_n "checking to probe for byte ordering... " >&6; }
-
-cat >conftest.c <<EOF
-short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
-void _ascii() { char* s = (char*) ascii_mm; s = (char*) ascii_ii; }
-short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-void _ebcdic() { char* s = (char*) ebcdic_mm; s = (char*) ebcdic_ii; }
-int main() { _ascii (); _ebcdic (); return 0; }
-EOF
- if test -f conftest.c ; then
-     if ${CC-cc} -c conftest.c -o conftest.o && test -f conftest.o ; then
-        if test `grep -l BIGenDianSyS conftest.o` ; then
-           echo $ac_n ' big endian probe OK, ' 1>&6
-           ac_cv_c_bigendian=yes
-        fi
-        if test `grep -l LiTTleEnDian conftest.o` ; then
-           echo $ac_n ' little endian probe OK, ' 1>&6
-           if test $ac_cv_c_bigendian = yes ; then
-            ac_cv_c_bigendian=unknown;
-           else
-            ac_cv_c_bigendian=no
-           fi
-        fi
-        echo $ac_n 'guessing bigendian ...  ' >&6
-     fi
-  fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
-fi
-if test $ac_cv_c_bigendian = yes; then
-
-$as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
-
-  BYTEORDER=4321
-else
-  BYTEORDER=1234
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define BYTEORDER $BYTEORDER
-_ACEOF
-
-if test $ac_cv_c_bigendian = unknown; then
-  as_fn_error please pre-set ac_cv_c_bigendian "unknown endianess - sorry" "$LINENO" 5
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
-  typedef int charset[2];
-  const charset cs;
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_const=yes
-else
-  ac_cv_c_const=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-for ac_func in memmove bcopy
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_header in fcntl.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
-
-fi
-
-
-
-
-  for ac_header in $ac_header_list
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-
-for ac_func in getpagesize
-do :
-  ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
-
-fi
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
-$as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_mmap_fixed_mapped=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-/* malloc might have been renamed as rpl_malloc. */
-#undef malloc
-
-/* Thanks to Mike Haertel and Jim Avera for this test.
-   Here is a matrix of mmap possibilities:
-	mmap private not fixed
-	mmap private fixed at somewhere currently unmapped
-	mmap private fixed at somewhere already mapped
-	mmap shared not fixed
-	mmap shared fixed at somewhere currently unmapped
-	mmap shared fixed at somewhere already mapped
-   For private mappings, we should verify that changes cannot be read()
-   back from the file, nor mmap's back from the file at a different
-   address.  (There have been systems where private was not correctly
-   implemented like the infamous i386 svr4.0, and systems where the
-   VM page cache was not coherent with the file system buffer cache
-   like early versions of FreeBSD and possibly contemporary NetBSD.)
-   For shared mappings, we should conversely verify that changes get
-   propagated back to all the places they're supposed to be.
-
-   Grep wants private fixed already mapped.
-   The main things grep needs to know about mmap are:
-   * does it exist and is it safe to write into the mmap'd area
-   * how to use it (BSD variants)  */
-
-#include <fcntl.h>
-#include <sys/mman.h>
-
-#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
-char *malloc ();
-#endif
-
-/* This mess was copied from the GNU getpagesize.h.  */
-#ifndef HAVE_GETPAGESIZE
-# ifdef _SC_PAGESIZE
-#  define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-#  ifdef HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#   ifdef EXEC_PAGESIZE
-#    define getpagesize() EXEC_PAGESIZE
-#   else /* no EXEC_PAGESIZE */
-#    ifdef NBPG
-#     define getpagesize() NBPG * CLSIZE
-#     ifndef CLSIZE
-#      define CLSIZE 1
-#     endif /* no CLSIZE */
-#    else /* no NBPG */
-#     ifdef NBPC
-#      define getpagesize() NBPC
-#     else /* no NBPC */
-#      ifdef PAGESIZE
-#       define getpagesize() PAGESIZE
-#      endif /* PAGESIZE */
-#     endif /* no NBPC */
-#    endif /* no NBPG */
-#   endif /* no EXEC_PAGESIZE */
-#  else /* no HAVE_SYS_PARAM_H */
-#   define getpagesize() 8192	/* punt totally */
-#  endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
-
-int
-main ()
-{
-  char *data, *data2, *data3;
-  const char *cdata2;
-  int i, pagesize;
-  int fd, fd2;
-
-  pagesize = getpagesize ();
-
-  /* First, make a file with some known garbage in it. */
-  data = (char *) malloc (pagesize);
-  if (!data)
-    return 1;
-  for (i = 0; i < pagesize; ++i)
-    *(data + i) = rand ();
-  umask (0);
-  fd = creat ("conftest.mmap", 0600);
-  if (fd < 0)
-    return 2;
-  if (write (fd, data, pagesize) != pagesize)
-    return 3;
-  close (fd);
-
-  /* Next, check that the tail of a page is zero-filled.  File must have
-     non-zero length, otherwise we risk SIGBUS for entire page.  */
-  fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
-  if (fd2 < 0)
-    return 4;
-  cdata2 = "";
-  if (write (fd2, cdata2, 1) != 1)
-    return 5;
-  data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
-  if (data2 == MAP_FAILED)
-    return 6;
-  for (i = 0; i < pagesize; ++i)
-    if (*(data2 + i))
-      return 7;
-  close (fd2);
-  if (munmap (data2, pagesize))
-    return 8;
-
-  /* Next, try to mmap the file at a fixed address which already has
-     something else allocated at it.  If we can, also make sure that
-     we see the same garbage.  */
-  fd = open ("conftest.mmap", O_RDWR);
-  if (fd < 0)
-    return 9;
-  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
-		     MAP_PRIVATE | MAP_FIXED, fd, 0L))
-    return 10;
-  for (i = 0; i < pagesize; ++i)
-    if (*(data + i) != *(data2 + i))
-      return 11;
-
-  /* Finally, make sure that changes to the mapped area do not
-     percolate back to the file as seen by read().  (This is a bug on
-     some variants of i386 svr4.0.)  */
-  for (i = 0; i < pagesize; ++i)
-    *(data2 + i) = *(data2 + i) + 1;
-  data3 = (char *) malloc (pagesize);
-  if (!data3)
-    return 12;
-  if (read (fd, data3, pagesize) != pagesize)
-    return 13;
-  for (i = 0; i < pagesize; ++i)
-    if (*(data + i) != *(data3 + i))
-      return 14;
-  close (fd);
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_mmap_fixed_mapped=yes
-else
-  ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
-$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
-
-$as_echo "#define HAVE_MMAP 1" >>confdefs.h
-
-fi
-rm -f conftest.mmap conftest.txt
-
-
-if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then
-    FILEMAP=unixfilemap
-else
-    FILEMAP=readfilemap
-fi
-
-
-
-# AC_CPP_FUNC
-# ------------------ #
-# Checks to see if ANSI C99 CPP variable __func__ works.
-# If not, perhaps __FUNCTION__ works instead.
-# If not, we'll just define __func__ to "".
-# AC_CPP_FUNC
-
-   case $ac_cv_prog_cc_stdc in #(
-  no) :
-    ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #(
-  *) :
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
-$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
-if ${ac_cv_prog_cc_c99+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c99=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <stdio.h>
-
-// Check varargs macros.  These examples are taken from C99 6.10.3.5.
-#define debug(...) fprintf (stderr, __VA_ARGS__)
-#define showlist(...) puts (#__VA_ARGS__)
-#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
-static void
-test_varargs_macros (void)
-{
-  int x = 1234;
-  int y = 5678;
-  debug ("Flag");
-  debug ("X = %d\n", x);
-  showlist (The first, second, and third items.);
-  report (x>y, "x is %d but y is %d", x, y);
-}
-
-// Check long long types.
-#define BIG64 18446744073709551615ull
-#define BIG32 4294967295ul
-#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
-#if !BIG_OK
-  your preprocessor is broken;
-#endif
-#if BIG_OK
-#else
-  your preprocessor is broken;
-#endif
-static long long int bignum = -9223372036854775807LL;
-static unsigned long long int ubignum = BIG64;
-
-struct incomplete_array
-{
-  int datasize;
-  double data[];
-};
-
-struct named_init {
-  int number;
-  const wchar_t *name;
-  double average;
-};
-
-typedef const char *ccp;
-
-static inline int
-test_restrict (ccp restrict text)
-{
-  // See if C++-style comments work.
-  // Iterate through items via the restricted pointer.
-  // Also check for declarations in for loops.
-  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
-    continue;
-  return 0;
-}
-
-// Check varargs and va_copy.
-static void
-test_varargs (const char *format, ...)
-{
-  va_list args;
-  va_start (args, format);
-  va_list args_copy;
-  va_copy (args_copy, args);
-
-  const char *str;
-  int number;
-  float fnumber;
-
-  while (*format)
-    {
-      switch (*format++)
-	{
-	case 's': // string
-	  str = va_arg (args_copy, const char *);
-	  break;
-	case 'd': // int
-	  number = va_arg (args_copy, int);
-	  break;
-	case 'f': // float
-	  fnumber = va_arg (args_copy, double);
-	  break;
-	default:
-	  break;
-	}
-    }
-  va_end (args_copy);
-  va_end (args);
-}
-
-int
-main ()
-{
-
-  // Check bool.
-  _Bool success = false;
-
-  // Check restrict.
-  if (test_restrict ("String literal") == 0)
-    success = true;
-  char *restrict newvar = "Another string";
-
-  // Check varargs.
-  test_varargs ("s, d' f .", "string", 65, 34.234);
-  test_varargs_macros ();
-
-  // Check flexible array members.
-  struct incomplete_array *ia =
-    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
-  ia->datasize = 10;
-  for (int i = 0; i < ia->datasize; ++i)
-    ia->data[i] = i * 1.234;
-
-  // Check named initializers.
-  struct named_init ni = {
-    .number = 34,
-    .name = L"Test wide string",
-    .average = 543.34343,
-  };
-
-  ni.number = 58;
-
-  int dynamic_array[ni.number];
-  dynamic_array[ni.number - 1] = 543;
-
-  // work around unused variable warnings
-  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
-	  || dynamic_array[ni.number - 1] != 543);
-
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c99=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c99" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c99" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c99"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
-$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c99" != xno; then :
-  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
-else
-  ac_cv_prog_cc_stdc=no
-fi
-
-fi
- ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
-$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
-  if ${ac_cv_prog_cc_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-
-  case $ac_cv_prog_cc_stdc in #(
-  no) :
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;; #(
-  '') :
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;; #(
-  *) :
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
-$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C99-conforming __func__" >&5
-$as_echo_n "checking for an ANSI C99-conforming __func__... " >&6; }
-if ${ac_cv_cpp_func+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-char *foo = __func__;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_cpp_func=yes
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-char *foo = __FUNCTION__;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_cpp_func=__FUNCTION__
-else
-  ac_cv_cpp_func=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cpp_func" >&5
-$as_echo "$ac_cv_cpp_func" >&6; }
-if test $ac_cv_cpp_func = __FUNCTION__; then
-
-$as_echo "#define __func__ __FUNCTION__" >>confdefs.h
-
-elif test $ac_cv_cpp_func = no; then
-
-$as_echo "#define __func__ \"\"" >>confdefs.h
-
-fi
-
-
-
-
-$as_echo "#define XML_NS 1" >>confdefs.h
-
-
-$as_echo "#define XML_DTD 1" >>confdefs.h
-
-
-$as_echo "#define XML_CONTEXT_BYTES 1024" >>confdefs.h
-
-
-ac_config_files="$ac_config_files Makefile expat.pc"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by expat $as_me 2.1.0, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <expat-bugs@libexpat.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-expat config.status 2.1.0
-configured by $0, generated by GNU Autoconf 2.68,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
-reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
-reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
-GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
-file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
-predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
-predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
-postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in AS \
-DLLTOOL \
-OBJDUMP \
-SHELL \
-ECHO \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_CXX \
-reload_flag_CXX \
-compiler_CXX \
-lt_prog_compiler_no_builtin_flag_CXX \
-lt_prog_compiler_pic_CXX \
-lt_prog_compiler_wl_CXX \
-lt_prog_compiler_static_CXX \
-lt_cv_prog_compiler_c_o_CXX \
-export_dynamic_flag_spec_CXX \
-whole_archive_flag_spec_CXX \
-compiler_needs_object_CXX \
-with_gnu_ld_CXX \
-allow_undefined_flag_CXX \
-no_undefined_flag_CXX \
-hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_flag_spec_ld_CXX \
-hardcode_libdir_separator_CXX \
-exclude_expsyms_CXX \
-include_expsyms_CXX \
-file_list_spec_CXX \
-compiler_lib_search_dirs_CXX \
-predep_objects_CXX \
-postdep_objects_CXX \
-predeps_CXX \
-postdeps_CXX \
-compiler_lib_search_path_CXX; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
-reload_cmds_CXX \
-old_archive_cmds_CXX \
-old_archive_from_new_cmds_CXX \
-old_archive_from_expsyms_cmds_CXX \
-archive_cmds_CXX \
-archive_expsym_cmds_CXX \
-module_cmds_CXX \
-module_expsym_cmds_CXX \
-export_symbols_cmds_CXX \
-prelink_cmds_CXX \
-postlink_cmds_CXX; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "expat_config.h") CONFIG_HEADERS="$CONFIG_HEADERS expat_config.h" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "expat.pc") CONFIG_FILES="$CONFIG_FILES expat.pc" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="CXX "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Assembler program.
-AS=$lt_AS
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Object dumper program.
-OBJDUMP=$lt_OBJDUMP
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: CXX
-
-# The linker used to build libraries.
-LD=$lt_LD_CXX
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_CXX
-reload_cmds=$lt_reload_cmds_CXX
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_CXX
-
-# A language specific compiler.
-CC=$lt_compiler_CXX
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_CXX
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_CXX
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_CXX
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_CXX
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_CXX
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_CXX
-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_CXX
-module_expsym_cmds=$lt_module_expsym_cmds_CXX
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_CXX
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_CXX
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_CXX
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_CXX
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_CXX
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_CXX
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_CXX
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_CXX
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_CXX
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_CXX
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_CXX
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_CXX
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_CXX
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_CXX
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_CXX
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_CXX
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_CXX
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_CXX
-postdep_objects=$lt_postdep_objects_CXX
-predeps=$lt_predeps_CXX
-postdeps=$lt_postdeps_CXX
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
-
-# ### END LIBTOOL TAG CONFIG: CXX
-_LT_EOF
-
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-abs_srcdir="`cd $srcdir && pwd`"
-abs_builddir="`pwd`"
-if test "$abs_srcdir" != "$abs_builddir"; then
-  make mkdir-init
-fi
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/configure.in b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/configure.in
deleted file mode 100644
index 7e968c46..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/configure.in
+++ /dev/null
@@ -1,155 +0,0 @@
-dnl   configuration script for expat
-dnl   Process this file with autoconf to produce a configure script.
-dnl
-dnl   Copyright 2000 Clark Cooper
-dnl
-dnl   This file is part of EXPAT.
-dnl
-dnl   EXPAT is free software; you can redistribute it and/or modify it
-dnl   under the terms of the License (based on the MIT/X license) contained
-dnl   in the file COPYING that comes with this distribution.
-dnl
-
-dnl Ensure that Expat is configured with autoconf 2.58 or newer
-AC_PREREQ(2.58)
-
-dnl Get the version number of Expat, using m4's esyscmd() command to run
-dnl the command at m4-generation time. This allows us to create an m4
-dnl symbol holding the correct version number. AC_INIT() requires the
-dnl version number at m4-time, rather than when ./configure is run, so
-dnl all this must happen as part of m4, not as part of the shell code
-dnl contained in ./configure.
-dnl
-dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an appropriate
-dnl test. I believe this test will work, but I don't have a place with non-
-dnl GNU M4 to test it right now.
-define([expat_version], ifdef([__gnu__],
-                              [esyscmd(conftools/get-version.sh lib/expat.h)],
-                              [2.1.x]))
-AC_INIT(expat, expat_version, expat-bugs@libexpat.org)
-undefine([expat_version])
-
-AC_CONFIG_SRCDIR(Makefile.in)
-AC_CONFIG_AUX_DIR(conftools)
-AC_CONFIG_MACRO_DIR([m4])
-
-
-dnl
-dnl Increment LIBREVISION if source code has changed at all
-dnl
-dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0
-dnl
-dnl If the API changes compatibly (i.e. simply adding a new function
-dnl without changing or removing earlier interfaces), then increment LIBAGE.
-dnl 
-dnl If the API changes incompatibly set LIBAGE back to 0
-dnl
-
-LIBCURRENT=7
-LIBREVISION=0
-LIBAGE=6
-
-AC_CONFIG_HEADER(expat_config.h)
-
-sinclude(conftools/ac_c_bigendian_cross.m4)
-
-AC_LIBTOOL_WIN32_DLL
-AC_PROG_LIBTOOL
-
-AC_SUBST(LIBCURRENT)
-AC_SUBST(LIBREVISION)
-AC_SUBST(LIBAGE)
-
-dnl Checks for programs.
-AC_PROG_CC
-AC_PROG_CXX
-AC_PROG_INSTALL
-
-if test "$GCC" = yes ; then
-    dnl
-    dnl Be careful about adding the -fexceptions option; some versions of
-    dnl GCC don't support it and it causes extra warnings that are only
-    dnl distracting; avoid.
-    dnl
-    OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes"
-    CFLAGS="$OLDCFLAGS -fexceptions"
-    AC_MSG_CHECKING(whether $CC accepts -fexceptions)
-    AC_TRY_LINK( , ,
-                   AC_MSG_RESULT(yes),
-                   AC_MSG_RESULT(no); CFLAGS="$OLDCFLAGS")
-    CXXFLAGS=`echo "$CFLAGS" | sed 's/ -Wmissing-prototypes -Wstrict-prototypes//'`
-fi
-
-dnl Checks for header files.
-AC_HEADER_STDC
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-
-dnl Note: Avoid using AC_C_BIGENDIAN because it does not
-dnl work in a cross compile.
-AC_C_BIGENDIAN_CROSS
-
-AC_C_CONST
-AC_TYPE_SIZE_T
-AC_CHECK_FUNCS(memmove bcopy)
-
-dnl Only needed for xmlwf:
-AC_CHECK_HEADERS(fcntl.h unistd.h)
-AC_TYPE_OFF_T
-AC_FUNC_MMAP
-
-if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then
-    FILEMAP=unixfilemap
-else
-    FILEMAP=readfilemap
-fi
-AC_SUBST(FILEMAP)
-
-dnl Needed for the test support code; this was found at
-dnl http://lists.gnu.org/archive/html/bug-autoconf/2002-07/msg00028.html
-
-# AC_CPP_FUNC
-# ------------------ #
-# Checks to see if ANSI C99 CPP variable __func__ works.
-# If not, perhaps __FUNCTION__ works instead. 
-# If not, we'll just define __func__ to "". 
-AC_DEFUN([AC_CPP_FUNC],
-[AC_REQUIRE([AC_PROG_CC_STDC])dnl
-AC_CACHE_CHECK([for an ANSI C99-conforming __func__], ac_cv_cpp_func,
-[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
-[[char *foo = __func__;]])],
-  [ac_cv_cpp_func=yes], 
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
-[[char *foo = __FUNCTION__;]])],
-  [ac_cv_cpp_func=__FUNCTION__], 
-  [ac_cv_cpp_func=no])])])
-if test $ac_cv_cpp_func = __FUNCTION__; then
-  AC_DEFINE(__func__,__FUNCTION__,
-            [Define to __FUNCTION__ or "" if `__func__' does not conform to 
-ANSI C.])
-elif test $ac_cv_cpp_func = no; then
-  AC_DEFINE(__func__,"",
-            [Define to __FUNCTION__ or "" if `__func__' does not conform to 
-ANSI C.])
-fi
-])# AC_CPP_FUNC
-
-AC_CPP_FUNC
-
-
-dnl Some basic configuration:
-AC_DEFINE([XML_NS], 1,
-          [Define to make XML Namespaces functionality available.])
-AC_DEFINE([XML_DTD], 1,
-          [Define to make parameter entity parsing functionality available.])
-AC_DEFINE([XML_CONTEXT_BYTES], 1024,
-          [Define to specify how much context to retain around the current parse point.])
-
-AC_CONFIG_FILES([Makefile expat.pc])
-AC_OUTPUT
-
-abs_srcdir="`cd $srcdir && pwd`"
-abs_builddir="`pwd`"
-if test "$abs_srcdir" != "$abs_builddir"; then
-  make mkdir-init
-fi
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/PrintPath b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/PrintPath
deleted file mode 100644
index e8559a3d..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/PrintPath
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/bin/sh
-# Look for program[s] somewhere in $PATH.
-#
-# Options:
-#  -s
-#    Do not print out full pathname. (silent)
-#  -pPATHNAME
-#    Look in PATHNAME instead of $PATH
-#
-# Usage:
-#  PrintPath [-s] [-pPATHNAME] program [program ...]
-#
-# Initially written by Jim Jagielski for the Apache configuration mechanism
-#  (with kudos to Kernighan/Pike)
-#
-# This script falls under the Apache License.
-# See http://www.apache.org/licenses/LICENSE
-
-##
-# Some "constants"
-##
-pathname=$PATH
-echo="yes"
-
-##
-# Find out what OS we are running for later on
-##
-os=`(uname) 2>/dev/null`
-
-##
-# Parse command line
-##
-for args in $*
-do
-    case $args in
-	-s  ) echo="no" ;;
-	-p* ) pathname="`echo $args | sed 's/^..//'`" ;;
-	*   ) programs="$programs $args" ;;
-    esac
-done
-
-##
-# Now we make the adjustments required for OS/2 and everyone
-# else :)
-#
-# First of all, all OS/2 programs have the '.exe' extension.
-# Next, we adjust PATH (or what was given to us as PATH) to
-# be whitespace separated directories.
-# Finally, we try to determine the best flag to use for
-# test/[] to look for an executable file. OS/2 just has '-r'
-# but with other OSs, we do some funny stuff to check to see
-# if test/[] knows about -x, which is the preferred flag.
-##
-
-if [ "x$os" = "xOS/2" ]
-then
-    ext=".exe"
-    pathname=`echo -E $pathname |
-     sed 's/^;/.;/
-	  s/;;/;.;/g
-	  s/;$/;./
-	  s/;/ /g
-	  s/\\\\/\\//g' `
-    test_exec_flag="-r"
-else
-    ext=""	# No default extensions
-    pathname=`echo $pathname |
-     sed 's/^:/.:/
-	  s/::/:.:/g
-	  s/:$/:./
-	  s/:/ /g' `
-    # Here is how we test to see if test/[] can handle -x
-    testfile="pp.t.$$"
-
-    cat > $testfile <<ENDTEST
-#!/bin/sh
-if [ -x / ] || [ -x /bin ] || [ -x /bin/ls ]; then
-    exit 0
-fi
-exit 1
-ENDTEST
-
-    if `/bin/sh $testfile 2>/dev/null`; then
-	test_exec_flag="-x"
-    else
-	test_exec_flag="-r"
-    fi
-    rm -f $testfile
-fi
-
-for program in $programs
-do
-    for path in $pathname
-    do
-	if [ $test_exec_flag $path/${program}${ext} ] && \
-	   [ ! -d $path/${program}${ext} ]; then
-	    if [ "x$echo" = "xyes" ]; then
-		echo $path/${program}${ext}
-	    fi
-	    exit 0
-	fi
-
-# Next try without extension (if one was used above)
-	if [ "x$ext" != "x" ]; then
-            if [ $test_exec_flag $path/${program} ] && \
-               [ ! -d $path/${program} ]; then
-                if [ "x$echo" = "xyes" ]; then
-                    echo $path/${program}
-                fi
-                exit 0
-            fi
-        fi
-    done
-done
-exit 1
-
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/ac_c_bigendian_cross.m4 b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/ac_c_bigendian_cross.m4
deleted file mode 100644
index 67577364..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/ac_c_bigendian_cross.m4
+++ /dev/null
@@ -1,81 +0,0 @@
-dnl @synopsis AC_C_BIGENDIAN_CROSS
-dnl
-dnl Check endianess even when crosscompiling
-dnl (partially based on the original AC_C_BIGENDIAN).
-dnl
-dnl The implementation will create a binary, and instead of running
-dnl the binary it will be grep'ed for some symbols that will look
-dnl different for different endianess of the binary.
-dnl
-dnl @version $Id: ac_c_bigendian_cross.m4,v 1.1 2012/06/15 13:38:48 dromagod Exp $
-dnl @author Guido Draheim <guidod@gmx.de>
-dnl
-AC_DEFUN([AC_C_BIGENDIAN_CROSS],
-[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian,
-[ac_cv_c_bigendian=unknown
-# See if sys/param.h defines the BYTE_ORDER macro.
-AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/param.h>], [
-#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
- bogus endian macros
-#endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
-AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/param.h>], [
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
-#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
-if test $ac_cv_c_bigendian = unknown; then
-AC_TRY_RUN([main () {
-  /* Are we little or big endian?  From Harbison&Steele.  */
-  union
-  {
-    long l;
-    char c[sizeof (long)];
-  } u;
-  u.l = 1;
-  exit (u.c[sizeof (long) - 1] == 1);
-}], ac_cv_c_bigendian=no, ac_cv_c_bigendian=yes,
-[ echo $ac_n "cross-compiling... " 2>&AC_FD_MSG ])
-fi])
-if test $ac_cv_c_bigendian = unknown; then
-AC_MSG_CHECKING(to probe for byte ordering)
-[
-cat >conftest.c <<EOF
-short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
-void _ascii() { char* s = (char*) ascii_mm; s = (char*) ascii_ii; }
-short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-void _ebcdic() { char* s = (char*) ebcdic_mm; s = (char*) ebcdic_ii; }
-int main() { _ascii (); _ebcdic (); return 0; }
-EOF
-] if test -f conftest.c ; then
-     if ${CC-cc} -c conftest.c -o conftest.o && test -f conftest.o ; then
-        if test `grep -l BIGenDianSyS conftest.o` ; then
-           echo $ac_n ' big endian probe OK, ' 1>&AC_FD_MSG
-           ac_cv_c_bigendian=yes
-        fi
-        if test `grep -l LiTTleEnDian conftest.o` ; then
-           echo $ac_n ' little endian probe OK, ' 1>&AC_FD_MSG
-           if test $ac_cv_c_bigendian = yes ; then
-            ac_cv_c_bigendian=unknown;
-           else
-            ac_cv_c_bigendian=no
-           fi
-        fi
-        echo $ac_n 'guessing bigendian ...  ' >&AC_FD_MSG
-     fi
-  fi
-AC_MSG_RESULT($ac_cv_c_bigendian)
-fi
-if test $ac_cv_c_bigendian = yes; then
-  AC_DEFINE(WORDS_BIGENDIAN, 1, [whether byteorder is bigendian])
-  BYTEORDER=4321
-else
-  BYTEORDER=1234
-fi
-AC_DEFINE_UNQUOTED(BYTEORDER, $BYTEORDER, [1234 = LIL_ENDIAN, 4321 = BIGENDIAN])
-if test $ac_cv_c_bigendian = unknown; then
-  AC_MSG_ERROR(unknown endianess - sorry, please pre-set ac_cv_c_bigendian)
-fi
-])
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/config.guess b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/config.guess
deleted file mode 100644
index 40eaed48..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/config.guess
+++ /dev/null
@@ -1,1517 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011 Free Software Foundation, Inc.
-
-timestamp='2011-05-11'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner.  Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
-Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep -q __ELF__
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-		os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-	exitcode=$?
-	trap '' 0
-	exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-	echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux${UNAME_RELEASE}
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
-	SUN_ARCH="i386"
-	# If there is a compiler, see if it is configured for 64-bit objects.
-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		SUN_ARCH="x86_64"
-	    fi
-	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint${UNAME_RELEASE}
-	exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint${UNAME_RELEASE}
-	exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-unknown-mint${UNAME_RELEASE}
-	exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-	# DG/UX returns AViiON for all architectures
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
-	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[4567])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-		    case "${sc_cpu_version}" in
-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-		      532)                      # CPU_PA_RISC2_0
-			case "${sc_kernel_bits}" in
-			  32) HP_ARCH="hppa2.0n" ;;
-			  64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-			esac ;;
-		    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^		//' << EOF >$dummy.c
-
-		#define _HPUX_SOURCE
-		#include <stdlib.h>
-		#include <unistd.h>
-
-		int main ()
-		{
-		#if defined(_SC_KERNEL_BITS)
-		    long bits = sysconf(_SC_KERNEL_BITS);
-		#endif
-		    long cpu  = sysconf (_SC_CPU_VERSION);
-
-		    switch (cpu)
-			{
-			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-			case CPU_PA_RISC2_0:
-		#if defined(_SC_KERNEL_BITS)
-			    switch (bits)
-				{
-				case 64: puts ("hppa2.0w"); break;
-				case 32: puts ("hppa2.0n"); break;
-				default: puts ("hppa2.0"); break;
-				} break;
-		#else  /* !defined(_SC_KERNEL_BITS) */
-			    puts ("hppa2.0"); break;
-		#endif
-			default: puts ("hppa1.0"); break;
-			}
-		    exit (0);
-		}
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep -q __LP64__
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-	exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-	exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-	exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-	exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:windows32*:*)
-	# uname -m includes "-pc" on this system.
-	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:*)
-	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-	esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
-	else
-	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-		| grep -q __ARM_PCS_VFP
-	    then
-		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-	    else
-		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-	    fi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    cris:Linux:*:*)
-	echo cris-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-	echo frv-unknown-linux-gnu
-	exit ;;
-    i*86:Linux:*:*)
-	LIBC=gnu
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-unknown-linux-gnu
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
-	esac
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
-	exit ;;
-    sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-tilera-linux-gnu
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
-	exit ;;
-    x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
-	exit ;;
-    xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-	# Unixware is an offshoot of SVR4, but it has its own version
-	# number series starting with 2...
-	# I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-	# Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-	# uname -m prints for DJGPP always 'pc', but it prints nothing about
-	# the processor, so we play safe by assuming i586.
-	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
-	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-	exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-	OS_REL='.3'
-	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-			# says <Richard.M.Bartel@ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes@openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-		echo mips-nec-sysv${UNAME_RELEASE}
-	else
-		echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-	exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    i386)
-		eval $set_cc_for_build
-		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		      grep IS_64BIT_ARCH >/dev/null
-		  then
-		      UNAME_PROCESSOR="x86_64"
-		  fi
-		fi ;;
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-	echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
-	exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-	"4"
-#else
-	""
-#endif
-	); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/config.sub b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/config.sub
deleted file mode 100644
index 30fdca81..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/config.sub
+++ /dev/null
@@ -1,1760 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011 Free Software Foundation, Inc.
-
-timestamp='2011-03-23'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
-Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze)
-		os=
-		basic_machine=$1
-		;;
-	-bluegene*)
-		os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
-	-chorusrdb)
-		os=-chorusrdb
-		basic_machine=$1
-		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nds32 | nds32le | nds32be \
-	| nios | nios2 \
-	| ns16k | ns32k \
-	| open8 \
-	| or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle \
-	| pyramid \
-	| rx \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu \
-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e \
-	| we32k \
-	| x86 | xc16x | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	c54x)
-		basic_machine=tic54x-unknown
-		;;
-	c55x)
-		basic_machine=tic55x-unknown
-		;;
-	c6x)
-		basic_machine=tic6x-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-		# Motorola 68HC11/12.
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	strongarm | thumb | xscale)
-		basic_machine=arm-unknown
-		;;
-
-	xscaleeb)
-		basic_machine=armeb-unknown
-		;;
-
-	xscaleel)
-		basic_machine=armel-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| open8-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-	| pyramid-* \
-	| romp-* | rs6000-* | rx-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-	| tahoe-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile-* | tilegx-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c54x-*)
-		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c55x-*)
-		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c6x-*)
-		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16 | cr16-*)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	microblaze)
-		basic_machine=microblaze-xilinx
-		;;
-	mingw32)
-		basic_machine=i386-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	neo-tandem)
-		basic_machine=neo-tandem
-		;;
-	nse-tandem)
-		basic_machine=nse-tandem
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc | ppcbe)	basic_machine=powerpc-unknown
-		;;
-	ppc-* | ppcbe-*)
-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	strongarm-* | thumb-*)
-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	# This must be matched before tile*.
-	tilegx*)
-		basic_machine=tilegx-unknown
-		os=-linux-gnu
-		;;
-	tile*)
-		basic_machine=tile-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	xscale-* | xscalee[bl]-*)
-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-	# First match some system type aliases
-	# that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-auroraux)
-		os=-auroraux
-		;;
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-	-os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-	-tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-kaos*)
-		os=-kaos
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-	-nacl*)
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-	score-*)
-		os=-elf
-		;;
-	spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-	c4x-* | tic4x-*)
-		os=-coff
-		;;
-	tic54x-*)
-		os=-coff
-		;;
-	tic55x-*)
-		os=-coff
-		;;
-	tic6x-*)
-		os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-	mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-cnk*|-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/expat.m4 b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/expat.m4
deleted file mode 100644
index 57e579b3..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/expat.m4
+++ /dev/null
@@ -1,43 +0,0 @@
-dnl Check if --with-expat[=PREFIX] is specified and
-dnl Expat >= 1.95.0 is installed in the system.
-dnl If yes, substitute EXPAT_CFLAGS, EXPAT_LIBS with regard to
-dnl the specified PREFIX and set with_expat to PREFIX, or 'yes' if PREFIX
-dnl has not been specified. Also HAVE_LIBEXPAT, HAVE_EXPAT_H are defined.
-dnl If --with-expat has not been specified, set with_expat to 'no'.
-dnl In addition, an Automake conditional EXPAT_INSTALLED is set accordingly.
-dnl This is necessary to adapt a whole lot of packages that have expat
-dnl bundled as a static library.
-AC_DEFUN([AM_WITH_EXPAT],
-[ AC_ARG_WITH(expat,
-	      [  --with-expat=PREFIX     Use system Expat library],
-	      , with_expat=no)
-
-  AM_CONDITIONAL(EXPAT_INSTALLED, test $with_expat != no)
-
-  EXPAT_CFLAGS=
-  EXPAT_LIBS=
-  if test $with_expat != no; then
-	if test $with_expat != yes; then
-		EXPAT_CFLAGS="-I$with_expat/include"
-		EXPAT_LIBS="-L$with_expat/lib"
-	fi
-	AC_CHECK_LIB(expat, XML_ParserCreate,
-		     [ EXPAT_LIBS="$EXPAT_LIBS -lexpat"
-		       expat_found=yes ],
-		     [ expat_found=no ],
-		     "$EXPAT_LIBS")
-	if test $expat_found = no; then
-		AC_MSG_ERROR([Could not find the Expat library])
-	fi
-	expat_save_CFLAGS="$CFLAGS"
-	CFLAGS="$CFLAGS $EXPAT_CFLAGS"
-	AC_CHECK_HEADERS(expat.h, , expat_found=no)
-	if test $expat_found = no; then
-		AC_MSG_ERROR([Could not find expat.h])
-	fi
-	CFLAGS="$expat_save_CFLAGS"
-  fi
-
-  AC_SUBST(EXPAT_CFLAGS)
-  AC_SUBST(EXPAT_LIBS)
-])
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/get-version.sh b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/get-version.sh
deleted file mode 100644
index a70e0fb4..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/get-version.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/sh
-#
-# USAGE: get-version.sh path/to/expat.h
-#
-# This script will print Expat's version number on stdout. For example:
-#
-#   $ ./conftools/get-version.sh ./lib/expat.h
-#   1.95.3
-#   $
-#
-
-if test $# = 0; then
-  echo "ERROR: pathname for expat.h was not provided."
-  echo ""
-  echo "USAGE: $0 path/to/expat.h"
-  exit 1
-fi
-if test $# != 1; then
-  echo "ERROR: too many arguments were provided."
-  echo ""
-  echo "USAGE: $0 path/to/expat.h"
-  exit 1
-fi
-
-hdr="$1"
-if test ! -r "$hdr"; then
-  echo "ERROR: '$hdr' does not exist, or is not readable."
-  exit 1
-fi
-
-MAJOR_VERSION="`sed -n -e '/MAJOR_VERSION/s/[^0-9]*//gp' $hdr`"
-MINOR_VERSION="`sed -n -e '/MINOR_VERSION/s/[^0-9]*//gp' $hdr`"
-MICRO_VERSION="`sed -n -e '/MICRO_VERSION/s/[^0-9]*//gp' $hdr`"
-
-# Determine how to tell echo not to print the trailing \n. This is
-# similar to Autoconf's @ECHO_C@ and @ECHO_N@; however, we don't
-#  generate this file via autoconf (in fact, get-version.sh is used
-# to *create* ./configure), so we just do something similar inline.
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ;;
-  *)      ECHO_N= ECHO_C='\c' ;;
-esac
-
-echo $ECHO_N "$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$ECHO_C"
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/install-sh b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/install-sh
deleted file mode 100644
index 6781b987..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/install-sh
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2009-04-28.21; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" ""	$nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-	shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
-
-    -o) chowncmd="$chownprog $2"
-	shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t) dst_arg=$2
-	shift;;
-
-    -T) no_target_directory=true;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --)	shift
-	break;;
-
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names starting with `-'.
-  case $src in
-    -*) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-
-    dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
-
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
-
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-	/*) prefix='/';;
-	-*) prefix='./';;
-	*)  prefix='';;
-      esac
-
-      eval "$initialize_posix_glob"
-
-      oIFS=$IFS
-      IFS=/
-      $posix_glob set -f
-      set fnord $dstdir
-      shift
-      $posix_glob set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-	test -z "$d" && continue
-
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
-
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/ltmain.sh b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/ltmain.sh
deleted file mode 100644
index b4a3231c..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/ltmain.sh
+++ /dev/null
@@ -1,9642 +0,0 @@
-
-# libtool (GNU libtool) 2.4
-# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#       --config             show all configuration variables
-#       --debug              enable verbose shell tracing
-#   -n, --dry-run            display commands without modifying any files
-#       --features           display basic configuration information and exit
-#       --mode=MODE          use operation mode MODE
-#       --preserve-dup-deps  don't remove duplicate dependency libraries
-#       --quiet, --silent    don't print informational messages
-#       --no-quiet, --no-silent
-#                            print informational messages (default)
-#       --tag=TAG            use configuration variables from tag TAG
-#   -v, --verbose            print more informational messages than default
-#       --no-verbose         don't print the extra informational messages
-#       --version            print version information
-#   -h, --help, --help-all   print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-#         clean              remove files from the build directory
-#         compile            compile a source file into a libtool object
-#         execute            automatically set library path, then run a program
-#         finish             complete the installation of libtool libraries
-#         install            install libraries or executables
-#         link               create a library or an executable
-#         uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.  When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#         host-triplet:	$host
-#         shell:		$SHELL
-#         compiler:		$LTCC
-#         compiler flags:		$LTCFLAGS
-#         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4 Debian-2.4-2ubuntu1
-#         automake:	$automake_version
-#         autoconf:	$autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
-
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION="2.4 Debian-2.4-2ubuntu1"
-TIMESTAMP=""
-package_revision=1.3293
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
-	fi"
-done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
-
-$lt_unset CDPATH
-
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-
-
-: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SED="/bin/sed"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-} # func_dirname may be replaced by extended shell implementation
-
-
-# func_basename file
-func_basename ()
-{
-    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-} # func_basename may be replaced by extended shell implementation
-
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-    # Extract subdirectory from the argument.
-    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-} # func_dirname_and_basename may be replaced by extended shell implementation
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-    case ${2} in
-      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-    esac
-} # func_stripname may be replaced by extended shell implementation
-
-
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
-		s@/\./@/@g
-		t dotsl
-		s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
-
-# func_normal_abspath PATH
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-#             value returned in "$func_normal_abspath_result"
-func_normal_abspath ()
-{
-  # Start from root dir and reassemble the path.
-  func_normal_abspath_result=
-  func_normal_abspath_tpath=$1
-  func_normal_abspath_altnamespace=
-  case $func_normal_abspath_tpath in
-    "")
-      # Empty path, that just means $cwd.
-      func_stripname '' '/' "`pwd`"
-      func_normal_abspath_result=$func_stripname_result
-      return
-    ;;
-    # The next three entries are used to spot a run of precisely
-    # two leading slashes without using negated character classes;
-    # we take advantage of case's first-match behaviour.
-    ///*)
-      # Unusual form of absolute path, do nothing.
-    ;;
-    //*)
-      # Not necessarily an ordinary path; POSIX reserves leading '//'
-      # and for example Cygwin uses it to access remote file shares
-      # over CIFS/SMB, so we conserve a leading double slash if found.
-      func_normal_abspath_altnamespace=/
-    ;;
-    /*)
-      # Absolute path, do nothing.
-    ;;
-    *)
-      # Relative path, prepend $cwd.
-      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-    ;;
-  esac
-  # Cancel out all the simple stuff to save iterations.  We also want
-  # the path to end with a slash for ease of parsing, so make sure
-  # there is one (and only one) here.
-  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
-  while :; do
-    # Processed it all yet?
-    if test "$func_normal_abspath_tpath" = / ; then
-      # If we ascended to the root using ".." the result may be empty now.
-      if test -z "$func_normal_abspath_result" ; then
-        func_normal_abspath_result=/
-      fi
-      break
-    fi
-    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcar"`
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcdr"`
-    # Figure out what to do with it
-    case $func_normal_abspath_tcomponent in
-      "")
-        # Trailing empty path component, ignore it.
-      ;;
-      ..)
-        # Parent dir; strip last assembled component from result.
-        func_dirname "$func_normal_abspath_result"
-        func_normal_abspath_result=$func_dirname_result
-      ;;
-      *)
-        # Actual path component, append it.
-        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
-      ;;
-    esac
-  done
-  # Restore leading double-slash if one was found on entry.
-  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-#             value returned in "$func_relative_path_result"
-func_relative_path ()
-{
-  func_relative_path_result=
-  func_normal_abspath "$1"
-  func_relative_path_tlibdir=$func_normal_abspath_result
-  func_normal_abspath "$2"
-  func_relative_path_tbindir=$func_normal_abspath_result
-
-  # Ascend the tree starting from libdir
-  while :; do
-    # check if we have found a prefix of bindir
-    case $func_relative_path_tbindir in
-      $func_relative_path_tlibdir)
-        # found an exact match
-        func_relative_path_tcancelled=
-        break
-        ;;
-      $func_relative_path_tlibdir*)
-        # found a matching prefix
-        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-        func_relative_path_tcancelled=$func_stripname_result
-        if test -z "$func_relative_path_result"; then
-          func_relative_path_result=.
-        fi
-        break
-        ;;
-      *)
-        func_dirname $func_relative_path_tlibdir
-        func_relative_path_tlibdir=${func_dirname_result}
-        if test "x$func_relative_path_tlibdir" = x ; then
-          # Have to descend all the way to the root!
-          func_relative_path_result=../$func_relative_path_result
-          func_relative_path_tcancelled=$func_relative_path_tbindir
-          break
-        fi
-        func_relative_path_result=../$func_relative_path_result
-        ;;
-    esac
-  done
-
-  # Now calculate path; take care to avoid doubling-up slashes.
-  func_stripname '' '/' "$func_relative_path_result"
-  func_relative_path_result=$func_stripname_result
-  func_stripname '/' '/' "$func_relative_path_tcancelled"
-  if test "x$func_stripname_result" != x ; then
-    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
-  fi
-
-  # Normalisation. If bindir is libdir, return empty string,
-  # else relative path ending with a slash; either way, target
-  # file name can be directly appended.
-  if test ! -z "$func_relative_path_result"; then
-    func_stripname './' '' "$func_relative_path_result/"
-    func_relative_path_result=$func_stripname_result
-  fi
-}
-
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=:
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
-
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
-
-    # bash bug again:
-    :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
-
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
-
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
-
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
-
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
-
-    $ECHO "$my_tmpdir"
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
-
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    case $1 in
-      *[\\\`\"]*)
-	my_arg=`$ECHO "$1" | $SED \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
-
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
-
-    func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-# func_tr_sh
-# Turn $1 into a string suitable for a shell variable name.
-# Result is stored in $func_tr_sh_result.  All characters
-# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-# if $1 begins with a digit, a '_' is prepended as well.
-func_tr_sh ()
-{
-  case $1 in
-  [0-9]* | *[!a-zA-Z0-9_]*)
-    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
-    ;;
-  * )
-    func_tr_sh_result=$1
-    ;;
-  esac
-}
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $opt_debug
-
-    $SED -n '/(C)/!b go
-	:more
-	/\./!{
-	  N
-	  s/\n# / /
-	  b more
-	}
-	:go
-	/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/^#  *.*--help/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    echo
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
-}
-
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
-func_help ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-	:print
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
-	p
-	d
-     }
-     /^# .* home page:/b print
-     /^# General help using/b print
-     ' < "$progpath"
-    ret=$?
-    if test -z "$1"; then
-      exit $ret
-    fi
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    $opt_debug
-
-    func_error "missing argument for $1."
-    exit_cmd=exit
-}
-
-
-# func_split_short_opt shortopt
-# Set func_split_short_opt_name and func_split_short_opt_arg shell
-# variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
-{
-    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
-    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
-
-    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
-    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-} # func_split_short_opt may be replaced by extended shell implementation
-
-
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
-{
-    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
-    my_sed_long_arg='1s/^--[^=]*=//'
-
-    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
-    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-} # func_split_long_opt may be replaced by extended shell implementation
-
-exit_cmd=:
-
-
-
-
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-    eval "${1}=\$${1}\${2}"
-} # func_append may be replaced by extended shell implementation
-
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
-{
-    func_quote_for_eval "${2}"
-    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-} # func_append_quoted may be replaced by extended shell implementation
-
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-    func_arith_result=`expr "${@}"`
-} # func_arith may be replaced by extended shell implementation
-
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
-
-
-# func_lo2o object
-func_lo2o ()
-{
-    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-} # func_lo2o may be replaced by extended shell implementation
-
-
-# func_xform libobj-or-source
-func_xform ()
-{
-    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-} # func_xform may be replaced by extended shell implementation
-
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
-    echo "host: $host"
-    if test "$build_libtool_libs" = yes; then
-      echo "enable shared libraries"
-    else
-      echo "disable shared libraries"
-    fi
-    if test "$build_old_libs" = yes; then
-      echo "enable static libraries"
-    else
-      echo "disable static libraries"
-    fi
-
-    exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-  # Global variable:
-  tagname="$1"
-
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
-
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
-    *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
-
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
-      else
-	func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-    fi
-
-    exit $EXIT_MISMATCH
-  fi
-}
-
-
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
-  shift; set dummy --mode clean ${1+"$@"}; shift
-  ;;
-compile|compil|compi|comp|com|co|c)
-  shift; set dummy --mode compile ${1+"$@"}; shift
-  ;;
-execute|execut|execu|exec|exe|ex|e)
-  shift; set dummy --mode execute ${1+"$@"}; shift
-  ;;
-finish|finis|fini|fin|fi|f)
-  shift; set dummy --mode finish ${1+"$@"}; shift
-  ;;
-install|instal|insta|inst|ins|in|i)
-  shift; set dummy --mode install ${1+"$@"}; shift
-  ;;
-link|lin|li|l)
-  shift; set dummy --mode link ${1+"$@"}; shift
-  ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-  shift; set dummy --mode uninstall ${1+"$@"}; shift
-  ;;
-esac
-
-
-
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
-
-
-# Parse options once, thoroughly.  This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
-{
-  # this just eases exit handling
-  while test $# -gt 0; do
-    opt="$1"
-    shift
-    case $opt in
-      --debug|-x)	opt_debug='set -x'
-			func_echo "enabling shell trace mode"
-			$opt_debug
-			;;
-      --dry-run|--dryrun|-n)
-			opt_dry_run=:
-			;;
-      --config)
-			opt_config=:
-func_config
-			;;
-      --dlopen|-dlopen)
-			optarg="$1"
-			opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
-			shift
-			;;
-      --preserve-dup-deps)
-			opt_preserve_dup_deps=:
-			;;
-      --features)
-			opt_features=:
-func_features
-			;;
-      --finish)
-			opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
-			;;
-      --help)
-			opt_help=:
-			;;
-      --help-all)
-			opt_help_all=:
-opt_help=': help-all'
-			;;
-      --mode)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_mode="$optarg"
-case $optarg in
-  # Valid mode arguments:
-  clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
-  # Catch anything else as an error
-  *) func_error "invalid argument for $opt"
-     exit_cmd=exit
-     break
-     ;;
-esac
-			shift
-			;;
-      --no-silent|--no-quiet)
-			opt_silent=false
-func_append preserve_args " $opt"
-			;;
-      --no-verbose)
-			opt_verbose=false
-func_append preserve_args " $opt"
-			;;
-      --silent|--quiet)
-			opt_silent=:
-func_append preserve_args " $opt"
-        opt_verbose=false
-			;;
-      --verbose|-v)
-			opt_verbose=:
-func_append preserve_args " $opt"
-opt_silent=false
-			;;
-      --tag)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_tag="$optarg"
-func_append preserve_args " $opt $optarg"
-func_enable_tag "$optarg"
-			shift
-			;;
-
-      -\?|-h)		func_usage				;;
-      --help)		func_help				;;
-      --version)	func_version				;;
-
-      # Separate optargs to long options:
-      --*=*)
-			func_split_long_opt "$opt"
-			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      # Separate non-argument short options:
-      -\?*|-h*|-n*|-v*)
-			func_split_short_opt "$opt"
-			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      --)		break					;;
-      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
-      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
-    esac
-  done
-
-  # Validate options:
-
-  # save first non-option argument
-  if test "$#" -gt 0; then
-    nonopt="$opt"
-    shift
-  fi
-
-  # preserve --debug
-  test "$opt_debug" = : || func_append preserve_args " --debug"
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-      ;;
-  esac
-
-  $opt_help || {
-    # Sanity checks first:
-    func_check_version_match
-
-    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-      func_fatal_configuration "not configured to build any kind of library"
-    fi
-
-    # Darwin sucks
-    eval std_shrext=\"$shrext_cmds\"
-
-    # Only execute mode is allowed to have -dlopen flags.
-    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
-      func_error "unrecognized option \`-dlopen'"
-      $ECHO "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
-
-    # Change the help message to a mode-specific one.
-    generic_help="$help"
-    help="Try \`$progname --help --mode=$opt_mode' for more information."
-  }
-
-
-  # Bail if the options were screwed
-  $exit_cmd $EXIT_FAILURE
-}
-
-
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-	for lalib_p_l in 1 2 3 4
-	do
-	    read lalib_p_line
-	    case "$lalib_p_line" in
-		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-	    esac
-	done
-	exec 0<&5 5<&-
-    fi
-    test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_dirname_and_basename "$1" "" "."
-    func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $opt_debug
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$save_ifs
-      eval cmd=\"$cmd\"
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $opt_debug
-    case $1 in
-    */* | *\\*)	. "$1" ;;
-    *)		. "./$1" ;;
-    esac
-}
-
-
-# func_resolve_sysroot PATH
-# Replace a leading = in PATH with a sysroot.  Store the result into
-# func_resolve_sysroot_result
-func_resolve_sysroot ()
-{
-  func_resolve_sysroot_result=$1
-  case $func_resolve_sysroot_result in
-  =*)
-    func_stripname '=' '' "$func_resolve_sysroot_result"
-    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
-    ;;
-  esac
-}
-
-# func_replace_sysroot PATH
-# If PATH begins with the sysroot, replace it with = and
-# store the result into func_replace_sysroot_result.
-func_replace_sysroot ()
-{
-  case "$lt_sysroot:$1" in
-  ?*:"$lt_sysroot"*)
-    func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result="=$func_stripname_result"
-    ;;
-  *)
-    # Including no sysroot.
-    func_replace_sysroot_result=$1
-    ;;
-  esac
-}
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $opt_debug
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-	func_append_quoted CC_quoted "$arg"
-      done
-      CC_expanded=`func_echo_all $CC`
-      CC_quoted_expanded=`func_echo_all $CC_quoted`
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-	for z in $available_tags; do
-	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-	    CC_quoted=
-	    for arg in $CC; do
-	      # Double-quote args containing other shell metacharacters.
-	      func_append_quoted CC_quoted "$arg"
-	    done
-	    CC_expanded=`func_echo_all $CC`
-	    CC_quoted_expanded=`func_echo_all $CC_quoted`
-	    case "$@ " in
-	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
-	      # The compiler in the base compile command matches
-	      # the one in the tagged configuration.
-	      # Assume this is the tagged configuration we want.
-	      tagname=$z
-	      break
-	      ;;
-	    esac
-	  fi
-	done
-	# If $tagname still isn't set, then no tagged configuration
-	# was found and let the user know that the "--tag" command
-	# line option must be used.
-	if test -z "$tagname"; then
-	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
-#	else
-#	  func_verbose "using $tagname tagged configuration"
-	fi
-	;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
-    else
-      write_lobj=none
-    fi
-
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "${write_libobj}"
-    }
-}
-
-
-##################################################
-# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-##################################################
-
-# func_convert_core_file_wine_to_w32 ARG
-# Helper function used by file name conversion functions when $build is *nix,
-# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-# correctly configured wine environment available, with the winepath program
-# in $build's $PATH.
-#
-# ARG is the $build file name to be converted to w32 format.
-# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-# be empty on error (or when ARG is empty)
-func_convert_core_file_wine_to_w32 ()
-{
-  $opt_debug
-  func_convert_core_file_wine_to_w32_result="$1"
-  if test -n "$1"; then
-    # Unfortunately, winepath does not exit with a non-zero error code, so we
-    # are forced to check the contents of stdout. On the other hand, if the
-    # command is not found, the shell will set an exit code of 127 and print
-    # *an error message* to stdout. So we must check for both error code of
-    # zero AND non-empty stdout, which explains the odd construction:
-    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
-      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$lt_sed_naive_backslashify"`
-    else
-      func_convert_core_file_wine_to_w32_result=
-    fi
-  fi
-}
-# end: func_convert_core_file_wine_to_w32
-
-
-# func_convert_core_path_wine_to_w32 ARG
-# Helper function used by path conversion functions when $build is *nix, and
-# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-# configured wine environment available, with the winepath program in $build's
-# $PATH. Assumes ARG has no leading or trailing path separator characters.
-#
-# ARG is path to be converted from $build format to win32.
-# Result is available in $func_convert_core_path_wine_to_w32_result.
-# Unconvertible file (directory) names in ARG are skipped; if no directory names
-# are convertible, then the result may be empty.
-func_convert_core_path_wine_to_w32 ()
-{
-  $opt_debug
-  # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=""
-  if test -n "$1"; then
-    oldIFS=$IFS
-    IFS=:
-    for func_convert_core_path_wine_to_w32_f in $1; do
-      IFS=$oldIFS
-      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
-        if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
-        else
-          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
-        fi
-      fi
-    done
-    IFS=$oldIFS
-  fi
-}
-# end: func_convert_core_path_wine_to_w32
-
-
-# func_cygpath ARGS...
-# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-# (2), returns the Cygwin file name or path in func_cygpath_result (input
-# file name or path is assumed to be in w32 format, as previously converted
-# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-# or path in func_cygpath_result (input file name or path is assumed to be in
-# Cygwin format). Returns an empty string on error.
-#
-# ARGS are passed to cygpath, with the last one being the file name or path to
-# be converted.
-#
-# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-# environment variable; do not put it in $PATH.
-func_cygpath ()
-{
-  $opt_debug
-  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
-    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
-    if test "$?" -ne 0; then
-      # on failure, ensure result is empty
-      func_cygpath_result=
-    fi
-  else
-    func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
-  fi
-}
-#end: func_cygpath
-
-
-# func_convert_core_msys_to_w32 ARG
-# Convert file name or path ARG from MSYS format to w32 format.  Return
-# result in func_convert_core_msys_to_w32_result.
-func_convert_core_msys_to_w32 ()
-{
-  $opt_debug
-  # awkward: cmd appends spaces to result
-  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-}
-#end: func_convert_core_msys_to_w32
-
-
-# func_convert_file_check ARG1 ARG2
-# Verify that ARG1 (a file name in $build format) was converted to $host
-# format in ARG2. Otherwise, emit an error message, but continue (resetting
-# func_to_host_file_result to ARG1).
-func_convert_file_check ()
-{
-  $opt_debug
-  if test -z "$2" && test -n "$1" ; then
-    func_error "Could not determine host file name corresponding to"
-    func_error "  \`$1'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback:
-    func_to_host_file_result="$1"
-  fi
-}
-# end func_convert_file_check
-
-
-# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-# Verify that FROM_PATH (a path in $build format) was converted to $host
-# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-# func_to_host_file_result to a simplistic fallback value (see below).
-func_convert_path_check ()
-{
-  $opt_debug
-  if test -z "$4" && test -n "$3"; then
-    func_error "Could not determine the host path corresponding to"
-    func_error "  \`$3'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback.  This is a deliberately simplistic "conversion" and
-    # should not be "improved".  See libtool.info.
-    if test "x$1" != "x$2"; then
-      lt_replace_pathsep_chars="s|$1|$2|g"
-      func_to_host_path_result=`echo "$3" |
-        $SED -e "$lt_replace_pathsep_chars"`
-    else
-      func_to_host_path_result="$3"
-    fi
-  fi
-}
-# end func_convert_path_check
-
-
-# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-# and appending REPL if ORIG matches BACKPAT.
-func_convert_path_front_back_pathsep ()
-{
-  $opt_debug
-  case $4 in
-  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
-    ;;
-  esac
-  case $4 in
-  $2 ) func_append func_to_host_path_result "$3"
-    ;;
-  esac
-}
-# end func_convert_path_front_back_pathsep
-
-
-##################################################
-# $build to $host FILE NAME CONVERSION FUNCTIONS #
-##################################################
-# invoked via `$to_host_file_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# Result will be available in $func_to_host_file_result.
-
-
-# func_to_host_file ARG
-# Converts the file name ARG from $build format to $host format. Return result
-# in func_to_host_file_result.
-func_to_host_file ()
-{
-  $opt_debug
-  $to_host_file_cmd "$1"
-}
-# end func_to_host_file
-
-
-# func_to_tool_file ARG LAZY
-# converts the file name ARG from $build format to toolchain format. Return
-# result in func_to_tool_file_result.  If the conversion in use is listed
-# in (the comma separated) LAZY, no conversion takes place.
-func_to_tool_file ()
-{
-  $opt_debug
-  case ,$2, in
-    *,"$to_tool_file_cmd",*)
-      func_to_tool_file_result=$1
-      ;;
-    *)
-      $to_tool_file_cmd "$1"
-      func_to_tool_file_result=$func_to_host_file_result
-      ;;
-  esac
-}
-# end func_to_tool_file
-
-
-# func_convert_file_noop ARG
-# Copy ARG to func_to_host_file_result.
-func_convert_file_noop ()
-{
-  func_to_host_file_result="$1"
-}
-# end func_convert_file_noop
-
-
-# func_convert_file_msys_to_w32 ARG
-# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_file_result.
-func_convert_file_msys_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_w32
-
-
-# func_convert_file_cygwin_to_w32 ARG
-# Convert file name ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_file_cygwin_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
-    # LT_CYGPATH in this case.
-    func_to_host_file_result=`cygpath -m "$1"`
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_cygwin_to_w32
-
-
-# func_convert_file_nix_to_w32 ARG
-# Convert file name ARG from *nix to w32 format.  Requires a wine environment
-# and a working winepath. Returns result in func_to_host_file_result.
-func_convert_file_nix_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_w32
-
-
-# func_convert_file_msys_to_cygwin ARG
-# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_file_msys_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_cygwin
-
-
-# func_convert_file_nix_to_cygwin ARG
-# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
-# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
-# in func_to_host_file_result.
-func_convert_file_nix_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
-    func_convert_core_file_wine_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_cygwin
-
-
-#############################################
-# $build to $host PATH CONVERSION FUNCTIONS #
-#############################################
-# invoked via `$to_host_path_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# The result will be available in $func_to_host_path_result.
-#
-# Path separators are also converted from $build format to $host format.  If
-# ARG begins or ends with a path separator character, it is preserved (but
-# converted to $host format) on output.
-#
-# All path conversion functions are named using the following convention:
-#   file name conversion function    : func_convert_file_X_to_Y ()
-#   path conversion function         : func_convert_path_X_to_Y ()
-# where, for any given $build/$host combination the 'X_to_Y' value is the
-# same.  If conversion functions are added for new $build/$host combinations,
-# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-# will break.
-
-
-# func_init_to_host_path_cmd
-# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-# appropriate value, based on the value of $to_host_file_cmd.
-to_host_path_cmd=
-func_init_to_host_path_cmd ()
-{
-  $opt_debug
-  if test -z "$to_host_path_cmd"; then
-    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd="func_convert_path_${func_stripname_result}"
-  fi
-}
-
-
-# func_to_host_path ARG
-# Converts the path ARG from $build format to $host format. Return result
-# in func_to_host_path_result.
-func_to_host_path ()
-{
-  $opt_debug
-  func_init_to_host_path_cmd
-  $to_host_path_cmd "$1"
-}
-# end func_to_host_path
-
-
-# func_convert_path_noop ARG
-# Copy ARG to func_to_host_path_result.
-func_convert_path_noop ()
-{
-  func_to_host_path_result="$1"
-}
-# end func_convert_path_noop
-
-
-# func_convert_path_msys_to_w32 ARG
-# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_path_result.
-func_convert_path_msys_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from ARG.  MSYS
-    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
-    # and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_msys_to_w32
-
-
-# func_convert_path_cygwin_to_w32 ARG
-# Convert path ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_path_cygwin_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_cygwin_to_w32
-
-
-# func_convert_path_nix_to_w32 ARG
-# Convert path ARG from *nix to w32 format.  Requires a wine environment and
-# a working winepath.  Returns result in func_to_host_file_result.
-func_convert_path_nix_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_nix_to_w32
-
-
-# func_convert_path_msys_to_cygwin ARG
-# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_path_msys_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_msys_to_cygwin
-
-
-# func_convert_path_nix_to_cygwin ARG
-# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
-# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
-# func_to_host_file_result.
-func_convert_path_nix_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from
-    # ARG. msys behavior is inconsistent here, cygpath turns them
-    # into '.;' and ';.', and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_nix_to_cygwin
-
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $opt_debug
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
-	arg_mode=normal
-	;;
-
-      target )
-	libobj="$arg"
-	arg_mode=normal
-	continue
-	;;
-
-      normal )
-	# Accept any command-line options.
-	case $arg in
-	-o)
-	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
-	  arg_mode=target
-	  continue
-	  ;;
-
-	-pie | -fpie | -fPIE)
-          func_append pie_flag " $arg"
-	  continue
-	  ;;
-
-	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  func_append later " $arg"
-	  continue
-	  ;;
-
-	-no-suppress)
-	  suppress_opt=no
-	  continue
-	  ;;
-
-	-Xcompiler)
-	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
-	  continue      #  The current "srcfile" will either be retained or
-	  ;;            #  replaced later.  I would guess that would be a bug.
-
-	-Wc,*)
-	  func_stripname '-Wc,' '' "$arg"
-	  args=$func_stripname_result
-	  lastarg=
-	  save_ifs="$IFS"; IFS=','
-	  for arg in $args; do
-	    IFS="$save_ifs"
-	    func_append_quoted lastarg "$arg"
-	  done
-	  IFS="$save_ifs"
-	  func_stripname ' ' '' "$lastarg"
-	  lastarg=$func_stripname_result
-
-	  # Add the arguments to base_compile.
-	  func_append base_compile " $lastarg"
-	  continue
-	  ;;
-
-	*)
-	  # Accept the current argument as the source file.
-	  # The previous "srcfile" becomes the current argument.
-	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
-	  ;;
-	esac  #  case $arg
-	;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_append_quoted base_compile "$lastarg"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with \`-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-	func_basename "$srcfile"
-	libobj="$func_basename_result"
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	continue
-	;;
-
-      -static)
-	build_libtool_libs=no
-	build_old_libs=yes
-	continue
-	;;
-
-      -prefer-pic)
-	pic_mode=yes
-	continue
-	;;
-
-      -prefer-non-pic)
-	pic_mode=no
-	continue
-	;;
-      esac
-    done
-
-    func_quote_for_eval "$libobj"
-    test "X$libobj" != "X$func_quote_for_eval_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    elif test "$need_locks" = warn; then
-      if test -f "$lockfile"; then
-	$ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-      func_append removelist " $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    func_append removelist " $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
-    srcfile=$func_to_tool_file_result
-    func_quote_for_eval "$srcfile"
-    qsrcfile=$func_quote_for_eval_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test "$pic_mode" != no; then
-	command="$base_compile $qsrcfile $pic_flag"
-      else
-	# Don't build PIC code
-	command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-	# Place PIC objects in $objdir
-	func_append command " -o $lobj"
-      fi
-
-      func_show_eval_locale "$command"	\
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-	func_show_eval '$MV "$output_obj" "$lobj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
-	suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
-	# Don't build PIC code
-	command="$base_compile $qsrcfile$pie_flag"
-      else
-	command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test "$compiler_c_o" = yes; then
-	func_append command " -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      func_append command "$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-	func_show_eval '$MV "$output_obj" "$obj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
-	removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $opt_mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to build PIC objects only
-  -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
-  -Wc,FLAG          pass FLAG directly to the compiler
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -bindir BINDIR    specify path to binaries directory (for systems where
-                    libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-  -Wc,FLAG
-  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
-  -Wl,FLAG
-  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
-  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode \`$opt_mode'"
-        ;;
-    esac
-
-    echo
-    $ECHO "Try \`$progname --help' for more information about other modes."
-}
-
-# Now that we've collected a possible --mode arg, show help if necessary
-if $opt_help; then
-  if test "$opt_help" = :; then
-    func_mode_help
-  else
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-	func_mode_help
-      done
-    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-	echo
-	func_mode_help
-      done
-    } |
-    sed '1d
-      /^When reporting/,/^Report/{
-	H
-	d
-      }
-      $x
-      /information about other modes/d
-      /more detailed .*MODE/d
-      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
-  fi
-  exit $?
-fi
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $opt_debug
-    # The first argument is the command name.
-    cmd="$nonopt"
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $opt_dlopen; do
-      test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-	func_resolve_sysroot "$file"
-	file=$func_resolve_sysroot_result
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
-
-	# Read the libtool library.
-	dlname=
-	library_names=
-	func_source "$file"
-
-	# Skip this library if it cannot be dlopened.
-	if test -z "$dlname"; then
-	  # Warn if it was a shared library.
-	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
-	  continue
-	fi
-
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-
-	if test -f "$dir/$objdir/$dlname"; then
-	  func_append dir "/$objdir"
-	else
-	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-	  fi
-	fi
-	;;
-
-      *.lo)
-	# Just add the directory containing the .lo file.
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-	;;
-
-      *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
-	continue
-	;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-	eval "$shlibpath_var=\"\$dir\""
-      else
-	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -* | *.la | *.lo ) ;;
-      *)
-	# Do a test to see if this is really a libtool program.
-	if func_ltwrapper_script_p "$file"; then
-	  func_source "$file"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	elif func_ltwrapper_executable_p "$file"; then
-	  func_ltwrapper_scriptname "$file"
-	  func_source "$func_ltwrapper_scriptname_result"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	fi
-	;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_append_quoted args "$file"
-    done
-
-    if test "X$opt_dry_run" = Xfalse; then
-      if test -n "$shlibpath_var"; then
-	# Export the shlibpath_var.
-	eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-	eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-	      else
-		$lt_unset $lt_var
-	      fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $opt_debug
-    libs=
-    libdirs=
-    admincmds=
-
-    for opt in "$nonopt" ${1+"$@"}
-    do
-      if test -d "$opt"; then
-	func_append libdirs " $opt"
-
-      elif test -f "$opt"; then
-	if func_lalib_unsafe_p "$opt"; then
-	  func_append libs " $opt"
-	else
-	  func_warning "\`$opt' is not a valid libtool archive"
-	fi
-
-      else
-	func_fatal_error "invalid argument \`$opt'"
-      fi
-    done
-
-    if test -n "$libs"; then
-      if test -n "$lt_sysroot"; then
-        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
-        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
-      else
-        sysroot_cmd=
-      fi
-
-      # Remove sysroot references
-      if $opt_dry_run; then
-        for lib in $libs; do
-          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
-        done
-      else
-        tmpdir=`func_mktempdir`
-        for lib in $libs; do
-	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
-	    > $tmpdir/tmp-la
-	  mv -f $tmpdir/tmp-la $lib
-	done
-        ${RM}r "$tmpdir"
-      fi
-    fi
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for libdir in $libdirs; do
-	if test -n "$finish_cmds"; then
-	  # Do each command in the finish commands.
-	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-	fi
-	if test -n "$finish_eval"; then
-	  # Do the single finish_eval.
-	  eval cmds=\"$finish_eval\"
-	  $opt_dry_run || eval "$cmds" || func_append admincmds "
-       $cmds"
-	fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      echo "----------------------------------------------------------------------"
-      echo "Libraries have been installed in:"
-      for libdir in $libdirs; do
-	$ECHO "   $libdir"
-      done
-      echo
-      echo "If you ever happen to want to link against installed libraries"
-      echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
-      echo "flag during linking and do at least one of the following:"
-      if test -n "$shlibpath_var"; then
-	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-	echo "     during execution"
-      fi
-      if test -n "$runpath_var"; then
-	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
-	echo "     during linking"
-      fi
-      if test -n "$hardcode_libdir_flag_spec"; then
-	libdir=LIBDIR
-	eval flag=\"$hardcode_libdir_flag_spec\"
-
-	$ECHO "   - use the \`$flag' linker flag"
-      fi
-      if test -n "$admincmds"; then
-	$ECHO "   - have your system administrator run these commands:$admincmds"
-      fi
-      if test -f /etc/ld.so.conf; then
-	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-      fi
-      echo
-
-      echo "See any operating system documentation about shared libraries for"
-      case $host in
-	solaris2.[6789]|solaris2.1[0-9])
-	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-	  echo "pages."
-	  ;;
-	*)
-	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
-	  ;;
-      esac
-      echo "----------------------------------------------------------------------"
-    fi
-    exit $EXIT_SUCCESS
-}
-
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $opt_debug
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-       # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac; then
-      # Aesthetically quote it.
-      func_quote_for_eval "$nonopt"
-      install_prog="$func_quote_for_eval_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_for_eval "$arg"
-    func_append install_prog "$func_quote_for_eval_result"
-    install_shared_prog=$install_prog
-    case " $install_prog " in
-      *[\\\ /]cp\ *) install_cp=: ;;
-      *) install_cp=false ;;
-    esac
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    no_mode=:
-    for arg
-    do
-      arg2=
-      if test -n "$dest"; then
-	func_append files " $dest"
-	dest=$arg
-	continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f)
-	if $install_cp; then :; else
-	  prev=$arg
-	fi
-	;;
-      -g | -m | -o)
-	prev=$arg
-	;;
-      -s)
-	stripme=" -s"
-	continue
-	;;
-      -*)
-	;;
-      *)
-	# If the previous option needed an argument, then skip it.
-	if test -n "$prev"; then
-	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
-	    arg2=$install_override_mode
-	    no_mode=false
-	  fi
-	  prev=
-	else
-	  dest=$arg
-	  continue
-	fi
-	;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      func_append install_prog " $func_quote_for_eval_result"
-      if test -n "$arg2"; then
-	func_quote_for_eval "$arg2"
-      fi
-      func_append install_shared_prog " $func_quote_for_eval_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
-
-    if test -n "$install_override_mode" && $no_mode; then
-      if $install_cp; then :; else
-	func_quote_for_eval "$install_override_mode"
-	func_append install_shared_prog " -m $func_quote_for_eval_result"
-      fi
-    fi
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-	func_fatal_help "no file or destination specified"
-      else
-	func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-	case $file in
-	*.lo) ;;
-	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
-	  ;;
-	esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-	# Do the static libraries later.
-	func_append staticlibs " $file"
-	;;
-
-      *.la)
-	func_resolve_sysroot "$file"
-	file=$func_resolve_sysroot_result
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
-
-	library_names=
-	old_library=
-	relink_command=
-	func_source "$file"
-
-	# Add the libdir to current_libdirs if it is the destination.
-	if test "X$destdir" = "X$libdir"; then
-	  case "$current_libdirs " in
-	  *" $libdir "*) ;;
-	  *) func_append current_libdirs " $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) func_append future_libdirs " $libdir" ;;
-	  esac
-	fi
-
-	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	func_append dir "$objdir"
-
-	if test -n "$relink_command"; then
-	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-
-	  # Don't allow the user to place us outside of our expected
-	  # location b/c this prevents finding dependent libraries that
-	  # are installed to the same prefix.
-	  # At present, this check doesn't affect windows .dll's that
-	  # are installed into $libdir/../bin (currently, that works fine)
-	  # but it's something to keep an eye on.
-	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
-	  if test -n "$inst_prefix_dir"; then
-	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-	  else
-	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
-	  fi
-
-	  func_warning "relinking \`$file'"
-	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
-	fi
-
-	# See the names of the shared library.
-	set dummy $library_names; shift
-	if test -n "$1"; then
-	  realname="$1"
-	  shift
-
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
-
-	  # Install the shared library and build the symlinks.
-	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
-	      'exit $?'
-	  tstripme="$stripme"
-	  case $host_os in
-	  cygwin* | mingw* | pw32* | cegcc*)
-	    case $realname in
-	    *.dll.a)
-	      tstripme=""
-	      ;;
-	    esac
-	    ;;
-	  esac
-	  if test -n "$tstripme" && test -n "$striplib"; then
-	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
-	  fi
-
-	  if test "$#" -gt 0; then
-	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
-	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
-	    # so we also need to try rm && ln -s.
-	    for linkname
-	    do
-	      test "$linkname" != "$realname" \
-		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-	    done
-	  fi
-
-	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
-	  func_execute_cmds "$postinstall_cmds" 'exit $?'
-	fi
-
-	# Install the pseudo-library for information purposes.
-	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
-	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-	# Maybe install the static library, too.
-	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
-	;;
-
-      *.lo)
-	# Install (i.e. copy) a libtool object.
-
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# Deduce the name of the destination old-style object file.
-	case $destfile in
-	*.lo)
-	  func_lo2o "$destfile"
-	  staticdest=$func_lo2o_result
-	  ;;
-	*.$objext)
-	  staticdest="$destfile"
-	  destfile=
-	  ;;
-	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
-	  ;;
-	esac
-
-	# Install the libtool object if requested.
-	test -n "$destfile" && \
-	  func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
-	  # Deduce the name of the old-style object file.
-	  func_lo2o "$file"
-	  staticobj=$func_lo2o_result
-	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-	fi
-	exit $EXIT_SUCCESS
-	;;
-
-      *)
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# If the file is missing, and there is a .exe on the end, strip it
-	# because it is most likely a libtool script we actually want to
-	# install
-	stripped_ext=""
-	case $file in
-	  *.exe)
-	    if test ! -f "$file"; then
-	      func_stripname '' '.exe' "$file"
-	      file=$func_stripname_result
-	      stripped_ext=".exe"
-	    fi
-	    ;;
-	esac
-
-	# Do a test to see if this is really a libtool program.
-	case $host in
-	*cygwin* | *mingw*)
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      wrapper=$func_ltwrapper_scriptname_result
-	    else
-	      func_stripname '' '.exe' "$file"
-	      wrapper=$func_stripname_result
-	    fi
-	    ;;
-	*)
-	    wrapper=$file
-	    ;;
-	esac
-	if func_ltwrapper_script_p "$wrapper"; then
-	  notinst_deplibs=
-	  relink_command=
-
-	  func_source "$wrapper"
-
-	  # Check the variables that should have been set.
-	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
-	  finalize=yes
-	  for lib in $notinst_deplibs; do
-	    # Check to see that each library is installed.
-	    libdir=
-	    if test -f "$lib"; then
-	      func_source "$lib"
-	    fi
-	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
-	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
-	    fi
-	  done
-
-	  relink_command=
-	  func_source "$wrapper"
-
-	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
-	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
-	        tmpdir=`func_mktempdir`
-		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
-	        # Replace the output file specification.
-	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
-
-	        $opt_silent || {
-	          func_quote_for_expand "$relink_command"
-		  eval "func_echo $func_quote_for_expand_result"
-	        }
-	        if eval "$relink_command"; then :
-	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
-		  $opt_dry_run || ${RM}r "$tmpdir"
-		  continue
-	        fi
-	        file="$outputname"
-	      else
-	        func_warning "cannot relink \`$file'"
-	      fi
-	    }
-	  else
-	    # Install the binary that we compiled earlier.
-	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
-	  fi
-	fi
-
-	# remove .exe since cygwin /usr/bin/install will append another
-	# one anyway
-	case $install_prog,$host in
-	*/usr/bin/install*,*cygwin*)
-	  case $file:$destfile in
-	  *.exe:*.exe)
-	    # this is ok
-	    ;;
-	  *.exe:*)
-	    destfile=$destfile.exe
-	    ;;
-	  *:*.exe)
-	    func_stripname '' '.exe' "$destfile"
-	    destfile=$func_stripname_result
-	    ;;
-	  esac
-	  ;;
-	esac
-	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-	$opt_dry_run || if test -n "$outputname"; then
-	  ${RM}r "$tmpdir"
-	fi
-	;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name="$func_basename_result"
-
-      # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
-      else
-	func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
-
-	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-	# Parse the name list into a source file.
-	func_verbose "creating $output_objdir/$my_dlsyms"
-
-	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
-#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
-#endif
-
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
-
-	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-	  # Add our own program objects to the symbol list.
-	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	  for progfile in $progfiles; do
-	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
-	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
-	  done
-
-	  if test -n "$exclude_expsyms"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  if test -n "$export_symbols_regex"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  # Prepare the list of exported symbols
-	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
-	    $opt_dry_run || {
-	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-	      case $host in
-	      *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-	        ;;
-	      esac
-	    }
-	  else
-	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	      case $host in
-	        *cygwin* | *mingw* | *cegcc* )
-	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-	          ;;
-	      esac
-	    }
-	  fi
-	fi
-
-	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
-	  func_basename "$dlprefile"
-	  name="$func_basename_result"
-          case $host in
-	    *cygwin* | *mingw* | *cegcc* )
-	      # if an import library, we need to obtain dlname
-	      if func_win32_import_lib_p "$dlprefile"; then
-	        func_tr_sh "$dlprefile"
-	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
-	        dlprefile_dlbasename=""
-	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
-	          # Use subshell, to avoid clobbering current variable values
-	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-	          if test -n "$dlprefile_dlname" ; then
-	            func_basename "$dlprefile_dlname"
-	            dlprefile_dlbasename="$func_basename_result"
-	          else
-	            # no lafile. user explicitly requested -dlpreopen <import library>.
-	            $sharedlib_from_linklib_cmd "$dlprefile"
-	            dlprefile_dlbasename=$sharedlib_from_linklib_result
-	          fi
-	        fi
-	        $opt_dry_run || {
-	          if test -n "$dlprefile_dlbasename" ; then
-	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
-	          else
-	            func_warning "Could not compute DLL name from $name"
-	            eval '$ECHO ": $name " >> "$nlist"'
-	          fi
-	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
-	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
-	        }
-	      else # not an import lib
-	        $opt_dry_run || {
-	          eval '$ECHO ": $name " >> "$nlist"'
-	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	        }
-	      fi
-	    ;;
-	    *)
-	      $opt_dry_run || {
-	        eval '$ECHO ": $name " >> "$nlist"'
-	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	      }
-	    ;;
-          esac
-	done
-
-	$opt_dry_run || {
-	  # Make sure we have at least an empty file.
-	  test -f "$nlist" || : > "$nlist"
-
-	  if test -n "$exclude_expsyms"; then
-	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-	    $MV "$nlist"T "$nlist"
-	  fi
-
-	  # Try sorting and uniquifying the output.
-	  if $GREP -v "^: " < "$nlist" |
-	      if sort -k 3 </dev/null >/dev/null 2>&1; then
-		sort -k 3
-	      else
-		sort +2
-	      fi |
-	      uniq > "$nlist"S; then
-	    :
-	  else
-	    $GREP -v "^: " < "$nlist" > "$nlist"S
-	  fi
-
-	  if test -f "$nlist"S; then
-	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-	  else
-	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
-	  fi
-
-	  echo >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
-
-	  case $need_lib_prefix in
-	  no)
-	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  *)
-	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  esac
-	  echo >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-	} # !$opt_dry_run
-
-	pic_flag_for_symtable=
-	case "$compile_command " in
-	*" -static "*) ;;
-	*)
-	  case $host in
-	  # compiling the symbol table file with pic_flag works around
-	  # a FreeBSD bug that causes programs to crash when -lm is
-	  # linked before any other PIC object.  But we must not use
-	  # pic_flag when linking with -static.  The problem exists in
-	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-	  *-*-hpux*)
-	    pic_flag_for_symtable=" $pic_flag"  ;;
-	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
-	    ;;
-	  esac
-	  ;;
-	esac
-	symtab_cflags=
-	for arg in $LTCFLAGS; do
-	  case $arg in
-	  -pie | -fpie | -fPIE) ;;
-	  *) func_append symtab_cflags " $arg" ;;
-	  esac
-	done
-
-	# Now compile the dynamic symbol file.
-	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
-	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
-	case $host in
-	*cygwin* | *mingw* | *cegcc* )
-	  if test -f "$output_objdir/$my_outputname.def"; then
-	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	  else
-	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  fi
-	  ;;
-	*)
-	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  ;;
-	esac
-	;;
-      *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
-	;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-# Despite the name, also deal with 64 bit binaries.
-func_win32_libid ()
-{
-  $opt_debug
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      func_to_tool_file "$1" func_convert_file_msys_to_w32
-      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-	$SED -n -e '
-	    1,100{
-		/ I /{
-		    s,.*,import,
-		    p
-		    q
-		}
-	    }'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-# func_cygming_dll_for_implib ARG
-#
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib ()
-{
-  $opt_debug
-  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-}
-
-# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-#
-# The is the core of a fallback implementation of a
-# platform-specific function to extract the name of the
-# DLL associated with the specified import library LIBNAME.
-#
-# SECTION_NAME is either .idata$6 or .idata$7, depending
-# on the platform and compiler that created the implib.
-#
-# Echos the name of the DLL associated with the
-# specified import library.
-func_cygming_dll_for_implib_fallback_core ()
-{
-  $opt_debug
-  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
-  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
-    $SED '/^Contents of section '"$match_literal"':/{
-      # Place marker at beginning of archive member dllname section
-      s/.*/====MARK====/
-      p
-      d
-    }
-    # These lines can sometimes be longer than 43 characters, but
-    # are always uninteresting
-    /:[	 ]*file format pe[i]\{,1\}-/d
-    /^In archive [^:]*:/d
-    # Ensure marker is printed
-    /^====MARK====/p
-    # Remove all lines with less than 43 characters
-    /^.\{43\}/!d
-    # From remaining lines, remove first 43 characters
-    s/^.\{43\}//' |
-    $SED -n '
-      # Join marker and all lines until next marker into a single line
-      /^====MARK====/ b para
-      H
-      $ b para
-      b
-      :para
-      x
-      s/\n//g
-      # Remove the marker
-      s/^====MARK====//
-      # Remove trailing dots and whitespace
-      s/[\. \t]*$//
-      # Print
-      /./p' |
-    # we now have a list, one entry per line, of the stringified
-    # contents of the appropriate section of all members of the
-    # archive which possess that section. Heuristic: eliminate
-    # all those which have a first or second character that is
-    # a '.' (that is, objdump's representation of an unprintable
-    # character.) This should work for all archives with less than
-    # 0x302f exports -- but will fail for DLLs whose name actually
-    # begins with a literal '.' or a single character followed by
-    # a '.'.
-    #
-    # Of those that remain, print the first one.
-    $SED -e '/^\./d;/^.\./d;q'
-}
-
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
-# func_cygming_dll_for_implib_fallback ARG
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-#
-# This fallback implementation is for use when $DLLTOOL
-# does not support the --identify-strict option.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib_fallback ()
-{
-  $opt_debug
-  if func_cygming_gnu_implib_p "$1" ; then
-    # binutils import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1" ; then
-    # ms-generated import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
-  else
-    # unknown
-    sharedlib_from_linklib_result=""
-  fi
-}
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    if test "$lock_old_archive_extraction" = yes; then
-      lockfile=$f_ex_an_ar_oldlib.lock
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    fi
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
-		   'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test "$lock_old_archive_extraction" = yes; then
-      $opt_dry_run || rm -f "$lockfile"
-    fi
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $opt_debug
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-	*) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-	*" $my_xlib_u "*)
-	  func_arith $extracted_serial + 1
-	  extracted_serial=$func_arith_result
-	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
-	*) break ;;
-	esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-	func_verbose "Extracting $my_xabs"
-	# Do not bother doing anything if just a dry run
-	$opt_dry_run || {
-	  darwin_orig_dir=`pwd`
-	  cd $my_xdir || exit $?
-	  darwin_archive=$my_xabs
-	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
-	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-	  if test -n "$darwin_arches"; then
-	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-	    darwin_arch=
-	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-	    done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
-	    darwin_file=
-	    darwin_files=
-	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
-	      $LIPO -create -output "$darwin_file" $darwin_files
-	    done # $darwin_filelist
-	    $RM -rf unfat-$$
-	    cd "$darwin_orig_dir"
-	  else
-	    cd $darwin_orig_dir
-	    func_extract_an_archive "$my_xdir" "$my_xabs"
-	  fi # $darwin_arches
-	} # !$opt_dry_run
-	;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-	;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
-    done
-
-    func_extract_archives_result="$my_oldobjs"
-}
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-	func_emit_wrapper_arg1=${1-no}
-
-	$ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    file=\"\$0\""
-
-    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
-    $ECHO "\
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-    ECHO=\"$qECHO\"
-  fi
-
-# Very basic option parsing. These options are (a) specific to
-# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
-# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
-# this pattern).
-#
-# There are only two supported options: --lt-debug and
-# --lt-dump-script. There is, deliberately, no --lt-help.
-#
-# The first argument to this parsing function should be the
-# script's $0 value, followed by "$@".
-lt_option_debug=
-func_parse_lt_options ()
-{
-  lt_script_arg0=\$0
-  shift
-  for lt_opt
-  do
-    case \"\$lt_opt\" in
-    --lt-debug) lt_option_debug=1 ;;
-    --lt-dump-script)
-        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
-        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
-        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
-        cat \"\$lt_dump_D/\$lt_dump_F\"
-        exit 0
-      ;;
-    --lt-*)
-        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
-        exit 1
-      ;;
-    esac
-  done
-
-  # Print the debug banner immediately:
-  if test -n \"\$lt_option_debug\"; then
-    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
-  fi
-}
-
-# Used when --lt-debug. Prints its arguments to stdout
-# (redirection is the responsibility of the caller)
-func_lt_dump_args ()
-{
-  lt_dump_args_N=1;
-  for lt_arg
-  do
-    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
-    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
-  done
-}
-
-# Core function for launching the target application
-func_exec_program_core ()
-{
-"
-  case $host in
-  # Backslashes separate directories on plain windows
-  *-*-mingw | *-*-os2* | *-cegcc*)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-    ;;
-
-  *)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-    ;;
-  esac
-  $ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-}
-
-# A function to encapsulate launching the target application
-# Strips options in the --lt-* namespace from \$@ and
-# launches target application with the remaining arguments.
-func_exec_program ()
-{
-  for lt_wr_arg
-  do
-    case \$lt_wr_arg in
-    --lt-*) ;;
-    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-    esac
-    shift
-  done
-  func_exec_program_core \${1+\"\$@\"}
-}
-
-  # Parse options
-  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
-  done
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-	if test "$fast_install" = yes; then
-	  $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-	  $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-	$ECHO \"\$relink_command_output\" >&2
-	$RM \"\$progdir/\$file\"
-	exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-	else
-	  $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-	fi
-
-	$ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-	# fixup the dll searchpath if we need to.
-	#
-	# Fix the DLL searchpath if we need to.  Do this before prepending
-	# to shlibpath, because on Windows, both are PATH and uninstalled
-	# libraries must come first.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
-	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-	  $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-	fi
-
-	$ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-      func_exec_program \${1+\"\$@\"}
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-	cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-*/
-EOF
-	    cat <<"EOF"
-#ifdef _MSC_VER
-# define _CRT_SECURE_NO_DEPRECATE 1
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-/* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
-# ifdef __STRICT_ANSI__
-int _putenv (const char *);
-# endif
-#elif defined(__CYGWIN__)
-# ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-# endif
-/* #elif defined (other platforms) ... */
-#endif
-
-/* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-# define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-#  define _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#elif defined(__MINGW32__)
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-#elif defined(__CYGWIN__)
-# define HAVE_SETENV
-# define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
-#endif
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-/* path handling portability macros */
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#if defined(LT_DEBUGWRAPPER)
-static int lt_debug = 1;
-#else
-static int lt_debug = 0;
-#endif
-
-const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-void lt_fatal (const char *file, int line, const char *message, ...);
-static const char *nonnull (const char *s);
-static const char *nonempty (const char *s);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-char **prepare_spawn (char **argv);
-void lt_dump_script (FILE *f);
-EOF
-
-	    cat <<EOF
-volatile const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_path "$temp_rpath"
-	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test -n "$dllsearchpath"; then
-              func_to_host_path "$dllsearchpath:"
-	      cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test "$fast_install" = yes; then
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-	    else
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-	    fi
-
-
-	    cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  intptr_t rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, argc + 1);
-
-  /* very simple arg parsing; don't want to rely on getopt
-   * also, copy all non cwrapper options to newargz, except
-   * argz[0], which is handled differently
-   */
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
-	{
-EOF
-	    case "$host" in
-	      *mingw* | *cygwin* )
-		# make stdout use "unix" line endings
-		echo "          setmode(1,_O_BINARY);"
-		;;
-	      esac
-
-	    cat <<"EOF"
-	  lt_dump_script (stdout);
-	  return 0;
-	}
-      if (strcmp (argv[i], debug_opt) == 0)
-	{
-          lt_debug = 1;
-          continue;
-	}
-      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal (__FILE__, __LINE__,
-		    "unrecognized %s option: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-EOF
-	    cat <<EOF
-  /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
-EOF
-	    cat <<"EOF"
-  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (before symlink chase) at: %s\n",
-		  tmp_pathspec);
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (after symlink chase) at: %s\n",
-		  actual_cwrapper_path);
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(main) libtool target name: %s\n",
-		  target_name);
-EOF
-
-	    cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-	    cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-	    case $host_os in
-	      mingw*)
-	    cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-	*p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-	*p = '/';
-      }
-  }
-EOF
-	    ;;
-	    esac
-
-	    cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
-     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
-     because on Windows, both *_VARNAMEs are PATH but uninstalled
-     libraries must come first. */
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-
-  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
-		  nonnull (lt_argv_zero));
-  for (i = 0; i < newargc; i++)
-    {
-      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
-		      i, nonnull (newargz[i]));
-    }
-
-EOF
-
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  newargz = prepare_spawn (newargz);
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      lt_debugprintf (__FILE__, __LINE__,
-		      "(main) failed to launch target \"%s\": %s\n",
-		      lt_argv_zero, nonnull (strerror (errno)));
-      return 127;
-    }
-  return rval;
-EOF
-		;;
-	      *)
-		cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-		;;
-	    esac
-
-	    cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal (__FILE__, __LINE__, "memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-			  string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char *concat_name;
-
-  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
-                  nonempty (wrapper));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-	return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-	{
-	  concat_name = xstrdup (wrapper);
-	  if (check_executable (concat_name))
-	    return concat_name;
-	  XFREE (concat_name);
-	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-	has_slash = 1;
-	break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-	{
-	  for (p = path; *p; p = p_next)
-	    {
-	      const char *q;
-	      size_t p_len;
-	      for (q = p; *q; q++)
-		if (IS_PATH_SEPARATOR (*q))
-		  break;
-	      p_len = q - p;
-	      p_next = (*q == '\0' ? q : q + 1);
-	      if (p_len == 0)
-		{
-		  /* empty path: current directory */
-		  if (getcwd (tmp, LT_PATHMAX) == NULL)
-		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-                              nonnull (strerror (errno)));
-		  tmp_len = strlen (tmp);
-		  concat_name =
-		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, tmp, tmp_len);
-		  concat_name[tmp_len] = '/';
-		  strcpy (concat_name + tmp_len + 1, wrapper);
-		}
-	      else
-		{
-		  concat_name =
-		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, p, p_len);
-		  concat_name[p_len] = '/';
-		  strcpy (concat_name + p_len + 1, wrapper);
-		}
-	      if (check_executable (concat_name))
-		return concat_name;
-	      XFREE (concat_name);
-	    }
-	}
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-              nonnull (strerror (errno)));
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      lt_debugprintf (__FILE__, __LINE__,
-		      "checking path component for symlinks: %s\n",
-		      tmp_pathspec);
-      if (lstat (tmp_pathspec, &s) == 0)
-	{
-	  if (S_ISLNK (s.st_mode) != 0)
-	    {
-	      has_symlinks = 1;
-	      break;
-	    }
-
-	  /* search backwards for last DIR_SEPARATOR */
-	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    p--;
-	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    {
-	      /* no more DIR_SEPARATORS left */
-	      break;
-	    }
-	  *p = '\0';
-	}
-      else
-	{
-	  lt_fatal (__FILE__, __LINE__,
-		    "error accessing file \"%s\": %s",
-		    tmp_pathspec, nonnull (strerror (errno)));
-	}
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal (__FILE__, __LINE__,
-		"could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (strcmp (str, pat) == 0)
-	*str = '\0';
-    }
-  return str;
-}
-
-void
-lt_debugprintf (const char *file, int line, const char *fmt, ...)
-{
-  va_list args;
-  if (lt_debug)
-    {
-      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
-      va_start (args, fmt);
-      (void) vfprintf (stderr, fmt, args);
-      va_end (args);
-    }
-}
-
-static void
-lt_error_core (int exit_status, const char *file,
-	       int line, const char *mode,
-	       const char *message, va_list ap)
-{
-  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *file, int line, const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
-  va_end (ap);
-}
-
-static const char *
-nonnull (const char *s)
-{
-  return s ? s : "(null)";
-}
-
-static const char *
-nonempty (const char *s)
-{
-  return (s && !*s) ? "(empty)" : nonnull (s);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_setenv) setting '%s' to '%s'\n",
-                  nonnull (name), nonnull (value));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    int len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[len-1] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-EOF
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-
-/* Prepares an argument vector before calling spawn().
-   Note that spawn() does not by itself call the command interpreter
-     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
-      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-         GetVersionEx(&v);
-         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
-      }) ? "cmd.exe" : "command.com").
-   Instead it simply concatenates the arguments, separated by ' ', and calls
-   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
-   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
-   special way:
-   - Space and tab are interpreted as delimiters. They are not treated as
-     delimiters if they are surrounded by double quotes: "...".
-   - Unescaped double quotes are removed from the input. Their only effect is
-     that within double quotes, space and tab are treated like normal
-     characters.
-   - Backslashes not followed by double quotes are not special.
-   - But 2*n+1 backslashes followed by a double quote become
-     n backslashes followed by a double quote (n >= 0):
-       \" -> "
-       \\\" -> \"
-       \\\\\" -> \\"
- */
-#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-char **
-prepare_spawn (char **argv)
-{
-  size_t argc;
-  char **new_argv;
-  size_t i;
-
-  /* Count number of arguments.  */
-  for (argc = 0; argv[argc] != NULL; argc++)
-    ;
-
-  /* Allocate new argument vector.  */
-  new_argv = XMALLOC (char *, argc + 1);
-
-  /* Put quoted arguments into the new argument vector.  */
-  for (i = 0; i < argc; i++)
-    {
-      const char *string = argv[i];
-
-      if (string[0] == '\0')
-	new_argv[i] = xstrdup ("\"\"");
-      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
-	{
-	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
-	  size_t length;
-	  unsigned int backslashes;
-	  const char *s;
-	  char *quoted_string;
-	  char *p;
-
-	  length = 0;
-	  backslashes = 0;
-	  if (quote_around)
-	    length++;
-	  for (s = string; *s != '\0'; s++)
-	    {
-	      char c = *s;
-	      if (c == '"')
-		length += backslashes + 1;
-	      length++;
-	      if (c == '\\')
-		backslashes++;
-	      else
-		backslashes = 0;
-	    }
-	  if (quote_around)
-	    length += backslashes + 1;
-
-	  quoted_string = XMALLOC (char, length + 1);
-
-	  p = quoted_string;
-	  backslashes = 0;
-	  if (quote_around)
-	    *p++ = '"';
-	  for (s = string; *s != '\0'; s++)
-	    {
-	      char c = *s;
-	      if (c == '"')
-		{
-		  unsigned int j;
-		  for (j = backslashes + 1; j > 0; j--)
-		    *p++ = '\\';
-		}
-	      *p++ = c;
-	      if (c == '\\')
-		backslashes++;
-	      else
-		backslashes = 0;
-	    }
-	  if (quote_around)
-	    {
-	      unsigned int j;
-	      for (j = backslashes; j > 0; j--)
-		*p++ = '\\';
-	      *p++ = '"';
-	    }
-	  *p = '\0';
-
-	  new_argv[i] = quoted_string;
-	}
-      else
-	new_argv[i] = (char *) string;
-    }
-  new_argv[argc] = NULL;
-
-  return new_argv;
-}
-EOF
-		;;
-	    esac
-
-            cat <<"EOF"
-void lt_dump_script (FILE* f)
-{
-EOF
-	    func_emit_wrapper yes |
-              $SED -e 's/\([\\"]\)/\\\1/g' \
-	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
-
-            cat <<"EOF"
-}
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_win32_import_lib_p ARG
-# True if ARG is an import lib, as indicated by $file_magic_cmd
-func_win32_import_lib_p ()
-{
-    $opt_debug
-    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
-    *import*) : ;;
-    *) false ;;
-    esac
-}
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $opt_debug
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    bindir=
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=no
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module="${wl}-single_module"
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	break
-	;;
-      -all-static | -static | -static-libtool-libs)
-	case $arg in
-	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-	    func_warning "complete static linking is impossible in this configuration"
-	  fi
-	  if test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	-static)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=built
-	  ;;
-	-static-libtool-libs)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	esac
-	build_libtool_libs=no
-	build_old_libs=yes
-	break
-	;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg="$1"
-      shift
-      func_quote_for_eval "$arg"
-      qarg=$func_quote_for_eval_unquoted_result
-      func_append libtool_args " $func_quote_for_eval_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-	case $prev in
-	output)
-	  func_append compile_command " @OUTPUT@"
-	  func_append finalize_command " @OUTPUT@"
-	  ;;
-	esac
-
-	case $prev in
-	bindir)
-	  bindir="$arg"
-	  prev=
-	  continue
-	  ;;
-	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
-	    # Add the symbol object into the linking commands.
-	    func_append compile_command " @SYMFILE@"
-	    func_append finalize_command " @SYMFILE@"
-	    preload=yes
-	  fi
-	  case $arg in
-	  *.la | *.lo) ;;  # We handle these cases below.
-	  force)
-	    if test "$dlself" = no; then
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  self)
-	    if test "$prev" = dlprefiles; then
-	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-	      dlself=yes
-	    else
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  *)
-	    if test "$prev" = dlfiles; then
-	      func_append dlfiles " $arg"
-	    else
-	      func_append dlprefiles " $arg"
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  esac
-	  ;;
-	expsyms)
-	  export_symbols="$arg"
-	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
-	  prev=
-	  continue
-	  ;;
-	expsyms_regex)
-	  export_symbols_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	framework)
-	  case $host in
-	    *-*-darwin*)
-	      case "$deplibs " in
-		*" $qarg.ltframework "*) ;;
-		*) func_append deplibs " $qarg.ltframework" # this is fixed later
-		   ;;
-	      esac
-	      ;;
-	  esac
-	  prev=
-	  continue
-	  ;;
-	inst_prefix)
-	  inst_prefix_dir="$arg"
-	  prev=
-	  continue
-	  ;;
-	objectlist)
-	  if test -f "$arg"; then
-	    save_arg=$arg
-	    moreargs=
-	    for fil in `cat "$save_arg"`
-	    do
-#	      func_append moreargs " $fil"
-	      arg=$fil
-	      # A libtool-controlled object.
-
-	      # Check to see that this really is a libtool object.
-	      if func_lalib_unsafe_p "$arg"; then
-		pic_object=
-		non_pic_object=
-
-		# Read the .lo file
-		func_source "$arg"
-
-		if test -z "$pic_object" ||
-		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
-		fi
-
-		# Extract subdirectory from the argument.
-		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
-
-		if test "$pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
-
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      func_append dlfiles " $pic_object"
-		      prev=
-		      continue
-		    else
-		      # If libtool objects are unsupported, then we need to preload.
-		      prev=dlprefiles
-		    fi
-		  fi
-
-		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
-		    # Preload the old-style object.
-		    func_append dlprefiles " $pic_object"
-		    prev=
-		  fi
-
-		  # A PIC object.
-		  func_append libobjs " $pic_object"
-		  arg="$pic_object"
-		fi
-
-		# Non-PIC object.
-		if test "$non_pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
-
-		  # A standard non-PIC object
-		  func_append non_pic_objects " $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
-		  fi
-		else
-		  # If the PIC object exists, use it instead.
-		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-		fi
-	      else
-		# Only an error if not doing a dry-run.
-		if $opt_dry_run; then
-		  # Extract subdirectory from the argument.
-		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
-
-		  func_lo2o "$arg"
-		  pic_object=$xdir$objdir/$func_lo2o_result
-		  non_pic_object=$xdir$func_lo2o_result
-		  func_append libobjs " $pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
-		fi
-	      fi
-	    done
-	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
-	  fi
-	  arg=$save_arg
-	  prev=
-	  continue
-	  ;;
-	precious_regex)
-	  precious_files_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	release)
-	  release="-$arg"
-	  prev=
-	  continue
-	  ;;
-	rpath | xrpath)
-	  # We need an absolute path.
-	  case $arg in
-	  [\\/]* | [A-Za-z]:[\\/]*) ;;
-	  *)
-	    func_fatal_error "only absolute run-paths are allowed"
-	    ;;
-	  esac
-	  if test "$prev" = rpath; then
-	    case "$rpath " in
-	    *" $arg "*) ;;
-	    *) func_append rpath " $arg" ;;
-	    esac
-	  else
-	    case "$xrpath " in
-	    *" $arg "*) ;;
-	    *) func_append xrpath " $arg" ;;
-	    esac
-	  fi
-	  prev=
-	  continue
-	  ;;
-	shrext)
-	  shrext_cmds="$arg"
-	  prev=
-	  continue
-	  ;;
-	weak)
-	  func_append weak_libs " $arg"
-	  prev=
-	  continue
-	  ;;
-	xcclinker)
-	  func_append linker_flags " $qarg"
-	  func_append compiler_flags " $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xcompiler)
-	  func_append compiler_flags " $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xlinker)
-	  func_append linker_flags " $qarg"
-	  func_append compiler_flags " $wl$qarg"
-	  prev=
-	  func_append compile_command " $wl$qarg"
-	  func_append finalize_command " $wl$qarg"
-	  continue
-	  ;;
-	*)
-	  eval "$prev=\"\$arg\""
-	  prev=
-	  continue
-	  ;;
-	esac
-      fi # test -n "$prev"
-
-      prevarg="$arg"
-
-      case $arg in
-      -all-static)
-	if test -n "$link_static_flag"; then
-	  # See comment for -static flag below, for more details.
-	  func_append compile_command " $link_static_flag"
-	  func_append finalize_command " $link_static_flag"
-	fi
-	continue
-	;;
-
-      -allow-undefined)
-	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
-	;;
-
-      -avoid-version)
-	avoid_version=yes
-	continue
-	;;
-
-      -bindir)
-	prev=bindir
-	continue
-	;;
-
-      -dlopen)
-	prev=dlfiles
-	continue
-	;;
-
-      -dlpreopen)
-	prev=dlprefiles
-	continue
-	;;
-
-      -export-dynamic)
-	export_dynamic=yes
-	continue
-	;;
-
-      -export-symbols | -export-symbols-regex)
-	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-	  func_fatal_error "more than one -exported-symbols argument is not allowed"
-	fi
-	if test "X$arg" = "X-export-symbols"; then
-	  prev=expsyms
-	else
-	  prev=expsyms_regex
-	fi
-	continue
-	;;
-
-      -framework)
-	prev=framework
-	continue
-	;;
-
-      -inst-prefix-dir)
-	prev=inst_prefix
-	continue
-	;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-	case $with_gcc/$host in
-	no/*-*-irix* | /*-*-irix*)
-	  func_append compile_command " $arg"
-	  func_append finalize_command " $arg"
-	  ;;
-	esac
-	continue
-	;;
-
-      -L*)
-	func_stripname "-L" '' "$arg"
-	if test -z "$func_stripname_result"; then
-	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
-	  else
-	    func_fatal_error "need path for \`-L' option"
-	  fi
-	fi
-	func_resolve_sysroot "$func_stripname_result"
-	dir=$func_resolve_sysroot_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  absdir=`cd "$dir" && pwd`
-	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
-	  ;;
-	esac
-	case "$deplibs " in
-	*" -L$dir "* | *" $arg "*)
-	  # Will only happen for absolute or sysroot arguments
-	  ;;
-	*)
-	  # Preserve sysroot, but never include relative directories
-	  case $dir in
-	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
-	    *) func_append deplibs " -L$dir" ;;
-	  esac
-	  func_append lib_search_path " $dir"
-	  ;;
-	esac
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$dir:"*) ;;
-	  ::) dllsearchpath=$dir;;
-	  *) func_append dllsearchpath ":$dir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) func_append dllsearchpath ":$testbindir";;
-	  esac
-	  ;;
-	esac
-	continue
-	;;
-
-      -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
-	    # These systems don't actually have a C or math library (as such)
-	    continue
-	    ;;
-	  *-*-os2*)
-	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C and math libraries are in the System framework
-	    func_append deplibs " System.ltframework"
-	    continue
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  esac
-	elif test "X$arg" = "X-lc_r"; then
-	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	   # Do not include libc_r directly, use -pthread flag.
-	   continue
-	   ;;
-	 esac
-	fi
-	func_append deplibs " $arg"
-	continue
-	;;
-
-      -module)
-	module=yes
-	continue
-	;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot|--sysroot)
-	func_append compiler_flags " $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	prev=xcompiler
-	continue
-	;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	func_append compiler_flags " $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	case "$new_inherited_linker_flags " in
-	    *" $arg "*) ;;
-	    * ) func_append new_inherited_linker_flags " $arg" ;;
-	esac
-	continue
-	;;
-
-      -multi_module)
-	single_module="${wl}-multi_module"
-	continue
-	;;
-
-      -no-fast-install)
-	fast_install=no
-	continue
-	;;
-
-      -no-install)
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-	  # The PATH hackery in wrapper scripts is required on Windows
-	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
-	  fast_install=no
-	  ;;
-	*) no_install=yes ;;
-	esac
-	continue
-	;;
-
-      -no-undefined)
-	allow_undefined=no
-	continue
-	;;
-
-      -objectlist)
-	prev=objectlist
-	continue
-	;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-	prev=precious_regex
-	continue
-	;;
-
-      -release)
-	prev=release
-	continue
-	;;
-
-      -rpath)
-	prev=rpath
-	continue
-	;;
-
-      -R)
-	prev=xrpath
-	continue
-	;;
-
-      -R*)
-	func_stripname '-R' '' "$arg"
-	dir=$func_stripname_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	=*)
-	  func_stripname '=' '' "$dir"
-	  dir=$lt_sysroot$func_stripname_result
-	  ;;
-	*)
-	  func_fatal_error "only absolute run-paths are allowed"
-	  ;;
-	esac
-	case "$xrpath " in
-	*" $dir "*) ;;
-	*) func_append xrpath " $dir" ;;
-	esac
-	continue
-	;;
-
-      -shared)
-	# The effects of -shared are defined in a previous loop.
-	continue
-	;;
-
-      -shrext)
-	prev=shrext
-	continue
-	;;
-
-      -static | -static-libtool-libs)
-	# The effects of -static are defined in a previous loop.
-	# We used to do the same as -all-static on platforms that
-	# didn't have a PIC flag, but the assumption that the effects
-	# would be equivalent was wrong.  It would break on at least
-	# Digital Unix and AIX.
-	continue
-	;;
-
-      -thread-safe)
-	thread_safe=yes
-	continue
-	;;
-
-      -version-info)
-	prev=vinfo
-	continue
-	;;
-
-      -version-number)
-	prev=vinfo
-	vinfo_number=yes
-	continue
-	;;
-
-      -weak)
-        prev=weak
-	continue
-	;;
-
-      -Wc,*)
-	func_stripname '-Wc,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  func_append arg " $func_quote_for_eval_result"
-	  func_append compiler_flags " $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Wl,*)
-	func_stripname '-Wl,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  func_append arg " $wl$func_quote_for_eval_result"
-	  func_append compiler_flags " $wl$func_quote_for_eval_result"
-	  func_append linker_flags " $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Xcompiler)
-	prev=xcompiler
-	continue
-	;;
-
-      -Xlinker)
-	prev=xlinker
-	continue
-	;;
-
-      -XCClinker)
-	prev=xcclinker
-	continue
-	;;
-
-      # -msg_* for osf cc
-      -msg_*)
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      # Flags to be passed through unchanged, with rationale:
-      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
-      # -r[0-9][0-9]*        specify processor for the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
-      # +DA*, +DD*           enable 64-bit mode for the HP compiler
-      # -q*                  compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
-      # -F/path              path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
-      # @file                GCC response files
-      # -tp=*                Portland pgcc target processor selection
-      # --sysroot=*          for sysroot support
-      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        func_append compiler_flags " $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      *.$objext)
-	# A standard object.
-	func_append objs " $arg"
-	;;
-
-      *.lo)
-	# A libtool-controlled object.
-
-	# Check to see that this really is a libtool object.
-	if func_lalib_unsafe_p "$arg"; then
-	  pic_object=
-	  non_pic_object=
-
-	  # Read the .lo file
-	  func_source "$arg"
-
-	  if test -z "$pic_object" ||
-	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
-	  fi
-
-	  # Extract subdirectory from the argument.
-	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
-
-	  if test "$pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
-
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		func_append dlfiles " $pic_object"
-		prev=
-		continue
-	      else
-		# If libtool objects are unsupported, then we need to preload.
-		prev=dlprefiles
-	      fi
-	    fi
-
-	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
-	      # Preload the old-style object.
-	      func_append dlprefiles " $pic_object"
-	      prev=
-	    fi
-
-	    # A PIC object.
-	    func_append libobjs " $pic_object"
-	    arg="$pic_object"
-	  fi
-
-	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
-
-	    # A standard non-PIC object
-	    func_append non_pic_objects " $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
-	    fi
-	  else
-	    # If the PIC object exists, use it instead.
-	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  fi
-	else
-	  # Only an error if not doing a dry-run.
-	  if $opt_dry_run; then
-	    # Extract subdirectory from the argument.
-	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
-
-	    func_lo2o "$arg"
-	    pic_object=$xdir$objdir/$func_lo2o_result
-	    non_pic_object=$xdir$func_lo2o_result
-	    func_append libobjs " $pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
-	  fi
-	fi
-	;;
-
-      *.$libext)
-	# An archive.
-	func_append deplibs " $arg"
-	func_append old_deplibs " $arg"
-	continue
-	;;
-
-      *.la)
-	# A libtool-controlled library.
-
-	func_resolve_sysroot "$arg"
-	if test "$prev" = dlfiles; then
-	  # This library was specified with -dlopen.
-	  func_append dlfiles " $func_resolve_sysroot_result"
-	  prev=
-	elif test "$prev" = dlprefiles; then
-	  # The library was specified with -dlpreopen.
-	  func_append dlprefiles " $func_resolve_sysroot_result"
-	  prev=
-	else
-	  func_append deplibs " $func_resolve_sysroot_result"
-	fi
-	continue
-	;;
-
-      # Some other compiler argument.
-      *)
-	# Unknown arguments in both finalize_command and compile_command need
-	# to be aesthetically quoted because they are evaled later.
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
-
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      func_append compile_command " $arg"
-      func_append finalize_command " $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
-    func_to_tool_file "$output_objdir/"
-    tool_output_objdir=$func_to_tool_file_result
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_preserve_dup_deps ; then
-	case "$libs " in
-	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
-	esac
-      fi
-      func_append libs " $deplib"
-    done
-
-    if test "$linkmode" = lib; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-	for pre_post_dep in $predeps $postdeps; do
-	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
-	  esac
-	  func_append pre_post_deps " $pre_post_dep"
-	done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-	passes="conv dlpreopen link"
-	for file in $dlfiles $dlprefiles; do
-	  case $file in
-	  *.la) ;;
-	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
-	    ;;
-	  esac
-	done
-	;;
-    prog)
-	compile_deplibs=
-	finalize_deplibs=
-	alldeplibs=no
-	newdlfiles=
-	newdlprefiles=
-	passes="conv scan dlopen dlpreopen link"
-	;;
-    *)  passes="conv"
-	;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
-	## FIXME: Find the place where the list is rebuilt in the wrong
-	##        order, and fix it there properly
-        tmp_deplibs=
-	for deplib in $deplibs; do
-	  tmp_deplibs="$deplib $tmp_deplibs"
-	done
-	deplibs="$tmp_deplibs"
-      fi
-
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
-	deplibs=
-      fi
-      if test "$linkmode" = prog; then
-	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
-	link)
-	  libs="$deplibs %DEPLIBS%"
-	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
-	  ;;
-	esac
-      fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
-	# Collect and forward deplibs of preopened libtool libs
-	for lib in $dlprefiles; do
-	  # Ignore non-libtool-libs
-	  dependency_libs=
-	  func_resolve_sysroot "$lib"
-	  case $lib in
-	  *.la)	func_source "$func_resolve_sysroot_result" ;;
-	  esac
-
-	  # Collect preopened libtool deplibs, except any this library
-	  # has declared as weak libs
-	  for deplib in $dependency_libs; do
-	    func_basename "$deplib"
-            deplib_base=$func_basename_result
-	    case " $weak_libs " in
-	    *" $deplib_base "*) ;;
-	    *) func_append deplibs " $deplib" ;;
-	    esac
-	  done
-	done
-	libs="$dlprefiles"
-      fi
-      if test "$pass" = dlopen; then
-	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
-	deplibs=
-      fi
-
-      for deplib in $libs; do
-	lib=
-	found=no
-	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    func_append compiler_flags " $deplib"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) func_append new_inherited_linker_flags " $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
-	    continue
-	  fi
-	  func_stripname '-l' '' "$deplib"
-	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
-	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-	  else
-	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-	  fi
-	  for searchdir in $searchdirs; do
-	    for search_ext in .la $std_shrext .so .a; do
-	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
-	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
-		else
-		  found=no
-		fi
-		break 2
-	      fi
-	    done
-	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
-	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	      case " $predeps $postdeps " in
-	      *" $deplib "*)
-		if func_lalib_p "$lib"; then
-		  library_names=
-		  old_library=
-		  func_source "$lib"
-		  for l in $old_library $library_names; do
-		    ll="$l"
-		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
-		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
-		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
-		      compile_deplibs="$deplib $compile_deplibs"
-		      finalize_deplibs="$deplib $finalize_deplibs"
-		    else
-		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-		    fi
-		    continue
-		  fi
-		fi
-		;;
-	      *) ;;
-	      esac
-	    fi
-	  fi
-	  ;; # -l
-	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) func_append new_inherited_linker_flags " $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-L*)
-	  case $linkmode in
-	  lib)
-	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
-	    newdependency_libs="$deplib $newdependency_libs"
-	    func_stripname '-L' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    func_append newlib_search_path " $func_resolve_sysroot_result"
-	    ;;
-	  prog)
-	    if test "$pass" = conv; then
-	      deplibs="$deplib $deplibs"
-	      continue
-	    fi
-	    if test "$pass" = scan; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    func_stripname '-L' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    func_append newlib_search_path " $func_resolve_sysroot_result"
-	    ;;
-	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
-	    ;;
-	  esac # linkmode
-	  continue
-	  ;; # -L
-	-R*)
-	  if test "$pass" = link; then
-	    func_stripname '-R' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    dir=$func_resolve_sysroot_result
-	    # Make sure the xrpath contains only unique directories.
-	    case "$xrpath " in
-	    *" $dir "*) ;;
-	    *) func_append xrpath " $dir" ;;
-	    esac
-	  fi
-	  deplibs="$deplib $deplibs"
-	  continue
-	  ;;
-	*.la)
-	  func_resolve_sysroot "$deplib"
-	  lib=$func_resolve_sysroot_result
-	  ;;
-	*.$libext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	    continue
-	  fi
-	  case $linkmode in
-	  lib)
-	    # Linking convenience modules into shared libraries is allowed,
-	    # but linking other static libraries is non-portable.
-	    case " $dlpreconveniencelibs " in
-	    *" $deplib "*) ;;
-	    *)
-	      valid_a_lib=no
-	      case $deplibs_check_method in
-		match_pattern*)
-		  set dummy $deplibs_check_method; shift
-		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
-		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
-		  fi
-		;;
-		pass_all)
-		  valid_a_lib=yes
-		;;
-	      esac
-	      if test "$valid_a_lib" != yes; then
-		echo
-		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because the file extensions .$libext of this argument makes me believe"
-		echo "*** that it is just a static archive that I should not use here."
-	      else
-		echo
-		$ECHO "*** Warning: Linking the shared library $output against the"
-		$ECHO "*** static library $deplib is not portable!"
-		deplibs="$deplib $deplibs"
-	      fi
-	      ;;
-	    esac
-	    continue
-	    ;;
-	  prog)
-	    if test "$pass" != link; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    continue
-	    ;;
-	  esac # linkmode
-	  ;; # *.$libext
-	*.lo | *.$objext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-	      # If there is no dlopen support or we're linking statically,
-	      # we need to preload.
-	      func_append newdlprefiles " $deplib"
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      func_append newdlfiles " $deplib"
-	    fi
-	  fi
-	  continue
-	  ;;
-	%DEPLIBS%)
-	  alldeplibs=yes
-	  continue
-	  ;;
-	esac # case $deplib
-
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
-
-	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
-
-	dlname=
-	dlopen=
-	dlpreopen=
-	libdir=
-	library_names=
-	old_library=
-	inherited_linker_flags=
-	# If the library was installed with an old release of libtool,
-	# it will not redefine variables installed, or shouldnotlink
-	installed=yes
-	shouldnotlink=no
-	avoidtemprpath=
-
-
-	# Read the .la file
-	func_source "$lib"
-
-	# Convert "-framework foo" to "foo.ltframework"
-	if test -n "$inherited_linker_flags"; then
-	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
-	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-	    case " $new_inherited_linker_flags " in
-	      *" $tmp_inherited_linker_flag "*) ;;
-	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
-	    esac
-	  done
-	fi
-	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && func_append dlfiles " $dlopen"
-	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
-	fi
-
-	if test "$pass" = conv; then
-	  # Only check for convenience libraries
-	  deplibs="$lib $deplibs"
-	  if test -z "$libdir"; then
-	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
-	    fi
-	    # It is a libtool convenience library, so add in its objects.
-	    func_append convenience " $ladir/$objdir/$old_library"
-	    func_append old_convenience " $ladir/$objdir/$old_library"
-	    tmp_libs=
-	    for deplib in $dependency_libs; do
-	      deplibs="$deplib $deplibs"
-	      if $opt_preserve_dup_deps ; then
-		case "$tmp_libs " in
-		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
-		esac
-	      fi
-	      func_append tmp_libs " $deplib"
-	    done
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
-	  fi
-	  continue
-	fi # $pass = conv
-
-
-	# Get the name of the library we link against.
-	linklib=
-	if test -n "$old_library" &&
-	   { test "$prefer_static_libs" = yes ||
-	     test "$prefer_static_libs,$installed" = "built,no"; }; then
-	  linklib=$old_library
-	else
-	  for l in $old_library $library_names; do
-	    linklib="$l"
-	  done
-	fi
-	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
-	fi
-
-	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
-	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
-	    # If there is no dlname, no dlopen support or we're linking
-	    # statically, we need to preload.  We also need to preload any
-	    # dependent libraries so libltdl's deplib preloader doesn't
-	    # bomb out in the load deplibs phase.
-	    func_append dlprefiles " $lib $dependency_libs"
-	  else
-	    func_append newdlfiles " $lib"
-	  fi
-	  continue
-	fi # $pass = dlopen
-
-	# We need an absolute path.
-	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-	*)
-	  abs_ladir=`cd "$ladir" && pwd`
-	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
-	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
-	  fi
-	  ;;
-	esac
-	func_basename "$lib"
-	laname="$func_basename_result"
-
-	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
-	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
-	  else
-	    dir="$lt_sysroot$libdir"
-	    absdir="$lt_sysroot$libdir"
-	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
-	else
-	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    # Remove this search path later
-	    func_append notinst_path " $abs_ladir"
-	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
-	    # Remove this search path later
-	    func_append notinst_path " $abs_ladir"
-	  fi
-	fi # $installed = yes
-	func_stripname 'lib' '.la' "$laname"
-	name=$func_stripname_result
-
-	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-	  fi
-	  case "$host" in
-	    # special handling for platforms with PE-DLLs.
-	    *cygwin* | *mingw* | *cegcc* )
-	      # Linker will automatically link against shared library if both
-	      # static and shared are present.  Therefore, ensure we extract
-	      # symbols from the import library if a shared library is present
-	      # (otherwise, the dlopen module name will be incorrect).  We do
-	      # this by putting the import library name into $newdlprefiles.
-	      # We recover the dlopen module name by 'saving' the la file
-	      # name in a special purpose variable, and (later) extracting the
-	      # dlname from the la file.
-	      if test -n "$dlname"; then
-	        func_tr_sh "$dir/$linklib"
-	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
-	        func_append newdlprefiles " $dir/$linklib"
-	      else
-	        func_append newdlprefiles " $dir/$old_library"
-	        # Keep a list of preopened convenience libraries to check
-	        # that they are being used correctly in the link pass.
-	        test -z "$libdir" && \
-	          func_append dlpreconveniencelibs " $dir/$old_library"
-	      fi
-	    ;;
-	    * )
-	      # Prefer using a static library (so that no silly _DYNAMIC symbols
-	      # are required to link).
-	      if test -n "$old_library"; then
-	        func_append newdlprefiles " $dir/$old_library"
-	        # Keep a list of preopened convenience libraries to check
-	        # that they are being used correctly in the link pass.
-	        test -z "$libdir" && \
-	          func_append dlpreconveniencelibs " $dir/$old_library"
-	      # Otherwise, use the dlname, so that lt_dlopen finds it.
-	      elif test -n "$dlname"; then
-	        func_append newdlprefiles " $dir/$dlname"
-	      else
-	        func_append newdlprefiles " $dir/$linklib"
-	      fi
-	    ;;
-	  esac
-	fi # $pass = dlpreopen
-
-	if test -z "$libdir"; then
-	  # Link the convenience library
-	  if test "$linkmode" = lib; then
-	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$dir/$old_library $compile_deplibs"
-	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
-	  else
-	    deplibs="$lib $deplibs" # used for prog,scan pass
-	  fi
-	  continue
-	fi
-
-
-	if test "$linkmode" = prog && test "$pass" != link; then
-	  func_append newlib_search_path " $ladir"
-	  deplibs="$lib $deplibs"
-
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
-	  fi
-
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    case $deplib in
-	    -L*) func_stripname '-L' '' "$deplib"
-	         func_resolve_sysroot "$func_stripname_result"
-	         func_append newlib_search_path " $func_resolve_sysroot_result"
-		 ;;
-	    esac
-	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      # Need to hardcode shared library paths
-	      # or/and link against static libraries
-	      newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-	      esac
-	    fi
-	    func_append tmp_libs " $deplib"
-	  done # for deplib
-	  continue
-	fi # $linkmode = prog...
-
-	if test "$linkmode,$pass" = "prog,link"; then
-	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
-	       test -z "$old_library"; }; then
-	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
-	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
-	      *"$absdir:"*) ;;
-	      *) func_append temp_rpath "$absdir:" ;;
-	      esac
-	    fi
-
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) func_append compile_rpath " $absdir" ;;
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) func_append finalize_rpath " $libdir" ;;
-	      esac
-	      ;;
-	    esac
-	  fi # $linkmode,$pass = prog,link...
-
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
-		 test -n "$library_names"; }; }; then
-	    # We only need to search for static libraries
-	    continue
-	  fi
-	fi
-
-	link_static=no # Whether the deplib will be linked statically
-	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
-	  use_static_libs=no
-	fi
-	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
-	      # No point in relinking DLLs because paths are not encoded
-	      func_append notinst_deplibs " $lib"
-	      need_relink=no
-	    ;;
-	  *)
-	    if test "$installed" = no; then
-	      func_append notinst_deplibs " $lib"
-	      need_relink=yes
-	    fi
-	    ;;
-	  esac
-	  # This is a shared library
-
-	  # Warn about portability, can't link against -module's on some
-	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
-	  for dlpremoduletest in $dlprefiles; do
-	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
-	      break
-	    fi
-	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-	    echo
-	    if test "$linkmode" = prog; then
-	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
-	    else
-	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-	    fi
-	    $ECHO "*** $linklib is not portable!"
-	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) func_append compile_rpath " $absdir" ;;
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) func_append finalize_rpath " $libdir" ;;
-	      esac
-	      ;;
-	    esac
-	  fi
-
-	  if test -n "$old_archive_from_expsyms_cmds"; then
-	    # figure out the soname
-	    set dummy $library_names
-	    shift
-	    realname="$1"
-	    shift
-	    libname=`eval "\\$ECHO \"$libname_spec\""`
-	    # use dlname if we got it. it's perfectly good, no?
-	    if test -n "$dlname"; then
-	      soname="$dlname"
-	    elif test -n "$soname_spec"; then
-	      # bleh windows
-	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
-	        func_arith $current - $age
-		major=$func_arith_result
-		versuffix="-$major"
-		;;
-	      esac
-	      eval soname=\"$soname_spec\"
-	    else
-	      soname="$realname"
-	    fi
-
-	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
-	    func_basename "$soroot"
-	    soname="$func_basename_result"
-	    func_stripname 'lib' '.dll' "$soname"
-	    newlib=libimp-$func_stripname_result.a
-
-	    # If the library has no export list, then create one now
-	    if test -f "$output_objdir/$soname-def"; then :
-	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
-	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-	    fi
-
-	    # Create $newlib
-	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
-	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-	    fi
-	    # make sure the library variables are pointing to the new library
-	    dir=$output_objdir
-	    linklib=$newlib
-	  fi # test -n "$old_archive_from_expsyms_cmds"
-
-	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    lib_linked=yes
-	    case $hardcode_action in
-	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
-		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
-		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
-		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
-		    # link against it, someone is ignoring the earlier warnings
-		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
-		      if test "X$dlopenmodule" != "X$lib"; then
-			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
-			  echo
-			  echo "*** And there doesn't seem to be a static archive available"
-			  echo "*** The link will probably fail, sorry"
-			else
-			  add="$dir/$old_library"
-			fi
-		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
-		      fi
-		    fi
-		esac
-	      elif test "$hardcode_minus_L" = no; then
-		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
-		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
-		# Try looking first in the location we're being installed to.
-		if test -n "$inst_prefix_dir"; then
-		  case $libdir in
-		    [\\/]*)
-		      func_append add_dir " -L$inst_prefix_dir$libdir"
-		      ;;
-		  esac
-		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    *) lib_linked=no ;;
-	    esac
-
-	    if test "$lib_linked" != yes; then
-	      func_fatal_configuration "unsupported hardcode properties"
-	    fi
-
-	    if test -n "$add_shlibpath"; then
-	      case :$compile_shlibpath: in
-	      *":$add_shlibpath:"*) ;;
-	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
-	      esac
-	    fi
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
-		case :$finalize_shlibpath: in
-		*":$libdir:"*) ;;
-		*) func_append finalize_shlibpath "$libdir:" ;;
-		esac
-	      fi
-	    fi
-	  fi
-
-	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
-	      case :$finalize_shlibpath: in
-	      *":$libdir:"*) ;;
-	      *) func_append finalize_shlibpath "$libdir:" ;;
-	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
-	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
-	      else
-		add="$libdir/$linklib"
-	      fi
-	    else
-	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
-	      # Try looking first in the location we're being installed to.
-	      if test -n "$inst_prefix_dir"; then
-		case $libdir in
-		  [\\/]*)
-		    func_append add_dir " -L$inst_prefix_dir$libdir"
-		    ;;
-		esac
-	      fi
-	      add="-l$name"
-	    fi
-
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	    fi
-	  fi
-	elif test "$linkmode" = prog; then
-	  # Here we assume that one of hardcode_direct or hardcode_minus_L
-	  # is not unsupported.  This is valid on all known static and
-	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
-	    compile_deplibs="$dir/$linklib $compile_deplibs"
-	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
-	  else
-	    compile_deplibs="-l$name -L$dir $compile_deplibs"
-	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-	  fi
-	elif test "$build_libtool_libs" = yes; then
-	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
-	    # We're trying link a shared library against a static one
-	    # but the system doesn't support it.
-
-	    # Just print a warning and add the library to dependency_libs so
-	    # that the program can be linked against the static library.
-	    echo
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
-	    echo "*** I have the capability to make that library automatically link in when"
-	    echo "*** you link to this library.  But I can only do this if you have a"
-	    echo "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
-	      echo "*** But as you try to build a module library, libtool will still create "
-	      echo "*** a static module, that should work as long as the dlopening application"
-	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
-	      if test -z "$global_symbol_pipe"; then
-		echo
-		echo "*** However, this would only work if libtool was able to extract symbol"
-		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		echo "*** not find such a program.  So, this module is probably useless."
-		echo "*** \`nm' from GNU binutils and a full rebuild may help."
-	      fi
-	      if test "$build_old_libs" = no; then
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  else
-	    deplibs="$dir/$old_library $deplibs"
-	    link_static=yes
-	  fi
-	fi # link shared/static library?
-
-	if test "$linkmode" = lib; then
-	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
-	    # Extract -R from dependency_libs
-	    temp_deplibs=
-	    for libdir in $dependency_libs; do
-	      case $libdir in
-	      -R*) func_stripname '-R' '' "$libdir"
-	           temp_xrpath=$func_stripname_result
-		   case " $xrpath " in
-		   *" $temp_xrpath "*) ;;
-		   *) func_append xrpath " $temp_xrpath";;
-		   esac;;
-	      *) func_append temp_deplibs " $libdir";;
-	      esac
-	    done
-	    dependency_libs="$temp_deplibs"
-	  fi
-
-	  func_append newlib_search_path " $absdir"
-	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-	  # ... and its dependency_libs
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    newdependency_libs="$deplib $newdependency_libs"
-	    case $deplib in
-              -L*) func_stripname '-L' '' "$deplib"
-                   func_resolve_sysroot "$func_stripname_result";;
-              *) func_resolve_sysroot "$deplib" ;;
-            esac
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $func_resolve_sysroot_result "*)
-                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
-	      esac
-	    fi
-	    func_append tmp_libs " $func_resolve_sysroot_result"
-	  done
-
-	  if test "$link_all_deplibs" != no; then
-	    # Add the search paths of all dependency libraries
-	    for deplib in $dependency_libs; do
-	      path=
-	      case $deplib in
-	      -L*) path="$deplib" ;;
-	      *.la)
-	        func_resolve_sysroot "$deplib"
-	        deplib=$func_resolve_sysroot_result
-	        func_dirname "$deplib" "" "."
-		dir=$func_dirname_result
-		# We need an absolute path.
-		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-		*)
-		  absdir=`cd "$dir" && pwd`
-		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
-		  fi
-		  ;;
-		esac
-		if $GREP "^installed=no" $deplib > /dev/null; then
-		case $host in
-		*-*-darwin*)
-		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
-		      depdepl=$tmp
-		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
-		      path=
-		    fi
-		  fi
-		  ;;
-		*)
-		  path="-L$absdir/$objdir"
-		  ;;
-		esac
-		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
-		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
-
-		  path="-L$absdir"
-		fi
-		;;
-	      esac
-	      case " $deplibs " in
-	      *" $path "*) ;;
-	      *) deplibs="$path $deplibs" ;;
-	      esac
-	    done
-	  fi # link_all_deplibs != no
-	fi # linkmode = lib
-      done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
-	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-	else
-	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	fi
-      fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
-	# Link the dlpreopened libraries before other libraries
-	for deplib in $save_deplibs; do
-	  deplibs="$deplib $deplibs"
-	done
-      fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
-	  # Make sure lib_search_path contains only unique directories.
-	  lib_search_path=
-	  for dir in $newlib_search_path; do
-	    case "$lib_search_path " in
-	    *" $dir "*) ;;
-	    *) func_append lib_search_path " $dir" ;;
-	    esac
-	  done
-	  newlib_search_path=
-	fi
-
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
-	  vars="compile_deplibs finalize_deplibs"
-	fi
-	for var in $vars dependency_libs; do
-	  # Add libraries to $var in reverse order
-	  eval tmp_libs=\"\$$var\"
-	  new_libs=
-	  for deplib in $tmp_libs; do
-	    # FIXME: Pedantically, this is the right thing to do, so
-	    #        that some nasty dependency loop isn't accidentally
-	    #        broken:
-	    #new_libs="$deplib $new_libs"
-	    # Pragmatically, this seems to cause very few problems in
-	    # practice:
-	    case $deplib in
-	    -L*) new_libs="$deplib $new_libs" ;;
-	    -R*) ;;
-	    *)
-	      # And here is the reason: when a library appears more
-	      # than once as an explicit dependence of a library, or
-	      # is implicitly linked in more than once by the
-	      # compiler, it is considered special, and multiple
-	      # occurrences thereof are not removed.  Compare this
-	      # with having the same library being listed as a
-	      # dependency of multiple other libraries: in this case,
-	      # we know (pedantically, we assume) the library does not
-	      # need to be listed more than once, so we keep only the
-	      # last copy.  This is not always right, but it is rare
-	      # enough that we require users that really mean to play
-	      # such unportable linking tricks to link the library
-	      # using -Wl,-lname, so that libtool does not consider it
-	      # for duplicate removal.
-	      case " $specialdeplibs " in
-	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
-	      *)
-		case " $new_libs " in
-		*" $deplib "*) ;;
-		*) new_libs="$deplib $new_libs" ;;
-		esac
-		;;
-	      esac
-	      ;;
-	    esac
-	  done
-	  tmp_libs=
-	  for deplib in $new_libs; do
-	    case $deplib in
-	    -L*)
-	      case " $tmp_libs " in
-	      *" $deplib "*) ;;
-	      *) func_append tmp_libs " $deplib" ;;
-	      esac
-	      ;;
-	    *) func_append tmp_libs " $deplib" ;;
-	    esac
-	  done
-	  eval $var=\"$tmp_libs\"
-	done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-	case " $predeps $postdeps $compiler_lib_search_path " in
-	*" $i "*)
-	  i=""
-	  ;;
-	esac
-	if test -n "$i" ; then
-	  func_append tmp_libs " $i"
-	fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
-    fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs="$output"
-      func_append objs "$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
-      case $outputname in
-      lib*)
-	func_stripname 'lib' '.la' "$outputname"
-	name=$func_stripname_result
-	eval shared_ext=\"$shrext_cmds\"
-	eval libname=\"$libname_spec\"
-	;;
-      *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
-	if test "$need_lib_prefix" != no; then
-	  # Add the "lib" prefix for modules if required
-	  func_stripname '' '.la' "$outputname"
-	  name=$func_stripname_result
-	  eval shared_ext=\"$shrext_cmds\"
-	  eval libname=\"$libname_spec\"
-	else
-	  func_stripname '' '.la' "$outputname"
-	  libname=$func_stripname_result
-	fi
-	;;
-      esac
-
-      if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
-	else
-	  echo
-	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-	  $ECHO "*** objects $objs is not portable!"
-	  func_append libobjs " $objs"
-	fi
-      fi
-
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
-
-      install_libdir="$1"
-
-      oldlibs=
-      if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
-	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
-	  # convenience libraries should have the same extension an
-	  # archive normally would.
-	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
-	  build_libtool_libs=convenience
-	  build_old_libs=yes
-	fi
-
-	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
-	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
-      else
-
-	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
-	set dummy $vinfo 0 0 0
-	shift
-	IFS="$save_ifs"
-
-	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
-
-	# convert absolute version numbers to libtool ages
-	# this retains compatibility with .la files and attempts
-	# to make the code below a bit more comprehensible
-
-	case $vinfo_number in
-	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
-	  #
-	  # There are really only two kinds -- those that
-	  # use the current revision as the major version
-	  # and those that subtract age and use age as
-	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
-	  #
-	  case $version_type in
-	  darwin|linux|osf|windows|none)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
-	    ;;
-	  freebsd-aout|freebsd-elf|qnx|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
-	    ;;
-	  irix|nonstopux)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
-	    lt_irix_increment=no
-	    ;;
-	  *)
-	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
-	    ;;
-	  esac
-	  ;;
-	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
-	  ;;
-	esac
-
-	# Check that each of the things are valid numbers.
-	case $current in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $revision in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $age in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	fi
-
-	# Calculate the version variables.
-	major=
-	versuffix=
-	verstring=
-	case $version_type in
-	none) ;;
-
-	darwin)
-	  # Like Linux, but with the current version available in
-	  # verstring for coding it into the library header
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  # Darwin ld doesn't like 0 for these options...
-	  func_arith $current + 1
-	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
-	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-	  ;;
-
-	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
-	  ;;
-
-	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
-	    func_arith $current - $age
-	  else
-	    func_arith $current - $age + 1
-	  fi
-	  major=$func_arith_result
-
-	  case $version_type in
-	    nonstopux) verstring_prefix=nonstopux ;;
-	    *)         verstring_prefix=sgi ;;
-	  esac
-	  verstring="$verstring_prefix$major.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$revision
-	  while test "$loop" -ne 0; do
-	    func_arith $revision - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
-	  done
-
-	  # Before this point, $major must not contain `.'.
-	  major=.$major
-	  versuffix="$major.$revision"
-	  ;;
-
-	linux)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  ;;
-
-	osf)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$age
-	  while test "$loop" -ne 0; do
-	    func_arith $current - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
-	  done
-
-	  # Make executables depend on our current version.
-	  func_append verstring ":${current}.0"
-	  ;;
-
-	qnx)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
-	  ;;
-
-	windows)
-	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
-	  func_arith $current - $age
-	  major=$func_arith_result
-	  versuffix="-$major"
-	  ;;
-
-	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
-	  ;;
-	esac
-
-	# Clear the version info if we defaulted, and they specified a release.
-	if test -z "$vinfo" && test -n "$release"; then
-	  major=
-	  case $version_type in
-	  darwin)
-	    # we can't check for "0.0" in archive_cmds due to quoting
-	    # problems, so we reset it completely
-	    verstring=
-	    ;;
-	  *)
-	    verstring="0.0"
-	    ;;
-	  esac
-	  if test "$need_version" = no; then
-	    versuffix=
-	  else
-	    versuffix=".0.0"
-	  fi
-	fi
-
-	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
-	  major=
-	  versuffix=
-	  verstring=""
-	fi
-
-	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
-	  fi
-	else
-	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
-	fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      func_append libobjs " $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
-
-      if test "$opt_mode" != relink; then
-	# Remove our outputs, but don't remove object files since they
-	# may have been created when compiling PIC objects.
-	removelist=
-	tempremovelist=`$ECHO "$output_objdir/*"`
-	for p in $tempremovelist; do
-	  case $p in
-	    *.$objext | *.gcno)
-	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
-		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-		 then
-		   continue
-		 fi
-	       fi
-	       func_append removelist " $p"
-	       ;;
-	    *) ;;
-	  esac
-	done
-	test -n "$removelist" && \
-	  func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	func_append oldlibs " $output_objdir/$libname.$libext"
-
-	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
-      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	temp_xrpath=
-	for libdir in $xrpath; do
-	  func_replace_sysroot "$libdir"
-	  func_append temp_xrpath " -R$func_replace_sysroot_result"
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) func_append finalize_rpath " $libdir" ;;
-	  esac
-	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-	  dependency_libs="$temp_xrpath $dependency_libs"
-	fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-	case " $dlprefiles $dlfiles " in
-	*" $lib "*) ;;
-	*) func_append dlfiles " $lib" ;;
-	esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-	case "$dlprefiles " in
-	*" $lib "*) ;;
-	*) func_append dlprefiles " $lib" ;;
-	esac
-      done
-
-      if test "$build_libtool_libs" = yes; then
-	if test -n "$rpath"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
-	    # these systems don't actually have a c library (as such)!
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C library is in the System framework
-	    func_append deplibs " System.ltframework"
-	    ;;
-	  *-*-netbsd*)
-	    # Don't link with libc until the a.out ld.so is fixed.
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    ;;
-	  *)
-	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
-	      func_append deplibs " -lc"
-	    fi
-	    ;;
-	  esac
-	fi
-
-	# Transform deplibs into only deplibs that can be linked in shared.
-	name_save=$name
-	libname_save=$libname
-	release_save=$release
-	versuffix_save=$versuffix
-	major_save=$major
-	# I'm not sure if I'm treating the release correctly.  I think
-	# release should show up in the -l (ie -lgmp5) so we don't want to
-	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
-	newdeplibs=
-	droppeddeps=no
-	case $deplibs_check_method in
-	pass_all)
-	  # Don't check for shared/static.  Everything works.
-	  # This might be a little naive.  We might want to check
-	  # whether the library exists or not.  But this is on
-	  # osf3 & osf4 and I'm not really sure... Just
-	  # implementing what was already the behavior.
-	  newdeplibs=$deplibs
-	  ;;
-	test_compile)
-	  # This code stresses the "libraries are programs" paradigm to its
-	  # limits. Maybe even breaks it.  We compile a program, linking it
-	  # against the deplibs as a proxy for the library.  Then we can check
-	  # whether they linked in statically or dynamically with ldd.
-	  $opt_dry_run || $RM conftest.c
-	  cat > conftest.c <<EOF
-	  int main() { return 0; }
-EOF
-	  $opt_dry_run || $RM conftest
-	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-	    ldd_output=`ldd conftest`
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		  case " $predeps $postdeps " in
-		  *" $i "*)
-		    func_append newdeplibs " $i"
-		    i=""
-		    ;;
-		  esac
-		fi
-		if test -n "$i" ; then
-		  libname=`eval "\\$ECHO \"$libname_spec\""`
-		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		  set dummy $deplib_matches; shift
-		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    func_append newdeplibs " $i"
-		  else
-		    droppeddeps=yes
-		    echo
-		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		    echo "*** I have the capability to make that library automatically link in when"
-		    echo "*** you link to this library.  But I can only do this if you have a"
-		    echo "*** shared version of the library, which I believe you do not have"
-		    echo "*** because a test_compile did reveal that the linker did not use it for"
-		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
-		  fi
-		fi
-		;;
-	      *)
-		func_append newdeplibs " $i"
-		;;
-	      esac
-	    done
-	  else
-	    # Error occurred in the first compile.  Let's try to salvage
-	    # the situation: Compile a separate program for each library.
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		$opt_dry_run || $RM conftest
-		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		    case " $predeps $postdeps " in
-		    *" $i "*)
-		      func_append newdeplibs " $i"
-		      i=""
-		      ;;
-		    esac
-		  fi
-		  if test -n "$i" ; then
-		    libname=`eval "\\$ECHO \"$libname_spec\""`
-		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		    set dummy $deplib_matches; shift
-		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      func_append newdeplibs " $i"
-		    else
-		      droppeddeps=yes
-		      echo
-		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		      echo "*** I have the capability to make that library automatically link in when"
-		      echo "*** you link to this library.  But I can only do this if you have a"
-		      echo "*** shared version of the library, which you do not appear to have"
-		      echo "*** because a test_compile did reveal that the linker did not use this one"
-		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
-		    fi
-		  fi
-		else
-		  droppeddeps=yes
-		  echo
-		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-		  echo "*** make it link in!  You will probably need to install it or some"
-		  echo "*** library that it depends on before this library will be fully"
-		  echo "*** functional.  Installing it before continuing would be even better."
-		fi
-		;;
-	      *)
-		func_append newdeplibs " $i"
-		;;
-	      esac
-	    done
-	  fi
-	  ;;
-	file_magic*)
-	  set dummy $deplibs_check_method; shift
-	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  func_append newdeplibs " $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		if test -n "$file_magic_glob"; then
-		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
-		else
-		  libnameglob=$libname
-		fi
-		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  if test "$want_nocaseglob" = yes; then
-		    shopt -s nocaseglob
-		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-		    $nocaseglob
-		  else
-		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-		  fi
-		  for potent_lib in $potential_libs; do
-		      # Follow soft links.
-		      if ls -lLd "$potent_lib" 2>/dev/null |
-			 $GREP " -> " >/dev/null; then
-			continue
-		      fi
-		      # The statement above tries to avoid entering an
-		      # endless loop below, in case of cyclic links.
-		      # We might still enter an endless loop, since a link
-		      # loop can be closed while we follow links,
-		      # but so what?
-		      potlib="$potent_lib"
-		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
-			esac
-		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-			 $SED -e 10q |
-			 $EGREP "$file_magic_regex" > /dev/null; then
-			func_append newdeplibs " $a_deplib"
-			a_deplib=""
-			break 2
-		      fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		echo
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a file magic. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      func_append newdeplibs " $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	match_pattern*)
-	  set dummy $deplibs_check_method; shift
-	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  func_append newdeplibs " $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
-		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      func_append newdeplibs " $a_deplib"
-		      a_deplib=""
-		      break 2
-		    fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		echo
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      func_append newdeplibs " $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	none | unknown | *)
-	  newdeplibs=""
-	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
-	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
-	    done
-	  fi
-	  case $tmp_deplibs in
-	  *[!\	\ ]*)
-	    echo
-	    if test "X$deplibs_check_method" = "Xnone"; then
-	      echo "*** Warning: inter-library dependencies are not supported in this platform."
-	    else
-	      echo "*** Warning: inter-library dependencies are not known to be supported."
-	    fi
-	    echo "*** All declared inter-library dependencies are being dropped."
-	    droppeddeps=yes
-	    ;;
-	  esac
-	  ;;
-	esac
-	versuffix=$versuffix_save
-	major=$major_save
-	release=$release_save
-	libname=$libname_save
-	name=$name_save
-
-	case $host in
-	*-*-rhapsody* | *-*-darwin1.[012])
-	  # On Rhapsody replace the C library with the System framework
-	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
-	  ;;
-	esac
-
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
-	    echo
-	    echo "*** Warning: libtool could not satisfy all declared inter-library"
-	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-	    echo "*** a static module, that should work as long as the dlopening"
-	    echo "*** application is linked with the -dlopen flag."
-	    if test -z "$global_symbol_pipe"; then
-	      echo
-	      echo "*** However, this would only work if libtool was able to extract symbol"
-	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      echo "*** not find such a program.  So, this module is probably useless."
-	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
-	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
-	      build_libtool_libs=module
-	      build_old_libs=yes
-	    else
-	      build_libtool_libs=no
-	    fi
-	  else
-	    echo "*** The inter-library dependencies that have been dropped here will be"
-	    echo "*** automatically added whenever a program is linked with this library"
-	    echo "*** or is declared to -dlopen it."
-
-	    if test "$allow_undefined" = no; then
-	      echo
-	      echo "*** Since this library must not contain undefined symbols,"
-	      echo "*** because either the platform does not support them or"
-	      echo "*** it was explicitly requested with -no-undefined,"
-	      echo "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  fi
-	fi
-	# Done checking deplibs!
-	deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-	*-*-darwin*)
-	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $deplibs " in
-	  *" -L$path/$objdir "*)
-	    func_append new_libs " -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) func_append new_libs " $deplib" ;;
-	  esac
-	  ;;
-	*) func_append new_libs " $deplib" ;;
-	esac
-      done
-      deplibs="$new_libs"
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	if test "$hardcode_into_libs" = yes; then
-	  # Hardcode the library paths
-	  hardcode_libdirs=
-	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
-	  for libdir in $rpath; do
-	    if test -n "$hardcode_libdir_flag_spec"; then
-	      if test -n "$hardcode_libdir_separator"; then
-		func_replace_sysroot "$libdir"
-		libdir=$func_replace_sysroot_result
-		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
-		else
-		  # Just accumulate the unique libdirs.
-		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		    ;;
-		  *)
-		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-		    ;;
-		  esac
-		fi
-	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		func_append dep_rpath " $flag"
-	      fi
-	    elif test -n "$runpath_var"; then
-	      case "$perm_rpath " in
-	      *" $libdir "*) ;;
-	      *) func_apped perm_rpath " $libdir" ;;
-	      esac
-	    fi
-	  done
-	  # Substitute the hardcoded libdirs into the rpath.
-	  if test -n "$hardcode_libdir_separator" &&
-	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
-	  fi
-	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
-	    # We should set the runpath_var.
-	    rpath=
-	    for dir in $perm_rpath; do
-	      func_append rpath "$dir:"
-	    done
-	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-	  fi
-	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-	fi
-
-	shlibpath="$finalize_shlibpath"
-	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-	if test -n "$shlibpath"; then
-	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-	fi
-
-	# Get the real and link names of the library.
-	eval shared_ext=\"$shrext_cmds\"
-	eval library_names=\"$library_names_spec\"
-	set dummy $library_names
-	shift
-	realname="$1"
-	shift
-
-	if test -n "$soname_spec"; then
-	  eval soname=\"$soname_spec\"
-	else
-	  soname="$realname"
-	fi
-	if test -z "$dlname"; then
-	  dlname=$soname
-	fi
-
-	lib="$output_objdir/$realname"
-	linknames=
-	for link
-	do
-	  func_append linknames " $link"
-	done
-
-	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	test "X$libobjs" = "X " && libobjs=
-
-	delfiles=
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
-	  func_append delfiles " $export_symbols"
-	fi
-
-	orig_export_symbols=
-	case $host_os in
-	cygwin* | mingw* | cegcc*)
-	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-	      # and it's NOT already a .def file. Must figure out
-	      # which of the given symbols are data symbols and tag
-	      # them as such. So, trigger use of export_symbols_cmds.
-	      # export_symbols gets reassigned inside the "prepare
-	      # the list of exported symbols" if statement, so the
-	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
-	      export_symbols=
-	      always_export_symbols=yes
-	    fi
-	  fi
-	  ;;
-	esac
-
-	# Prepare the list of exported symbols
-	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
-	    $opt_dry_run || $RM $export_symbols
-	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd1 in $cmds; do
-	      IFS="$save_ifs"
-	      # Take the normal branch if the nm_file_list_spec branch
-	      # doesn't work or if tool conversion is not needed.
-	      case $nm_file_list_spec~$to_tool_file_cmd in
-		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
-		  try_normal_branch=yes
-		  eval cmd=\"$cmd1\"
-		  func_len " $cmd"
-		  len=$func_len_result
-		  ;;
-		*)
-		  try_normal_branch=no
-		  ;;
-	      esac
-	      if test "$try_normal_branch" = yes \
-		 && { test "$len" -lt "$max_cmd_len" \
-		      || test "$max_cmd_len" -le -1; }
-	      then
-		func_show_eval "$cmd" 'exit $?'
-		skipped_export=false
-	      elif test -n "$nm_file_list_spec"; then
-		func_basename "$output"
-		output_la=$func_basename_result
-		save_libobjs=$libobjs
-		save_output=$output
-		output=${output_objdir}/${output_la}.nm
-		func_to_tool_file "$output"
-		libobjs=$nm_file_list_spec$func_to_tool_file_result
-		func_append delfiles " $output"
-		func_verbose "creating $NM input file list: $output"
-		for obj in $save_libobjs; do
-		  func_to_tool_file "$obj"
-		  $ECHO "$func_to_tool_file_result"
-		done > "$output"
-		eval cmd=\"$cmd1\"
-		func_show_eval "$cmd" 'exit $?'
-		output=$save_output
-		libobjs=$save_libobjs
-		skipped_export=false
-	      else
-		# The command line is too long to execute in one step.
-		func_verbose "using reloadable object file for export list..."
-		skipped_export=:
-		# Break out early, otherwise skipped_export may be
-		# set to false by a later but shorter cmd.
-		break
-	      fi
-	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-	fi
-
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-	fi
-
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
-	  # though. Also, the filter scales superlinearly with the number of
-	  # global variables. join(1) would be nice here, but unfortunately
-	  # isn't a blessed tool.
-	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-	  export_symbols=$output_objdir/$libname.def
-	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	fi
-
-	tmp_deplibs=
-	for test_deplib in $deplibs; do
-	  case " $convenience " in
-	  *" $test_deplib "*) ;;
-	  *)
-	    func_append tmp_deplibs " $test_deplib"
-	    ;;
-	  esac
-	done
-	deplibs="$tmp_deplibs"
-
-	if test -n "$convenience"; then
-	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
-	    test -z "$libobjs"; then
-	    # extract the archives, so we have objects to list.
-	    # TODO: could optimize this to just extract one archive.
-	    whole_archive_flag_spec=
-	  fi
-	  if test -n "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  else
-	    gentop="$output_objdir/${outputname}x"
-	    func_append generated " $gentop"
-
-	    func_extract_archives $gentop $convenience
-	    func_append libobjs " $func_extract_archives_result"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	fi
-
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-	  eval flag=\"$thread_safe_flag_spec\"
-	  func_append linker_flags " $flag"
-	fi
-
-	# Make a backup of the uninstalled library when relinking
-	if test "$opt_mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-	fi
-
-	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
-	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	    eval test_cmds=\"$module_expsym_cmds\"
-	    cmds=$module_expsym_cmds
-	  else
-	    eval test_cmds=\"$module_cmds\"
-	    cmds=$module_cmds
-	  fi
-	else
-	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	    eval test_cmds=\"$archive_expsym_cmds\"
-	    cmds=$archive_expsym_cmds
-	  else
-	    eval test_cmds=\"$archive_cmds\"
-	    cmds=$archive_cmds
-	  fi
-	fi
-
-	if test "X$skipped_export" != "X:" &&
-	   func_len " $test_cmds" &&
-	   len=$func_len_result &&
-	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  :
-	else
-	  # The command line is too long to link in one step, link piecewise
-	  # or, if using GNU ld and skipped_export is not :, use a linker
-	  # script.
-
-	  # Save the value of $output and $libobjs because we want to
-	  # use them later.  If we have whole_archive_flag_spec, we
-	  # want to use save_libobjs as it was before
-	  # whole_archive_flag_spec was expanded, because we can't
-	  # assume the linker understands whole_archive_flag_spec.
-	  # This may have to be revisited, in case too many
-	  # convenience libraries get linked in and end up exceeding
-	  # the spec.
-	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	  fi
-	  save_output=$output
-	  func_basename "$output"
-	  output_la=$func_basename_result
-
-	  # Clear the reloadable object creation command queue and
-	  # initialize k to one.
-	  test_cmds=
-	  concat_cmds=
-	  objlist=
-	  last_robj=
-	  k=1
-
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
-	    func_verbose "creating GNU ld script: $output"
-	    echo 'INPUT (' > $output
-	    for obj in $save_libobjs
-	    do
-	      func_to_tool_file "$obj"
-	      $ECHO "$func_to_tool_file_result" >> $output
-	    done
-	    echo ')' >> $output
-	    func_append delfiles " $output"
-	    func_to_tool_file "$output"
-	    output=$func_to_tool_file_result
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
-	    func_verbose "creating linker input file list: $output"
-	    : > $output
-	    set x $save_libobjs
-	    shift
-	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
-	      firstobj="$1 "
-	      shift
-	    fi
-	    for obj
-	    do
-	      func_to_tool_file "$obj"
-	      $ECHO "$func_to_tool_file_result" >> $output
-	    done
-	    func_append delfiles " $output"
-	    func_to_tool_file "$output"
-	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
-	  else
-	    if test -n "$save_libobjs"; then
-	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
-	      eval test_cmds=\"$reload_cmds\"
-	      func_len " $test_cmds"
-	      len0=$func_len_result
-	      len=$len0
-
-	      # Loop over the list of objects to be linked.
-	      for obj in $save_libobjs
-	      do
-		func_len " $obj"
-		func_arith $len + $func_len_result
-		len=$func_arith_result
-		if test "X$objlist" = X ||
-		   test "$len" -lt "$max_cmd_len"; then
-		  func_append objlist " $obj"
-		else
-		  # The command $test_cmds is almost too long, add a
-		  # command to the queue.
-		  if test "$k" -eq 1 ; then
-		    # The first file doesn't have a previous command to add.
-		    reload_objs=$objlist
-		    eval concat_cmds=\"$reload_cmds\"
-		  else
-		    # All subsequent reloadable object files will link in
-		    # the last one created.
-		    reload_objs="$objlist $last_robj"
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
-		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
-		  func_arith $k + 1
-		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
-		  objlist=" $obj"
-		  func_len " $last_robj"
-		  func_arith $len0 + $func_len_result
-		  len=$func_arith_result
-		fi
-	      done
-	      # Handle the remaining objects by creating one last
-	      # reloadable object file.  All subsequent reloadable object
-	      # files will link in the last one created.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      reload_objs="$objlist $last_robj"
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
-	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
-	      fi
-	      func_append delfiles " $output"
-
-	    else
-	      output=
-	    fi
-
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
-	      $opt_dry_run || $RM $export_symbols
-	      libobjs=$output
-	      # Append the command to create the export file.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-	      if test -n "$last_robj"; then
-		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-	      fi
-	    fi
-
-	    test -n "$save_libobjs" &&
-	      func_verbose "creating a temporary reloadable object file: $output"
-
-	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
-		  func_quote_for_expand "$cmd"
-		  eval "func_echo $func_quote_for_expand_result"
-	      }
-	      $opt_dry_run || eval "$cmd" || {
-		lt_exit=$?
-
-		# Restore the uninstalled library and exit
-		if test "$opt_mode" = relink; then
-		  ( cd "$output_objdir" && \
-		    $RM "${realname}T" && \
-		    $MV "${realname}U" "$realname" )
-		fi
-
-		exit $lt_exit
-	      }
-	    done
-	    IFS="$save_ifs"
-
-	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-
-          if ${skipped_export-false}; then
-	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-	    fi
-
-	    if test -n "$orig_export_symbols"; then
-	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
-	      # though. Also, the filter scales superlinearly with the number of
-	      # global variables. join(1) would be nice here, but unfortunately
-	      # isn't a blessed tool.
-	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-	      export_symbols=$output_objdir/$libname.def
-	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	    fi
-	  fi
-
-	  libobjs=$output
-	  # Restore the value of output.
-	  output=$save_output
-
-	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	  # Expand the library linking commands again to reset the
-	  # value of $libobjs for piecewise linking.
-
-	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
-	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	      cmds=$module_expsym_cmds
-	    else
-	      cmds=$module_cmds
-	    fi
-	  else
-	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	      cmds=$archive_expsym_cmds
-	    else
-	      cmds=$archive_cmds
-	    fi
-	  fi
-	fi
-
-	if test -n "$delfiles"; then
-	  # Append the command to remove temporary files to $cmds.
-	  eval cmds=\"\$cmds~\$RM $delfiles\"
-	fi
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  func_append generated " $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  func_append libobjs " $func_extract_archives_result"
-	  test "X$libobjs" = "X " && libobjs=
-	fi
-
-	save_ifs="$IFS"; IFS='~'
-	for cmd in $cmds; do
-	  IFS="$save_ifs"
-	  eval cmd=\"$cmd\"
-	  $opt_silent || {
-	    func_quote_for_expand "$cmd"
-	    eval "func_echo $func_quote_for_expand_result"
-	  }
-	  $opt_dry_run || eval "$cmd" || {
-	    lt_exit=$?
-
-	    # Restore the uninstalled library and exit
-	    if test "$opt_mode" = relink; then
-	      ( cd "$output_objdir" && \
-	        $RM "${realname}T" && \
-		$MV "${realname}U" "$realname" )
-	    fi
-
-	    exit $lt_exit
-	  }
-	done
-	IFS="$save_ifs"
-
-	# Restore the uninstalled library and exit
-	if test "$opt_mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-	  if test -n "$convenience"; then
-	    if test -z "$whole_archive_flag_spec"; then
-	      func_show_eval '${RM}r "$gentop"'
-	    fi
-	  fi
-
-	  exit $EXIT_SUCCESS
-	fi
-
-	# Create links to the real library.
-	for linkname in $linknames; do
-	  if test "$realname" != "$linkname"; then
-	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-	  fi
-	done
-
-	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
-	  # On all known operating systems, these are identical.
-	  dlname="$soname"
-	fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
-	libobj=$output
-	func_lo2o "$libobj"
-	obj=$func_lo2o_result
-	;;
-      *)
-	libobj=
-	obj="$output"
-	;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
-      if test -n "$convenience"; then
-	if test -n "$whole_archive_flag_spec"; then
-	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
-	else
-	  gentop="$output_objdir/${obj}x"
-	  func_append generated " $gentop"
-
-	  func_extract_archives $gentop $convenience
-	  reload_conv_objs="$reload_objs $func_extract_archives_result"
-	fi
-      fi
-
-      # If we're not building shared, we need to use non_pic_objs
-      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-      output="$obj"
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$build_libtool_libs" != yes; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	# Create an invalid libtool object if no PIC, so that we don't
-	# accidentally link it into a program.
-	# $show "echo timestamp > $libobj"
-	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-	exit $EXIT_SUCCESS
-      fi
-
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
-	# Only do commands if we really have different PIC objects.
-	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
-	func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-	func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-	*cygwin*) func_stripname '' '.exe' "$output"
-	          output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
-
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
-	;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-	# Don't allow lazy linking, it breaks C++ global constructors
-	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
-	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-	    10.[0123])
-	      func_append compile_command " ${wl}-bind_at_load"
-	      func_append finalize_command " ${wl}-bind_at_load"
-	    ;;
-	  esac
-	fi
-	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $compile_deplibs " in
-	  *" -L$path/$objdir "*)
-	    func_append new_libs " -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $compile_deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) func_append new_libs " $deplib" ;;
-	  esac
-	  ;;
-	*) func_append new_libs " $deplib" ;;
-	esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      func_append compile_command " $compile_deplibs"
-      func_append finalize_command " $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	for libdir in $rpath $xrpath; do
-	  # This is the magic to use -rpath.
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) func_append finalize_rpath " $libdir" ;;
-	  esac
-	done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    func_append rpath " $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) func_append perm_rpath " $libdir" ;;
-	  esac
-	fi
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$libdir:"*) ;;
-	  ::) dllsearchpath=$libdir;;
-	  *) func_append dllsearchpath ":$libdir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) func_append dllsearchpath ":$testbindir";;
-	  esac
-	  ;;
-	esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    func_append rpath " $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$finalize_perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) func_append finalize_perm_rpath " $libdir" ;;
-	  esac
-	fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath="$rpath"
-
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
-	# Transform all the library objects into standard objects.
-	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-	func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=yes
-      case $host in
-      *cegcc* | *mingw32ce*)
-        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      esac
-      if test "$wrappers_required" = no; then
-	# Replace the output file specification.
-	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
-
-	# We have no uninstalled library dependencies, so finalize right now.
-	exit_status=0
-	func_show_eval "$link_command" 'exit_status=$?'
-
-	if test -n "$postlink_cmds"; then
-	  func_to_tool_file "$output"
-	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	  func_execute_cmds "$postlink_cmds" 'exit $?'
-	fi
-
-	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-	fi
-
-	exit $exit_status
-      fi
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-	if test -n "$perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $perm_rpath; do
-	    func_append rpath "$dir:"
-	  done
-	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-	if test -n "$finalize_perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $finalize_perm_rpath; do
-	    func_append rpath "$dir:"
-	  done
-	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-      fi
-
-      if test "$no_install" = yes; then
-	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
-	# Replace the output file specification.
-	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-	# Delete the old output file.
-	$opt_dry_run || $RM $output
-	# Link the executable and exit
-	func_show_eval "$link_command" 'exit $?'
-
-	if test -n "$postlink_cmds"; then
-	  func_to_tool_file "$output"
-	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	  func_execute_cmds "$postlink_cmds" 'exit $?'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
-
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
-
-      # Replace the output file specification.
-      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      if test -n "$postlink_cmds"; then
-	func_to_tool_file "$output_objdir/$outputname"
-	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	func_execute_cmds "$postlink_cmds" 'exit $?'
-      fi
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-	# Preserve any variables that may affect compiler behavior
-	for var in $variables_saved_for_relink; do
-	  if eval test -z \"\${$var+set}\"; then
-	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	  elif eval var_value=\$$var; test -z "$var_value"; then
-	    relink_command="$var=; export $var; $relink_command"
-	  else
-	    func_quote_for_eval "$var_value"
-	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	  fi
-	done
-	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-	# win32 will think the script is a binary if it has
-	# a .exe suffix, so we strip it off here.
-	case $output in
-	  *.exe) func_stripname '' '.exe' "$output"
-	         output=$func_stripname_result ;;
-	esac
-	# test for cygwin because mv fails w/o .exe extensions
-	case $host in
-	  *cygwin*)
-	    exeext=.exe
-	    func_stripname '' '.exe' "$outputname"
-	    outputname=$func_stripname_result ;;
-	  *) exeext= ;;
-	esac
-	case $host in
-	  *cygwin* | *mingw* )
-	    func_dirname_and_basename "$output" "" "."
-	    output_name=$func_basename_result
-	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
-	    $RM $cwrappersource $cwrapper
-	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_cwrapperexe_src > $cwrappersource
-
-	    # The wrapper executable is built using the $host compiler,
-	    # because it contains $host paths and files. If cross-
-	    # compiling, it, like the target executable, must be
-	    # executed on the $host or under an emulation environment.
-	    $opt_dry_run || {
-	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-	      $STRIP $cwrapper
-	    }
-
-	    # Now, create the wrapper script for func_source use:
-	    func_ltwrapper_scriptname $cwrapper
-	    $RM $func_ltwrapper_scriptname_result
-	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-	    $opt_dry_run || {
-	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
-		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-	      else
-		func_emit_wrapper no > $func_ltwrapper_scriptname_result
-	      fi
-	    }
-	  ;;
-	  * )
-	    $RM $output
-	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_wrapper no > $output
-	    chmod +x $output
-	  ;;
-	esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
-	  build_libtool_libs=no
-	else
-	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    func_append oldobjs " $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	func_append generated " $gentop"
-
-	func_extract_archives $gentop $addlibs
-	func_append oldobjs " $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-	cmds=$old_archive_from_new_cmds
-      else
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  func_append generated " $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  func_append oldobjs " $func_extract_archives_result"
-	fi
-
-	# POSIX demands no paths to be encoded in archives.  We have
-	# to avoid creating archives with duplicate basenames if we
-	# might have to extract them afterwards, e.g., when creating a
-	# static archive out of a convenience library, or when linking
-	# the entirety of a libtool archive into another (currently
-	# not supported by libtool).
-	if (for obj in $oldobjs
-	    do
-	      func_basename "$obj"
-	      $ECHO "$func_basename_result"
-	    done | sort | sort -uc >/dev/null 2>&1); then
-	  :
-	else
-	  echo "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
-	  func_append generated " $gentop"
-	  func_mkdir_p "$gentop"
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  counter=1
-	  for obj in $save_oldobjs
-	  do
-	    func_basename "$obj"
-	    objbase="$func_basename_result"
-	    case " $oldobjs " in
-	    " ") oldobjs=$obj ;;
-	    *[\ /]"$objbase "*)
-	      while :; do
-		# Make sure we don't pick an alternate name that also
-		# overlaps.
-		newobj=lt$counter-$objbase
-		func_arith $counter + 1
-		counter=$func_arith_result
-		case " $oldobjs " in
-		*[\ /]"$newobj "*) ;;
-		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
-		esac
-	      done
-	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      func_append oldobjs " $gentop/$newobj"
-	      ;;
-	    *) func_append oldobjs " $obj" ;;
-	    esac
-	  done
-	fi
-	eval cmds=\"$old_archive_cmds\"
-
-	func_len " $cmds"
-	len=$func_len_result
-	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  cmds=$old_archive_cmds
-	elif test -n "$archiver_list_spec"; then
-	  func_verbose "using command file archive linking..."
-	  for obj in $oldobjs
-	  do
-	    func_to_tool_file "$obj"
-	    $ECHO "$func_to_tool_file_result"
-	  done > $output_objdir/$libname.libcmd
-	  func_to_tool_file "$output_objdir/$libname.libcmd"
-	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
-	  cmds=$old_archive_cmds
-	else
-	  # the command line is too long to link in one step, link in parts
-	  func_verbose "using piecewise archive linking..."
-	  save_RANLIB=$RANLIB
-	  RANLIB=:
-	  objlist=
-	  concat_cmds=
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  # Is there a better way of finding the last object in the list?
-	  for obj in $save_oldobjs
-	  do
-	    last_oldobj=$obj
-	  done
-	  eval test_cmds=\"$old_archive_cmds\"
-	  func_len " $test_cmds"
-	  len0=$func_len_result
-	  len=$len0
-	  for obj in $save_oldobjs
-	  do
-	    func_len " $obj"
-	    func_arith $len + $func_len_result
-	    len=$func_arith_result
-	    func_append objlist " $obj"
-	    if test "$len" -lt "$max_cmd_len"; then
-	      :
-	    else
-	      # the above command should be used before it gets too long
-	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
-		RANLIB=$save_RANLIB
-	      fi
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
-	      objlist=
-	      len=$len0
-	    fi
-	  done
-	  RANLIB=$save_RANLIB
-	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
-	    eval cmds=\"\$concat_cmds\"
-	  else
-	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-	  fi
-	fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-	if eval test -z \"\${$var+set}\"; then
-	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	elif eval var_value=\$$var; test -z "$var_value"; then
-	  relink_command="$var=; export $var; $relink_command"
-	else
-	  func_quote_for_eval "$var_value"
-	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	fi
-      done
-      # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
-	relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-	for installed in no yes; do
-	  if test "$installed" = yes; then
-	    if test -z "$install_libdir"; then
-	      break
-	    fi
-	    output="$output_objdir/$outputname"i
-	    # Replace all uninstalled libtool libraries with the installed ones
-	    newdependency_libs=
-	    for deplib in $dependency_libs; do
-	      case $deplib in
-	      *.la)
-		func_basename "$deplib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      -L*)
-		func_stripname -L '' "$deplib"
-		func_replace_sysroot "$func_stripname_result"
-		func_append newdependency_libs " -L$func_replace_sysroot_result"
-		;;
-	      -R*)
-		func_stripname -R '' "$deplib"
-		func_replace_sysroot "$func_stripname_result"
-		func_append newdependency_libs " -R$func_replace_sysroot_result"
-		;;
-	      *) func_append newdependency_libs " $deplib" ;;
-	      esac
-	    done
-	    dependency_libs="$newdependency_libs"
-	    newdlfiles=
-
-	    for lib in $dlfiles; do
-	      case $lib in
-	      *.la)
-	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      *) func_append newdlfiles " $lib" ;;
-	      esac
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-	      *.la)
-		# Only pass preopened files to the pseudo-archive (for
-		# eventual linking with the app. that links it) if we
-		# didn't already link the preopened objects directly into
-		# the library:
-		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      esac
-	    done
-	    dlprefiles="$newdlprefiles"
-	  else
-	    newdlfiles=
-	    for lib in $dlfiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      func_append newdlfiles " $abs"
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      func_append newdlprefiles " $abs"
-	    done
-	    dlprefiles="$newdlprefiles"
-	  fi
-	  $RM $output
-	  # place dlname in correct position for cygwin
-	  # In fact, it would be nice if we could use this code for all target
-	  # systems that can't hard-code library paths into their executables
-	  # and that have no shared library path variable independent of PATH,
-	  # but it turns out we can't easily determine that from inspecting
-	  # libtool variables, so we have to hard-code the OSs to which it
-	  # applies here; at the moment, that means platforms that use the PE
-	  # object format with DLL files.  See the long comment at the top of
-	  # tests/bindir.at for full details.
-	  tdlname=$dlname
-	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
-	      # If a -bindir argument was supplied, place the dll there.
-	      if test "x$bindir" != x ;
-	      then
-		func_relative_path "$install_libdir" "$bindir"
-		tdlname=$func_relative_path_result$dlname
-	      else
-		# Otherwise fall back on heuristic.
-		tdlname=../bin/$dlname
-	      fi
-	      ;;
-	  esac
-	  $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
-	    $ECHO >> $output "\
-relink_command=\"$relink_command\""
-	  fi
-	done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
-    func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $opt_debug
-    RM="$nonopt"
-    files=
-    rmforce=
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    for arg
-    do
-      case $arg in
-      -f) func_append RM " $arg"; rmforce=yes ;;
-      -*) func_append RM " $arg" ;;
-      *) func_append files " $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	odir="$objdir"
-      else
-	odir="$dir/$objdir"
-      fi
-      func_basename "$file"
-      name="$func_basename_result"
-      test "$opt_mode" = uninstall && odir="$dir"
-
-      # Remember odir for removal later, being careful to avoid duplicates
-      if test "$opt_mode" = clean; then
-	case " $rmdirs " in
-	  *" $odir "*) ;;
-	  *) func_append rmdirs " $odir" ;;
-	esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-	 { test -h "$file"; } >/dev/null 2>&1 ||
-	 test -f "$file"; then
-	:
-      elif test -d "$file"; then
-	exit_status=1
-	continue
-      elif test "$rmforce" = yes; then
-	continue
-      fi
-
-      rmfiles="$file"
-
-      case $name in
-      *.la)
-	# Possibly a libtool archive, so verify it.
-	if func_lalib_p "$file"; then
-	  func_source $dir/$name
-
-	  # Delete the libtool libraries and symlinks.
-	  for n in $library_names; do
-	    func_append rmfiles " $odir/$n"
-	  done
-	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-
-	  case "$opt_mode" in
-	  clean)
-	    case " $library_names " in
-	    *" $dlname "*) ;;
-	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
-	    esac
-	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
-	    ;;
-	  uninstall)
-	    if test -n "$library_names"; then
-	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-
-	    if test -n "$old_library"; then
-	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-	    # FIXME: should reinstall the best remaining shared library.
-	    ;;
-	  esac
-	fi
-	;;
-
-      *.lo)
-	# Possibly a libtool object, so verify it.
-	if func_lalib_p "$file"; then
-
-	  # Read the .lo file
-	  func_source $dir/$name
-
-	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
-	    func_append rmfiles " $dir/$pic_object"
-	  fi
-
-	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
-	    func_append rmfiles " $dir/$non_pic_object"
-	  fi
-	fi
-	;;
-
-      *)
-	if test "$opt_mode" = clean ; then
-	  noexename=$name
-	  case $file in
-	  *.exe)
-	    func_stripname '' '.exe' "$file"
-	    file=$func_stripname_result
-	    func_stripname '' '.exe' "$name"
-	    noexename=$func_stripname_result
-	    # $file with .exe has already been added to rmfiles,
-	    # add $file without .exe
-	    func_append rmfiles " $file"
-	    ;;
-	  esac
-	  # Do a test to see if this is a libtool program.
-	  if func_ltwrapper_p "$file"; then
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      relink_command=
-	      func_source $func_ltwrapper_scriptname_result
-	      func_append rmfiles " $func_ltwrapper_scriptname_result"
-	    else
-	      relink_command=
-	      func_source $dir/$noexename
-	    fi
-
-	    # note $name still contains .exe if it was in $file originally
-	    # as does the version of $file that was added into $rmfiles
-	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      func_append rmfiles " $odir/lt-$name"
-	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      func_append rmfiles " $odir/lt-${noexename}.c"
-	    fi
-	  fi
-	fi
-	;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-
-    # Try to remove the ${objdir}s in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-	func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
-
-test -z "$opt_mode" && {
-  help="$generic_help"
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$opt_mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/mkinstalldirs b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/mkinstalldirs
deleted file mode 100644
index 879e5292..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/conftools/mkinstalldirs
+++ /dev/null
@@ -1,40 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-# $Id: mkinstalldirs,v 1.1 2012/06/15 13:38:49 dromagod Exp $
-
-errstatus=0
-
-for file
-do
-   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-   shift
-
-   pathcomp=
-   for d
-   do
-     pathcomp="$pathcomp$d"
-     case "$pathcomp" in
-       -* ) pathcomp=./$pathcomp ;;
-     esac
-
-     if test ! -d "$pathcomp"; then
-        echo "mkdir $pathcomp"
-
-        mkdir "$pathcomp" || lasterr=$?
-
-        if test ! -d "$pathcomp"; then
-  	  errstatus=$lasterr
-        fi
-     fi
-
-     pathcomp="$pathcomp/"
-   done
-done
-
-exit $errstatus
-
-# mkinstalldirs ends here
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/expat.png b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/expat.png
deleted file mode 100644
index 5bc0726cfd8508d0aa53cf53486b0330780b5f21..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1027
zcmV+e1pNDnP)<h;3K|Lk000e1NJLTq006!K002e^00000SKe_o00004XF*Lt006O%
z3;baP00009a7bBm000XT000XT0n*)m`~Uy|2XskIMF-La2>=T+4e4Js00002VoOIv
z0RM-N%)bBt1B6LLK~!ko?U>t@>mUq8)d+=9h#H{~3Q;2}M1^oacv#|LJI>6kWL^9-
zPA0}%;&3E@^wk$^{EffyH~z-o_#1!YZ~TqF@i+dTUID;=F}?$c-;2)xAis?t0001j
zNt%-%z{k7Vc?VxI{*k8u0Q6v>*t5c2?Yt$PXw%PjDsGSBpo5^>+Idg=&ZOT1xQ8it
zs-5@nP5R^goLSTX|Gswa;GZ!0BmMHiOV9CN(9ShJdpvizl70_>=|}LJc3hA*@uO2z
zLWqbY!`nd;DbHjK5iuo30Ps=$p3nn;LpsB6(+B{8pW{n(01aP?QUJX4<{6R$U_JW)
z<qv?Xu;l6pB~*grqES2fW&8|ZYFUzl$x)7o`r3usGcy%IAj%<gOSDH+{8M~v3Cr&S
zA7963Z{V}aov51<WX-5g9lncgal5k4gB-IMR`~k9P`D^B;nVP#gDOdHJB8TS-iEIh
zcT6dzK&D(Qv`_Y9pT-;bWzt;i9bOK(tZLVRACeNVG2p1uJ>X;SU{%D(ckm??#nEW+
z3XW&yX|=z!mNR^r^i4H@$tv#fdGSjnZ?aNtwTnA^*7%yJESEWc9BQ!gKqH75e#s<H
zn@dkbM4{v1VeOJe>hWuW7Wm8RR|3FG{7K8MEuu4u<fhI&#g~8pF31{RPI~Te4<E*2
zO|!_`py-s<tnssB#`=~i{#-lCg3j?5J|#<h25?f$GoIqhQSjFIEA2!-PwWsYPkqX!
z*S7pr1yofxS-NZrSXYV<{DpQ_3wP@KGoSL4w!BJbFi+!6P@ZHpfy=Tr)6U$<Ppj?_
zZZPT?TXU~#mo8geT}dq;UgD41IW1c2o~LUY#Hb?)HwTYn?b1y{i<=I2jVpXH<>R_#
zIO{m=qZz|-nH=gjrMh+%n?(}|gI&XArp#V9+VyqWuwC@~LFu(Nx`=H{PAXZfYFBIY
zQ3qA-5y2@Xwk09?Ct)b{@%e5`!m-=JzG#W*bQEdEk6k^Jw%aL2m93!;i=%cfH!C;x
zy3t|V1A<YaGkvB?e{r5Nd2MfYH2V3j3=^8KblORmTg6vT8ia_r-6z(=Q@)IG=FjHw
z60H75{kGFix^dj_8%MN5PkR4gmS244gYd(HQ@RhrcMpz8KL`Jbc0LH75MMv0`ylZ=
xxi<dB|0w)Fyf*&E-}oDU<8S<pzw!SE{C^g%-Q{+dOhW(w002ovPDHLkV1gDS?lb@Z

diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/reference.html b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/reference.html
deleted file mode 100644
index 8811a339..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/reference.html
+++ /dev/null
@@ -1,2390 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<!-- Copyright 1999,2000 Clark Cooper <coopercc@netheaven.com>
-     All rights reserved.
-     This is free software. You may distribute or modify according to
-     the terms of the MIT/X License -->
-  <title>Expat XML Parser</title>
-  <meta name="author" content="Clark Cooper, coopercc@netheaven.com" />
-  <meta http-equiv="Content-Style-Type" content="text/css" />
-  <link href="style.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-  <table cellspacing="0" cellpadding="0" width="100%">
-    <tr>
-      <td class="corner"><img src="expat.png" alt="(Expat logo)" /></td>
-      <td class="banner"><h1>The Expat XML Parser</h1></td>
-    </tr>
-    <tr>
-      <td class="releaseno">Release 2.0.1</td>
-      <td></td>
-    </tr>
-  </table>
-<div class="content">
-
-<p>Expat is a library, written in C, for parsing XML documents. It's
-the underlying XML parser for the open source Mozilla project, Perl's
-<code>XML::Parser</code>, Python's <code>xml.parsers.expat</code>, and
-other open-source XML parsers.</p>
-
-<p>This library is the creation of James Clark, who's also given us
-groff (an nroff look-alike), Jade (an implemention of ISO's DSSSL
-stylesheet language for SGML), XP (a Java XML parser package), XT (a
-Java XSL engine).  James was also the technical lead on the XML
-Working Group at W3C that produced the XML specification.</p>
-
-<p>This is free software, licensed under the <a
-href="../COPYING">MIT/X Consortium license</a>. You may download it
-from <a href="http://www.libexpat.org/">the Expat home page</a>.
-</p>
-
-<p>The bulk of this document was originally commissioned as an article
-by <a href="http://www.xml.com/">XML.com</a>. They graciously allowed
-Clark Cooper to retain copyright and to distribute it with Expat.
-This version has been substantially extended to include documentation
-on features which have been added since the original article was
-published, and additional information on using the original
-interface.</p>
-
-<hr />
-<h2>Table of Contents</h2>
-<ul>
-  <li><a href="#overview">Overview</a></li>
-  <li><a href="#building">Building and Installing</a></li>
-  <li><a href="#using">Using Expat</a></li>
-  <li><a href="#reference">Reference</a>
-  <ul>
-    <li><a href="#creation">Parser Creation Functions</a>
-    <ul>
-      <li><a href="#XML_ParserCreate">XML_ParserCreate</a></li>
-      <li><a href="#XML_ParserCreateNS">XML_ParserCreateNS</a></li>
-      <li><a href="#XML_ParserCreate_MM">XML_ParserCreate_MM</a></li>
-      <li><a href="#XML_ExternalEntityParserCreate">XML_ExternalEntityParserCreate</a></li>
-      <li><a href="#XML_ParserFree">XML_ParserFree</a></li>
-      <li><a href="#XML_ParserReset">XML_ParserReset</a></li>
-    </ul>
-    </li>
-    <li><a href="#parsing">Parsing Functions</a>
-    <ul>
-      <li><a href="#XML_Parse">XML_Parse</a></li>
-      <li><a href="#XML_ParseBuffer">XML_ParseBuffer</a></li>
-      <li><a href="#XML_GetBuffer">XML_GetBuffer</a></li>
-      <li><a href="#XML_StopParser">XML_StopParser</a></li>
-      <li><a href="#XML_ResumeParser">XML_ResumeParser</a></li>
-      <li><a href="#XML_GetParsingStatus">XML_GetParsingStatus</a></li>
-    </ul>
-    </li>
-    <li><a href="#setting">Handler Setting Functions</a>
-    <ul>
-      <li><a href="#XML_SetStartElementHandler">XML_SetStartElementHandler</a></li>
-      <li><a href="#XML_SetEndElementHandler">XML_SetEndElementHandler</a></li>
-      <li><a href="#XML_SetElementHandler">XML_SetElementHandler</a></li>
-      <li><a href="#XML_SetCharacterDataHandler">XML_SetCharacterDataHandler</a></li>
-      <li><a href="#XML_SetProcessingInstructionHandler">XML_SetProcessingInstructionHandler</a></li>
-      <li><a href="#XML_SetCommentHandler">XML_SetCommentHandler</a></li>
-      <li><a href="#XML_SetStartCdataSectionHandler">XML_SetStartCdataSectionHandler</a></li>
-      <li><a href="#XML_SetEndCdataSectionHandler">XML_SetEndCdataSectionHandler</a></li>
-      <li><a href="#XML_SetCdataSectionHandler">XML_SetCdataSectionHandler</a></li>
-      <li><a href="#XML_SetDefaultHandler">XML_SetDefaultHandler</a></li>
-      <li><a href="#XML_SetDefaultHandlerExpand">XML_SetDefaultHandlerExpand</a></li>
-      <li><a href="#XML_SetExternalEntityRefHandler">XML_SetExternalEntityRefHandler</a></li>
-      <li><a href="#XML_SetExternalEntityRefHandlerArg">XML_SetExternalEntityRefHandlerArg</a></li>
-      <li><a href="#XML_SetSkippedEntityHandler">XML_SetSkippedEntityHandler</a></li>
-      <li><a href="#XML_SetUnknownEncodingHandler">XML_SetUnknownEncodingHandler</a></li>
-      <li><a href="#XML_SetStartNamespaceDeclHandler">XML_SetStartNamespaceDeclHandler</a></li>
-      <li><a href="#XML_SetEndNamespaceDeclHandler">XML_SetEndNamespaceDeclHandler</a></li>
-      <li><a href="#XML_SetNamespaceDeclHandler">XML_SetNamespaceDeclHandler</a></li>
-      <li><a href="#XML_SetXmlDeclHandler">XML_SetXmlDeclHandler</a></li>		  
-      <li><a href="#XML_SetStartDoctypeDeclHandler">XML_SetStartDoctypeDeclHandler</a></li>
-      <li><a href="#XML_SetEndDoctypeDeclHandler">XML_SetEndDoctypeDeclHandler</a></li>
-      <li><a href="#XML_SetDoctypeDeclHandler">XML_SetDoctypeDeclHandler</a></li>
-      <li><a href="#XML_SetElementDeclHandler">XML_SetElementDeclHandler</a></li>
-      <li><a href="#XML_SetAttlistDeclHandler">XML_SetAttlistDeclHandler</a></li>
-      <li><a href="#XML_SetEntityDeclHandler">XML_SetEntityDeclHandler</a></li>
-      <li><a href="#XML_SetUnparsedEntityDeclHandler">XML_SetUnparsedEntityDeclHandler</a></li>
-      <li><a href="#XML_SetNotationDeclHandler">XML_SetNotationDeclHandler</a></li>
-      <li><a href="#XML_SetNotStandaloneHandler">XML_SetNotStandaloneHandler</a></li>
-    </ul>
-    </li>
-    <li><a href="#position">Parse Position and Error Reporting Functions</a>
-    <ul>
-      <li><a href="#XML_GetErrorCode">XML_GetErrorCode</a></li>
-      <li><a href="#XML_ErrorString">XML_ErrorString</a></li>
-      <li><a href="#XML_GetCurrentByteIndex">XML_GetCurrentByteIndex</a></li>
-      <li><a href="#XML_GetCurrentLineNumber">XML_GetCurrentLineNumber</a></li>
-      <li><a href="#XML_GetCurrentColumnNumber">XML_GetCurrentColumnNumber</a></li>
-      <li><a href="#XML_GetCurrentByteCount">XML_GetCurrentByteCount</a></li>
-      <li><a href="#XML_GetInputContext">XML_GetInputContext</a></li>
-    </ul>
-    </li>
-    <li><a href="#miscellaneous">Miscellaneous Functions</a>
-    <ul>
-      <li><a href="#XML_SetUserData">XML_SetUserData</a></li>
-      <li><a href="#XML_GetUserData">XML_GetUserData</a></li>
-      <li><a href="#XML_UseParserAsHandlerArg">XML_UseParserAsHandlerArg</a></li>
-      <li><a href="#XML_SetBase">XML_SetBase</a></li>
-      <li><a href="#XML_GetBase">XML_GetBase</a></li>
-      <li><a href="#XML_GetSpecifiedAttributeCount">XML_GetSpecifiedAttributeCount</a></li>
-      <li><a href="#XML_GetIdAttributeIndex">XML_GetIdAttributeIndex</a></li>
-      <li><a href="#XML_GetAttributeInfo">XML_GetAttributeInfo</a></li>
-      <li><a href="#XML_SetEncoding">XML_SetEncoding</a></li>
-      <li><a href="#XML_SetParamEntityParsing">XML_SetParamEntityParsing</a></li>
-      <li><a href="#XML_SetHashSalt">XML_SetHashSalt</a></li>
-      <li><a href="#XML_UseForeignDTD">XML_UseForeignDTD</a></li>
-      <li><a href="#XML_SetReturnNSTriplet">XML_SetReturnNSTriplet</a></li>
-      <li><a href="#XML_DefaultCurrent">XML_DefaultCurrent</a></li>
-      <li><a href="#XML_ExpatVersion">XML_ExpatVersion</a></li>
-      <li><a href="#XML_ExpatVersionInfo">XML_ExpatVersionInfo</a></li>
-      <li><a href="#XML_GetFeatureList">XML_GetFeatureList</a></li>
-      <li><a href="#XML_FreeContentModel">XML_FreeContentModel</a></li>
-      <li><a href="#XML_MemMalloc">XML_MemMalloc</a></li>
-      <li><a href="#XML_MemRealloc">XML_MemRealloc</a></li>
-      <li><a href="#XML_MemFree">XML_MemFree</a></li>
-    </ul>
-    </li>
-  </ul>  
-  </li>
-</ul>
-
-<hr />
-<h2><a name="overview">Overview</a></h2>
-
-<p>Expat is a stream-oriented parser. You register callback (or
-handler) functions with the parser and then start feeding it the
-document.  As the parser recognizes parts of the document, it will
-call the appropriate handler for that part (if you've registered one.) 
-The document is fed to the parser in pieces, so you can start parsing
-before you have all the document. This also allows you to parse really
-huge documents that won't fit into memory.</p>
-
-<p>Expat can be intimidating due to the many kinds of handlers and
-options you can set. But you only need to learn four functions in
-order to do 90% of what you'll want to do with it:</p>
-
-<dl>
-
-<dt><code><a href= "#XML_ParserCreate"
-             >XML_ParserCreate</a></code></dt>
-  <dd>Create a new parser object.</dd>
-
-<dt><code><a href= "#XML_SetElementHandler"
-             >XML_SetElementHandler</a></code></dt>
-  <dd>Set handlers for start and end tags.</dd>
-
-<dt><code><a href= "#XML_SetCharacterDataHandler"
-             >XML_SetCharacterDataHandler</a></code></dt>
-  <dd>Set handler for text.</dd>
-
-<dt><code><a href= "#XML_Parse"
-             >XML_Parse</a></code></dt>
-  <dd>Pass a buffer full of document to the parser</dd>
-</dl>
-
-<p>These functions and others are described in the <a
-href="#reference">reference</a> part of this document. The reference
-section also describes in detail the parameters passed to the
-different types of handlers.</p>
-
-<p>Let's look at a very simple example program that only uses 3 of the
-above functions (it doesn't need to set a character handler.) The
-program <a href="../examples/outline.c">outline.c</a> prints an
-element outline, indenting child elements to distinguish them from the
-parent element that contains them. The start handler does all the
-work.  It prints two indenting spaces for every level of ancestor
-elements, then it prints the element and attribute
-information. Finally it increments the global <code>Depth</code>
-variable.</p>
-
-<pre class="eg">
-int Depth;
-
-void XMLCALL
-start(void *data, const char *el, const char **attr) {
-  int i;
-
-  for (i = 0; i &lt; Depth; i++)
-    printf("  ");
-
-  printf("%s", el);
-
-  for (i = 0; attr[i]; i += 2) {
-    printf(" %s='%s'", attr[i], attr[i + 1]);
-  }
-
-  printf("\n");
-  Depth++;
-}  /* End of start handler */
-</pre>
-
-<p>The end tag simply does the bookkeeping work of decrementing
-<code>Depth</code>.</p>
-<pre class="eg">
-void XMLCALL
-end(void *data, const char *el) {
-  Depth--;
-}  /* End of end handler */
-</pre>
-
-<p>Note the <code>XMLCALL</code> annotation used for the callbacks.
-This is used to ensure that the Expat and the callbacks are using the
-same calling convention in case the compiler options used for Expat
-itself and the client code are different.  Expat tries not to care
-what the default calling convention is, though it may require that it
-be compiled with a default convention of "cdecl" on some platforms.
-For code which uses Expat, however, the calling convention is
-specified by the <code>XMLCALL</code> annotation on most platforms;
-callbacks should be defined using this annotation.</p>
-
-<p>The <code>XMLCALL</code> annotation was added in Expat 1.95.7, but
-existing working Expat applications don't need to add it (since they
-are already using the "cdecl" calling convention, or they wouldn't be
-working).  The annotation is only needed if the default calling
-convention may be something other than "cdecl".  To use the annotation
-safely with older versions of Expat, you can conditionally define it
-<em>after</em> including Expat's header file:</p>
-
-<pre class="eg">
-#include &lt;expat.h&gt;
-
-#ifndef XMLCALL
-#if defined(_MSC_EXTENSIONS) &amp;&amp; !defined(__BEOS__) &amp;&amp; !defined(__CYGWIN__)
-#define XMLCALL __cdecl
-#elif defined(__GNUC__)
-#define XMLCALL __attribute__((cdecl))
-#else
-#define XMLCALL
-#endif
-#endif
-</pre>
-
-<p>After creating the parser, the main program just has the job of
-shoveling the document to the parser so that it can do its work.</p>
-
-<hr />
-<h2><a name="building">Building and Installing Expat</a></h2>
-
-<p>The Expat distribution comes as a compressed (with GNU gzip) tar
-file.  You may download the latest version from <a href=
-"http://sourceforge.net/projects/expat/" >Source Forge</a>.  After
-unpacking this, cd into the directory. Then follow either the Win32
-directions or Unix directions below.</p>
-
-<h3>Building under Win32</h3>
-
-<p>If you're using the GNU compiler under cygwin, follow the Unix
-directions in the next section. Otherwise if you have Microsoft's
-Developer Studio installed, then from Windows Explorer double-click on
-"expat.dsp" in the lib directory and build and install in the usual
-manner.</p>
-
-<p>Alternatively, you may download the Win32 binary package that
-contains the "expat.h" include file and a pre-built DLL.</p>
-
-<h3>Building under Unix (or GNU)</h3>
-
-<p>First you'll need to run the configure shell script in order to
-configure the Makefiles and headers for your system.</p>
-
-<p>If you're happy with all the defaults that configure picks for you,
-and you have permission on your system to install into /usr/local, you
-can install Expat with this sequence of commands:</p>
-
-<pre class="eg">
-./configure
-make
-make install
-</pre>
-
-<p>There are some options that you can provide to this script, but the
-only one we'll mention here is the <code>--prefix</code> option. You
-can find out all the options available by running configure with just
-the <code>--help</code> option.</p>
-
-<p>By default, the configure script sets things up so that the library
-gets installed in <code>/usr/local/lib</code> and the associated
-header file in <code>/usr/local/include</code>.  But if you were to
-give the option, <code>--prefix=/home/me/mystuff</code>, then the
-library and header would get installed in
-<code>/home/me/mystuff/lib</code> and
-<code>/home/me/mystuff/include</code> respectively.</p>
-
-<h3>Configuring Expat Using the Pre-Processor</h3>
-
-<p>Expat's feature set can be configured using a small number of
-pre-processor definitions.  The definition of this symbols does not
-affect the set of entry points for Expat, only the behavior of the API
-and the definition of character types in the case of
-<code>XML_UNICODE_WCHAR_T</code>.  The symbols are:</p>
-
-<dl class="cpp-symbols">
-<dt>XML_DTD</dt>
-<dd>Include support for using and reporting DTD-based content.  If
-this is defined, default attribute values from an external DTD subset
-are reported and attribute value normalization occurs based on the
-type of attributes defined in the external subset.  Without
-this, Expat has a smaller memory footprint and can be faster, but will
-not load external entities or process conditional sections.  This does
-not affect the set of functions available in the API.</dd>
-
-<dt>XML_NS</dt>
-<dd>When defined, support for the <cite><a href=
-"http://www.w3.org/TR/REC-xml-names/" >Namespaces in XML</a></cite>
-specification is included.</dd>
-
-<dt>XML_UNICODE</dt>
-<dd>When defined, character data reported to the application is
-encoded in UTF-16 using wide characters of the type
-<code>XML_Char</code>.  This is implied if
-<code>XML_UNICODE_WCHAR_T</code> is defined.</dd>
-
-<dt>XML_UNICODE_WCHAR_T</dt>
-<dd>If defined, causes the <code>XML_Char</code> character type to be
-defined using the <code>wchar_t</code> type; otherwise, <code>unsigned
-short</code> is used.  Defining this implies
-<code>XML_UNICODE</code>.</dd>
-
-<dt>XML_LARGE_SIZE</dt>
-<dd>If defined, causes the <code>XML_Size</code> and <code>XML_Index</code>
-integer types to be at least 64 bits in size. This is intended to support
-processing of very large input streams, where the return values of
-<code><a href="#XML_GetCurrentByteIndex" >XML_GetCurrentByteIndex</a></code>,
-<code><a href="#XML_GetCurrentLineNumber" >XML_GetCurrentLineNumber</a></code> and
-<code><a href="#XML_GetCurrentColumnNumber" >XML_GetCurrentColumnNumber</a></code>
-could overflow. It may not be supported by all compilers, and is turned
-off by default.</dd>
-
-<dt>XML_CONTEXT_BYTES</dt>
-<dd>The number of input bytes of markup context which the parser will
-ensure are available for reporting via <code><a href=
-"#XML_GetInputContext" >XML_GetInputContext</a></code>.  This is
-normally set to 1024, and must be set to a positive interger.  If this
-is not defined, the input context will not be available and <code><a
-href= "#XML_GetInputContext" >XML_GetInputContext</a></code> will
-always report NULL.  Without this, Expat has a smaller memory
-footprint and can be faster.</dd>
-
-<dt>XML_STATIC</dt>
-<dd>On Windows, this should be set if Expat is going to be linked
-statically with the code that calls it; this is required to get all
-the right MSVC magic annotations correct.  This is ignored on other
-platforms.</dd>
-
-<dt>XML_ATTR_INFO</dt>
-<dd>If defined, makes the the additional function <code><a href=
-"#XML_GetAttributeInfo" >XML_GetAttributeInfo</a></code> available
-for reporting attribute byte offsets.</dd>
-</dl>
-
-<hr />
-<h2><a name="using">Using Expat</a></h2>
-
-<h3>Compiling and Linking Against Expat</h3>
-
-<p>Unless you installed Expat in a location not expected by your
-compiler and linker, all you have to do to use Expat in your programs
-is to include the Expat header (<code>#include &lt;expat.h&gt;</code>)
-in your files that make calls to it and to tell the linker that it
-needs to link against the Expat library.  On Unix systems, this would
-usually be done with the <code>-lexpat</code> argument.  Otherwise,
-you'll need to tell the compiler where to look for the Expat header
-and the linker where to find the Expat library.  You may also need to
-take steps to tell the operating system where to find this library at
-run time.</p>
-
-<p>On a Unix-based system, here's what a Makefile might look like when
-Expat is installed in a standard location:</p>
-
-<pre class="eg">
-CC=cc
-LDFLAGS=
-LIBS= -lexpat
-xmlapp: xmlapp.o
-        $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
-</pre>
-
-<p>If you installed Expat in, say, <code>/home/me/mystuff</code>, then
-the Makefile would look like this:</p>
-
-<pre class="eg">
-CC=cc
-CFLAGS= -I/home/me/mystuff/include
-LDFLAGS=
-LIBS= -L/home/me/mystuff/lib -lexpat
-xmlapp: xmlapp.o
-        $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
-</pre>
-
-<p>You'd also have to set the environment variable
-<code>LD_LIBRARY_PATH</code> to <code>/home/me/mystuff/lib</code> (or
-to <code>${LD_LIBRARY_PATH}:/home/me/mystuff/lib</code> if
-LD_LIBRARY_PATH already has some directories in it) in order to run
-your application.</p>
-
-<h3>Expat Basics</h3>
-
-<p>As we saw in the example in the overview, the first step in parsing
-an XML document with Expat is to create a parser object. There are <a
-href="#creation">three functions</a> in the Expat API for creating a
-parser object.  However, only two of these (<code><a href=
-"#XML_ParserCreate" >XML_ParserCreate</a></code> and <code><a href=
-"#XML_ParserCreateNS" >XML_ParserCreateNS</a></code>) can be used for
-constructing a parser for a top-level document.  The object returned
-by these functions is an opaque pointer (i.e. "expat.h" declares it as
-void *) to data with further internal structure. In order to free the
-memory associated with this object you must call <code><a href=
-"#XML_ParserFree" >XML_ParserFree</a></code>. Note that if you have
-provided any <a href="#userdata">user data</a> that gets stored in the
-parser, then your application is responsible for freeing it prior to
-calling <code>XML_ParserFree</code>.</p>
-
-<p>The objects returned by the parser creation functions are good for
-parsing only one XML document or external parsed entity. If your
-application needs to parse many XML documents, then it needs to create
-a parser object for each one. The best way to deal with this is to
-create a higher level object that contains all the default
-initialization you want for your parser objects.</p>
-
-<p>Walking through a document hierarchy with a stream oriented parser
-will require a good stack mechanism in order to keep track of current
-context.  For instance, to answer the simple question, "What element
-does this text belong to?" requires a stack, since the parser may have
-descended into other elements that are children of the current one and
-has encountered this text on the way out.</p>
-
-<p>The things you're likely to want to keep on a stack are the
-currently opened element and it's attributes. You push this
-information onto the stack in the start handler and you pop it off in
-the end handler.</p>
-
-<p>For some tasks, it is sufficient to just keep information on what
-the depth of the stack is (or would be if you had one.) The outline
-program shown above presents one example. Another such task would be
-skipping over a complete element. When you see the start tag for the
-element you want to skip, you set a skip flag and record the depth at
-which the element started.  When the end tag handler encounters the
-same depth, the skipped element has ended and the flag may be
-cleared. If you follow the convention that the root element starts at
-1, then you can use the same variable for skip flag and skip
-depth.</p>
-
-<pre class="eg">
-void
-init_info(Parseinfo *info) {
-  info->skip = 0;
-  info->depth = 1;
-  /* Other initializations here */
-}  /* End of init_info */
-
-void XMLCALL
-rawstart(void *data, const char *el, const char **attr) {
-  Parseinfo *inf = (Parseinfo *) data;
-
-  if (! inf->skip) {
-    if (should_skip(inf, el, attr)) {
-      inf->skip = inf->depth;
-    }
-    else
-      start(inf, el, attr);     /* This does rest of start handling */
-  }
-
-  inf->depth++;
-}  /* End of rawstart */
-
-void XMLCALL
-rawend(void *data, const char *el) {
-  Parseinfo *inf = (Parseinfo *) data;
-
-  inf->depth--;
-
-  if (! inf->skip)
-    end(inf, el);              /* This does rest of end handling */
-
-  if (inf->skip == inf->depth)
-    inf->skip = 0;
-}  /* End rawend */
-</pre>
-
-<p>Notice in the above example the difference in how depth is
-manipulated in the start and end handlers. The end tag handler should
-be the mirror image of the start tag handler. This is necessary to
-properly model containment. Since, in the start tag handler, we
-incremented depth <em>after</em> the main body of start tag code, then
-in the end handler, we need to manipulate it <em>before</em> the main
-body.  If we'd decided to increment it first thing in the start
-handler, then we'd have had to decrement it last thing in the end
-handler.</p>
-
-<h3 id="userdata">Communicating between handlers</h3>
-
-<p>In order to be able to pass information between different handlers
-without using globals, you'll need to define a data structure to hold
-the shared variables. You can then tell Expat (with the <code><a href=
-"#XML_SetUserData" >XML_SetUserData</a></code> function) to pass a
-pointer to this structure to the handlers.  This is the first
-argument received by most handlers.  In the <a href="#reference"
->reference section</a>, an argument to a callback function is named
-<code>userData</code> and have type <code>void *</code> if the user
-data is passed; it will have the type <code>XML_Parser</code> if the
-parser itself is passed.  When the parser is passed, the user data may
-be retrieved using <code><a href="#XML_GetUserData"
->XML_GetUserData</a></code>.</p>
-
-<p>One common case where multiple calls to a single handler may need
-to communicate using an application data structure is the case when
-content passed to the character data handler (set by <code><a href=
-"#XML_SetCharacterDataHandler"
->XML_SetCharacterDataHandler</a></code>) needs to be accumulated.  A
-common first-time mistake with any of the event-oriented interfaces to
-an XML parser is to expect all the text contained in an element to be
-reported by a single call to the character data handler.  Expat, like
-many other XML parsers, reports such data as a sequence of calls;
-there's no way to know when the end of the sequence is reached until a
-different callback is made.  A buffer referenced by the user data
-structure proves both an effective and convenient place to accumulate
-character data.</p>
-
-<!-- XXX example needed here -->
-
-
-<h3>XML Version</h3>
-
-<p>Expat is an XML 1.0 parser, and as such never complains based on
-the value of the <code>version</code> pseudo-attribute in the XML
-declaration, if present.</p>
-
-<p>If an application needs to check the version number (to support
-alternate processing), it should use the <code><a href=
-"#XML_SetXmlDeclHandler" >XML_SetXmlDeclHandler</a></code> function to
-set a handler that uses the information in the XML declaration to
-determine what to do.  This example shows how to check that only a
-version number of <code>"1.0"</code> is accepted:</p>
-
-<pre class="eg">
-static int wrong_version;
-static XML_Parser parser;
-
-static void XMLCALL
-xmldecl_handler(void            *userData,
-                const XML_Char  *version,
-                const XML_Char  *encoding,
-                int              standalone)
-{
-  static const XML_Char Version_1_0[] = {'1', '.', '0', 0};
-
-  int i;
-
-  for (i = 0; i &lt; (sizeof(Version_1_0) / sizeof(Version_1_0[0])); ++i) {
-    if (version[i] != Version_1_0[i]) {
-      wrong_version = 1;
-      /* also clear all other handlers: */
-      XML_SetCharacterDataHandler(parser, NULL);
-      ...
-      return;
-    }
-  }
-  ...
-}
-</pre>
-
-<h3>Namespace Processing</h3>
-
-<p>When the parser is created using the <code><a href=
-"#XML_ParserCreateNS" >XML_ParserCreateNS</a></code>, function, Expat
-performs namespace processing. Under namespace processing, Expat
-consumes <code>xmlns</code> and <code>xmlns:...</code> attributes,
-which declare namespaces for the scope of the element in which they
-occur. This means that your start handler will not see these
-attributes.  Your application can still be informed of these
-declarations by setting namespace declaration handlers with <a href=
-"#XML_SetNamespaceDeclHandler"
-><code>XML_SetNamespaceDeclHandler</code></a>.</p>
-
-<p>Element type and attribute names that belong to a given namespace
-are passed to the appropriate handler in expanded form. By default
-this expanded form is a concatenation of the namespace URI, the
-separator character (which is the 2nd argument to <code><a href=
-"#XML_ParserCreateNS" >XML_ParserCreateNS</a></code>), and the local
-name (i.e. the part after the colon). Names with undeclared prefixes
-are not well-formed when namespace processing is enabled, and will
-trigger an error. Unprefixed attribute names are never expanded,
-and unprefixed element names are only expanded when they are in the
-scope of a default namespace.</p>
-
-<p>However if <code><a href= "#XML_SetReturnNSTriplet"
->XML_SetReturnNSTriplet</a></code> has been called with a non-zero
-<code>do_nst</code> parameter, then the expanded form for names with
-an explicit prefix is a concatenation of: URI, separator, local name,
-separator, prefix.</p>
-
-<p>You can set handlers for the start of a namespace declaration and
-for the end of a scope of a declaration with the <code><a href=
-"#XML_SetNamespaceDeclHandler" >XML_SetNamespaceDeclHandler</a></code>
-function.  The StartNamespaceDeclHandler is called prior to the start
-tag handler and the EndNamespaceDeclHandler is called after the
-corresponding end tag that ends the namespace's scope.  The namespace
-start handler gets passed the prefix and URI for the namespace.  For a
-default namespace declaration (xmlns='...'), the prefix will be null.
-The URI will be null for the case where the default namespace is being
-unset.  The namespace end handler just gets the prefix for the closing
-scope.</p>
-
-<p>These handlers are called for each declaration. So if, for
-instance, a start tag had three namespace declarations, then the
-StartNamespaceDeclHandler would be called three times before the start
-tag handler is called, once for each declaration.</p>
-
-<h3>Character Encodings</h3>
-
-<p>While XML is based on Unicode, and every XML processor is required
-to recognized UTF-8 and UTF-16 (1 and 2 byte encodings of Unicode),
-other encodings may be declared in XML documents or entities. For the
-main document, an XML declaration may contain an encoding
-declaration:</p>
-<pre>
-&lt;?xml version="1.0" encoding="ISO-8859-2"?&gt;
-</pre>
-
-<p>External parsed entities may begin with a text declaration, which
-looks like an XML declaration with just an encoding declaration:</p>
-<pre>
-&lt;?xml encoding="Big5"?&gt;
-</pre>
-
-<p>With Expat, you may also specify an encoding at the time of
-creating a parser. This is useful when the encoding information may
-come from a source outside the document itself (like a higher level
-protocol.)</p>
-
-<p><a name="builtin_encodings"></a>There are four built-in encodings
-in Expat:</p>
-<ul>
-<li>UTF-8</li>
-<li>UTF-16</li>
-<li>ISO-8859-1</li>
-<li>US-ASCII</li>
-</ul>
-
-<p>Anything else discovered in an encoding declaration or in the
-protocol encoding specified in the parser constructor, triggers a call
-to the <code>UnknownEncodingHandler</code>. This handler gets passed
-the encoding name and a pointer to an <code>XML_Encoding</code> data
-structure. Your handler must fill in this structure and return
-<code>XML_STATUS_OK</code> if it knows how to deal with the
-encoding. Otherwise the handler should return
-<code>XML_STATUS_ERROR</code>.  The handler also gets passed a pointer
-to an optional application data structure that you may indicate when
-you set the handler.</p>
-
-<p>Expat places restrictions on character encodings that it can
-support by filling in the <code>XML_Encoding</code> structure.
-include file:</p>
-<ol>
-<li>Every ASCII character that can appear in a well-formed XML document
-must be represented by a single byte, and that byte must correspond to
-it's ASCII encoding (except for the characters $@\^'{}~)</li>
-<li>Characters must be encoded in 4 bytes or less.</li>
-<li>All characters encoded must have Unicode scalar values less than or
-equal to 65535 (0xFFFF)<em>This does not apply to the built-in support
-for UTF-16 and UTF-8</em></li>
-<li>No character may be encoded by more that one distinct sequence of
-bytes</li>
-</ol>
-
-<p><code>XML_Encoding</code> contains an array of integers that
-correspond to the 1st byte of an encoding sequence. If the value in
-the array for a byte is zero or positive, then the byte is a single
-byte encoding that encodes the Unicode scalar value contained in the
-array. A -1 in this array indicates a malformed byte. If the value is
--2, -3, or -4, then the byte is the beginning of a 2, 3, or 4 byte
-sequence respectively. Multi-byte sequences are sent to the convert
-function pointed at in the <code>XML_Encoding</code> structure. This
-function should return the Unicode scalar value for the sequence or -1
-if the sequence is malformed.</p>
-
-<p>One pitfall that novice Expat users are likely to fall into is that
-although Expat may accept input in various encodings, the strings that
-it passes to the handlers are always encoded in UTF-8 or UTF-16
-(depending on how Expat was compiled). Your application is responsible
-for any translation of these strings into other encodings.</p>
-
-<h3>Handling External Entity References</h3>
-
-<p>Expat does not read or parse external entities directly. Note that
-any external DTD is a special case of an external entity.  If you've
-set no <code>ExternalEntityRefHandler</code>, then external entity
-references are silently ignored. Otherwise, it calls your handler with
-the information needed to read and parse the external entity.</p>
-
-<p>Your handler isn't actually responsible for parsing the entity, but
-it is responsible for creating a subsidiary parser with <code><a href=
-"#XML_ExternalEntityParserCreate"
->XML_ExternalEntityParserCreate</a></code> that will do the job. This
-returns an instance of <code>XML_Parser</code> that has handlers and
-other data structures initialized from the parent parser. You may then
-use <code><a href= "#XML_Parse" >XML_Parse</a></code> or <code><a
-href= "#XML_ParseBuffer">XML_ParseBuffer</a></code> calls against this
-parser.  Since external entities my refer to other external entities,
-your handler should be prepared to be called recursively.</p>
-
-<h3>Parsing DTDs</h3>
-
-<p>In order to parse parameter entities, before starting the parse,
-you must call <code><a href= "#XML_SetParamEntityParsing"
->XML_SetParamEntityParsing</a></code> with one of the following
-arguments:</p>
-<dl>
-<dt><code>XML_PARAM_ENTITY_PARSING_NEVER</code></dt>
-<dd>Don't parse parameter entities or the external subset</dd>
-<dt><code>XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE</code></dt>
-<dd>Parse parameter entites and the external subset unless
-<code>standalone</code> was set to "yes" in the XML declaration.</dd>
-<dt><code>XML_PARAM_ENTITY_PARSING_ALWAYS</code></dt>
-<dd>Always parse parameter entities and the external subset</dd>
-</dl>
-
-<p>In order to read an external DTD, you also have to set an external
-entity reference handler as described above.</p>
-
-<h3 id="stop-resume">Temporarily Stopping Parsing</h3>
-
-<p>Expat 1.95.8 introduces a new feature: its now possible to stop
-parsing temporarily from within a handler function, even if more data
-has already been passed into the parser.  Applications for this
-include</p>
-
-<ul>
-  <li>Supporting the <a href= "http://www.w3.org/TR/xinclude/"
-  >XInclude</a> specification.</li>
-
-  <li>Delaying further processing until additional information is
-  available from some other source.</li>
-
-  <li>Adjusting processor load as task priorities shift within an
-  application.</li>
-
-  <li>Stopping parsing completely (simply free or reset the parser
-  instead of resuming in the outer parsing loop).  This can be useful
-  if a application-domain error is found in the XML being parsed or if
-  the result of the parse is determined not to be useful after
-  all.</li>
-</ul>
-
-<p>To take advantage of this feature, the main parsing loop of an
-application needs to support this specifically.  It cannot be
-supported with a parsing loop compatible with Expat 1.95.7 or
-earlier (though existing loops will continue to work without
-supporting the stop/resume feature).</p>
-
-<p>An application that uses this feature for a single parser will have
-the rough structure (in pseudo-code):</p>
-
-<pre class="pseudocode">
-fd = open_input()
-p = create_parser()
-
-if parse_xml(p, fd) {
-  /* suspended */
-
-  int suspended = 1;
-
-  while (suspended) {
-    do_something_else()
-    if ready_to_resume() {
-      suspended = continue_parsing(p, fd);
-    }
-  }
-}
-</pre>
-
-<p>An application that may resume any of several parsers based on
-input (either from the XML being parsed or some other source) will
-certainly have more interesting control structures.</p>
-
-<p>This C function could be used for the <code>parse_xml</code>
-function mentioned in the pseudo-code above:</p>
-
-<pre class="eg">
-#define BUFF_SIZE 10240
-
-/* Parse a document from the open file descriptor 'fd' until the parse
-   is complete (the document has been completely parsed, or there's
-   been an error), or the parse is stopped.  Return non-zero when
-   the parse is merely suspended.
-*/
-int
-parse_xml(XML_Parser p, int fd)
-{
-  for (;;) {
-    int last_chunk;
-    int bytes_read;
-    enum XML_Status status;
-
-    void *buff = XML_GetBuffer(p, BUFF_SIZE);
-    if (buff == NULL) {
-      /* handle error... */
-      return 0;
-    }
-    bytes_read = read(fd, buff, BUFF_SIZE);
-    if (bytes_read &lt; 0) {
-      /* handle error... */
-      return 0;
-    }
-    status = XML_ParseBuffer(p, bytes_read, bytes_read == 0);
-    switch (status) {
-      case XML_STATUS_ERROR:
-        /* handle error... */
-        return 0;
-      case XML_STATUS_SUSPENDED:
-        return 1;
-    }
-    if (bytes_read == 0)
-      return 0;
-  }
-}
-</pre>
-
-<p>The corresponding <code>continue_parsing</code> function is
-somewhat simpler, since it only need deal with the return code from
-<code><a href= "#XML_ResumeParser">XML_ResumeParser</a></code>; it can
-delegate the input handling to the <code>parse_xml</code>
-function:</p>
-
-<pre class="eg">
-/* Continue parsing a document which had been suspended.  The 'p' and
-   'fd' arguments are the same as passed to parse_xml().  Return
-   non-zero when the parse is suspended.
-*/
-int
-continue_parsing(XML_Parser p, int fd)
-{
-  enum XML_Status status = XML_ResumeParser(p);
-  switch (status) {
-    case XML_STATUS_ERROR:
-      /* handle error... */
-      return 0;
-    case XML_ERROR_NOT_SUSPENDED:
-      /* handle error... */
-      return 0;.
-    case XML_STATUS_SUSPENDED:
-      return 1;
-  }
-  return parse_xml(p, fd);
-}
-</pre>
-
-<p>Now that we've seen what a mess the top-level parsing loop can
-become, what have we gained?  Very simply, we can now use the <code><a
-href= "#XML_StopParser" >XML_StopParser</a></code> function to stop
-parsing, without having to go to great lengths to avoid additional
-processing that we're expecting to ignore.  As a bonus, we get to stop
-parsing <em>temporarily</em>, and come back to it when we're
-ready.</p>
-
-<p>To stop parsing from a handler function, use the <code><a href=
-"#XML_StopParser" >XML_StopParser</a></code> function.  This function
-takes two arguments; the parser being stopped and a flag indicating
-whether the parse can be resumed in the future.</p>
-
-<!-- XXX really need more here -->
-
-
-<hr />
-<!-- ================================================================ -->
-
-<h2><a name="reference">Expat Reference</a></h2>
-
-<h3><a name="creation">Parser Creation</a></h3>
-
-<pre class="fcndec" id="XML_ParserCreate">
-XML_Parser XMLCALL
-XML_ParserCreate(const XML_Char *encoding);
-</pre>
-<div class="fcndef">
-Construct a new parser. If encoding is non-null, it specifies a
-character encoding to use for the document. This overrides the document
-encoding declaration. There are four built-in encodings:
-<ul>
-<li>US-ASCII</li>
-<li>UTF-8</li>
-<li>UTF-16</li>
-<li>ISO-8859-1</li>
-</ul>
-Any other value will invoke a call to the UnknownEncodingHandler.
-</div>
-
-<pre class="fcndec" id="XML_ParserCreateNS">
-XML_Parser XMLCALL
-XML_ParserCreateNS(const XML_Char *encoding,
-                   XML_Char sep);
-</pre>
-<div class="fcndef">
-Constructs a new parser that has namespace processing in effect. Namespace
-expanded element names and attribute names are returned as a concatenation
-of the namespace URI, <em>sep</em>, and the local part of the name. This
-means that you should pick a character for <em>sep</em> that can't be part
-of an URI. Since Expat does not check namespace URIs for conformance, the
-only safe choice for a namespace separator is a character that is illegal
-in XML. For instance, <code>'\xFF'</code> is not legal in UTF-8, and
-<code>'\xFFFF'</code> is not legal in UTF-16. There is a special case when
-<em>sep</em> is the null character <code>'\0'</code>: the namespace URI and
-the local part will be concatenated without any separator - this is intended
-to support RDF processors. It is a programming error to use the null separator
-with <a href= "#XML_SetReturnNSTriplet">namespace triplets</a>.</div>
-
-<pre class="fcndec" id="XML_ParserCreate_MM">
-XML_Parser XMLCALL
-XML_ParserCreate_MM(const XML_Char *encoding,
-                    const XML_Memory_Handling_Suite *ms,
-		    const XML_Char *sep);
-</pre>
-<pre class="signature">
-typedef struct {
-  void *(XMLCALL *malloc_fcn)(size_t size);
-  void *(XMLCALL *realloc_fcn)(void *ptr, size_t size);
-  void (XMLCALL *free_fcn)(void *ptr);
-} XML_Memory_Handling_Suite;
-</pre>
-<div class="fcndef">
-<p>Construct a new parser using the suite of memory handling functions
-specified in <code>ms</code>. If <code>ms</code> is NULL, then use the
-standard set of memory management functions. If <code>sep</code> is
-non NULL, then namespace processing is enabled in the created parser
-and the character pointed at by sep is used as the separator between
-the namespace URI and the local part of the name.</p>
-</div>
-
-<pre class="fcndec" id="XML_ExternalEntityParserCreate">
-XML_Parser XMLCALL
-XML_ExternalEntityParserCreate(XML_Parser p,
-                               const XML_Char *context,
-                               const XML_Char *encoding);
-</pre>
-<div class="fcndef">
-Construct a new <code>XML_Parser</code> object for parsing an external
-general entity. Context is the context argument passed in a call to a
-ExternalEntityRefHandler. Other state information such as handlers,
-user data, namespace processing is inherited from the parser passed as
-the 1st argument. So you shouldn't need to call any of the behavior
-changing functions on this parser (unless you want it to act
-differently than the parent parser).
-</div>
-
-<pre class="fcndec" id="XML_ParserFree">
-void XMLCALL
-XML_ParserFree(XML_Parser p);
-</pre>
-<div class="fcndef">
-Free memory used by the parser. Your application is responsible for
-freeing any memory associated with <a href="#userdata">user data</a>.
-</div>
-
-<pre class="fcndec" id="XML_ParserReset">
-XML_Bool XMLCALL
-XML_ParserReset(XML_Parser p,
-                const XML_Char *encoding);
-</pre>
-<div class="fcndef">
-Clean up the memory structures maintained by the parser so that it may
-be used again.  After this has been called, <code>parser</code> is
-ready to start parsing a new document.  All handlers are cleared from
-the parser, except for the unknownEncodingHandler.  The parser's external
-state is re-initialized except for the values of ns and ns_triplets.
-This function may not be used on a parser created using <code><a href=
-"#XML_ExternalEntityParserCreate" >XML_ExternalEntityParserCreate</a
-></code>; it will return <code>XML_FALSE</code> in that case.  Returns
-<code>XML_TRUE</code> on success.  Your application is responsible for
-dealing with any memory associated with <a href="#userdata">user data</a>.
-</div>
-
-<h3><a name="parsing">Parsing</a></h3>
-
-<p>To state the obvious: the three parsing functions <code><a href=
-"#XML_Parse" >XML_Parse</a></code>, <code><a href= "#XML_ParseBuffer">
-XML_ParseBuffer</a></code> and <code><a href= "#XML_GetBuffer">
-XML_GetBuffer</a></code> must not be called from within a handler
-unless they operate on a separate parser instance, that is, one that
-did not call the handler. For example, it is OK to call the parsing
-functions from within an <code>XML_ExternalEntityRefHandler</code>,
-if they apply to the parser created by
-<code><a href= "#XML_ExternalEntityParserCreate"
->XML_ExternalEntityParserCreate</a></code>.</p>
-
-<p>Note: the <code>len</code> argument passed to these functions
-should be considerably less than the maximum value for an integer,
-as it could create an integer overflow situation if the added
-lengths of a buffer and the unprocessed portion of the previous buffer
-exceed the maximum integer value. Input data at the end of a buffer
-will remain unprocessed if it is part of an XML token for which the
-end is not part of that buffer.</p>
-
-<pre class="fcndec" id="XML_Parse">
-enum XML_Status XMLCALL
-XML_Parse(XML_Parser p,
-          const char *s,
-          int len,
-          int isFinal);
-</pre>
-<pre class="signature">
-enum XML_Status {
-  XML_STATUS_ERROR = 0,
-  XML_STATUS_OK = 1
-};
-</pre>
-<div class="fcndef">
-Parse some more of the document. The string <code>s</code> is a buffer
-containing part (or perhaps all) of the document. The number of bytes of s
-that are part of the document is indicated by <code>len</code>. This means
-that <code>s</code> doesn't have to be null terminated. It also means that
-if <code>len</code> is larger than the number of bytes in the block of
-memory that <code>s</code> points at, then a memory fault is likely. The
-<code>isFinal</code> parameter informs the parser that this is the last
-piece of the document. Frequently, the last piece is empty (i.e.
-<code>len</code> is zero.)
-If a parse error occurred, it returns <code>XML_STATUS_ERROR</code>.
-Otherwise it returns <code>XML_STATUS_OK</code> value.
-</div>
-
-<pre class="fcndec" id="XML_ParseBuffer">
-enum XML_Status XMLCALL
-XML_ParseBuffer(XML_Parser p,
-                int len,
-                int isFinal);
-</pre>
-<div class="fcndef">
-This is just like <code><a href= "#XML_Parse" >XML_Parse</a></code>,
-except in this case Expat provides the buffer.  By obtaining the
-buffer from Expat with the <code><a href= "#XML_GetBuffer"
->XML_GetBuffer</a></code> function, the application can avoid double
-copying of the input.
-</div>
-
-<pre class="fcndec" id="XML_GetBuffer">
-void * XMLCALL
-XML_GetBuffer(XML_Parser p,
-              int len);
-</pre>
-<div class="fcndef">
-Obtain a buffer of size <code>len</code> to read a piece of the document
-into. A NULL value is returned if Expat can't allocate enough memory for
-this buffer. This has to be called prior to every call to
-<code><a href= "#XML_ParseBuffer" >XML_ParseBuffer</a></code>. A
-typical use would look like this:
-
-<pre class="eg">
-for (;;) {
-  int bytes_read;
-  void *buff = XML_GetBuffer(p, BUFF_SIZE);
-  if (buff == NULL) {
-    /* handle error */
-  }
-
-  bytes_read = read(docfd, buff, BUFF_SIZE);
-  if (bytes_read &lt; 0) {
-    /* handle error */
-  }
-
-  if (! XML_ParseBuffer(p, bytes_read, bytes_read == 0)) {
-    /* handle parse error */
-  }
-
-  if (bytes_read == 0)
-    break;
-}
-</pre>
-</div>
-
-<pre class="fcndec" id="XML_StopParser">
-enum XML_Status XMLCALL
-XML_StopParser(XML_Parser p,
-               XML_Bool resumable);
-</pre>
-<div class="fcndef">
-
-<p>Stops parsing, causing <code><a href= "#XML_Parse"
->XML_Parse</a></code> or <code><a href= "#XML_ParseBuffer"
->XML_ParseBuffer</a></code> to return.  Must be called from within a
-call-back handler, except when aborting (when <code>resumable</code>
-is <code>XML_FALSE</code>) an already suspended parser.  Some
-call-backs may still follow because they would otherwise get
-lost, including
-<ul>
-  <li> the end element handler for empty elements when stopped in the
-       start element handler,</li>
-  <li> the end namespace declaration handler when stopped in the end
-       element handler,</li>
-  <li> the character data handler when stopped in the character data handler
-       while making multiple call-backs on a contiguous chunk of characters,</li>
-</ul>
-and possibly others.</p>
-
-<p>This can be called from most handlers, including DTD related
-call-backs, except when parsing an external parameter entity and
-<code>resumable</code> is <code>XML_TRUE</code>.  Returns
-<code>XML_STATUS_OK</code> when successful,
-<code>XML_STATUS_ERROR</code> otherwise.  The possible error codes
-are:</p>
-<dl>
-  <dt><code>XML_ERROR_SUSPENDED</code></dt>
-  <dd>when suspending an already suspended parser.</dd>
-  <dt><code>XML_ERROR_FINISHED</code></dt>
-  <dd>when the parser has already finished.</dd>
-  <dt><code>XML_ERROR_SUSPEND_PE</code></dt>
-  <dd>when suspending while parsing an external PE.</dd>
-</dl>
-
-<p>Since the stop/resume feature requires application support in the
-outer parsing loop, it is an error to call this function for a parser
-not being handled appropriately; see <a href= "#stop-resume"
->Temporarily Stopping Parsing</a> for more information.</p>
-
-<p>When <code>resumable</code> is <code>XML_TRUE</code> then parsing
-is <em>suspended</em>, that is, <code><a href= "#XML_Parse"
->XML_Parse</a></code> and <code><a href= "#XML_ParseBuffer"
->XML_ParseBuffer</a></code> return <code>XML_STATUS_SUSPENDED</code>.
-Otherwise, parsing is <em>aborted</em>, that is, <code><a href=
-"#XML_Parse" >XML_Parse</a></code> and <code><a href=
-"#XML_ParseBuffer" >XML_ParseBuffer</a></code> return
-<code>XML_STATUS_ERROR</code> with error code
-<code>XML_ERROR_ABORTED</code>.</p>
-
-<p><strong>Note:</strong>
-This will be applied to the current parser instance only, that is, if
-there is a parent parser then it will continue parsing when the
-external entity reference handler returns.  It is up to the
-implementation of that handler to call <code><a href=
-"#XML_StopParser" >XML_StopParser</a></code> on the parent parser
-(recursively), if one wants to stop parsing altogether.</p>
-
-<p>When suspended, parsing can be resumed by calling <code><a href=
-"#XML_ResumeParser" >XML_ResumeParser</a></code>.</p>
-
-<p>New in Expat 1.95.8.</p>
-</div>
-
-<pre class="fcndec" id="XML_ResumeParser">
-enum XML_Status XMLCALL
-XML_ResumeParser(XML_Parser p);
-</pre>
-<div class="fcndef">
-<p>Resumes parsing after it has been suspended with <code><a href=
-"#XML_StopParser" >XML_StopParser</a></code>.  Must not be called from
-within a handler call-back.  Returns same status codes as <code><a
-href= "#XML_Parse">XML_Parse</a></code> or <code><a href=
-"#XML_ParseBuffer" >XML_ParseBuffer</a></code>.  An additional error
-code, <code>XML_ERROR_NOT_SUSPENDED</code>, will be returned if the
-parser was not currently suspended.</p>
-
-<p><strong>Note:</strong>
-This must be called on the most deeply nested child parser instance
-first, and on its parent parser only after the child parser has
-finished, to be applied recursively until the document entity's parser
-is restarted.  That is, the parent parser will not resume by itself
-and it is up to the application to call <code><a href=
-"#XML_ResumeParser" >XML_ResumeParser</a></code> on it at the
-appropriate moment.</p>
-
-<p>New in Expat 1.95.8.</p>
-</div>
-
-<pre class="fcndec" id="XML_GetParsingStatus">
-void XMLCALL
-XML_GetParsingStatus(XML_Parser p,
-                     XML_ParsingStatus *status);
-</pre>
-<pre class="signature">
-enum XML_Parsing {
-  XML_INITIALIZED,
-  XML_PARSING,
-  XML_FINISHED,
-  XML_SUSPENDED
-};
-
-typedef struct {
-  enum XML_Parsing parsing;
-  XML_Bool finalBuffer;
-} XML_ParsingStatus;
-</pre>
-<div class="fcndef">
-<p>Returns status of parser with respect to being initialized,
-parsing, finished, or suspended, and whether the final buffer is being
-processed.  The <code>status</code> parameter <em>must not</em> be
-NULL.</p>
-
-<p>New in Expat 1.95.8.</p>
-</div>
-
-
-<h3><a name="setting">Handler Setting</a></h3>
-
-<p>Although handlers are typically set prior to parsing and left alone, an
-application may choose to set or change the handler for a parsing event
-while the parse is in progress. For instance, your application may choose
-to ignore all text not descended from a <code>para</code> element. One
-way it could do this is to set the character handler when a para start tag
-is seen, and unset it for the corresponding end tag.</p>
-
-<p>A handler may be <em>unset</em> by providing a NULL pointer to the
-appropriate handler setter. None of the handler setting functions have
-a return value.</p>
-
-<p>Your handlers will be receiving strings in arrays of type
-<code>XML_Char</code>. This type is conditionally defined in expat.h as
-either <code>char</code>, <code>wchar_t</code> or <code>unsigned short</code>.
-The former implies UTF-8 encoding, the latter two imply UTF-16 encoding.
-Note that you'll receive them in this form independent of the original
-encoding of the document.</p>
-
-<div class="handler">
-<pre class="setter" id="XML_SetStartElementHandler">
-void XMLCALL
-XML_SetStartElementHandler(XML_Parser p,
-                           XML_StartElementHandler start);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_StartElementHandler)(void *userData,
-                                   const XML_Char *name,
-                                   const XML_Char **atts);
-</pre>
-<p>Set handler for start (and empty) tags. Attributes are passed to the start
-handler as a pointer to a vector of char pointers. Each attribute seen in
-a start (or empty) tag occupies 2 consecutive places in this vector: the
-attribute name followed by the attribute value. These pairs are terminated
-by a null pointer.</p>
-<p>Note that an empty tag generates a call to both start and end handlers
-(in that order).</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetEndElementHandler">
-void XMLCALL
-XML_SetEndElementHandler(XML_Parser p,
-                         XML_EndElementHandler);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_EndElementHandler)(void *userData,
-                                 const XML_Char *name);
-</pre>
-<p>Set handler for end (and empty) tags. As noted above, an empty tag
-generates a call to both start and end handlers.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetElementHandler">
-void XMLCALL
-XML_SetElementHandler(XML_Parser p,
-                      XML_StartElementHandler start,
-                      XML_EndElementHandler end);
-</pre>
-<p>Set handlers for start and end tags with one call.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetCharacterDataHandler">
-void XMLCALL
-XML_SetCharacterDataHandler(XML_Parser p,
-                            XML_CharacterDataHandler charhndl)
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_CharacterDataHandler)(void *userData,
-                                    const XML_Char *s,
-                                    int len);
-</pre>
-<p>Set a text handler. The string your handler receives
-is <em>NOT nul-terminated</em>. You have to use the length argument
-to deal with the end of the string. A single block of contiguous text
-free of markup may still result in a sequence of calls to this handler.
-In other words, if you're searching for a pattern in the text, it may
-be split across calls to this handler. Note: Setting this handler to NULL
-may <em>NOT immediately</em> terminate call-backs if the parser is currently
-processing such a single block of contiguous markup-free text, as the parser
-will continue calling back until the end of the block is reached.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetProcessingInstructionHandler">
-void XMLCALL
-XML_SetProcessingInstructionHandler(XML_Parser p,
-                                    XML_ProcessingInstructionHandler proc)
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_ProcessingInstructionHandler)(void *userData,
-                                            const XML_Char *target,
-                                            const XML_Char *data);
-
-</pre>
-<p>Set a handler for processing instructions. The target is the first word
-in the processing instruction. The data is the rest of the characters in
-it after skipping all whitespace after the initial word.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetCommentHandler">
-void XMLCALL
-XML_SetCommentHandler(XML_Parser p,
-                      XML_CommentHandler cmnt)
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_CommentHandler)(void *userData,
-                              const XML_Char *data);
-</pre>
-<p>Set a handler for comments. The data is all text inside the comment
-delimiters.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetStartCdataSectionHandler">
-void XMLCALL
-XML_SetStartCdataSectionHandler(XML_Parser p,
-                                XML_StartCdataSectionHandler start);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_StartCdataSectionHandler)(void *userData);
-</pre>
-<p>Set a handler that gets called at the beginning of a CDATA section.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetEndCdataSectionHandler">
-void XMLCALL
-XML_SetEndCdataSectionHandler(XML_Parser p,
-                              XML_EndCdataSectionHandler end);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_EndCdataSectionHandler)(void *userData);
-</pre>
-<p>Set a handler that gets called at the end of a CDATA section.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetCdataSectionHandler">
-void XMLCALL
-XML_SetCdataSectionHandler(XML_Parser p,
-                           XML_StartCdataSectionHandler start,
-                           XML_EndCdataSectionHandler end)
-</pre>
-<p>Sets both CDATA section handlers with one call.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetDefaultHandler">
-void XMLCALL
-XML_SetDefaultHandler(XML_Parser p,
-                      XML_DefaultHandler hndl)
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_DefaultHandler)(void *userData,
-                              const XML_Char *s,
-                              int len);
-</pre>
-
-<p>Sets a handler for any characters in the document which wouldn't
-otherwise be handled. This includes both data for which no handlers
-can be set (like some kinds of DTD declarations) and data which could
-be reported but which currently has no handler set.  The characters
-are passed exactly as they were present in the XML document except
-that they will be encoded in UTF-8 or UTF-16. Line boundaries are not
-normalized. Note that a byte order mark character is not passed to the
-default handler. There are no guarantees about how characters are
-divided between calls to the default handler: for example, a comment
-might be split between multiple calls.  Setting the handler with
-this call has the side effect of turning off expansion of references
-to internally defined general entities. Instead these references are
-passed to the default handler.</p>
-
-<p>See also <code><a
-href="#XML_DefaultCurrent">XML_DefaultCurrent</a></code>.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetDefaultHandlerExpand">
-void XMLCALL
-XML_SetDefaultHandlerExpand(XML_Parser p,
-                            XML_DefaultHandler hndl)
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_DefaultHandler)(void *userData,
-                              const XML_Char *s,
-                              int len);
-</pre>
-<p>This sets a default handler, but doesn't inhibit the expansion of
-internal entity references.  The entity reference will not be passed
-to the default handler.</p>
-
-<p>See also <code><a
-href="#XML_DefaultCurrent">XML_DefaultCurrent</a></code>.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetExternalEntityRefHandler">
-void XMLCALL
-XML_SetExternalEntityRefHandler(XML_Parser p,
-                                XML_ExternalEntityRefHandler hndl)
-</pre>
-<pre class="signature">
-typedef int
-(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser p,
-                                        const XML_Char *context,
-                                        const XML_Char *base,
-                                        const XML_Char *systemId,
-                                        const XML_Char *publicId);
-</pre>
-<p>Set an external entity reference handler. This handler is also
-called for processing an external DTD subset if parameter entity parsing
-is in effect. (See <a href="#XML_SetParamEntityParsing">
-<code>XML_SetParamEntityParsing</code></a>.)</p>
-
-<p>The <code>context</code> parameter specifies the parsing context in
-the format expected by the <code>context</code> argument to <code><a
-href="#XML_ExternalEntityParserCreate"
->XML_ExternalEntityParserCreate</a></code>.  <code>code</code> is
-valid only until the handler returns, so if the referenced entity is
-to be parsed later, it must be copied.  <code>context</code> is NULL
-only when the entity is a parameter entity, which is how one can
-differentiate between general and parameter entities.</p>
-
-<p>The <code>base</code> parameter is the base to use for relative
-system identifiers.  It is set by <code><a
-href="#XML_SetBase">XML_SetBase</a></code> and may be NULL. The
-<code>publicId</code> parameter is the public id given in the entity
-declaration and may be NULL.  <code>systemId</code> is the system
-identifier specified in the entity declaration and is never NULL.</p>
-
-<p>There are a couple of ways in which this handler differs from
-others.  First, this handler returns a status indicator (an
-integer). <code>XML_STATUS_OK</code> should be returned for successful
-handling of the external entity reference.  Returning
-<code>XML_STATUS_ERROR</code> indicates failure, and causes the
-calling parser to return an
-<code>XML_ERROR_EXTERNAL_ENTITY_HANDLING</code> error.</p>
-
-<p>Second, instead of having the user data as its first argument, it
-receives the parser that encountered the entity reference. This, along
-with the context parameter, may be used as arguments to a call to
-<code><a href= "#XML_ExternalEntityParserCreate"
->XML_ExternalEntityParserCreate</a></code>.  Using the returned
-parser, the body of the external entity can be recursively parsed.</p>
-
-<p>Since this handler may be called recursively, it should not be saving
-information into global or static variables.</p>
-</div>
-
-<pre class="fcndec" id="XML_SetExternalEntityRefHandlerArg">
-void XMLCALL
-XML_SetExternalEntityRefHandlerArg(XML_Parser p,
-                                   void *arg)
-</pre>
-<div class="fcndef">
-<p>Set the argument passed to the ExternalEntityRefHandler.  If
-<code>arg</code> is not NULL, it is the new value passed to the
-handler set using <code><a href="#XML_SetExternalEntityRefHandler"
->XML_SetExternalEntityRefHandler</a></code>; if <code>arg</code> is
-NULL, the argument passed to the handler function will be the parser
-object itself.</p>
-
-<p><strong>Note:</strong>
-The type of <code>arg</code> and the type of the first argument to the
-ExternalEntityRefHandler do not match.  This function takes a
-<code>void *</code> to be passed to the handler, while the handler
-accepts an <code>XML_Parser</code>.  This is a historical accident,
-but will not be corrected before Expat 2.0 (at the earliest) to avoid
-causing compiler warnings for code that's known to work with this
-API.  It is the responsibility of the application code to know the
-actual type of the argument passed to the handler and to manage it
-properly.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetSkippedEntityHandler">
-void XMLCALL
-XML_SetSkippedEntityHandler(XML_Parser p,
-                            XML_SkippedEntityHandler handler)
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_SkippedEntityHandler)(void *userData,
-                                    const XML_Char *entityName,
-                                    int is_parameter_entity);
-</pre>
-<p>Set a skipped entity handler. This is called in two situations:</p>
-<ol>
-   <li>An entity reference is encountered for which no declaration
-       has been read <em>and</em> this is not an error.</li>
-   <li>An internal entity reference is read, but not expanded, because
-       <a href="#XML_SetDefaultHandler"><code>XML_SetDefaultHandler</code></a>
-	   has been called.</li>
-</ol>
-<p>The <code>is_parameter_entity</code> argument will be non-zero for
-a parameter entity and zero for a general entity.</p> <p>Note: skipped
-parameter entities in declarations and skipped general entities in
-attribute values cannot be reported, because the event would be out of
-sync with the reporting of the declarations or attribute values</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetUnknownEncodingHandler">
-void XMLCALL
-XML_SetUnknownEncodingHandler(XML_Parser p,
-                              XML_UnknownEncodingHandler enchandler,
-			      void *encodingHandlerData)
-</pre>
-<pre class="signature">
-typedef int
-(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
-                                      const XML_Char *name,
-                                      XML_Encoding *info);
-
-typedef struct {
-  int map[256];
-  void *data;
-  int (XMLCALL *convert)(void *data, const char *s);
-  void (XMLCALL *release)(void *data);
-} XML_Encoding;
-</pre>
-<p>Set a handler to deal with encodings other than the <a
-href="#builtin_encodings">built in set</a>. This should be done before
-<code><a href= "#XML_Parse" >XML_Parse</a></code> or <code><a href=
-"#XML_ParseBuffer" >XML_ParseBuffer</a></code> have been called on the
-given parser.</p> <p>If the handler knows how to deal with an encoding
-with the given name, it should fill in the <code>info</code> data
-structure and return <code>XML_STATUS_OK</code>. Otherwise it
-should return <code>XML_STATUS_ERROR</code>. The handler will be called
-at most once per parsed (external) entity. The optional application
-data pointer <code>encodingHandlerData</code> will be passed back to
-the handler.</p>
-
-<p>The map array contains information for every possible possible leading
-byte in a byte sequence. If the corresponding value is &gt;= 0, then it's
-a single byte sequence and the byte encodes that Unicode value. If the
-value is -1, then that byte is invalid as the initial byte in a sequence.
-If the value is -n, where n is an integer &gt; 1, then n is the number of
-bytes in the sequence and the actual conversion is accomplished by a
-call to the function pointed at by convert. This function may return -1
-if the sequence itself is invalid. The convert pointer may be null if
-there are only single byte codes. The data parameter passed to the convert
-function is the data pointer from <code>XML_Encoding</code>. The
-string s is <em>NOT</em> nul-terminated and points at the sequence of
-bytes to be converted.</p>
-
-<p>The function pointed at by <code>release</code> is called by the
-parser when it is finished with the encoding. It may be NULL.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetStartNamespaceDeclHandler">
-void XMLCALL
-XML_SetStartNamespaceDeclHandler(XML_Parser p,
-			         XML_StartNamespaceDeclHandler start);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData,
-                                         const XML_Char *prefix,
-                                         const XML_Char *uri);
-</pre>
-<p>Set a handler to be called when a namespace is declared. Namespace
-declarations occur inside start tags. But the namespace declaration start
-handler is called before the start tag handler for each namespace declared
-in that start tag.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetEndNamespaceDeclHandler">
-void XMLCALL
-XML_SetEndNamespaceDeclHandler(XML_Parser p,
-			       XML_EndNamespaceDeclHandler end);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData,
-                                       const XML_Char *prefix);
-</pre>
-<p>Set a handler to be called when leaving the scope of a namespace
-declaration. This will be called, for each namespace declaration,
-after the handler for the end tag of the element in which the
-namespace was declared.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetNamespaceDeclHandler">
-void XMLCALL
-XML_SetNamespaceDeclHandler(XML_Parser p,
-                            XML_StartNamespaceDeclHandler start,
-                            XML_EndNamespaceDeclHandler end)
-</pre>
-<p>Sets both namespace declaration handlers with a single call.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetXmlDeclHandler">
-void XMLCALL
-XML_SetXmlDeclHandler(XML_Parser p,
-		      XML_XmlDeclHandler xmldecl);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_XmlDeclHandler)(void            *userData,
-                              const XML_Char  *version,
-                              const XML_Char  *encoding,
-                              int             standalone);
-</pre>
-<p>Sets a handler that is called for XML declarations and also for
-text declarations discovered in external entities. The way to
-distinguish is that the <code>version</code> parameter will be NULL
-for text declarations. The <code>encoding</code> parameter may be NULL
-for an XML declaration. The <code>standalone</code> argument will
-contain -1, 0, or 1 indicating respectively that there was no
-standalone parameter in the declaration, that it was given as no, or
-that it was given as yes.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetStartDoctypeDeclHandler">
-void XMLCALL
-XML_SetStartDoctypeDeclHandler(XML_Parser p,
-			       XML_StartDoctypeDeclHandler start);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_StartDoctypeDeclHandler)(void           *userData,
-                                       const XML_Char *doctypeName,
-                                       const XML_Char *sysid,
-                                       const XML_Char *pubid,
-                                       int            has_internal_subset);
-</pre>
-<p>Set a handler that is called at the start of a DOCTYPE declaration,
-before any external or internal subset is parsed. Both <code>sysid</code>
-and <code>pubid</code> may be NULL. The <code>has_internal_subset</code>
-will be non-zero if the DOCTYPE declaration has an internal subset.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetEndDoctypeDeclHandler">
-void XMLCALL
-XML_SetEndDoctypeDeclHandler(XML_Parser p,
-			     XML_EndDoctypeDeclHandler end);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
-</pre>
-<p>Set a handler that is called at the end of a DOCTYPE declaration,
-after parsing any external subset.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetDoctypeDeclHandler">
-void XMLCALL
-XML_SetDoctypeDeclHandler(XML_Parser p,
-			  XML_StartDoctypeDeclHandler start,
-			  XML_EndDoctypeDeclHandler end);
-</pre>
-<p>Set both doctype handlers with one call.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetElementDeclHandler">
-void XMLCALL
-XML_SetElementDeclHandler(XML_Parser p,
-			  XML_ElementDeclHandler eldecl);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_ElementDeclHandler)(void *userData,
-                                  const XML_Char *name,
-                                  XML_Content *model);
-</pre>
-<pre class="signature">
-enum XML_Content_Type {
-  XML_CTYPE_EMPTY = 1,
-  XML_CTYPE_ANY,
-  XML_CTYPE_MIXED,
-  XML_CTYPE_NAME,
-  XML_CTYPE_CHOICE,
-  XML_CTYPE_SEQ
-};
-
-enum XML_Content_Quant {
-  XML_CQUANT_NONE,
-  XML_CQUANT_OPT,
-  XML_CQUANT_REP,
-  XML_CQUANT_PLUS
-};
-
-typedef struct XML_cp XML_Content;
-
-struct XML_cp {
-  enum XML_Content_Type		type;
-  enum XML_Content_Quant	quant;
-  const XML_Char *		name;
-  unsigned int			numchildren;
-  XML_Content *			children;
-};
-</pre>
-<p>Sets a handler for element declarations in a DTD. The handler gets
-called with the name of the element in the declaration and a pointer
-to a structure that contains the element model. It is the
-application's responsibility to free this data structure using
-<code><a href="#XML_FreeContentModel"
->XML_FreeContentModel</a></code>.</p>
-
-<p>The <code>model</code> argument is the root of a tree of
-<code>XML_Content</code> nodes. If <code>type</code> equals
-<code>XML_CTYPE_EMPTY</code> or <code>XML_CTYPE_ANY</code>, then
-<code>quant</code> will be <code>XML_CQUANT_NONE</code>, and the other
-fields will be zero or NULL.  If <code>type</code> is
-<code>XML_CTYPE_MIXED</code>, then <code>quant</code> will be
-<code>XML_CQUANT_NONE</code> or <code>XML_CQUANT_REP</code> and
-<code>numchildren</code> will contain the number of elements that are
-allowed to be mixed in and <code>children</code> points to an array of
-<code>XML_Content</code> structures that will all have type
-XML_CTYPE_NAME with no quantification.  Only the root node can be type
-<code>XML_CTYPE_EMPTY</code>, <code>XML_CTYPE_ANY</code>, or
-<code>XML_CTYPE_MIXED</code>.</p>
-
-<p>For type <code>XML_CTYPE_NAME</code>, the <code>name</code> field
-points to the name and the <code>numchildren</code> and
-<code>children</code> fields will be zero and NULL. The
-<code>quant</code> field will indicate any quantifiers placed on the
-name.</p>
-
-<p>Types <code>XML_CTYPE_CHOICE</code> and <code>XML_CTYPE_SEQ</code>
-indicate a choice or sequence respectively. The
-<code>numchildren</code> field indicates how many nodes in the choice
-or sequence and <code>children</code> points to the nodes.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetAttlistDeclHandler">
-void XMLCALL
-XML_SetAttlistDeclHandler(XML_Parser p,
-                          XML_AttlistDeclHandler attdecl);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_AttlistDeclHandler)(void           *userData,
-                                  const XML_Char *elname,
-                                  const XML_Char *attname,
-                                  const XML_Char *att_type,
-                                  const XML_Char *dflt,
-                                  int            isrequired);
-</pre>
-<p>Set a handler for attlist declarations in the DTD. This handler is
-called for <em>each</em> attribute. So a single attlist declaration
-with multiple attributes declared will generate multiple calls to this
-handler. The <code>elname</code> parameter returns the name of the
-element for which the attribute is being declared. The attribute name
-is in the <code>attname</code> parameter. The attribute type is in the
-<code>att_type</code> parameter.  It is the string representing the
-type in the declaration with whitespace removed.</p>
-
-<p>The <code>dflt</code> parameter holds the default value. It will be
-NULL in the case of "#IMPLIED" or "#REQUIRED" attributes. You can
-distinguish these two cases by checking the <code>isrequired</code>
-parameter, which will be true in the case of "#REQUIRED" attributes.
-Attributes which are "#FIXED" will have also have a true
-<code>isrequired</code>, but they will have the non-NULL fixed value
-in the <code>dflt</code> parameter.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetEntityDeclHandler">
-void XMLCALL
-XML_SetEntityDeclHandler(XML_Parser p,
-			 XML_EntityDeclHandler handler);
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_EntityDeclHandler)(void           *userData,
-                                 const XML_Char *entityName,
-                                 int            is_parameter_entity,
-                                 const XML_Char *value,
-                                 int            value_length, 
-                                 const XML_Char *base,
-                                 const XML_Char *systemId,
-                                 const XML_Char *publicId,
-                                 const XML_Char *notationName);
-</pre>
-<p>Sets a handler that will be called for all entity declarations.
-The <code>is_parameter_entity</code> argument will be non-zero in the
-case of parameter entities and zero otherwise.</p>
-
-<p>For internal entities (<code>&lt;!ENTITY foo "bar"&gt;</code>),
-<code>value</code> will be non-NULL and <code>systemId</code>,
-<code>publicId</code>, and <code>notationName</code> will all be NULL.
-The value string is <em>not</em> NULL terminated; the length is
-provided in the <code>value_length</code> parameter. Do not use
-<code>value_length</code> to test for internal entities, since it is
-legal to have zero-length values. Instead check for whether or not
-<code>value</code> is NULL.</p> <p>The <code>notationName</code>
-argument will have a non-NULL value only for unparsed entity
-declarations.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetUnparsedEntityDeclHandler">
-void XMLCALL
-XML_SetUnparsedEntityDeclHandler(XML_Parser p,
-                                 XML_UnparsedEntityDeclHandler h)
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_UnparsedEntityDeclHandler)(void *userData,
-                                         const XML_Char *entityName, 
-                                         const XML_Char *base,
-                                         const XML_Char *systemId,
-                                         const XML_Char *publicId,
-                                         const XML_Char *notationName);
-</pre>
-<p>Set a handler that receives declarations of unparsed entities. These
-are entity declarations that have a notation (NDATA) field:</p>
-
-<div id="eg"><pre>
-&lt;!ENTITY logo SYSTEM "images/logo.gif" NDATA gif&gt;
-</pre></div>
-<p>This handler is obsolete and is provided for backwards
-compatibility.  Use instead <a href= "#XML_SetEntityDeclHandler"
->XML_SetEntityDeclHandler</a>.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetNotationDeclHandler">
-void XMLCALL
-XML_SetNotationDeclHandler(XML_Parser p,
-                           XML_NotationDeclHandler h)
-</pre>
-<pre class="signature">
-typedef void
-(XMLCALL *XML_NotationDeclHandler)(void *userData, 
-                                   const XML_Char *notationName,
-                                   const XML_Char *base,
-                                   const XML_Char *systemId,
-                                   const XML_Char *publicId);
-</pre>
-<p>Set a handler that receives notation declarations.</p>
-</div>
-
-<div class="handler">
-<pre class="setter" id="XML_SetNotStandaloneHandler">
-void XMLCALL
-XML_SetNotStandaloneHandler(XML_Parser p,
-                            XML_NotStandaloneHandler h)
-</pre>
-<pre class="signature">
-typedef int 
-(XMLCALL *XML_NotStandaloneHandler)(void *userData);
-</pre>
-<p>Set a handler that is called if the document is not "standalone".
-This happens when there is an external subset or a reference to a
-parameter entity, but does not have standalone set to "yes" in an XML
-declaration.  If this handler returns <code>XML_STATUS_ERROR</code>,
-then the parser will throw an <code>XML_ERROR_NOT_STANDALONE</code>
-error.</p>
-</div>
-
-<h3><a name="position">Parse position and error reporting functions</a></h3>
-
-<p>These are the functions you'll want to call when the parse
-functions return <code>XML_STATUS_ERROR</code> (a parse error has
-occurred), although the position reporting functions are useful outside
-of errors. The position reported is the byte position (in the original
-document or entity encoding) of the first of the sequence of
-characters that generated the current event (or the error that caused
-the parse functions to return <code>XML_STATUS_ERROR</code>.)  The
-exceptions are callbacks trigged by declarations in the document
-prologue, in which case they exact position reported is somewhere in the
-relevant markup, but not necessarily as meaningful as for other
-events.</p>
-
-<p>The position reporting functions are accurate only outside of the
-DTD.  In other words, they usually return bogus information when
-called from within a DTD declaration handler.</p>
-
-<pre class="fcndec" id="XML_GetErrorCode">
-enum XML_Error XMLCALL
-XML_GetErrorCode(XML_Parser p);
-</pre>
-<div class="fcndef">
-Return what type of error has occurred.
-</div>
-
-<pre class="fcndec" id="XML_ErrorString">
-const XML_LChar * XMLCALL
-XML_ErrorString(enum XML_Error code);
-</pre>
-<div class="fcndef">
-Return a string describing the error corresponding to code.
-The code should be one of the enums that can be returned from
-<code><a href= "#XML_GetErrorCode" >XML_GetErrorCode</a></code>.
-</div>
-
-<pre class="fcndec" id="XML_GetCurrentByteIndex">
-XML_Index XMLCALL
-XML_GetCurrentByteIndex(XML_Parser p);
-</pre>
-<div class="fcndef">
-Return the byte offset of the position.  This always corresponds to
-the values returned by <code><a href= "#XML_GetCurrentLineNumber"
->XML_GetCurrentLineNumber</a></code> and <code><a href=
-"#XML_GetCurrentColumnNumber" >XML_GetCurrentColumnNumber</a></code>.
-</div>
-
-<pre class="fcndec" id="XML_GetCurrentLineNumber">
-XML_Size XMLCALL
-XML_GetCurrentLineNumber(XML_Parser p);
-</pre>
-<div class="fcndef">
-Return the line number of the position.  The first line is reported as
-<code>1</code>.
-</div>
-
-<pre class="fcndec" id="XML_GetCurrentColumnNumber">
-XML_Size XMLCALL
-XML_GetCurrentColumnNumber(XML_Parser p);
-</pre>
-<div class="fcndef">
-Return the offset, from the beginning of the current line, of
-the position.
-</div>
-
-<pre class="fcndec" id="XML_GetCurrentByteCount">
-int XMLCALL
-XML_GetCurrentByteCount(XML_Parser p);
-</pre>
-<div class="fcndef">
-Return the number of bytes in the current event. Returns
-<code>0</code> if the event is inside a reference to an internal
-entity and for the end-tag event for empty element tags (the later can
-be used to distinguish empty-element tags from empty elements using
-separate start and end tags).
-</div>
-
-<pre class="fcndec" id="XML_GetInputContext">
-const char * XMLCALL
-XML_GetInputContext(XML_Parser p,
-                    int *offset,
-                    int *size);
-</pre>
-<div class="fcndef">
-
-<p>Returns the parser's input buffer, sets the integer pointed at by
-<code>offset</code> to the offset within this buffer of the current
-parse position, and set the integer pointed at by <code>size</code> to
-the size of the returned buffer.</p>
-
-<p>This should only be called from within a handler during an active
-parse and the returned buffer should only be referred to from within
-the handler that made the call. This input buffer contains the
-untranslated bytes of the input.</p>
-
-<p>Only a limited amount of context is kept, so if the event
-triggering a call spans over a very large amount of input, the actual
-parse position may be before the beginning of the buffer.</p>
-
-<p>If <code>XML_CONTEXT_BYTES</code> is not defined, this will always
-return NULL.</p>
-</div>
-
-<h3><a name="miscellaneous">Miscellaneous functions</a></h3>
-
-<p>The functions in this section either obtain state information from
-the parser or can be used to dynamicly set parser options.</p>
-
-<pre class="fcndec" id="XML_SetUserData">
-void XMLCALL
-XML_SetUserData(XML_Parser p,
-                void *userData);
-</pre>
-<div class="fcndef">
-This sets the user data pointer that gets passed to handlers.  It
-overwrites any previous value for this pointer. Note that the
-application is responsible for freeing the memory associated with
-<code>userData</code> when it is finished with the parser. So if you
-call this when there's already a pointer there, and you haven't freed
-the memory associated with it, then you've probably just leaked
-memory.
-</div>
-
-<pre class="fcndec" id="XML_GetUserData">
-void * XMLCALL
-XML_GetUserData(XML_Parser p);
-</pre>
-<div class="fcndef">
-This returns the user data pointer that gets passed to handlers.
-It is actually implemented as a macro.
-</div>
-
-<pre class="fcndec" id="XML_UseParserAsHandlerArg">
-void XMLCALL
-XML_UseParserAsHandlerArg(XML_Parser p);
-</pre>
-<div class="fcndef">
-After this is called, handlers receive the parser in their
-<code>userData</code> arguments.  The user data can still be obtained
-using the <code><a href= "#XML_GetUserData"
->XML_GetUserData</a></code> function.
-</div>
-
-<pre class="fcndec" id="XML_SetBase">
-enum XML_Status XMLCALL
-XML_SetBase(XML_Parser p,
-            const XML_Char *base);
-</pre>
-<div class="fcndef">
-Set the base to be used for resolving relative URIs in system
-identifiers.  The return value is <code>XML_STATUS_ERROR</code> if
-there's no memory to store base, otherwise it's
-<code>XML_STATUS_OK</code>.
-</div>
-
-<pre class="fcndec" id="XML_GetBase">
-const XML_Char * XMLCALL
-XML_GetBase(XML_Parser p);
-</pre>
-<div class="fcndef">
-Return the base for resolving relative URIs.
-</div>
-
-<pre class="fcndec" id="XML_GetSpecifiedAttributeCount">
-int XMLCALL
-XML_GetSpecifiedAttributeCount(XML_Parser p);
-</pre>
-<div class="fcndef">
-When attributes are reported to the start handler in the atts vector,
-attributes that were explicitly set in the element occur before any
-attributes that receive their value from default information in an
-ATTLIST declaration. This function returns the number of attributes
-that were explicitly set times two, thus giving the offset in the
-<code>atts</code> array passed to the start tag handler of the first
-attribute set due to defaults. It supplies information for the last
-call to a start handler. If called inside a start handler, then that
-means the current call.
-</div>
-
-<pre class="fcndec" id="XML_GetIdAttributeIndex">
-int XMLCALL
-XML_GetIdAttributeIndex(XML_Parser p);
-</pre>
-<div class="fcndef">
-Returns the index of the ID attribute passed in the atts array in the
-last call to <code><a href= "#XML_StartElementHandler"
->XML_StartElementHandler</a></code>, or -1 if there is no ID
-attribute. If called inside a start handler, then that means the
-current call.
-</div>
-
-<pre class="fcndec" id="XML_GetAttributeInfo">
-const XML_AttrInfo * XMLCALL
-XML_GetAttributeInfo(XML_Parser parser);
-</pre>
-<pre class="signature">
-typedef struct {
-  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
-  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
-  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
-  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
-} XML_AttrInfo;
-</pre>
-<div class="fcndef">
-Returns an array of <code>XML_AttrInfo</code> structures for the
-attribute/value pairs passed in the last call to the
-<code>XML_StartElementHandler</code> that were specified
-in the start-tag rather than defaulted. Each attribute/value pair counts
-as 1; thus the number of entries in the array is
-<code>XML_GetSpecifiedAttributeCount(parser) / 2</code>.
-</div>
-
-<pre class="fcndec" id="XML_SetEncoding">
-enum XML_Status XMLCALL
-XML_SetEncoding(XML_Parser p,
-                const XML_Char *encoding);
-</pre>
-<div class="fcndef">
-Set the encoding to be used by the parser. It is equivalent to
-passing a non-null encoding argument to the parser creation functions.
-It must not be called after <code><a href= "#XML_Parse"
->XML_Parse</a></code> or <code><a href= "#XML_ParseBuffer"
->XML_ParseBuffer</a></code> have been called on the given parser.
-Returns <code>XML_STATUS_OK</code> on success or
-<code>XML_STATUS_ERROR</code> on error.
-</div>
-
-<pre class="fcndec" id="XML_SetParamEntityParsing">
-int XMLCALL
-XML_SetParamEntityParsing(XML_Parser p,
-                          enum XML_ParamEntityParsing code);
-</pre>
-<div class="fcndef">
-This enables parsing of parameter entities, including the external
-parameter entity that is the external DTD subset, according to
-<code>code</code>.
-The choices for <code>code</code> are:
-<ul>
-<li><code>XML_PARAM_ENTITY_PARSING_NEVER</code></li>
-<li><code>XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE</code></li>
-<li><code>XML_PARAM_ENTITY_PARSING_ALWAYS</code></li>
-</ul>
-<b>Note:</b> If <code>XML_SetParamEntityParsing</code> is called after 
-<code>XML_Parse</code> or <code>XML_ParseBuffer</code>, then it has
-no effect and will always return 0.
-</div>
-
-<pre class="fcndec" id="XML_SetHashSalt">
-int XMLCALL
-XML_SetHashSalt(XML_Parser p,
-                unsigned long hash_salt);
-</pre>
-<div class="fcndef">
-Sets the hash salt to use for internal hash calculations.
-Helps in preventing DoS attacks based on predicting hash
-function behavior. In order to have an effect this must be called
-before parsing has started. Returns 1 if successful, 0 when called
-after <code>XML_Parse</code> or <code>XML_ParseBuffer</code>.
-<p><b>Note:</b> This call is optional, as the parser will auto-generate a new
-random salt value if no value has been set at the start of parsing.</p>
-</div>
-
-<pre class="fcndec" id="XML_UseForeignDTD">
-enum XML_Error XMLCALL
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
-</pre>
-<div class="fcndef">
-<p>This function allows an application to provide an external subset
-for the document type declaration for documents which do not specify
-an external subset of their own.  For documents which specify an
-external subset in their DOCTYPE declaration, the application-provided
-subset will be ignored.  If the document does not contain a DOCTYPE
-declaration at all and <code>useDTD</code> is true, the
-application-provided subset will be parsed, but the
-<code>startDoctypeDeclHandler</code> and
-<code>endDoctypeDeclHandler</code> functions, if set, will not be
-called.  The setting of parameter entity parsing, controlled using
-<code><a href= "#XML_SetParamEntityParsing"
->XML_SetParamEntityParsing</a></code>, will be honored.</p>
-
-<p>The application-provided external subset is read by calling the
-external entity reference handler set via <code><a href=
-"#XML_SetExternalEntityRefHandler"
->XML_SetExternalEntityRefHandler</a></code> with both
-<code>publicId</code> and <code>systemId</code> set to NULL.</p>
-
-<p>If this function is called after parsing has begun, it returns
-<code>XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING</code> and ignores
-<code>useDTD</code>.  If called when Expat has been compiled without
-DTD support, it returns
-<code>XML_ERROR_FEATURE_REQUIRES_XML_DTD</code>.  Otherwise, it
-returns <code>XML_ERROR_NONE</code>.</p>
-
-<p><b>Note:</b> For the purpose of checking WFC: Entity Declared, passing
-<code>useDTD == XML_TRUE</code> will make the parser behave as if
-the document had a DTD with an external subset. This holds true even if
-the external entity reference handler returns without action.</p>
-</div>
-
-<pre class="fcndec" id="XML_SetReturnNSTriplet">
-void XMLCALL
-XML_SetReturnNSTriplet(XML_Parser parser,
-                       int        do_nst);
-</pre>
-<div class="fcndef">
-<p>
-This function only has an effect when using a parser created with
-<code><a href= "#XML_ParserCreateNS" >XML_ParserCreateNS</a></code>,
-i.e. when namespace processing is in effect. The <code>do_nst</code>
-sets whether or not prefixes are returned with names qualified with a
-namespace prefix. If this function is called with <code>do_nst</code>
-non-zero, then afterwards namespace qualified names (that is qualified
-with a prefix as opposed to belonging to a default namespace) are
-returned as a triplet with the three parts separated by the namespace
-separator specified when the parser was created.  The order of
-returned parts is URI, local name, and prefix.</p> <p>If
-<code>do_nst</code> is zero, then namespaces are reported in the
-default manner, URI then local_name separated by the namespace
-separator.</p>
-</div>
-
-<pre class="fcndec" id="XML_DefaultCurrent">
-void XMLCALL
-XML_DefaultCurrent(XML_Parser parser);
-</pre>
-<div class="fcndef">
-This can be called within a handler for a start element, end element,
-processing instruction or character data.  It causes the corresponding
-markup to be passed to the default handler set by <code><a
-href="#XML_SetDefaultHandler" >XML_SetDefaultHandler</a></code> or
-<code><a href="#XML_SetDefaultHandlerExpand"
->XML_SetDefaultHandlerExpand</a></code>.  It does nothing if there is
-not a default handler.
-</div>
-
-<pre class="fcndec" id="XML_ExpatVersion">
-XML_LChar * XMLCALL
-XML_ExpatVersion();
-</pre>
-<div class="fcndef">
-Return the library version as a string (e.g. <code>"expat_1.95.1"</code>).
-</div>
-
-<pre class="fcndec" id="XML_ExpatVersionInfo">
-struct XML_Expat_Version XMLCALL
-XML_ExpatVersionInfo();
-</pre>
-<pre class="signature">
-typedef struct {
-  int major;
-  int minor;
-  int micro;
-} XML_Expat_Version;
-</pre>
-<div class="fcndef">
-Return the library version information as a structure.
-Some macros are also defined that support compile-time tests of the
-library version:
-<ul>
-<li><code>XML_MAJOR_VERSION</code></li>
-<li><code>XML_MINOR_VERSION</code></li>
-<li><code>XML_MICRO_VERSION</code></li>
-</ul>
-Testing these constants is currently the best way to determine if
-particular parts of the Expat API are available.
-</div>
-
-<pre class="fcndec" id="XML_GetFeatureList">
-const XML_Feature * XMLCALL
-XML_GetFeatureList();
-</pre>
-<pre class="signature">
-enum XML_FeatureEnum {
-  XML_FEATURE_END = 0,
-  XML_FEATURE_UNICODE,
-  XML_FEATURE_UNICODE_WCHAR_T,
-  XML_FEATURE_DTD,
-  XML_FEATURE_CONTEXT_BYTES,
-  XML_FEATURE_MIN_SIZE,
-  XML_FEATURE_SIZEOF_XML_CHAR,
-  XML_FEATURE_SIZEOF_XML_LCHAR,
-  XML_FEATURE_NS,
-  XML_FEATURE_LARGE_SIZE
-};
-
-typedef struct {
-  enum XML_FeatureEnum  feature;
-  XML_LChar            *name;
-  long int              value;
-} XML_Feature;
-</pre>
-<div class="fcndef">
-<p>Returns a list of "feature" records, providing details on how
-Expat was configured at compile time.  Most applications should not
-need to worry about this, but this information is otherwise not
-available from Expat.  This function allows code that does need to
-check these features to do so at runtime.</p>
-
-<p>The return value is an array of <code>XML_Feature</code>,
-terminated by a record with a <code>feature</code> of
-<code>XML_FEATURE_END</code> and <code>name</code> of NULL,
-identifying the feature-test macros Expat was compiled with.  Since an
-application that requires this kind of information needs to determine
-the type of character the <code>name</code> points to, records for the
-<code>XML_FEATURE_SIZEOF_XML_CHAR</code> and
-<code>XML_FEATURE_SIZEOF_XML_LCHAR</code> will be located at the
-beginning of the list, followed by <code>XML_FEATURE_UNICODE</code>
-and <code>XML_FEATURE_UNICODE_WCHAR_T</code>, if they are present at
-all.</p>
-
-<p>Some features have an associated value.  If there isn't an
-associated value, the <code>value</code> field is set to 0.  At this
-time, the following features have been defined to have values:</p>
-
-<dl>
-  <dt><code>XML_FEATURE_SIZEOF_XML_CHAR</code></dt>
-  <dd>The number of bytes occupied by one <code>XML_Char</code>
-  character.</dd>
-  <dt><code>XML_FEATURE_SIZEOF_XML_LCHAR</code></dt>
-  <dd>The number of bytes occupied by one <code>XML_LChar</code>
-  character.</dd>
-  <dt><code>XML_FEATURE_CONTEXT_BYTES</code></dt>
-  <dd>The maximum number of characters of context which can be
-  reported by <code><a href= "#XML_GetInputContext"
-  >XML_GetInputContext</a></code>.</dd>
-</dl>
-</div>
-
-<pre class="fcndec" id="XML_FreeContentModel">
-void XMLCALL
-XML_FreeContentModel(XML_Parser parser, XML_Content *model);
-</pre>
-<div class="fcndef">
-Function to deallocate the <code>model</code> argument passed to the
-<code>XML_ElementDeclHandler</code> callback set using <code><a
-href="#XML_SetElementDeclHandler" >XML_ElementDeclHandler</a></code>.
-This function should not be used for any other purpose.
-</div>
-
-<p>The following functions allow external code to share the memory
-allocator an <code>XML_Parser</code> has been configured to use.  This
-is especially useful for third-party libraries that interact with a
-parser object created by application code, or heavily layered
-applications.  This can be essential when using dynamically loaded
-libraries which use different C standard libraries (this can happen on
-Windows, at least).</p>
-
-<pre class="fcndec" id="XML_MemMalloc">
-void * XMLCALL
-XML_MemMalloc(XML_Parser parser, size_t size);
-</pre>
-<div class="fcndef">
-Allocate <code>size</code> bytes of memory using the allocator the
-<code>parser</code> object has been configured to use.  Returns a
-pointer to the memory or NULL on failure.  Memory allocated in this
-way must be freed using <code><a href="#XML_MemFree"
->XML_MemFree</a></code>.
-</div>
-
-<pre class="fcndec" id="XML_MemRealloc">
-void * XMLCALL
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
-</pre>
-<div class="fcndef">
-Allocate <code>size</code> bytes of memory using the allocator the
-<code>parser</code> object has been configured to use.
-<code>ptr</code> must point to a block of memory allocated by <code><a
-href="#XML_MemMalloc" >XML_MemMalloc</a></code> or
-<code>XML_MemRealloc</code>, or be NULL.  This function tries to
-expand the block pointed to by <code>ptr</code> if possible.  Returns
-a pointer to the memory or NULL on failure.  On success, the original
-block has either been expanded or freed.  On failure, the original
-block has not been freed; the caller is responsible for freeing the
-original block.  Memory allocated in this way must be freed using
-<code><a href="#XML_MemFree"
->XML_MemFree</a></code>.
-</div>
-
-<pre class="fcndec" id="XML_MemFree">
-void XMLCALL
-XML_MemFree(XML_Parser parser, void *ptr);
-</pre>
-<div class="fcndef">
-Free a block of memory pointed to by <code>ptr</code>.  The block must
-have been allocated by <code><a href="#XML_MemMalloc"
->XML_MemMalloc</a></code> or <code>XML_MemRealloc</code>, or be NULL.
-</div>
-
-<hr />
-<p><a href="http://validator.w3.org/check/referer"><img
-        src="valid-xhtml10.png" alt="Valid XHTML 1.0!"
-        height="31" width="88" class="noborder" /></a></p>
-</div>
-</body>
-</html>
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/style.css b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/style.css
deleted file mode 100644
index 69df30bc..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/style.css
+++ /dev/null
@@ -1,101 +0,0 @@
-body {
-  background-color: white;
-  border: 0px;
-  margin: 0px;
-  padding: 0px;
-}
-
-.corner {
-  width: 200px;
-  height: 80px;
-  text-align: center;
-}
-
-.banner {
-  background-color: rgb(110,139,61);
-  color: rgb(255,236,176);
-  padding-left: 2em;
-}
-
-.banner h1 {
-  font-size: 200%;
-}
-
-.content {
-  padding: 0em 2em 1em 2em;
-}
-
-.releaseno {
-  background-color: rgb(110,139,61);
-  color: rgb(255,236,176);
-  padding-bottom: 0.3em;
-  padding-top: 0.5em;
-  text-align: center;
-  font-weight: bold;
-}
-
-.noborder {
-  border-width: 0px;
-}
-
-.eg {
-  padding-left: 1em;
-  padding-top: .5em;
-  padding-bottom: .5em;
-  border: solid thin;
-  margin: 1em 0;
-  background-color: tan;
-  margin-left: 2em;
-  margin-right: 10%;
-}
-
-.pseudocode {
-  padding-left: 1em;
-  padding-top: .5em;
-  padding-bottom: .5em;
-  border: solid thin;
-  margin: 1em 0;
-  background-color: rgb(250,220,180);
-  margin-left: 2em;
-  margin-right: 10%;
-}
-
-.handler {
-  width: 100%;
-  border-top-width: thin;  
-  margin-bottom: 1em;
-}
-
-.handler p {
-  margin-left: 2em;
-}
-
-.setter {
-  font-weight: bold;
-}
-
-.signature {
-  color: navy;
-}
-
-.fcndec {
-  width: 100%;
-  border-top-width: thin;
-  font-weight: bold;
-}
-
-.fcndef {
-  margin-left: 2em;
-  margin-bottom: 2em;
-}
-
-dd {
-  margin-bottom: 2em;
-}
-
-.cpp-symbols dt {
-  font-family: monospace;
-}
-.cpp-symbols dd {
-  margin-bottom: 1em;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/valid-xhtml10.png b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/valid-xhtml10.png
deleted file mode 100644
index 4c23f48fe02a58fbb3d1088e6a7d372568830b53..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2368
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

diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/xmlwf.1 b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/xmlwf.1
deleted file mode 100644
index 174719a7..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/xmlwf.1
+++ /dev/null
@@ -1,251 +0,0 @@
-.\" This manpage has been automatically generated by docbook2man 
-.\" from a DocBook document.  This tool can be found at:
-.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
-.\" Please send any bug reports, improvements, comments, patches, 
-.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "XMLWF" "1" "24 January 2003" "" ""
-.SH NAME
-xmlwf \- Determines if an XML document is well-formed
-.SH SYNOPSIS
-
-\fBxmlwf\fR [ \fB-s\fR]  [ \fB-n\fR]  [ \fB-p\fR]  [ \fB-x\fR]  [ \fB-e \fIencoding\fB\fR]  [ \fB-w\fR]  [ \fB-d \fIoutput-dir\fB\fR]  [ \fB-c\fR]  [ \fB-m\fR]  [ \fB-r\fR]  [ \fB-t\fR]  [ \fB-v\fR]  [ \fBfile ...\fR] 
-
-.SH "DESCRIPTION"
-.PP
-\fBxmlwf\fR uses the Expat library to
-determine if an XML document is well-formed.  It is
-non-validating.
-.PP
-If you do not specify any files on the command-line, and you
-have a recent version of \fBxmlwf\fR, the
-input file will be read from standard input.
-.SH "WELL-FORMED DOCUMENTS"
-.PP
-A well-formed document must adhere to the
-following rules:
-.TP 0.2i
-\(bu
-The file begins with an XML declaration.  For instance,
-<?xml version="1.0" standalone="yes"?>.
-\fBNOTE:\fR
-\fBxmlwf\fR does not currently
-check for a valid XML declaration.
-.TP 0.2i
-\(bu
-Every start tag is either empty (<tag/>)
-or has a corresponding end tag.
-.TP 0.2i
-\(bu
-There is exactly one root element.  This element must contain
-all other elements in the document.  Only comments, white
-space, and processing instructions may come after the close
-of the root element.
-.TP 0.2i
-\(bu
-All elements nest properly.
-.TP 0.2i
-\(bu
-All attribute values are enclosed in quotes (either single
-or double).
-.PP
-If the document has a DTD, and it strictly complies with that
-DTD, then the document is also considered \fBvalid\fR.
-\fBxmlwf\fR is a non-validating parser --
-it does not check the DTD.  However, it does support
-external entities (see the \fB-x\fR option).
-.SH "OPTIONS"
-.PP
-When an option includes an argument, you may specify the argument either
-separately ("\fB-d\fR output") or concatenated with the
-option ("\fB-d\fRoutput").  \fBxmlwf\fR
-supports both.
-.TP
-\fB-c\fR
-If the input file is well-formed and \fBxmlwf\fR
-doesn't encounter any errors, the input file is simply copied to
-the output directory unchanged.
-This implies no namespaces (turns off \fB-n\fR) and
-requires \fB-d\fR to specify an output file.
-.TP
-\fB-d output-dir\fR
-Specifies a directory to contain transformed
-representations of the input files.
-By default, \fB-d\fR outputs a canonical representation
-(described below).
-You can select different output formats using \fB-c\fR
-and \fB-m\fR.
-
-The output filenames will
-be exactly the same as the input filenames or "STDIN" if the input is
-coming from standard input.  Therefore, you must be careful that the
-output file does not go into the same directory as the input
-file.  Otherwise, \fBxmlwf\fR will delete the
-input file before it generates the output file (just like running
-cat < file > file in most shells).
-
-Two structurally equivalent XML documents have a byte-for-byte
-identical canonical XML representation.
-Note that ignorable white space is considered significant and
-is treated equivalently to data.
-More on canonical XML can be found at
-http://www.jclark.com/xml/canonxml.html .
-.TP
-\fB-e encoding\fR
-Specifies the character encoding for the document, overriding
-any document encoding declaration.  \fBxmlwf\fR
-supports four built-in encodings:
-US-ASCII,
-UTF-8,
-UTF-16, and
-ISO-8859-1.
-Also see the \fB-w\fR option.
-.TP
-\fB-m\fR
-Outputs some strange sort of XML file that completely
-describes the input file, including character positions.
-Requires \fB-d\fR to specify an output file.
-.TP
-\fB-n\fR
-Turns on namespace processing.  (describe namespaces)
-\fB-c\fR disables namespaces.
-.TP
-\fB-p\fR
-Tells xmlwf to process external DTDs and parameter
-entities.
-
-Normally \fBxmlwf\fR never parses parameter
-entities.  \fB-p\fR tells it to always parse them.
-\fB-p\fR implies \fB-x\fR.
-.TP
-\fB-r\fR
-Normally \fBxmlwf\fR memory-maps the XML file
-before parsing; this can result in faster parsing on many
-platforms.
-\fB-r\fR turns off memory-mapping and uses normal file
-IO calls instead.
-Of course, memory-mapping is automatically turned off
-when reading from standard input.
-
-Use of memory-mapping can cause some platforms to report
-substantially higher memory usage for
-\fBxmlwf\fR, but this appears to be a matter of
-the operating system reporting memory in a strange way; there is
-not a leak in \fBxmlwf\fR.
-.TP
-\fB-s\fR
-Prints an error if the document is not standalone. 
-A document is standalone if it has no external subset and no
-references to parameter entities.
-.TP
-\fB-t\fR
-Turns on timings.  This tells Expat to parse the entire file,
-but not perform any processing.
-This gives a fairly accurate idea of the raw speed of Expat itself
-without client overhead.
-\fB-t\fR turns off most of the output options
-(\fB-d\fR, \fB-m\fR, \fB-c\fR,
-\&...).
-.TP
-\fB-v\fR
-Prints the version of the Expat library being used, including some
-information on the compile-time configuration of the library, and
-then exits.
-.TP
-\fB-w\fR
-Enables support for Windows code pages.
-Normally, \fBxmlwf\fR will throw an error if it
-runs across an encoding that it is not equipped to handle itself.  With
-\fB-w\fR, xmlwf will try to use a Windows code
-page.  See also \fB-e\fR.
-.TP
-\fB-x\fR
-Turns on parsing external entities.
-
-Non-validating parsers are not required to resolve external
-entities, or even expand entities at all.
-Expat always expands internal entities (?),
-but external entity parsing must be enabled explicitly.
-
-External entities are simply entities that obtain their
-data from outside the XML file currently being parsed.
-
-This is an example of an internal entity:
-
-.nf
-<!ENTITY vers '1.0.2'>
-.fi
-
-And here are some examples of external entities:
-
-.nf
-<!ENTITY header SYSTEM "header-&vers;.xml">  (parsed)
-<!ENTITY logo SYSTEM "logo.png" PNG>         (unparsed)
-.fi
-.TP
-\fB--\fR
-(Two hyphens.)
-Terminates the list of options.  This is only needed if a filename
-starts with a hyphen.  For example:
-
-.nf
-xmlwf -- -myfile.xml
-.fi
-
-will run \fBxmlwf\fR on the file
-\fI-myfile.xml\fR.
-.PP
-Older versions of \fBxmlwf\fR do not support
-reading from standard input.
-.SH "OUTPUT"
-.PP
-If an input file is not well-formed,
-\fBxmlwf\fR prints a single line describing
-the problem to standard output.  If a file is well formed,
-\fBxmlwf\fR outputs nothing.
-Note that the result code is \fBnot\fR set.
-.SH "BUGS"
-.PP
-According to the W3C standard, an XML file without a
-declaration at the beginning is not considered well-formed.
-However, \fBxmlwf\fR allows this to pass.
-.PP
-\fBxmlwf\fR returns a 0 - noerr result,
-even if the file is not well-formed.  There is no good way for
-a program to use \fBxmlwf\fR to quickly
-check a file -- it must parse \fBxmlwf\fR's
-standard output.
-.PP
-The errors should go to standard error, not standard output.
-.PP
-There should be a way to get \fB-d\fR to send its
-output to standard output rather than forcing the user to send
-it to a file.
-.PP
-I have no idea why anyone would want to use the
-\fB-d\fR, \fB-c\fR, and
-\fB-m\fR options.  If someone could explain it to
-me, I'd like to add this information to this manpage.
-.SH "ALTERNATIVES"
-.PP
-Here are some XML validators on the web:
-
-.nf
-http://www.hcrc.ed.ac.uk/~richard/xml-check.html
-http://www.stg.brown.edu/service/xmlvalid/
-http://www.scripting.com/frontier5/xml/code/xmlValidator.html
-http://www.xml.com/pub/a/tools/ruwf/check.html
-.fi
-.SH "SEE ALSO"
-.PP
-
-.nf
-The Expat home page:        http://www.libexpat.org/
-The W3 XML specification:   http://www.w3.org/TR/REC-xml
-.fi
-.SH "AUTHOR"
-.PP
-This manual page was written by Scott Bronson <bronson@rinspin.com> for
-the Debian GNU/Linux system (but may be used by others).  Permission is
-granted to copy, distribute and/or modify this document under
-the terms of the GNU Free Documentation
-License, Version 1.1.
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/xmlwf.sgml b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/xmlwf.sgml
deleted file mode 100644
index 313cfbcb..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/doc/xmlwf.sgml
+++ /dev/null
@@ -1,468 +0,0 @@
-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
-
-<!-- Process this file with docbook-to-man to generate an nroff manual
-     page: `docbook-to-man manpage.sgml > manpage.1'.  You may view
-     the manual page with: `docbook-to-man manpage.sgml | nroff -man |
-     less'.  A typical entry in a Makefile or Makefile.am is:
-
-manpage.1: manpage.sgml
-	docbook-to-man $< > $@
-  -->
-
-  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
-  <!ENTITY dhfirstname "<firstname>Scott</firstname>">
-  <!ENTITY dhsurname   "<surname>Bronson</surname>">
-  <!-- Please adjust the date whenever revising the manpage. -->
-  <!ENTITY dhdate      "<date>December  5, 2001</date>">
-  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
-       allowed: see man(7), man(1). -->
-  <!ENTITY dhsection   "<manvolnum>1</manvolnum>">
-  <!ENTITY dhemail     "<email>bronson@rinspin.com</email>">
-  <!ENTITY dhusername  "Scott Bronson">
-  <!ENTITY dhucpackage "<refentrytitle>XMLWF</refentrytitle>">
-  <!ENTITY dhpackage   "xmlwf">
-
-  <!ENTITY debian      "<productname>Debian GNU/Linux</productname>">
-  <!ENTITY gnu         "<acronym>GNU</acronym>">
-]>
-
-<refentry>
-  <refentryinfo>
-    <address>
-      &dhemail;
-    </address>
-    <author>
-      &dhfirstname;
-      &dhsurname;
-    </author>
-    <copyright>
-      <year>2001</year>
-      <holder>&dhusername;</holder>
-    </copyright>
-    &dhdate;
-  </refentryinfo>
-  <refmeta>
-    &dhucpackage;
-
-    &dhsection;
-  </refmeta>
-  <refnamediv>
-    <refname>&dhpackage;</refname>
-
-    <refpurpose>Determines if an XML document is well-formed</refpurpose>
-  </refnamediv>
-  <refsynopsisdiv>
-    <cmdsynopsis>
-      <command>&dhpackage;</command>
-	  <arg><option>-s</option></arg>
-	  <arg><option>-n</option></arg>
-	  <arg><option>-p</option></arg>
-	  <arg><option>-x</option></arg>
-
-	  <arg><option>-e <replaceable>encoding</replaceable></option></arg>
-	  <arg><option>-w</option></arg>
-
-	  <arg><option>-d <replaceable>output-dir</replaceable></option></arg>
-	  <arg><option>-c</option></arg>
-	  <arg><option>-m</option></arg>
-
-	  <arg><option>-r</option></arg>
-	  <arg><option>-t</option></arg>
-
-	  <arg><option>-v</option></arg>
-
-	  <arg>file ...</arg>
-    </cmdsynopsis>
-  </refsynopsisdiv>
- 
-  <refsect1>
-    <title>DESCRIPTION</title>
-
-    <para>
-	<command>&dhpackage;</command> uses the Expat library to
-	determine if an XML document is well-formed.  It is
-	non-validating.
-	</para>
-
-	<para>
-	If you do not specify any files on the command-line, and you
-	have a recent version of <command>&dhpackage;</command>, the
-	input file will be read from standard input.
-	</para>
-
-  </refsect1>
-
-  <refsect1>
-    <title>WELL-FORMED DOCUMENTS</title>
-
-	<para>
-	  A well-formed document must adhere to the
-	  following rules:
-	</para>
-
-	<itemizedlist>
-      <listitem><para>
-	    The file begins with an XML declaration.  For instance,
-		<literal>&lt;?xml version="1.0" standalone="yes"?&gt;</literal>.
-		<emphasis>NOTE:</emphasis>
-		<command>&dhpackage;</command> does not currently
-		check for a valid XML declaration.
-      </para></listitem>
-      <listitem><para>
-		Every start tag is either empty (&lt;tag/&gt;)
-		or has a corresponding end tag.
-      </para></listitem>
-      <listitem><para>
-	    There is exactly one root element.  This element must contain
-		all other elements in the document.  Only comments, white
-		space, and processing instructions may come after the close
-		of the root element.
-      </para></listitem>
-      <listitem><para>
-		All elements nest properly.
-      </para></listitem>
-      <listitem><para>
-		All attribute values are enclosed in quotes (either single
-		or double).
-      </para></listitem>
-    </itemizedlist>
-
-	<para>
-	  If the document has a DTD, and it strictly complies with that
-	  DTD, then the document is also considered <emphasis>valid</emphasis>.
-	  <command>&dhpackage;</command> is a non-validating parser --
-	  it does not check the DTD.  However, it does support
-	  external entities (see the <option>-x</option> option).
-	</para>
-  </refsect1>
-
-  <refsect1>
-    <title>OPTIONS</title>
-
-<para>
-When an option includes an argument, you may specify the argument either
-separately ("<option>-d</option> output") or concatenated with the
-option ("<option>-d</option>output").  <command>&dhpackage;</command>
-supports both.
-</para>
-
-    <variablelist>
-
-      <varlistentry>
-        <term><option>-c</option></term>
-        <listitem>
-		<para>
-  If the input file is well-formed and <command>&dhpackage;</command>
-  doesn't encounter any errors, the input file is simply copied to
-  the output directory unchanged.
-  This implies no namespaces (turns off <option>-n</option>) and
-  requires <option>-d</option> to specify an output file.
-  		</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-d output-dir</option></term>
-        <listitem>
-		<para>
-  Specifies a directory to contain transformed
-  representations of the input files.
-  By default, <option>-d</option> outputs a canonical representation
-  (described below).
-  You can select different output formats using <option>-c</option>
-  and <option>-m</option>.
-	  </para>
-	  <para>
-  The output filenames will
-  be exactly the same as the input filenames or "STDIN" if the input is
-  coming from standard input.  Therefore, you must be careful that the
-  output file does not go into the same directory as the input
-  file.  Otherwise, <command>&dhpackage;</command> will delete the
-  input file before it generates the output file (just like running
-  <literal>cat &lt; file &gt; file</literal> in most shells).
-	  </para>
-	  <para> 
-  Two structurally equivalent XML documents have a byte-for-byte
-  identical canonical XML representation.
-  Note that ignorable white space is considered significant and
-  is treated equivalently to data.
-  More on canonical XML can be found at
-  http://www.jclark.com/xml/canonxml.html .
-	  </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-e encoding</option></term>
-        <listitem>
-		<para>
-   Specifies the character encoding for the document, overriding
-   any document encoding declaration.  <command>&dhpackage;</command>
-   supports four built-in encodings:
-   	<literal>US-ASCII</literal>,
-	<literal>UTF-8</literal>,
-	<literal>UTF-16</literal>, and
-	<literal>ISO-8859-1</literal>.
-   Also see the <option>-w</option> option.
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-m</option></term>
-        <listitem>
-		<para>
-  Outputs some strange sort of XML file that completely
-  describes the the input file, including character postitions.
-  Requires <option>-d</option> to specify an output file.
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-n</option></term>
-        <listitem>
-		<para>
-  Turns on namespace processing.  (describe namespaces)
-  <option>-c</option> disables namespaces.
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-p</option></term>
-        <listitem>
-		<para>
-    Tells xmlwf to process external DTDs and parameter
-    entities.
-	 </para>
-	 <para>
-   Normally <command>&dhpackage;</command> never parses parameter
-   entities.  <option>-p</option> tells it to always parse them.
-   <option>-p</option> implies <option>-x</option>.
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-r</option></term>
-        <listitem>
-		<para>
-   Normally <command>&dhpackage;</command> memory-maps the XML file
-   before parsing; this can result in faster parsing on many
-   platforms.
-   <option>-r</option> turns off memory-mapping and uses normal file
-   IO calls instead.
-   Of course, memory-mapping is automatically turned off
-   when reading from standard input.
-	   </para>
-		<para>
-   Use of memory-mapping can cause some platforms to report
-   substantially higher memory usage for
-   <command>&dhpackage;</command>, but this appears to be a matter of
-   the operating system reporting memory in a strange way; there is
-   not a leak in <command>&dhpackage;</command>.
-           </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-s</option></term>
-        <listitem>
-		<para>
-  Prints an error if the document is not standalone. 
-  A document is standalone if it has no external subset and no
-  references to parameter entities.
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-t</option></term>
-        <listitem>
-		<para>
-  Turns on timings.  This tells Expat to parse the entire file,
-  but not perform any processing.
-  This gives a fairly accurate idea of the raw speed of Expat itself
-  without client overhead.
-  <option>-t</option> turns off most of the output options
-  (<option>-d</option>, <option>-m</option>, <option>-c</option>,
-  ...).
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-v</option></term>
-        <listitem>
-		<para>
-  Prints the version of the Expat library being used, including some
-  information on the compile-time configuration of the library, and
-  then exits.
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-w</option></term>
-        <listitem>
-		<para>
-  Enables support for Windows code pages.
-  Normally, <command>&dhpackage;</command> will throw an error if it
-  runs across an encoding that it is not equipped to handle itself.  With
-  <option>-w</option>, &dhpackage; will try to use a Windows code
-  page.  See also <option>-e</option>.
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>-x</option></term>
-        <listitem>
-		<para>
-  Turns on parsing external entities.
-  </para>
-<para>
-  Non-validating parsers are not required to resolve external
-  entities, or even expand entities at all.
-  Expat always expands internal entities (?),
-  but external entity parsing must be enabled explicitly.
-  </para>
-  <para>
-  External entities are simply entities that obtain their
-  data from outside the XML file currently being parsed.
-  </para>
-  <para>
-  This is an example of an internal entity:
-<literallayout>
-&lt;!ENTITY vers '1.0.2'&gt;
-</literallayout>
-  </para>
-  <para>
-  And here are some examples of external entities:
-
-<literallayout>
-&lt;!ENTITY header SYSTEM "header-&amp;vers;.xml"&gt;  (parsed)
-&lt;!ENTITY logo SYSTEM "logo.png" PNG&gt;         (unparsed)
-</literallayout>
-
-	   </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><option>--</option></term>
-        <listitem>
-		<para>
-    (Two hyphens.)
-    Terminates the list of options.  This is only needed if a filename
-    starts with a hyphen.  For example:
-	   </para>
-<literallayout>
-&dhpackage; -- -myfile.xml
-</literallayout>
-		<para>
-    will run <command>&dhpackage;</command> on the file
-    <filename>-myfile.xml</filename>.
-	   </para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-
-	<para>
-    Older versions of <command>&dhpackage;</command> do not support
-    reading from standard input.
-	</para>
-  </refsect1>
-
-  <refsect1>
-  <title>OUTPUT</title>
-    <para>
-	If an input file is not well-formed,
-	<command>&dhpackage;</command> prints a single line describing
-	the problem to standard output.  If a file is well formed,
-	<command>&dhpackage;</command> outputs nothing.
-	Note that the result code is <emphasis>not</emphasis> set.
-	</para>
-  </refsect1>
-  
-  <refsect1>
-    <title>BUGS</title>
-	<para>
-	<command>&dhpackage;</command> returns a 0 - noerr result,
-	even if the file is not well-formed.  There is no good way for
-	a program to use <command>&dhpackage;</command> to quickly
-	check a file -- it must parse <command>&dhpackage;</command>'s
-	standard output.
-	</para>
-	<para>
-	The errors should go to standard error, not standard output.
-	</para>
-	<para>
-	There should be a way to get <option>-d</option> to send its
-	output to standard output rather than forcing the user to send
-	it to a file.
-	</para>
-	<para>
-	I have no idea why anyone would want to use the
-	<option>-d</option>, <option>-c</option>, and
-	<option>-m</option> options.  If someone could explain it to
-	me, I'd like to add this information to this manpage.
-	</para>
-  </refsect1>
-
-  <refsect1>
-    <title>ALTERNATIVES</title>
-	<para>
-	  Here are some XML validators on the web:
-
-<literallayout>
-http://www.hcrc.ed.ac.uk/~richard/xml-check.html
-http://www.stg.brown.edu/service/xmlvalid/
-http://www.scripting.com/frontier5/xml/code/xmlValidator.html
-http://www.xml.com/pub/a/tools/ruwf/check.html
-</literallayout>
-
-		 </para>
-  </refsect1>
-
-  <refsect1>
-    <title>SEE ALSO</title>
-	<para>
-
-<literallayout>
-The Expat home page:        http://www.libexpat.org/
-The W3 XML specification:   http://www.w3.org/TR/REC-xml
-</literallayout>
-
-	</para>
-  </refsect1>
-
-  <refsect1>
-    <title>AUTHOR</title>
-    <para>
-	  This manual page was written by &dhusername; &dhemail; for
-      the &debian; system (but may be used by others).  Permission is
-      granted to copy, distribute and/or modify this document under
-      the terms of the <acronym>GNU</acronym> Free Documentation
-      License, Version 1.1.
-	</para>
-  </refsect1>
-</refentry>
-
-<!-- Keep this comment at the end of the file
-Local variables:
-mode: sgml
-sgml-omittag:t
-sgml-shorttag:t
-sgml-minimize-attributes:nil
-sgml-always-quote-attributes:t
-sgml-indent-step:2
-sgml-indent-data:t
-sgml-parent-document:nil
-sgml-default-dtd-file:nil
-sgml-exposed-tags:nil
-sgml-local-catalogs:nil
-sgml-local-ecat-files:nil
-End:
--->
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat.dsw b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat.dsw
deleted file mode 100644
index 2d62eec5..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat.dsw
+++ /dev/null
@@ -1,110 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "elements"=.\examples\elements.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name expat_static
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "expat"=.\lib\expat.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "expat_static"=.\lib\expat_static.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "expatw"=.\lib\expatw.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "expatw_static"=.\lib\expatw_static.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "outline"=.\examples\outline.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name expat
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "xmlwf"=.\xmlwf\xmlwf.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name expat
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat.pc.in b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat.pc.in
deleted file mode 100644
index 5207e3e1..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: expat
-Version: @PACKAGE_VERSION@
-Description: expat XML parser
-URL: http://www.libexpat.org
-Libs: -L${libdir} -lexpat
-Cflags: -I${includedir}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat_config.h.cmake b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat_config.h.cmake
deleted file mode 100644
index 25d79a6d..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat_config.h.cmake
+++ /dev/null
@@ -1,91 +0,0 @@
-/* expat_config.h.in.  Generated from configure.in by autoheader.  */
-
-/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
-#cmakedefine BYTEORDER @BYTEORDER@
-
-/* Define to 1 if you have the `bcopy' function. */
-#cmakedefine HAVE_BCOPY
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#cmakedefine HAVE_DLFCN_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#cmakedefine HAVE_FCNTL_H
-
-/* Define to 1 if you have the `getpagesize' function. */
-#cmakedefine HAVE_GETPAGESIZE
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#cmakedefine HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `memmove' function. */
-#cmakedefine HAVE_MEMMOVE
-
-/* Define to 1 if you have the <memory.h> header file. */
-#cmakedefine HAVE_MEMORY_H
-
-/* Define to 1 if you have a working `mmap' system call. */
-#cmakedefine HAVE_MMAP
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#cmakedefine HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#cmakedefine HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#cmakedefine HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#cmakedefine HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#cmakedefine HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#cmakedefine HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#cmakedefine HAVE_UNISTD_H
-
-/* Define to the address where bug reports for this package should be sent. */
-#cmakedefine PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#cmakedefine PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#cmakedefine PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#cmakedefine PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#cmakedefine PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#cmakedefine STDC_HEADERS
-
-/* whether byteorder is bigendian */
-#cmakedefine WORDS_BIGENDIAN
-
-/* Define to specify how much context to retain around the current parse
-   point. */
-#cmakedefine XML_CONTEXT_BYTES @XML_CONTEXT_BYTES@
-
-/* Define to make parameter entity parsing functionality available. */
-#cmakedefine XML_DTD
-
-/* Define to make XML Namespaces functionality available. */
-#cmakedefine XML_NS
-
-/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */
-#ifdef _MSC_VER
-# define __func__ __FUNCTION__
-#endif
-
-/* Define to `long' if <sys/types.h> does not define. */
-#cmakedefine off_t @OFF_T@
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-#cmakedefine size_t @SIZE_T@
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat_config.h.in b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat_config.h.in
deleted file mode 100644
index 8c6e5140..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/expat_config.h.in
+++ /dev/null
@@ -1,102 +0,0 @@
-/* expat_config.h.in.  Generated from configure.in by autoheader.  */
-
-/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
-#undef BYTEORDER
-
-/* Define to 1 if you have the `bcopy' function. */
-#undef HAVE_BCOPY
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `memmove' function. */
-#undef HAVE_MEMMOVE
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#undef LT_OBJDIR
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* whether byteorder is bigendian */
-#undef WORDS_BIGENDIAN
-
-/* Define to specify how much context to retain around the current parse
-   point. */
-#undef XML_CONTEXT_BYTES
-
-/* Define to make parameter entity parsing functionality available. */
-#undef XML_DTD
-
-/* Define to make XML Namespaces functionality available. */
-#undef XML_NS
-
-/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */
-#undef __func__
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `long int' if <sys/types.h> does not define. */
-#undef off_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/Makefile.MPW b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/Makefile.MPW
deleted file mode 100644
index 046af005..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/Makefile.MPW
+++ /dev/null
@@ -1,206 +0,0 @@
-#   File:       Makefile.MPW
-#   Targets:    All, Dynamic, Static (and Clean, Clean-All)
-#   Created:    Tuesday, July 02, 2002
-#
-#   MPW Makefile for building expat under the "classic" (i.e. pre-X) Mac OS
-#   Copyright � 2002 Daryle Walker
-#   Portions Copyright � 2002 Thomas Wegner
-#   See the COPYING file for distribution information
-#
-#   Description: 
-#   This Makefile lets you build static, dynamic (i.e. shared) and stub 
-#   versions of the expat library as well as the elements.c and outline.c 
-#   examples (built as tools for MPW). This is for PPC only; it should be 
-#   no problem to build a 68K version of the expat library, though.
-#
-# 	Usage: 
-#			       Buildprogram All
-#			 or    Buildprogram Dynamic
-#			 or    Buildprogram Static
-#
-#   Note: You first have to rename this file to "Makefile", or the Buildprogram 
-#         commando will not recognize it.
-#
-
-MAKEFILE        = Makefile
-�MondoBuild�    = {MAKEFILE}  # Make blank to avoid rebuilds when makefile is modified
-
-ObjDir          = :
-SrcDir          = :
-HdrDir          = :
-
-ToolDir         = ::examples:
-
-Includes        = -i {HdrDir}
-
-Sym-PPC         = -sym off
-
-Defines         = -d MACOS_CLASSIC
-
-PPCCOptions     = {Includes} {Sym-PPC} -w 35 {Defines}
-
-FragName        = libexpat
-
-
-### Source Files ###
-
-SrcFiles        =  �
-				  "{SrcDir}xmlparse.c" �
-				  "{SrcDir}xmlrole.c" �
-				  "{SrcDir}xmltok.c"
-
-ToolSrcFiles    =  �
-				  "{ToolDir}elements.c" �
-				  "{ToolDir}outline.c"
-
-
-### Object Files ###
-
-ObjFiles-PPC    =  �
-				  "{ObjDir}xmlparse.c.o" �
-				  "{ObjDir}xmlrole.c.o" �
-				  "{ObjDir}xmltok.c.o"
-
-ElementToolObjFile   =  "{ObjDir}elements.c.o"
-
-OutlineToolObjFile   =  "{ObjDir}outline.c.o"
-
-
-### Libraries ###
-
-StLibFiles-PPC    =  �
-				  "{PPCLibraries}StdCRuntime.o" �
-				  "{PPCLibraries}PPCCRuntime.o" �
-				  "{PPCLibraries}PPCToolLibs.o"
-
-ShLibFiles-PPC    =  �
-				  "{SharedLibraries}InterfaceLib" �
-				  "{SharedLibraries}StdCLib" �
-				  "{SharedLibraries}MathLib"
-
-LibFiles-PPC    =  �
-				  {StLibFiles-PPC} �
-				  {ShLibFiles-PPC}
-
-
-### Special Files ###
-
-ExportFile      = "{ObjDir}{FragName}.exp"
-
-StLibFile       = "{ObjDir}{FragName}.MrC.o"
-
-ShLibFile       = "{ObjDir}{FragName}"
-
-StubFile        = "{ObjDir}{FragName}.stub"
-
-ElementsTool    = "{ToolDir}elements"
-
-OutlineTool     = "{ToolDir}outline"
-
-
-### Default Rules ###
-
-.c.o  �  .c  {�MondoBuild�}
-	{PPCC} {depDir}{default}.c -o {targDir}{default}.c.o {PPCCOptions}
-
-
-### Build Rules ###
-
-All  �  Dynamic {ElementsTool} {OutlineTool}
-
-Static  �  {StLibFile}
-
-Dynamic  �  Static {ShLibFile} {StubFile}
-
-{StLibFile}  ��  {ObjFiles-PPC} {StLibFiles-PPC} {�MondoBuild�}
-	PPCLink �
-		-o {Targ} �
-		{ObjFiles-PPC} �
-		{StLibFiles-PPC} �
-		{Sym-PPC} �
-		-mf -d �
-		-t 'XCOF' �
-		-c 'MPS ' �
-		-xm l
-
-{ShLibFile}  ��  {StLibFile} {ShLibFiles-PPC} {ExportFile} {�MondoBuild�}
-	PPCLink �
-		-o {Targ} �
-		{StLibFile} �
-		{ShLibFiles-PPC} �
-		{Sym-PPC} �
-		-@export {ExportFile} �
-		-fragname {FragName} �
-		-mf -d �
-		-t 'shlb' �
-		-c '????' �
-		-xm s
-
-{StubFile}  ��  {ShLibFile} {�MondoBuild�}
-	shlb2stub -o {Targ} {ShLibFile}
-
-{ElementsTool}  ��  {ElementToolObjFile} {StubFile} {LibFiles-PPC} {�MondoBuild�}
-	PPCLink �
-		-o {Targ} �
-		{ElementToolObjFile} �
-		{StLibFile} �
-		{LibFiles-PPC} �
-		{Sym-PPC} �
-		-mf -d �
-		-t 'MPST' �
-		-c 'MPS '
-
-{OutlineTool}  ��  {OutlineToolObjFile} {StubFile} {LibFiles-PPC} {�MondoBuild�}
-	PPCLink �
-		-o {Targ} �
-		{OutlineToolObjFile} �
-		{StLibFile} �
-		{LibFiles-PPC} �
-		{Sym-PPC} �
-		-mf -d �
-		-t 'MPST' �
-		-c 'MPS '
-
-
-### Special Rules ###
-
-{ExportFile}  ��  "{HdrDir}expat.h" {�MondoBuild�}
-	StreamEdit -d �
-		-e "/�('XMLPARSEAPI('�') ')�0,1�'XML_'([A-Za-z0-9_]+)�1'('/ Print 'XML_' �1" �
-		"{HdrDir}expat.h" > {Targ}
-
-
-### Required Dependencies ###
-
-"{ObjDir}xmlparse.c.o"  �  "{SrcDir}xmlparse.c"
-"{ObjDir}xmlrole.c.o"  �  "{SrcDir}xmlrole.c"
-"{ObjDir}xmltok.c.o"  �  "{SrcDir}xmltok.c"
-
-"{ObjDir}elements.c.o"  � "{ToolDir}elements.c"
-"{ObjDir}outline.c.o"  � "{ToolDir}outline.c"
-
-
-### Optional Dependencies ###
-### Build this target to clean out generated intermediate files. ###
-
-Clean  �
-	Delete {ObjFiles-PPC} {ExportFile} {ElementToolObjFile} {OutlineToolObjFile}
-
-### Build this target to clean out all generated files. ###
-
-Clean-All  �  Clean
-	Delete {StLibFile} {ShLibFile} {StubFile} {ElementsTool} {OutlineTool}
-
-### Build this target to generate "include file" dependencies. ###
-
-Dependencies  �  $OutOfDate
-	MakeDepend �
-		-append {MAKEFILE} �
-		-ignore "{CIncludes}" �
-		-objdir "{ObjDir}" �
-		-objext .o �
-		{Defines} �
-		{Includes} �
-		{SrcFiles}
-
-
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/amigaconfig.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/amigaconfig.h
deleted file mode 100644
index 86c61150..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/amigaconfig.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef AMIGACONFIG_H
-#define AMIGACONFIG_H
-
-/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
-#define BYTEORDER 4321
-
-/* Define to 1 if you have the `bcopy' function. */
-#define HAVE_BCOPY 1
-
-/* Define to 1 if you have the <check.h> header file. */
-#undef HAVE_CHECK_H
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* whether byteorder is bigendian */
-#define WORDS_BIGENDIAN
-
-/* Define to specify how much context to retain around the current parse
-   point. */
-#define XML_CONTEXT_BYTES 1024
-
-/* Define to make parameter entity parsing functionality available. */
-#define XML_DTD
-
-/* Define to make XML Namespaces functionality available. */
-#define XML_NS
-
-#endif  /* AMIGACONFIG_H */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/ascii.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/ascii.h
deleted file mode 100644
index d10530b0..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/ascii.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#define ASCII_A 0x41
-#define ASCII_B 0x42
-#define ASCII_C 0x43
-#define ASCII_D 0x44
-#define ASCII_E 0x45
-#define ASCII_F 0x46
-#define ASCII_G 0x47
-#define ASCII_H 0x48
-#define ASCII_I 0x49
-#define ASCII_J 0x4A
-#define ASCII_K 0x4B
-#define ASCII_L 0x4C
-#define ASCII_M 0x4D
-#define ASCII_N 0x4E
-#define ASCII_O 0x4F
-#define ASCII_P 0x50
-#define ASCII_Q 0x51
-#define ASCII_R 0x52
-#define ASCII_S 0x53
-#define ASCII_T 0x54
-#define ASCII_U 0x55
-#define ASCII_V 0x56
-#define ASCII_W 0x57
-#define ASCII_X 0x58
-#define ASCII_Y 0x59
-#define ASCII_Z 0x5A
-
-#define ASCII_a 0x61
-#define ASCII_b 0x62
-#define ASCII_c 0x63
-#define ASCII_d 0x64
-#define ASCII_e 0x65
-#define ASCII_f 0x66
-#define ASCII_g 0x67
-#define ASCII_h 0x68
-#define ASCII_i 0x69
-#define ASCII_j 0x6A
-#define ASCII_k 0x6B
-#define ASCII_l 0x6C
-#define ASCII_m 0x6D
-#define ASCII_n 0x6E
-#define ASCII_o 0x6F
-#define ASCII_p 0x70
-#define ASCII_q 0x71
-#define ASCII_r 0x72
-#define ASCII_s 0x73
-#define ASCII_t 0x74
-#define ASCII_u 0x75
-#define ASCII_v 0x76
-#define ASCII_w 0x77
-#define ASCII_x 0x78
-#define ASCII_y 0x79
-#define ASCII_z 0x7A
-
-#define ASCII_0 0x30
-#define ASCII_1 0x31
-#define ASCII_2 0x32
-#define ASCII_3 0x33
-#define ASCII_4 0x34
-#define ASCII_5 0x35
-#define ASCII_6 0x36
-#define ASCII_7 0x37
-#define ASCII_8 0x38
-#define ASCII_9 0x39
-
-#define ASCII_TAB 0x09
-#define ASCII_SPACE 0x20
-#define ASCII_EXCL 0x21
-#define ASCII_QUOT 0x22
-#define ASCII_AMP 0x26
-#define ASCII_APOS 0x27
-#define ASCII_MINUS 0x2D
-#define ASCII_PERIOD 0x2E
-#define ASCII_COLON 0x3A
-#define ASCII_SEMI 0x3B
-#define ASCII_LT 0x3C
-#define ASCII_EQUALS 0x3D
-#define ASCII_GT 0x3E
-#define ASCII_LSQB 0x5B
-#define ASCII_RSQB 0x5D
-#define ASCII_UNDERSCORE 0x5F
-#define ASCII_LPAREN 0x28
-#define ASCII_RPAREN 0x29
-#define ASCII_FF 0x0C
-#define ASCII_SLASH 0x2F
-#define ASCII_HASH 0x23
-#define ASCII_PIPE 0x7C
-#define ASCII_COMMA 0x2C
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/asciitab.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/asciitab.h
deleted file mode 100644
index 79a15c28..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/asciitab.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
-/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML,
-/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
-/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
-/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
-/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
-/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
-/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
-/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
-/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
-/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat.dsp b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat.dsp
deleted file mode 100644
index bf728da0..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat.dsp
+++ /dev/null
@@ -1,185 +0,0 @@
-# Microsoft Developer Studio Project File - Name="expat" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=expat - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "expat.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "expat.mak" CFG="expat - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "expat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "expat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "expat - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\win32\bin\Release"
-# PROP Intermediate_Dir "..\win32\tmp\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILED_FROM_DSP" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 /nologo /dll /machine:I386
-# ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpat.dll"
-
-!ELSEIF  "$(CFG)" == "expat - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\win32\bin\Debug"
-# PROP Intermediate_Dir "..\win32\tmp\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpat.dll"
-
-!ENDIF 
-
-# Begin Target
-
-# Name "expat - Win32 Release"
-# Name "expat - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\libexpat.def
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlparse.c
-
-!IF  "$(CFG)" == "expat - Win32 Release"
-
-!ELSEIF  "$(CFG)" == "expat - Win32 Debug"
-
-# ADD CPP /GX- /Od
-
-!ENDIF 
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlrole.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_impl.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_ns.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\ascii.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\asciitab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\expat.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\expat_external.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\iasciitab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\internal.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\latin1tab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\nametab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\utf8tab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlrole.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_impl.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat.h
deleted file mode 100644
index 9a21680b..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat.h
+++ /dev/null
@@ -1,1047 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef Expat_INCLUDED
-#define Expat_INCLUDED 1
-
-#ifdef __VMS
-/*      0        1         2         3      0        1         2         3
-        1234567890123456789012345678901     1234567890123456789012345678901 */
-#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
-#define XML_SetUnparsedEntityDeclHandler    XML_SetUnparsedEntDeclHandler
-#define XML_SetStartNamespaceDeclHandler    XML_SetStartNamespcDeclHandler
-#define XML_SetExternalEntityRefHandlerArg  XML_SetExternalEntRefHandlerArg
-#endif
-
-#include <stdlib.h>
-#include "expat_external.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct XML_ParserStruct;
-typedef struct XML_ParserStruct *XML_Parser;
-
-/* Should this be defined using stdbool.h when C99 is available? */
-typedef unsigned char XML_Bool;
-#define XML_TRUE   ((XML_Bool) 1)
-#define XML_FALSE  ((XML_Bool) 0)
-
-/* The XML_Status enum gives the possible return values for several
-   API functions.  The preprocessor #defines are included so this
-   stanza can be added to code that still needs to support older
-   versions of Expat 1.95.x:
-
-   #ifndef XML_STATUS_OK
-   #define XML_STATUS_OK    1
-   #define XML_STATUS_ERROR 0
-   #endif
-
-   Otherwise, the #define hackery is quite ugly and would have been
-   dropped.
-*/
-enum XML_Status {
-  XML_STATUS_ERROR = 0,
-#define XML_STATUS_ERROR XML_STATUS_ERROR
-  XML_STATUS_OK = 1,
-#define XML_STATUS_OK XML_STATUS_OK
-  XML_STATUS_SUSPENDED = 2
-#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
-};
-
-enum XML_Error {
-  XML_ERROR_NONE,
-  XML_ERROR_NO_MEMORY,
-  XML_ERROR_SYNTAX,
-  XML_ERROR_NO_ELEMENTS,
-  XML_ERROR_INVALID_TOKEN,
-  XML_ERROR_UNCLOSED_TOKEN,
-  XML_ERROR_PARTIAL_CHAR,
-  XML_ERROR_TAG_MISMATCH,
-  XML_ERROR_DUPLICATE_ATTRIBUTE,
-  XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
-  XML_ERROR_PARAM_ENTITY_REF,
-  XML_ERROR_UNDEFINED_ENTITY,
-  XML_ERROR_RECURSIVE_ENTITY_REF,
-  XML_ERROR_ASYNC_ENTITY,
-  XML_ERROR_BAD_CHAR_REF,
-  XML_ERROR_BINARY_ENTITY_REF,
-  XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
-  XML_ERROR_MISPLACED_XML_PI,
-  XML_ERROR_UNKNOWN_ENCODING,
-  XML_ERROR_INCORRECT_ENCODING,
-  XML_ERROR_UNCLOSED_CDATA_SECTION,
-  XML_ERROR_EXTERNAL_ENTITY_HANDLING,
-  XML_ERROR_NOT_STANDALONE,
-  XML_ERROR_UNEXPECTED_STATE,
-  XML_ERROR_ENTITY_DECLARED_IN_PE,
-  XML_ERROR_FEATURE_REQUIRES_XML_DTD,
-  XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
-  /* Added in 1.95.7. */
-  XML_ERROR_UNBOUND_PREFIX,
-  /* Added in 1.95.8. */
-  XML_ERROR_UNDECLARING_PREFIX,
-  XML_ERROR_INCOMPLETE_PE,
-  XML_ERROR_XML_DECL,
-  XML_ERROR_TEXT_DECL,
-  XML_ERROR_PUBLICID,
-  XML_ERROR_SUSPENDED,
-  XML_ERROR_NOT_SUSPENDED,
-  XML_ERROR_ABORTED,
-  XML_ERROR_FINISHED,
-  XML_ERROR_SUSPEND_PE,
-  /* Added in 2.0. */
-  XML_ERROR_RESERVED_PREFIX_XML,
-  XML_ERROR_RESERVED_PREFIX_XMLNS,
-  XML_ERROR_RESERVED_NAMESPACE_URI
-};
-
-enum XML_Content_Type {
-  XML_CTYPE_EMPTY = 1,
-  XML_CTYPE_ANY,
-  XML_CTYPE_MIXED,
-  XML_CTYPE_NAME,
-  XML_CTYPE_CHOICE,
-  XML_CTYPE_SEQ
-};
-
-enum XML_Content_Quant {
-  XML_CQUANT_NONE,
-  XML_CQUANT_OPT,
-  XML_CQUANT_REP,
-  XML_CQUANT_PLUS
-};
-
-/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be
-   XML_CQUANT_NONE, and the other fields will be zero or NULL.
-   If type == XML_CTYPE_MIXED, then quant will be NONE or REP and
-   numchildren will contain number of elements that may be mixed in
-   and children point to an array of XML_Content cells that will be
-   all of XML_CTYPE_NAME type with no quantification.
-
-   If type == XML_CTYPE_NAME, then the name points to the name, and
-   the numchildren field will be zero and children will be NULL. The
-   quant fields indicates any quantifiers placed on the name.
-
-   CHOICE and SEQ will have name NULL, the number of children in
-   numchildren and children will point, recursively, to an array
-   of XML_Content cells.
-
-   The EMPTY, ANY, and MIXED types will only occur at top level.
-*/
-
-typedef struct XML_cp XML_Content;
-
-struct XML_cp {
-  enum XML_Content_Type         type;
-  enum XML_Content_Quant        quant;
-  XML_Char *                    name;
-  unsigned int                  numchildren;
-  XML_Content *                 children;
-};
-
-
-/* This is called for an element declaration. See above for
-   description of the model argument. It's the caller's responsibility
-   to free model when finished with it.
-*/
-typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData,
-                                                const XML_Char *name,
-                                                XML_Content *model);
-
-XMLPARSEAPI(void)
-XML_SetElementDeclHandler(XML_Parser parser,
-                          XML_ElementDeclHandler eldecl);
-
-/* The Attlist declaration handler is called for *each* attribute. So
-   a single Attlist declaration with multiple attributes declared will
-   generate multiple calls to this handler. The "default" parameter
-   may be NULL in the case of the "#IMPLIED" or "#REQUIRED"
-   keyword. The "isrequired" parameter will be true and the default
-   value will be NULL in the case of "#REQUIRED". If "isrequired" is
-   true and default is non-NULL, then this is a "#FIXED" default.
-*/
-typedef void (XMLCALL *XML_AttlistDeclHandler) (
-                                    void            *userData,
-                                    const XML_Char  *elname,
-                                    const XML_Char  *attname,
-                                    const XML_Char  *att_type,
-                                    const XML_Char  *dflt,
-                                    int              isrequired);
-
-XMLPARSEAPI(void)
-XML_SetAttlistDeclHandler(XML_Parser parser,
-                          XML_AttlistDeclHandler attdecl);
-
-/* The XML declaration handler is called for *both* XML declarations
-   and text declarations. The way to distinguish is that the version
-   parameter will be NULL for text declarations. The encoding
-   parameter may be NULL for XML declarations. The standalone
-   parameter will be -1, 0, or 1 indicating respectively that there
-   was no standalone parameter in the declaration, that it was given
-   as no, or that it was given as yes.
-*/
-typedef void (XMLCALL *XML_XmlDeclHandler) (void           *userData,
-                                            const XML_Char *version,
-                                            const XML_Char *encoding,
-                                            int             standalone);
-
-XMLPARSEAPI(void)
-XML_SetXmlDeclHandler(XML_Parser parser,
-                      XML_XmlDeclHandler xmldecl);
-
-
-typedef struct {
-  void *(*malloc_fcn)(size_t size);
-  void *(*realloc_fcn)(void *ptr, size_t size);
-  void (*free_fcn)(void *ptr);
-} XML_Memory_Handling_Suite;
-
-/* Constructs a new parser; encoding is the encoding specified by the
-   external protocol or NULL if there is none specified.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreate(const XML_Char *encoding);
-
-/* Constructs a new parser and namespace processor.  Element type
-   names and attribute names that belong to a namespace will be
-   expanded; unprefixed attribute names are never expanded; unprefixed
-   element type names are expanded only if there is a default
-   namespace. The expanded name is the concatenation of the namespace
-   URI, the namespace separator character, and the local part of the
-   name.  If the namespace separator is '\0' then the namespace URI
-   and the local part will be concatenated without any separator.
-   It is a programming error to use the separator '\0' with namespace
-   triplets (see XML_SetReturnNSTriplet).
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
-
-
-/* Constructs a new parser using the memory management suite referred to
-   by memsuite. If memsuite is NULL, then use the standard library memory
-   suite. If namespaceSeparator is non-NULL it creates a parser with
-   namespace processing as described above. The character pointed at
-   will serve as the namespace separator.
-
-   All further memory operations used for the created parser will come from
-   the given suite.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreate_MM(const XML_Char *encoding,
-                    const XML_Memory_Handling_Suite *memsuite,
-                    const XML_Char *namespaceSeparator);
-
-/* Prepare a parser object to be re-used.  This is particularly
-   valuable when memory allocation overhead is disproportionatly high,
-   such as when a large number of small documnents need to be parsed.
-   All handlers are cleared from the parser, except for the
-   unknownEncodingHandler. The parser's external state is re-initialized
-   except for the values of ns and ns_triplets.
-
-   Added in Expat 1.95.3.
-*/
-XMLPARSEAPI(XML_Bool)
-XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
-
-/* atts is array of name/value pairs, terminated by 0;
-   names and values are 0 terminated.
-*/
-typedef void (XMLCALL *XML_StartElementHandler) (void *userData,
-                                                 const XML_Char *name,
-                                                 const XML_Char **atts);
-
-typedef void (XMLCALL *XML_EndElementHandler) (void *userData,
-                                               const XML_Char *name);
-
-
-/* s is not 0 terminated. */
-typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData,
-                                                  const XML_Char *s,
-                                                  int len);
-
-/* target and data are 0 terminated */
-typedef void (XMLCALL *XML_ProcessingInstructionHandler) (
-                                                void *userData,
-                                                const XML_Char *target,
-                                                const XML_Char *data);
-
-/* data is 0 terminated */
-typedef void (XMLCALL *XML_CommentHandler) (void *userData,
-                                            const XML_Char *data);
-
-typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData);
-typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
-
-/* This is called for any characters in the XML document for which
-   there is no applicable handler.  This includes both characters that
-   are part of markup which is of a kind that is not reported
-   (comments, markup declarations), or characters that are part of a
-   construct which could be reported but for which no handler has been
-   supplied. The characters are passed exactly as they were in the XML
-   document except that they will be encoded in UTF-8 or UTF-16.
-   Line boundaries are not normalized. Note that a byte order mark
-   character is not passed to the default handler. There are no
-   guarantees about how characters are divided between calls to the
-   default handler: for example, a comment might be split between
-   multiple calls.
-*/
-typedef void (XMLCALL *XML_DefaultHandler) (void *userData,
-                                            const XML_Char *s,
-                                            int len);
-
-/* This is called for the start of the DOCTYPE declaration, before
-   any DTD or internal subset is parsed.
-*/
-typedef void (XMLCALL *XML_StartDoctypeDeclHandler) (
-                                            void *userData,
-                                            const XML_Char *doctypeName,
-                                            const XML_Char *sysid,
-                                            const XML_Char *pubid,
-                                            int has_internal_subset);
-
-/* This is called for the start of the DOCTYPE declaration when the
-   closing > is encountered, but after processing any external
-   subset.
-*/
-typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
-
-/* This is called for entity declarations. The is_parameter_entity
-   argument will be non-zero if the entity is a parameter entity, zero
-   otherwise.
-
-   For internal entities (<!ENTITY foo "bar">), value will
-   be non-NULL and systemId, publicID, and notationName will be NULL.
-   The value string is NOT nul-terminated; the length is provided in
-   the value_length argument. Since it is legal to have zero-length
-   values, do not use this argument to test for internal entities.
-
-   For external entities, value will be NULL and systemId will be
-   non-NULL. The publicId argument will be NULL unless a public
-   identifier was provided. The notationName argument will have a
-   non-NULL value only for unparsed entity declarations.
-
-   Note that is_parameter_entity can't be changed to XML_Bool, since
-   that would break binary compatibility.
-*/
-typedef void (XMLCALL *XML_EntityDeclHandler) (
-                              void *userData,
-                              const XML_Char *entityName,
-                              int is_parameter_entity,
-                              const XML_Char *value,
-                              int value_length,
-                              const XML_Char *base,
-                              const XML_Char *systemId,
-                              const XML_Char *publicId,
-                              const XML_Char *notationName);
-
-XMLPARSEAPI(void)
-XML_SetEntityDeclHandler(XML_Parser parser,
-                         XML_EntityDeclHandler handler);
-
-/* OBSOLETE -- OBSOLETE -- OBSOLETE
-   This handler has been superceded by the EntityDeclHandler above.
-   It is provided here for backward compatibility.
-
-   This is called for a declaration of an unparsed (NDATA) entity.
-   The base argument is whatever was set by XML_SetBase. The
-   entityName, systemId and notationName arguments will never be
-   NULL. The other arguments may be.
-*/
-typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) (
-                                    void *userData,
-                                    const XML_Char *entityName,
-                                    const XML_Char *base,
-                                    const XML_Char *systemId,
-                                    const XML_Char *publicId,
-                                    const XML_Char *notationName);
-
-/* This is called for a declaration of notation.  The base argument is
-   whatever was set by XML_SetBase. The notationName will never be
-   NULL.  The other arguments can be.
-*/
-typedef void (XMLCALL *XML_NotationDeclHandler) (
-                                    void *userData,
-                                    const XML_Char *notationName,
-                                    const XML_Char *base,
-                                    const XML_Char *systemId,
-                                    const XML_Char *publicId);
-
-/* When namespace processing is enabled, these are called once for
-   each namespace declaration. The call to the start and end element
-   handlers occur between the calls to the start and end namespace
-   declaration handlers. For an xmlns attribute, prefix will be
-   NULL.  For an xmlns="" attribute, uri will be NULL.
-*/
-typedef void (XMLCALL *XML_StartNamespaceDeclHandler) (
-                                    void *userData,
-                                    const XML_Char *prefix,
-                                    const XML_Char *uri);
-
-typedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
-                                    void *userData,
-                                    const XML_Char *prefix);
-
-/* This is called if the document is not standalone, that is, it has an
-   external subset or a reference to a parameter entity, but does not
-   have standalone="yes". If this handler returns XML_STATUS_ERROR,
-   then processing will not continue, and the parser will return a
-   XML_ERROR_NOT_STANDALONE error.
-   If parameter entity parsing is enabled, then in addition to the
-   conditions above this handler will only be called if the referenced
-   entity was actually read.
-*/
-typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
-
-/* This is called for a reference to an external parsed general
-   entity.  The referenced entity is not automatically parsed.  The
-   application can parse it immediately or later using
-   XML_ExternalEntityParserCreate.
-
-   The parser argument is the parser parsing the entity containing the
-   reference; it can be passed as the parser argument to
-   XML_ExternalEntityParserCreate.  The systemId argument is the
-   system identifier as specified in the entity declaration; it will
-   not be NULL.
-
-   The base argument is the system identifier that should be used as
-   the base for resolving systemId if systemId was relative; this is
-   set by XML_SetBase; it may be NULL.
-
-   The publicId argument is the public identifier as specified in the
-   entity declaration, or NULL if none was specified; the whitespace
-   in the public identifier will have been normalized as required by
-   the XML spec.
-
-   The context argument specifies the parsing context in the format
-   expected by the context argument to XML_ExternalEntityParserCreate;
-   context is valid only until the handler returns, so if the
-   referenced entity is to be parsed later, it must be copied.
-   context is NULL only when the entity is a parameter entity.
-
-   The handler should return XML_STATUS_ERROR if processing should not
-   continue because of a fatal error in the handling of the external
-   entity.  In this case the calling parser will return an
-   XML_ERROR_EXTERNAL_ENTITY_HANDLING error.
-
-   Note that unlike other handlers the first argument is the parser,
-   not userData.
-*/
-typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
-                                    XML_Parser parser,
-                                    const XML_Char *context,
-                                    const XML_Char *base,
-                                    const XML_Char *systemId,
-                                    const XML_Char *publicId);
-
-/* This is called in two situations:
-   1) An entity reference is encountered for which no declaration
-      has been read *and* this is not an error.
-   2) An internal entity reference is read, but not expanded, because
-      XML_SetDefaultHandler has been called.
-   Note: skipped parameter entities in declarations and skipped general
-         entities in attribute values cannot be reported, because
-         the event would be out of sync with the reporting of the
-         declarations or attribute values
-*/
-typedef void (XMLCALL *XML_SkippedEntityHandler) (
-                                    void *userData,
-                                    const XML_Char *entityName,
-                                    int is_parameter_entity);
-
-/* This structure is filled in by the XML_UnknownEncodingHandler to
-   provide information to the parser about encodings that are unknown
-   to the parser.
-
-   The map[b] member gives information about byte sequences whose
-   first byte is b.
-
-   If map[b] is c where c is >= 0, then b by itself encodes the
-   Unicode scalar value c.
-
-   If map[b] is -1, then the byte sequence is malformed.
-
-   If map[b] is -n, where n >= 2, then b is the first byte of an
-   n-byte sequence that encodes a single Unicode scalar value.
-
-   The data member will be passed as the first argument to the convert
-   function.
-
-   The convert function is used to convert multibyte sequences; s will
-   point to a n-byte sequence where map[(unsigned char)*s] == -n.  The
-   convert function must return the Unicode scalar value represented
-   by this byte sequence or -1 if the byte sequence is malformed.
-
-   The convert function may be NULL if the encoding is a single-byte
-   encoding, that is if map[b] >= -1 for all bytes b.
-
-   When the parser is finished with the encoding, then if release is
-   not NULL, it will call release passing it the data member; once
-   release has been called, the convert function will not be called
-   again.
-
-   Expat places certain restrictions on the encodings that are supported
-   using this mechanism.
-
-   1. Every ASCII character that can appear in a well-formed XML document,
-      other than the characters
-
-      $@\^`{}~
-
-      must be represented by a single byte, and that byte must be the
-      same byte that represents that character in ASCII.
-
-   2. No character may require more than 4 bytes to encode.
-
-   3. All characters encoded must have Unicode scalar values <=
-      0xFFFF, (i.e., characters that would be encoded by surrogates in
-      UTF-16 are  not allowed).  Note that this restriction doesn't
-      apply to the built-in support for UTF-8 and UTF-16.
-
-   4. No Unicode character may be encoded by more than one distinct
-      sequence of bytes.
-*/
-typedef struct {
-  int map[256];
-  void *data;
-  int (XMLCALL *convert)(void *data, const char *s);
-  void (XMLCALL *release)(void *data);
-} XML_Encoding;
-
-/* This is called for an encoding that is unknown to the parser.
-
-   The encodingHandlerData argument is that which was passed as the
-   second argument to XML_SetUnknownEncodingHandler.
-
-   The name argument gives the name of the encoding as specified in
-   the encoding declaration.
-
-   If the callback can provide information about the encoding, it must
-   fill in the XML_Encoding structure, and return XML_STATUS_OK.
-   Otherwise it must return XML_STATUS_ERROR.
-
-   If info does not describe a suitable encoding, then the parser will
-   return an XML_UNKNOWN_ENCODING error.
-*/
-typedef int (XMLCALL *XML_UnknownEncodingHandler) (
-                                    void *encodingHandlerData,
-                                    const XML_Char *name,
-                                    XML_Encoding *info);
-
-XMLPARSEAPI(void)
-XML_SetElementHandler(XML_Parser parser,
-                      XML_StartElementHandler start,
-                      XML_EndElementHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartElementHandler(XML_Parser parser,
-                           XML_StartElementHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetEndElementHandler(XML_Parser parser,
-                         XML_EndElementHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetCharacterDataHandler(XML_Parser parser,
-                            XML_CharacterDataHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetProcessingInstructionHandler(XML_Parser parser,
-                                    XML_ProcessingInstructionHandler handler);
-XMLPARSEAPI(void)
-XML_SetCommentHandler(XML_Parser parser,
-                      XML_CommentHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetCdataSectionHandler(XML_Parser parser,
-                           XML_StartCdataSectionHandler start,
-                           XML_EndCdataSectionHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartCdataSectionHandler(XML_Parser parser,
-                                XML_StartCdataSectionHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndCdataSectionHandler(XML_Parser parser,
-                              XML_EndCdataSectionHandler end);
-
-/* This sets the default handler and also inhibits expansion of
-   internal entities. These entity references will be passed to the
-   default handler, or to the skipped entity handler, if one is set.
-*/
-XMLPARSEAPI(void)
-XML_SetDefaultHandler(XML_Parser parser,
-                      XML_DefaultHandler handler);
-
-/* This sets the default handler but does not inhibit expansion of
-   internal entities.  The entity reference will not be passed to the
-   default handler.
-*/
-XMLPARSEAPI(void)
-XML_SetDefaultHandlerExpand(XML_Parser parser,
-                            XML_DefaultHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetDoctypeDeclHandler(XML_Parser parser,
-                          XML_StartDoctypeDeclHandler start,
-                          XML_EndDoctypeDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartDoctypeDeclHandler(XML_Parser parser,
-                               XML_StartDoctypeDeclHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndDoctypeDeclHandler(XML_Parser parser,
-                             XML_EndDoctypeDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
-                                 XML_UnparsedEntityDeclHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetNotationDeclHandler(XML_Parser parser,
-                           XML_NotationDeclHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetNamespaceDeclHandler(XML_Parser parser,
-                            XML_StartNamespaceDeclHandler start,
-                            XML_EndNamespaceDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartNamespaceDeclHandler(XML_Parser parser,
-                                 XML_StartNamespaceDeclHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndNamespaceDeclHandler(XML_Parser parser,
-                               XML_EndNamespaceDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetNotStandaloneHandler(XML_Parser parser,
-                            XML_NotStandaloneHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetExternalEntityRefHandler(XML_Parser parser,
-                                XML_ExternalEntityRefHandler handler);
-
-/* If a non-NULL value for arg is specified here, then it will be
-   passed as the first argument to the external entity ref handler
-   instead of the parser object.
-*/
-XMLPARSEAPI(void)
-XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
-                                   void *arg);
-
-XMLPARSEAPI(void)
-XML_SetSkippedEntityHandler(XML_Parser parser,
-                            XML_SkippedEntityHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetUnknownEncodingHandler(XML_Parser parser,
-                              XML_UnknownEncodingHandler handler,
-                              void *encodingHandlerData);
-
-/* This can be called within a handler for a start element, end
-   element, processing instruction or character data.  It causes the
-   corresponding markup to be passed to the default handler.
-*/
-XMLPARSEAPI(void)
-XML_DefaultCurrent(XML_Parser parser);
-
-/* If do_nst is non-zero, and namespace processing is in effect, and
-   a name has a prefix (i.e. an explicit namespace qualifier) then
-   that name is returned as a triplet in a single string separated by
-   the separator character specified when the parser was created: URI
-   + sep + local_name + sep + prefix.
-
-   If do_nst is zero, then namespace information is returned in the
-   default manner (URI + sep + local_name) whether or not the name
-   has a prefix.
-
-   Note: Calling XML_SetReturnNSTriplet after XML_Parse or
-     XML_ParseBuffer has no effect.
-*/
-
-XMLPARSEAPI(void)
-XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
-
-/* This value is passed as the userData argument to callbacks. */
-XMLPARSEAPI(void)
-XML_SetUserData(XML_Parser parser, void *userData);
-
-/* Returns the last value set by XML_SetUserData or NULL. */
-#define XML_GetUserData(parser) (*(void **)(parser))
-
-/* This is equivalent to supplying an encoding argument to
-   XML_ParserCreate. On success XML_SetEncoding returns non-zero,
-   zero otherwise.
-   Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer
-     has no effect and returns XML_STATUS_ERROR.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
-
-/* If this function is called, then the parser will be passed as the
-   first argument to callbacks instead of userData.  The userData will
-   still be accessible using XML_GetUserData.
-*/
-XMLPARSEAPI(void)
-XML_UseParserAsHandlerArg(XML_Parser parser);
-
-/* If useDTD == XML_TRUE is passed to this function, then the parser
-   will assume that there is an external subset, even if none is
-   specified in the document. In such a case the parser will call the
-   externalEntityRefHandler with a value of NULL for the systemId
-   argument (the publicId and context arguments will be NULL as well).
-   Note: For the purpose of checking WFC: Entity Declared, passing
-     useDTD == XML_TRUE will make the parser behave as if the document
-     had a DTD with an external subset.
-   Note: If this function is called, then this must be done before
-     the first call to XML_Parse or XML_ParseBuffer, since it will
-     have no effect after that.  Returns
-     XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING.
-   Note: If the document does not have a DOCTYPE declaration at all,
-     then startDoctypeDeclHandler and endDoctypeDeclHandler will not
-     be called, despite an external subset being parsed.
-   Note: If XML_DTD is not defined when Expat is compiled, returns
-     XML_ERROR_FEATURE_REQUIRES_XML_DTD.
-*/
-XMLPARSEAPI(enum XML_Error)
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
-
-
-/* Sets the base to be used for resolving relative URIs in system
-   identifiers in declarations.  Resolving relative identifiers is
-   left to the application: this value will be passed through as the
-   base argument to the XML_ExternalEntityRefHandler,
-   XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base
-   argument will be copied.  Returns XML_STATUS_ERROR if out of memory,
-   XML_STATUS_OK otherwise.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_SetBase(XML_Parser parser, const XML_Char *base);
-
-XMLPARSEAPI(const XML_Char *)
-XML_GetBase(XML_Parser parser);
-
-/* Returns the number of the attribute/value pairs passed in last call
-   to the XML_StartElementHandler that were specified in the start-tag
-   rather than defaulted. Each attribute/value pair counts as 2; thus
-   this correspondds to an index into the atts array passed to the
-   XML_StartElementHandler.
-*/
-XMLPARSEAPI(int)
-XML_GetSpecifiedAttributeCount(XML_Parser parser);
-
-/* Returns the index of the ID attribute passed in the last call to
-   XML_StartElementHandler, or -1 if there is no ID attribute.  Each
-   attribute/value pair counts as 2; thus this correspondds to an
-   index into the atts array passed to the XML_StartElementHandler.
-*/
-XMLPARSEAPI(int)
-XML_GetIdAttributeIndex(XML_Parser parser);
-
-#ifdef XML_ATTR_INFO
-/* Source file byte offsets for the start and end of attribute names and values.
-   The value indices are exclusive of surrounding quotes; thus in a UTF-8 source
-   file an attribute value of "blah" will yield:
-   info->valueEnd - info->valueStart = 4 bytes.
-*/
-typedef struct {
-  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
-  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
-  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
-  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
-} XML_AttrInfo;
-
-/* Returns an array of XML_AttrInfo structures for the attribute/value pairs
-   passed in last call to the XML_StartElementHandler that were specified
-   in the start-tag rather than defaulted. Each attribute/value pair counts
-   as 1; thus the number of entries in the array is
-   XML_GetSpecifiedAttributeCount(parser) / 2.
-*/
-XMLPARSEAPI(const XML_AttrInfo *)
-XML_GetAttributeInfo(XML_Parser parser);
-#endif
-
-/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is
-   detected.  The last call to XML_Parse must have isFinal true; len
-   may be zero for this call (or any other).
-
-   Though the return values for these functions has always been
-   described as a Boolean value, the implementation, at least for the
-   1.95.x series, has always returned exactly one of the XML_Status
-   values.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
-
-XMLPARSEAPI(void *)
-XML_GetBuffer(XML_Parser parser, int len);
-
-XMLPARSEAPI(enum XML_Status)
-XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
-
-/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return.
-   Must be called from within a call-back handler, except when aborting
-   (resumable = 0) an already suspended parser. Some call-backs may
-   still follow because they would otherwise get lost. Examples:
-   - endElementHandler() for empty elements when stopped in
-     startElementHandler(), 
-   - endNameSpaceDeclHandler() when stopped in endElementHandler(), 
-   and possibly others.
-
-   Can be called from most handlers, including DTD related call-backs,
-   except when parsing an external parameter entity and resumable != 0.
-   Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise.
-   Possible error codes: 
-   - XML_ERROR_SUSPENDED: when suspending an already suspended parser.
-   - XML_ERROR_FINISHED: when the parser has already finished.
-   - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE.
-
-   When resumable != 0 (true) then parsing is suspended, that is, 
-   XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. 
-   Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer()
-   return XML_STATUS_ERROR with error code XML_ERROR_ABORTED.
-
-   *Note*:
-   This will be applied to the current parser instance only, that is, if
-   there is a parent parser then it will continue parsing when the
-   externalEntityRefHandler() returns. It is up to the implementation of
-   the externalEntityRefHandler() to call XML_StopParser() on the parent
-   parser (recursively), if one wants to stop parsing altogether.
-
-   When suspended, parsing can be resumed by calling XML_ResumeParser(). 
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_StopParser(XML_Parser parser, XML_Bool resumable);
-
-/* Resumes parsing after it has been suspended with XML_StopParser().
-   Must not be called from within a handler call-back. Returns same
-   status codes as XML_Parse() or XML_ParseBuffer().
-   Additional error code XML_ERROR_NOT_SUSPENDED possible.   
-
-   *Note*:
-   This must be called on the most deeply nested child parser instance
-   first, and on its parent parser only after the child parser has finished,
-   to be applied recursively until the document entity's parser is restarted.
-   That is, the parent parser will not resume by itself and it is up to the
-   application to call XML_ResumeParser() on it at the appropriate moment.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_ResumeParser(XML_Parser parser);
-
-enum XML_Parsing {
-  XML_INITIALIZED,
-  XML_PARSING,
-  XML_FINISHED,
-  XML_SUSPENDED
-};
-
-typedef struct {
-  enum XML_Parsing parsing;
-  XML_Bool finalBuffer;
-} XML_ParsingStatus;
-
-/* Returns status of parser with respect to being initialized, parsing,
-   finished, or suspended and processing the final buffer.
-   XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus,
-   XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED
-*/
-XMLPARSEAPI(void)
-XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
-
-/* Creates an XML_Parser object that can parse an external general
-   entity; context is a '\0'-terminated string specifying the parse
-   context; encoding is a '\0'-terminated string giving the name of
-   the externally specified encoding, or NULL if there is no
-   externally specified encoding.  The context string consists of a
-   sequence of tokens separated by formfeeds (\f); a token consisting
-   of a name specifies that the general entity of the name is open; a
-   token of the form prefix=uri specifies the namespace for a
-   particular prefix; a token of the form =uri specifies the default
-   namespace.  This can be called at any point after the first call to
-   an ExternalEntityRefHandler so longer as the parser has not yet
-   been freed.  The new parser is completely independent and may
-   safely be used in a separate thread.  The handlers and userData are
-   initialized from the parser argument.  Returns NULL if out of memory.
-   Otherwise returns a new XML_Parser object.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ExternalEntityParserCreate(XML_Parser parser,
-                               const XML_Char *context,
-                               const XML_Char *encoding);
-
-enum XML_ParamEntityParsing {
-  XML_PARAM_ENTITY_PARSING_NEVER,
-  XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
-  XML_PARAM_ENTITY_PARSING_ALWAYS
-};
-
-/* Controls parsing of parameter entities (including the external DTD
-   subset). If parsing of parameter entities is enabled, then
-   references to external parameter entities (including the external
-   DTD subset) will be passed to the handler set with
-   XML_SetExternalEntityRefHandler.  The context passed will be 0.
-
-   Unlike external general entities, external parameter entities can
-   only be parsed synchronously.  If the external parameter entity is
-   to be parsed, it must be parsed during the call to the external
-   entity ref handler: the complete sequence of
-   XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and
-   XML_ParserFree calls must be made during this call.  After
-   XML_ExternalEntityParserCreate has been called to create the parser
-   for the external parameter entity (context must be 0 for this
-   call), it is illegal to make any calls on the old parser until
-   XML_ParserFree has been called on the newly created parser.
-   If the library has been compiled without support for parameter
-   entity parsing (ie without XML_DTD being defined), then
-   XML_SetParamEntityParsing will return 0 if parsing of parameter
-   entities is requested; otherwise it will return non-zero.
-   Note: If XML_SetParamEntityParsing is called after XML_Parse or
-      XML_ParseBuffer, then it has no effect and will always return 0.
-*/
-XMLPARSEAPI(int)
-XML_SetParamEntityParsing(XML_Parser parser,
-                          enum XML_ParamEntityParsing parsing);
-
-/* Sets the hash salt to use for internal hash calculations.
-   Helps in preventing DoS attacks based on predicting hash
-   function behavior. This must be called before parsing is started.
-   Returns 1 if successful, 0 when called after parsing has started.
-*/
-XMLPARSEAPI(int)
-XML_SetHashSalt(XML_Parser parser,
-                unsigned long hash_salt);
-
-/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
-   XML_GetErrorCode returns information about the error.
-*/
-XMLPARSEAPI(enum XML_Error)
-XML_GetErrorCode(XML_Parser parser);
-
-/* These functions return information about the current parse
-   location.  They may be called from any callback called to report
-   some parse event; in this case the location is the location of the
-   first of the sequence of characters that generated the event.  When
-   called from callbacks generated by declarations in the document
-   prologue, the location identified isn't as neatly defined, but will
-   be within the relevant markup.  When called outside of the callback
-   functions, the position indicated will be just past the last parse
-   event (regardless of whether there was an associated callback).
-   
-   They may also be called after returning from a call to XML_Parse
-   or XML_ParseBuffer.  If the return value is XML_STATUS_ERROR then
-   the location is the location of the character at which the error
-   was detected; otherwise the location is the location of the last
-   parse event, as described above.
-*/
-XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser);
-XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser);
-XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser);
-
-/* Return the number of bytes in the current event.
-   Returns 0 if the event is in an internal entity.
-*/
-XMLPARSEAPI(int)
-XML_GetCurrentByteCount(XML_Parser parser);
-
-/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets
-   the integer pointed to by offset to the offset within this buffer
-   of the current parse position, and sets the integer pointed to by size
-   to the size of this buffer (the number of input bytes). Otherwise
-   returns a NULL pointer. Also returns a NULL pointer if a parse isn't
-   active.
-
-   NOTE: The character pointer returned should not be used outside
-   the handler that makes the call.
-*/
-XMLPARSEAPI(const char *)
-XML_GetInputContext(XML_Parser parser,
-                    int *offset,
-                    int *size);
-
-/* For backwards compatibility with previous versions. */
-#define XML_GetErrorLineNumber   XML_GetCurrentLineNumber
-#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
-#define XML_GetErrorByteIndex    XML_GetCurrentByteIndex
-
-/* Frees the content model passed to the element declaration handler */
-XMLPARSEAPI(void)
-XML_FreeContentModel(XML_Parser parser, XML_Content *model);
-
-/* Exposing the memory handling functions used in Expat */
-XMLPARSEAPI(void *)
-XML_MemMalloc(XML_Parser parser, size_t size);
-
-XMLPARSEAPI(void *)
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
-
-XMLPARSEAPI(void)
-XML_MemFree(XML_Parser parser, void *ptr);
-
-/* Frees memory used by the parser. */
-XMLPARSEAPI(void)
-XML_ParserFree(XML_Parser parser);
-
-/* Returns a string describing the error. */
-XMLPARSEAPI(const XML_LChar *)
-XML_ErrorString(enum XML_Error code);
-
-/* Return a string containing the version number of this expat */
-XMLPARSEAPI(const XML_LChar *)
-XML_ExpatVersion(void);
-
-typedef struct {
-  int major;
-  int minor;
-  int micro;
-} XML_Expat_Version;
-
-/* Return an XML_Expat_Version structure containing numeric version
-   number information for this version of expat.
-*/
-XMLPARSEAPI(XML_Expat_Version)
-XML_ExpatVersionInfo(void);
-
-/* Added in Expat 1.95.5. */
-enum XML_FeatureEnum {
-  XML_FEATURE_END = 0,
-  XML_FEATURE_UNICODE,
-  XML_FEATURE_UNICODE_WCHAR_T,
-  XML_FEATURE_DTD,
-  XML_FEATURE_CONTEXT_BYTES,
-  XML_FEATURE_MIN_SIZE,
-  XML_FEATURE_SIZEOF_XML_CHAR,
-  XML_FEATURE_SIZEOF_XML_LCHAR,
-  XML_FEATURE_NS,
-  XML_FEATURE_LARGE_SIZE,
-  XML_FEATURE_ATTR_INFO
-  /* Additional features must be added to the end of this enum. */
-};
-
-typedef struct {
-  enum XML_FeatureEnum  feature;
-  const XML_LChar       *name;
-  long int              value;
-} XML_Feature;
-
-XMLPARSEAPI(const XML_Feature *)
-XML_GetFeatureList(void);
-
-
-/* Expat follows the GNU/Linux convention of odd number minor version for
-   beta/development releases and even number minor version for stable
-   releases. Micro is bumped with each release, and set to 0 with each
-   change to major or minor version.
-*/
-#define XML_MAJOR_VERSION 2
-#define XML_MINOR_VERSION 1
-#define XML_MICRO_VERSION 0
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not Expat_INCLUDED */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_external.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_external.h
deleted file mode 100644
index 2c03284e..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_external.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef Expat_External_INCLUDED
-#define Expat_External_INCLUDED 1
-
-/* External API definitions */
-
-#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
-#define XML_USE_MSC_EXTENSIONS 1
-#endif
-
-/* Expat tries very hard to make the API boundary very specifically
-   defined.  There are two macros defined to control this boundary;
-   each of these can be defined before including this header to
-   achieve some different behavior, but doing so it not recommended or
-   tested frequently.
-
-   XMLCALL    - The calling convention to use for all calls across the
-                "library boundary."  This will default to cdecl, and
-                try really hard to tell the compiler that's what we
-                want.
-
-   XMLIMPORT  - Whatever magic is needed to note that a function is
-                to be imported from a dynamically loaded library
-                (.dll, .so, or .sl, depending on your platform).
-
-   The XMLCALL macro was added in Expat 1.95.7.  The only one which is
-   expected to be directly useful in client code is XMLCALL.
-
-   Note that on at least some Unix versions, the Expat library must be
-   compiled with the cdecl calling convention as the default since
-   system headers may assume the cdecl convention.
-*/
-#ifndef XMLCALL
-#if defined(_MSC_VER)
-#define XMLCALL __cdecl
-#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER)
-#define XMLCALL __attribute__((cdecl))
-#else
-/* For any platform which uses this definition and supports more than
-   one calling convention, we need to extend this definition to
-   declare the convention used on that platform, if it's possible to
-   do so.
-
-   If this is the case for your platform, please file a bug report
-   with information on how to identify your platform via the C
-   pre-processor and how to specify the same calling convention as the
-   platform's malloc() implementation.
-*/
-#define XMLCALL
-#endif
-#endif  /* not defined XMLCALL */
-
-
-#if !defined(XML_STATIC) && !defined(XMLIMPORT)
-#ifndef XML_BUILDING_EXPAT
-/* using Expat from an application */
-
-#ifdef XML_USE_MSC_EXTENSIONS
-#define XMLIMPORT __declspec(dllimport)
-#endif
-
-#endif
-#endif  /* not defined XML_STATIC */
-
-
-/* If we didn't define it above, define it away: */
-#ifndef XMLIMPORT
-#define XMLIMPORT
-#endif
-
-
-#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef XML_UNICODE_WCHAR_T
-#define XML_UNICODE
-#endif
-
-#ifdef XML_UNICODE     /* Information is UTF-16 encoded. */
-#ifdef XML_UNICODE_WCHAR_T
-typedef wchar_t XML_Char;
-typedef wchar_t XML_LChar;
-#else
-typedef unsigned short XML_Char;
-typedef char XML_LChar;
-#endif /* XML_UNICODE_WCHAR_T */
-#else                  /* Information is UTF-8 encoded. */
-typedef char XML_Char;
-typedef char XML_LChar;
-#endif /* XML_UNICODE */
-
-#ifdef XML_LARGE_SIZE  /* Use large integers for file/stream positions. */
-#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
-typedef __int64 XML_Index; 
-typedef unsigned __int64 XML_Size;
-#else
-typedef long long XML_Index;
-typedef unsigned long long XML_Size;
-#endif
-#else
-typedef long XML_Index;
-typedef unsigned long XML_Size;
-#endif /* XML_LARGE_SIZE */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not Expat_External_INCLUDED */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.dsp b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.dsp
deleted file mode 100644
index 180f0dc6..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.dsp
+++ /dev/null
@@ -1,162 +0,0 @@
-# Microsoft Developer Studio Project File - Name="expat_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=expat_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "expat_static.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "expat_static.mak" CFG="expat_static - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "expat_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "expat_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "expat_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "expat_static___Win32_Release"
-# PROP BASE Intermediate_Dir "expat_static___Win32_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\win32\bin\Release"
-# PROP Intermediate_Dir "..\win32\tmp\Release_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x1009 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\win32\bin\Release\libexpatMT.lib"
-
-!ELSEIF  "$(CFG)" == "expat_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "expat_static___Win32_Debug"
-# PROP BASE Intermediate_Dir "expat_static___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\win32\bin\Debug"
-# PROP Intermediate_Dir "..\win32\tmp\Debug_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "COMPILED_FROM_DSP" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x1009 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\win32\bin\Debug\libexpatMT.lib"
-
-!ENDIF 
-
-# Begin Target
-
-# Name "expat_static - Win32 Release"
-# Name "expat_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\xmlparse.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlrole.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_impl.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_ns.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\ascii.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\asciitab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\expat.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\expat_external.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\iasciitab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\internal.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\latin1tab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\nametab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\utf8tab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlrole.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_impl.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.sln b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.sln
deleted file mode 100644
index 6325342a..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "expat", "expat_static.vcproj", "{60AF91BC-74EB-47E7-9C71-646D525591C5}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{60AF91BC-74EB-47E7-9C71-646D525591C5}.Debug|Win32.ActiveCfg = Debug|Win32
-		{60AF91BC-74EB-47E7-9C71-646D525591C5}.Debug|Win32.Build.0 = Debug|Win32
-		{60AF91BC-74EB-47E7-9C71-646D525591C5}.Debug|x64.ActiveCfg = Debug|x64
-		{60AF91BC-74EB-47E7-9C71-646D525591C5}.Debug|x64.Build.0 = Debug|x64
-		{60AF91BC-74EB-47E7-9C71-646D525591C5}.Release|Win32.ActiveCfg = Release|Win32
-		{60AF91BC-74EB-47E7-9C71-646D525591C5}.Release|Win32.Build.0 = Release|Win32
-		{60AF91BC-74EB-47E7-9C71-646D525591C5}.Release|x64.ActiveCfg = Release|x64
-		{60AF91BC-74EB-47E7-9C71-646D525591C5}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.vcproj b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.vcproj
deleted file mode 100644
index 73b3a757..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expat_static.vcproj
+++ /dev/null
@@ -1,549 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="expat"
-	ProjectGUID="{60AF91BC-74EB-47E7-9C71-646D525591C5}"
-	RootNamespace="expat_static"
-	TargetFrameworkVersion="0"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_LIB;COMPILED_FROM_DSP"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				PrecompiledHeaderFile=""
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="..\..\..\libs\Aol_XML\Win32\Debug\libexpatMT.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(ConfigurationName)64"
-			IntermediateDirectory="$(ConfigurationName)64"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;COMPILED_FROM_DSP;_LIB;XML_LARGE_SIZE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				PrecompiledHeaderFile=""
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="..\..\..\libs\Aol_XML\Win64\Debug\libexpatMT.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="1"
-				InlineFunctionExpansion="1"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="2"
-				PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP"
-				StringPooling="true"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile=""
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="..\..\..\libs\Aol_XML\Win32\Release\libexpatMT.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\..\win32\bin\Release/expat_static.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(ConfigurationName)64"
-			IntermediateDirectory="$(ConfigurationName)64"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="1"
-				InlineFunctionExpansion="1"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="2"
-				PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_LARGE_SIZE"
-				StringPooling="true"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile=""
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="..\..\..\libs\Aol_XML\Win64\Release\libexpatMT.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			>
-			<File
-				RelativePath="xmlparse.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="xmlrole.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="xmltok.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="xmltok_impl.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="xmltok_ns.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			>
-			<File
-				RelativePath="ascii.h"
-				>
-			</File>
-			<File
-				RelativePath="asciitab.h"
-				>
-			</File>
-			<File
-				RelativePath="expat.h"
-				>
-			</File>
-			<File
-				RelativePath="expat_external.h"
-				>
-			</File>
-			<File
-				RelativePath="iasciitab.h"
-				>
-			</File>
-			<File
-				RelativePath="internal.h"
-				>
-			</File>
-			<File
-				RelativePath="latin1tab.h"
-				>
-			</File>
-			<File
-				RelativePath="nametab.h"
-				>
-			</File>
-			<File
-				RelativePath="utf8tab.h"
-				>
-			</File>
-			<File
-				RelativePath="xmlrole.h"
-				>
-			</File>
-			<File
-				RelativePath="xmltok.h"
-				>
-			</File>
-			<File
-				RelativePath="xmltok_impl.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expatw.dsp b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expatw.dsp
deleted file mode 100644
index b91a117c..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expatw.dsp
+++ /dev/null
@@ -1,185 +0,0 @@
-# Microsoft Developer Studio Project File - Name="expatw" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=expatw - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "expatw.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "expatw.mak" CFG="expatw - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "expatw - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "expatw - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "expatw - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\win32\bin\Release"
-# PROP Intermediate_Dir "..\win32\tmp\Release-w"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 /nologo /dll /machine:I386
-# ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpatw.dll"
-
-!ELSEIF  "$(CFG)" == "expatw - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\win32\bin\Debug"
-# PROP Intermediate_Dir "..\win32\tmp\Debug-w"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpatw.dll"
-
-!ENDIF 
-
-# Begin Target
-
-# Name "expatw - Win32 Release"
-# Name "expatw - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\libexpatw.def
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlparse.c
-
-!IF  "$(CFG)" == "expatw - Win32 Release"
-
-!ELSEIF  "$(CFG)" == "expatw - Win32 Debug"
-
-# ADD CPP /GX- /Od
-
-!ENDIF 
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlrole.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_impl.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_ns.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\ascii.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\asciitab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\expat.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\expat_external.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\iasciitab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\internal.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\latin1tab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\nametab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\utf8tab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlrole.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_impl.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expatw_static.dsp b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expatw_static.dsp
deleted file mode 100644
index d28632cf..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/expatw_static.dsp
+++ /dev/null
@@ -1,162 +0,0 @@
-# Microsoft Developer Studio Project File - Name="expatw_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=expatw_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "expatw_static.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "expatw_static.mak" CFG="expatw_static - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "expatw_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "expatw_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "expatw_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "expatw_static___Win32_Release"
-# PROP BASE Intermediate_Dir "expatw_static___Win32_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\win32\bin\Release"
-# PROP Intermediate_Dir "..\win32\tmp\Release-w_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x1009 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\win32\bin\Release\libexpatwMT.lib"
-
-!ELSEIF  "$(CFG)" == "expatw_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "expatw_static___Win32_Debug"
-# PROP BASE Intermediate_Dir "expatw_static___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\win32\bin\Debug"
-# PROP Intermediate_Dir "..\win32\tmp\Debug-w_static"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x1009 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\win32\bin\Debug\libexpatwMT.lib"
-
-!ENDIF 
-
-# Begin Target
-
-# Name "expatw_static - Win32 Release"
-# Name "expatw_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\xmlparse.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlrole.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_impl.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_ns.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\ascii.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\asciitab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\expat.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\expat_external.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\iasciitab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\internal.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\latin1tab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\nametab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\utf8tab.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlrole.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltok_impl.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/iasciitab.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/iasciitab.h
deleted file mode 100644
index 24a1d5cc..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/iasciitab.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */
-/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
-/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML,
-/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
-/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
-/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
-/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
-/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
-/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
-/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
-/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
-/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/internal.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/internal.h
deleted file mode 100644
index dd545483..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/internal.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* internal.h
-
-   Internal definitions used by Expat.  This is not needed to compile
-   client code.
-
-   The following calling convention macros are defined for frequently
-   called functions:
-
-   FASTCALL    - Used for those internal functions that have a simple
-                 body and a low number of arguments and local variables.
-
-   PTRCALL     - Used for functions called though function pointers.
-
-   PTRFASTCALL - Like PTRCALL, but for low number of arguments.
-
-   inline      - Used for selected internal functions for which inlining
-                 may improve performance on some platforms.
-
-   Note: Use of these macros is based on judgement, not hard rules,
-         and therefore subject to change.
-*/
-
-#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__)
-/* We'll use this version by default only where we know it helps.
-
-   regparm() generates warnings on Solaris boxes.   See SF bug #692878.
-
-   Instability reported with egcs on a RedHat Linux 7.3.
-   Let's comment out:
-   #define FASTCALL __attribute__((stdcall, regparm(3)))
-   and let's try this:
-*/
-#define FASTCALL __attribute__((regparm(3)))
-#define PTRFASTCALL __attribute__((regparm(3)))
-#endif
-
-/* Using __fastcall seems to have an unexpected negative effect under
-   MS VC++, especially for function pointers, so we won't use it for
-   now on that platform. It may be reconsidered for a future release
-   if it can be made more effective.
-   Likely reason: __fastcall on Windows is like stdcall, therefore
-   the compiler cannot perform stack optimizations for call clusters.
-*/
-
-/* Make sure all of these are defined if they aren't already. */
-
-#ifndef FASTCALL
-#define FASTCALL
-#endif
-
-#ifndef PTRCALL
-#define PTRCALL
-#endif
-
-#ifndef PTRFASTCALL
-#define PTRFASTCALL
-#endif
-
-#ifndef XML_MIN_SIZE
-#if !defined(__cplusplus) && !defined(inline)
-#ifdef __GNUC__
-#define inline __inline
-#endif /* __GNUC__ */
-#endif
-#endif /* XML_MIN_SIZE */
-
-#ifdef __cplusplus
-#define inline inline
-#else
-#ifndef inline
-#define inline
-#endif
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/latin1tab.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/latin1tab.h
deleted file mode 100644
index 53c25d76..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/latin1tab.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
-/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME,
-/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
-/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/libexpat.def b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/libexpat.def
deleted file mode 100644
index 3920bbcf..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/libexpat.def
+++ /dev/null
@@ -1,73 +0,0 @@
-; DEF file for MS VC++
-
-LIBRARY
-EXPORTS
-  XML_DefaultCurrent @1
-  XML_ErrorString @2
-  XML_ExpatVersion @3
-  XML_ExpatVersionInfo @4
-  XML_ExternalEntityParserCreate @5
-  XML_GetBase @6
-  XML_GetBuffer @7
-  XML_GetCurrentByteCount @8
-  XML_GetCurrentByteIndex @9
-  XML_GetCurrentColumnNumber @10
-  XML_GetCurrentLineNumber @11
-  XML_GetErrorCode @12
-  XML_GetIdAttributeIndex @13
-  XML_GetInputContext @14
-  XML_GetSpecifiedAttributeCount @15
-  XML_Parse @16
-  XML_ParseBuffer @17
-  XML_ParserCreate @18
-  XML_ParserCreateNS @19
-  XML_ParserCreate_MM @20
-  XML_ParserFree @21
-  XML_SetAttlistDeclHandler @22
-  XML_SetBase @23
-  XML_SetCdataSectionHandler @24
-  XML_SetCharacterDataHandler @25
-  XML_SetCommentHandler @26
-  XML_SetDefaultHandler @27
-  XML_SetDefaultHandlerExpand @28
-  XML_SetDoctypeDeclHandler @29
-  XML_SetElementDeclHandler @30
-  XML_SetElementHandler @31
-  XML_SetEncoding @32
-  XML_SetEndCdataSectionHandler @33
-  XML_SetEndDoctypeDeclHandler @34
-  XML_SetEndElementHandler @35
-  XML_SetEndNamespaceDeclHandler @36
-  XML_SetEntityDeclHandler @37
-  XML_SetExternalEntityRefHandler @38
-  XML_SetExternalEntityRefHandlerArg @39
-  XML_SetNamespaceDeclHandler @40
-  XML_SetNotStandaloneHandler @41
-  XML_SetNotationDeclHandler @42
-  XML_SetParamEntityParsing @43
-  XML_SetProcessingInstructionHandler @44
-  XML_SetReturnNSTriplet @45
-  XML_SetStartCdataSectionHandler @46
-  XML_SetStartDoctypeDeclHandler @47
-  XML_SetStartElementHandler @48
-  XML_SetStartNamespaceDeclHandler @49
-  XML_SetUnknownEncodingHandler @50
-  XML_SetUnparsedEntityDeclHandler @51
-  XML_SetUserData @52
-  XML_SetXmlDeclHandler @53
-  XML_UseParserAsHandlerArg @54
-; added with version 1.95.3
-  XML_ParserReset @55
-  XML_SetSkippedEntityHandler @56
-; added with version 1.95.5
-  XML_GetFeatureList @57
-  XML_UseForeignDTD @58
-; added with version 1.95.6
-  XML_FreeContentModel @59
-  XML_MemMalloc @60
-  XML_MemRealloc @61
-  XML_MemFree @62
-; added with version 1.95.8
-  XML_StopParser @63
-  XML_ResumeParser @64
-  XML_GetParsingStatus @65
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/libexpatw.def b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/libexpatw.def
deleted file mode 100644
index 3920bbcf..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/libexpatw.def
+++ /dev/null
@@ -1,73 +0,0 @@
-; DEF file for MS VC++
-
-LIBRARY
-EXPORTS
-  XML_DefaultCurrent @1
-  XML_ErrorString @2
-  XML_ExpatVersion @3
-  XML_ExpatVersionInfo @4
-  XML_ExternalEntityParserCreate @5
-  XML_GetBase @6
-  XML_GetBuffer @7
-  XML_GetCurrentByteCount @8
-  XML_GetCurrentByteIndex @9
-  XML_GetCurrentColumnNumber @10
-  XML_GetCurrentLineNumber @11
-  XML_GetErrorCode @12
-  XML_GetIdAttributeIndex @13
-  XML_GetInputContext @14
-  XML_GetSpecifiedAttributeCount @15
-  XML_Parse @16
-  XML_ParseBuffer @17
-  XML_ParserCreate @18
-  XML_ParserCreateNS @19
-  XML_ParserCreate_MM @20
-  XML_ParserFree @21
-  XML_SetAttlistDeclHandler @22
-  XML_SetBase @23
-  XML_SetCdataSectionHandler @24
-  XML_SetCharacterDataHandler @25
-  XML_SetCommentHandler @26
-  XML_SetDefaultHandler @27
-  XML_SetDefaultHandlerExpand @28
-  XML_SetDoctypeDeclHandler @29
-  XML_SetElementDeclHandler @30
-  XML_SetElementHandler @31
-  XML_SetEncoding @32
-  XML_SetEndCdataSectionHandler @33
-  XML_SetEndDoctypeDeclHandler @34
-  XML_SetEndElementHandler @35
-  XML_SetEndNamespaceDeclHandler @36
-  XML_SetEntityDeclHandler @37
-  XML_SetExternalEntityRefHandler @38
-  XML_SetExternalEntityRefHandlerArg @39
-  XML_SetNamespaceDeclHandler @40
-  XML_SetNotStandaloneHandler @41
-  XML_SetNotationDeclHandler @42
-  XML_SetParamEntityParsing @43
-  XML_SetProcessingInstructionHandler @44
-  XML_SetReturnNSTriplet @45
-  XML_SetStartCdataSectionHandler @46
-  XML_SetStartDoctypeDeclHandler @47
-  XML_SetStartElementHandler @48
-  XML_SetStartNamespaceDeclHandler @49
-  XML_SetUnknownEncodingHandler @50
-  XML_SetUnparsedEntityDeclHandler @51
-  XML_SetUserData @52
-  XML_SetXmlDeclHandler @53
-  XML_UseParserAsHandlerArg @54
-; added with version 1.95.3
-  XML_ParserReset @55
-  XML_SetSkippedEntityHandler @56
-; added with version 1.95.5
-  XML_GetFeatureList @57
-  XML_UseForeignDTD @58
-; added with version 1.95.6
-  XML_FreeContentModel @59
-  XML_MemMalloc @60
-  XML_MemRealloc @61
-  XML_MemFree @62
-; added with version 1.95.8
-  XML_StopParser @63
-  XML_ResumeParser @64
-  XML_GetParsingStatus @65
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/macconfig.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/macconfig.h
deleted file mode 100644
index 2725caaf..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/macconfig.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*================================================================
-** Copyright 2000, Clark Cooper
-** All rights reserved.
-**
-** This is free software. You are permitted to copy, distribute, or modify
-** it under the terms of the MIT/X license (contained in the COPYING file
-** with this distribution.)
-**
-*/
-
-#ifndef MACCONFIG_H
-#define MACCONFIG_H
-
-
-/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
-#define BYTEORDER  4321
-
-/* Define to 1 if you have the `bcopy' function. */
-#undef HAVE_BCOPY
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE
-
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* whether byteorder is bigendian */
-#define WORDS_BIGENDIAN
-
-/* Define to specify how much context to retain around the current parse
-   point. */
-#undef XML_CONTEXT_BYTES
-
-/* Define to make parameter entity parsing functionality available. */
-#define XML_DTD
-
-/* Define to make XML Namespaces functionality available. */
-#define XML_NS
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `long' if <sys/types.h> does not define. */
-#define off_t  long
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-#undef size_t
-
-
-#endif /* ifndef MACCONFIG_H */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/nametab.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/nametab.h
deleted file mode 100644
index b05e62c7..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/nametab.h
+++ /dev/null
@@ -1,150 +0,0 @@
-static const unsigned namingBitmap[] = {
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
-0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
-0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
-0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
-0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
-0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
-0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
-0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
-0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
-0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
-0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
-0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
-0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
-0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
-0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
-0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
-0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
-0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
-0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
-0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
-0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
-0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
-0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
-0x40000000, 0xF580C900, 0x00000007, 0x02010800,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
-0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
-0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
-0x00000000, 0x00004C40, 0x00000000, 0x00000000,
-0x00000007, 0x00000000, 0x00000000, 0x00000000,
-0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
-0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
-0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
-0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
-0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
-0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
-0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
-0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
-0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
-0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
-0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
-0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
-0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
-0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
-0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
-0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
-0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
-0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
-0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
-0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
-0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
-0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
-0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
-0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
-0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
-0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
-0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
-0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
-};
-static const unsigned char nmstrtPages[] = {
-0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
-0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
-0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
-0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-static const unsigned char namePages[] = {
-0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
-0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
-0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
-0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/utf8tab.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/utf8tab.h
deleted file mode 100644
index 7bb3e776..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/utf8tab.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-
-/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4,
-/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM,
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/winconfig.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/winconfig.h
deleted file mode 100644
index c1b791d6..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/winconfig.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*================================================================
-** Copyright 2000, Clark Cooper
-** All rights reserved.
-**
-** This is free software. You are permitted to copy, distribute, or modify
-** it under the terms of the MIT/X license (contained in the COPYING file
-** with this distribution.)
-*/
-
-#ifndef WINCONFIG_H
-#define WINCONFIG_H
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#undef WIN32_LEAN_AND_MEAN
-
-#include <memory.h>
-#include <string.h>
-
-#define XML_NS 1
-#define XML_DTD 1
-#define XML_CONTEXT_BYTES 1024
-
-/* we will assume all Windows platforms are little endian */
-#define BYTEORDER 1234
-
-/* Windows has memmove() available. */
-#define HAVE_MEMMOVE
-
-#endif /* ndef WINCONFIG_H */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlparse.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlparse.c
deleted file mode 100644
index f35aa36b..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlparse.c
+++ /dev/null
@@ -1,6403 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include <stddef.h>
-#include <string.h>                     /* memset(), memcpy() */
-#include <assert.h>
-#include <limits.h>                     /* UINT_MAX */
-#include <time.h>                       /* time() */
-
-#define XML_BUILDING_EXPAT 1
-
-#ifdef COMPILED_FROM_DSP
-#include "winconfig.h"
-#elif defined(MACOS_CLASSIC)
-#include "macconfig.h"
-#elif defined(__amigaos__)
-#include "amigaconfig.h"
-#elif defined(__WATCOMC__)
-#include "watcomconfig.h"
-#elif defined(HAVE_EXPAT_CONFIG_H)
-#include <expat_config.h>
-#endif /* ndef COMPILED_FROM_DSP */
-
-#include "ascii.h"
-#include "expat.h"
-
-#ifdef XML_UNICODE
-#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX
-#define XmlConvert XmlUtf16Convert
-#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding
-#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS
-#define XmlEncode XmlUtf16Encode
-/* Using pointer subtraction to convert to integer type. */
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1))
-typedef unsigned short ICHAR;
-#else
-#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX
-#define XmlConvert XmlUtf8Convert
-#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding
-#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS
-#define XmlEncode XmlUtf8Encode
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf8)
-typedef char ICHAR;
-#endif
-
-
-#ifndef XML_NS
-
-#define XmlInitEncodingNS XmlInitEncoding
-#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding
-#undef XmlGetInternalEncodingNS
-#define XmlGetInternalEncodingNS XmlGetInternalEncoding
-#define XmlParseXmlDeclNS XmlParseXmlDecl
-
-#endif
-
-#ifdef XML_UNICODE
-
-#ifdef XML_UNICODE_WCHAR_T
-#define XML_T(x) (const wchar_t)x
-#define XML_L(x) L ## x
-#else
-#define XML_T(x) (const unsigned short)x
-#define XML_L(x) x
-#endif
-
-#else
-
-#define XML_T(x) x
-#define XML_L(x) x
-
-#endif
-
-/* Round up n to be a multiple of sz, where sz is a power of 2. */
-#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1))
-
-/* Handle the case where memmove() doesn't exist. */
-#ifndef HAVE_MEMMOVE
-#ifdef HAVE_BCOPY
-#define memmove(d,s,l) bcopy((s),(d),(l))
-#else
-#error memmove does not exist on this platform, nor is a substitute available
-#endif /* HAVE_BCOPY */
-#endif /* HAVE_MEMMOVE */
-
-#include "internal.h"
-#include "xmltok.h"
-#include "xmlrole.h"
-
-typedef const XML_Char *KEY;
-
-typedef struct {
-  KEY name;
-} NAMED;
-
-typedef struct {
-  NAMED **v;
-  unsigned char power;
-  size_t size;
-  size_t used;
-  const XML_Memory_Handling_Suite *mem;
-} HASH_TABLE;
-
-/* Basic character hash algorithm, taken from Python's string hash:
-   h = h * 1000003 ^ character, the constant being a prime number.
-
-*/
-#ifdef XML_UNICODE
-#define CHAR_HASH(h, c) \
-  (((h) * 0xF4243) ^ (unsigned short)(c))
-#else
-#define CHAR_HASH(h, c) \
-  (((h) * 0xF4243) ^ (unsigned char)(c))
-#endif
-
-/* For probing (after a collision) we need a step size relative prime
-   to the hash table size, which is a power of 2. We use double-hashing,
-   since we can calculate a second hash value cheaply by taking those bits
-   of the first hash value that were discarded (masked out) when the table
-   index was calculated: index = hash & mask, where mask = table->size - 1.
-   We limit the maximum step size to table->size / 4 (mask >> 2) and make
-   it odd, since odd numbers are always relative prime to a power of 2.
-*/
-#define SECOND_HASH(hash, mask, power) \
-  ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2))
-#define PROBE_STEP(hash, mask, power) \
-  ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1))
-
-typedef struct {
-  NAMED **p;
-  NAMED **end;
-} HASH_TABLE_ITER;
-
-#define INIT_TAG_BUF_SIZE 32  /* must be a multiple of sizeof(XML_Char) */
-#define INIT_DATA_BUF_SIZE 1024
-#define INIT_ATTS_SIZE 16
-#define INIT_ATTS_VERSION 0xFFFFFFFF
-#define INIT_BLOCK_SIZE 1024
-#define INIT_BUFFER_SIZE 1024
-
-#define EXPAND_SPARE 24
-
-typedef struct binding {
-  struct prefix *prefix;
-  struct binding *nextTagBinding;
-  struct binding *prevPrefixBinding;
-  const struct attribute_id *attId;
-  XML_Char *uri;
-  int uriLen;
-  int uriAlloc;
-} BINDING;
-
-typedef struct prefix {
-  const XML_Char *name;
-  BINDING *binding;
-} PREFIX;
-
-typedef struct {
-  const XML_Char *str;
-  const XML_Char *localPart;
-  const XML_Char *prefix;
-  int strLen;
-  int uriLen;
-  int prefixLen;
-} TAG_NAME;
-
-/* TAG represents an open element.
-   The name of the element is stored in both the document and API
-   encodings.  The memory buffer 'buf' is a separately-allocated
-   memory area which stores the name.  During the XML_Parse()/
-   XMLParseBuffer() when the element is open, the memory for the 'raw'
-   version of the name (in the document encoding) is shared with the
-   document buffer.  If the element is open across calls to
-   XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to
-   contain the 'raw' name as well.
-
-   A parser re-uses these structures, maintaining a list of allocated
-   TAG objects in a free list.
-*/
-typedef struct tag {
-  struct tag *parent;           /* parent of this element */
-  const char *rawName;          /* tagName in the original encoding */
-  int rawNameLength;
-  TAG_NAME name;                /* tagName in the API encoding */
-  char *buf;                    /* buffer for name components */
-  char *bufEnd;                 /* end of the buffer */
-  BINDING *bindings;
-} TAG;
-
-typedef struct {
-  const XML_Char *name;
-  const XML_Char *textPtr;
-  int textLen;                  /* length in XML_Chars */
-  int processed;                /* # of processed bytes - when suspended */
-  const XML_Char *systemId;
-  const XML_Char *base;
-  const XML_Char *publicId;
-  const XML_Char *notation;
-  XML_Bool open;
-  XML_Bool is_param;
-  XML_Bool is_internal; /* true if declared in internal subset outside PE */
-} ENTITY;
-
-typedef struct {
-  enum XML_Content_Type         type;
-  enum XML_Content_Quant        quant;
-  const XML_Char *              name;
-  int                           firstchild;
-  int                           lastchild;
-  int                           childcnt;
-  int                           nextsib;
-} CONTENT_SCAFFOLD;
-
-#define INIT_SCAFFOLD_ELEMENTS 32
-
-typedef struct block {
-  struct block *next;
-  int size;
-  XML_Char s[1];
-} BLOCK;
-
-typedef struct {
-  BLOCK *blocks;
-  BLOCK *freeBlocks;
-  const XML_Char *end;
-  XML_Char *ptr;
-  XML_Char *start;
-  const XML_Memory_Handling_Suite *mem;
-} STRING_POOL;
-
-/* The XML_Char before the name is used to determine whether
-   an attribute has been specified. */
-typedef struct attribute_id {
-  XML_Char *name;
-  PREFIX *prefix;
-  XML_Bool maybeTokenized;
-  XML_Bool xmlns;
-} ATTRIBUTE_ID;
-
-typedef struct {
-  const ATTRIBUTE_ID *id;
-  XML_Bool isCdata;
-  const XML_Char *value;
-} DEFAULT_ATTRIBUTE;
-
-typedef struct {
-  unsigned long version;
-  unsigned long hash;
-  const XML_Char *uriName;
-} NS_ATT;
-
-typedef struct {
-  const XML_Char *name;
-  PREFIX *prefix;
-  const ATTRIBUTE_ID *idAtt;
-  int nDefaultAtts;
-  int allocDefaultAtts;
-  DEFAULT_ATTRIBUTE *defaultAtts;
-} ELEMENT_TYPE;
-
-typedef struct {
-  HASH_TABLE generalEntities;
-  HASH_TABLE elementTypes;
-  HASH_TABLE attributeIds;
-  HASH_TABLE prefixes;
-  STRING_POOL pool;
-  STRING_POOL entityValuePool;
-  /* false once a parameter entity reference has been skipped */
-  XML_Bool keepProcessing;
-  /* true once an internal or external PE reference has been encountered;
-     this includes the reference to an external subset */
-  XML_Bool hasParamEntityRefs;
-  XML_Bool standalone;
-#ifdef XML_DTD
-  /* indicates if external PE has been read */
-  XML_Bool paramEntityRead;
-  HASH_TABLE paramEntities;
-#endif /* XML_DTD */
-  PREFIX defaultPrefix;
-  /* === scaffolding for building content model === */
-  XML_Bool in_eldecl;
-  CONTENT_SCAFFOLD *scaffold;
-  unsigned contentStringLen;
-  unsigned scaffSize;
-  unsigned scaffCount;
-  int scaffLevel;
-  int *scaffIndex;
-} DTD;
-
-typedef struct open_internal_entity {
-  const char *internalEventPtr;
-  const char *internalEventEndPtr;
-  struct open_internal_entity *next;
-  ENTITY *entity;
-  int startTagLevel;
-  XML_Bool betweenDecl; /* WFC: PE Between Declarations */
-} OPEN_INTERNAL_ENTITY;
-
-typedef enum XML_Error PTRCALL Processor(XML_Parser parser,
-                                         const char *start,
-                                         const char *end,
-                                         const char **endPtr);
-
-static Processor prologProcessor;
-static Processor prologInitProcessor;
-static Processor contentProcessor;
-static Processor cdataSectionProcessor;
-#ifdef XML_DTD
-static Processor ignoreSectionProcessor;
-static Processor externalParEntProcessor;
-static Processor externalParEntInitProcessor;
-static Processor entityValueProcessor;
-static Processor entityValueInitProcessor;
-#endif /* XML_DTD */
-static Processor epilogProcessor;
-static Processor errorProcessor;
-static Processor externalEntityInitProcessor;
-static Processor externalEntityInitProcessor2;
-static Processor externalEntityInitProcessor3;
-static Processor externalEntityContentProcessor;
-static Processor internalEntityProcessor;
-
-static enum XML_Error
-handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName);
-static enum XML_Error
-processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
-               const char *s, const char *next);
-static enum XML_Error
-initializeEncoding(XML_Parser parser);
-static enum XML_Error
-doProlog(XML_Parser parser, const ENCODING *enc, const char *s,
-         const char *end, int tok, const char *next, const char **nextPtr,
-         XML_Bool haveMore);
-static enum XML_Error
-processInternalEntity(XML_Parser parser, ENTITY *entity,
-                      XML_Bool betweenDecl);
-static enum XML_Error
-doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
-          const char *start, const char *end, const char **endPtr,
-          XML_Bool haveMore);
-static enum XML_Error
-doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr,
-               const char *end, const char **nextPtr, XML_Bool haveMore);
-#ifdef XML_DTD
-static enum XML_Error
-doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr,
-                const char *end, const char **nextPtr, XML_Bool haveMore);
-#endif /* XML_DTD */
-
-static enum XML_Error
-storeAtts(XML_Parser parser, const ENCODING *, const char *s,
-          TAG_NAME *tagNamePtr, BINDING **bindingsPtr);
-static enum XML_Error
-addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
-           const XML_Char *uri, BINDING **bindingsPtr);
-static int
-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata,
-                XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser);
-static enum XML_Error
-storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
-                    const char *, const char *, STRING_POOL *);
-static enum XML_Error
-appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
-                     const char *, const char *, STRING_POOL *);
-static ATTRIBUTE_ID *
-getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start,
-               const char *end);
-static int
-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *);
-static enum XML_Error
-storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start,
-                 const char *end);
-static int
-reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
-                            const char *start, const char *end);
-static int
-reportComment(XML_Parser parser, const ENCODING *enc, const char *start,
-              const char *end);
-static void
-reportDefault(XML_Parser parser, const ENCODING *enc, const char *start,
-              const char *end);
-
-static const XML_Char * getContext(XML_Parser parser);
-static XML_Bool
-setContext(XML_Parser parser, const XML_Char *context);
-
-static void FASTCALL normalizePublicId(XML_Char *s);
-
-static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms);
-/* do not call if parentParser != NULL */
-static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms);
-static void
-dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms);
-static int
-dtdCopy(XML_Parser oldParser,
-        DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
-static int
-copyEntityTable(XML_Parser oldParser,
-                HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
-static NAMED *
-lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize);
-static void FASTCALL
-hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms);
-static void FASTCALL hashTableClear(HASH_TABLE *);
-static void FASTCALL hashTableDestroy(HASH_TABLE *);
-static void FASTCALL
-hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *);
-static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *);
-
-static void FASTCALL
-poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms);
-static void FASTCALL poolClear(STRING_POOL *);
-static void FASTCALL poolDestroy(STRING_POOL *);
-static XML_Char *
-poolAppend(STRING_POOL *pool, const ENCODING *enc,
-           const char *ptr, const char *end);
-static XML_Char *
-poolStoreString(STRING_POOL *pool, const ENCODING *enc,
-                const char *ptr, const char *end);
-static XML_Bool FASTCALL poolGrow(STRING_POOL *pool);
-static const XML_Char * FASTCALL
-poolCopyString(STRING_POOL *pool, const XML_Char *s);
-static const XML_Char *
-poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n);
-static const XML_Char * FASTCALL
-poolAppendString(STRING_POOL *pool, const XML_Char *s);
-
-static int FASTCALL nextScaffoldPart(XML_Parser parser);
-static XML_Content * build_model(XML_Parser parser);
-static ELEMENT_TYPE *
-getElementType(XML_Parser parser, const ENCODING *enc,
-               const char *ptr, const char *end);
-
-static unsigned long generate_hash_secret_salt(void);
-static XML_Bool startParsing(XML_Parser parser);
-
-static XML_Parser
-parserCreate(const XML_Char *encodingName,
-             const XML_Memory_Handling_Suite *memsuite,
-             const XML_Char *nameSep,
-             DTD *dtd);
-
-static void
-parserInit(XML_Parser parser, const XML_Char *encodingName);
-
-#define poolStart(pool) ((pool)->start)
-#define poolEnd(pool) ((pool)->ptr)
-#define poolLength(pool) ((pool)->ptr - (pool)->start)
-#define poolChop(pool) ((void)--(pool->ptr))
-#define poolLastChar(pool) (((pool)->ptr)[-1])
-#define poolDiscard(pool) ((pool)->ptr = (pool)->start)
-#define poolFinish(pool) ((pool)->start = (pool)->ptr)
-#define poolAppendChar(pool, c) \
-  (((pool)->ptr == (pool)->end && !poolGrow(pool)) \
-   ? 0 \
-   : ((*((pool)->ptr)++ = c), 1))
-
-struct XML_ParserStruct {
-  /* The first member must be userData so that the XML_GetUserData
-     macro works. */
-  void *m_userData;
-  void *m_handlerArg;
-  char *m_buffer;
-  const XML_Memory_Handling_Suite m_mem;
-  /* first character to be parsed */
-  const char *m_bufferPtr;
-  /* past last character to be parsed */
-  char *m_bufferEnd;
-  /* allocated end of buffer */
-  const char *m_bufferLim;
-  XML_Index m_parseEndByteIndex;
-  const char *m_parseEndPtr;
-  XML_Char *m_dataBuf;
-  XML_Char *m_dataBufEnd;
-  XML_StartElementHandler m_startElementHandler;
-  XML_EndElementHandler m_endElementHandler;
-  XML_CharacterDataHandler m_characterDataHandler;
-  XML_ProcessingInstructionHandler m_processingInstructionHandler;
-  XML_CommentHandler m_commentHandler;
-  XML_StartCdataSectionHandler m_startCdataSectionHandler;
-  XML_EndCdataSectionHandler m_endCdataSectionHandler;
-  XML_DefaultHandler m_defaultHandler;
-  XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler;
-  XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler;
-  XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler;
-  XML_NotationDeclHandler m_notationDeclHandler;
-  XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler;
-  XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler;
-  XML_NotStandaloneHandler m_notStandaloneHandler;
-  XML_ExternalEntityRefHandler m_externalEntityRefHandler;
-  XML_Parser m_externalEntityRefHandlerArg;
-  XML_SkippedEntityHandler m_skippedEntityHandler;
-  XML_UnknownEncodingHandler m_unknownEncodingHandler;
-  XML_ElementDeclHandler m_elementDeclHandler;
-  XML_AttlistDeclHandler m_attlistDeclHandler;
-  XML_EntityDeclHandler m_entityDeclHandler;
-  XML_XmlDeclHandler m_xmlDeclHandler;
-  const ENCODING *m_encoding;
-  INIT_ENCODING m_initEncoding;
-  const ENCODING *m_internalEncoding;
-  const XML_Char *m_protocolEncodingName;
-  XML_Bool m_ns;
-  XML_Bool m_ns_triplets;
-  void *m_unknownEncodingMem;
-  void *m_unknownEncodingData;
-  void *m_unknownEncodingHandlerData;
-  void (XMLCALL *m_unknownEncodingRelease)(void *);
-  PROLOG_STATE m_prologState;
-  Processor *m_processor;
-  enum XML_Error m_errorCode;
-  const char *m_eventPtr;
-  const char *m_eventEndPtr;
-  const char *m_positionPtr;
-  OPEN_INTERNAL_ENTITY *m_openInternalEntities;
-  OPEN_INTERNAL_ENTITY *m_freeInternalEntities;
-  XML_Bool m_defaultExpandInternalEntities;
-  int m_tagLevel;
-  ENTITY *m_declEntity;
-  const XML_Char *m_doctypeName;
-  const XML_Char *m_doctypeSysid;
-  const XML_Char *m_doctypePubid;
-  const XML_Char *m_declAttributeType;
-  const XML_Char *m_declNotationName;
-  const XML_Char *m_declNotationPublicId;
-  ELEMENT_TYPE *m_declElementType;
-  ATTRIBUTE_ID *m_declAttributeId;
-  XML_Bool m_declAttributeIsCdata;
-  XML_Bool m_declAttributeIsId;
-  DTD *m_dtd;
-  const XML_Char *m_curBase;
-  TAG *m_tagStack;
-  TAG *m_freeTagList;
-  BINDING *m_inheritedBindings;
-  BINDING *m_freeBindingList;
-  int m_attsSize;
-  int m_nSpecifiedAtts;
-  int m_idAttIndex;
-  ATTRIBUTE *m_atts;
-  NS_ATT *m_nsAtts;
-  unsigned long m_nsAttsVersion;
-  unsigned char m_nsAttsPower;
-#ifdef XML_ATTR_INFO
-  XML_AttrInfo *m_attInfo;
-#endif
-  POSITION m_position;
-  STRING_POOL m_tempPool;
-  STRING_POOL m_temp2Pool;
-  char *m_groupConnector;
-  unsigned int m_groupSize;
-  XML_Char m_namespaceSeparator;
-  XML_Parser m_parentParser;
-  XML_ParsingStatus m_parsingStatus;
-#ifdef XML_DTD
-  XML_Bool m_isParamEntity;
-  XML_Bool m_useForeignDTD;
-  enum XML_ParamEntityParsing m_paramEntityParsing;
-#endif
-  unsigned long m_hash_secret_salt;
-};
-
-#define MALLOC(s) (parser->m_mem.malloc_fcn((s)))
-#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s)))
-#define FREE(p) (parser->m_mem.free_fcn((p)))
-
-#define userData (parser->m_userData)
-#define handlerArg (parser->m_handlerArg)
-#define startElementHandler (parser->m_startElementHandler)
-#define endElementHandler (parser->m_endElementHandler)
-#define characterDataHandler (parser->m_characterDataHandler)
-#define processingInstructionHandler \
-        (parser->m_processingInstructionHandler)
-#define commentHandler (parser->m_commentHandler)
-#define startCdataSectionHandler \
-        (parser->m_startCdataSectionHandler)
-#define endCdataSectionHandler (parser->m_endCdataSectionHandler)
-#define defaultHandler (parser->m_defaultHandler)
-#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler)
-#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler)
-#define unparsedEntityDeclHandler \
-        (parser->m_unparsedEntityDeclHandler)
-#define notationDeclHandler (parser->m_notationDeclHandler)
-#define startNamespaceDeclHandler \
-        (parser->m_startNamespaceDeclHandler)
-#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler)
-#define notStandaloneHandler (parser->m_notStandaloneHandler)
-#define externalEntityRefHandler \
-        (parser->m_externalEntityRefHandler)
-#define externalEntityRefHandlerArg \
-        (parser->m_externalEntityRefHandlerArg)
-#define internalEntityRefHandler \
-        (parser->m_internalEntityRefHandler)
-#define skippedEntityHandler (parser->m_skippedEntityHandler)
-#define unknownEncodingHandler (parser->m_unknownEncodingHandler)
-#define elementDeclHandler (parser->m_elementDeclHandler)
-#define attlistDeclHandler (parser->m_attlistDeclHandler)
-#define entityDeclHandler (parser->m_entityDeclHandler)
-#define xmlDeclHandler (parser->m_xmlDeclHandler)
-#define encoding (parser->m_encoding)
-#define initEncoding (parser->m_initEncoding)
-#define internalEncoding (parser->m_internalEncoding)
-#define unknownEncodingMem (parser->m_unknownEncodingMem)
-#define unknownEncodingData (parser->m_unknownEncodingData)
-#define unknownEncodingHandlerData \
-  (parser->m_unknownEncodingHandlerData)
-#define unknownEncodingRelease (parser->m_unknownEncodingRelease)
-#define protocolEncodingName (parser->m_protocolEncodingName)
-#define ns (parser->m_ns)
-#define ns_triplets (parser->m_ns_triplets)
-#define prologState (parser->m_prologState)
-#define processor (parser->m_processor)
-#define errorCode (parser->m_errorCode)
-#define eventPtr (parser->m_eventPtr)
-#define eventEndPtr (parser->m_eventEndPtr)
-#define positionPtr (parser->m_positionPtr)
-#define position (parser->m_position)
-#define openInternalEntities (parser->m_openInternalEntities)
-#define freeInternalEntities (parser->m_freeInternalEntities)
-#define defaultExpandInternalEntities \
-        (parser->m_defaultExpandInternalEntities)
-#define tagLevel (parser->m_tagLevel)
-#define buffer (parser->m_buffer)
-#define bufferPtr (parser->m_bufferPtr)
-#define bufferEnd (parser->m_bufferEnd)
-#define parseEndByteIndex (parser->m_parseEndByteIndex)
-#define parseEndPtr (parser->m_parseEndPtr)
-#define bufferLim (parser->m_bufferLim)
-#define dataBuf (parser->m_dataBuf)
-#define dataBufEnd (parser->m_dataBufEnd)
-#define _dtd (parser->m_dtd)
-#define curBase (parser->m_curBase)
-#define declEntity (parser->m_declEntity)
-#define doctypeName (parser->m_doctypeName)
-#define doctypeSysid (parser->m_doctypeSysid)
-#define doctypePubid (parser->m_doctypePubid)
-#define declAttributeType (parser->m_declAttributeType)
-#define declNotationName (parser->m_declNotationName)
-#define declNotationPublicId (parser->m_declNotationPublicId)
-#define declElementType (parser->m_declElementType)
-#define declAttributeId (parser->m_declAttributeId)
-#define declAttributeIsCdata (parser->m_declAttributeIsCdata)
-#define declAttributeIsId (parser->m_declAttributeIsId)
-#define freeTagList (parser->m_freeTagList)
-#define freeBindingList (parser->m_freeBindingList)
-#define inheritedBindings (parser->m_inheritedBindings)
-#define tagStack (parser->m_tagStack)
-#define atts (parser->m_atts)
-#define attsSize (parser->m_attsSize)
-#define nSpecifiedAtts (parser->m_nSpecifiedAtts)
-#define idAttIndex (parser->m_idAttIndex)
-#define nsAtts (parser->m_nsAtts)
-#define nsAttsVersion (parser->m_nsAttsVersion)
-#define nsAttsPower (parser->m_nsAttsPower)
-#define attInfo (parser->m_attInfo)
-#define tempPool (parser->m_tempPool)
-#define temp2Pool (parser->m_temp2Pool)
-#define groupConnector (parser->m_groupConnector)
-#define groupSize (parser->m_groupSize)
-#define namespaceSeparator (parser->m_namespaceSeparator)
-#define parentParser (parser->m_parentParser)
-#define ps_parsing (parser->m_parsingStatus.parsing)
-#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer)
-#ifdef XML_DTD
-#define isParamEntity (parser->m_isParamEntity)
-#define useForeignDTD (parser->m_useForeignDTD)
-#define paramEntityParsing (parser->m_paramEntityParsing)
-#endif /* XML_DTD */
-#define hash_secret_salt (parser->m_hash_secret_salt)
-
-XML_Parser XMLCALL
-XML_ParserCreate(const XML_Char *encodingName)
-{
-  return XML_ParserCreate_MM(encodingName, NULL, NULL);
-}
-
-XML_Parser XMLCALL
-XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep)
-{
-  XML_Char tmp[2];
-  *tmp = nsSep;
-  return XML_ParserCreate_MM(encodingName, NULL, tmp);
-}
-
-static const XML_Char implicitContext[] = {
-  ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p,
-  ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w,
-  ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g,
-  ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9,
-  ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e,
-  ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0'
-};
-
-static unsigned long
-generate_hash_secret_salt(void)
-{
-  unsigned int seed = time(NULL) % UINT_MAX;
-  srand(seed);
-  return rand();
-}
-
-static XML_Bool  /* only valid for root parser */
-startParsing(XML_Parser parser)
-{
-    /* hash functions must be initialized before setContext() is called */
-    if (hash_secret_salt == 0)
-      hash_secret_salt = generate_hash_secret_salt();
-    if (ns) {
-      /* implicit context only set for root parser, since child
-         parsers (i.e. external entity parsers) will inherit it
-      */
-      return setContext(parser, implicitContext);
-    }
-    return XML_TRUE;
-}
-
-XML_Parser XMLCALL
-XML_ParserCreate_MM(const XML_Char *encodingName,
-                    const XML_Memory_Handling_Suite *memsuite,
-                    const XML_Char *nameSep)
-{
-  return parserCreate(encodingName, memsuite, nameSep, NULL);
-}
-
-static XML_Parser
-parserCreate(const XML_Char *encodingName,
-             const XML_Memory_Handling_Suite *memsuite,
-             const XML_Char *nameSep,
-             DTD *dtd)
-{
-  XML_Parser parser;
-
-  if (memsuite) {
-    XML_Memory_Handling_Suite *mtemp;
-    parser = (XML_Parser)
-      memsuite->malloc_fcn(sizeof(struct XML_ParserStruct));
-    if (parser != NULL) {
-      mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
-      mtemp->malloc_fcn = memsuite->malloc_fcn;
-      mtemp->realloc_fcn = memsuite->realloc_fcn;
-      mtemp->free_fcn = memsuite->free_fcn;
-    }
-  }
-  else {
-    XML_Memory_Handling_Suite *mtemp;
-    parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct));
-    if (parser != NULL) {
-      mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
-      mtemp->malloc_fcn = malloc;
-      mtemp->realloc_fcn = realloc;
-      mtemp->free_fcn = free;
-    }
-  }
-
-  if (!parser)
-    return parser;
-
-  buffer = NULL;
-  bufferLim = NULL;
-
-  attsSize = INIT_ATTS_SIZE;
-  atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE));
-  if (atts == NULL) {
-    FREE(parser);
-    return NULL;
-  }
-#ifdef XML_ATTR_INFO
-  attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo));
-  if (attInfo == NULL) {
-    FREE(atts);
-    FREE(parser);
-    return NULL;
-  }
-#endif
-  dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char));
-  if (dataBuf == NULL) {
-    FREE(atts);
-#ifdef XML_ATTR_INFO
-    FREE(attInfo);
-#endif
-    FREE(parser);
-    return NULL;
-  }
-  dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE;
-
-  if (dtd)
-    _dtd = dtd;
-  else {
-    _dtd = dtdCreate(&parser->m_mem);
-    if (_dtd == NULL) {
-      FREE(dataBuf);
-      FREE(atts);
-#ifdef XML_ATTR_INFO
-      FREE(attInfo);
-#endif
-      FREE(parser);
-      return NULL;
-    }
-  }
-
-  freeBindingList = NULL;
-  freeTagList = NULL;
-  freeInternalEntities = NULL;
-
-  groupSize = 0;
-  groupConnector = NULL;
-
-  unknownEncodingHandler = NULL;
-  unknownEncodingHandlerData = NULL;
-
-  namespaceSeparator = ASCII_EXCL;
-  ns = XML_FALSE;
-  ns_triplets = XML_FALSE;
-
-  nsAtts = NULL;
-  nsAttsVersion = 0;
-  nsAttsPower = 0;
-
-  poolInit(&tempPool, &(parser->m_mem));
-  poolInit(&temp2Pool, &(parser->m_mem));
-  parserInit(parser, encodingName);
-
-  if (encodingName && !protocolEncodingName) {
-    XML_ParserFree(parser);
-    return NULL;
-  }
-
-  if (nameSep) {
-    ns = XML_TRUE;
-    internalEncoding = XmlGetInternalEncodingNS();
-    namespaceSeparator = *nameSep;
-  }
-  else {
-    internalEncoding = XmlGetInternalEncoding();
-  }
-
-  return parser;
-}
-
-static void
-parserInit(XML_Parser parser, const XML_Char *encodingName)
-{
-  processor = prologInitProcessor;
-  XmlPrologStateInit(&prologState);
-  protocolEncodingName = (encodingName != NULL
-                          ? poolCopyString(&tempPool, encodingName)
-                          : NULL);
-  curBase = NULL;
-  XmlInitEncoding(&initEncoding, &encoding, 0);
-  userData = NULL;
-  handlerArg = NULL;
-  startElementHandler = NULL;
-  endElementHandler = NULL;
-  characterDataHandler = NULL;
-  processingInstructionHandler = NULL;
-  commentHandler = NULL;
-  startCdataSectionHandler = NULL;
-  endCdataSectionHandler = NULL;
-  defaultHandler = NULL;
-  startDoctypeDeclHandler = NULL;
-  endDoctypeDeclHandler = NULL;
-  unparsedEntityDeclHandler = NULL;
-  notationDeclHandler = NULL;
-  startNamespaceDeclHandler = NULL;
-  endNamespaceDeclHandler = NULL;
-  notStandaloneHandler = NULL;
-  externalEntityRefHandler = NULL;
-  externalEntityRefHandlerArg = parser;
-  skippedEntityHandler = NULL;
-  elementDeclHandler = NULL;
-  attlistDeclHandler = NULL;
-  entityDeclHandler = NULL;
-  xmlDeclHandler = NULL;
-  bufferPtr = buffer;
-  bufferEnd = buffer;
-  parseEndByteIndex = 0;
-  parseEndPtr = NULL;
-  declElementType = NULL;
-  declAttributeId = NULL;
-  declEntity = NULL;
-  doctypeName = NULL;
-  doctypeSysid = NULL;
-  doctypePubid = NULL;
-  declAttributeType = NULL;
-  declNotationName = NULL;
-  declNotationPublicId = NULL;
-  declAttributeIsCdata = XML_FALSE;
-  declAttributeIsId = XML_FALSE;
-  memset(&position, 0, sizeof(POSITION));
-  errorCode = XML_ERROR_NONE;
-  eventPtr = NULL;
-  eventEndPtr = NULL;
-  positionPtr = NULL;
-  openInternalEntities = NULL;
-  defaultExpandInternalEntities = XML_TRUE;
-  tagLevel = 0;
-  tagStack = NULL;
-  inheritedBindings = NULL;
-  nSpecifiedAtts = 0;
-  unknownEncodingMem = NULL;
-  unknownEncodingRelease = NULL;
-  unknownEncodingData = NULL;
-  parentParser = NULL;
-  ps_parsing = XML_INITIALIZED;
-#ifdef XML_DTD
-  isParamEntity = XML_FALSE;
-  useForeignDTD = XML_FALSE;
-  paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
-#endif
-  hash_secret_salt = 0;
-}
-
-/* moves list of bindings to freeBindingList */
-static void FASTCALL
-moveToFreeBindingList(XML_Parser parser, BINDING *bindings)
-{
-  while (bindings) {
-    BINDING *b = bindings;
-    bindings = bindings->nextTagBinding;
-    b->nextTagBinding = freeBindingList;
-    freeBindingList = b;
-  }
-}
-
-XML_Bool XMLCALL
-XML_ParserReset(XML_Parser parser, const XML_Char *encodingName)
-{
-  TAG *tStk;
-  OPEN_INTERNAL_ENTITY *openEntityList;
-  if (parentParser)
-    return XML_FALSE;
-  /* move tagStack to freeTagList */
-  tStk = tagStack;
-  while (tStk) {
-    TAG *tag = tStk;
-    tStk = tStk->parent;
-    tag->parent = freeTagList;
-    moveToFreeBindingList(parser, tag->bindings);
-    tag->bindings = NULL;
-    freeTagList = tag;
-  }
-  /* move openInternalEntities to freeInternalEntities */
-  openEntityList = openInternalEntities;
-  while (openEntityList) {
-    OPEN_INTERNAL_ENTITY *openEntity = openEntityList;
-    openEntityList = openEntity->next;
-    openEntity->next = freeInternalEntities;
-    freeInternalEntities = openEntity;
-  }
-  moveToFreeBindingList(parser, inheritedBindings);
-  FREE(unknownEncodingMem);
-  if (unknownEncodingRelease)
-    unknownEncodingRelease(unknownEncodingData);
-  poolClear(&tempPool);
-  poolClear(&temp2Pool);
-  parserInit(parser, encodingName);
-  dtdReset(_dtd, &parser->m_mem);
-  return XML_TRUE;
-}
-
-enum XML_Status XMLCALL
-XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName)
-{
-  /* Block after XML_Parse()/XML_ParseBuffer() has been called.
-     XXX There's no way for the caller to determine which of the
-     XXX possible error cases caused the XML_STATUS_ERROR return.
-  */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return XML_STATUS_ERROR;
-  if (encodingName == NULL)
-    protocolEncodingName = NULL;
-  else {
-    protocolEncodingName = poolCopyString(&tempPool, encodingName);
-    if (!protocolEncodingName)
-      return XML_STATUS_ERROR;
-  }
-  return XML_STATUS_OK;
-}
-
-XML_Parser XMLCALL
-XML_ExternalEntityParserCreate(XML_Parser oldParser,
-                               const XML_Char *context,
-                               const XML_Char *encodingName)
-{
-  XML_Parser parser = oldParser;
-  DTD *newDtd = NULL;
-  DTD *oldDtd = _dtd;
-  XML_StartElementHandler oldStartElementHandler = startElementHandler;
-  XML_EndElementHandler oldEndElementHandler = endElementHandler;
-  XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler;
-  XML_ProcessingInstructionHandler oldProcessingInstructionHandler
-      = processingInstructionHandler;
-  XML_CommentHandler oldCommentHandler = commentHandler;
-  XML_StartCdataSectionHandler oldStartCdataSectionHandler
-      = startCdataSectionHandler;
-  XML_EndCdataSectionHandler oldEndCdataSectionHandler
-      = endCdataSectionHandler;
-  XML_DefaultHandler oldDefaultHandler = defaultHandler;
-  XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler
-      = unparsedEntityDeclHandler;
-  XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler;
-  XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler
-      = startNamespaceDeclHandler;
-  XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler
-      = endNamespaceDeclHandler;
-  XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler;
-  XML_ExternalEntityRefHandler oldExternalEntityRefHandler
-      = externalEntityRefHandler;
-  XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler;
-  XML_UnknownEncodingHandler oldUnknownEncodingHandler
-      = unknownEncodingHandler;
-  XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler;
-  XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler;
-  XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler;
-  XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler;
-  ELEMENT_TYPE * oldDeclElementType = declElementType;
-
-  void *oldUserData = userData;
-  void *oldHandlerArg = handlerArg;
-  XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities;
-  XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg;
-#ifdef XML_DTD
-  enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing;
-  int oldInEntityValue = prologState.inEntityValue;
-#endif
-  XML_Bool oldns_triplets = ns_triplets;
-  /* Note that the new parser shares the same hash secret as the old
-     parser, so that dtdCopy and copyEntityTable can lookup values
-     from hash tables associated with either parser without us having
-     to worry which hash secrets each table has.
-  */
-  unsigned long oldhash_secret_salt = hash_secret_salt;
-
-#ifdef XML_DTD
-  if (!context)
-    newDtd = oldDtd;
-#endif /* XML_DTD */
-
-  /* Note that the magical uses of the pre-processor to make field
-     access look more like C++ require that `parser' be overwritten
-     here.  This makes this function more painful to follow than it
-     would be otherwise.
-  */
-  if (ns) {
-    XML_Char tmp[2];
-    *tmp = namespaceSeparator;
-    parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd);
-  }
-  else {
-    parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd);
-  }
-
-  if (!parser)
-    return NULL;
-
-  startElementHandler = oldStartElementHandler;
-  endElementHandler = oldEndElementHandler;
-  characterDataHandler = oldCharacterDataHandler;
-  processingInstructionHandler = oldProcessingInstructionHandler;
-  commentHandler = oldCommentHandler;
-  startCdataSectionHandler = oldStartCdataSectionHandler;
-  endCdataSectionHandler = oldEndCdataSectionHandler;
-  defaultHandler = oldDefaultHandler;
-  unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler;
-  notationDeclHandler = oldNotationDeclHandler;
-  startNamespaceDeclHandler = oldStartNamespaceDeclHandler;
-  endNamespaceDeclHandler = oldEndNamespaceDeclHandler;
-  notStandaloneHandler = oldNotStandaloneHandler;
-  externalEntityRefHandler = oldExternalEntityRefHandler;
-  skippedEntityHandler = oldSkippedEntityHandler;
-  unknownEncodingHandler = oldUnknownEncodingHandler;
-  elementDeclHandler = oldElementDeclHandler;
-  attlistDeclHandler = oldAttlistDeclHandler;
-  entityDeclHandler = oldEntityDeclHandler;
-  xmlDeclHandler = oldXmlDeclHandler;
-  declElementType = oldDeclElementType;
-  userData = oldUserData;
-  if (oldUserData == oldHandlerArg)
-    handlerArg = userData;
-  else
-    handlerArg = parser;
-  if (oldExternalEntityRefHandlerArg != oldParser)
-    externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg;
-  defaultExpandInternalEntities = oldDefaultExpandInternalEntities;
-  ns_triplets = oldns_triplets;
-  hash_secret_salt = oldhash_secret_salt;
-  parentParser = oldParser;
-#ifdef XML_DTD
-  paramEntityParsing = oldParamEntityParsing;
-  prologState.inEntityValue = oldInEntityValue;
-  if (context) {
-#endif /* XML_DTD */
-    if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem)
-      || !setContext(parser, context)) {
-      XML_ParserFree(parser);
-      return NULL;
-    }
-    processor = externalEntityInitProcessor;
-#ifdef XML_DTD
-  }
-  else {
-    /* The DTD instance referenced by _dtd is shared between the document's
-       root parser and external PE parsers, therefore one does not need to
-       call setContext. In addition, one also *must* not call setContext,
-       because this would overwrite existing prefix->binding pointers in
-       _dtd with ones that get destroyed with the external PE parser.
-       This would leave those prefixes with dangling pointers.
-    */
-    isParamEntity = XML_TRUE;
-    XmlPrologStateInitExternalEntity(&prologState);
-    processor = externalParEntInitProcessor;
-  }
-#endif /* XML_DTD */
-  return parser;
-}
-
-static void FASTCALL
-destroyBindings(BINDING *bindings, XML_Parser parser)
-{
-  for (;;) {
-    BINDING *b = bindings;
-    if (!b)
-      break;
-    bindings = b->nextTagBinding;
-    FREE(b->uri);
-    FREE(b);
-  }
-}
-
-void XMLCALL
-XML_ParserFree(XML_Parser parser)
-{
-  TAG *tagList;
-  OPEN_INTERNAL_ENTITY *entityList;
-  if (parser == NULL)
-    return;
-  /* free tagStack and freeTagList */
-  tagList = tagStack;
-  for (;;) {
-    TAG *p;
-    if (tagList == NULL) {
-      if (freeTagList == NULL)
-        break;
-      tagList = freeTagList;
-      freeTagList = NULL;
-    }
-    p = tagList;
-    tagList = tagList->parent;
-    FREE(p->buf);
-    destroyBindings(p->bindings, parser);
-    FREE(p);
-  }
-  /* free openInternalEntities and freeInternalEntities */
-  entityList = openInternalEntities;
-  for (;;) {
-    OPEN_INTERNAL_ENTITY *openEntity;
-    if (entityList == NULL) {
-      if (freeInternalEntities == NULL)
-        break;
-      entityList = freeInternalEntities;
-      freeInternalEntities = NULL;
-    }
-    openEntity = entityList;
-    entityList = entityList->next;
-    FREE(openEntity);
-  }
-
-  destroyBindings(freeBindingList, parser);
-  destroyBindings(inheritedBindings, parser);
-  poolDestroy(&tempPool);
-  poolDestroy(&temp2Pool);
-#ifdef XML_DTD
-  /* external parameter entity parsers share the DTD structure
-     parser->m_dtd with the root parser, so we must not destroy it
-  */
-  if (!isParamEntity && _dtd)
-#else
-  if (_dtd)
-#endif /* XML_DTD */
-    dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem);
-  FREE((void *)atts);
-#ifdef XML_ATTR_INFO
-  FREE((void *)attInfo);
-#endif
-  FREE(groupConnector);
-  FREE(buffer);
-  FREE(dataBuf);
-  FREE(nsAtts);
-  FREE(unknownEncodingMem);
-  if (unknownEncodingRelease)
-    unknownEncodingRelease(unknownEncodingData);
-  FREE(parser);
-}
-
-void XMLCALL
-XML_UseParserAsHandlerArg(XML_Parser parser)
-{
-  handlerArg = parser;
-}
-
-enum XML_Error XMLCALL
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD)
-{
-#ifdef XML_DTD
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING;
-  useForeignDTD = useDTD;
-  return XML_ERROR_NONE;
-#else
-  return XML_ERROR_FEATURE_REQUIRES_XML_DTD;
-#endif
-}
-
-void XMLCALL
-XML_SetReturnNSTriplet(XML_Parser parser, int do_nst)
-{
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return;
-  ns_triplets = do_nst ? XML_TRUE : XML_FALSE;
-}
-
-void XMLCALL
-XML_SetUserData(XML_Parser parser, void *p)
-{
-  if (handlerArg == userData)
-    handlerArg = userData = p;
-  else
-    userData = p;
-}
-
-enum XML_Status XMLCALL
-XML_SetBase(XML_Parser parser, const XML_Char *p)
-{
-  if (p) {
-    p = poolCopyString(&_dtd->pool, p);
-    if (!p)
-      return XML_STATUS_ERROR;
-    curBase = p;
-  }
-  else
-    curBase = NULL;
-  return XML_STATUS_OK;
-}
-
-const XML_Char * XMLCALL
-XML_GetBase(XML_Parser parser)
-{
-  return curBase;
-}
-
-int XMLCALL
-XML_GetSpecifiedAttributeCount(XML_Parser parser)
-{
-  return nSpecifiedAtts;
-}
-
-int XMLCALL
-XML_GetIdAttributeIndex(XML_Parser parser)
-{
-  return idAttIndex;
-}
-
-#ifdef XML_ATTR_INFO
-const XML_AttrInfo * XMLCALL
-XML_GetAttributeInfo(XML_Parser parser)
-{
-  return attInfo;
-}
-#endif
-
-void XMLCALL
-XML_SetElementHandler(XML_Parser parser,
-                      XML_StartElementHandler start,
-                      XML_EndElementHandler end)
-{
-  startElementHandler = start;
-  endElementHandler = end;
-}
-
-void XMLCALL
-XML_SetStartElementHandler(XML_Parser parser,
-                           XML_StartElementHandler start) {
-  startElementHandler = start;
-}
-
-void XMLCALL
-XML_SetEndElementHandler(XML_Parser parser,
-                         XML_EndElementHandler end) {
-  endElementHandler = end;
-}
-
-void XMLCALL
-XML_SetCharacterDataHandler(XML_Parser parser,
-                            XML_CharacterDataHandler handler)
-{
-  characterDataHandler = handler;
-}
-
-void XMLCALL
-XML_SetProcessingInstructionHandler(XML_Parser parser,
-                                    XML_ProcessingInstructionHandler handler)
-{
-  processingInstructionHandler = handler;
-}
-
-void XMLCALL
-XML_SetCommentHandler(XML_Parser parser,
-                      XML_CommentHandler handler)
-{
-  commentHandler = handler;
-}
-
-void XMLCALL
-XML_SetCdataSectionHandler(XML_Parser parser,
-                           XML_StartCdataSectionHandler start,
-                           XML_EndCdataSectionHandler end)
-{
-  startCdataSectionHandler = start;
-  endCdataSectionHandler = end;
-}
-
-void XMLCALL
-XML_SetStartCdataSectionHandler(XML_Parser parser,
-                                XML_StartCdataSectionHandler start) {
-  startCdataSectionHandler = start;
-}
-
-void XMLCALL
-XML_SetEndCdataSectionHandler(XML_Parser parser,
-                              XML_EndCdataSectionHandler end) {
-  endCdataSectionHandler = end;
-}
-
-void XMLCALL
-XML_SetDefaultHandler(XML_Parser parser,
-                      XML_DefaultHandler handler)
-{
-  defaultHandler = handler;
-  defaultExpandInternalEntities = XML_FALSE;
-}
-
-void XMLCALL
-XML_SetDefaultHandlerExpand(XML_Parser parser,
-                            XML_DefaultHandler handler)
-{
-  defaultHandler = handler;
-  defaultExpandInternalEntities = XML_TRUE;
-}
-
-void XMLCALL
-XML_SetDoctypeDeclHandler(XML_Parser parser,
-                          XML_StartDoctypeDeclHandler start,
-                          XML_EndDoctypeDeclHandler end)
-{
-  startDoctypeDeclHandler = start;
-  endDoctypeDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetStartDoctypeDeclHandler(XML_Parser parser,
-                               XML_StartDoctypeDeclHandler start) {
-  startDoctypeDeclHandler = start;
-}
-
-void XMLCALL
-XML_SetEndDoctypeDeclHandler(XML_Parser parser,
-                             XML_EndDoctypeDeclHandler end) {
-  endDoctypeDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
-                                 XML_UnparsedEntityDeclHandler handler)
-{
-  unparsedEntityDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetNotationDeclHandler(XML_Parser parser,
-                           XML_NotationDeclHandler handler)
-{
-  notationDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetNamespaceDeclHandler(XML_Parser parser,
-                            XML_StartNamespaceDeclHandler start,
-                            XML_EndNamespaceDeclHandler end)
-{
-  startNamespaceDeclHandler = start;
-  endNamespaceDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetStartNamespaceDeclHandler(XML_Parser parser,
-                                 XML_StartNamespaceDeclHandler start) {
-  startNamespaceDeclHandler = start;
-}
-
-void XMLCALL
-XML_SetEndNamespaceDeclHandler(XML_Parser parser,
-                               XML_EndNamespaceDeclHandler end) {
-  endNamespaceDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetNotStandaloneHandler(XML_Parser parser,
-                            XML_NotStandaloneHandler handler)
-{
-  notStandaloneHandler = handler;
-}
-
-void XMLCALL
-XML_SetExternalEntityRefHandler(XML_Parser parser,
-                                XML_ExternalEntityRefHandler handler)
-{
-  externalEntityRefHandler = handler;
-}
-
-void XMLCALL
-XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg)
-{
-  if (arg)
-    externalEntityRefHandlerArg = (XML_Parser)arg;
-  else
-    externalEntityRefHandlerArg = parser;
-}
-
-void XMLCALL
-XML_SetSkippedEntityHandler(XML_Parser parser,
-                            XML_SkippedEntityHandler handler)
-{
-  skippedEntityHandler = handler;
-}
-
-void XMLCALL
-XML_SetUnknownEncodingHandler(XML_Parser parser,
-                              XML_UnknownEncodingHandler handler,
-                              void *data)
-{
-  unknownEncodingHandler = handler;
-  unknownEncodingHandlerData = data;
-}
-
-void XMLCALL
-XML_SetElementDeclHandler(XML_Parser parser,
-                          XML_ElementDeclHandler eldecl)
-{
-  elementDeclHandler = eldecl;
-}
-
-void XMLCALL
-XML_SetAttlistDeclHandler(XML_Parser parser,
-                          XML_AttlistDeclHandler attdecl)
-{
-  attlistDeclHandler = attdecl;
-}
-
-void XMLCALL
-XML_SetEntityDeclHandler(XML_Parser parser,
-                         XML_EntityDeclHandler handler)
-{
-  entityDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetXmlDeclHandler(XML_Parser parser,
-                      XML_XmlDeclHandler handler) {
-  xmlDeclHandler = handler;
-}
-
-int XMLCALL
-XML_SetParamEntityParsing(XML_Parser parser,
-                          enum XML_ParamEntityParsing peParsing)
-{
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return 0;
-#ifdef XML_DTD
-  paramEntityParsing = peParsing;
-  return 1;
-#else
-  return peParsing == XML_PARAM_ENTITY_PARSING_NEVER;
-#endif
-}
-
-int XMLCALL
-XML_SetHashSalt(XML_Parser parser,
-                unsigned long hash_salt)
-{
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return 0;
-  hash_secret_salt = hash_salt;
-  return 1;
-}
-
-enum XML_Status XMLCALL
-XML_Parse(XML_Parser parser, const char *s, int len, int isFinal)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return XML_STATUS_ERROR;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  case XML_INITIALIZED:
-    if (parentParser == NULL && !startParsing(parser)) {
-      errorCode = XML_ERROR_NO_MEMORY;
-      return XML_STATUS_ERROR;
-    }
-  default:
-    ps_parsing = XML_PARSING;
-  }
-
-  if (len == 0) {
-    ps_finalBuffer = (XML_Bool)isFinal;
-    if (!isFinal)
-      return XML_STATUS_OK;
-    positionPtr = bufferPtr;
-    parseEndPtr = bufferEnd;
-
-    /* If data are left over from last buffer, and we now know that these
-       data are the final chunk of input, then we have to check them again
-       to detect errors based on that fact.
-    */
-    errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
-
-    if (errorCode == XML_ERROR_NONE) {
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-        positionPtr = bufferPtr;
-        return XML_STATUS_SUSPENDED;
-      case XML_INITIALIZED:
-      case XML_PARSING:
-        ps_parsing = XML_FINISHED;
-        /* fall through */
-      default:
-        return XML_STATUS_OK;
-      }
-    }
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-#ifndef XML_CONTEXT_BYTES
-  else if (bufferPtr == bufferEnd) {
-    const char *end;
-    int nLeftOver;
-    enum XML_Error result;
-    parseEndByteIndex += len;
-    positionPtr = s;
-    ps_finalBuffer = (XML_Bool)isFinal;
-
-    errorCode = processor(parser, s, parseEndPtr = s + len, &end);
-
-    if (errorCode != XML_ERROR_NONE) {
-      eventEndPtr = eventPtr;
-      processor = errorProcessor;
-      return XML_STATUS_ERROR;
-    }
-    else {
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        result = XML_STATUS_SUSPENDED;
-        break;
-      case XML_INITIALIZED:
-      case XML_PARSING:
-        if (isFinal) {
-          ps_parsing = XML_FINISHED;
-          return XML_STATUS_OK;
-        }
-      /* fall through */
-      default:
-        result = XML_STATUS_OK;
-      }
-    }
-
-    XmlUpdatePosition(encoding, positionPtr, end, &position);
-    nLeftOver = s + len - end;
-    if (nLeftOver) {
-      if (buffer == NULL || nLeftOver > bufferLim - buffer) {
-        /* FIXME avoid integer overflow */
-        char *temp;
-        temp = (buffer == NULL
-                ? (char *)MALLOC(len * 2)
-                : (char *)REALLOC(buffer, len * 2));
-        if (temp == NULL) {
-          errorCode = XML_ERROR_NO_MEMORY;
-          eventPtr = eventEndPtr = NULL;
-          processor = errorProcessor;
-          return XML_STATUS_ERROR;
-        }
-        buffer = temp;
-        bufferLim = buffer + len * 2;
-      }
-      memcpy(buffer, end, nLeftOver);
-    }
-    bufferPtr = buffer;
-    bufferEnd = buffer + nLeftOver;
-    positionPtr = bufferPtr;
-    parseEndPtr = bufferEnd;
-    eventPtr = bufferPtr;
-    eventEndPtr = bufferPtr;
-    return result;
-  }
-#endif  /* not defined XML_CONTEXT_BYTES */
-  else {
-    void *buff = XML_GetBuffer(parser, len);
-    if (buff == NULL)
-      return XML_STATUS_ERROR;
-    else {
-      memcpy(buff, s, len);
-      return XML_ParseBuffer(parser, len, isFinal);
-    }
-  }
-}
-
-enum XML_Status XMLCALL
-XML_ParseBuffer(XML_Parser parser, int len, int isFinal)
-{
-  const char *start;
-  enum XML_Status result = XML_STATUS_OK;
-
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return XML_STATUS_ERROR;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  case XML_INITIALIZED:
-    if (parentParser == NULL && !startParsing(parser)) {
-      errorCode = XML_ERROR_NO_MEMORY;
-      return XML_STATUS_ERROR;
-    }
-  default:
-    ps_parsing = XML_PARSING;
-  }
-
-  start = bufferPtr;
-  positionPtr = start;
-  bufferEnd += len;
-  parseEndPtr = bufferEnd;
-  parseEndByteIndex += len;
-  ps_finalBuffer = (XML_Bool)isFinal;
-
-  errorCode = processor(parser, start, parseEndPtr, &bufferPtr);
-
-  if (errorCode != XML_ERROR_NONE) {
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-  else {
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      result = XML_STATUS_SUSPENDED;
-      break;
-    case XML_INITIALIZED:
-    case XML_PARSING:
-      if (isFinal) {
-        ps_parsing = XML_FINISHED;
-        return result;
-      }
-    default: ;  /* should not happen */
-    }
-  }
-
-  XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-  positionPtr = bufferPtr;
-  return result;
-}
-
-void * XMLCALL
-XML_GetBuffer(XML_Parser parser, int len)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return NULL;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return NULL;
-  default: ;
-  }
-
-  if (len > bufferLim - bufferEnd) {
-    /* FIXME avoid integer overflow */
-    int neededSize = len + (int)(bufferEnd - bufferPtr);
-#ifdef XML_CONTEXT_BYTES
-    int keep = (int)(bufferPtr - buffer);
-
-    if (keep > XML_CONTEXT_BYTES)
-      keep = XML_CONTEXT_BYTES;
-    neededSize += keep;
-#endif  /* defined XML_CONTEXT_BYTES */
-    if (neededSize  <= bufferLim - buffer) {
-#ifdef XML_CONTEXT_BYTES
-      if (keep < bufferPtr - buffer) {
-        int offset = (int)(bufferPtr - buffer) - keep;
-        memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep);
-        bufferEnd -= offset;
-        bufferPtr -= offset;
-      }
-#else
-      memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
-      bufferEnd = buffer + (bufferEnd - bufferPtr);
-      bufferPtr = buffer;
-#endif  /* not defined XML_CONTEXT_BYTES */
-    }
-    else {
-      char *newBuf;
-      int bufferSize = (int)(bufferLim - bufferPtr);
-      if (bufferSize == 0)
-        bufferSize = INIT_BUFFER_SIZE;
-      do {
-        bufferSize *= 2;
-      } while (bufferSize < neededSize);
-      newBuf = (char *)MALLOC(bufferSize);
-      if (newBuf == 0) {
-        errorCode = XML_ERROR_NO_MEMORY;
-        return NULL;
-      }
-      bufferLim = newBuf + bufferSize;
-#ifdef XML_CONTEXT_BYTES
-      if (bufferPtr) {
-        int keep = (int)(bufferPtr - buffer);
-        if (keep > XML_CONTEXT_BYTES)
-          keep = XML_CONTEXT_BYTES;
-        memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep);
-        FREE(buffer);
-        buffer = newBuf;
-        bufferEnd = buffer + (bufferEnd - bufferPtr) + keep;
-        bufferPtr = buffer + keep;
-      }
-      else {
-        bufferEnd = newBuf + (bufferEnd - bufferPtr);
-        bufferPtr = buffer = newBuf;
-      }
-#else
-      if (bufferPtr) {
-        memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
-        FREE(buffer);
-      }
-      bufferEnd = newBuf + (bufferEnd - bufferPtr);
-      bufferPtr = buffer = newBuf;
-#endif  /* not defined XML_CONTEXT_BYTES */
-    }
-    eventPtr = eventEndPtr = NULL;
-    positionPtr = NULL;
-  }
-  return bufferEnd;
-}
-
-enum XML_Status XMLCALL
-XML_StopParser(XML_Parser parser, XML_Bool resumable)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    if (resumable) {
-      errorCode = XML_ERROR_SUSPENDED;
-      return XML_STATUS_ERROR;
-    }
-    ps_parsing = XML_FINISHED;
-    break;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  default:
-    if (resumable) {
-#ifdef XML_DTD
-      if (isParamEntity) {
-        errorCode = XML_ERROR_SUSPEND_PE;
-        return XML_STATUS_ERROR;
-      }
-#endif
-      ps_parsing = XML_SUSPENDED;
-    }
-    else
-      ps_parsing = XML_FINISHED;
-  }
-  return XML_STATUS_OK;
-}
-
-enum XML_Status XMLCALL
-XML_ResumeParser(XML_Parser parser)
-{
-  enum XML_Status result = XML_STATUS_OK;
-
-  if (ps_parsing != XML_SUSPENDED) {
-    errorCode = XML_ERROR_NOT_SUSPENDED;
-    return XML_STATUS_ERROR;
-  }
-  ps_parsing = XML_PARSING;
-
-  errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
-
-  if (errorCode != XML_ERROR_NONE) {
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-  else {
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      result = XML_STATUS_SUSPENDED;
-      break;
-    case XML_INITIALIZED:
-    case XML_PARSING:
-      if (ps_finalBuffer) {
-        ps_parsing = XML_FINISHED;
-        return result;
-      }
-    default: ;
-    }
-  }
-
-  XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-  positionPtr = bufferPtr;
-  return result;
-}
-
-void XMLCALL
-XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status)
-{
-  assert(status != NULL);
-  *status = parser->m_parsingStatus;
-}
-
-enum XML_Error XMLCALL
-XML_GetErrorCode(XML_Parser parser)
-{
-  return errorCode;
-}
-
-XML_Index XMLCALL
-XML_GetCurrentByteIndex(XML_Parser parser)
-{
-  if (eventPtr)
-    return parseEndByteIndex - (parseEndPtr - eventPtr);
-  return -1;
-}
-
-int XMLCALL
-XML_GetCurrentByteCount(XML_Parser parser)
-{
-  if (eventEndPtr && eventPtr)
-    return (int)(eventEndPtr - eventPtr);
-  return 0;
-}
-
-const char * XMLCALL
-XML_GetInputContext(XML_Parser parser, int *offset, int *size)
-{
-#ifdef XML_CONTEXT_BYTES
-  if (eventPtr && buffer) {
-    *offset = (int)(eventPtr - buffer);
-    *size   = (int)(bufferEnd - buffer);
-    return buffer;
-  }
-#endif /* defined XML_CONTEXT_BYTES */
-  return (char *) 0;
-}
-
-XML_Size XMLCALL
-XML_GetCurrentLineNumber(XML_Parser parser)
-{
-  if (eventPtr && eventPtr >= positionPtr) {
-    XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
-    positionPtr = eventPtr;
-  }
-  return position.lineNumber + 1;
-}
-
-XML_Size XMLCALL
-XML_GetCurrentColumnNumber(XML_Parser parser)
-{
-  if (eventPtr && eventPtr >= positionPtr) {
-    XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
-    positionPtr = eventPtr;
-  }
-  return position.columnNumber;
-}
-
-void XMLCALL
-XML_FreeContentModel(XML_Parser parser, XML_Content *model)
-{
-  FREE(model);
-}
-
-void * XMLCALL
-XML_MemMalloc(XML_Parser parser, size_t size)
-{
-  return MALLOC(size);
-}
-
-void * XMLCALL
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size)
-{
-  return REALLOC(ptr, size);
-}
-
-void XMLCALL
-XML_MemFree(XML_Parser parser, void *ptr)
-{
-  FREE(ptr);
-}
-
-void XMLCALL
-XML_DefaultCurrent(XML_Parser parser)
-{
-  if (defaultHandler) {
-    if (openInternalEntities)
-      reportDefault(parser,
-                    internalEncoding,
-                    openInternalEntities->internalEventPtr,
-                    openInternalEntities->internalEventEndPtr);
-    else
-      reportDefault(parser, encoding, eventPtr, eventEndPtr);
-  }
-}
-
-const XML_LChar * XMLCALL
-XML_ErrorString(enum XML_Error code)
-{
-  static const XML_LChar* const message[] = {
-    0,
-    XML_L("out of memory"),
-    XML_L("syntax error"),
-    XML_L("no element found"),
-    XML_L("not well-formed (invalid token)"),
-    XML_L("unclosed token"),
-    XML_L("partial character"),
-    XML_L("mismatched tag"),
-    XML_L("duplicate attribute"),
-    XML_L("junk after document element"),
-    XML_L("illegal parameter entity reference"),
-    XML_L("undefined entity"),
-    XML_L("recursive entity reference"),
-    XML_L("asynchronous entity"),
-    XML_L("reference to invalid character number"),
-    XML_L("reference to binary entity"),
-    XML_L("reference to external entity in attribute"),
-    XML_L("XML or text declaration not at start of entity"),
-    XML_L("unknown encoding"),
-    XML_L("encoding specified in XML declaration is incorrect"),
-    XML_L("unclosed CDATA section"),
-    XML_L("error in processing external entity reference"),
-    XML_L("document is not standalone"),
-    XML_L("unexpected parser state - please send a bug report"),
-    XML_L("entity declared in parameter entity"),
-    XML_L("requested feature requires XML_DTD support in Expat"),
-    XML_L("cannot change setting once parsing has begun"),
-    XML_L("unbound prefix"),
-    XML_L("must not undeclare prefix"),
-    XML_L("incomplete markup in parameter entity"),
-    XML_L("XML declaration not well-formed"),
-    XML_L("text declaration not well-formed"),
-    XML_L("illegal character(s) in public id"),
-    XML_L("parser suspended"),
-    XML_L("parser not suspended"),
-    XML_L("parsing aborted"),
-    XML_L("parsing finished"),
-    XML_L("cannot suspend in external parameter entity"),
-    XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"),
-    XML_L("reserved prefix (xmlns) must not be declared or undeclared"),
-    XML_L("prefix must not be bound to one of the reserved namespace names")
-  };
-  if (code > 0 && code < sizeof(message)/sizeof(message[0]))
-    return message[code];
-  return NULL;
-}
-
-const XML_LChar * XMLCALL
-XML_ExpatVersion(void) {
-
-  /* V1 is used to string-ize the version number. However, it would
-     string-ize the actual version macro *names* unless we get them
-     substituted before being passed to V1. CPP is defined to expand
-     a macro, then rescan for more expansions. Thus, we use V2 to expand
-     the version macros, then CPP will expand the resulting V1() macro
-     with the correct numerals. */
-  /* ### I'm assuming cpp is portable in this respect... */
-
-#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c)
-#define V2(a,b,c) XML_L("expat_")V1(a,b,c)
-
-  return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION);
-
-#undef V1
-#undef V2
-}
-
-XML_Expat_Version XMLCALL
-XML_ExpatVersionInfo(void)
-{
-  XML_Expat_Version version;
-
-  version.major = XML_MAJOR_VERSION;
-  version.minor = XML_MINOR_VERSION;
-  version.micro = XML_MICRO_VERSION;
-
-  return version;
-}
-
-const XML_Feature * XMLCALL
-XML_GetFeatureList(void)
-{
-  static const XML_Feature features[] = {
-    {XML_FEATURE_SIZEOF_XML_CHAR,  XML_L("sizeof(XML_Char)"),
-     sizeof(XML_Char)},
-    {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"),
-     sizeof(XML_LChar)},
-#ifdef XML_UNICODE
-    {XML_FEATURE_UNICODE,          XML_L("XML_UNICODE"), 0},
-#endif
-#ifdef XML_UNICODE_WCHAR_T
-    {XML_FEATURE_UNICODE_WCHAR_T,  XML_L("XML_UNICODE_WCHAR_T"), 0},
-#endif
-#ifdef XML_DTD
-    {XML_FEATURE_DTD,              XML_L("XML_DTD"), 0},
-#endif
-#ifdef XML_CONTEXT_BYTES
-    {XML_FEATURE_CONTEXT_BYTES,    XML_L("XML_CONTEXT_BYTES"),
-     XML_CONTEXT_BYTES},
-#endif
-#ifdef XML_MIN_SIZE
-    {XML_FEATURE_MIN_SIZE,         XML_L("XML_MIN_SIZE"), 0},
-#endif
-#ifdef XML_NS
-    {XML_FEATURE_NS,               XML_L("XML_NS"), 0},
-#endif
-#ifdef XML_LARGE_SIZE
-    {XML_FEATURE_LARGE_SIZE,       XML_L("XML_LARGE_SIZE"), 0},
-#endif
-#ifdef XML_ATTR_INFO
-    {XML_FEATURE_ATTR_INFO,        XML_L("XML_ATTR_INFO"), 0},
-#endif
-    {XML_FEATURE_END,              NULL, 0}
-  };
-
-  return features;
-}
-
-/* Initially tag->rawName always points into the parse buffer;
-   for those TAG instances opened while the current parse buffer was
-   processed, and not yet closed, we need to store tag->rawName in a more
-   permanent location, since the parse buffer is about to be discarded.
-*/
-static XML_Bool
-storeRawNames(XML_Parser parser)
-{
-  TAG *tag = tagStack;
-  while (tag) {
-    int bufSize;
-    int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1);
-    char *rawNameBuf = tag->buf + nameLen;
-    /* Stop if already stored.  Since tagStack is a stack, we can stop
-       at the first entry that has already been copied; everything
-       below it in the stack is already been accounted for in a
-       previous call to this function.
-    */
-    if (tag->rawName == rawNameBuf)
-      break;
-    /* For re-use purposes we need to ensure that the
-       size of tag->buf is a multiple of sizeof(XML_Char).
-    */
-    bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
-    if (bufSize > tag->bufEnd - tag->buf) {
-      char *temp = (char *)REALLOC(tag->buf, bufSize);
-      if (temp == NULL)
-        return XML_FALSE;
-      /* if tag->name.str points to tag->buf (only when namespace
-         processing is off) then we have to update it
-      */
-      if (tag->name.str == (XML_Char *)tag->buf)
-        tag->name.str = (XML_Char *)temp;
-      /* if tag->name.localPart is set (when namespace processing is on)
-         then update it as well, since it will always point into tag->buf
-      */
-      if (tag->name.localPart)
-        tag->name.localPart = (XML_Char *)temp + (tag->name.localPart -
-                                                  (XML_Char *)tag->buf);
-      tag->buf = temp;
-      tag->bufEnd = temp + bufSize;
-      rawNameBuf = temp + nameLen;
-    }
-    memcpy(rawNameBuf, tag->rawName, tag->rawNameLength);
-    tag->rawName = rawNameBuf;
-    tag = tag->parent;
-  }
-  return XML_TRUE;
-}
-
-static enum XML_Error PTRCALL
-contentProcessor(XML_Parser parser,
-                 const char *start,
-                 const char *end,
-                 const char **endPtr)
-{
-  enum XML_Error result = doContent(parser, 0, encoding, start, end,
-                                    endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result == XML_ERROR_NONE) {
-    if (!storeRawNames(parser))
-      return XML_ERROR_NO_MEMORY;
-  }
-  return result;
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor(XML_Parser parser,
-                            const char *start,
-                            const char *end,
-                            const char **endPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-  processor = externalEntityInitProcessor2;
-  return externalEntityInitProcessor2(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor2(XML_Parser parser,
-                             const char *start,
-                             const char *end,
-                             const char **endPtr)
-{
-  const char *next = start; /* XmlContentTok doesn't always set the last arg */
-  int tok = XmlContentTok(encoding, start, end, &next);
-  switch (tok) {
-  case XML_TOK_BOM:
-    /* If we are at the end of the buffer, this would cause the next stage,
-       i.e. externalEntityInitProcessor3, to pass control directly to
-       doContent (by detecting XML_TOK_NONE) without processing any xml text
-       declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent.
-    */
-    if (next == end && !ps_finalBuffer) {
-      *endPtr = next;
-      return XML_ERROR_NONE;
-    }
-    start = next;
-    break;
-  case XML_TOK_PARTIAL:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    eventPtr = start;
-    return XML_ERROR_UNCLOSED_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    eventPtr = start;
-    return XML_ERROR_PARTIAL_CHAR;
-  }
-  processor = externalEntityInitProcessor3;
-  return externalEntityInitProcessor3(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor3(XML_Parser parser,
-                             const char *start,
-                             const char *end,
-                             const char **endPtr)
-{
-  int tok;
-  const char *next = start; /* XmlContentTok doesn't always set the last arg */
-  eventPtr = start;
-  tok = XmlContentTok(encoding, start, end, &next);
-  eventEndPtr = next;
-
-  switch (tok) {
-  case XML_TOK_XML_DECL:
-    {
-      enum XML_Error result;
-      result = processXmlDecl(parser, 1, start, next);
-      if (result != XML_ERROR_NONE)
-        return result;
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        *endPtr = next;
-        return XML_ERROR_NONE;
-      case XML_FINISHED:
-        return XML_ERROR_ABORTED;
-      default:
-        start = next;
-      }
-    }
-    break;
-  case XML_TOK_PARTIAL:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_UNCLOSED_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_PARTIAL_CHAR;
-  }
-  processor = externalEntityContentProcessor;
-  tagLevel = 1;
-  return externalEntityContentProcessor(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityContentProcessor(XML_Parser parser,
-                               const char *start,
-                               const char *end,
-                               const char **endPtr)
-{
-  enum XML_Error result = doContent(parser, 1, encoding, start, end,
-                                    endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result == XML_ERROR_NONE) {
-    if (!storeRawNames(parser))
-      return XML_ERROR_NO_MEMORY;
-  }
-  return result;
-}
-
-static enum XML_Error
-doContent(XML_Parser parser,
-          int startTagLevel,
-          const ENCODING *enc,
-          const char *s,
-          const char *end,
-          const char **nextPtr,
-          XML_Bool haveMore)
-{
-  /* save one level of indirection */
-  DTD * const dtd = _dtd;
-
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-
-  for (;;) {
-    const char *next = s; /* XmlContentTok doesn't always set the last arg */
-    int tok = XmlContentTok(enc, s, end, &next);
-    *eventEndPP = next;
-    switch (tok) {
-    case XML_TOK_TRAILING_CR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      *eventEndPP = end;
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, end);
-      /* We are at the end of the final buffer, should we check for
-         XML_SUSPENDED, XML_FINISHED?
-      */
-      if (startTagLevel == 0)
-        return XML_ERROR_NO_ELEMENTS;
-      if (tagLevel != startTagLevel)
-        return XML_ERROR_ASYNC_ENTITY;
-      *nextPtr = end;
-      return XML_ERROR_NONE;
-    case XML_TOK_NONE:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      if (startTagLevel > 0) {
-        if (tagLevel != startTagLevel)
-          return XML_ERROR_ASYNC_ENTITY;
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_NO_ELEMENTS;
-    case XML_TOK_INVALID:
-      *eventPP = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_ENTITY_REF:
-      {
-        const XML_Char *name;
-        ENTITY *entity;
-        XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
-                                              s + enc->minBytesPerChar,
-                                              next - enc->minBytesPerChar);
-        if (ch) {
-          if (characterDataHandler)
-            characterDataHandler(handlerArg, &ch, 1);
-          else if (defaultHandler)
-            reportDefault(parser, enc, s, next);
-          break;
-        }
-        name = poolStoreString(&dtd->pool, enc,
-                                s + enc->minBytesPerChar,
-                                next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0);
-        poolDiscard(&dtd->pool);
-        /* First, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal,
-           otherwise call the skipped entity or default handler.
-        */
-        if (!dtd->hasParamEntityRefs || dtd->standalone) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          else if (defaultHandler)
-            reportDefault(parser, enc, s, next);
-          break;
-        }
-        if (entity->open)
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        if (entity->notation)
-          return XML_ERROR_BINARY_ENTITY_REF;
-        if (entity->textPtr) {
-          enum XML_Error result;
-          if (!defaultExpandInternalEntities) {
-            if (skippedEntityHandler)
-              skippedEntityHandler(handlerArg, entity->name, 0);
-            else if (defaultHandler)
-              reportDefault(parser, enc, s, next);
-            break;
-          }
-          result = processInternalEntity(parser, entity, XML_FALSE);
-          if (result != XML_ERROR_NONE)
-            return result;
-        }
-        else if (externalEntityRefHandler) {
-          const XML_Char *context;
-          entity->open = XML_TRUE;
-          context = getContext(parser);
-          entity->open = XML_FALSE;
-          if (!context)
-            return XML_ERROR_NO_MEMORY;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        context,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          poolDiscard(&tempPool);
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        break;
-      }
-    case XML_TOK_START_TAG_NO_ATTS:
-      /* fall through */
-    case XML_TOK_START_TAG_WITH_ATTS:
-      {
-        TAG *tag;
-        enum XML_Error result;
-        XML_Char *toPtr;
-        if (freeTagList) {
-          tag = freeTagList;
-          freeTagList = freeTagList->parent;
-        }
-        else {
-          tag = (TAG *)MALLOC(sizeof(TAG));
-          if (!tag)
-            return XML_ERROR_NO_MEMORY;
-          tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE);
-          if (!tag->buf) {
-            FREE(tag);
-            return XML_ERROR_NO_MEMORY;
-          }
-          tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE;
-        }
-        tag->bindings = NULL;
-        tag->parent = tagStack;
-        tagStack = tag;
-        tag->name.localPart = NULL;
-        tag->name.prefix = NULL;
-        tag->rawName = s + enc->minBytesPerChar;
-        tag->rawNameLength = XmlNameLength(enc, tag->rawName);
-        ++tagLevel;
-        {
-          const char *rawNameEnd = tag->rawName + tag->rawNameLength;
-          const char *fromPtr = tag->rawName;
-          toPtr = (XML_Char *)tag->buf;
-          for (;;) {
-            int bufSize;
-            int convLen;
-            XmlConvert(enc,
-                       &fromPtr, rawNameEnd,
-                       (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1);
-            convLen = (int)(toPtr - (XML_Char *)tag->buf);
-            if (fromPtr == rawNameEnd) {
-              tag->name.strLen = convLen;
-              break;
-            }
-            bufSize = (int)(tag->bufEnd - tag->buf) << 1;
-            {
-              char *temp = (char *)REALLOC(tag->buf, bufSize);
-              if (temp == NULL)
-                return XML_ERROR_NO_MEMORY;
-              tag->buf = temp;
-              tag->bufEnd = temp + bufSize;
-              toPtr = (XML_Char *)temp + convLen;
-            }
-          }
-        }
-        tag->name.str = (XML_Char *)tag->buf;
-        *toPtr = XML_T('\0');
-        result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings));
-        if (result)
-          return result;
-        if (startElementHandler)
-          startElementHandler(handlerArg, tag->name.str,
-                              (const XML_Char **)atts);
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        poolClear(&tempPool);
-        break;
-      }
-    case XML_TOK_EMPTY_ELEMENT_NO_ATTS:
-      /* fall through */
-    case XML_TOK_EMPTY_ELEMENT_WITH_ATTS:
-      {
-        const char *rawName = s + enc->minBytesPerChar;
-        enum XML_Error result;
-        BINDING *bindings = NULL;
-        XML_Bool noElmHandlers = XML_TRUE;
-        TAG_NAME name;
-        name.str = poolStoreString(&tempPool, enc, rawName,
-                                   rawName + XmlNameLength(enc, rawName));
-        if (!name.str)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        result = storeAtts(parser, enc, s, &name, &bindings);
-        if (result)
-          return result;
-        poolFinish(&tempPool);
-        if (startElementHandler) {
-          startElementHandler(handlerArg, name.str, (const XML_Char **)atts);
-          noElmHandlers = XML_FALSE;
-        }
-        if (endElementHandler) {
-          if (startElementHandler)
-            *eventPP = *eventEndPP;
-          endElementHandler(handlerArg, name.str);
-          noElmHandlers = XML_FALSE;
-        }
-        if (noElmHandlers && defaultHandler)
-          reportDefault(parser, enc, s, next);
-        poolClear(&tempPool);
-        while (bindings) {
-          BINDING *b = bindings;
-          if (endNamespaceDeclHandler)
-            endNamespaceDeclHandler(handlerArg, b->prefix->name);
-          bindings = bindings->nextTagBinding;
-          b->nextTagBinding = freeBindingList;
-          freeBindingList = b;
-          b->prefix->binding = b->prevPrefixBinding;
-        }
-      }
-      if (tagLevel == 0)
-        return epilogProcessor(parser, next, end, nextPtr);
-      break;
-    case XML_TOK_END_TAG:
-      if (tagLevel == startTagLevel)
-        return XML_ERROR_ASYNC_ENTITY;
-      else {
-        int len;
-        const char *rawName;
-        TAG *tag = tagStack;
-        tagStack = tag->parent;
-        tag->parent = freeTagList;
-        freeTagList = tag;
-        rawName = s + enc->minBytesPerChar*2;
-        len = XmlNameLength(enc, rawName);
-        if (len != tag->rawNameLength
-            || memcmp(tag->rawName, rawName, len) != 0) {
-          *eventPP = rawName;
-          return XML_ERROR_TAG_MISMATCH;
-        }
-        --tagLevel;
-        if (endElementHandler) {
-          const XML_Char *localPart;
-          const XML_Char *prefix;
-          XML_Char *uri;
-          localPart = tag->name.localPart;
-          if (ns && localPart) {
-            /* localPart and prefix may have been overwritten in
-               tag->name.str, since this points to the binding->uri
-               buffer which gets re-used; so we have to add them again
-            */
-            uri = (XML_Char *)tag->name.str + tag->name.uriLen;
-            /* don't need to check for space - already done in storeAtts() */
-            while (*localPart) *uri++ = *localPart++;
-            prefix = (XML_Char *)tag->name.prefix;
-            if (ns_triplets && prefix) {
-              *uri++ = namespaceSeparator;
-              while (*prefix) *uri++ = *prefix++;
-             }
-            *uri = XML_T('\0');
-          }
-          endElementHandler(handlerArg, tag->name.str);
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        while (tag->bindings) {
-          BINDING *b = tag->bindings;
-          if (endNamespaceDeclHandler)
-            endNamespaceDeclHandler(handlerArg, b->prefix->name);
-          tag->bindings = tag->bindings->nextTagBinding;
-          b->nextTagBinding = freeBindingList;
-          freeBindingList = b;
-          b->prefix->binding = b->prevPrefixBinding;
-        }
-        if (tagLevel == 0)
-          return epilogProcessor(parser, next, end, nextPtr);
-      }
-      break;
-    case XML_TOK_CHAR_REF:
-      {
-        int n = XmlCharRefNumber(enc, s);
-        if (n < 0)
-          return XML_ERROR_BAD_CHAR_REF;
-        if (characterDataHandler) {
-          XML_Char buf[XML_ENCODE_MAX];
-          characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf));
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-      }
-      break;
-    case XML_TOK_XML_DECL:
-      return XML_ERROR_MISPLACED_XML_PI;
-    case XML_TOK_DATA_NEWLINE:
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_CDATA_SECT_OPEN:
-      {
-        enum XML_Error result;
-        if (startCdataSectionHandler)
-          startCdataSectionHandler(handlerArg);
-#if 0
-        /* Suppose you doing a transformation on a document that involves
-           changing only the character data.  You set up a defaultHandler
-           and a characterDataHandler.  The defaultHandler simply copies
-           characters through.  The characterDataHandler does the
-           transformation and writes the characters out escaping them as
-           necessary.  This case will fail to work if we leave out the
-           following two lines (because & and < inside CDATA sections will
-           be incorrectly escaped).
-
-           However, now we have a start/endCdataSectionHandler, so it seems
-           easier to let the user deal with this.
-        */
-        else if (characterDataHandler)
-          characterDataHandler(handlerArg, dataBuf, 0);
-#endif
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore);
-        if (result != XML_ERROR_NONE)
-          return result;
-        else if (!next) {
-          processor = cdataSectionProcessor;
-          return result;
-        }
-      }
-      break;
-    case XML_TOK_TRAILING_RSQB:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      if (characterDataHandler) {
-        if (MUST_CONVERT(enc, s)) {
-          ICHAR *dataPtr = (ICHAR *)dataBuf;
-          XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
-          characterDataHandler(handlerArg, dataBuf,
-                               (int)(dataPtr - (ICHAR *)dataBuf));
-        }
-        else
-          characterDataHandler(handlerArg,
-                               (XML_Char *)s,
-                               (int)((XML_Char *)end - (XML_Char *)s));
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, end);
-      /* We are at the end of the final buffer, should we check for
-         XML_SUSPENDED, XML_FINISHED?
-      */
-      if (startTagLevel == 0) {
-        *eventPP = end;
-        return XML_ERROR_NO_ELEMENTS;
-      }
-      if (tagLevel != startTagLevel) {
-        *eventPP = end;
-        return XML_ERROR_ASYNC_ENTITY;
-      }
-      *nextPtr = end;
-      return XML_ERROR_NONE;
-    case XML_TOK_DATA_CHARS:
-      {
-        XML_CharacterDataHandler charDataHandler = characterDataHandler;
-        if (charDataHandler) {
-          if (MUST_CONVERT(enc, s)) {
-            for (;;) {
-              ICHAR *dataPtr = (ICHAR *)dataBuf;
-              XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
-              *eventEndPP = s;
-              charDataHandler(handlerArg, dataBuf,
-                              (int)(dataPtr - (ICHAR *)dataBuf));
-              if (s == next)
-                break;
-              *eventPP = s;
-            }
-          }
-          else
-            charDataHandler(handlerArg,
-                            (XML_Char *)s,
-                            (int)((XML_Char *)next - (XML_Char *)s));
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-      }
-      break;
-    case XML_TOK_PI:
-      if (!reportProcessingInstruction(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_COMMENT:
-      if (!reportComment(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    default:
-      if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    }
-    *eventPP = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-  /* not reached */
-}
-
-/* Precondition: all arguments must be non-NULL;
-   Purpose:
-   - normalize attributes
-   - check attributes for well-formedness
-   - generate namespace aware attribute names (URI, prefix)
-   - build list of attributes for startElementHandler
-   - default attributes
-   - process namespace declarations (check and report them)
-   - generate namespace aware element name (URI, prefix)
-*/
-static enum XML_Error
-storeAtts(XML_Parser parser, const ENCODING *enc,
-          const char *attStr, TAG_NAME *tagNamePtr,
-          BINDING **bindingsPtr)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  ELEMENT_TYPE *elementType;
-  int nDefaultAtts;
-  const XML_Char **appAtts;   /* the attribute list for the application */
-  int attIndex = 0;
-  int prefixLen;
-  int i;
-  int n;
-  XML_Char *uri;
-  int nPrefixes = 0;
-  BINDING *binding;
-  const XML_Char *localPart;
-
-  /* lookup the element type name */
-  elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0);
-  if (!elementType) {
-    const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str);
-    if (!name)
-      return XML_ERROR_NO_MEMORY;
-    elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name,
-                                         sizeof(ELEMENT_TYPE));
-    if (!elementType)
-      return XML_ERROR_NO_MEMORY;
-    if (ns && !setElementTypePrefix(parser, elementType))
-      return XML_ERROR_NO_MEMORY;
-  }
-  nDefaultAtts = elementType->nDefaultAtts;
-
-  /* get the attributes from the tokenizer */
-  n = XmlGetAttributes(enc, attStr, attsSize, atts);
-  if (n + nDefaultAtts > attsSize) {
-    int oldAttsSize = attsSize;
-    ATTRIBUTE *temp;
-#ifdef XML_ATTR_INFO
-    XML_AttrInfo *temp2;
-#endif
-    attsSize = n + nDefaultAtts + INIT_ATTS_SIZE;
-    temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE));
-    if (temp == NULL)
-      return XML_ERROR_NO_MEMORY;
-    atts = temp;
-#ifdef XML_ATTR_INFO
-    temp2 = (XML_AttrInfo *)REALLOC((void *)attInfo, attsSize * sizeof(XML_AttrInfo));
-    if (temp2 == NULL)
-      return XML_ERROR_NO_MEMORY;
-    attInfo = temp2;
-#endif
-    if (n > oldAttsSize)
-      XmlGetAttributes(enc, attStr, n, atts);
-  }
-
-  appAtts = (const XML_Char **)atts;
-  for (i = 0; i < n; i++) {
-    ATTRIBUTE *currAtt = &atts[i];
-#ifdef XML_ATTR_INFO
-    XML_AttrInfo *currAttInfo = &attInfo[i];
-#endif
-    /* add the name and value to the attribute list */
-    ATTRIBUTE_ID *attId = getAttributeId(parser, enc, currAtt->name,
-                                         currAtt->name
-                                         + XmlNameLength(enc, currAtt->name));
-    if (!attId)
-      return XML_ERROR_NO_MEMORY;
-#ifdef XML_ATTR_INFO
-    currAttInfo->nameStart = parseEndByteIndex - (parseEndPtr - currAtt->name);
-    currAttInfo->nameEnd = currAttInfo->nameStart +
-                           XmlNameLength(enc, currAtt->name);
-    currAttInfo->valueStart = parseEndByteIndex -
-                            (parseEndPtr - currAtt->valuePtr);
-    currAttInfo->valueEnd = parseEndByteIndex - (parseEndPtr - currAtt->valueEnd);
-#endif
-    /* Detect duplicate attributes by their QNames. This does not work when
-       namespace processing is turned on and different prefixes for the same
-       namespace are used. For this case we have a check further down.
-    */
-    if ((attId->name)[-1]) {
-      if (enc == encoding)
-        eventPtr = atts[i].name;
-      return XML_ERROR_DUPLICATE_ATTRIBUTE;
-    }
-    (attId->name)[-1] = 1;
-    appAtts[attIndex++] = attId->name;
-    if (!atts[i].normalized) {
-      enum XML_Error result;
-      XML_Bool isCdata = XML_TRUE;
-
-      /* figure out whether declared as other than CDATA */
-      if (attId->maybeTokenized) {
-        int j;
-        for (j = 0; j < nDefaultAtts; j++) {
-          if (attId == elementType->defaultAtts[j].id) {
-            isCdata = elementType->defaultAtts[j].isCdata;
-            break;
-          }
-        }
-      }
-
-      /* normalize the attribute value */
-      result = storeAttributeValue(parser, enc, isCdata,
-                                   atts[i].valuePtr, atts[i].valueEnd,
-                                   &tempPool);
-      if (result)
-        return result;
-      appAtts[attIndex] = poolStart(&tempPool);
-      poolFinish(&tempPool);
-    }
-    else {
-      /* the value did not need normalizing */
-      appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr,
-                                          atts[i].valueEnd);
-      if (appAtts[attIndex] == 0)
-        return XML_ERROR_NO_MEMORY;
-      poolFinish(&tempPool);
-    }
-    /* handle prefixed attribute names */
-    if (attId->prefix) {
-      if (attId->xmlns) {
-        /* deal with namespace declarations here */
-        enum XML_Error result = addBinding(parser, attId->prefix, attId,
-                                           appAtts[attIndex], bindingsPtr);
-        if (result)
-          return result;
-        --attIndex;
-      }
-      else {
-        /* deal with other prefixed names later */
-        attIndex++;
-        nPrefixes++;
-        (attId->name)[-1] = 2;
-      }
-    }
-    else
-      attIndex++;
-  }
-
-  /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */
-  nSpecifiedAtts = attIndex;
-  if (elementType->idAtt && (elementType->idAtt->name)[-1]) {
-    for (i = 0; i < attIndex; i += 2)
-      if (appAtts[i] == elementType->idAtt->name) {
-        idAttIndex = i;
-        break;
-      }
-  }
-  else
-    idAttIndex = -1;
-
-  /* do attribute defaulting */
-  for (i = 0; i < nDefaultAtts; i++) {
-    const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i;
-    if (!(da->id->name)[-1] && da->value) {
-      if (da->id->prefix) {
-        if (da->id->xmlns) {
-          enum XML_Error result = addBinding(parser, da->id->prefix, da->id,
-                                             da->value, bindingsPtr);
-          if (result)
-            return result;
-        }
-        else {
-          (da->id->name)[-1] = 2;
-          nPrefixes++;
-          appAtts[attIndex++] = da->id->name;
-          appAtts[attIndex++] = da->value;
-        }
-      }
-      else {
-        (da->id->name)[-1] = 1;
-        appAtts[attIndex++] = da->id->name;
-        appAtts[attIndex++] = da->value;
-      }
-    }
-  }
-  appAtts[attIndex] = 0;
-
-  /* expand prefixed attribute names, check for duplicates,
-     and clear flags that say whether attributes were specified */
-  i = 0;
-  if (nPrefixes) {
-    int j;  /* hash table index */
-    unsigned long version = nsAttsVersion;
-    int nsAttsSize = (int)1 << nsAttsPower;
-    /* size of hash table must be at least 2 * (# of prefixed attributes) */
-    if ((nPrefixes << 1) >> nsAttsPower) {  /* true for nsAttsPower = 0 */
-      NS_ATT *temp;
-      /* hash table size must also be a power of 2 and >= 8 */
-      while (nPrefixes >> nsAttsPower++);
-      if (nsAttsPower < 3)
-        nsAttsPower = 3;
-      nsAttsSize = (int)1 << nsAttsPower;
-      temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT));
-      if (!temp)
-        return XML_ERROR_NO_MEMORY;
-      nsAtts = temp;
-      version = 0;  /* force re-initialization of nsAtts hash table */
-    }
-    /* using a version flag saves us from initializing nsAtts every time */
-    if (!version) {  /* initialize version flags when version wraps around */
-      version = INIT_ATTS_VERSION;
-      for (j = nsAttsSize; j != 0; )
-        nsAtts[--j].version = version;
-    }
-    nsAttsVersion = --version;
-
-    /* expand prefixed names and check for duplicates */
-    for (; i < attIndex; i += 2) {
-      const XML_Char *s = appAtts[i];
-      if (s[-1] == 2) {  /* prefixed */
-        ATTRIBUTE_ID *id;
-        const BINDING *b;
-        unsigned long uriHash = hash_secret_salt;
-        ((XML_Char *)s)[-1] = 0;  /* clear flag */
-        id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0);
-        b = id->prefix->binding;
-        if (!b)
-          return XML_ERROR_UNBOUND_PREFIX;
-
-        /* as we expand the name we also calculate its hash value */
-        for (j = 0; j < b->uriLen; j++) {
-          const XML_Char c = b->uri[j];
-          if (!poolAppendChar(&tempPool, c))
-            return XML_ERROR_NO_MEMORY;
-          uriHash = CHAR_HASH(uriHash, c);
-        }
-        while (*s++ != XML_T(ASCII_COLON))
-          ;
-        do {  /* copies null terminator */
-          const XML_Char c = *s;
-          if (!poolAppendChar(&tempPool, *s))
-            return XML_ERROR_NO_MEMORY;
-          uriHash = CHAR_HASH(uriHash, c);
-        } while (*s++);
-
-        { /* Check hash table for duplicate of expanded name (uriName).
-             Derived from code in lookup(parser, HASH_TABLE *table, ...).
-          */
-          unsigned char step = 0;
-          unsigned long mask = nsAttsSize - 1;
-          j = uriHash & mask;  /* index into hash table */
-          while (nsAtts[j].version == version) {
-            /* for speed we compare stored hash values first */
-            if (uriHash == nsAtts[j].hash) {
-              const XML_Char *s1 = poolStart(&tempPool);
-              const XML_Char *s2 = nsAtts[j].uriName;
-              /* s1 is null terminated, but not s2 */
-              for (; *s1 == *s2 && *s1 != 0; s1++, s2++);
-              if (*s1 == 0)
-                return XML_ERROR_DUPLICATE_ATTRIBUTE;
-            }
-            if (!step)
-              step = PROBE_STEP(uriHash, mask, nsAttsPower);
-            j < step ? (j += nsAttsSize - step) : (j -= step);
-          }
-        }
-
-        if (ns_triplets) {  /* append namespace separator and prefix */
-          tempPool.ptr[-1] = namespaceSeparator;
-          s = b->prefix->name;
-          do {
-            if (!poolAppendChar(&tempPool, *s))
-              return XML_ERROR_NO_MEMORY;
-          } while (*s++);
-        }
-
-        /* store expanded name in attribute list */
-        s = poolStart(&tempPool);
-        poolFinish(&tempPool);
-        appAtts[i] = s;
-
-        /* fill empty slot with new version, uriName and hash value */
-        nsAtts[j].version = version;
-        nsAtts[j].hash = uriHash;
-        nsAtts[j].uriName = s;
-
-        if (!--nPrefixes) {
-          i += 2;
-          break;
-        }
-      }
-      else  /* not prefixed */
-        ((XML_Char *)s)[-1] = 0;  /* clear flag */
-    }
-  }
-  /* clear flags for the remaining attributes */
-  for (; i < attIndex; i += 2)
-    ((XML_Char *)(appAtts[i]))[-1] = 0;
-  for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding)
-    binding->attId->name[-1] = 0;
-
-  if (!ns)
-    return XML_ERROR_NONE;
-
-  /* expand the element type name */
-  if (elementType->prefix) {
-    binding = elementType->prefix->binding;
-    if (!binding)
-      return XML_ERROR_UNBOUND_PREFIX;
-    localPart = tagNamePtr->str;
-    while (*localPart++ != XML_T(ASCII_COLON))
-      ;
-  }
-  else if (dtd->defaultPrefix.binding) {
-    binding = dtd->defaultPrefix.binding;
-    localPart = tagNamePtr->str;
-  }
-  else
-    return XML_ERROR_NONE;
-  prefixLen = 0;
-  if (ns_triplets && binding->prefix->name) {
-    for (; binding->prefix->name[prefixLen++];)
-      ;  /* prefixLen includes null terminator */
-  }
-  tagNamePtr->localPart = localPart;
-  tagNamePtr->uriLen = binding->uriLen;
-  tagNamePtr->prefix = binding->prefix->name;
-  tagNamePtr->prefixLen = prefixLen;
-  for (i = 0; localPart[i++];)
-    ;  /* i includes null terminator */
-  n = i + binding->uriLen + prefixLen;
-  if (n > binding->uriAlloc) {
-    TAG *p;
-    uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char));
-    if (!uri)
-      return XML_ERROR_NO_MEMORY;
-    binding->uriAlloc = n + EXPAND_SPARE;
-    memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char));
-    for (p = tagStack; p; p = p->parent)
-      if (p->name.str == binding->uri)
-        p->name.str = uri;
-    FREE(binding->uri);
-    binding->uri = uri;
-  }
-  /* if namespaceSeparator != '\0' then uri includes it already */
-  uri = binding->uri + binding->uriLen;
-  memcpy(uri, localPart, i * sizeof(XML_Char));
-  /* we always have a namespace separator between localPart and prefix */
-  if (prefixLen) {
-    uri += i - 1;
-    *uri = namespaceSeparator;  /* replace null terminator */
-    memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char));
-  }
-  tagNamePtr->str = binding->uri;
-  return XML_ERROR_NONE;
-}
-
-/* addBinding() overwrites the value of prefix->binding without checking.
-   Therefore one must keep track of the old value outside of addBinding().
-*/
-static enum XML_Error
-addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
-           const XML_Char *uri, BINDING **bindingsPtr)
-{
-  static const XML_Char xmlNamespace[] = {
-    ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH,
-    ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD,
-    ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L,
-    ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH,
-    ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c,
-    ASCII_e, '\0'
-  };
-  static const int xmlLen =
-    (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1;
-  static const XML_Char xmlnsNamespace[] = {
-    ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH,
-    ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD,
-    ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0,
-    ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s,
-    ASCII_SLASH, '\0'
-  };
-  static const int xmlnsLen =
-    (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1;
-
-  XML_Bool mustBeXML = XML_FALSE;
-  XML_Bool isXML = XML_TRUE;
-  XML_Bool isXMLNS = XML_TRUE;
-
-  BINDING *b;
-  int len;
-
-  /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */
-  if (*uri == XML_T('\0') && prefix->name)
-    return XML_ERROR_UNDECLARING_PREFIX;
-
-  if (prefix->name
-      && prefix->name[0] == XML_T(ASCII_x)
-      && prefix->name[1] == XML_T(ASCII_m)
-      && prefix->name[2] == XML_T(ASCII_l)) {
-
-    /* Not allowed to bind xmlns */
-    if (prefix->name[3] == XML_T(ASCII_n)
-        && prefix->name[4] == XML_T(ASCII_s)
-        && prefix->name[5] == XML_T('\0'))
-      return XML_ERROR_RESERVED_PREFIX_XMLNS;
-
-    if (prefix->name[3] == XML_T('\0'))
-      mustBeXML = XML_TRUE;
-  }
-
-  for (len = 0; uri[len]; len++) {
-    if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len]))
-      isXML = XML_FALSE;
-
-    if (!mustBeXML && isXMLNS
-        && (len > xmlnsLen || uri[len] != xmlnsNamespace[len]))
-      isXMLNS = XML_FALSE;
-  }
-  isXML = isXML && len == xmlLen;
-  isXMLNS = isXMLNS && len == xmlnsLen;
-
-  if (mustBeXML != isXML)
-    return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML
-                     : XML_ERROR_RESERVED_NAMESPACE_URI;
-
-  if (isXMLNS)
-    return XML_ERROR_RESERVED_NAMESPACE_URI;
-
-  if (namespaceSeparator)
-    len++;
-  if (freeBindingList) {
-    b = freeBindingList;
-    if (len > b->uriAlloc) {
-      XML_Char *temp = (XML_Char *)REALLOC(b->uri,
-                          sizeof(XML_Char) * (len + EXPAND_SPARE));
-      if (temp == NULL)
-        return XML_ERROR_NO_MEMORY;
-      b->uri = temp;
-      b->uriAlloc = len + EXPAND_SPARE;
-    }
-    freeBindingList = b->nextTagBinding;
-  }
-  else {
-    b = (BINDING *)MALLOC(sizeof(BINDING));
-    if (!b)
-      return XML_ERROR_NO_MEMORY;
-    b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE));
-    if (!b->uri) {
-      FREE(b);
-      return XML_ERROR_NO_MEMORY;
-    }
-    b->uriAlloc = len + EXPAND_SPARE;
-  }
-  b->uriLen = len;
-  memcpy(b->uri, uri, len * sizeof(XML_Char));
-  if (namespaceSeparator)
-    b->uri[len - 1] = namespaceSeparator;
-  b->prefix = prefix;
-  b->attId = attId;
-  b->prevPrefixBinding = prefix->binding;
-  /* NULL binding when default namespace undeclared */
-  if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix)
-    prefix->binding = NULL;
-  else
-    prefix->binding = b;
-  b->nextTagBinding = *bindingsPtr;
-  *bindingsPtr = b;
-  /* if attId == NULL then we are not starting a namespace scope */
-  if (attId && startNamespaceDeclHandler)
-    startNamespaceDeclHandler(handlerArg, prefix->name,
-                              prefix->binding ? uri : 0);
-  return XML_ERROR_NONE;
-}
-
-/* The idea here is to avoid using stack for each CDATA section when
-   the whole file is parsed with one call.
-*/
-static enum XML_Error PTRCALL
-cdataSectionProcessor(XML_Parser parser,
-                      const char *start,
-                      const char *end,
-                      const char **endPtr)
-{
-  enum XML_Error result = doCdataSection(parser, encoding, &start, end,
-                                         endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result != XML_ERROR_NONE)
-    return result;
-  if (start) {
-    if (parentParser) {  /* we are parsing an external entity */
-      processor = externalEntityContentProcessor;
-      return externalEntityContentProcessor(parser, start, end, endPtr);
-    }
-    else {
-      processor = contentProcessor;
-      return contentProcessor(parser, start, end, endPtr);
-    }
-  }
-  return result;
-}
-
-/* startPtr gets set to non-null if the section is closed, and to null if
-   the section is not yet closed.
-*/
-static enum XML_Error
-doCdataSection(XML_Parser parser,
-               const ENCODING *enc,
-               const char **startPtr,
-               const char *end,
-               const char **nextPtr,
-               XML_Bool haveMore)
-{
-  const char *s = *startPtr;
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    *eventPP = s;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-  *startPtr = NULL;
-
-  for (;;) {
-    const char *next;
-    int tok = XmlCdataSectionTok(enc, s, end, &next);
-    *eventEndPP = next;
-    switch (tok) {
-    case XML_TOK_CDATA_SECT_CLOSE:
-      if (endCdataSectionHandler)
-        endCdataSectionHandler(handlerArg);
-#if 0
-      /* see comment under XML_TOK_CDATA_SECT_OPEN */
-      else if (characterDataHandler)
-        characterDataHandler(handlerArg, dataBuf, 0);
-#endif
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      *startPtr = next;
-      *nextPtr = next;
-      if (ps_parsing == XML_FINISHED)
-        return XML_ERROR_ABORTED;
-      else
-        return XML_ERROR_NONE;
-    case XML_TOK_DATA_NEWLINE:
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_DATA_CHARS:
-      {
-        XML_CharacterDataHandler charDataHandler = characterDataHandler;
-        if (charDataHandler) {
-          if (MUST_CONVERT(enc, s)) {
-            for (;;) {
-              ICHAR *dataPtr = (ICHAR *)dataBuf;
-              XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
-              *eventEndPP = next;
-              charDataHandler(handlerArg, dataBuf,
-                              (int)(dataPtr - (ICHAR *)dataBuf));
-              if (s == next)
-                break;
-              *eventPP = s;
-            }
-          }
-          else
-            charDataHandler(handlerArg,
-                            (XML_Char *)s,
-                            (int)((XML_Char *)next - (XML_Char *)s));
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-      }
-      break;
-    case XML_TOK_INVALID:
-      *eventPP = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_PARTIAL:
-    case XML_TOK_NONE:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_CDATA_SECTION;
-    default:
-      *eventPP = next;
-      return XML_ERROR_UNEXPECTED_STATE;
-    }
-
-    *eventPP = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-  /* not reached */
-}
-
-#ifdef XML_DTD
-
-/* The idea here is to avoid using stack for each IGNORE section when
-   the whole file is parsed with one call.
-*/
-static enum XML_Error PTRCALL
-ignoreSectionProcessor(XML_Parser parser,
-                       const char *start,
-                       const char *end,
-                       const char **endPtr)
-{
-  enum XML_Error result = doIgnoreSection(parser, encoding, &start, end,
-                                          endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result != XML_ERROR_NONE)
-    return result;
-  if (start) {
-    processor = prologProcessor;
-    return prologProcessor(parser, start, end, endPtr);
-  }
-  return result;
-}
-
-/* startPtr gets set to non-null is the section is closed, and to null
-   if the section is not yet closed.
-*/
-static enum XML_Error
-doIgnoreSection(XML_Parser parser,
-                const ENCODING *enc,
-                const char **startPtr,
-                const char *end,
-                const char **nextPtr,
-                XML_Bool haveMore)
-{
-  const char *next;
-  int tok;
-  const char *s = *startPtr;
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    *eventPP = s;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-  *startPtr = NULL;
-  tok = XmlIgnoreSectionTok(enc, s, end, &next);
-  *eventEndPP = next;
-  switch (tok) {
-  case XML_TOK_IGNORE_SECT:
-    if (defaultHandler)
-      reportDefault(parser, enc, s, next);
-    *startPtr = next;
-    *nextPtr = next;
-    if (ps_parsing == XML_FINISHED)
-      return XML_ERROR_ABORTED;
-    else
-      return XML_ERROR_NONE;
-  case XML_TOK_INVALID:
-    *eventPP = next;
-    return XML_ERROR_INVALID_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (haveMore) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_PARTIAL_CHAR;
-  case XML_TOK_PARTIAL:
-  case XML_TOK_NONE:
-    if (haveMore) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */
-  default:
-    *eventPP = next;
-    return XML_ERROR_UNEXPECTED_STATE;
-  }
-  /* not reached */
-}
-
-#endif /* XML_DTD */
-
-static enum XML_Error
-initializeEncoding(XML_Parser parser)
-{
-  const char *s;
-#ifdef XML_UNICODE
-  char encodingBuf[128];
-  if (!protocolEncodingName)
-    s = NULL;
-  else {
-    int i;
-    for (i = 0; protocolEncodingName[i]; i++) {
-      if (i == sizeof(encodingBuf) - 1
-          || (protocolEncodingName[i] & ~0x7f) != 0) {
-        encodingBuf[0] = '\0';
-        break;
-      }
-      encodingBuf[i] = (char)protocolEncodingName[i];
-    }
-    encodingBuf[i] = '\0';
-    s = encodingBuf;
-  }
-#else
-  s = protocolEncodingName;
-#endif
-  if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s))
-    return XML_ERROR_NONE;
-  return handleUnknownEncoding(parser, protocolEncodingName);
-}
-
-static enum XML_Error
-processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
-               const char *s, const char *next)
-{
-  const char *encodingName = NULL;
-  const XML_Char *storedEncName = NULL;
-  const ENCODING *newEncoding = NULL;
-  const char *version = NULL;
-  const char *versionend;
-  const XML_Char *storedversion = NULL;
-  int standalone = -1;
-  if (!(ns
-        ? XmlParseXmlDeclNS
-        : XmlParseXmlDecl)(isGeneralTextEntity,
-                           encoding,
-                           s,
-                           next,
-                           &eventPtr,
-                           &version,
-                           &versionend,
-                           &encodingName,
-                           &newEncoding,
-                           &standalone)) {
-    if (isGeneralTextEntity)
-      return XML_ERROR_TEXT_DECL;
-    else
-      return XML_ERROR_XML_DECL;
-  }
-  if (!isGeneralTextEntity && standalone == 1) {
-    _dtd->standalone = XML_TRUE;
-#ifdef XML_DTD
-    if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
-      paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
-#endif /* XML_DTD */
-  }
-  if (xmlDeclHandler) {
-    if (encodingName != NULL) {
-      storedEncName = poolStoreString(&temp2Pool,
-                                      encoding,
-                                      encodingName,
-                                      encodingName
-                                      + XmlNameLength(encoding, encodingName));
-      if (!storedEncName)
-              return XML_ERROR_NO_MEMORY;
-      poolFinish(&temp2Pool);
-    }
-    if (version) {
-      storedversion = poolStoreString(&temp2Pool,
-                                      encoding,
-                                      version,
-                                      versionend - encoding->minBytesPerChar);
-      if (!storedversion)
-        return XML_ERROR_NO_MEMORY;
-    }
-    xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone);
-  }
-  else if (defaultHandler)
-    reportDefault(parser, encoding, s, next);
-  if (protocolEncodingName == NULL) {
-    if (newEncoding) {
-      if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) {
-        eventPtr = encodingName;
-        return XML_ERROR_INCORRECT_ENCODING;
-      }
-      encoding = newEncoding;
-    }
-    else if (encodingName) {
-      enum XML_Error result;
-      if (!storedEncName) {
-        storedEncName = poolStoreString(
-          &temp2Pool, encoding, encodingName,
-          encodingName + XmlNameLength(encoding, encodingName));
-        if (!storedEncName)
-          return XML_ERROR_NO_MEMORY;
-      }
-      result = handleUnknownEncoding(parser, storedEncName);
-      poolClear(&temp2Pool);
-      if (result == XML_ERROR_UNKNOWN_ENCODING)
-        eventPtr = encodingName;
-      return result;
-    }
-  }
-
-  if (storedEncName || storedversion)
-    poolClear(&temp2Pool);
-
-  return XML_ERROR_NONE;
-}
-
-static enum XML_Error
-handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName)
-{
-  if (unknownEncodingHandler) {
-    XML_Encoding info;
-    int i;
-    for (i = 0; i < 256; i++)
-      info.map[i] = -1;
-    info.convert = NULL;
-    info.data = NULL;
-    info.release = NULL;
-    if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName,
-                               &info)) {
-      ENCODING *enc;
-      unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding());
-      if (!unknownEncodingMem) {
-        if (info.release)
-          info.release(info.data);
-        return XML_ERROR_NO_MEMORY;
-      }
-      enc = (ns
-             ? XmlInitUnknownEncodingNS
-             : XmlInitUnknownEncoding)(unknownEncodingMem,
-                                       info.map,
-                                       info.convert,
-                                       info.data);
-      if (enc) {
-        unknownEncodingData = info.data;
-        unknownEncodingRelease = info.release;
-        encoding = enc;
-        return XML_ERROR_NONE;
-      }
-    }
-    if (info.release != NULL)
-      info.release(info.data);
-  }
-  return XML_ERROR_UNKNOWN_ENCODING;
-}
-
-static enum XML_Error PTRCALL
-prologInitProcessor(XML_Parser parser,
-                    const char *s,
-                    const char *end,
-                    const char **nextPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-  processor = prologProcessor;
-  return prologProcessor(parser, s, end, nextPtr);
-}
-
-#ifdef XML_DTD
-
-static enum XML_Error PTRCALL
-externalParEntInitProcessor(XML_Parser parser,
-                            const char *s,
-                            const char *end,
-                            const char **nextPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-
-  /* we know now that XML_Parse(Buffer) has been called,
-     so we consider the external parameter entity read */
-  _dtd->paramEntityRead = XML_TRUE;
-
-  if (prologState.inEntityValue) {
-    processor = entityValueInitProcessor;
-    return entityValueInitProcessor(parser, s, end, nextPtr);
-  }
-  else {
-    processor = externalParEntProcessor;
-    return externalParEntProcessor(parser, s, end, nextPtr);
-  }
-}
-
-static enum XML_Error PTRCALL
-entityValueInitProcessor(XML_Parser parser,
-                         const char *s,
-                         const char *end,
-                         const char **nextPtr)
-{
-  int tok;
-  const char *start = s;
-  const char *next = start;
-  eventPtr = start;
-
-  for (;;) {
-    tok = XmlPrologTok(encoding, start, end, &next);
-    eventEndPtr = next;
-    if (tok <= 0) {
-      if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case XML_TOK_NONE:   /* start == end */
-      default:
-        break;
-      }
-      /* found end of entity value - can store it now */
-      return storeEntityValue(parser, encoding, s, end);
-    }
-    else if (tok == XML_TOK_XML_DECL) {
-      enum XML_Error result;
-      result = processXmlDecl(parser, 0, start, next);
-      if (result != XML_ERROR_NONE)
-        return result;
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        *nextPtr = next;
-        return XML_ERROR_NONE;
-      case XML_FINISHED:
-        return XML_ERROR_ABORTED;
-      default:
-        *nextPtr = next;
-      }
-      /* stop scanning for text declaration - we found one */
-      processor = entityValueProcessor;
-      return entityValueProcessor(parser, next, end, nextPtr);
-    }
-    /* If we are at the end of the buffer, this would cause XmlPrologTok to
-       return XML_TOK_NONE on the next call, which would then cause the
-       function to exit with *nextPtr set to s - that is what we want for other
-       tokens, but not for the BOM - we would rather like to skip it;
-       then, when this routine is entered the next time, XmlPrologTok will
-       return XML_TOK_INVALID, since the BOM is still in the buffer
-    */
-    else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) {
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    }
-    start = next;
-    eventPtr = start;
-  }
-}
-
-static enum XML_Error PTRCALL
-externalParEntProcessor(XML_Parser parser,
-                        const char *s,
-                        const char *end,
-                        const char **nextPtr)
-{
-  const char *next = s;
-  int tok;
-
-  tok = XmlPrologTok(encoding, s, end, &next);
-  if (tok <= 0) {
-    if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    switch (tok) {
-    case XML_TOK_INVALID:
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_NONE:   /* start == end */
-    default:
-      break;
-    }
-  }
-  /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM.
-     However, when parsing an external subset, doProlog will not accept a BOM
-     as valid, and report a syntax error, so we have to skip the BOM
-  */
-  else if (tok == XML_TOK_BOM) {
-    s = next;
-    tok = XmlPrologTok(encoding, s, end, &next);
-  }
-
-  processor = prologProcessor;
-  return doProlog(parser, encoding, s, end, tok, next,
-                  nextPtr, (XML_Bool)!ps_finalBuffer);
-}
-
-static enum XML_Error PTRCALL
-entityValueProcessor(XML_Parser parser,
-                     const char *s,
-                     const char *end,
-                     const char **nextPtr)
-{
-  const char *start = s;
-  const char *next = s;
-  const ENCODING *enc = encoding;
-  int tok;
-
-  for (;;) {
-    tok = XmlPrologTok(enc, start, end, &next);
-    if (tok <= 0) {
-      if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case XML_TOK_NONE:   /* start == end */
-      default:
-        break;
-      }
-      /* found end of entity value - can store it now */
-      return storeEntityValue(parser, enc, s, end);
-    }
-    start = next;
-  }
-}
-
-#endif /* XML_DTD */
-
-static enum XML_Error PTRCALL
-prologProcessor(XML_Parser parser,
-                const char *s,
-                const char *end,
-                const char **nextPtr)
-{
-  const char *next = s;
-  int tok = XmlPrologTok(encoding, s, end, &next);
-  return doProlog(parser, encoding, s, end, tok, next,
-                  nextPtr, (XML_Bool)!ps_finalBuffer);
-}
-
-static enum XML_Error
-doProlog(XML_Parser parser,
-         const ENCODING *enc,
-         const char *s,
-         const char *end,
-         int tok,
-         const char *next,
-         const char **nextPtr,
-         XML_Bool haveMore)
-{
-#ifdef XML_DTD
-  static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' };
-#endif /* XML_DTD */
-  static const XML_Char atypeCDATA[] =
-      { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-  static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' };
-  static const XML_Char atypeIDREF[] =
-      { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' };
-  static const XML_Char atypeIDREFS[] =
-      { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' };
-  static const XML_Char atypeENTITY[] =
-      { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' };
-  static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N,
-      ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' };
-  static const XML_Char atypeNMTOKEN[] = {
-      ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' };
-  static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T,
-      ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' };
-  static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T,
-      ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' };
-  static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' };
-  static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' };
-
-  /* save one level of indirection */
-  DTD * const dtd = _dtd;
-
-  const char **eventPP;
-  const char **eventEndPP;
-  enum XML_Content_Quant quant;
-
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-
-  for (;;) {
-    int role;
-    XML_Bool handleDefault = XML_TRUE;
-    *eventPP = s;
-    *eventEndPP = next;
-    if (tok <= 0) {
-      if (haveMore && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        *eventPP = next;
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case -XML_TOK_PROLOG_S:
-        tok = -tok;
-        break;
-      case XML_TOK_NONE:
-#ifdef XML_DTD
-        /* for internal PE NOT referenced between declarations */
-        if (enc != encoding && !openInternalEntities->betweenDecl) {
-          *nextPtr = s;
-          return XML_ERROR_NONE;
-        }
-        /* WFC: PE Between Declarations - must check that PE contains
-           complete markup, not only for external PEs, but also for
-           internal PEs if the reference occurs between declarations.
-        */
-        if (isParamEntity || enc != encoding) {
-          if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc)
-              == XML_ROLE_ERROR)
-            return XML_ERROR_INCOMPLETE_PE;
-          *nextPtr = s;
-          return XML_ERROR_NONE;
-        }
-#endif /* XML_DTD */
-        return XML_ERROR_NO_ELEMENTS;
-      default:
-        tok = -tok;
-        next = end;
-        break;
-      }
-    }
-    role = XmlTokenRole(&prologState, tok, s, next, enc);
-    switch (role) {
-    case XML_ROLE_XML_DECL:
-      {
-        enum XML_Error result = processXmlDecl(parser, 0, s, next);
-        if (result != XML_ERROR_NONE)
-          return result;
-        enc = encoding;
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_NAME:
-      if (startDoctypeDeclHandler) {
-        doctypeName = poolStoreString(&tempPool, enc, s, next);
-        if (!doctypeName)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        doctypePubid = NULL;
-        handleDefault = XML_FALSE;
-      }
-      doctypeSysid = NULL; /* always initialize to NULL */
-      break;
-    case XML_ROLE_DOCTYPE_INTERNAL_SUBSET:
-      if (startDoctypeDeclHandler) {
-        startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid,
-                                doctypePubid, 1);
-        doctypeName = NULL;
-        poolClear(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-#ifdef XML_DTD
-    case XML_ROLE_TEXT_DECL:
-      {
-        enum XML_Error result = processXmlDecl(parser, 1, s, next);
-        if (result != XML_ERROR_NONE)
-          return result;
-        enc = encoding;
-        handleDefault = XML_FALSE;
-      }
-      break;
-#endif /* XML_DTD */
-    case XML_ROLE_DOCTYPE_PUBLIC_ID:
-#ifdef XML_DTD
-      useForeignDTD = XML_FALSE;
-      declEntity = (ENTITY *)lookup(parser,
-                                    &dtd->paramEntities,
-                                    externalSubsetName,
-                                    sizeof(ENTITY));
-      if (!declEntity)
-        return XML_ERROR_NO_MEMORY;
-#endif /* XML_DTD */
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (startDoctypeDeclHandler) {
-        XML_Char *pubId;
-        if (!XmlIsPublicId(enc, s, next, eventPP))
-          return XML_ERROR_PUBLICID;
-        pubId = poolStoreString(&tempPool, enc,
-                                s + enc->minBytesPerChar,
-                                next - enc->minBytesPerChar);
-        if (!pubId)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId(pubId);
-        poolFinish(&tempPool);
-        doctypePubid = pubId;
-        handleDefault = XML_FALSE;
-        goto alreadyChecked;
-      }
-      /* fall through */
-    case XML_ROLE_ENTITY_PUBLIC_ID:
-      if (!XmlIsPublicId(enc, s, next, eventPP))
-        return XML_ERROR_PUBLICID;
-    alreadyChecked:
-      if (dtd->keepProcessing && declEntity) {
-        XML_Char *tem = poolStoreString(&dtd->pool,
-                                        enc,
-                                        s + enc->minBytesPerChar,
-                                        next - enc->minBytesPerChar);
-        if (!tem)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId(tem);
-        declEntity->publicId = tem;
-        poolFinish(&dtd->pool);
-        if (entityDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_CLOSE:
-      if (doctypeName) {
-        startDoctypeDeclHandler(handlerArg, doctypeName,
-                                doctypeSysid, doctypePubid, 0);
-        poolClear(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      /* doctypeSysid will be non-NULL in the case of a previous
-         XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler
-         was not set, indicating an external subset
-      */
-#ifdef XML_DTD
-      if (doctypeSysid || useForeignDTD) {
-        XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
-        dtd->hasParamEntityRefs = XML_TRUE;
-        if (paramEntityParsing && externalEntityRefHandler) {
-          ENTITY *entity = (ENTITY *)lookup(parser,
-                                            &dtd->paramEntities,
-                                            externalSubsetName,
-                                            sizeof(ENTITY));
-          if (!entity)
-            return XML_ERROR_NO_MEMORY;
-          if (useForeignDTD)
-            entity->base = curBase;
-          dtd->paramEntityRead = XML_FALSE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          if (dtd->paramEntityRead) {
-            if (!dtd->standalone &&
-                notStandaloneHandler &&
-                !notStandaloneHandler(handlerArg))
-              return XML_ERROR_NOT_STANDALONE;
-          }
-          /* if we didn't read the foreign DTD then this means that there
-             is no external subset and we must reset dtd->hasParamEntityRefs
-          */
-          else if (!doctypeSysid)
-            dtd->hasParamEntityRefs = hadParamEntityRefs;
-          /* end of DTD - no need to update dtd->keepProcessing */
-        }
-        useForeignDTD = XML_FALSE;
-      }
-#endif /* XML_DTD */
-      if (endDoctypeDeclHandler) {
-        endDoctypeDeclHandler(handlerArg);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_INSTANCE_START:
-#ifdef XML_DTD
-      /* if there is no DOCTYPE declaration then now is the
-         last chance to read the foreign DTD
-      */
-      if (useForeignDTD) {
-        XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
-        dtd->hasParamEntityRefs = XML_TRUE;
-        if (paramEntityParsing && externalEntityRefHandler) {
-          ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities,
-                                            externalSubsetName,
-                                            sizeof(ENTITY));
-          if (!entity)
-            return XML_ERROR_NO_MEMORY;
-          entity->base = curBase;
-          dtd->paramEntityRead = XML_FALSE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          if (dtd->paramEntityRead) {
-            if (!dtd->standalone &&
-                notStandaloneHandler &&
-                !notStandaloneHandler(handlerArg))
-              return XML_ERROR_NOT_STANDALONE;
-          }
-          /* if we didn't read the foreign DTD then this means that there
-             is no external subset and we must reset dtd->hasParamEntityRefs
-          */
-          else
-            dtd->hasParamEntityRefs = hadParamEntityRefs;
-          /* end of DTD - no need to update dtd->keepProcessing */
-        }
-      }
-#endif /* XML_DTD */
-      processor = contentProcessor;
-      return contentProcessor(parser, s, end, nextPtr);
-    case XML_ROLE_ATTLIST_ELEMENT_NAME:
-      declElementType = getElementType(parser, enc, s, next);
-      if (!declElementType)
-        return XML_ERROR_NO_MEMORY;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_NAME:
-      declAttributeId = getAttributeId(parser, enc, s, next);
-      if (!declAttributeId)
-        return XML_ERROR_NO_MEMORY;
-      declAttributeIsCdata = XML_FALSE;
-      declAttributeType = NULL;
-      declAttributeIsId = XML_FALSE;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_CDATA:
-      declAttributeIsCdata = XML_TRUE;
-      declAttributeType = atypeCDATA;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ID:
-      declAttributeIsId = XML_TRUE;
-      declAttributeType = atypeID;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_IDREF:
-      declAttributeType = atypeIDREF;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_IDREFS:
-      declAttributeType = atypeIDREFS;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ENTITY:
-      declAttributeType = atypeENTITY;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES:
-      declAttributeType = atypeENTITIES;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN:
-      declAttributeType = atypeNMTOKEN;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS:
-      declAttributeType = atypeNMTOKENS;
-    checkAttListDeclHandler:
-      if (dtd->keepProcessing && attlistDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ATTRIBUTE_ENUM_VALUE:
-    case XML_ROLE_ATTRIBUTE_NOTATION_VALUE:
-      if (dtd->keepProcessing && attlistDeclHandler) {
-        const XML_Char *prefix;
-        if (declAttributeType) {
-          prefix = enumValueSep;
-        }
-        else {
-          prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE
-                    ? notationPrefix
-                    : enumValueStart);
-        }
-        if (!poolAppendString(&tempPool, prefix))
-          return XML_ERROR_NO_MEMORY;
-        if (!poolAppend(&tempPool, enc, s, next))
-          return XML_ERROR_NO_MEMORY;
-        declAttributeType = tempPool.start;
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE:
-    case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE:
-      if (dtd->keepProcessing) {
-        if (!defineAttribute(declElementType, declAttributeId,
-                             declAttributeIsCdata, declAttributeIsId,
-                             0, parser))
-          return XML_ERROR_NO_MEMORY;
-        if (attlistDeclHandler && declAttributeType) {
-          if (*declAttributeType == XML_T(ASCII_LPAREN)
-              || (*declAttributeType == XML_T(ASCII_N)
-                  && declAttributeType[1] == XML_T(ASCII_O))) {
-            /* Enumerated or Notation type */
-            if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN))
-                || !poolAppendChar(&tempPool, XML_T('\0')))
-              return XML_ERROR_NO_MEMORY;
-            declAttributeType = tempPool.start;
-            poolFinish(&tempPool);
-          }
-          *eventEndPP = s;
-          attlistDeclHandler(handlerArg, declElementType->name,
-                             declAttributeId->name, declAttributeType,
-                             0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE);
-          poolClear(&tempPool);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE:
-    case XML_ROLE_FIXED_ATTRIBUTE_VALUE:
-      if (dtd->keepProcessing) {
-        const XML_Char *attVal;
-        enum XML_Error result =
-          storeAttributeValue(parser, enc, declAttributeIsCdata,
-                              s + enc->minBytesPerChar,
-                              next - enc->minBytesPerChar,
-                              &dtd->pool);
-        if (result)
-          return result;
-        attVal = poolStart(&dtd->pool);
-        poolFinish(&dtd->pool);
-        /* ID attributes aren't allowed to have a default */
-        if (!defineAttribute(declElementType, declAttributeId,
-                             declAttributeIsCdata, XML_FALSE, attVal, parser))
-          return XML_ERROR_NO_MEMORY;
-        if (attlistDeclHandler && declAttributeType) {
-          if (*declAttributeType == XML_T(ASCII_LPAREN)
-              || (*declAttributeType == XML_T(ASCII_N)
-                  && declAttributeType[1] == XML_T(ASCII_O))) {
-            /* Enumerated or Notation type */
-            if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN))
-                || !poolAppendChar(&tempPool, XML_T('\0')))
-              return XML_ERROR_NO_MEMORY;
-            declAttributeType = tempPool.start;
-            poolFinish(&tempPool);
-          }
-          *eventEndPP = s;
-          attlistDeclHandler(handlerArg, declElementType->name,
-                             declAttributeId->name, declAttributeType,
-                             attVal,
-                             role == XML_ROLE_FIXED_ATTRIBUTE_VALUE);
-          poolClear(&tempPool);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_ENTITY_VALUE:
-      if (dtd->keepProcessing) {
-        enum XML_Error result = storeEntityValue(parser, enc,
-                                            s + enc->minBytesPerChar,
-                                            next - enc->minBytesPerChar);
-        if (declEntity) {
-          declEntity->textPtr = poolStart(&dtd->entityValuePool);
-          declEntity->textLen = (int)(poolLength(&dtd->entityValuePool));
-          poolFinish(&dtd->entityValuePool);
-          if (entityDeclHandler) {
-            *eventEndPP = s;
-            entityDeclHandler(handlerArg,
-                              declEntity->name,
-                              declEntity->is_param,
-                              declEntity->textPtr,
-                              declEntity->textLen,
-                              curBase, 0, 0, 0);
-            handleDefault = XML_FALSE;
-          }
-        }
-        else
-          poolDiscard(&dtd->entityValuePool);
-        if (result != XML_ERROR_NONE)
-          return result;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_SYSTEM_ID:
-#ifdef XML_DTD
-      useForeignDTD = XML_FALSE;
-#endif /* XML_DTD */
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (startDoctypeDeclHandler) {
-        doctypeSysid = poolStoreString(&tempPool, enc,
-                                       s + enc->minBytesPerChar,
-                                       next - enc->minBytesPerChar);
-        if (doctypeSysid == NULL)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-#ifdef XML_DTD
-      else
-        /* use externalSubsetName to make doctypeSysid non-NULL
-           for the case where no startDoctypeDeclHandler is set */
-        doctypeSysid = externalSubsetName;
-#endif /* XML_DTD */
-      if (!dtd->standalone
-#ifdef XML_DTD
-          && !paramEntityParsing
-#endif /* XML_DTD */
-          && notStandaloneHandler
-          && !notStandaloneHandler(handlerArg))
-        return XML_ERROR_NOT_STANDALONE;
-#ifndef XML_DTD
-      break;
-#else /* XML_DTD */
-      if (!declEntity) {
-        declEntity = (ENTITY *)lookup(parser,
-                                      &dtd->paramEntities,
-                                      externalSubsetName,
-                                      sizeof(ENTITY));
-        if (!declEntity)
-          return XML_ERROR_NO_MEMORY;
-        declEntity->publicId = NULL;
-      }
-      /* fall through */
-#endif /* XML_DTD */
-    case XML_ROLE_ENTITY_SYSTEM_ID:
-      if (dtd->keepProcessing && declEntity) {
-        declEntity->systemId = poolStoreString(&dtd->pool, enc,
-                                               s + enc->minBytesPerChar,
-                                               next - enc->minBytesPerChar);
-        if (!declEntity->systemId)
-          return XML_ERROR_NO_MEMORY;
-        declEntity->base = curBase;
-        poolFinish(&dtd->pool);
-        if (entityDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_ENTITY_COMPLETE:
-      if (dtd->keepProcessing && declEntity && entityDeclHandler) {
-        *eventEndPP = s;
-        entityDeclHandler(handlerArg,
-                          declEntity->name,
-                          declEntity->is_param,
-                          0,0,
-                          declEntity->base,
-                          declEntity->systemId,
-                          declEntity->publicId,
-                          0);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_ENTITY_NOTATION_NAME:
-      if (dtd->keepProcessing && declEntity) {
-        declEntity->notation = poolStoreString(&dtd->pool, enc, s, next);
-        if (!declEntity->notation)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&dtd->pool);
-        if (unparsedEntityDeclHandler) {
-          *eventEndPP = s;
-          unparsedEntityDeclHandler(handlerArg,
-                                    declEntity->name,
-                                    declEntity->base,
-                                    declEntity->systemId,
-                                    declEntity->publicId,
-                                    declEntity->notation);
-          handleDefault = XML_FALSE;
-        }
-        else if (entityDeclHandler) {
-          *eventEndPP = s;
-          entityDeclHandler(handlerArg,
-                            declEntity->name,
-                            0,0,0,
-                            declEntity->base,
-                            declEntity->systemId,
-                            declEntity->publicId,
-                            declEntity->notation);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_GENERAL_ENTITY_NAME:
-      {
-        if (XmlPredefinedEntityName(enc, s, next)) {
-          declEntity = NULL;
-          break;
-        }
-        if (dtd->keepProcessing) {
-          const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
-          if (!name)
-            return XML_ERROR_NO_MEMORY;
-          declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name,
-                                        sizeof(ENTITY));
-          if (!declEntity)
-            return XML_ERROR_NO_MEMORY;
-          if (declEntity->name != name) {
-            poolDiscard(&dtd->pool);
-            declEntity = NULL;
-          }
-          else {
-            poolFinish(&dtd->pool);
-            declEntity->publicId = NULL;
-            declEntity->is_param = XML_FALSE;
-            /* if we have a parent parser or are reading an internal parameter
-               entity, then the entity declaration is not considered "internal"
-            */
-            declEntity->is_internal = !(parentParser || openInternalEntities);
-            if (entityDeclHandler)
-              handleDefault = XML_FALSE;
-          }
-        }
-        else {
-          poolDiscard(&dtd->pool);
-          declEntity = NULL;
-        }
-      }
-      break;
-    case XML_ROLE_PARAM_ENTITY_NAME:
-#ifdef XML_DTD
-      if (dtd->keepProcessing) {
-        const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities,
-                                           name, sizeof(ENTITY));
-        if (!declEntity)
-          return XML_ERROR_NO_MEMORY;
-        if (declEntity->name != name) {
-          poolDiscard(&dtd->pool);
-          declEntity = NULL;
-        }
-        else {
-          poolFinish(&dtd->pool);
-          declEntity->publicId = NULL;
-          declEntity->is_param = XML_TRUE;
-          /* if we have a parent parser or are reading an internal parameter
-             entity, then the entity declaration is not considered "internal"
-          */
-          declEntity->is_internal = !(parentParser || openInternalEntities);
-          if (entityDeclHandler)
-            handleDefault = XML_FALSE;
-        }
-      }
-      else {
-        poolDiscard(&dtd->pool);
-        declEntity = NULL;
-      }
-#else /* not XML_DTD */
-      declEntity = NULL;
-#endif /* XML_DTD */
-      break;
-    case XML_ROLE_NOTATION_NAME:
-      declNotationPublicId = NULL;
-      declNotationName = NULL;
-      if (notationDeclHandler) {
-        declNotationName = poolStoreString(&tempPool, enc, s, next);
-        if (!declNotationName)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_NOTATION_PUBLIC_ID:
-      if (!XmlIsPublicId(enc, s, next, eventPP))
-        return XML_ERROR_PUBLICID;
-      if (declNotationName) {  /* means notationDeclHandler != NULL */
-        XML_Char *tem = poolStoreString(&tempPool,
-                                        enc,
-                                        s + enc->minBytesPerChar,
-                                        next - enc->minBytesPerChar);
-        if (!tem)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId(tem);
-        declNotationPublicId = tem;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_NOTATION_SYSTEM_ID:
-      if (declNotationName && notationDeclHandler) {
-        const XML_Char *systemId
-          = poolStoreString(&tempPool, enc,
-                            s + enc->minBytesPerChar,
-                            next - enc->minBytesPerChar);
-        if (!systemId)
-          return XML_ERROR_NO_MEMORY;
-        *eventEndPP = s;
-        notationDeclHandler(handlerArg,
-                            declNotationName,
-                            curBase,
-                            systemId,
-                            declNotationPublicId);
-        handleDefault = XML_FALSE;
-      }
-      poolClear(&tempPool);
-      break;
-    case XML_ROLE_NOTATION_NO_SYSTEM_ID:
-      if (declNotationPublicId && notationDeclHandler) {
-        *eventEndPP = s;
-        notationDeclHandler(handlerArg,
-                            declNotationName,
-                            curBase,
-                            0,
-                            declNotationPublicId);
-        handleDefault = XML_FALSE;
-      }
-      poolClear(&tempPool);
-      break;
-    case XML_ROLE_ERROR:
-      switch (tok) {
-      case XML_TOK_PARAM_ENTITY_REF:
-        /* PE references in internal subset are
-           not allowed within declarations. */
-        return XML_ERROR_PARAM_ENTITY_REF;
-      case XML_TOK_XML_DECL:
-        return XML_ERROR_MISPLACED_XML_PI;
-      default:
-        return XML_ERROR_SYNTAX;
-      }
-#ifdef XML_DTD
-    case XML_ROLE_IGNORE_SECT:
-      {
-        enum XML_Error result;
-        if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        handleDefault = XML_FALSE;
-        result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore);
-        if (result != XML_ERROR_NONE)
-          return result;
-        else if (!next) {
-          processor = ignoreSectionProcessor;
-          return result;
-        }
-      }
-      break;
-#endif /* XML_DTD */
-    case XML_ROLE_GROUP_OPEN:
-      if (prologState.level >= groupSize) {
-        if (groupSize) {
-          char *temp = (char *)REALLOC(groupConnector, groupSize *= 2);
-          if (temp == NULL)
-            return XML_ERROR_NO_MEMORY;
-          groupConnector = temp;
-          if (dtd->scaffIndex) {
-            int *temp = (int *)REALLOC(dtd->scaffIndex,
-                          groupSize * sizeof(int));
-            if (temp == NULL)
-              return XML_ERROR_NO_MEMORY;
-            dtd->scaffIndex = temp;
-          }
-        }
-        else {
-          groupConnector = (char *)MALLOC(groupSize = 32);
-          if (!groupConnector)
-            return XML_ERROR_NO_MEMORY;
-        }
-      }
-      groupConnector[prologState.level] = 0;
-      if (dtd->in_eldecl) {
-        int myindex = nextScaffoldPart(parser);
-        if (myindex < 0)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffIndex[dtd->scaffLevel] = myindex;
-        dtd->scaffLevel++;
-        dtd->scaffold[myindex].type = XML_CTYPE_SEQ;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_GROUP_SEQUENCE:
-      if (groupConnector[prologState.level] == ASCII_PIPE)
-        return XML_ERROR_SYNTAX;
-      groupConnector[prologState.level] = ASCII_COMMA;
-      if (dtd->in_eldecl && elementDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_GROUP_CHOICE:
-      if (groupConnector[prologState.level] == ASCII_COMMA)
-        return XML_ERROR_SYNTAX;
-      if (dtd->in_eldecl
-          && !groupConnector[prologState.level]
-          && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-              != XML_CTYPE_MIXED)
-          ) {
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-            = XML_CTYPE_CHOICE;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      groupConnector[prologState.level] = ASCII_PIPE;
-      break;
-    case XML_ROLE_PARAM_ENTITY_REF:
-#ifdef XML_DTD
-    case XML_ROLE_INNER_PARAM_ENTITY_REF:
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (!paramEntityParsing)
-        dtd->keepProcessing = dtd->standalone;
-      else {
-        const XML_Char *name;
-        ENTITY *entity;
-        name = poolStoreString(&dtd->pool, enc,
-                                s + enc->minBytesPerChar,
-                                next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0);
-        poolDiscard(&dtd->pool);
-        /* first, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal,
-           otherwise call the skipped entity handler
-        */
-        if (prologState.documentEntity &&
-            (dtd->standalone
-             ? !openInternalEntities
-             : !dtd->hasParamEntityRefs)) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          dtd->keepProcessing = dtd->standalone;
-          /* cannot report skipped entities in declarations */
-          if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) {
-            skippedEntityHandler(handlerArg, name, 1);
-            handleDefault = XML_FALSE;
-          }
-          break;
-        }
-        if (entity->open)
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        if (entity->textPtr) {
-          enum XML_Error result;
-          XML_Bool betweenDecl =
-            (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE);
-          result = processInternalEntity(parser, entity, betweenDecl);
-          if (result != XML_ERROR_NONE)
-            return result;
-          handleDefault = XML_FALSE;
-          break;
-        }
-        if (externalEntityRefHandler) {
-          dtd->paramEntityRead = XML_FALSE;
-          entity->open = XML_TRUE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId)) {
-            entity->open = XML_FALSE;
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          }
-          entity->open = XML_FALSE;
-          handleDefault = XML_FALSE;
-          if (!dtd->paramEntityRead) {
-            dtd->keepProcessing = dtd->standalone;
-            break;
-          }
-        }
-        else {
-          dtd->keepProcessing = dtd->standalone;
-          break;
-        }
-      }
-#endif /* XML_DTD */
-      if (!dtd->standalone &&
-          notStandaloneHandler &&
-          !notStandaloneHandler(handlerArg))
-        return XML_ERROR_NOT_STANDALONE;
-      break;
-
-    /* Element declaration stuff */
-
-    case XML_ROLE_ELEMENT_NAME:
-      if (elementDeclHandler) {
-        declElementType = getElementType(parser, enc, s, next);
-        if (!declElementType)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffLevel = 0;
-        dtd->scaffCount = 0;
-        dtd->in_eldecl = XML_TRUE;
-        handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_ANY:
-    case XML_ROLE_CONTENT_EMPTY:
-      if (dtd->in_eldecl) {
-        if (elementDeclHandler) {
-          XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content));
-          if (!content)
-            return XML_ERROR_NO_MEMORY;
-          content->quant = XML_CQUANT_NONE;
-          content->name = NULL;
-          content->numchildren = 0;
-          content->children = NULL;
-          content->type = ((role == XML_ROLE_CONTENT_ANY) ?
-                           XML_CTYPE_ANY :
-                           XML_CTYPE_EMPTY);
-          *eventEndPP = s;
-          elementDeclHandler(handlerArg, declElementType->name, content);
-          handleDefault = XML_FALSE;
-        }
-        dtd->in_eldecl = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_PCDATA:
-      if (dtd->in_eldecl) {
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-            = XML_CTYPE_MIXED;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_ELEMENT:
-      quant = XML_CQUANT_NONE;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_OPT:
-      quant = XML_CQUANT_OPT;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_REP:
-      quant = XML_CQUANT_REP;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_PLUS:
-      quant = XML_CQUANT_PLUS;
-    elementContent:
-      if (dtd->in_eldecl) {
-        ELEMENT_TYPE *el;
-        const XML_Char *name;
-        int nameLen;
-        const char *nxt = (quant == XML_CQUANT_NONE
-                           ? next
-                           : next - enc->minBytesPerChar);
-        int myindex = nextScaffoldPart(parser);
-        if (myindex < 0)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffold[myindex].type = XML_CTYPE_NAME;
-        dtd->scaffold[myindex].quant = quant;
-        el = getElementType(parser, enc, s, nxt);
-        if (!el)
-          return XML_ERROR_NO_MEMORY;
-        name = el->name;
-        dtd->scaffold[myindex].name = name;
-        nameLen = 0;
-        for (; name[nameLen++]; );
-        dtd->contentStringLen +=  nameLen;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_GROUP_CLOSE:
-      quant = XML_CQUANT_NONE;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_OPT:
-      quant = XML_CQUANT_OPT;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_REP:
-      quant = XML_CQUANT_REP;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_PLUS:
-      quant = XML_CQUANT_PLUS;
-    closeGroup:
-      if (dtd->in_eldecl) {
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-        dtd->scaffLevel--;
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant;
-        if (dtd->scaffLevel == 0) {
-          if (!handleDefault) {
-            XML_Content *model = build_model(parser);
-            if (!model)
-              return XML_ERROR_NO_MEMORY;
-            *eventEndPP = s;
-            elementDeclHandler(handlerArg, declElementType->name, model);
-          }
-          dtd->in_eldecl = XML_FALSE;
-          dtd->contentStringLen = 0;
-        }
-      }
-      break;
-      /* End element declaration stuff */
-
-    case XML_ROLE_PI:
-      if (!reportProcessingInstruction(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_COMMENT:
-      if (!reportComment(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_NONE:
-      switch (tok) {
-      case XML_TOK_BOM:
-        handleDefault = XML_FALSE;
-        break;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_NONE:
-      if (startDoctypeDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ENTITY_NONE:
-      if (dtd->keepProcessing && entityDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_NOTATION_NONE:
-      if (notationDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ATTLIST_NONE:
-      if (dtd->keepProcessing && attlistDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ELEMENT_NONE:
-      if (elementDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    } /* end of big switch */
-
-    if (handleDefault && defaultHandler)
-      reportDefault(parser, enc, s, next);
-
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default:
-      s = next;
-      tok = XmlPrologTok(enc, s, end, &next);
-    }
-  }
-  /* not reached */
-}
-
-static enum XML_Error PTRCALL
-epilogProcessor(XML_Parser parser,
-                const char *s,
-                const char *end,
-                const char **nextPtr)
-{
-  processor = epilogProcessor;
-  eventPtr = s;
-  for (;;) {
-    const char *next = NULL;
-    int tok = XmlPrologTok(encoding, s, end, &next);
-    eventEndPtr = next;
-    switch (tok) {
-    /* report partial linebreak - it might be the last token */
-    case -XML_TOK_PROLOG_S:
-      if (defaultHandler) {
-        reportDefault(parser, encoding, s, next);
-        if (ps_parsing == XML_FINISHED)
-          return XML_ERROR_ABORTED;
-      }
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_TOK_NONE:
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    case XML_TOK_PROLOG_S:
-      if (defaultHandler)
-        reportDefault(parser, encoding, s, next);
-      break;
-    case XML_TOK_PI:
-      if (!reportProcessingInstruction(parser, encoding, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_COMMENT:
-      if (!reportComment(parser, encoding, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_INVALID:
-      eventPtr = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (!ps_finalBuffer) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (!ps_finalBuffer) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    default:
-      return XML_ERROR_JUNK_AFTER_DOC_ELEMENT;
-    }
-    eventPtr = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-}
-
-static enum XML_Error
-processInternalEntity(XML_Parser parser, ENTITY *entity,
-                      XML_Bool betweenDecl)
-{
-  const char *textStart, *textEnd;
-  const char *next;
-  enum XML_Error result;
-  OPEN_INTERNAL_ENTITY *openEntity;
-
-  if (freeInternalEntities) {
-    openEntity = freeInternalEntities;
-    freeInternalEntities = openEntity->next;
-  }
-  else {
-    openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY));
-    if (!openEntity)
-      return XML_ERROR_NO_MEMORY;
-  }
-  entity->open = XML_TRUE;
-  entity->processed = 0;
-  openEntity->next = openInternalEntities;
-  openInternalEntities = openEntity;
-  openEntity->entity = entity;
-  openEntity->startTagLevel = tagLevel;
-  openEntity->betweenDecl = betweenDecl;
-  openEntity->internalEventPtr = NULL;
-  openEntity->internalEventEndPtr = NULL;
-  textStart = (char *)entity->textPtr;
-  textEnd = (char *)(entity->textPtr + entity->textLen);
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
-    result = doProlog(parser, internalEncoding, textStart, textEnd, tok,
-                      next, &next, XML_FALSE);
-  }
-  else
-#endif /* XML_DTD */
-    result = doContent(parser, tagLevel, internalEncoding, textStart,
-                       textEnd, &next, XML_FALSE);
-
-  if (result == XML_ERROR_NONE) {
-    if (textEnd != next && ps_parsing == XML_SUSPENDED) {
-      entity->processed = (int)(next - textStart);
-      processor = internalEntityProcessor;
-    }
-    else {
-      entity->open = XML_FALSE;
-      openInternalEntities = openEntity->next;
-      /* put openEntity back in list of free instances */
-      openEntity->next = freeInternalEntities;
-      freeInternalEntities = openEntity;
-    }
-  }
-  return result;
-}
-
-static enum XML_Error PTRCALL
-internalEntityProcessor(XML_Parser parser,
-                        const char *s,
-                        const char *end,
-                        const char **nextPtr)
-{
-  ENTITY *entity;
-  const char *textStart, *textEnd;
-  const char *next;
-  enum XML_Error result;
-  OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities;
-  if (!openEntity)
-    return XML_ERROR_UNEXPECTED_STATE;
-
-  entity = openEntity->entity;
-  textStart = ((char *)entity->textPtr) + entity->processed;
-  textEnd = (char *)(entity->textPtr + entity->textLen);
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
-    result = doProlog(parser, internalEncoding, textStart, textEnd, tok,
-                      next, &next, XML_FALSE);
-  }
-  else
-#endif /* XML_DTD */
-    result = doContent(parser, openEntity->startTagLevel, internalEncoding,
-                       textStart, textEnd, &next, XML_FALSE);
-
-  if (result != XML_ERROR_NONE)
-    return result;
-  else if (textEnd != next && ps_parsing == XML_SUSPENDED) {
-    entity->processed = (int)(next - (char *)entity->textPtr);
-    return result;
-  }
-  else {
-    entity->open = XML_FALSE;
-    openInternalEntities = openEntity->next;
-    /* put openEntity back in list of free instances */
-    openEntity->next = freeInternalEntities;
-    freeInternalEntities = openEntity;
-  }
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok;
-    processor = prologProcessor;
-    tok = XmlPrologTok(encoding, s, end, &next);
-    return doProlog(parser, encoding, s, end, tok, next, nextPtr,
-                    (XML_Bool)!ps_finalBuffer);
-  }
-  else
-#endif /* XML_DTD */
-  {
-    processor = contentProcessor;
-    /* see externalEntityContentProcessor vs contentProcessor */
-    return doContent(parser, parentParser ? 1 : 0, encoding, s, end,
-                     nextPtr, (XML_Bool)!ps_finalBuffer);
-  }
-}
-
-static enum XML_Error PTRCALL
-errorProcessor(XML_Parser parser,
-               const char *s,
-               const char *end,
-               const char **nextPtr)
-{
-  return errorCode;
-}
-
-static enum XML_Error
-storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
-                    const char *ptr, const char *end,
-                    STRING_POOL *pool)
-{
-  enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr,
-                                               end, pool);
-  if (result)
-    return result;
-  if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20)
-    poolChop(pool);
-  if (!poolAppendChar(pool, XML_T('\0')))
-    return XML_ERROR_NO_MEMORY;
-  return XML_ERROR_NONE;
-}
-
-static enum XML_Error
-appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
-                     const char *ptr, const char *end,
-                     STRING_POOL *pool)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  for (;;) {
-    const char *next;
-    int tok = XmlAttributeValueTok(enc, ptr, end, &next);
-    switch (tok) {
-    case XML_TOK_NONE:
-      return XML_ERROR_NONE;
-    case XML_TOK_INVALID:
-      if (enc == encoding)
-        eventPtr = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (enc == encoding)
-        eventPtr = ptr;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_CHAR_REF:
-      {
-        XML_Char buf[XML_ENCODE_MAX];
-        int i;
-        int n = XmlCharRefNumber(enc, ptr);
-        if (n < 0) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BAD_CHAR_REF;
-        }
-        if (!isCdata
-            && n == 0x20 /* space */
-            && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
-          break;
-        n = XmlEncode(n, (ICHAR *)buf);
-        if (!n) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BAD_CHAR_REF;
-        }
-        for (i = 0; i < n; i++) {
-          if (!poolAppendChar(pool, buf[i]))
-            return XML_ERROR_NO_MEMORY;
-        }
-      }
-      break;
-    case XML_TOK_DATA_CHARS:
-      if (!poolAppend(pool, enc, ptr, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_TRAILING_CR:
-      next = ptr + enc->minBytesPerChar;
-      /* fall through */
-    case XML_TOK_ATTRIBUTE_VALUE_S:
-    case XML_TOK_DATA_NEWLINE:
-      if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
-        break;
-      if (!poolAppendChar(pool, 0x20))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_ENTITY_REF:
-      {
-        const XML_Char *name;
-        ENTITY *entity;
-        char checkEntityDecl;
-        XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
-                                              ptr + enc->minBytesPerChar,
-                                              next - enc->minBytesPerChar);
-        if (ch) {
-          if (!poolAppendChar(pool, ch))
-                return XML_ERROR_NO_MEMORY;
-          break;
-        }
-        name = poolStoreString(&temp2Pool, enc,
-                               ptr + enc->minBytesPerChar,
-                               next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0);
-        poolDiscard(&temp2Pool);
-        /* First, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal.
-        */
-        if (pool == &dtd->pool)  /* are we called from prolog? */
-          checkEntityDecl =
-#ifdef XML_DTD
-              prologState.documentEntity &&
-#endif /* XML_DTD */
-              (dtd->standalone
-               ? !openInternalEntities
-               : !dtd->hasParamEntityRefs);
-        else /* if (pool == &tempPool): we are called from content */
-          checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone;
-        if (checkEntityDecl) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          /* Cannot report skipped entity here - see comments on
-             skippedEntityHandler.
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          */
-          /* Cannot call the default handler because this would be
-             out of sync with the call to the startElementHandler.
-          if ((pool == &tempPool) && defaultHandler)
-            reportDefault(parser, enc, ptr, next);
-          */
-          break;
-        }
-        if (entity->open) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        }
-        if (entity->notation) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BINARY_ENTITY_REF;
-        }
-        if (!entity->textPtr) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF;
-        }
-        else {
-          enum XML_Error result;
-          const XML_Char *textEnd = entity->textPtr + entity->textLen;
-          entity->open = XML_TRUE;
-          result = appendAttributeValue(parser, internalEncoding, isCdata,
-                                        (char *)entity->textPtr,
-                                        (char *)textEnd, pool);
-          entity->open = XML_FALSE;
-          if (result)
-            return result;
-        }
-      }
-      break;
-    default:
-      if (enc == encoding)
-        eventPtr = ptr;
-      return XML_ERROR_UNEXPECTED_STATE;
-    }
-    ptr = next;
-  }
-  /* not reached */
-}
-
-static enum XML_Error
-storeEntityValue(XML_Parser parser,
-                 const ENCODING *enc,
-                 const char *entityTextPtr,
-                 const char *entityTextEnd)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  STRING_POOL *pool = &(dtd->entityValuePool);
-  enum XML_Error result = XML_ERROR_NONE;
-#ifdef XML_DTD
-  int oldInEntityValue = prologState.inEntityValue;
-  prologState.inEntityValue = 1;
-#endif /* XML_DTD */
-  /* never return Null for the value argument in EntityDeclHandler,
-     since this would indicate an external entity; therefore we
-     have to make sure that entityValuePool.start is not null */
-  if (!pool->blocks) {
-    if (!poolGrow(pool))
-      return XML_ERROR_NO_MEMORY;
-  }
-
-  for (;;) {
-    const char *next;
-    int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next);
-    switch (tok) {
-    case XML_TOK_PARAM_ENTITY_REF:
-#ifdef XML_DTD
-      if (isParamEntity || enc != encoding) {
-        const XML_Char *name;
-        ENTITY *entity;
-        name = poolStoreString(&tempPool, enc,
-                               entityTextPtr + enc->minBytesPerChar,
-                               next - enc->minBytesPerChar);
-        if (!name) {
-          result = XML_ERROR_NO_MEMORY;
-          goto endEntityValue;
-        }
-        entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0);
-        poolDiscard(&tempPool);
-        if (!entity) {
-          /* not a well-formedness error - see XML 1.0: WFC Entity Declared */
-          /* cannot report skipped entity here - see comments on
-             skippedEntityHandler
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          */
-          dtd->keepProcessing = dtd->standalone;
-          goto endEntityValue;
-        }
-        if (entity->open) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_RECURSIVE_ENTITY_REF;
-          goto endEntityValue;
-        }
-        if (entity->systemId) {
-          if (externalEntityRefHandler) {
-            dtd->paramEntityRead = XML_FALSE;
-            entity->open = XML_TRUE;
-            if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                          0,
-                                          entity->base,
-                                          entity->systemId,
-                                          entity->publicId)) {
-              entity->open = XML_FALSE;
-              result = XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-              goto endEntityValue;
-            }
-            entity->open = XML_FALSE;
-            if (!dtd->paramEntityRead)
-              dtd->keepProcessing = dtd->standalone;
-          }
-          else
-            dtd->keepProcessing = dtd->standalone;
-        }
-        else {
-          entity->open = XML_TRUE;
-          result = storeEntityValue(parser,
-                                    internalEncoding,
-                                    (char *)entity->textPtr,
-                                    (char *)(entity->textPtr
-                                             + entity->textLen));
-          entity->open = XML_FALSE;
-          if (result)
-            goto endEntityValue;
-        }
-        break;
-      }
-#endif /* XML_DTD */
-      /* In the internal subset, PE references are not legal
-         within markup declarations, e.g entity values in this case. */
-      eventPtr = entityTextPtr;
-      result = XML_ERROR_PARAM_ENTITY_REF;
-      goto endEntityValue;
-    case XML_TOK_NONE:
-      result = XML_ERROR_NONE;
-      goto endEntityValue;
-    case XML_TOK_ENTITY_REF:
-    case XML_TOK_DATA_CHARS:
-      if (!poolAppend(pool, enc, entityTextPtr, next)) {
-        result = XML_ERROR_NO_MEMORY;
-        goto endEntityValue;
-      }
-      break;
-    case XML_TOK_TRAILING_CR:
-      next = entityTextPtr + enc->minBytesPerChar;
-      /* fall through */
-    case XML_TOK_DATA_NEWLINE:
-      if (pool->end == pool->ptr && !poolGrow(pool)) {
-              result = XML_ERROR_NO_MEMORY;
-        goto endEntityValue;
-      }
-      *(pool->ptr)++ = 0xA;
-      break;
-    case XML_TOK_CHAR_REF:
-      {
-        XML_Char buf[XML_ENCODE_MAX];
-        int i;
-        int n = XmlCharRefNumber(enc, entityTextPtr);
-        if (n < 0) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_BAD_CHAR_REF;
-          goto endEntityValue;
-        }
-        n = XmlEncode(n, (ICHAR *)buf);
-        if (!n) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_BAD_CHAR_REF;
-          goto endEntityValue;
-        }
-        for (i = 0; i < n; i++) {
-          if (pool->end == pool->ptr && !poolGrow(pool)) {
-            result = XML_ERROR_NO_MEMORY;
-            goto endEntityValue;
-          }
-          *(pool->ptr)++ = buf[i];
-        }
-      }
-      break;
-    case XML_TOK_PARTIAL:
-      if (enc == encoding)
-        eventPtr = entityTextPtr;
-      result = XML_ERROR_INVALID_TOKEN;
-      goto endEntityValue;
-    case XML_TOK_INVALID:
-      if (enc == encoding)
-        eventPtr = next;
-      result = XML_ERROR_INVALID_TOKEN;
-      goto endEntityValue;
-    default:
-      if (enc == encoding)
-        eventPtr = entityTextPtr;
-      result = XML_ERROR_UNEXPECTED_STATE;
-      goto endEntityValue;
-    }
-    entityTextPtr = next;
-  }
-endEntityValue:
-#ifdef XML_DTD
-  prologState.inEntityValue = oldInEntityValue;
-#endif /* XML_DTD */
-  return result;
-}
-
-static void FASTCALL
-normalizeLines(XML_Char *s)
-{
-  XML_Char *p;
-  for (;; s++) {
-    if (*s == XML_T('\0'))
-      return;
-    if (*s == 0xD)
-      break;
-  }
-  p = s;
-  do {
-    if (*s == 0xD) {
-      *p++ = 0xA;
-      if (*++s == 0xA)
-        s++;
-    }
-    else
-      *p++ = *s++;
-  } while (*s);
-  *p = XML_T('\0');
-}
-
-static int
-reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
-                            const char *start, const char *end)
-{
-  const XML_Char *target;
-  XML_Char *data;
-  const char *tem;
-  if (!processingInstructionHandler) {
-    if (defaultHandler)
-      reportDefault(parser, enc, start, end);
-    return 1;
-  }
-  start += enc->minBytesPerChar * 2;
-  tem = start + XmlNameLength(enc, start);
-  target = poolStoreString(&tempPool, enc, start, tem);
-  if (!target)
-    return 0;
-  poolFinish(&tempPool);
-  data = poolStoreString(&tempPool, enc,
-                        XmlSkipS(enc, tem),
-                        end - enc->minBytesPerChar*2);
-  if (!data)
-    return 0;
-  normalizeLines(data);
-  processingInstructionHandler(handlerArg, target, data);
-  poolClear(&tempPool);
-  return 1;
-}
-
-static int
-reportComment(XML_Parser parser, const ENCODING *enc,
-              const char *start, const char *end)
-{
-  XML_Char *data;
-  if (!commentHandler) {
-    if (defaultHandler)
-      reportDefault(parser, enc, start, end);
-    return 1;
-  }
-  data = poolStoreString(&tempPool,
-                         enc,
-                         start + enc->minBytesPerChar * 4,
-                         end - enc->minBytesPerChar * 3);
-  if (!data)
-    return 0;
-  normalizeLines(data);
-  commentHandler(handlerArg, data);
-  poolClear(&tempPool);
-  return 1;
-}
-
-static void
-reportDefault(XML_Parser parser, const ENCODING *enc,
-              const char *s, const char *end)
-{
-  if (MUST_CONVERT(enc, s)) {
-    const char **eventPP;
-    const char **eventEndPP;
-    if (enc == encoding) {
-      eventPP = &eventPtr;
-      eventEndPP = &eventEndPtr;
-    }
-    else {
-      eventPP = &(openInternalEntities->internalEventPtr);
-      eventEndPP = &(openInternalEntities->internalEventEndPtr);
-    }
-    do {
-      ICHAR *dataPtr = (ICHAR *)dataBuf;
-      XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
-      *eventEndPP = s;
-      defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf));
-      *eventPP = s;
-    } while (s != end);
-  }
-  else
-    defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s));
-}
-
-
-static int
-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata,
-                XML_Bool isId, const XML_Char *value, XML_Parser parser)
-{
-  DEFAULT_ATTRIBUTE *att;
-  if (value || isId) {
-    /* The handling of default attributes gets messed up if we have
-       a default which duplicates a non-default. */
-    int i;
-    for (i = 0; i < type->nDefaultAtts; i++)
-      if (attId == type->defaultAtts[i].id)
-        return 1;
-    if (isId && !type->idAtt && !attId->xmlns)
-      type->idAtt = attId;
-  }
-  if (type->nDefaultAtts == type->allocDefaultAtts) {
-    if (type->allocDefaultAtts == 0) {
-      type->allocDefaultAtts = 8;
-      type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts
-                            * sizeof(DEFAULT_ATTRIBUTE));
-      if (!type->defaultAtts)
-        return 0;
-    }
-    else {
-      DEFAULT_ATTRIBUTE *temp;
-      int count = type->allocDefaultAtts * 2;
-      temp = (DEFAULT_ATTRIBUTE *)
-        REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE)));
-      if (temp == NULL)
-        return 0;
-      type->allocDefaultAtts = count;
-      type->defaultAtts = temp;
-    }
-  }
-  att = type->defaultAtts + type->nDefaultAtts;
-  att->id = attId;
-  att->value = value;
-  att->isCdata = isCdata;
-  if (!isCdata)
-    attId->maybeTokenized = XML_TRUE;
-  type->nDefaultAtts += 1;
-  return 1;
-}
-
-static int
-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *name;
-  for (name = elementType->name; *name; name++) {
-    if (*name == XML_T(ASCII_COLON)) {
-      PREFIX *prefix;
-      const XML_Char *s;
-      for (s = elementType->name; s != name; s++) {
-        if (!poolAppendChar(&dtd->pool, *s))
-          return 0;
-      }
-      if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-        return 0;
-      prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool),
-                                sizeof(PREFIX));
-      if (!prefix)
-        return 0;
-      if (prefix->name == poolStart(&dtd->pool))
-        poolFinish(&dtd->pool);
-      else
-        poolDiscard(&dtd->pool);
-      elementType->prefix = prefix;
-
-    }
-  }
-  return 1;
-}
-
-static ATTRIBUTE_ID *
-getAttributeId(XML_Parser parser, const ENCODING *enc,
-               const char *start, const char *end)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  ATTRIBUTE_ID *id;
-  const XML_Char *name;
-  if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-    return NULL;
-  name = poolStoreString(&dtd->pool, enc, start, end);
-  if (!name)
-    return NULL;
-  /* skip quotation mark - its storage will be re-used (like in name[-1]) */
-  ++name;
-  id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID));
-  if (!id)
-    return NULL;
-  if (id->name != name)
-    poolDiscard(&dtd->pool);
-  else {
-    poolFinish(&dtd->pool);
-    if (!ns)
-      ;
-    else if (name[0] == XML_T(ASCII_x)
-        && name[1] == XML_T(ASCII_m)
-        && name[2] == XML_T(ASCII_l)
-        && name[3] == XML_T(ASCII_n)
-        && name[4] == XML_T(ASCII_s)
-        && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) {
-      if (name[5] == XML_T('\0'))
-        id->prefix = &dtd->defaultPrefix;
-      else
-        id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX));
-      id->xmlns = XML_TRUE;
-    }
-    else {
-      int i;
-      for (i = 0; name[i]; i++) {
-        /* attributes without prefix are *not* in the default namespace */
-        if (name[i] == XML_T(ASCII_COLON)) {
-          int j;
-          for (j = 0; j < i; j++) {
-            if (!poolAppendChar(&dtd->pool, name[j]))
-              return NULL;
-          }
-          if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-            return NULL;
-          id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool),
-                                        sizeof(PREFIX));
-          if (id->prefix->name == poolStart(&dtd->pool))
-            poolFinish(&dtd->pool);
-          else
-            poolDiscard(&dtd->pool);
-          break;
-        }
-      }
-    }
-  }
-  return id;
-}
-
-#define CONTEXT_SEP XML_T(ASCII_FF)
-
-static const XML_Char *
-getContext(XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  HASH_TABLE_ITER iter;
-  XML_Bool needSep = XML_FALSE;
-
-  if (dtd->defaultPrefix.binding) {
-    int i;
-    int len;
-    if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS)))
-      return NULL;
-    len = dtd->defaultPrefix.binding->uriLen;
-    if (namespaceSeparator)
-      len--;
-    for (i = 0; i < len; i++)
-      if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i]))
-        return NULL;
-    needSep = XML_TRUE;
-  }
-
-  hashTableIterInit(&iter, &(dtd->prefixes));
-  for (;;) {
-    int i;
-    int len;
-    const XML_Char *s;
-    PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter);
-    if (!prefix)
-      break;
-    if (!prefix->binding)
-      continue;
-    if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
-      return NULL;
-    for (s = prefix->name; *s; s++)
-      if (!poolAppendChar(&tempPool, *s))
-        return NULL;
-    if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS)))
-      return NULL;
-    len = prefix->binding->uriLen;
-    if (namespaceSeparator)
-      len--;
-    for (i = 0; i < len; i++)
-      if (!poolAppendChar(&tempPool, prefix->binding->uri[i]))
-        return NULL;
-    needSep = XML_TRUE;
-  }
-
-
-  hashTableIterInit(&iter, &(dtd->generalEntities));
-  for (;;) {
-    const XML_Char *s;
-    ENTITY *e = (ENTITY *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (!e->open)
-      continue;
-    if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
-      return NULL;
-    for (s = e->name; *s; s++)
-      if (!poolAppendChar(&tempPool, *s))
-        return 0;
-    needSep = XML_TRUE;
-  }
-
-  if (!poolAppendChar(&tempPool, XML_T('\0')))
-    return NULL;
-  return tempPool.start;
-}
-
-static XML_Bool
-setContext(XML_Parser parser, const XML_Char *context)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *s = context;
-
-  while (*context != XML_T('\0')) {
-    if (*s == CONTEXT_SEP || *s == XML_T('\0')) {
-      ENTITY *e;
-      if (!poolAppendChar(&tempPool, XML_T('\0')))
-        return XML_FALSE;
-      e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0);
-      if (e)
-        e->open = XML_TRUE;
-      if (*s != XML_T('\0'))
-        s++;
-      context = s;
-      poolDiscard(&tempPool);
-    }
-    else if (*s == XML_T(ASCII_EQUALS)) {
-      PREFIX *prefix;
-      if (poolLength(&tempPool) == 0)
-        prefix = &dtd->defaultPrefix;
-      else {
-        if (!poolAppendChar(&tempPool, XML_T('\0')))
-          return XML_FALSE;
-        prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool),
-                                  sizeof(PREFIX));
-        if (!prefix)
-          return XML_FALSE;
-        if (prefix->name == poolStart(&tempPool)) {
-          prefix->name = poolCopyString(&dtd->pool, prefix->name);
-          if (!prefix->name)
-            return XML_FALSE;
-        }
-        poolDiscard(&tempPool);
-      }
-      for (context = s + 1;
-           *context != CONTEXT_SEP && *context != XML_T('\0');
-           context++)
-        if (!poolAppendChar(&tempPool, *context))
-          return XML_FALSE;
-      if (!poolAppendChar(&tempPool, XML_T('\0')))
-        return XML_FALSE;
-      if (addBinding(parser, prefix, NULL, poolStart(&tempPool),
-                     &inheritedBindings) != XML_ERROR_NONE)
-        return XML_FALSE;
-      poolDiscard(&tempPool);
-      if (*context != XML_T('\0'))
-        ++context;
-      s = context;
-    }
-    else {
-      if (!poolAppendChar(&tempPool, *s))
-        return XML_FALSE;
-      s++;
-    }
-  }
-  return XML_TRUE;
-}
-
-static void FASTCALL
-normalizePublicId(XML_Char *publicId)
-{
-  XML_Char *p = publicId;
-  XML_Char *s;
-  for (s = publicId; *s; s++) {
-    switch (*s) {
-    case 0x20:
-    case 0xD:
-    case 0xA:
-      if (p != publicId && p[-1] != 0x20)
-        *p++ = 0x20;
-      break;
-    default:
-      *p++ = *s;
-    }
-  }
-  if (p != publicId && p[-1] == 0x20)
-    --p;
-  *p = XML_T('\0');
-}
-
-static DTD *
-dtdCreate(const XML_Memory_Handling_Suite *ms)
-{
-  DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD));
-  if (p == NULL)
-    return p;
-  poolInit(&(p->pool), ms);
-  poolInit(&(p->entityValuePool), ms);
-  hashTableInit(&(p->generalEntities), ms);
-  hashTableInit(&(p->elementTypes), ms);
-  hashTableInit(&(p->attributeIds), ms);
-  hashTableInit(&(p->prefixes), ms);
-#ifdef XML_DTD
-  p->paramEntityRead = XML_FALSE;
-  hashTableInit(&(p->paramEntities), ms);
-#endif /* XML_DTD */
-  p->defaultPrefix.name = NULL;
-  p->defaultPrefix.binding = NULL;
-
-  p->in_eldecl = XML_FALSE;
-  p->scaffIndex = NULL;
-  p->scaffold = NULL;
-  p->scaffLevel = 0;
-  p->scaffSize = 0;
-  p->scaffCount = 0;
-  p->contentStringLen = 0;
-
-  p->keepProcessing = XML_TRUE;
-  p->hasParamEntityRefs = XML_FALSE;
-  p->standalone = XML_FALSE;
-  return p;
-}
-
-static void
-dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-  hashTableIterInit(&iter, &(p->elementTypes));
-  for (;;) {
-    ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (e->allocDefaultAtts != 0)
-      ms->free_fcn(e->defaultAtts);
-  }
-  hashTableClear(&(p->generalEntities));
-#ifdef XML_DTD
-  p->paramEntityRead = XML_FALSE;
-  hashTableClear(&(p->paramEntities));
-#endif /* XML_DTD */
-  hashTableClear(&(p->elementTypes));
-  hashTableClear(&(p->attributeIds));
-  hashTableClear(&(p->prefixes));
-  poolClear(&(p->pool));
-  poolClear(&(p->entityValuePool));
-  p->defaultPrefix.name = NULL;
-  p->defaultPrefix.binding = NULL;
-
-  p->in_eldecl = XML_FALSE;
-
-  ms->free_fcn(p->scaffIndex);
-  p->scaffIndex = NULL;
-  ms->free_fcn(p->scaffold);
-  p->scaffold = NULL;
-
-  p->scaffLevel = 0;
-  p->scaffSize = 0;
-  p->scaffCount = 0;
-  p->contentStringLen = 0;
-
-  p->keepProcessing = XML_TRUE;
-  p->hasParamEntityRefs = XML_FALSE;
-  p->standalone = XML_FALSE;
-}
-
-static void
-dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-  hashTableIterInit(&iter, &(p->elementTypes));
-  for (;;) {
-    ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (e->allocDefaultAtts != 0)
-      ms->free_fcn(e->defaultAtts);
-  }
-  hashTableDestroy(&(p->generalEntities));
-#ifdef XML_DTD
-  hashTableDestroy(&(p->paramEntities));
-#endif /* XML_DTD */
-  hashTableDestroy(&(p->elementTypes));
-  hashTableDestroy(&(p->attributeIds));
-  hashTableDestroy(&(p->prefixes));
-  poolDestroy(&(p->pool));
-  poolDestroy(&(p->entityValuePool));
-  if (isDocEntity) {
-    ms->free_fcn(p->scaffIndex);
-    ms->free_fcn(p->scaffold);
-  }
-  ms->free_fcn(p);
-}
-
-/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise.
-   The new DTD has already been initialized.
-*/
-static int
-dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-
-  /* Copy the prefix table. */
-
-  hashTableIterInit(&iter, &(oldDtd->prefixes));
-  for (;;) {
-    const XML_Char *name;
-    const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter);
-    if (!oldP)
-      break;
-    name = poolCopyString(&(newDtd->pool), oldP->name);
-    if (!name)
-      return 0;
-    if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX)))
-      return 0;
-  }
-
-  hashTableIterInit(&iter, &(oldDtd->attributeIds));
-
-  /* Copy the attribute id table. */
-
-  for (;;) {
-    ATTRIBUTE_ID *newA;
-    const XML_Char *name;
-    const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter);
-
-    if (!oldA)
-      break;
-    /* Remember to allocate the scratch byte before the name. */
-    if (!poolAppendChar(&(newDtd->pool), XML_T('\0')))
-      return 0;
-    name = poolCopyString(&(newDtd->pool), oldA->name);
-    if (!name)
-      return 0;
-    ++name;
-    newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name,
-                                  sizeof(ATTRIBUTE_ID));
-    if (!newA)
-      return 0;
-    newA->maybeTokenized = oldA->maybeTokenized;
-    if (oldA->prefix) {
-      newA->xmlns = oldA->xmlns;
-      if (oldA->prefix == &oldDtd->defaultPrefix)
-        newA->prefix = &newDtd->defaultPrefix;
-      else
-        newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes),
-                                        oldA->prefix->name, 0);
-    }
-  }
-
-  /* Copy the element type table. */
-
-  hashTableIterInit(&iter, &(oldDtd->elementTypes));
-
-  for (;;) {
-    int i;
-    ELEMENT_TYPE *newE;
-    const XML_Char *name;
-    const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!oldE)
-      break;
-    name = poolCopyString(&(newDtd->pool), oldE->name);
-    if (!name)
-      return 0;
-    newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name,
-                                  sizeof(ELEMENT_TYPE));
-    if (!newE)
-      return 0;
-    if (oldE->nDefaultAtts) {
-      newE->defaultAtts = (DEFAULT_ATTRIBUTE *)
-          ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE));
-      if (!newE->defaultAtts) {
-        ms->free_fcn(newE);
-        return 0;
-      }
-    }
-    if (oldE->idAtt)
-      newE->idAtt = (ATTRIBUTE_ID *)
-          lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0);
-    newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts;
-    if (oldE->prefix)
-      newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes),
-                                      oldE->prefix->name, 0);
-    for (i = 0; i < newE->nDefaultAtts; i++) {
-      newE->defaultAtts[i].id = (ATTRIBUTE_ID *)
-          lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0);
-      newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata;
-      if (oldE->defaultAtts[i].value) {
-        newE->defaultAtts[i].value
-            = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value);
-        if (!newE->defaultAtts[i].value)
-          return 0;
-      }
-      else
-        newE->defaultAtts[i].value = NULL;
-    }
-  }
-
-  /* Copy the entity tables. */
-  if (!copyEntityTable(oldParser,
-                       &(newDtd->generalEntities),
-                       &(newDtd->pool),
-                       &(oldDtd->generalEntities)))
-      return 0;
-
-#ifdef XML_DTD
-  if (!copyEntityTable(oldParser,
-                       &(newDtd->paramEntities),
-                       &(newDtd->pool),
-                       &(oldDtd->paramEntities)))
-      return 0;
-  newDtd->paramEntityRead = oldDtd->paramEntityRead;
-#endif /* XML_DTD */
-
-  newDtd->keepProcessing = oldDtd->keepProcessing;
-  newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs;
-  newDtd->standalone = oldDtd->standalone;
-
-  /* Don't want deep copying for scaffolding */
-  newDtd->in_eldecl = oldDtd->in_eldecl;
-  newDtd->scaffold = oldDtd->scaffold;
-  newDtd->contentStringLen = oldDtd->contentStringLen;
-  newDtd->scaffSize = oldDtd->scaffSize;
-  newDtd->scaffLevel = oldDtd->scaffLevel;
-  newDtd->scaffIndex = oldDtd->scaffIndex;
-
-  return 1;
-}  /* End dtdCopy */
-
-static int
-copyEntityTable(XML_Parser oldParser,
-                HASH_TABLE *newTable,
-                STRING_POOL *newPool,
-                const HASH_TABLE *oldTable)
-{
-  HASH_TABLE_ITER iter;
-  const XML_Char *cachedOldBase = NULL;
-  const XML_Char *cachedNewBase = NULL;
-
-  hashTableIterInit(&iter, oldTable);
-
-  for (;;) {
-    ENTITY *newE;
-    const XML_Char *name;
-    const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter);
-    if (!oldE)
-      break;
-    name = poolCopyString(newPool, oldE->name);
-    if (!name)
-      return 0;
-    newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY));
-    if (!newE)
-      return 0;
-    if (oldE->systemId) {
-      const XML_Char *tem = poolCopyString(newPool, oldE->systemId);
-      if (!tem)
-        return 0;
-      newE->systemId = tem;
-      if (oldE->base) {
-        if (oldE->base == cachedOldBase)
-          newE->base = cachedNewBase;
-        else {
-          cachedOldBase = oldE->base;
-          tem = poolCopyString(newPool, cachedOldBase);
-          if (!tem)
-            return 0;
-          cachedNewBase = newE->base = tem;
-        }
-      }
-      if (oldE->publicId) {
-        tem = poolCopyString(newPool, oldE->publicId);
-        if (!tem)
-          return 0;
-        newE->publicId = tem;
-      }
-    }
-    else {
-      const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr,
-                                            oldE->textLen);
-      if (!tem)
-        return 0;
-      newE->textPtr = tem;
-      newE->textLen = oldE->textLen;
-    }
-    if (oldE->notation) {
-      const XML_Char *tem = poolCopyString(newPool, oldE->notation);
-      if (!tem)
-        return 0;
-      newE->notation = tem;
-    }
-    newE->is_param = oldE->is_param;
-    newE->is_internal = oldE->is_internal;
-  }
-  return 1;
-}
-
-#define INIT_POWER 6
-
-static XML_Bool FASTCALL
-keyeq(KEY s1, KEY s2)
-{
-  for (; *s1 == *s2; s1++, s2++)
-    if (*s1 == 0)
-      return XML_TRUE;
-  return XML_FALSE;
-}
-
-static unsigned long FASTCALL
-hash(XML_Parser parser, KEY s)
-{
-  unsigned long h = hash_secret_salt;
-  while (*s)
-    h = CHAR_HASH(h, *s++);
-  return h;
-}
-
-static NAMED *
-lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize)
-{
-  size_t i;
-  if (table->size == 0) {
-    size_t tsize;
-    if (!createSize)
-      return NULL;
-    table->power = INIT_POWER;
-    /* table->size is a power of 2 */
-    table->size = (size_t)1 << INIT_POWER;
-    tsize = table->size * sizeof(NAMED *);
-    table->v = (NAMED **)table->mem->malloc_fcn(tsize);
-    if (!table->v) {
-      table->size = 0;
-      return NULL;
-    }
-    memset(table->v, 0, tsize);
-    i = hash(parser, name) & ((unsigned long)table->size - 1);
-  }
-  else {
-    unsigned long h = hash(parser, name);
-    unsigned long mask = (unsigned long)table->size - 1;
-    unsigned char step = 0;
-    i = h & mask;
-    while (table->v[i]) {
-      if (keyeq(name, table->v[i]->name))
-        return table->v[i];
-      if (!step)
-        step = PROBE_STEP(h, mask, table->power);
-      i < step ? (i += table->size - step) : (i -= step);
-    }
-    if (!createSize)
-      return NULL;
-
-    /* check for overflow (table is half full) */
-    if (table->used >> (table->power - 1)) {
-      unsigned char newPower = table->power + 1;
-      size_t newSize = (size_t)1 << newPower;
-      unsigned long newMask = (unsigned long)newSize - 1;
-      size_t tsize = newSize * sizeof(NAMED *);
-      NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize);
-      if (!newV)
-        return NULL;
-      memset(newV, 0, tsize);
-      for (i = 0; i < table->size; i++)
-        if (table->v[i]) {
-          unsigned long newHash = hash(parser, table->v[i]->name);
-          size_t j = newHash & newMask;
-          step = 0;
-          while (newV[j]) {
-            if (!step)
-              step = PROBE_STEP(newHash, newMask, newPower);
-            j < step ? (j += newSize - step) : (j -= step);
-          }
-          newV[j] = table->v[i];
-        }
-      table->mem->free_fcn(table->v);
-      table->v = newV;
-      table->power = newPower;
-      table->size = newSize;
-      i = h & newMask;
-      step = 0;
-      while (table->v[i]) {
-        if (!step)
-          step = PROBE_STEP(h, newMask, newPower);
-        i < step ? (i += newSize - step) : (i -= step);
-      }
-    }
-  }
-  table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize);
-  if (!table->v[i])
-    return NULL;
-  memset(table->v[i], 0, createSize);
-  table->v[i]->name = name;
-  (table->used)++;
-  return table->v[i];
-}
-
-static void FASTCALL
-hashTableClear(HASH_TABLE *table)
-{
-  size_t i;
-  for (i = 0; i < table->size; i++) {
-    table->mem->free_fcn(table->v[i]);
-    table->v[i] = NULL;
-  }
-  table->used = 0;
-}
-
-static void FASTCALL
-hashTableDestroy(HASH_TABLE *table)
-{
-  size_t i;
-  for (i = 0; i < table->size; i++)
-    table->mem->free_fcn(table->v[i]);
-  table->mem->free_fcn(table->v);
-}
-
-static void FASTCALL
-hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms)
-{
-  p->power = 0;
-  p->size = 0;
-  p->used = 0;
-  p->v = NULL;
-  p->mem = ms;
-}
-
-static void FASTCALL
-hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table)
-{
-  iter->p = table->v;
-  iter->end = iter->p + table->size;
-}
-
-static NAMED * FASTCALL
-hashTableIterNext(HASH_TABLE_ITER *iter)
-{
-  while (iter->p != iter->end) {
-    NAMED *tem = *(iter->p)++;
-    if (tem)
-      return tem;
-  }
-  return NULL;
-}
-
-static void FASTCALL
-poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms)
-{
-  pool->blocks = NULL;
-  pool->freeBlocks = NULL;
-  pool->start = NULL;
-  pool->ptr = NULL;
-  pool->end = NULL;
-  pool->mem = ms;
-}
-
-static void FASTCALL
-poolClear(STRING_POOL *pool)
-{
-  if (!pool->freeBlocks)
-    pool->freeBlocks = pool->blocks;
-  else {
-    BLOCK *p = pool->blocks;
-    while (p) {
-      BLOCK *tem = p->next;
-      p->next = pool->freeBlocks;
-      pool->freeBlocks = p;
-      p = tem;
-    }
-  }
-  pool->blocks = NULL;
-  pool->start = NULL;
-  pool->ptr = NULL;
-  pool->end = NULL;
-}
-
-static void FASTCALL
-poolDestroy(STRING_POOL *pool)
-{
-  BLOCK *p = pool->blocks;
-  while (p) {
-    BLOCK *tem = p->next;
-    pool->mem->free_fcn(p);
-    p = tem;
-  }
-  p = pool->freeBlocks;
-  while (p) {
-    BLOCK *tem = p->next;
-    pool->mem->free_fcn(p);
-    p = tem;
-  }
-}
-
-static XML_Char *
-poolAppend(STRING_POOL *pool, const ENCODING *enc,
-           const char *ptr, const char *end)
-{
-  if (!pool->ptr && !poolGrow(pool))
-    return NULL;
-  for (;;) {
-    XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end);
-    if (ptr == end)
-      break;
-    if (!poolGrow(pool))
-      return NULL;
-  }
-  return pool->start;
-}
-
-static const XML_Char * FASTCALL
-poolCopyString(STRING_POOL *pool, const XML_Char *s)
-{
-  do {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-  } while (*s++);
-  s = pool->start;
-  poolFinish(pool);
-  return s;
-}
-
-static const XML_Char *
-poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n)
-{
-  if (!pool->ptr && !poolGrow(pool))
-    return NULL;
-  for (; n > 0; --n, s++) {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-  }
-  s = pool->start;
-  poolFinish(pool);
-  return s;
-}
-
-static const XML_Char * FASTCALL
-poolAppendString(STRING_POOL *pool, const XML_Char *s)
-{
-  while (*s) {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-    s++;
-  }
-  return pool->start;
-}
-
-static XML_Char *
-poolStoreString(STRING_POOL *pool, const ENCODING *enc,
-                const char *ptr, const char *end)
-{
-  if (!poolAppend(pool, enc, ptr, end))
-    return NULL;
-  if (pool->ptr == pool->end && !poolGrow(pool))
-    return NULL;
-  *(pool->ptr)++ = 0;
-  return pool->start;
-}
-
-static XML_Bool FASTCALL
-poolGrow(STRING_POOL *pool)
-{
-  if (pool->freeBlocks) {
-    if (pool->start == 0) {
-      pool->blocks = pool->freeBlocks;
-      pool->freeBlocks = pool->freeBlocks->next;
-      pool->blocks->next = NULL;
-      pool->start = pool->blocks->s;
-      pool->end = pool->start + pool->blocks->size;
-      pool->ptr = pool->start;
-      return XML_TRUE;
-    }
-    if (pool->end - pool->start < pool->freeBlocks->size) {
-      BLOCK *tem = pool->freeBlocks->next;
-      pool->freeBlocks->next = pool->blocks;
-      pool->blocks = pool->freeBlocks;
-      pool->freeBlocks = tem;
-      memcpy(pool->blocks->s, pool->start,
-             (pool->end - pool->start) * sizeof(XML_Char));
-      pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
-      pool->start = pool->blocks->s;
-      pool->end = pool->start + pool->blocks->size;
-      return XML_TRUE;
-    }
-  }
-  if (pool->blocks && pool->start == pool->blocks->s) {
-    int blockSize = (int)(pool->end - pool->start)*2;
-    BLOCK *temp = (BLOCK *)
-      pool->mem->realloc_fcn(pool->blocks,
-                             (offsetof(BLOCK, s)
-                              + blockSize * sizeof(XML_Char)));
-    if (temp == NULL)
-      return XML_FALSE;
-    pool->blocks = temp;
-    pool->blocks->size = blockSize;
-    pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
-    pool->start = pool->blocks->s;
-    pool->end = pool->start + blockSize;
-  }
-  else {
-    BLOCK *tem;
-    int blockSize = (int)(pool->end - pool->start);
-    if (blockSize < INIT_BLOCK_SIZE)
-      blockSize = INIT_BLOCK_SIZE;
-    else
-      blockSize *= 2;
-    tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s)
-                                        + blockSize * sizeof(XML_Char));
-    if (!tem)
-      return XML_FALSE;
-    tem->size = blockSize;
-    tem->next = pool->blocks;
-    pool->blocks = tem;
-    if (pool->ptr != pool->start)
-      memcpy(tem->s, pool->start,
-             (pool->ptr - pool->start) * sizeof(XML_Char));
-    pool->ptr = tem->s + (pool->ptr - pool->start);
-    pool->start = tem->s;
-    pool->end = tem->s + blockSize;
-  }
-  return XML_TRUE;
-}
-
-static int FASTCALL
-nextScaffoldPart(XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  CONTENT_SCAFFOLD * me;
-  int next;
-
-  if (!dtd->scaffIndex) {
-    dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int));
-    if (!dtd->scaffIndex)
-      return -1;
-    dtd->scaffIndex[0] = 0;
-  }
-
-  if (dtd->scaffCount >= dtd->scaffSize) {
-    CONTENT_SCAFFOLD *temp;
-    if (dtd->scaffold) {
-      temp = (CONTENT_SCAFFOLD *)
-        REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD));
-      if (temp == NULL)
-        return -1;
-      dtd->scaffSize *= 2;
-    }
-    else {
-      temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS
-                                        * sizeof(CONTENT_SCAFFOLD));
-      if (temp == NULL)
-        return -1;
-      dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS;
-    }
-    dtd->scaffold = temp;
-  }
-  next = dtd->scaffCount++;
-  me = &dtd->scaffold[next];
-  if (dtd->scaffLevel) {
-    CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]];
-    if (parent->lastchild) {
-      dtd->scaffold[parent->lastchild].nextsib = next;
-    }
-    if (!parent->childcnt)
-      parent->firstchild = next;
-    parent->lastchild = next;
-    parent->childcnt++;
-  }
-  me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0;
-  return next;
-}
-
-static void
-build_node(XML_Parser parser,
-           int src_node,
-           XML_Content *dest,
-           XML_Content **contpos,
-           XML_Char **strpos)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  dest->type = dtd->scaffold[src_node].type;
-  dest->quant = dtd->scaffold[src_node].quant;
-  if (dest->type == XML_CTYPE_NAME) {
-    const XML_Char *src;
-    dest->name = *strpos;
-    src = dtd->scaffold[src_node].name;
-    for (;;) {
-      *(*strpos)++ = *src;
-      if (!*src)
-        break;
-      src++;
-    }
-    dest->numchildren = 0;
-    dest->children = NULL;
-  }
-  else {
-    unsigned int i;
-    int cn;
-    dest->numchildren = dtd->scaffold[src_node].childcnt;
-    dest->children = *contpos;
-    *contpos += dest->numchildren;
-    for (i = 0, cn = dtd->scaffold[src_node].firstchild;
-         i < dest->numchildren;
-         i++, cn = dtd->scaffold[cn].nextsib) {
-      build_node(parser, cn, &(dest->children[i]), contpos, strpos);
-    }
-    dest->name = NULL;
-  }
-}
-
-static XML_Content *
-build_model (XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  XML_Content *ret;
-  XML_Content *cpos;
-  XML_Char * str;
-  int allocsize = (dtd->scaffCount * sizeof(XML_Content)
-                   + (dtd->contentStringLen * sizeof(XML_Char)));
-
-  ret = (XML_Content *)MALLOC(allocsize);
-  if (!ret)
-    return NULL;
-
-  str =  (XML_Char *) (&ret[dtd->scaffCount]);
-  cpos = &ret[1];
-
-  build_node(parser, 0, ret, &cpos, &str);
-  return ret;
-}
-
-static ELEMENT_TYPE *
-getElementType(XML_Parser parser,
-               const ENCODING *enc,
-               const char *ptr,
-               const char *end)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end);
-  ELEMENT_TYPE *ret;
-
-  if (!name)
-    return NULL;
-  ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE));
-  if (!ret)
-    return NULL;
-  if (ret->name != name)
-    poolDiscard(&dtd->pool);
-  else {
-    poolFinish(&dtd->pool);
-    if (!setElementTypePrefix(parser, ret))
-      return NULL;
-  }
-  return ret;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlrole.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlrole.c
deleted file mode 100644
index 44772e21..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlrole.c
+++ /dev/null
@@ -1,1336 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include <stddef.h>
-
-#ifdef COMPILED_FROM_DSP
-#include "winconfig.h"
-#elif defined(MACOS_CLASSIC)
-#include "macconfig.h"
-#elif defined(__amigaos__)
-#include "amigaconfig.h"
-#elif defined(__WATCOMC__)
-#include "watcomconfig.h"
-#else
-#ifdef HAVE_EXPAT_CONFIG_H
-#include <expat_config.h>
-#endif
-#endif /* ndef COMPILED_FROM_DSP */
-
-#include "expat_external.h"
-#include "internal.h"
-#include "xmlrole.h"
-#include "ascii.h"
-
-/* Doesn't check:
-
- that ,| are not mixed in a model group
- content of literals
-
-*/
-
-static const char KW_ANY[] = {
-    ASCII_A, ASCII_N, ASCII_Y, '\0' };
-static const char KW_ATTLIST[] = {
-    ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' };
-static const char KW_CDATA[] = {
-    ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_DOCTYPE[] = {
-    ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' };
-static const char KW_ELEMENT[] = {
-    ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' };
-static const char KW_EMPTY[] = {
-    ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' };
-static const char KW_ENTITIES[] = {
-    ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S,
-    '\0' };
-static const char KW_ENTITY[] = {
-    ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' };
-static const char KW_FIXED[] = {
-    ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' };
-static const char KW_ID[] = {
-    ASCII_I, ASCII_D, '\0' };
-static const char KW_IDREF[] = {
-    ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' };
-static const char KW_IDREFS[] = {
-    ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' };
-#ifdef XML_DTD
-static const char KW_IGNORE[] = {
-    ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' };
-#endif
-static const char KW_IMPLIED[] = {
-    ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' };
-#ifdef XML_DTD
-static const char KW_INCLUDE[] = {
-    ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' };
-#endif
-static const char KW_NDATA[] = {
-    ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_NMTOKEN[] = {
-    ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' };
-static const char KW_NMTOKENS[] = {
-    ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S,
-    '\0' };
-static const char KW_NOTATION[] =
-    { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N,
-      '\0' };
-static const char KW_PCDATA[] = {
-    ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_PUBLIC[] = {
-    ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' };
-static const char KW_REQUIRED[] = {
-    ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D,
-    '\0' };
-static const char KW_SYSTEM[] = {
-    ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' };
-
-#ifndef MIN_BYTES_PER_CHAR
-#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar)
-#endif
-
-#ifdef XML_DTD
-#define setTopLevel(state) \
-  ((state)->handler = ((state)->documentEntity \
-                       ? internalSubset \
-                       : externalSubset1))
-#else /* not XML_DTD */
-#define setTopLevel(state) ((state)->handler = internalSubset)
-#endif /* not XML_DTD */
-
-typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state,
-                                   int tok,
-                                   const char *ptr,
-                                   const char *end,
-                                   const ENCODING *enc);
-
-static PROLOG_HANDLER
-  prolog0, prolog1, prolog2,
-  doctype0, doctype1, doctype2, doctype3, doctype4, doctype5,
-  internalSubset,
-  entity0, entity1, entity2, entity3, entity4, entity5, entity6,
-  entity7, entity8, entity9, entity10,
-  notation0, notation1, notation2, notation3, notation4,
-  attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6,
-  attlist7, attlist8, attlist9,
-  element0, element1, element2, element3, element4, element5, element6,
-  element7,
-#ifdef XML_DTD
-  externalSubset0, externalSubset1,
-  condSect0, condSect1, condSect2,
-#endif /* XML_DTD */
-  declClose,
-  error;
-
-static int FASTCALL common(PROLOG_STATE *state, int tok);
-
-static int PTRCALL
-prolog0(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    state->handler = prolog1;
-    return XML_ROLE_NONE;
-  case XML_TOK_XML_DECL:
-    state->handler = prolog1;
-    return XML_ROLE_XML_DECL;
-  case XML_TOK_PI:
-    state->handler = prolog1;
-    return XML_ROLE_PI;
-  case XML_TOK_COMMENT:
-    state->handler = prolog1;
-    return XML_ROLE_COMMENT;
-  case XML_TOK_BOM:
-    return XML_ROLE_NONE;
-  case XML_TOK_DECL_OPEN:
-    if (!XmlNameMatchesAscii(enc,
-                             ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                             end,
-                             KW_DOCTYPE))
-      break;
-    state->handler = doctype0;
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_INSTANCE_START:
-    state->handler = error;
-    return XML_ROLE_INSTANCE_START;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-prolog1(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_PI:
-    return XML_ROLE_PI;
-  case XML_TOK_COMMENT:
-    return XML_ROLE_COMMENT;
-  case XML_TOK_BOM:
-    return XML_ROLE_NONE;
-  case XML_TOK_DECL_OPEN:
-    if (!XmlNameMatchesAscii(enc,
-                             ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                             end,
-                             KW_DOCTYPE))
-      break;
-    state->handler = doctype0;
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_INSTANCE_START:
-    state->handler = error;
-    return XML_ROLE_INSTANCE_START;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-prolog2(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_PI:
-    return XML_ROLE_PI;
-  case XML_TOK_COMMENT:
-    return XML_ROLE_COMMENT;
-  case XML_TOK_INSTANCE_START:
-    state->handler = error;
-    return XML_ROLE_INSTANCE_START;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype0(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = doctype1;
-    return XML_ROLE_DOCTYPE_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype1(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_OPEN_BRACKET:
-    state->handler = internalSubset;
-    return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
-  case XML_TOK_DECL_CLOSE:
-    state->handler = prolog2;
-    return XML_ROLE_DOCTYPE_CLOSE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
-      state->handler = doctype3;
-      return XML_ROLE_DOCTYPE_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
-      state->handler = doctype2;
-      return XML_ROLE_DOCTYPE_NONE;
-    }
-    break;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype2(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = doctype3;
-    return XML_ROLE_DOCTYPE_PUBLIC_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype3(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = doctype4;
-    return XML_ROLE_DOCTYPE_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype4(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_OPEN_BRACKET:
-    state->handler = internalSubset;
-    return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
-  case XML_TOK_DECL_CLOSE:
-    state->handler = prolog2;
-    return XML_ROLE_DOCTYPE_CLOSE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype5(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_DECL_CLOSE:
-    state->handler = prolog2;
-    return XML_ROLE_DOCTYPE_CLOSE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-internalSubset(PROLOG_STATE *state,
-               int tok,
-               const char *ptr,
-               const char *end,
-               const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_DECL_OPEN:
-    if (XmlNameMatchesAscii(enc,
-                            ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_ENTITY)) {
-      state->handler = entity0;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_ATTLIST)) {
-      state->handler = attlist0;
-      return XML_ROLE_ATTLIST_NONE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_ELEMENT)) {
-      state->handler = element0;
-      return XML_ROLE_ELEMENT_NONE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_NOTATION)) {
-      state->handler = notation0;
-      return XML_ROLE_NOTATION_NONE;
-    }
-    break;
-  case XML_TOK_PI:
-    return XML_ROLE_PI;
-  case XML_TOK_COMMENT:
-    return XML_ROLE_COMMENT;
-  case XML_TOK_PARAM_ENTITY_REF:
-    return XML_ROLE_PARAM_ENTITY_REF;
-  case XML_TOK_CLOSE_BRACKET:
-    state->handler = doctype5;
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_NONE:
-    return XML_ROLE_NONE;
-  }
-  return common(state, tok);
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-externalSubset0(PROLOG_STATE *state,
-                int tok,
-                const char *ptr,
-                const char *end,
-                const ENCODING *enc)
-{
-  state->handler = externalSubset1;
-  if (tok == XML_TOK_XML_DECL)
-    return XML_ROLE_TEXT_DECL;
-  return externalSubset1(state, tok, ptr, end, enc);
-}
-
-static int PTRCALL
-externalSubset1(PROLOG_STATE *state,
-                int tok,
-                const char *ptr,
-                const char *end,
-                const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_COND_SECT_OPEN:
-    state->handler = condSect0;
-    return XML_ROLE_NONE;
-  case XML_TOK_COND_SECT_CLOSE:
-    if (state->includeLevel == 0)
-      break;
-    state->includeLevel -= 1;
-    return XML_ROLE_NONE;
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_CLOSE_BRACKET:
-    break;
-  case XML_TOK_NONE:
-    if (state->includeLevel)
-      break;
-    return XML_ROLE_NONE;
-  default:
-    return internalSubset(state, tok, ptr, end, enc);
-  }
-  return common(state, tok);
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-entity0(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_PERCENT:
-    state->handler = entity1;
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    state->handler = entity2;
-    return XML_ROLE_GENERAL_ENTITY_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity1(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    state->handler = entity7;
-    return XML_ROLE_PARAM_ENTITY_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity2(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
-      state->handler = entity4;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
-      state->handler = entity3;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    break;
-  case XML_TOK_LITERAL:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ENTITY_NONE;
-    return XML_ROLE_ENTITY_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity3(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = entity4;
-    return XML_ROLE_ENTITY_PUBLIC_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity4(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = entity5;
-    return XML_ROLE_ENTITY_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity5(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return XML_ROLE_ENTITY_COMPLETE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) {
-      state->handler = entity6;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    break;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity6(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ENTITY_NONE;
-    return XML_ROLE_ENTITY_NOTATION_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity7(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
-      state->handler = entity9;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
-      state->handler = entity8;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    break;
-  case XML_TOK_LITERAL:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ENTITY_NONE;
-    return XML_ROLE_ENTITY_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity8(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = entity9;
-    return XML_ROLE_ENTITY_PUBLIC_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity9(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = entity10;
-    return XML_ROLE_ENTITY_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity10(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return XML_ROLE_ENTITY_COMPLETE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation0(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_NAME:
-    state->handler = notation1;
-    return XML_ROLE_NOTATION_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation1(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
-      state->handler = notation3;
-      return XML_ROLE_NOTATION_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
-      state->handler = notation2;
-      return XML_ROLE_NOTATION_NONE;
-    }
-    break;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation2(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = notation4;
-    return XML_ROLE_NOTATION_PUBLIC_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation3(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_NOTATION_NONE;
-    return XML_ROLE_NOTATION_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation4(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_NOTATION_NONE;
-    return XML_ROLE_NOTATION_SYSTEM_ID;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return XML_ROLE_NOTATION_NO_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist0(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = attlist1;
-    return XML_ROLE_ATTLIST_ELEMENT_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist1(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = attlist2;
-    return XML_ROLE_ATTRIBUTE_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist2(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NAME:
-    {
-      static const char * const types[] = {
-        KW_CDATA,
-        KW_ID,
-        KW_IDREF,
-        KW_IDREFS,
-        KW_ENTITY,
-        KW_ENTITIES,
-        KW_NMTOKEN,
-        KW_NMTOKENS,
-      };
-      int i;
-      for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++)
-        if (XmlNameMatchesAscii(enc, ptr, end, types[i])) {
-          state->handler = attlist8;
-          return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i;
-        }
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) {
-      state->handler = attlist5;
-      return XML_ROLE_ATTLIST_NONE;
-    }
-    break;
-  case XML_TOK_OPEN_PAREN:
-    state->handler = attlist3;
-    return XML_ROLE_ATTLIST_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist3(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NMTOKEN:
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = attlist4;
-    return XML_ROLE_ATTRIBUTE_ENUM_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist4(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_CLOSE_PAREN:
-    state->handler = attlist8;
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_OR:
-    state->handler = attlist3;
-    return XML_ROLE_ATTLIST_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist5(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_OPEN_PAREN:
-    state->handler = attlist6;
-    return XML_ROLE_ATTLIST_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist6(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NAME:
-    state->handler = attlist7;
-    return XML_ROLE_ATTRIBUTE_NOTATION_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist7(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_CLOSE_PAREN:
-    state->handler = attlist8;
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_OR:
-    state->handler = attlist6;
-    return XML_ROLE_ATTLIST_NONE;
-  }
-  return common(state, tok);
-}
-
-/* default value */
-static int PTRCALL
-attlist8(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_POUND_NAME:
-    if (XmlNameMatchesAscii(enc,
-                            ptr + MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_IMPLIED)) {
-      state->handler = attlist1;
-      return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_REQUIRED)) {
-      state->handler = attlist1;
-      return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_FIXED)) {
-      state->handler = attlist9;
-      return XML_ROLE_ATTLIST_NONE;
-    }
-    break;
-  case XML_TOK_LITERAL:
-    state->handler = attlist1;
-    return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist9(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = attlist1;
-    return XML_ROLE_FIXED_ATTRIBUTE_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element0(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = element1;
-    return XML_ROLE_ELEMENT_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element1(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-      return XML_ROLE_CONTENT_EMPTY;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-      return XML_ROLE_CONTENT_ANY;
-    }
-    break;
-  case XML_TOK_OPEN_PAREN:
-    state->handler = element2;
-    state->level = 1;
-    return XML_ROLE_GROUP_OPEN;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element2(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_POUND_NAME:
-    if (XmlNameMatchesAscii(enc,
-                            ptr + MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_PCDATA)) {
-      state->handler = element3;
-      return XML_ROLE_CONTENT_PCDATA;
-    }
-    break;
-  case XML_TOK_OPEN_PAREN:
-    state->level = 2;
-    state->handler = element6;
-    return XML_ROLE_GROUP_OPEN;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT;
-  case XML_TOK_NAME_QUESTION:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_OPT;
-  case XML_TOK_NAME_ASTERISK:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_REP;
-  case XML_TOK_NAME_PLUS:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_PLUS;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element3(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_CLOSE_PAREN:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ELEMENT_NONE;
-    return XML_ROLE_GROUP_CLOSE;
-  case XML_TOK_CLOSE_PAREN_ASTERISK:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ELEMENT_NONE;
-    return XML_ROLE_GROUP_CLOSE_REP;
-  case XML_TOK_OR:
-    state->handler = element4;
-    return XML_ROLE_ELEMENT_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element4(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = element5;
-    return XML_ROLE_CONTENT_ELEMENT;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element5(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_CLOSE_PAREN_ASTERISK:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ELEMENT_NONE;
-    return XML_ROLE_GROUP_CLOSE_REP;
-  case XML_TOK_OR:
-    state->handler = element4;
-    return XML_ROLE_ELEMENT_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element6(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_OPEN_PAREN:
-    state->level += 1;
-    return XML_ROLE_GROUP_OPEN;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT;
-  case XML_TOK_NAME_QUESTION:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_OPT;
-  case XML_TOK_NAME_ASTERISK:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_REP;
-  case XML_TOK_NAME_PLUS:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_PLUS;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element7(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_CLOSE_PAREN:
-    state->level -= 1;
-    if (state->level == 0) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-    }
-    return XML_ROLE_GROUP_CLOSE;
-  case XML_TOK_CLOSE_PAREN_ASTERISK:
-    state->level -= 1;
-    if (state->level == 0) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-    }
-    return XML_ROLE_GROUP_CLOSE_REP;
-  case XML_TOK_CLOSE_PAREN_QUESTION:
-    state->level -= 1;
-    if (state->level == 0) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-    }
-    return XML_ROLE_GROUP_CLOSE_OPT;
-  case XML_TOK_CLOSE_PAREN_PLUS:
-    state->level -= 1;
-    if (state->level == 0) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-    }
-    return XML_ROLE_GROUP_CLOSE_PLUS;
-  case XML_TOK_COMMA:
-    state->handler = element6;
-    return XML_ROLE_GROUP_SEQUENCE;
-  case XML_TOK_OR:
-    state->handler = element6;
-    return XML_ROLE_GROUP_CHOICE;
-  }
-  return common(state, tok);
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-condSect0(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) {
-      state->handler = condSect1;
-      return XML_ROLE_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) {
-      state->handler = condSect2;
-      return XML_ROLE_NONE;
-    }
-    break;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-condSect1(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_OPEN_BRACKET:
-    state->handler = externalSubset1;
-    state->includeLevel += 1;
-    return XML_ROLE_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-condSect2(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_OPEN_BRACKET:
-    state->handler = externalSubset1;
-    return XML_ROLE_IGNORE_SECT;
-  }
-  return common(state, tok);
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-declClose(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return state->role_none;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return state->role_none;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-error(PROLOG_STATE *state,
-      int tok,
-      const char *ptr,
-      const char *end,
-      const ENCODING *enc)
-{
-  return XML_ROLE_NONE;
-}
-
-static int FASTCALL
-common(PROLOG_STATE *state, int tok)
-{
-#ifdef XML_DTD
-  if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF)
-    return XML_ROLE_INNER_PARAM_ENTITY_REF;
-#endif
-  state->handler = error;
-  return XML_ROLE_ERROR;
-}
-
-void
-XmlPrologStateInit(PROLOG_STATE *state)
-{
-  state->handler = prolog0;
-#ifdef XML_DTD
-  state->documentEntity = 1;
-  state->includeLevel = 0;
-  state->inEntityValue = 0;
-#endif /* XML_DTD */
-}
-
-#ifdef XML_DTD
-
-void
-XmlPrologStateInitExternalEntity(PROLOG_STATE *state)
-{
-  state->handler = externalSubset0;
-  state->documentEntity = 0;
-  state->includeLevel = 0;
-}
-
-#endif /* XML_DTD */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlrole.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlrole.h
deleted file mode 100644
index 4dd9f06f..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmlrole.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef XmlRole_INCLUDED
-#define XmlRole_INCLUDED 1
-
-#ifdef __VMS
-/*      0        1         2         3      0        1         2         3
-        1234567890123456789012345678901     1234567890123456789012345678901 */
-#define XmlPrologStateInitExternalEntity    XmlPrologStateInitExternalEnt
-#endif
-
-#include "xmltok.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum {
-  XML_ROLE_ERROR = -1,
-  XML_ROLE_NONE = 0,
-  XML_ROLE_XML_DECL,
-  XML_ROLE_INSTANCE_START,
-  XML_ROLE_DOCTYPE_NONE,
-  XML_ROLE_DOCTYPE_NAME,
-  XML_ROLE_DOCTYPE_SYSTEM_ID,
-  XML_ROLE_DOCTYPE_PUBLIC_ID,
-  XML_ROLE_DOCTYPE_INTERNAL_SUBSET,
-  XML_ROLE_DOCTYPE_CLOSE,
-  XML_ROLE_GENERAL_ENTITY_NAME,
-  XML_ROLE_PARAM_ENTITY_NAME,
-  XML_ROLE_ENTITY_NONE,
-  XML_ROLE_ENTITY_VALUE,
-  XML_ROLE_ENTITY_SYSTEM_ID,
-  XML_ROLE_ENTITY_PUBLIC_ID,
-  XML_ROLE_ENTITY_COMPLETE,
-  XML_ROLE_ENTITY_NOTATION_NAME,
-  XML_ROLE_NOTATION_NONE,
-  XML_ROLE_NOTATION_NAME,
-  XML_ROLE_NOTATION_SYSTEM_ID,
-  XML_ROLE_NOTATION_NO_SYSTEM_ID,
-  XML_ROLE_NOTATION_PUBLIC_ID,
-  XML_ROLE_ATTRIBUTE_NAME,
-  XML_ROLE_ATTRIBUTE_TYPE_CDATA,
-  XML_ROLE_ATTRIBUTE_TYPE_ID,
-  XML_ROLE_ATTRIBUTE_TYPE_IDREF,
-  XML_ROLE_ATTRIBUTE_TYPE_IDREFS,
-  XML_ROLE_ATTRIBUTE_TYPE_ENTITY,
-  XML_ROLE_ATTRIBUTE_TYPE_ENTITIES,
-  XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN,
-  XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS,
-  XML_ROLE_ATTRIBUTE_ENUM_VALUE,
-  XML_ROLE_ATTRIBUTE_NOTATION_VALUE,
-  XML_ROLE_ATTLIST_NONE,
-  XML_ROLE_ATTLIST_ELEMENT_NAME,
-  XML_ROLE_IMPLIED_ATTRIBUTE_VALUE,
-  XML_ROLE_REQUIRED_ATTRIBUTE_VALUE,
-  XML_ROLE_DEFAULT_ATTRIBUTE_VALUE,
-  XML_ROLE_FIXED_ATTRIBUTE_VALUE,
-  XML_ROLE_ELEMENT_NONE,
-  XML_ROLE_ELEMENT_NAME,
-  XML_ROLE_CONTENT_ANY,
-  XML_ROLE_CONTENT_EMPTY,
-  XML_ROLE_CONTENT_PCDATA,
-  XML_ROLE_GROUP_OPEN,
-  XML_ROLE_GROUP_CLOSE,
-  XML_ROLE_GROUP_CLOSE_REP,
-  XML_ROLE_GROUP_CLOSE_OPT,
-  XML_ROLE_GROUP_CLOSE_PLUS,
-  XML_ROLE_GROUP_CHOICE,
-  XML_ROLE_GROUP_SEQUENCE,
-  XML_ROLE_CONTENT_ELEMENT,
-  XML_ROLE_CONTENT_ELEMENT_REP,
-  XML_ROLE_CONTENT_ELEMENT_OPT,
-  XML_ROLE_CONTENT_ELEMENT_PLUS,
-  XML_ROLE_PI,
-  XML_ROLE_COMMENT,
-#ifdef XML_DTD
-  XML_ROLE_TEXT_DECL,
-  XML_ROLE_IGNORE_SECT,
-  XML_ROLE_INNER_PARAM_ENTITY_REF,
-#endif /* XML_DTD */
-  XML_ROLE_PARAM_ENTITY_REF
-};
-
-typedef struct prolog_state {
-  int (PTRCALL *handler) (struct prolog_state *state,
-                          int tok,
-                          const char *ptr,
-                          const char *end,
-                          const ENCODING *enc);
-  unsigned level;
-  int role_none;
-#ifdef XML_DTD
-  unsigned includeLevel;
-  int documentEntity;
-  int inEntityValue;
-#endif /* XML_DTD */
-} PROLOG_STATE;
-
-void XmlPrologStateInit(PROLOG_STATE *);
-#ifdef XML_DTD
-void XmlPrologStateInitExternalEntity(PROLOG_STATE *);
-#endif /* XML_DTD */
-
-#define XmlTokenRole(state, tok, ptr, end, enc) \
- (((state)->handler)(state, tok, ptr, end, enc))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not XmlRole_INCLUDED */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok.c
deleted file mode 100644
index bf09dfc7..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok.c
+++ /dev/null
@@ -1,1651 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include <stddef.h>
-
-#ifdef COMPILED_FROM_DSP
-#include "winconfig.h"
-#elif defined(MACOS_CLASSIC)
-#include "macconfig.h"
-#elif defined(__amigaos__)
-#include "amigaconfig.h"
-#elif defined(__WATCOMC__)
-#include "watcomconfig.h"
-#else
-#ifdef HAVE_EXPAT_CONFIG_H
-#include <expat_config.h>
-#endif
-#endif /* ndef COMPILED_FROM_DSP */
-
-#include "expat_external.h"
-#include "internal.h"
-#include "xmltok.h"
-#include "nametab.h"
-
-#ifdef XML_DTD
-#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok)
-#else
-#define IGNORE_SECTION_TOK_VTABLE /* as nothing */
-#endif
-
-#define VTABLE1 \
-  { PREFIX(prologTok), PREFIX(contentTok), \
-    PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \
-  { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \
-  PREFIX(sameName), \
-  PREFIX(nameMatchesAscii), \
-  PREFIX(nameLength), \
-  PREFIX(skipS), \
-  PREFIX(getAtts), \
-  PREFIX(charRefNumber), \
-  PREFIX(predefinedEntityName), \
-  PREFIX(updatePosition), \
-  PREFIX(isPublicId)
-
-#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16)
-
-#define UCS2_GET_NAMING(pages, hi, lo) \
-   (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F)))
-
-/* A 2 byte UTF-8 representation splits the characters 11 bits between
-   the bottom 5 and 6 bits of the bytes.  We need 8 bits to index into
-   pages, 3 bits to add to that index and 5 bits to generate the mask.
-*/
-#define UTF8_GET_NAMING2(pages, byte) \
-    (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \
-                      + ((((byte)[0]) & 3) << 1) \
-                      + ((((byte)[1]) >> 5) & 1)] \
-         & (1 << (((byte)[1]) & 0x1F)))
-
-/* A 3 byte UTF-8 representation splits the characters 16 bits between
-   the bottom 4, 6 and 6 bits of the bytes.  We need 8 bits to index
-   into pages, 3 bits to add to that index and 5 bits to generate the
-   mask.
-*/
-#define UTF8_GET_NAMING3(pages, byte) \
-  (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \
-                             + ((((byte)[1]) >> 2) & 0xF)] \
-                       << 3) \
-                      + ((((byte)[1]) & 3) << 1) \
-                      + ((((byte)[2]) >> 5) & 1)] \
-         & (1 << (((byte)[2]) & 0x1F)))
-
-#define UTF8_GET_NAMING(pages, p, n) \
-  ((n) == 2 \
-  ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \
-  : ((n) == 3 \
-     ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \
-     : 0))
-
-/* Detection of invalid UTF-8 sequences is based on Table 3.1B
-   of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/
-   with the additional restriction of not allowing the Unicode
-   code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE).
-   Implementation details:
-     (A & 0x80) == 0     means A < 0x80
-   and
-     (A & 0xC0) == 0xC0  means A > 0xBF
-*/
-
-#define UTF8_INVALID2(p) \
-  ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0)
-
-#define UTF8_INVALID3(p) \
-  (((p)[2] & 0x80) == 0 \
-  || \
-  ((*p) == 0xEF && (p)[1] == 0xBF \
-    ? \
-    (p)[2] > 0xBD \
-    : \
-    ((p)[2] & 0xC0) == 0xC0) \
-  || \
-  ((*p) == 0xE0 \
-    ? \
-    (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \
-    : \
-    ((p)[1] & 0x80) == 0 \
-    || \
-    ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0)))
-
-#define UTF8_INVALID4(p) \
-  (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \
-  || \
-  ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \
-  || \
-  ((*p) == 0xF0 \
-    ? \
-    (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \
-    : \
-    ((p)[1] & 0x80) == 0 \
-    || \
-    ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0)))
-
-static int PTRFASTCALL
-isNever(const ENCODING *enc, const char *p)
-{
-  return 0;
-}
-
-static int PTRFASTCALL
-utf8_isName2(const ENCODING *enc, const char *p)
-{
-  return UTF8_GET_NAMING2(namePages, (const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isName3(const ENCODING *enc, const char *p)
-{
-  return UTF8_GET_NAMING3(namePages, (const unsigned char *)p);
-}
-
-#define utf8_isName4 isNever
-
-static int PTRFASTCALL
-utf8_isNmstrt2(const ENCODING *enc, const char *p)
-{
-  return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isNmstrt3(const ENCODING *enc, const char *p)
-{
-  return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p);
-}
-
-#define utf8_isNmstrt4 isNever
-
-static int PTRFASTCALL
-utf8_isInvalid2(const ENCODING *enc, const char *p)
-{
-  return UTF8_INVALID2((const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isInvalid3(const ENCODING *enc, const char *p)
-{
-  return UTF8_INVALID3((const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isInvalid4(const ENCODING *enc, const char *p)
-{
-  return UTF8_INVALID4((const unsigned char *)p);
-}
-
-struct normal_encoding {
-  ENCODING enc;
-  unsigned char type[256];
-#ifdef XML_MIN_SIZE
-  int (PTRFASTCALL *byteType)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *);
-  int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *);
-  int (PTRCALL *charMatches)(const ENCODING *, const char *, int);
-#endif /* XML_MIN_SIZE */
-  int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isName3)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isName4)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *);
-};
-
-#define AS_NORMAL_ENCODING(enc)   ((const struct normal_encoding *) (enc))
-
-#ifdef XML_MIN_SIZE
-
-#define STANDARD_VTABLE(E) \
- E ## byteType, \
- E ## isNameMin, \
- E ## isNmstrtMin, \
- E ## byteToAscii, \
- E ## charMatches,
-
-#else
-
-#define STANDARD_VTABLE(E) /* as nothing */
-
-#endif
-
-#define NORMAL_VTABLE(E) \
- E ## isName2, \
- E ## isName3, \
- E ## isName4, \
- E ## isNmstrt2, \
- E ## isNmstrt3, \
- E ## isNmstrt4, \
- E ## isInvalid2, \
- E ## isInvalid3, \
- E ## isInvalid4
-
-static int FASTCALL checkCharRefNumber(int);
-
-#include "xmltok_impl.h"
-#include "ascii.h"
-
-#ifdef XML_MIN_SIZE
-#define sb_isNameMin isNever
-#define sb_isNmstrtMin isNever
-#endif
-
-#ifdef XML_MIN_SIZE
-#define MINBPC(enc) ((enc)->minBytesPerChar)
-#else
-/* minimum bytes per character */
-#define MINBPC(enc) 1
-#endif
-
-#define SB_BYTE_TYPE(enc, p) \
-  (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)])
-
-#ifdef XML_MIN_SIZE
-static int PTRFASTCALL
-sb_byteType(const ENCODING *enc, const char *p)
-{
-  return SB_BYTE_TYPE(enc, p);
-}
-#define BYTE_TYPE(enc, p) \
- (AS_NORMAL_ENCODING(enc)->byteType(enc, p))
-#else
-#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p)
-#endif
-
-#ifdef XML_MIN_SIZE
-#define BYTE_TO_ASCII(enc, p) \
- (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p))
-static int PTRFASTCALL
-sb_byteToAscii(const ENCODING *enc, const char *p)
-{
-  return *p;
-}
-#else
-#define BYTE_TO_ASCII(enc, p) (*(p))
-#endif
-
-#define IS_NAME_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p))
-#define IS_NMSTRT_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p))
-#define IS_INVALID_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p))
-
-#ifdef XML_MIN_SIZE
-#define IS_NAME_CHAR_MINBPC(enc, p) \
- (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p))
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) \
- (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p))
-#else
-#define IS_NAME_CHAR_MINBPC(enc, p) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0)
-#endif
-
-#ifdef XML_MIN_SIZE
-#define CHAR_MATCHES(enc, p, c) \
- (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c))
-static int PTRCALL
-sb_charMatches(const ENCODING *enc, const char *p, int c)
-{
-  return *p == c;
-}
-#else
-/* c is an ASCII character */
-#define CHAR_MATCHES(enc, p, c) (*(p) == c)
-#endif
-
-#define PREFIX(ident) normal_ ## ident
-#define XML_TOK_IMPL_C
-#include "xmltok_impl.c"
-#undef XML_TOK_IMPL_C
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-enum {  /* UTF8_cvalN is value of masked first byte of N byte sequence */
-  UTF8_cval1 = 0x00,
-  UTF8_cval2 = 0xc0,
-  UTF8_cval3 = 0xe0,
-  UTF8_cval4 = 0xf0
-};
-
-static void PTRCALL
-utf8_toUtf8(const ENCODING *enc,
-            const char **fromP, const char *fromLim,
-            char **toP, const char *toLim)
-{
-  char *to;
-  const char *from;
-  if (fromLim - *fromP > toLim - *toP) {
-    /* Avoid copying partial characters. */
-    for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--)
-      if (((unsigned char)fromLim[-1] & 0xc0) != 0x80)
-        break;
-  }
-  for (to = *toP, from = *fromP; from != fromLim; from++, to++)
-    *to = *from;
-  *fromP = from;
-  *toP = to;
-}
-
-static void PTRCALL
-utf8_toUtf16(const ENCODING *enc,
-             const char **fromP, const char *fromLim,
-             unsigned short **toP, const unsigned short *toLim)
-{
-  unsigned short *to = *toP;
-  const char *from = *fromP;
-  while (from != fromLim && to != toLim) {
-    switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) {
-    case BT_LEAD2:
-      *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f));
-      from += 2;
-      break;
-    case BT_LEAD3:
-      *to++ = (unsigned short)(((from[0] & 0xf) << 12)
-                               | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f));
-      from += 3;
-      break;
-    case BT_LEAD4:
-      {
-        unsigned long n;
-        if (to + 1 == toLim)
-          goto after;
-        n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12)
-            | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f);
-        n -= 0x10000;
-        to[0] = (unsigned short)((n >> 10) | 0xD800);
-        to[1] = (unsigned short)((n & 0x3FF) | 0xDC00);
-        to += 2;
-        from += 4;
-      }
-      break;
-    default:
-      *to++ = *from++;
-      break;
-    }
-  }
-after:
-  *fromP = from;
-  *toP = to;
-}
-
-#ifdef XML_NS
-static const struct normal_encoding utf8_encoding_ns = {
-  { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
-  {
-#include "asciitab.h"
-#include "utf8tab.h"
-  },
-  STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-#endif
-
-static const struct normal_encoding utf8_encoding = {
-  { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-#include "utf8tab.h"
-  },
-  STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_utf8_encoding_ns = {
-  { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
-  {
-#include "iasciitab.h"
-#include "utf8tab.h"
-  },
-  STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-#endif
-
-static const struct normal_encoding internal_utf8_encoding = {
-  { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "iasciitab.h"
-#undef BT_COLON
-#include "utf8tab.h"
-  },
-  STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-static void PTRCALL
-latin1_toUtf8(const ENCODING *enc,
-              const char **fromP, const char *fromLim,
-              char **toP, const char *toLim)
-{
-  for (;;) {
-    unsigned char c;
-    if (*fromP == fromLim)
-      break;
-    c = (unsigned char)**fromP;
-    if (c & 0x80) {
-      if (toLim - *toP < 2)
-        break;
-      *(*toP)++ = (char)((c >> 6) | UTF8_cval2);
-      *(*toP)++ = (char)((c & 0x3f) | 0x80);
-      (*fromP)++;
-    }
-    else {
-      if (*toP == toLim)
-        break;
-      *(*toP)++ = *(*fromP)++;
-    }
-  }
-}
-
-static void PTRCALL
-latin1_toUtf16(const ENCODING *enc,
-               const char **fromP, const char *fromLim,
-               unsigned short **toP, const unsigned short *toLim)
-{
-  while (*fromP != fromLim && *toP != toLim)
-    *(*toP)++ = (unsigned char)*(*fromP)++;
-}
-
-#ifdef XML_NS
-
-static const struct normal_encoding latin1_encoding_ns = {
-  { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
-  {
-#include "asciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(sb_)
-};
-
-#endif
-
-static const struct normal_encoding latin1_encoding = {
-  { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(sb_)
-};
-
-static void PTRCALL
-ascii_toUtf8(const ENCODING *enc,
-             const char **fromP, const char *fromLim,
-             char **toP, const char *toLim)
-{
-  while (*fromP != fromLim && *toP != toLim)
-    *(*toP)++ = *(*fromP)++;
-}
-
-#ifdef XML_NS
-
-static const struct normal_encoding ascii_encoding_ns = {
-  { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
-  {
-#include "asciitab.h"
-/* BT_NONXML == 0 */
-  },
-  STANDARD_VTABLE(sb_)
-};
-
-#endif
-
-static const struct normal_encoding ascii_encoding = {
-  { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-/* BT_NONXML == 0 */
-  },
-  STANDARD_VTABLE(sb_)
-};
-
-static int PTRFASTCALL
-unicode_byte_type(char hi, char lo)
-{
-  switch ((unsigned char)hi) {
-  case 0xD8: case 0xD9: case 0xDA: case 0xDB:
-    return BT_LEAD4;
-  case 0xDC: case 0xDD: case 0xDE: case 0xDF:
-    return BT_TRAIL;
-  case 0xFF:
-    switch ((unsigned char)lo) {
-    case 0xFF:
-    case 0xFE:
-      return BT_NONXML;
-    }
-    break;
-  }
-  return BT_NONASCII;
-}
-
-#define DEFINE_UTF16_TO_UTF8(E) \
-static void  PTRCALL \
-E ## toUtf8(const ENCODING *enc, \
-            const char **fromP, const char *fromLim, \
-            char **toP, const char *toLim) \
-{ \
-  const char *from; \
-  for (from = *fromP; from != fromLim; from += 2) { \
-    int plane; \
-    unsigned char lo2; \
-    unsigned char lo = GET_LO(from); \
-    unsigned char hi = GET_HI(from); \
-    switch (hi) { \
-    case 0: \
-      if (lo < 0x80) { \
-        if (*toP == toLim) { \
-          *fromP = from; \
-          return; \
-        } \
-        *(*toP)++ = lo; \
-        break; \
-      } \
-      /* fall through */ \
-    case 0x1: case 0x2: case 0x3: \
-    case 0x4: case 0x5: case 0x6: case 0x7: \
-      if (toLim -  *toP < 2) { \
-        *fromP = from; \
-        return; \
-      } \
-      *(*toP)++ = ((lo >> 6) | (hi << 2) |  UTF8_cval2); \
-      *(*toP)++ = ((lo & 0x3f) | 0x80); \
-      break; \
-    default: \
-      if (toLim -  *toP < 3)  { \
-        *fromP = from; \
-        return; \
-      } \
-      /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \
-      *(*toP)++ = ((hi >> 4) | UTF8_cval3); \
-      *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \
-      *(*toP)++ = ((lo & 0x3f) | 0x80); \
-      break; \
-    case 0xD8: case 0xD9: case 0xDA: case 0xDB: \
-      if (toLim -  *toP < 4) { \
-        *fromP = from; \
-        return; \
-      } \
-      plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \
-      *(*toP)++ = ((plane >> 2) | UTF8_cval4); \
-      *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \
-      from += 2; \
-      lo2 = GET_LO(from); \
-      *(*toP)++ = (((lo & 0x3) << 4) \
-                   | ((GET_HI(from) & 0x3) << 2) \
-                   | (lo2 >> 6) \
-                   | 0x80); \
-      *(*toP)++ = ((lo2 & 0x3f) | 0x80); \
-      break; \
-    } \
-  } \
-  *fromP = from; \
-}
-
-#define DEFINE_UTF16_TO_UTF16(E) \
-static void  PTRCALL \
-E ## toUtf16(const ENCODING *enc, \
-             const char **fromP, const char *fromLim, \
-             unsigned short **toP, const unsigned short *toLim) \
-{ \
-  /* Avoid copying first half only of surrogate */ \
-  if (fromLim - *fromP > ((toLim - *toP) << 1) \
-      && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \
-    fromLim -= 2; \
-  for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \
-    *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \
-}
-
-#define SET2(ptr, ch) \
-  (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8)))
-#define GET_LO(ptr) ((unsigned char)(ptr)[0])
-#define GET_HI(ptr) ((unsigned char)(ptr)[1])
-
-DEFINE_UTF16_TO_UTF8(little2_)
-DEFINE_UTF16_TO_UTF16(little2_)
-
-#undef SET2
-#undef GET_LO
-#undef GET_HI
-
-#define SET2(ptr, ch) \
-  (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF)))
-#define GET_LO(ptr) ((unsigned char)(ptr)[1])
-#define GET_HI(ptr) ((unsigned char)(ptr)[0])
-
-DEFINE_UTF16_TO_UTF8(big2_)
-DEFINE_UTF16_TO_UTF16(big2_)
-
-#undef SET2
-#undef GET_LO
-#undef GET_HI
-
-#define LITTLE2_BYTE_TYPE(enc, p) \
- ((p)[1] == 0 \
-  ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \
-  : unicode_byte_type((p)[1], (p)[0]))
-#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1)
-#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c)
-#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \
-  UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0])
-#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \
-  UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0])
-
-#ifdef XML_MIN_SIZE
-
-static int PTRFASTCALL
-little2_byteType(const ENCODING *enc, const char *p)
-{
-  return LITTLE2_BYTE_TYPE(enc, p);
-}
-
-static int PTRFASTCALL
-little2_byteToAscii(const ENCODING *enc, const char *p)
-{
-  return LITTLE2_BYTE_TO_ASCII(enc, p);
-}
-
-static int PTRCALL
-little2_charMatches(const ENCODING *enc, const char *p, int c)
-{
-  return LITTLE2_CHAR_MATCHES(enc, p, c);
-}
-
-static int PTRFASTCALL
-little2_isNameMin(const ENCODING *enc, const char *p)
-{
-  return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p);
-}
-
-static int PTRFASTCALL
-little2_isNmstrtMin(const ENCODING *enc, const char *p)
-{
-  return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p);
-}
-
-#undef VTABLE
-#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16
-
-#else /* not XML_MIN_SIZE */
-
-#undef PREFIX
-#define PREFIX(ident) little2_ ## ident
-#define MINBPC(enc) 2
-/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */
-#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p)
-#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p)
-#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c)
-#define IS_NAME_CHAR(enc, p, n) 0
-#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p)
-#define IS_NMSTRT_CHAR(enc, p, n) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p)
-
-#define XML_TOK_IMPL_C
-#include "xmltok_impl.c"
-#undef XML_TOK_IMPL_C
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-#endif /* not XML_MIN_SIZE */
-
-#ifdef XML_NS
-
-static const struct normal_encoding little2_encoding_ns = {
-  { VTABLE, 2, 0,
-#if BYTEORDER == 1234
-    1
-#else
-    0
-#endif
-  },
-  {
-#include "asciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(little2_)
-};
-
-#endif
-
-static const struct normal_encoding little2_encoding = {
-  { VTABLE, 2, 0,
-#if BYTEORDER == 1234
-    1
-#else
-    0
-#endif
-  },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(little2_)
-};
-
-#if BYTEORDER != 4321
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_little2_encoding_ns = {
-  { VTABLE, 2, 0, 1 },
-  {
-#include "iasciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(little2_)
-};
-
-#endif
-
-static const struct normal_encoding internal_little2_encoding = {
-  { VTABLE, 2, 0, 1 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "iasciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(little2_)
-};
-
-#endif
-
-
-#define BIG2_BYTE_TYPE(enc, p) \
- ((p)[0] == 0 \
-  ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \
-  : unicode_byte_type((p)[0], (p)[1]))
-#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1)
-#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c)
-#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \
-  UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1])
-#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \
-  UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1])
-
-#ifdef XML_MIN_SIZE
-
-static int PTRFASTCALL
-big2_byteType(const ENCODING *enc, const char *p)
-{
-  return BIG2_BYTE_TYPE(enc, p);
-}
-
-static int PTRFASTCALL
-big2_byteToAscii(const ENCODING *enc, const char *p)
-{
-  return BIG2_BYTE_TO_ASCII(enc, p);
-}
-
-static int PTRCALL
-big2_charMatches(const ENCODING *enc, const char *p, int c)
-{
-  return BIG2_CHAR_MATCHES(enc, p, c);
-}
-
-static int PTRFASTCALL
-big2_isNameMin(const ENCODING *enc, const char *p)
-{
-  return BIG2_IS_NAME_CHAR_MINBPC(enc, p);
-}
-
-static int PTRFASTCALL
-big2_isNmstrtMin(const ENCODING *enc, const char *p)
-{
-  return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p);
-}
-
-#undef VTABLE
-#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16
-
-#else /* not XML_MIN_SIZE */
-
-#undef PREFIX
-#define PREFIX(ident) big2_ ## ident
-#define MINBPC(enc) 2
-/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */
-#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p)
-#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p)
-#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c)
-#define IS_NAME_CHAR(enc, p, n) 0
-#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p)
-#define IS_NMSTRT_CHAR(enc, p, n) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p)
-
-#define XML_TOK_IMPL_C
-#include "xmltok_impl.c"
-#undef XML_TOK_IMPL_C
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-#endif /* not XML_MIN_SIZE */
-
-#ifdef XML_NS
-
-static const struct normal_encoding big2_encoding_ns = {
-  { VTABLE, 2, 0,
-#if BYTEORDER == 4321
-  1
-#else
-  0
-#endif
-  },
-  {
-#include "asciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(big2_)
-};
-
-#endif
-
-static const struct normal_encoding big2_encoding = {
-  { VTABLE, 2, 0,
-#if BYTEORDER == 4321
-  1
-#else
-  0
-#endif
-  },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(big2_)
-};
-
-#if BYTEORDER != 1234
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_big2_encoding_ns = {
-  { VTABLE, 2, 0, 1 },
-  {
-#include "iasciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(big2_)
-};
-
-#endif
-
-static const struct normal_encoding internal_big2_encoding = {
-  { VTABLE, 2, 0, 1 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "iasciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(big2_)
-};
-
-#endif
-
-#undef PREFIX
-
-static int FASTCALL
-streqci(const char *s1, const char *s2)
-{
-  for (;;) {
-    char c1 = *s1++;
-    char c2 = *s2++;
-    if (ASCII_a <= c1 && c1 <= ASCII_z)
-      c1 += ASCII_A - ASCII_a;
-    if (ASCII_a <= c2 && c2 <= ASCII_z)
-      c2 += ASCII_A - ASCII_a;
-    if (c1 != c2)
-      return 0;
-    if (!c1)
-      break;
-  }
-  return 1;
-}
-
-static void PTRCALL
-initUpdatePosition(const ENCODING *enc, const char *ptr,
-                   const char *end, POSITION *pos)
-{
-  normal_updatePosition(&utf8_encoding.enc, ptr, end, pos);
-}
-
-static int
-toAscii(const ENCODING *enc, const char *ptr, const char *end)
-{
-  char buf[1];
-  char *p = buf;
-  XmlUtf8Convert(enc, &ptr, end, &p, p + 1);
-  if (p == buf)
-    return -1;
-  else
-    return buf[0];
-}
-
-static int FASTCALL
-isSpace(int c)
-{
-  switch (c) {
-  case 0x20:
-  case 0xD:
-  case 0xA:
-  case 0x9:
-    return 1;
-  }
-  return 0;
-}
-
-/* Return 1 if there's just optional white space or there's an S
-   followed by name=val.
-*/
-static int
-parsePseudoAttribute(const ENCODING *enc,
-                     const char *ptr,
-                     const char *end,
-                     const char **namePtr,
-                     const char **nameEndPtr,
-                     const char **valPtr,
-                     const char **nextTokPtr)
-{
-  int c;
-  char open;
-  if (ptr == end) {
-    *namePtr = NULL;
-    return 1;
-  }
-  if (!isSpace(toAscii(enc, ptr, end))) {
-    *nextTokPtr = ptr;
-    return 0;
-  }
-  do {
-    ptr += enc->minBytesPerChar;
-  } while (isSpace(toAscii(enc, ptr, end)));
-  if (ptr == end) {
-    *namePtr = NULL;
-    return 1;
-  }
-  *namePtr = ptr;
-  for (;;) {
-    c = toAscii(enc, ptr, end);
-    if (c == -1) {
-      *nextTokPtr = ptr;
-      return 0;
-    }
-    if (c == ASCII_EQUALS) {
-      *nameEndPtr = ptr;
-      break;
-    }
-    if (isSpace(c)) {
-      *nameEndPtr = ptr;
-      do {
-        ptr += enc->minBytesPerChar;
-      } while (isSpace(c = toAscii(enc, ptr, end)));
-      if (c != ASCII_EQUALS) {
-        *nextTokPtr = ptr;
-        return 0;
-      }
-      break;
-    }
-    ptr += enc->minBytesPerChar;
-  }
-  if (ptr == *namePtr) {
-    *nextTokPtr = ptr;
-    return 0;
-  }
-  ptr += enc->minBytesPerChar;
-  c = toAscii(enc, ptr, end);
-  while (isSpace(c)) {
-    ptr += enc->minBytesPerChar;
-    c = toAscii(enc, ptr, end);
-  }
-  if (c != ASCII_QUOT && c != ASCII_APOS) {
-    *nextTokPtr = ptr;
-    return 0;
-  }
-  open = (char)c;
-  ptr += enc->minBytesPerChar;
-  *valPtr = ptr;
-  for (;; ptr += enc->minBytesPerChar) {
-    c = toAscii(enc, ptr, end);
-    if (c == open)
-      break;
-    if (!(ASCII_a <= c && c <= ASCII_z)
-        && !(ASCII_A <= c && c <= ASCII_Z)
-        && !(ASCII_0 <= c && c <= ASCII_9)
-        && c != ASCII_PERIOD
-        && c != ASCII_MINUS
-        && c != ASCII_UNDERSCORE) {
-      *nextTokPtr = ptr;
-      return 0;
-    }
-  }
-  *nextTokPtr = ptr + enc->minBytesPerChar;
-  return 1;
-}
-
-static const char KW_version[] = {
-  ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0'
-};
-
-static const char KW_encoding[] = {
-  ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0'
-};
-
-static const char KW_standalone[] = {
-  ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o,
-  ASCII_n, ASCII_e, '\0'
-};
-
-static const char KW_yes[] = {
-  ASCII_y, ASCII_e, ASCII_s,  '\0'
-};
-
-static const char KW_no[] = {
-  ASCII_n, ASCII_o,  '\0'
-};
-
-static int
-doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *,
-                                                 const char *,
-                                                 const char *),
-               int isGeneralTextEntity,
-               const ENCODING *enc,
-               const char *ptr,
-               const char *end,
-               const char **badPtr,
-               const char **versionPtr,
-               const char **versionEndPtr,
-               const char **encodingName,
-               const ENCODING **encoding,
-               int *standalone)
-{
-  const char *val = NULL;
-  const char *name = NULL;
-  const char *nameEnd = NULL;
-  ptr += 5 * enc->minBytesPerChar;
-  end -= 2 * enc->minBytesPerChar;
-  if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)
-      || !name) {
-    *badPtr = ptr;
-    return 0;
-  }
-  if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) {
-    if (!isGeneralTextEntity) {
-      *badPtr = name;
-      return 0;
-    }
-  }
-  else {
-    if (versionPtr)
-      *versionPtr = val;
-    if (versionEndPtr)
-      *versionEndPtr = ptr;
-    if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
-      *badPtr = ptr;
-      return 0;
-    }
-    if (!name) {
-      if (isGeneralTextEntity) {
-        /* a TextDecl must have an EncodingDecl */
-        *badPtr = ptr;
-        return 0;
-      }
-      return 1;
-    }
-  }
-  if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) {
-    int c = toAscii(enc, val, end);
-    if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) {
-      *badPtr = val;
-      return 0;
-    }
-    if (encodingName)
-      *encodingName = val;
-    if (encoding)
-      *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar);
-    if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
-      *badPtr = ptr;
-      return 0;
-    }
-    if (!name)
-      return 1;
-  }
-  if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone)
-      || isGeneralTextEntity) {
-    *badPtr = name;
-    return 0;
-  }
-  if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) {
-    if (standalone)
-      *standalone = 1;
-  }
-  else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) {
-    if (standalone)
-      *standalone = 0;
-  }
-  else {
-    *badPtr = val;
-    return 0;
-  }
-  while (isSpace(toAscii(enc, ptr, end)))
-    ptr += enc->minBytesPerChar;
-  if (ptr != end) {
-    *badPtr = ptr;
-    return 0;
-  }
-  return 1;
-}
-
-static int FASTCALL
-checkCharRefNumber(int result)
-{
-  switch (result >> 8) {
-  case 0xD8: case 0xD9: case 0xDA: case 0xDB:
-  case 0xDC: case 0xDD: case 0xDE: case 0xDF:
-    return -1;
-  case 0:
-    if (latin1_encoding.type[result] == BT_NONXML)
-      return -1;
-    break;
-  case 0xFF:
-    if (result == 0xFFFE || result == 0xFFFF)
-      return -1;
-    break;
-  }
-  return result;
-}
-
-int FASTCALL
-XmlUtf8Encode(int c, char *buf)
-{
-  enum {
-    /* minN is minimum legal resulting value for N byte sequence */
-    min2 = 0x80,
-    min3 = 0x800,
-    min4 = 0x10000
-  };
-
-  if (c < 0)
-    return 0;
-  if (c < min2) {
-    buf[0] = (char)(c | UTF8_cval1);
-    return 1;
-  }
-  if (c < min3) {
-    buf[0] = (char)((c >> 6) | UTF8_cval2);
-    buf[1] = (char)((c & 0x3f) | 0x80);
-    return 2;
-  }
-  if (c < min4) {
-    buf[0] = (char)((c >> 12) | UTF8_cval3);
-    buf[1] = (char)(((c >> 6) & 0x3f) | 0x80);
-    buf[2] = (char)((c & 0x3f) | 0x80);
-    return 3;
-  }
-  if (c < 0x110000) {
-    buf[0] = (char)((c >> 18) | UTF8_cval4);
-    buf[1] = (char)(((c >> 12) & 0x3f) | 0x80);
-    buf[2] = (char)(((c >> 6) & 0x3f) | 0x80);
-    buf[3] = (char)((c & 0x3f) | 0x80);
-    return 4;
-  }
-  return 0;
-}
-
-int FASTCALL
-XmlUtf16Encode(int charNum, unsigned short *buf)
-{
-  if (charNum < 0)
-    return 0;
-  if (charNum < 0x10000) {
-    buf[0] = (unsigned short)charNum;
-    return 1;
-  }
-  if (charNum < 0x110000) {
-    charNum -= 0x10000;
-    buf[0] = (unsigned short)((charNum >> 10) + 0xD800);
-    buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00);
-    return 2;
-  }
-  return 0;
-}
-
-struct unknown_encoding {
-  struct normal_encoding normal;
-  CONVERTER convert;
-  void *userData;
-  unsigned short utf16[256];
-  char utf8[256][4];
-};
-
-#define AS_UNKNOWN_ENCODING(enc)  ((const struct unknown_encoding *) (enc))
-
-int
-XmlSizeOfUnknownEncoding(void)
-{
-  return sizeof(struct unknown_encoding);
-}
-
-static int PTRFASTCALL
-unknown_isName(const ENCODING *enc, const char *p)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  int c = uenc->convert(uenc->userData, p);
-  if (c & ~0xFFFF)
-    return 0;
-  return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF);
-}
-
-static int PTRFASTCALL
-unknown_isNmstrt(const ENCODING *enc, const char *p)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  int c = uenc->convert(uenc->userData, p);
-  if (c & ~0xFFFF)
-    return 0;
-  return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF);
-}
-
-static int PTRFASTCALL
-unknown_isInvalid(const ENCODING *enc, const char *p)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  int c = uenc->convert(uenc->userData, p);
-  return (c & ~0xFFFF) || checkCharRefNumber(c) < 0;
-}
-
-static void PTRCALL
-unknown_toUtf8(const ENCODING *enc,
-               const char **fromP, const char *fromLim,
-               char **toP, const char *toLim)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  char buf[XML_UTF8_ENCODE_MAX];
-  for (;;) {
-    const char *utf8;
-    int n;
-    if (*fromP == fromLim)
-      break;
-    utf8 = uenc->utf8[(unsigned char)**fromP];
-    n = *utf8++;
-    if (n == 0) {
-      int c = uenc->convert(uenc->userData, *fromP);
-      n = XmlUtf8Encode(c, buf);
-      if (n > toLim - *toP)
-        break;
-      utf8 = buf;
-      *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
-                 - (BT_LEAD2 - 2));
-    }
-    else {
-      if (n > toLim - *toP)
-        break;
-      (*fromP)++;
-    }
-    do {
-      *(*toP)++ = *utf8++;
-    } while (--n != 0);
-  }
-}
-
-static void PTRCALL
-unknown_toUtf16(const ENCODING *enc,
-                const char **fromP, const char *fromLim,
-                unsigned short **toP, const unsigned short *toLim)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  while (*fromP != fromLim && *toP != toLim) {
-    unsigned short c = uenc->utf16[(unsigned char)**fromP];
-    if (c == 0) {
-      c = (unsigned short)
-          uenc->convert(uenc->userData, *fromP);
-      *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
-                 - (BT_LEAD2 - 2));
-    }
-    else
-      (*fromP)++;
-    *(*toP)++ = c;
-  }
-}
-
-ENCODING *
-XmlInitUnknownEncoding(void *mem,
-                       int *table,
-                       CONVERTER convert,
-                       void *userData)
-{
-  int i;
-  struct unknown_encoding *e = (struct unknown_encoding *)mem;
-  for (i = 0; i < (int)sizeof(struct normal_encoding); i++)
-    ((char *)mem)[i] = ((char *)&latin1_encoding)[i];
-  for (i = 0; i < 128; i++)
-    if (latin1_encoding.type[i] != BT_OTHER
-        && latin1_encoding.type[i] != BT_NONXML
-        && table[i] != i)
-      return 0;
-  for (i = 0; i < 256; i++) {
-    int c = table[i];
-    if (c == -1) {
-      e->normal.type[i] = BT_MALFORM;
-      /* This shouldn't really get used. */
-      e->utf16[i] = 0xFFFF;
-      e->utf8[i][0] = 1;
-      e->utf8[i][1] = 0;
-    }
-    else if (c < 0) {
-      if (c < -4)
-        return 0;
-      e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2));
-      e->utf8[i][0] = 0;
-      e->utf16[i] = 0;
-    }
-    else if (c < 0x80) {
-      if (latin1_encoding.type[c] != BT_OTHER
-          && latin1_encoding.type[c] != BT_NONXML
-          && c != i)
-        return 0;
-      e->normal.type[i] = latin1_encoding.type[c];
-      e->utf8[i][0] = 1;
-      e->utf8[i][1] = (char)c;
-      e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c);
-    }
-    else if (checkCharRefNumber(c) < 0) {
-      e->normal.type[i] = BT_NONXML;
-      /* This shouldn't really get used. */
-      e->utf16[i] = 0xFFFF;
-      e->utf8[i][0] = 1;
-      e->utf8[i][1] = 0;
-    }
-    else {
-      if (c > 0xFFFF)
-        return 0;
-      if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff))
-        e->normal.type[i] = BT_NMSTRT;
-      else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff))
-        e->normal.type[i] = BT_NAME;
-      else
-        e->normal.type[i] = BT_OTHER;
-      e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1);
-      e->utf16[i] = (unsigned short)c;
-    }
-  }
-  e->userData = userData;
-  e->convert = convert;
-  if (convert) {
-    e->normal.isName2 = unknown_isName;
-    e->normal.isName3 = unknown_isName;
-    e->normal.isName4 = unknown_isName;
-    e->normal.isNmstrt2 = unknown_isNmstrt;
-    e->normal.isNmstrt3 = unknown_isNmstrt;
-    e->normal.isNmstrt4 = unknown_isNmstrt;
-    e->normal.isInvalid2 = unknown_isInvalid;
-    e->normal.isInvalid3 = unknown_isInvalid;
-    e->normal.isInvalid4 = unknown_isInvalid;
-  }
-  e->normal.enc.utf8Convert = unknown_toUtf8;
-  e->normal.enc.utf16Convert = unknown_toUtf16;
-  return &(e->normal.enc);
-}
-
-/* If this enumeration is changed, getEncodingIndex and encodings
-must also be changed. */
-enum {
-  UNKNOWN_ENC = -1,
-  ISO_8859_1_ENC = 0,
-  US_ASCII_ENC,
-  UTF_8_ENC,
-  UTF_16_ENC,
-  UTF_16BE_ENC,
-  UTF_16LE_ENC,
-  /* must match encodingNames up to here */
-  NO_ENC
-};
-
-static const char KW_ISO_8859_1[] = {
-  ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9,
-  ASCII_MINUS, ASCII_1, '\0'
-};
-static const char KW_US_ASCII[] = {
-  ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I,
-  '\0'
-};
-static const char KW_UTF_8[] =  {
-  ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0'
-};
-static const char KW_UTF_16[] = {
-  ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0'
-};
-static const char KW_UTF_16BE[] = {
-  ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E,
-  '\0'
-};
-static const char KW_UTF_16LE[] = {
-  ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E,
-  '\0'
-};
-
-static int FASTCALL
-getEncodingIndex(const char *name)
-{
-  static const char * const encodingNames[] = {
-    KW_ISO_8859_1,
-    KW_US_ASCII,
-    KW_UTF_8,
-    KW_UTF_16,
-    KW_UTF_16BE,
-    KW_UTF_16LE,
-  };
-  int i;
-  if (name == NULL)
-    return NO_ENC;
-  for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++)
-    if (streqci(name, encodingNames[i]))
-      return i;
-  return UNKNOWN_ENC;
-}
-
-/* For binary compatibility, we store the index of the encoding
-   specified at initialization in the isUtf16 member.
-*/
-
-#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16)
-#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i)
-
-/* This is what detects the encoding.  encodingTable maps from
-   encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of
-   the external (protocol) specified encoding; state is
-   XML_CONTENT_STATE if we're parsing an external text entity, and
-   XML_PROLOG_STATE otherwise.
-*/
-
-
-static int
-initScan(const ENCODING * const *encodingTable,
-         const INIT_ENCODING *enc,
-         int state,
-         const char *ptr,
-         const char *end,
-         const char **nextTokPtr)
-{
-  const ENCODING **encPtr;
-
-  if (ptr == end)
-    return XML_TOK_NONE;
-  encPtr = enc->encPtr;
-  if (ptr + 1 == end) {
-    /* only a single byte available for auto-detection */
-#ifndef XML_DTD /* FIXME */
-    /* a well-formed document entity must have more than one byte */
-    if (state != XML_CONTENT_STATE)
-      return XML_TOK_PARTIAL;
-#endif
-    /* so we're parsing an external text entity... */
-    /* if UTF-16 was externally specified, then we need at least 2 bytes */
-    switch (INIT_ENC_INDEX(enc)) {
-    case UTF_16_ENC:
-    case UTF_16LE_ENC:
-    case UTF_16BE_ENC:
-      return XML_TOK_PARTIAL;
-    }
-    switch ((unsigned char)*ptr) {
-    case 0xFE:
-    case 0xFF:
-    case 0xEF: /* possibly first byte of UTF-8 BOM */
-      if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
-          && state == XML_CONTENT_STATE)
-        break;
-      /* fall through */
-    case 0x00:
-    case 0x3C:
-      return XML_TOK_PARTIAL;
-    }
-  }
-  else {
-    switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) {
-    case 0xFEFF:
-      if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
-          && state == XML_CONTENT_STATE)
-        break;
-      *nextTokPtr = ptr + 2;
-      *encPtr = encodingTable[UTF_16BE_ENC];
-      return XML_TOK_BOM;
-    /* 00 3C is handled in the default case */
-    case 0x3C00:
-      if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC
-           || INIT_ENC_INDEX(enc) == UTF_16_ENC)
-          && state == XML_CONTENT_STATE)
-        break;
-      *encPtr = encodingTable[UTF_16LE_ENC];
-      return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-    case 0xFFFE:
-      if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
-          && state == XML_CONTENT_STATE)
-        break;
-      *nextTokPtr = ptr + 2;
-      *encPtr = encodingTable[UTF_16LE_ENC];
-      return XML_TOK_BOM;
-    case 0xEFBB:
-      /* Maybe a UTF-8 BOM (EF BB BF) */
-      /* If there's an explicitly specified (external) encoding
-         of ISO-8859-1 or some flavour of UTF-16
-         and this is an external text entity,
-         don't look for the BOM,
-         because it might be a legal data.
-      */
-      if (state == XML_CONTENT_STATE) {
-        int e = INIT_ENC_INDEX(enc);
-        if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC
-            || e == UTF_16LE_ENC || e == UTF_16_ENC)
-          break;
-      }
-      if (ptr + 2 == end)
-        return XML_TOK_PARTIAL;
-      if ((unsigned char)ptr[2] == 0xBF) {
-        *nextTokPtr = ptr + 3;
-        *encPtr = encodingTable[UTF_8_ENC];
-        return XML_TOK_BOM;
-      }
-      break;
-    default:
-      if (ptr[0] == '\0') {
-        /* 0 isn't a legal data character. Furthermore a document
-           entity can only start with ASCII characters.  So the only
-           way this can fail to be big-endian UTF-16 if it it's an
-           external parsed general entity that's labelled as
-           UTF-16LE.
-        */
-        if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC)
-          break;
-        *encPtr = encodingTable[UTF_16BE_ENC];
-        return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-      }
-      else if (ptr[1] == '\0') {
-        /* We could recover here in the case:
-            - parsing an external entity
-            - second byte is 0
-            - no externally specified encoding
-            - no encoding declaration
-           by assuming UTF-16LE.  But we don't, because this would mean when
-           presented just with a single byte, we couldn't reliably determine
-           whether we needed further bytes.
-        */
-        if (state == XML_CONTENT_STATE)
-          break;
-        *encPtr = encodingTable[UTF_16LE_ENC];
-        return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-      }
-      break;
-    }
-  }
-  *encPtr = encodingTable[INIT_ENC_INDEX(enc)];
-  return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-}
-
-
-#define NS(x) x
-#define ns(x) x
-#define XML_TOK_NS_C
-#include "xmltok_ns.c"
-#undef XML_TOK_NS_C
-#undef NS
-#undef ns
-
-#ifdef XML_NS
-
-#define NS(x) x ## NS
-#define ns(x) x ## _ns
-
-#define XML_TOK_NS_C
-#include "xmltok_ns.c"
-#undef XML_TOK_NS_C
-
-#undef NS
-#undef ns
-
-ENCODING *
-XmlInitUnknownEncodingNS(void *mem,
-                         int *table,
-                         CONVERTER convert,
-                         void *userData)
-{
-  ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData);
-  if (enc)
-    ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON;
-  return enc;
-}
-
-#endif /* XML_NS */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok.h
deleted file mode 100644
index ca867aa6..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok.h
+++ /dev/null
@@ -1,316 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef XmlTok_INCLUDED
-#define XmlTok_INCLUDED 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The following token may be returned by XmlContentTok */
-#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
-                                    start of illegal ]]> sequence */
-/* The following tokens may be returned by both XmlPrologTok and
-   XmlContentTok.
-*/
-#define XML_TOK_NONE -4          /* The string to be scanned is empty */
-#define XML_TOK_TRAILING_CR -3   /* A CR at the end of the scan;
-                                    might be part of CRLF sequence */
-#define XML_TOK_PARTIAL_CHAR -2  /* only part of a multibyte sequence */
-#define XML_TOK_PARTIAL -1       /* only part of a token */
-#define XML_TOK_INVALID 0
-
-/* The following tokens are returned by XmlContentTok; some are also
-   returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok.
-*/
-#define XML_TOK_START_TAG_WITH_ATTS 1
-#define XML_TOK_START_TAG_NO_ATTS 2
-#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */
-#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4
-#define XML_TOK_END_TAG 5
-#define XML_TOK_DATA_CHARS 6
-#define XML_TOK_DATA_NEWLINE 7
-#define XML_TOK_CDATA_SECT_OPEN 8
-#define XML_TOK_ENTITY_REF 9
-#define XML_TOK_CHAR_REF 10               /* numeric character reference */
-
-/* The following tokens may be returned by both XmlPrologTok and
-   XmlContentTok.
-*/
-#define XML_TOK_PI 11                     /* processing instruction */
-#define XML_TOK_XML_DECL 12               /* XML decl or text decl */
-#define XML_TOK_COMMENT 13
-#define XML_TOK_BOM 14                    /* Byte order mark */
-
-/* The following tokens are returned only by XmlPrologTok */
-#define XML_TOK_PROLOG_S 15
-#define XML_TOK_DECL_OPEN 16              /* <!foo */
-#define XML_TOK_DECL_CLOSE 17             /* > */
-#define XML_TOK_NAME 18
-#define XML_TOK_NMTOKEN 19
-#define XML_TOK_POUND_NAME 20             /* #name */
-#define XML_TOK_OR 21                     /* | */
-#define XML_TOK_PERCENT 22
-#define XML_TOK_OPEN_PAREN 23
-#define XML_TOK_CLOSE_PAREN 24
-#define XML_TOK_OPEN_BRACKET 25
-#define XML_TOK_CLOSE_BRACKET 26
-#define XML_TOK_LITERAL 27
-#define XML_TOK_PARAM_ENTITY_REF 28
-#define XML_TOK_INSTANCE_START 29
-
-/* The following occur only in element type declarations */
-#define XML_TOK_NAME_QUESTION 30          /* name? */
-#define XML_TOK_NAME_ASTERISK 31          /* name* */
-#define XML_TOK_NAME_PLUS 32              /* name+ */
-#define XML_TOK_COND_SECT_OPEN 33         /* <![ */
-#define XML_TOK_COND_SECT_CLOSE 34        /* ]]> */
-#define XML_TOK_CLOSE_PAREN_QUESTION 35   /* )? */
-#define XML_TOK_CLOSE_PAREN_ASTERISK 36   /* )* */
-#define XML_TOK_CLOSE_PAREN_PLUS 37       /* )+ */
-#define XML_TOK_COMMA 38
-
-/* The following token is returned only by XmlAttributeValueTok */
-#define XML_TOK_ATTRIBUTE_VALUE_S 39
-
-/* The following token is returned only by XmlCdataSectionTok */
-#define XML_TOK_CDATA_SECT_CLOSE 40
-
-/* With namespace processing this is returned by XmlPrologTok for a
-   name with a colon.
-*/
-#define XML_TOK_PREFIXED_NAME 41
-
-#ifdef XML_DTD
-#define XML_TOK_IGNORE_SECT 42
-#endif /* XML_DTD */
-
-#ifdef XML_DTD
-#define XML_N_STATES 4
-#else /* not XML_DTD */
-#define XML_N_STATES 3
-#endif /* not XML_DTD */
-
-#define XML_PROLOG_STATE 0
-#define XML_CONTENT_STATE 1
-#define XML_CDATA_SECTION_STATE 2
-#ifdef XML_DTD
-#define XML_IGNORE_SECTION_STATE 3
-#endif /* XML_DTD */
-
-#define XML_N_LITERAL_TYPES 2
-#define XML_ATTRIBUTE_VALUE_LITERAL 0
-#define XML_ENTITY_VALUE_LITERAL 1
-
-/* The size of the buffer passed to XmlUtf8Encode must be at least this. */
-#define XML_UTF8_ENCODE_MAX 4
-/* The size of the buffer passed to XmlUtf16Encode must be at least this. */
-#define XML_UTF16_ENCODE_MAX 2
-
-typedef struct position {
-  /* first line and first column are 0 not 1 */
-  XML_Size lineNumber;
-  XML_Size columnNumber;
-} POSITION;
-
-typedef struct {
-  const char *name;
-  const char *valuePtr;
-  const char *valueEnd;
-  char normalized;
-} ATTRIBUTE;
-
-struct encoding;
-typedef struct encoding ENCODING;
-
-typedef int (PTRCALL *SCANNER)(const ENCODING *,
-                               const char *,
-                               const char *,
-                               const char **);
-
-struct encoding {
-  SCANNER scanners[XML_N_STATES];
-  SCANNER literalScanners[XML_N_LITERAL_TYPES];
-  int (PTRCALL *sameName)(const ENCODING *,
-                          const char *,
-                          const char *);
-  int (PTRCALL *nameMatchesAscii)(const ENCODING *,
-                                  const char *,
-                                  const char *,
-                                  const char *);
-  int (PTRFASTCALL *nameLength)(const ENCODING *, const char *);
-  const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
-  int (PTRCALL *getAtts)(const ENCODING *enc,
-                         const char *ptr,
-                         int attsMax,
-                         ATTRIBUTE *atts);
-  int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
-  int (PTRCALL *predefinedEntityName)(const ENCODING *,
-                                      const char *,
-                                      const char *);
-  void (PTRCALL *updatePosition)(const ENCODING *,
-                                 const char *ptr,
-                                 const char *end,
-                                 POSITION *);
-  int (PTRCALL *isPublicId)(const ENCODING *enc,
-                            const char *ptr,
-                            const char *end,
-                            const char **badPtr);
-  void (PTRCALL *utf8Convert)(const ENCODING *enc,
-                              const char **fromP,
-                              const char *fromLim,
-                              char **toP,
-                              const char *toLim);
-  void (PTRCALL *utf16Convert)(const ENCODING *enc,
-                               const char **fromP,
-                               const char *fromLim,
-                               unsigned short **toP,
-                               const unsigned short *toLim);
-  int minBytesPerChar;
-  char isUtf8;
-  char isUtf16;
-};
-
-/* Scan the string starting at ptr until the end of the next complete
-   token, but do not scan past eptr.  Return an integer giving the
-   type of token.
-
-   Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set.
-
-   Return XML_TOK_PARTIAL when the string does not contain a complete
-   token; nextTokPtr will not be set.
-
-   Return XML_TOK_INVALID when the string does not start a valid
-   token; nextTokPtr will be set to point to the character which made
-   the token invalid.
-
-   Otherwise the string starts with a valid token; nextTokPtr will be
-   set to point to the character following the end of that token.
-
-   Each data character counts as a single token, but adjacent data
-   characters may be returned together.  Similarly for characters in
-   the prolog outside literals, comments and processing instructions.
-*/
-
-
-#define XmlTok(enc, state, ptr, end, nextTokPtr) \
-  (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
-
-#define XmlPrologTok(enc, ptr, end, nextTokPtr) \
-   XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
-
-#define XmlContentTok(enc, ptr, end, nextTokPtr) \
-   XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
-
-#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \
-   XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
-
-#ifdef XML_DTD
-
-#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \
-   XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
-
-#endif /* XML_DTD */
-
-/* This is used for performing a 2nd-level tokenization on the content
-   of a literal that has already been returned by XmlTok.
-*/
-#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \
-  (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
-
-#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \
-   XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
-
-#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \
-   XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
-
-#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2))
-
-#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
-  (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
-
-#define XmlNameLength(enc, ptr) \
-  (((enc)->nameLength)(enc, ptr))
-
-#define XmlSkipS(enc, ptr) \
-  (((enc)->skipS)(enc, ptr))
-
-#define XmlGetAttributes(enc, ptr, attsMax, atts) \
-  (((enc)->getAtts)(enc, ptr, attsMax, atts))
-
-#define XmlCharRefNumber(enc, ptr) \
-  (((enc)->charRefNumber)(enc, ptr))
-
-#define XmlPredefinedEntityName(enc, ptr, end) \
-  (((enc)->predefinedEntityName)(enc, ptr, end))
-
-#define XmlUpdatePosition(enc, ptr, end, pos) \
-  (((enc)->updatePosition)(enc, ptr, end, pos))
-
-#define XmlIsPublicId(enc, ptr, end, badPtr) \
-  (((enc)->isPublicId)(enc, ptr, end, badPtr))
-
-#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \
-  (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
-
-#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \
-  (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
-
-typedef struct {
-  ENCODING initEnc;
-  const ENCODING **encPtr;
-} INIT_ENCODING;
-
-int XmlParseXmlDecl(int isGeneralTextEntity,
-                    const ENCODING *enc,
-                    const char *ptr,
-                    const char *end,
-                    const char **badPtr,
-                    const char **versionPtr,
-                    const char **versionEndPtr,
-                    const char **encodingNamePtr,
-                    const ENCODING **namedEncodingPtr,
-                    int *standalonePtr);
-
-int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
-const ENCODING *XmlGetUtf8InternalEncoding(void);
-const ENCODING *XmlGetUtf16InternalEncoding(void);
-int FASTCALL XmlUtf8Encode(int charNumber, char *buf);
-int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
-int XmlSizeOfUnknownEncoding(void);
-
-
-typedef int (XMLCALL *CONVERTER) (void *userData, const char *p);
-
-ENCODING *
-XmlInitUnknownEncoding(void *mem,
-                       int *table,
-                       CONVERTER convert,
-                       void *userData);
-
-int XmlParseXmlDeclNS(int isGeneralTextEntity,
-                      const ENCODING *enc,
-                      const char *ptr,
-                      const char *end,
-                      const char **badPtr,
-                      const char **versionPtr,
-                      const char **versionEndPtr,
-                      const char **encodingNamePtr,
-                      const ENCODING **namedEncodingPtr,
-                      int *standalonePtr);
-
-int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
-const ENCODING *XmlGetUtf8InternalEncodingNS(void);
-const ENCODING *XmlGetUtf16InternalEncodingNS(void);
-ENCODING *
-XmlInitUnknownEncodingNS(void *mem,
-                         int *table,
-                         CONVERTER convert,
-                         void *userData);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not XmlTok_INCLUDED */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_impl.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_impl.c
deleted file mode 100644
index 9c2895b8..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_impl.c
+++ /dev/null
@@ -1,1783 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-/* This file is included! */
-#ifdef XML_TOK_IMPL_C
-
-#ifndef IS_INVALID_CHAR
-#define IS_INVALID_CHAR(enc, ptr, n) (0)
-#endif
-
-#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \
-    case BT_LEAD ## n: \
-      if (end - ptr < n) \
-        return XML_TOK_PARTIAL_CHAR; \
-      if (IS_INVALID_CHAR(enc, ptr, n)) { \
-        *(nextTokPtr) = (ptr); \
-        return XML_TOK_INVALID; \
-      } \
-      ptr += n; \
-      break;
-
-#define INVALID_CASES(ptr, nextTokPtr) \
-  INVALID_LEAD_CASE(2, ptr, nextTokPtr) \
-  INVALID_LEAD_CASE(3, ptr, nextTokPtr) \
-  INVALID_LEAD_CASE(4, ptr, nextTokPtr) \
-  case BT_NONXML: \
-  case BT_MALFORM: \
-  case BT_TRAIL: \
-    *(nextTokPtr) = (ptr); \
-    return XML_TOK_INVALID;
-
-#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \
-   case BT_LEAD ## n: \
-     if (end - ptr < n) \
-       return XML_TOK_PARTIAL_CHAR; \
-     if (!IS_NAME_CHAR(enc, ptr, n)) { \
-       *nextTokPtr = ptr; \
-       return XML_TOK_INVALID; \
-     } \
-     ptr += n; \
-     break;
-
-#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \
-  case BT_NONASCII: \
-    if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \
-      *nextTokPtr = ptr; \
-      return XML_TOK_INVALID; \
-    } \
-  case BT_NMSTRT: \
-  case BT_HEX: \
-  case BT_DIGIT: \
-  case BT_NAME: \
-  case BT_MINUS: \
-    ptr += MINBPC(enc); \
-    break; \
-  CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \
-  CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \
-  CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr)
-
-#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \
-   case BT_LEAD ## n: \
-     if (end - ptr < n) \
-       return XML_TOK_PARTIAL_CHAR; \
-     if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \
-       *nextTokPtr = ptr; \
-       return XML_TOK_INVALID; \
-     } \
-     ptr += n; \
-     break;
-
-#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \
-  case BT_NONASCII: \
-    if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \
-      *nextTokPtr = ptr; \
-      return XML_TOK_INVALID; \
-    } \
-  case BT_NMSTRT: \
-  case BT_HEX: \
-    ptr += MINBPC(enc); \
-    break; \
-  CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \
-  CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \
-  CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr)
-
-#ifndef PREFIX
-#define PREFIX(ident) ident
-#endif
-
-/* ptr points to character following "<!-" */
-
-static int PTRCALL
-PREFIX(scanComment)(const ENCODING *enc, const char *ptr,
-                    const char *end, const char **nextTokPtr)
-{
-  if (ptr != end) {
-    if (!CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-    ptr += MINBPC(enc);
-    while (ptr != end) {
-      switch (BYTE_TYPE(enc, ptr)) {
-      INVALID_CASES(ptr, nextTokPtr)
-      case BT_MINUS:
-        if ((ptr += MINBPC(enc)) == end)
-          return XML_TOK_PARTIAL;
-        if (CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
-          if ((ptr += MINBPC(enc)) == end)
-            return XML_TOK_PARTIAL;
-          if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          }
-          *nextTokPtr = ptr + MINBPC(enc);
-          return XML_TOK_COMMENT;
-        }
-        break;
-      default:
-        ptr += MINBPC(enc);
-        break;
-      }
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "<!" */
-
-static int PTRCALL
-PREFIX(scanDecl)(const ENCODING *enc, const char *ptr,
-                 const char *end, const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  case BT_MINUS:
-    return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_LSQB:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_COND_SECT_OPEN;
-  case BT_NMSTRT:
-  case BT_HEX:
-    ptr += MINBPC(enc);
-    break;
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_PERCNT:
-      if (ptr + MINBPC(enc) == end)
-        return XML_TOK_PARTIAL;
-      /* don't allow <!ENTITY% foo "whatever"> */
-      switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) {
-      case BT_S: case BT_CR: case BT_LF: case BT_PERCNT:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      /* fall through */
-    case BT_S: case BT_CR: case BT_LF:
-      *nextTokPtr = ptr;
-      return XML_TOK_DECL_OPEN;
-    case BT_NMSTRT:
-    case BT_HEX:
-      ptr += MINBPC(enc);
-      break;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr,
-                      const char *end, int *tokPtr)
-{
-  int upper = 0;
-  *tokPtr = XML_TOK_PI;
-  if (end - ptr != MINBPC(enc)*3)
-    return 1;
-  switch (BYTE_TO_ASCII(enc, ptr)) {
-  case ASCII_x:
-    break;
-  case ASCII_X:
-    upper = 1;
-    break;
-  default:
-    return 1;
-  }
-  ptr += MINBPC(enc);
-  switch (BYTE_TO_ASCII(enc, ptr)) {
-  case ASCII_m:
-    break;
-  case ASCII_M:
-    upper = 1;
-    break;
-  default:
-    return 1;
-  }
-  ptr += MINBPC(enc);
-  switch (BYTE_TO_ASCII(enc, ptr)) {
-  case ASCII_l:
-    break;
-  case ASCII_L:
-    upper = 1;
-    break;
-  default:
-    return 1;
-  }
-  if (upper)
-    return 0;
-  *tokPtr = XML_TOK_XML_DECL;
-  return 1;
-}
-
-/* ptr points to character following "<?" */
-
-static int PTRCALL
-PREFIX(scanPi)(const ENCODING *enc, const char *ptr,
-               const char *end, const char **nextTokPtr)
-{
-  int tok;
-  const char *target = ptr;
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_S: case BT_CR: case BT_LF:
-      if (!PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      ptr += MINBPC(enc);
-      while (ptr != end) {
-        switch (BYTE_TYPE(enc, ptr)) {
-        INVALID_CASES(ptr, nextTokPtr)
-        case BT_QUEST:
-          ptr += MINBPC(enc);
-          if (ptr == end)
-            return XML_TOK_PARTIAL;
-          if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-            *nextTokPtr = ptr + MINBPC(enc);
-            return tok;
-          }
-          break;
-        default:
-          ptr += MINBPC(enc);
-          break;
-        }
-      }
-      return XML_TOK_PARTIAL;
-    case BT_QUEST:
-      if (!PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-        *nextTokPtr = ptr + MINBPC(enc);
-        return tok;
-      }
-      /* fall through */
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr,
-                         const char *end, const char **nextTokPtr)
-{
-  static const char CDATA_LSQB[] = { ASCII_C, ASCII_D, ASCII_A,
-                                     ASCII_T, ASCII_A, ASCII_LSQB };
-  int i;
-  /* CDATA[ */
-  if (end - ptr < 6 * MINBPC(enc))
-    return XML_TOK_PARTIAL;
-  for (i = 0; i < 6; i++, ptr += MINBPC(enc)) {
-    if (!CHAR_MATCHES(enc, ptr, CDATA_LSQB[i])) {
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_CDATA_SECT_OPEN;
-}
-
-static int PTRCALL
-PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr,
-                        const char *end, const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_NONE;
-  if (MINBPC(enc) > 1) {
-    size_t n = end - ptr;
-    if (n & (MINBPC(enc) - 1)) {
-      n &= ~(MINBPC(enc) - 1);
-      if (n == 0)
-        return XML_TOK_PARTIAL;
-      end = ptr + n;
-    }
-  }
-  switch (BYTE_TYPE(enc, ptr)) {
-  case BT_RSQB:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_PARTIAL;
-    if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
-      break;
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_PARTIAL;
-    if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-      ptr -= MINBPC(enc);
-      break;
-    }
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_CDATA_SECT_CLOSE;
-  case BT_CR:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_PARTIAL;
-    if (BYTE_TYPE(enc, ptr) == BT_LF)
-      ptr += MINBPC(enc);
-    *nextTokPtr = ptr;
-    return XML_TOK_DATA_NEWLINE;
-  case BT_LF:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_DATA_NEWLINE;
-  INVALID_CASES(ptr, nextTokPtr)
-  default:
-    ptr += MINBPC(enc);
-    break;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: \
-      if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
-        *nextTokPtr = ptr; \
-        return XML_TOK_DATA_CHARS; \
-      } \
-      ptr += n; \
-      break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_NONXML:
-    case BT_MALFORM:
-    case BT_TRAIL:
-    case BT_CR:
-    case BT_LF:
-    case BT_RSQB:
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_DATA_CHARS;
-}
-
-/* ptr points to character following "</" */
-
-static int PTRCALL
-PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr,
-                   const char *end, const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_S: case BT_CR: case BT_LF:
-      for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
-        switch (BYTE_TYPE(enc, ptr)) {
-        case BT_S: case BT_CR: case BT_LF:
-          break;
-        case BT_GT:
-          *nextTokPtr = ptr + MINBPC(enc);
-          return XML_TOK_END_TAG;
-        default:
-          *nextTokPtr = ptr;
-          return XML_TOK_INVALID;
-        }
-      }
-      return XML_TOK_PARTIAL;
-#ifdef XML_NS
-    case BT_COLON:
-      /* no need to check qname syntax here,
-         since end-tag must match exactly */
-      ptr += MINBPC(enc);
-      break;
-#endif
-    case BT_GT:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_END_TAG;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&#X" */
-
-static int PTRCALL
-PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr,
-                       const char *end, const char **nextTokPtr)
-{
-  if (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_DIGIT:
-    case BT_HEX:
-      break;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-    for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_DIGIT:
-      case BT_HEX:
-        break;
-      case BT_SEMI:
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_CHAR_REF;
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&#" */
-
-static int PTRCALL
-PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr,
-                    const char *end, const char **nextTokPtr)
-{
-  if (ptr != end) {
-    if (CHAR_MATCHES(enc, ptr, ASCII_x))
-      return PREFIX(scanHexCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_DIGIT:
-      break;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-    for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_DIGIT:
-        break;
-      case BT_SEMI:
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_CHAR_REF;
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&" */
-
-static int PTRCALL
-PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end,
-                const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  case BT_NUM:
-    return PREFIX(scanCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_SEMI:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_ENTITY_REF;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following first character of attribute name */
-
-static int PTRCALL
-PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
-                 const char **nextTokPtr)
-{
-#ifdef XML_NS
-  int hadColon = 0;
-#endif
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-#ifdef XML_NS
-    case BT_COLON:
-      if (hadColon) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      hadColon = 1;
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      switch (BYTE_TYPE(enc, ptr)) {
-      CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      break;
-#endif
-    case BT_S: case BT_CR: case BT_LF:
-      for (;;) {
-        int t;
-
-        ptr += MINBPC(enc);
-        if (ptr == end)
-          return XML_TOK_PARTIAL;
-        t = BYTE_TYPE(enc, ptr);
-        if (t == BT_EQUALS)
-          break;
-        switch (t) {
-        case BT_S:
-        case BT_LF:
-        case BT_CR:
-          break;
-        default:
-          *nextTokPtr = ptr;
-          return XML_TOK_INVALID;
-        }
-      }
-    /* fall through */
-    case BT_EQUALS:
-      {
-        int open;
-#ifdef XML_NS
-        hadColon = 0;
-#endif
-        for (;;) {
-          ptr += MINBPC(enc);
-          if (ptr == end)
-            return XML_TOK_PARTIAL;
-          open = BYTE_TYPE(enc, ptr);
-          if (open == BT_QUOT || open == BT_APOS)
-            break;
-          switch (open) {
-          case BT_S:
-          case BT_LF:
-          case BT_CR:
-            break;
-          default:
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          }
-        }
-        ptr += MINBPC(enc);
-        /* in attribute value */
-        for (;;) {
-          int t;
-          if (ptr == end)
-            return XML_TOK_PARTIAL;
-          t = BYTE_TYPE(enc, ptr);
-          if (t == open)
-            break;
-          switch (t) {
-          INVALID_CASES(ptr, nextTokPtr)
-          case BT_AMP:
-            {
-              int tok = PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, &ptr);
-              if (tok <= 0) {
-                if (tok == XML_TOK_INVALID)
-                  *nextTokPtr = ptr;
-                return tok;
-              }
-              break;
-            }
-          case BT_LT:
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          default:
-            ptr += MINBPC(enc);
-            break;
-          }
-        }
-        ptr += MINBPC(enc);
-        if (ptr == end)
-          return XML_TOK_PARTIAL;
-        switch (BYTE_TYPE(enc, ptr)) {
-        case BT_S:
-        case BT_CR:
-        case BT_LF:
-          break;
-        case BT_SOL:
-          goto sol;
-        case BT_GT:
-          goto gt;
-        default:
-          *nextTokPtr = ptr;
-          return XML_TOK_INVALID;
-        }
-        /* ptr points to closing quote */
-        for (;;) {
-          ptr += MINBPC(enc);
-          if (ptr == end)
-            return XML_TOK_PARTIAL;
-          switch (BYTE_TYPE(enc, ptr)) {
-          CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-          case BT_S: case BT_CR: case BT_LF:
-            continue;
-          case BT_GT:
-          gt:
-            *nextTokPtr = ptr + MINBPC(enc);
-            return XML_TOK_START_TAG_WITH_ATTS;
-          case BT_SOL:
-          sol:
-            ptr += MINBPC(enc);
-            if (ptr == end)
-              return XML_TOK_PARTIAL;
-            if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-              *nextTokPtr = ptr;
-              return XML_TOK_INVALID;
-            }
-            *nextTokPtr = ptr + MINBPC(enc);
-            return XML_TOK_EMPTY_ELEMENT_WITH_ATTS;
-          default:
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          }
-          break;
-        }
-        break;
-      }
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "<" */
-
-static int PTRCALL
-PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
-               const char **nextTokPtr)
-{
-#ifdef XML_NS
-  int hadColon;
-#endif
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  case BT_EXCL:
-    if ((ptr += MINBPC(enc)) == end)
-      return XML_TOK_PARTIAL;
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_MINUS:
-      return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-    case BT_LSQB:
-      return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc),
-                                      end, nextTokPtr);
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  case BT_QUEST:
-    return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_SOL:
-    return PREFIX(scanEndTag)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-#ifdef XML_NS
-  hadColon = 0;
-#endif
-  /* we have a start-tag */
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-#ifdef XML_NS
-    case BT_COLON:
-      if (hadColon) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      hadColon = 1;
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      switch (BYTE_TYPE(enc, ptr)) {
-      CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      break;
-#endif
-    case BT_S: case BT_CR: case BT_LF:
-      {
-        ptr += MINBPC(enc);
-        while (ptr != end) {
-          switch (BYTE_TYPE(enc, ptr)) {
-          CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-          case BT_GT:
-            goto gt;
-          case BT_SOL:
-            goto sol;
-          case BT_S: case BT_CR: case BT_LF:
-            ptr += MINBPC(enc);
-            continue;
-          default:
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          }
-          return PREFIX(scanAtts)(enc, ptr, end, nextTokPtr);
-        }
-        return XML_TOK_PARTIAL;
-      }
-    case BT_GT:
-    gt:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_START_TAG_NO_ATTS;
-    case BT_SOL:
-    sol:
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_EMPTY_ELEMENT_NO_ATTS;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
-                   const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_NONE;
-  if (MINBPC(enc) > 1) {
-    size_t n = end - ptr;
-    if (n & (MINBPC(enc) - 1)) {
-      n &= ~(MINBPC(enc) - 1);
-      if (n == 0)
-        return XML_TOK_PARTIAL;
-      end = ptr + n;
-    }
-  }
-  switch (BYTE_TYPE(enc, ptr)) {
-  case BT_LT:
-    return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_AMP:
-    return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_CR:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_TRAILING_CR;
-    if (BYTE_TYPE(enc, ptr) == BT_LF)
-      ptr += MINBPC(enc);
-    *nextTokPtr = ptr;
-    return XML_TOK_DATA_NEWLINE;
-  case BT_LF:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_DATA_NEWLINE;
-  case BT_RSQB:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_TRAILING_RSQB;
-    if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
-      break;
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_TRAILING_RSQB;
-    if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-      ptr -= MINBPC(enc);
-      break;
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  INVALID_CASES(ptr, nextTokPtr)
-  default:
-    ptr += MINBPC(enc);
-    break;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: \
-      if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
-        *nextTokPtr = ptr; \
-        return XML_TOK_DATA_CHARS; \
-      } \
-      ptr += n; \
-      break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_RSQB:
-      if (ptr + MINBPC(enc) != end) {
-         if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) {
-           ptr += MINBPC(enc);
-           break;
-         }
-         if (ptr + 2*MINBPC(enc) != end) {
-           if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) {
-             ptr += MINBPC(enc);
-             break;
-           }
-           *nextTokPtr = ptr + 2*MINBPC(enc);
-           return XML_TOK_INVALID;
-         }
-      }
-      /* fall through */
-    case BT_AMP:
-    case BT_LT:
-    case BT_NONXML:
-    case BT_MALFORM:
-    case BT_TRAIL:
-    case BT_CR:
-    case BT_LF:
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_DATA_CHARS;
-}
-
-/* ptr points to character following "%" */
-
-static int PTRCALL
-PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end,
-                    const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  case BT_S: case BT_LF: case BT_CR: case BT_PERCNT:
-    *nextTokPtr = ptr;
-    return XML_TOK_PERCENT;
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_SEMI:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_PARAM_ENTITY_REF;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end,
-                      const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_CR: case BT_LF: case BT_S:
-    case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR:
-      *nextTokPtr = ptr;
-      return XML_TOK_POUND_NAME;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return -XML_TOK_POUND_NAME;
-}
-
-static int PTRCALL
-PREFIX(scanLit)(int open, const ENCODING *enc,
-                const char *ptr, const char *end,
-                const char **nextTokPtr)
-{
-  while (ptr != end) {
-    int t = BYTE_TYPE(enc, ptr);
-    switch (t) {
-    INVALID_CASES(ptr, nextTokPtr)
-    case BT_QUOT:
-    case BT_APOS:
-      ptr += MINBPC(enc);
-      if (t != open)
-        break;
-      if (ptr == end)
-        return -XML_TOK_LITERAL;
-      *nextTokPtr = ptr;
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_S: case BT_CR: case BT_LF:
-      case BT_GT: case BT_PERCNT: case BT_LSQB:
-        return XML_TOK_LITERAL;
-      default:
-        return XML_TOK_INVALID;
-      }
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
-                  const char **nextTokPtr)
-{
-  int tok;
-  if (ptr == end)
-    return XML_TOK_NONE;
-  if (MINBPC(enc) > 1) {
-    size_t n = end - ptr;
-    if (n & (MINBPC(enc) - 1)) {
-      n &= ~(MINBPC(enc) - 1);
-      if (n == 0)
-        return XML_TOK_PARTIAL;
-      end = ptr + n;
-    }
-  }
-  switch (BYTE_TYPE(enc, ptr)) {
-  case BT_QUOT:
-    return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_APOS:
-    return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_LT:
-    {
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_EXCL:
-        return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-      case BT_QUEST:
-        return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-      case BT_NMSTRT:
-      case BT_HEX:
-      case BT_NONASCII:
-      case BT_LEAD2:
-      case BT_LEAD3:
-      case BT_LEAD4:
-        *nextTokPtr = ptr - MINBPC(enc);
-        return XML_TOK_INSTANCE_START;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  case BT_CR:
-    if (ptr + MINBPC(enc) == end) {
-      *nextTokPtr = end;
-      /* indicate that this might be part of a CR/LF pair */
-      return -XML_TOK_PROLOG_S;
-    }
-    /* fall through */
-  case BT_S: case BT_LF:
-    for (;;) {
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        break;
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_S: case BT_LF:
-        break;
-      case BT_CR:
-        /* don't split CR/LF pair */
-        if (ptr + MINBPC(enc) != end)
-          break;
-        /* fall through */
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_PROLOG_S;
-      }
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_PROLOG_S;
-  case BT_PERCNT:
-    return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_COMMA:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_COMMA;
-  case BT_LSQB:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_OPEN_BRACKET;
-  case BT_RSQB:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return -XML_TOK_CLOSE_BRACKET;
-    if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) {
-      if (ptr + MINBPC(enc) == end)
-        return XML_TOK_PARTIAL;
-      if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) {
-        *nextTokPtr = ptr + 2*MINBPC(enc);
-        return XML_TOK_COND_SECT_CLOSE;
-      }
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_CLOSE_BRACKET;
-  case BT_LPAR:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_OPEN_PAREN;
-  case BT_RPAR:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return -XML_TOK_CLOSE_PAREN;
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_AST:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_CLOSE_PAREN_ASTERISK;
-    case BT_QUEST:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_CLOSE_PAREN_QUESTION;
-    case BT_PLUS:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_CLOSE_PAREN_PLUS;
-    case BT_CR: case BT_LF: case BT_S:
-    case BT_GT: case BT_COMMA: case BT_VERBAR:
-    case BT_RPAR:
-      *nextTokPtr = ptr;
-      return XML_TOK_CLOSE_PAREN;
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  case BT_VERBAR:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_OR;
-  case BT_GT:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_DECL_CLOSE;
-  case BT_NUM:
-    return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-#define LEAD_CASE(n) \
-  case BT_LEAD ## n: \
-    if (end - ptr < n) \
-      return XML_TOK_PARTIAL_CHAR; \
-    if (IS_NMSTRT_CHAR(enc, ptr, n)) { \
-      ptr += n; \
-      tok = XML_TOK_NAME; \
-      break; \
-    } \
-    if (IS_NAME_CHAR(enc, ptr, n)) { \
-      ptr += n; \
-      tok = XML_TOK_NMTOKEN; \
-      break; \
-    } \
-    *nextTokPtr = ptr; \
-    return XML_TOK_INVALID;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-  case BT_NMSTRT:
-  case BT_HEX:
-    tok = XML_TOK_NAME;
-    ptr += MINBPC(enc);
-    break;
-  case BT_DIGIT:
-  case BT_NAME:
-  case BT_MINUS:
-#ifdef XML_NS
-  case BT_COLON:
-#endif
-    tok = XML_TOK_NMTOKEN;
-    ptr += MINBPC(enc);
-    break;
-  case BT_NONASCII:
-    if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) {
-      ptr += MINBPC(enc);
-      tok = XML_TOK_NAME;
-      break;
-    }
-    if (IS_NAME_CHAR_MINBPC(enc, ptr)) {
-      ptr += MINBPC(enc);
-      tok = XML_TOK_NMTOKEN;
-      break;
-    }
-    /* fall through */
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_GT: case BT_RPAR: case BT_COMMA:
-    case BT_VERBAR: case BT_LSQB: case BT_PERCNT:
-    case BT_S: case BT_CR: case BT_LF:
-      *nextTokPtr = ptr;
-      return tok;
-#ifdef XML_NS
-    case BT_COLON:
-      ptr += MINBPC(enc);
-      switch (tok) {
-      case XML_TOK_NAME:
-        if (ptr == end)
-          return XML_TOK_PARTIAL;
-        tok = XML_TOK_PREFIXED_NAME;
-        switch (BYTE_TYPE(enc, ptr)) {
-        CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-        default:
-          tok = XML_TOK_NMTOKEN;
-          break;
-        }
-        break;
-      case XML_TOK_PREFIXED_NAME:
-        tok = XML_TOK_NMTOKEN;
-        break;
-      }
-      break;
-#endif
-    case BT_PLUS:
-      if (tok == XML_TOK_NMTOKEN)  {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_NAME_PLUS;
-    case BT_AST:
-      if (tok == XML_TOK_NMTOKEN)  {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_NAME_ASTERISK;
-    case BT_QUEST:
-      if (tok == XML_TOK_NMTOKEN)  {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_NAME_QUESTION;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return -tok;
-}
-
-static int PTRCALL
-PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr,
-                          const char *end, const char **nextTokPtr)
-{
-  const char *start;
-  if (ptr == end)
-    return XML_TOK_NONE;
-  start = ptr;
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: ptr += n; break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_AMP:
-      if (ptr == start)
-        return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_LT:
-      /* this is for inside entity references */
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    case BT_LF:
-      if (ptr == start) {
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_DATA_NEWLINE;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_CR:
-      if (ptr == start) {
-        ptr += MINBPC(enc);
-        if (ptr == end)
-          return XML_TOK_TRAILING_CR;
-        if (BYTE_TYPE(enc, ptr) == BT_LF)
-          ptr += MINBPC(enc);
-        *nextTokPtr = ptr;
-        return XML_TOK_DATA_NEWLINE;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_S:
-      if (ptr == start) {
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_ATTRIBUTE_VALUE_S;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_DATA_CHARS;
-}
-
-static int PTRCALL
-PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr,
-                       const char *end, const char **nextTokPtr)
-{
-  const char *start;
-  if (ptr == end)
-    return XML_TOK_NONE;
-  start = ptr;
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: ptr += n; break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_AMP:
-      if (ptr == start)
-        return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_PERCNT:
-      if (ptr == start) {
-        int tok =  PREFIX(scanPercent)(enc, ptr + MINBPC(enc),
-                                       end, nextTokPtr);
-        return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_LF:
-      if (ptr == start) {
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_DATA_NEWLINE;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_CR:
-      if (ptr == start) {
-        ptr += MINBPC(enc);
-        if (ptr == end)
-          return XML_TOK_TRAILING_CR;
-        if (BYTE_TYPE(enc, ptr) == BT_LF)
-          ptr += MINBPC(enc);
-        *nextTokPtr = ptr;
-        return XML_TOK_DATA_NEWLINE;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_DATA_CHARS;
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr,
-                         const char *end, const char **nextTokPtr)
-{
-  int level = 0;
-  if (MINBPC(enc) > 1) {
-    size_t n = end - ptr;
-    if (n & (MINBPC(enc) - 1)) {
-      n &= ~(MINBPC(enc) - 1);
-      end = ptr + n;
-    }
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    INVALID_CASES(ptr, nextTokPtr)
-    case BT_LT:
-      if ((ptr += MINBPC(enc)) == end)
-        return XML_TOK_PARTIAL;
-      if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) {
-        if ((ptr += MINBPC(enc)) == end)
-          return XML_TOK_PARTIAL;
-        if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) {
-          ++level;
-          ptr += MINBPC(enc);
-        }
-      }
-      break;
-    case BT_RSQB:
-      if ((ptr += MINBPC(enc)) == end)
-        return XML_TOK_PARTIAL;
-      if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) {
-        if ((ptr += MINBPC(enc)) == end)
-          return XML_TOK_PARTIAL;
-        if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-          ptr += MINBPC(enc);
-          if (level == 0) {
-            *nextTokPtr = ptr;
-            return XML_TOK_IGNORE_SECT;
-          }
-          --level;
-        }
-      }
-      break;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end,
-                   const char **badPtr)
-{
-  ptr += MINBPC(enc);
-  end -= MINBPC(enc);
-  for (; ptr != end; ptr += MINBPC(enc)) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_DIGIT:
-    case BT_HEX:
-    case BT_MINUS:
-    case BT_APOS:
-    case BT_LPAR:
-    case BT_RPAR:
-    case BT_PLUS:
-    case BT_COMMA:
-    case BT_SOL:
-    case BT_EQUALS:
-    case BT_QUEST:
-    case BT_CR:
-    case BT_LF:
-    case BT_SEMI:
-    case BT_EXCL:
-    case BT_AST:
-    case BT_PERCNT:
-    case BT_NUM:
-#ifdef XML_NS
-    case BT_COLON:
-#endif
-      break;
-    case BT_S:
-      if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) {
-        *badPtr = ptr;
-        return 0;
-      }
-      break;
-    case BT_NAME:
-    case BT_NMSTRT:
-      if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f))
-        break;
-    default:
-      switch (BYTE_TO_ASCII(enc, ptr)) {
-      case 0x24: /* $ */
-      case 0x40: /* @ */
-        break;
-      default:
-        *badPtr = ptr;
-        return 0;
-      }
-      break;
-    }
-  }
-  return 1;
-}
-
-/* This must only be called for a well-formed start-tag or empty
-   element tag.  Returns the number of attributes.  Pointers to the
-   first attsMax attributes are stored in atts.
-*/
-
-static int PTRCALL
-PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
-                int attsMax, ATTRIBUTE *atts)
-{
-  enum { other, inName, inValue } state = inName;
-  int nAtts = 0;
-  int open = 0; /* defined when state == inValue;
-                   initialization just to shut up compilers */
-
-  for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define START_NAME \
-      if (state == other) { \
-        if (nAtts < attsMax) { \
-          atts[nAtts].name = ptr; \
-          atts[nAtts].normalized = 1; \
-        } \
-        state = inName; \
-      }
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_NONASCII:
-    case BT_NMSTRT:
-    case BT_HEX:
-      START_NAME
-      break;
-#undef START_NAME
-    case BT_QUOT:
-      if (state != inValue) {
-        if (nAtts < attsMax)
-          atts[nAtts].valuePtr = ptr + MINBPC(enc);
-        state = inValue;
-        open = BT_QUOT;
-      }
-      else if (open == BT_QUOT) {
-        state = other;
-        if (nAtts < attsMax)
-          atts[nAtts].valueEnd = ptr;
-        nAtts++;
-      }
-      break;
-    case BT_APOS:
-      if (state != inValue) {
-        if (nAtts < attsMax)
-          atts[nAtts].valuePtr = ptr + MINBPC(enc);
-        state = inValue;
-        open = BT_APOS;
-      }
-      else if (open == BT_APOS) {
-        state = other;
-        if (nAtts < attsMax)
-          atts[nAtts].valueEnd = ptr;
-        nAtts++;
-      }
-      break;
-    case BT_AMP:
-      if (nAtts < attsMax)
-        atts[nAtts].normalized = 0;
-      break;
-    case BT_S:
-      if (state == inName)
-        state = other;
-      else if (state == inValue
-               && nAtts < attsMax
-               && atts[nAtts].normalized
-               && (ptr == atts[nAtts].valuePtr
-                   || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE
-                   || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE
-                   || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open))
-        atts[nAtts].normalized = 0;
-      break;
-    case BT_CR: case BT_LF:
-      /* This case ensures that the first attribute name is counted
-         Apart from that we could just change state on the quote. */
-      if (state == inName)
-        state = other;
-      else if (state == inValue && nAtts < attsMax)
-        atts[nAtts].normalized = 0;
-      break;
-    case BT_GT:
-    case BT_SOL:
-      if (state != inValue)
-        return nAtts;
-      break;
-    default:
-      break;
-    }
-  }
-  /* not reached */
-}
-
-static int PTRFASTCALL
-PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr)
-{
-  int result = 0;
-  /* skip &# */
-  ptr += 2*MINBPC(enc);
-  if (CHAR_MATCHES(enc, ptr, ASCII_x)) {
-    for (ptr += MINBPC(enc);
-         !CHAR_MATCHES(enc, ptr, ASCII_SEMI);
-         ptr += MINBPC(enc)) {
-      int c = BYTE_TO_ASCII(enc, ptr);
-      switch (c) {
-      case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4:
-      case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9:
-        result <<= 4;
-        result |= (c - ASCII_0);
-        break;
-      case ASCII_A: case ASCII_B: case ASCII_C:
-      case ASCII_D: case ASCII_E: case ASCII_F:
-        result <<= 4;
-        result += 10 + (c - ASCII_A);
-        break;
-      case ASCII_a: case ASCII_b: case ASCII_c:
-      case ASCII_d: case ASCII_e: case ASCII_f:
-        result <<= 4;
-        result += 10 + (c - ASCII_a);
-        break;
-      }
-      if (result >= 0x110000)
-        return -1;
-    }
-  }
-  else {
-    for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) {
-      int c = BYTE_TO_ASCII(enc, ptr);
-      result *= 10;
-      result += (c - ASCII_0);
-      if (result >= 0x110000)
-        return -1;
-    }
-  }
-  return checkCharRefNumber(result);
-}
-
-static int PTRCALL
-PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr,
-                             const char *end)
-{
-  switch ((end - ptr)/MINBPC(enc)) {
-  case 2:
-    if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) {
-      switch (BYTE_TO_ASCII(enc, ptr)) {
-      case ASCII_l:
-        return ASCII_LT;
-      case ASCII_g:
-        return ASCII_GT;
-      }
-    }
-    break;
-  case 3:
-    if (CHAR_MATCHES(enc, ptr, ASCII_a)) {
-      ptr += MINBPC(enc);
-      if (CHAR_MATCHES(enc, ptr, ASCII_m)) {
-        ptr += MINBPC(enc);
-        if (CHAR_MATCHES(enc, ptr, ASCII_p))
-          return ASCII_AMP;
-      }
-    }
-    break;
-  case 4:
-    switch (BYTE_TO_ASCII(enc, ptr)) {
-    case ASCII_q:
-      ptr += MINBPC(enc);
-      if (CHAR_MATCHES(enc, ptr, ASCII_u)) {
-        ptr += MINBPC(enc);
-        if (CHAR_MATCHES(enc, ptr, ASCII_o)) {
-          ptr += MINBPC(enc);
-          if (CHAR_MATCHES(enc, ptr, ASCII_t))
-            return ASCII_QUOT;
-        }
-      }
-      break;
-    case ASCII_a:
-      ptr += MINBPC(enc);
-      if (CHAR_MATCHES(enc, ptr, ASCII_p)) {
-        ptr += MINBPC(enc);
-        if (CHAR_MATCHES(enc, ptr, ASCII_o)) {
-          ptr += MINBPC(enc);
-          if (CHAR_MATCHES(enc, ptr, ASCII_s))
-            return ASCII_APOS;
-        }
-      }
-      break;
-    }
-  }
-  return 0;
-}
-
-static int PTRCALL
-PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2)
-{
-  for (;;) {
-    switch (BYTE_TYPE(enc, ptr1)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: \
-      if (*ptr1++ != *ptr2++) \
-        return 0;
-    LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2)
-#undef LEAD_CASE
-      /* fall through */
-      if (*ptr1++ != *ptr2++)
-        return 0;
-      break;
-    case BT_NONASCII:
-    case BT_NMSTRT:
-#ifdef XML_NS
-    case BT_COLON:
-#endif
-    case BT_HEX:
-    case BT_DIGIT:
-    case BT_NAME:
-    case BT_MINUS:
-      if (*ptr2++ != *ptr1++)
-        return 0;
-      if (MINBPC(enc) > 1) {
-        if (*ptr2++ != *ptr1++)
-          return 0;
-        if (MINBPC(enc) > 2) {
-          if (*ptr2++ != *ptr1++)
-            return 0;
-          if (MINBPC(enc) > 3) {
-            if (*ptr2++ != *ptr1++)
-              return 0;
-          }
-        }
-      }
-      break;
-    default:
-      if (MINBPC(enc) == 1 && *ptr1 == *ptr2)
-        return 1;
-      switch (BYTE_TYPE(enc, ptr2)) {
-      case BT_LEAD2:
-      case BT_LEAD3:
-      case BT_LEAD4:
-      case BT_NONASCII:
-      case BT_NMSTRT:
-#ifdef XML_NS
-      case BT_COLON:
-#endif
-      case BT_HEX:
-      case BT_DIGIT:
-      case BT_NAME:
-      case BT_MINUS:
-        return 0;
-      default:
-        return 1;
-      }
-    }
-  }
-  /* not reached */
-}
-
-static int PTRCALL
-PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1,
-                         const char *end1, const char *ptr2)
-{
-  for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) {
-    if (ptr1 == end1)
-      return 0;
-    if (!CHAR_MATCHES(enc, ptr1, *ptr2))
-      return 0;
-  }
-  return ptr1 == end1;
-}
-
-static int PTRFASTCALL
-PREFIX(nameLength)(const ENCODING *enc, const char *ptr)
-{
-  const char *start = ptr;
-  for (;;) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: ptr += n; break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_NONASCII:
-    case BT_NMSTRT:
-#ifdef XML_NS
-    case BT_COLON:
-#endif
-    case BT_HEX:
-    case BT_DIGIT:
-    case BT_NAME:
-    case BT_MINUS:
-      ptr += MINBPC(enc);
-      break;
-    default:
-      return (int)(ptr - start);
-    }
-  }
-}
-
-static const char * PTRFASTCALL
-PREFIX(skipS)(const ENCODING *enc, const char *ptr)
-{
-  for (;;) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_LF:
-    case BT_CR:
-    case BT_S:
-      ptr += MINBPC(enc);
-      break;
-    default:
-      return ptr;
-    }
-  }
-}
-
-static void PTRCALL
-PREFIX(updatePosition)(const ENCODING *enc,
-                       const char *ptr,
-                       const char *end,
-                       POSITION *pos)
-{
-  while (ptr < end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: \
-      ptr += n; \
-      break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_LF:
-      pos->columnNumber = (XML_Size)-1;
-      pos->lineNumber++;
-      ptr += MINBPC(enc);
-      break;
-    case BT_CR:
-      pos->lineNumber++;
-      ptr += MINBPC(enc);
-      if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF)
-        ptr += MINBPC(enc);
-      pos->columnNumber = (XML_Size)-1;
-      break;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-    pos->columnNumber++;
-  }
-}
-
-#undef DO_LEAD_CASE
-#undef MULTIBYTE_CASES
-#undef INVALID_CASES
-#undef CHECK_NAME_CASE
-#undef CHECK_NAME_CASES
-#undef CHECK_NMSTRT_CASE
-#undef CHECK_NMSTRT_CASES
-
-#endif /* XML_TOK_IMPL_C */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_impl.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_impl.h
deleted file mode 100644
index da0ea60a..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_impl.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-See the file COPYING for copying permission.
-*/
-
-enum {
-  BT_NONXML,
-  BT_MALFORM,
-  BT_LT,
-  BT_AMP,
-  BT_RSQB,
-  BT_LEAD2,
-  BT_LEAD3,
-  BT_LEAD4,
-  BT_TRAIL,
-  BT_CR,
-  BT_LF,
-  BT_GT,
-  BT_QUOT,
-  BT_APOS,
-  BT_EQUALS,
-  BT_QUEST,
-  BT_EXCL,
-  BT_SOL,
-  BT_SEMI,
-  BT_NUM,
-  BT_LSQB,
-  BT_S,
-  BT_NMSTRT,
-  BT_COLON,
-  BT_HEX,
-  BT_DIGIT,
-  BT_NAME,
-  BT_MINUS,
-  BT_OTHER, /* known not to be a name or name start character */
-  BT_NONASCII, /* might be a name or name start character */
-  BT_PERCNT,
-  BT_LPAR,
-  BT_RPAR,
-  BT_AST,
-  BT_PLUS,
-  BT_COMMA,
-  BT_VERBAR
-};
-
-#include <stddef.h>
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_ns.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_ns.c
deleted file mode 100644
index c3b88fdf..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/lib/xmltok_ns.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-/* This file is included! */
-#ifdef XML_TOK_NS_C
-
-const ENCODING *
-NS(XmlGetUtf8InternalEncoding)(void)
-{
-  return &ns(internal_utf8_encoding).enc;
-}
-
-const ENCODING *
-NS(XmlGetUtf16InternalEncoding)(void)
-{
-#if BYTEORDER == 1234
-  return &ns(internal_little2_encoding).enc;
-#elif BYTEORDER == 4321
-  return &ns(internal_big2_encoding).enc;
-#else
-  const short n = 1;
-  return (*(const char *)&n
-          ? &ns(internal_little2_encoding).enc
-          : &ns(internal_big2_encoding).enc);
-#endif
-}
-
-static const ENCODING * const NS(encodings)[] = {
-  &ns(latin1_encoding).enc,
-  &ns(ascii_encoding).enc,
-  &ns(utf8_encoding).enc,
-  &ns(big2_encoding).enc,
-  &ns(big2_encoding).enc,
-  &ns(little2_encoding).enc,
-  &ns(utf8_encoding).enc /* NO_ENC */
-};
-
-static int PTRCALL
-NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
-                   const char **nextTokPtr)
-{
-  return initScan(NS(encodings), (const INIT_ENCODING *)enc,
-                  XML_PROLOG_STATE, ptr, end, nextTokPtr);
-}
-
-static int PTRCALL
-NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
-                    const char **nextTokPtr)
-{
-  return initScan(NS(encodings), (const INIT_ENCODING *)enc,
-                  XML_CONTENT_STATE, ptr, end, nextTokPtr);
-}
-
-int
-NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
-                    const char *name)
-{
-  int i = getEncodingIndex(name);
-  if (i == UNKNOWN_ENC)
-    return 0;
-  SET_INIT_ENC_INDEX(p, i);
-  p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
-  p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
-  p->initEnc.updatePosition = initUpdatePosition;
-  p->encPtr = encPtr;
-  *encPtr = &(p->initEnc);
-  return 1;
-}
-
-static const ENCODING *
-NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
-{
-#define ENCODING_MAX 128
-  char buf[ENCODING_MAX];
-  char *p = buf;
-  int i;
-  XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
-  if (ptr != end)
-    return 0;
-  *p = 0;
-  if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
-    return enc;
-  i = getEncodingIndex(buf);
-  if (i == UNKNOWN_ENC)
-    return 0;
-  return NS(encodings)[i];
-}
-
-int
-NS(XmlParseXmlDecl)(int isGeneralTextEntity,
-                    const ENCODING *enc,
-                    const char *ptr,
-                    const char *end,
-                    const char **badPtr,
-                    const char **versionPtr,
-                    const char **versionEndPtr,
-                    const char **encodingName,
-                    const ENCODING **encoding,
-                    int *standalone)
-{
-  return doParseXmlDecl(NS(findEncoding),
-                        isGeneralTextEntity,
-                        enc,
-                        ptr,
-                        end,
-                        badPtr,
-                        versionPtr,
-                        versionEndPtr,
-                        encodingName,
-                        encoding,
-                        standalone);
-}
-
-#endif /* XML_TOK_NS_C */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/codepage.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/codepage.c
deleted file mode 100644
index 57e48ff2..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/codepage.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include "codepage.h"
-
-#if (defined(WIN32) || (defined(__WATCOMC__) && defined(__NT__)))
-#define STRICT 1
-#define WIN32_LEAN_AND_MEAN 1
-
-#include <windows.h>
-
-int
-codepageMap(int cp, int *map)
-{
-  int i;
-  CPINFO info;
-  if (!GetCPInfo(cp, &info) || info.MaxCharSize > 2)
-    return 0;
-  for (i = 0; i < 256; i++)
-    map[i] = -1;
-  if (info.MaxCharSize > 1) {
-    for (i = 0; i < MAX_LEADBYTES; i+=2) {
-      int j, lim;
-      if (info.LeadByte[i] == 0 && info.LeadByte[i + 1] == 0)
-        break;
-      lim = info.LeadByte[i + 1];
-      for (j = info.LeadByte[i]; j <= lim; j++)
-        map[j] = -2;
-    }
-  }
-  for (i = 0; i < 256; i++) {
-   if (map[i] == -1) {
-     char c = (char)i;
-     unsigned short n;
-     if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
-                             &c, 1, &n, 1) == 1)
-       map[i] = n;
-   }
-  }
-  return 1;
-}
-
-int
-codepageConvert(int cp, const char *p)
-{
-  unsigned short c;
-  if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
-                          p, 2, &c, 1) == 1)
-    return c;
-  return -1;
-}
-
-#else /* not WIN32 */
-
-int
-codepageMap(int cp, int *map)
-{
-  return 0;
-}
-
-int
-codepageConvert(int cp, const char *p)
-{
-  return -1;
-}
-
-#endif /* not WIN32 */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/codepage.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/codepage.h
deleted file mode 100644
index 6a4df688..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/codepage.h
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-int codepageMap(int cp, int *map);
-int codepageConvert(int cp, const char *p);
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/ct.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/ct.c
deleted file mode 100644
index 95903a34..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/ct.c
+++ /dev/null
@@ -1,147 +0,0 @@
-#define CHARSET_MAX 41
-
-static const char *
-getTok(const char **pp)
-{
-  enum { inAtom, inString, init, inComment };
-  int state = init;
-  const char *tokStart = 0;
-  for (;;) {
-    switch (**pp) {
-    case '\0':
-      return 0;
-    case ' ':
-    case '\r':
-    case '\t':
-    case '\n':
-      if (state == inAtom)
-        return tokStart;
-      break;
-    case '(':
-      if (state == inAtom)
-        return tokStart;
-      if (state != inString)
-        state++;
-      break;
-    case ')':
-      if (state > init)
-        --state;
-      else if (state != inString)
-        return 0;
-      break;
-    case ';':
-    case '/':
-    case '=':
-      if (state == inAtom)
-        return tokStart;
-      if (state == init)
-        return (*pp)++;
-      break;
-    case '\\':
-      ++*pp;
-      if (**pp == '\0')
-        return 0;
-      break;
-    case '"':
-      switch (state) {
-      case inString:
-        ++*pp;
-        return tokStart;
-      case inAtom:
-        return tokStart;
-      case init:
-        tokStart = *pp;
-        state = inString;
-        break;
-      }
-      break;
-    default:
-      if (state == init) {
-        tokStart = *pp;
-        state = inAtom;
-      }
-      break;
-    }
-    ++*pp;
-  }
-  /* not reached */
-}
-
-/* key must be lowercase ASCII */
-
-static int
-matchkey(const char *start, const char *end, const char *key)
-{
-  if (!start)
-    return 0;
-  for (; start != end; start++, key++)
-    if (*start != *key && *start != 'A' + (*key - 'a'))
-      return 0;
-  return *key == '\0';
-}
-
-void
-getXMLCharset(const char *buf, char *charset)
-{
-  const char *next, *p;
-
-  charset[0] = '\0';
-  next = buf;
-  p = getTok(&next);
-  if (matchkey(p, next, "text"))
-    strcpy(charset, "us-ascii");
-  else if (!matchkey(p, next, "application"))
-    return;
-  p = getTok(&next);
-  if (!p || *p != '/')
-    return;
-  p = getTok(&next);
-  if (matchkey(p, next, "xml"))
-    isXml = 1;
-  p = getTok(&next);
-  while (p) {
-    if (*p == ';') {
-      p = getTok(&next);
-      if (matchkey(p, next, "charset")) {
-        p = getTok(&next);
-        if (p && *p == '=') {
-          p = getTok(&next);
-          if (p) {
-            char *s = charset;
-            if (*p == '"') {
-              while (++p != next - 1) {
-                if (*p == '\\')
-                  ++p;
-                if (s == charset + CHARSET_MAX - 1) {
-                  charset[0] = '\0';
-                  break;
-                }
-                *s++ = *p;
-              }
-              *s++ = '\0';
-            }
-            else {
-              if (next - p > CHARSET_MAX - 1)
-                break;
-              while (p != next)
-                *s++ = *p++;
-              *s = 0;
-              break;
-            }
-          }
-        }
-      }
-    }
-  else
-    p = getTok(&next);
-  }
-}
-
-int
-main(int argc, char **argv)
-{
-  char buf[CHARSET_MAX];
-  getXMLCharset(argv[1], buf);
-  printf("charset = \"%s\"\n", buf);
-  return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/filemap.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/filemap.h
deleted file mode 100644
index 814edec2..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/filemap.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include <stddef.h>
-
-#ifdef XML_UNICODE
-int filemap(const wchar_t *name,
-            void (*processor)(const void *, size_t,
-                              const wchar_t *, void *arg),
-            void *arg);
-#else
-int filemap(const char *name,
-            void (*processor)(const void *, size_t,
-                              const char *, void *arg),
-            void *arg);
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/readfilemap.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/readfilemap.c
deleted file mode 100644
index bd32b934..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/readfilemap.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifdef __WATCOMC__
-#ifndef __LINUX__
-#include <io.h>
-#else
-#include <unistd.h>
-#endif
-#endif
-
-#ifdef __BEOS__
-#include <unistd.h>
-#endif
-
-#ifndef S_ISREG
-#ifndef S_IFREG
-#define S_IFREG _S_IFREG
-#endif
-#ifndef S_IFMT
-#define S_IFMT _S_IFMT
-#endif
-#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#endif /* not S_ISREG */
-
-#ifndef O_BINARY
-#ifdef _O_BINARY
-#define O_BINARY _O_BINARY
-#else
-#define O_BINARY 0
-#endif
-#endif
-
-#include "filemap.h"
-
-int
-filemap(const char *name,
-        void (*processor)(const void *, size_t, const char *, void *arg),
-        void *arg)
-{
-  size_t nbytes;
-  int fd;
-  int n;
-  struct stat sb;
-  void *p;
-
-  fd = open(name, O_RDONLY|O_BINARY);
-  if (fd < 0) {
-    perror(name);
-    return 0;
-  }
-  if (fstat(fd, &sb) < 0) {
-    perror(name);
-    close(fd);
-    return 0;
-  }
-  if (!S_ISREG(sb.st_mode)) {
-    fprintf(stderr, "%s: not a regular file\n", name);
-    close(fd);
-    return 0;
-  }
-  nbytes = sb.st_size;
-  /* malloc will return NULL with nbytes == 0, handle files with size 0 */
-  if (nbytes == 0) {
-    static const char c = '\0';
-    processor(&c, 0, name, arg);
-    close(fd);
-    return 1;
-  }
-  p = malloc(nbytes);
-  if (!p) {
-    fprintf(stderr, "%s: out of memory\n", name);
-    close(fd);
-    return 0;
-  }
-  n = read(fd, p, nbytes);
-  if (n < 0) {
-    perror(name);
-    free(p);
-    close(fd);
-    return 0;
-  }
-  if (n != nbytes) {
-    fprintf(stderr, "%s: read unexpected number of bytes\n", name);
-    free(p);
-    close(fd);
-    return 0;
-  }
-  processor(p, nbytes, name, arg);
-  free(p);
-  close(fd);
-  return 1;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/unixfilemap.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/unixfilemap.c
deleted file mode 100644
index 93adce32..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/unixfilemap.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-#include <unistd.h>
-
-#ifndef MAP_FILE
-#define MAP_FILE 0
-#endif
-
-#include "filemap.h"
-
-int
-filemap(const char *name,
-        void (*processor)(const void *, size_t, const char *, void *arg),
-        void *arg)
-{
-  int fd;
-  size_t nbytes;
-  struct stat sb;
-  void *p;
-
-  fd = open(name, O_RDONLY);
-  if (fd < 0) {
-    perror(name);
-    return 0;
-  }
-  if (fstat(fd, &sb) < 0) {
-    perror(name);
-    close(fd);
-    return 0;
-  }
-  if (!S_ISREG(sb.st_mode)) {
-    close(fd);
-    fprintf(stderr, "%s: not a regular file\n", name);
-    return 0;
-  }
-
-  nbytes = sb.st_size;
-  /* mmap fails for zero length files */
-  if (nbytes == 0) {
-    static const char c = '\0';
-    processor(&c, 0, name, arg);
-    close(fd);
-    return 1;
-  }
-  p = (void *)mmap((caddr_t)0, (size_t)nbytes, PROT_READ,
-                   MAP_FILE|MAP_PRIVATE, fd, (off_t)0);
-  if (p == (void *)-1) {
-    perror(name);
-    close(fd);
-    return 0;
-  }
-  processor(p, nbytes, name, arg);
-  munmap((caddr_t)p, nbytes);
-  close(fd);
-  return 1;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/win32filemap.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/win32filemap.c
deleted file mode 100644
index 41dc35b6..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/win32filemap.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#define STRICT 1
-#define WIN32_LEAN_AND_MEAN 1
-
-#ifdef XML_UNICODE_WCHAR_T
-#ifndef XML_UNICODE
-#define XML_UNICODE
-#endif
-#endif
-
-#ifdef XML_UNICODE
-#define UNICODE
-#define _UNICODE
-#endif /* XML_UNICODE */
-#include <windows.h>
-#include <stdio.h>
-#include <tchar.h>
-#include "filemap.h"
-
-static void win32perror(const TCHAR *);
-
-int
-filemap(const TCHAR *name,
-        void (*processor)(const void *, size_t, const TCHAR *, void *arg),
-        void *arg)
-{
-  HANDLE f;
-  HANDLE m;
-  DWORD size;
-  DWORD sizeHi;
-  void *p;
-
-  f = CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
-                          FILE_FLAG_SEQUENTIAL_SCAN, NULL);
-  if (f == INVALID_HANDLE_VALUE) {
-    win32perror(name);
-    return 0;
-  }
-  size = GetFileSize(f, &sizeHi);
-  if (size == (DWORD)-1) {
-    win32perror(name);
-    return 0;
-  }
-  if (sizeHi) {
-    _ftprintf(stderr, _T("%s: bigger than 2Gb\n"), name);
-    return 0;
-  }
-  /* CreateFileMapping barfs on zero length files */
-  if (size == 0) {
-    static const char c = '\0';
-    processor(&c, 0, name, arg);
-    CloseHandle(f);
-    return 1;
-  }
-  m = CreateFileMapping(f, NULL, PAGE_READONLY, 0, 0, NULL);
-  if (m == NULL) {
-    win32perror(name);
-    CloseHandle(f);
-    return 0;
-  }
-  p = MapViewOfFile(m, FILE_MAP_READ, 0, 0, 0);
-  if (p == NULL) {
-    win32perror(name);
-    CloseHandle(m);
-    CloseHandle(f);
-    return 0;
-  }
-  processor(p, size, name, arg); 
-  UnmapViewOfFile(p);
-  CloseHandle(m);
-  CloseHandle(f);
-  return 1;
-}
-
-static void
-win32perror(const TCHAR *s)
-{
-  LPVOID buf;
-  if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
-                    | FORMAT_MESSAGE_FROM_SYSTEM,
-                    NULL,
-                    GetLastError(),
-                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-                    (LPTSTR) &buf,
-                    0,
-                    NULL)) {
-    _ftprintf(stderr, _T("%s: %s"), s, buf);
-    fflush(stderr);
-    LocalFree(buf);
-  }
-  else
-    _ftprintf(stderr, _T("%s: unknown Windows error\n"), s);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlfile.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlfile.c
deleted file mode 100644
index 99eeeaae..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlfile.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <string.h>
-#include <fcntl.h>
-
-#ifdef COMPILED_FROM_DSP
-#include "winconfig.h"
-#elif defined(MACOS_CLASSIC)
-#include "macconfig.h"
-#elif defined(__amigaos__)
-#include "amigaconfig.h"
-#elif defined(__WATCOMC__)
-#include "watcomconfig.h"
-#elif defined(HAVE_EXPAT_CONFIG_H)
-#include <expat_config.h>
-#endif /* ndef COMPILED_FROM_DSP */
-
-#include "expat.h"
-#include "xmlfile.h"
-#include "xmltchar.h"
-#include "filemap.h"
-
-#if (defined(_MSC_VER) || (defined(__WATCOMC__) && !defined(__LINUX__)))
-#include <io.h>
-#endif
-
-#if defined(__amigaos__) && defined(__USE_INLINE__)
-#include <proto/expat.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifndef O_BINARY
-#ifdef _O_BINARY
-#define O_BINARY _O_BINARY
-#else
-#define O_BINARY 0
-#endif
-#endif
-
-#ifdef _DEBUG
-#define READ_SIZE 16
-#else
-#define READ_SIZE (1024*8)
-#endif
-
-
-typedef struct {
-  XML_Parser parser;
-  int *retPtr;
-} PROCESS_ARGS;
-
-static void
-reportError(XML_Parser parser, const XML_Char *filename)
-{
-  enum XML_Error code = XML_GetErrorCode(parser);
-  const XML_Char *message = XML_ErrorString(code);
-  if (message)
-    ftprintf(stdout, T("%s:%" XML_FMT_INT_MOD "u:%" XML_FMT_INT_MOD "u: %s\n"),
-             filename,
-             XML_GetErrorLineNumber(parser),
-             XML_GetErrorColumnNumber(parser),
-             message);
-  else
-    ftprintf(stderr, T("%s: (unknown message %d)\n"), filename, code);
-}
- 
-/* This implementation will give problems on files larger than INT_MAX. */
-static void
-processFile(const void *data, size_t size,
-            const XML_Char *filename, void *args)
-{
-  XML_Parser parser = ((PROCESS_ARGS *)args)->parser;
-  int *retPtr = ((PROCESS_ARGS *)args)->retPtr;
-  if (XML_Parse(parser, (const char *)data, (int)size, 1) == XML_STATUS_ERROR) {
-    reportError(parser, filename);
-    *retPtr = 0;
-  }
-  else
-    *retPtr = 1;
-}
-
-#if (defined(WIN32) || defined(__WATCOMC__))
-
-static int
-isAsciiLetter(XML_Char c)
-{
-  return (T('a') <= c && c <= T('z')) || (T('A') <= c && c <= T('Z'));
-}
-
-#endif /* WIN32 */
-
-static const XML_Char *
-resolveSystemId(const XML_Char *base, const XML_Char *systemId,
-                XML_Char **toFree)
-{
-  XML_Char *s;
-  *toFree = 0;
-  if (!base
-      || *systemId == T('/')
-#if (defined(WIN32) || defined(__WATCOMC__))
-      || *systemId == T('\\')
-      || (isAsciiLetter(systemId[0]) && systemId[1] == T(':'))
-#endif
-     )
-    return systemId;
-  *toFree = (XML_Char *)malloc((tcslen(base) + tcslen(systemId) + 2)
-                               * sizeof(XML_Char));
-  if (!*toFree)
-    return systemId;
-  tcscpy(*toFree, base);
-  s = *toFree;
-  if (tcsrchr(s, T('/')))
-    s = tcsrchr(s, T('/')) + 1;
-#if (defined(WIN32) || defined(__WATCOMC__))
-  if (tcsrchr(s, T('\\')))
-    s = tcsrchr(s, T('\\')) + 1;
-#endif
-  tcscpy(s, systemId);
-  return *toFree;
-}
-
-static int
-externalEntityRefFilemap(XML_Parser parser,
-                         const XML_Char *context,
-                         const XML_Char *base,
-                         const XML_Char *systemId,
-                         const XML_Char *publicId)
-{
-  int result;
-  XML_Char *s;
-  const XML_Char *filename;
-  XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0);
-  PROCESS_ARGS args;
-  args.retPtr = &result;
-  args.parser = entParser;
-  filename = resolveSystemId(base, systemId, &s);
-  XML_SetBase(entParser, filename);
-  if (!filemap(filename, processFile, &args))
-    result = 0;
-  free(s);
-  XML_ParserFree(entParser);
-  return result;
-}
-
-static int
-processStream(const XML_Char *filename, XML_Parser parser)
-{
-  /* passing NULL for filename means read intput from stdin */
-  int fd = 0;   /* 0 is the fileno for stdin */
-
-  if (filename != NULL) {
-    fd = topen(filename, O_BINARY|O_RDONLY);
-    if (fd < 0) {
-      tperror(filename);
-      return 0;
-    }
-  }
-  for (;;) {
-    int nread;
-    char *buf = (char *)XML_GetBuffer(parser, READ_SIZE);
-    if (!buf) {
-      if (filename != NULL)
-        close(fd);
-      ftprintf(stderr, T("%s: out of memory\n"),
-               filename != NULL ? filename : "xmlwf");
-      return 0;
-    }
-    nread = read(fd, buf, READ_SIZE);
-    if (nread < 0) {
-      tperror(filename != NULL ? filename : "STDIN");
-      if (filename != NULL)
-        close(fd);
-      return 0;
-    }
-    if (XML_ParseBuffer(parser, nread, nread == 0) == XML_STATUS_ERROR) {
-      reportError(parser, filename != NULL ? filename : "STDIN");
-      if (filename != NULL)
-        close(fd);
-      return 0;
-    }
-    if (nread == 0) {
-      if (filename != NULL)
-        close(fd);
-      break;;
-    }
-  }
-  return 1;
-}
-
-static int
-externalEntityRefStream(XML_Parser parser,
-                        const XML_Char *context,
-                        const XML_Char *base,
-                        const XML_Char *systemId,
-                        const XML_Char *publicId)
-{
-  XML_Char *s;
-  const XML_Char *filename;
-  int ret;
-  XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0);
-  filename = resolveSystemId(base, systemId, &s);
-  XML_SetBase(entParser, filename);
-  ret = processStream(filename, entParser);
-  free(s);
-  XML_ParserFree(entParser);
-  return ret;
-}
-
-int
-XML_ProcessFile(XML_Parser parser,
-                const XML_Char *filename,
-                unsigned flags)
-{
-  int result;
-
-  if (!XML_SetBase(parser, filename)) {
-    ftprintf(stderr, T("%s: out of memory"), filename);
-    exit(1);
-  }
-
-  if (flags & XML_EXTERNAL_ENTITIES)
-      XML_SetExternalEntityRefHandler(parser,
-                                      (flags & XML_MAP_FILE)
-                                      ? externalEntityRefFilemap
-                                      : externalEntityRefStream);
-  if (flags & XML_MAP_FILE) {
-    PROCESS_ARGS args;
-    args.retPtr = &result;
-    args.parser = parser;
-    if (!filemap(filename, processFile, &args))
-      result = 0;
-  }
-  else
-    result = processStream(filename, parser);
-  return result;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlfile.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlfile.h
deleted file mode 100644
index d093ecc0..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlfile.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#define XML_MAP_FILE 01
-#define XML_EXTERNAL_ENTITIES 02
-
-#ifdef XML_LARGE_SIZE
-#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
-#define XML_FMT_INT_MOD "I64"
-#else
-#define XML_FMT_INT_MOD "ll"
-#endif
-#else
-#define XML_FMT_INT_MOD "l"
-#endif
-
-extern int XML_ProcessFile(XML_Parser parser,
-                           const XML_Char *filename,
-                           unsigned flags);
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlmime.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlmime.c
deleted file mode 100644
index 56a0e7f4..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlmime.c
+++ /dev/null
@@ -1,163 +0,0 @@
-#include <string.h>
-#include "xmlmime.h"
-
-static const char *
-getTok(const char **pp)
-{
-  /* inComment means one level of nesting; inComment+1 means two levels etc */
-  enum { inAtom, inString, init, inComment };
-  int state = init;
-  const char *tokStart = 0;
-  for (;;) {
-    switch (**pp) {
-    case '\0':
-      if (state == inAtom)
-        return tokStart;
-      return 0;
-    case ' ':
-    case '\r':
-    case '\t':
-    case '\n':
-      if (state == inAtom)
-        return tokStart;
-      break;
-    case '(':
-      if (state == inAtom)
-        return tokStart;
-      if (state != inString)
-        state++;
-      break;
-    case ')':
-      if (state > init)
-        --state;
-      else if (state != inString)
-        return 0;
-      break;
-    case ';':
-    case '/':
-    case '=':
-      if (state == inAtom)
-        return tokStart;
-      if (state == init)
-        return (*pp)++;
-      break;
-    case '\\':
-      ++*pp;
-      if (**pp == '\0')
-        return 0;
-      break;
-    case '"':
-      switch (state) {
-      case inString:
-        ++*pp;
-        return tokStart;
-      case inAtom:
-        return tokStart;
-      case init:
-        tokStart = *pp;
-        state = inString;
-        break;
-      }
-      break;
-    default:
-      if (state == init) {
-        tokStart = *pp;
-        state = inAtom;
-      }
-      break;
-    }
-    ++*pp;
-  }
-  /* not reached */
-}
-
-/* key must be lowercase ASCII */
-
-static int
-matchkey(const char *start, const char *end, const char *key)
-{
-  if (!start)
-    return 0;
-  for (; start != end; start++, key++)
-    if (*start != *key && *start != 'A' + (*key - 'a'))
-      return 0;
-  return *key == '\0';
-}
-
-void
-getXMLCharset(const char *buf, char *charset)
-{
-  const char *next, *p;
-
-  charset[0] = '\0';
-  next = buf;
-  p = getTok(&next);
-  if (matchkey(p, next, "text"))
-    strcpy(charset, "us-ascii");
-  else if (!matchkey(p, next, "application"))
-    return;
-  p = getTok(&next);
-  if (!p || *p != '/')
-    return;
-  p = getTok(&next);
-#if 0
-  if (!matchkey(p, next, "xml") && charset[0] == '\0')
-    return;
-#endif
-  p = getTok(&next);
-  while (p) {
-    if (*p == ';') {
-      p = getTok(&next);
-      if (matchkey(p, next, "charset")) {
-        p = getTok(&next);
-        if (p && *p == '=') {
-          p = getTok(&next);
-          if (p) {
-            char *s = charset;
-            if (*p == '"') {
-              while (++p != next - 1) {
-                if (*p == '\\')
-                  ++p;
-                if (s == charset + CHARSET_MAX - 1) {
-                  charset[0] = '\0';
-                  break;
-                }
-                *s++ = *p;
-              }
-              *s++ = '\0';
-            }
-            else {
-              if (next - p > CHARSET_MAX - 1)
-                break;
-              while (p != next)
-                *s++ = *p++;
-              *s = 0;
-              break;
-            }
-          }
-        }
-        break;
-      }
-    }
-  else
-    p = getTok(&next);
-  }
-}
-
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main(int argc, char *argv[])
-{
-  char buf[CHARSET_MAX];
-  if (argc <= 1)
-    return 1;
-  printf("%s\n", argv[1]);
-  getXMLCharset(argv[1], buf);
-  printf("charset=\"%s\"\n", buf);
-  return 0;
-}
-
-#endif /* TEST */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlmime.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlmime.h
deleted file mode 100644
index bf0356df..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlmime.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Registered charset names are at most 40 characters long. */
-
-#define CHARSET_MAX 41
-
-/* Figure out the charset to use from the ContentType.
-   buf contains the body of the header field (the part after "Content-Type:").
-   charset gets the charset to use.  It must be at least CHARSET_MAX chars
-   long.  charset will be empty if the default charset should be used.
-*/
-
-void getXMLCharset(const char *buf, char *charset);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmltchar.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmltchar.h
deleted file mode 100644
index 10885755..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmltchar.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifdef XML_UNICODE
-#ifndef XML_UNICODE_WCHAR_T
-#error xmlwf requires a 16-bit Unicode-compatible wchar_t 
-#endif
-#define T(x) L ## x
-#define ftprintf fwprintf
-#define tfopen _wfopen
-#define fputts fputws
-#define puttc putwc
-#define tcscmp wcscmp
-#define tcscpy wcscpy
-#define tcscat wcscat
-#define tcschr wcschr
-#define tcsrchr wcsrchr
-#define tcslen wcslen
-#define tperror _wperror
-#define topen _wopen
-#define tmain wmain
-#define tremove _wremove
-#else /* not XML_UNICODE */
-#define T(x) x
-#define ftprintf fprintf
-#define tfopen fopen
-#define fputts fputs
-#define puttc putc
-#define tcscmp strcmp
-#define tcscpy strcpy
-#define tcscat strcat
-#define tcschr strchr
-#define tcsrchr strrchr
-#define tcslen strlen
-#define tperror perror
-#define topen open
-#define tmain main
-#define tremove remove
-#endif /* not XML_UNICODE */
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlurl.h b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlurl.h
deleted file mode 100644
index d329913a..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlurl.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int XML_URLInit();
-void XML_URLUninit();
-int XML_ProcessURL(XML_Parser parser,
-                   const XML_Char *url,
-                   unsigned flags);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.c b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.c
deleted file mode 100644
index 4fc77da9..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.c
+++ /dev/null
@@ -1,861 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <string.h>
-
-#include "expat.h"
-#include "codepage.h"
-#include "xmlfile.h"
-#include "xmltchar.h"
-
-#ifdef _MSC_VER
-#include <crtdbg.h>
-#endif
-
-#if defined(__amigaos__) && defined(__USE_INLINE__)
-#include <proto/expat.h>
-#endif
-
-/* This ensures proper sorting. */
-
-#define NSSEP T('\001')
-
-static void XMLCALL
-characterData(void *userData, const XML_Char *s, int len)
-{
-  FILE *fp = (FILE *)userData;
-  for (; len > 0; --len, ++s) {
-    switch (*s) {
-    case T('&'):
-      fputts(T("&amp;"), fp);
-      break;
-    case T('<'):
-      fputts(T("&lt;"), fp);
-      break;
-    case T('>'):
-      fputts(T("&gt;"), fp);
-      break;
-#ifdef W3C14N
-    case 13:
-      fputts(T("&#xD;"), fp);
-      break;
-#else
-    case T('"'):
-      fputts(T("&quot;"), fp);
-      break;
-    case 9:
-    case 10:
-    case 13:
-      ftprintf(fp, T("&#%d;"), *s);
-      break;
-#endif
-    default:
-      puttc(*s, fp);
-      break;
-    }
-  }
-}
-
-static void
-attributeValue(FILE *fp, const XML_Char *s)
-{
-  puttc(T('='), fp);
-  puttc(T('"'), fp);
-  for (;;) {
-    switch (*s) {
-    case 0:
-    case NSSEP:
-      puttc(T('"'), fp);
-      return;
-    case T('&'):
-      fputts(T("&amp;"), fp);
-      break;
-    case T('<'):
-      fputts(T("&lt;"), fp);
-      break;
-    case T('"'):
-      fputts(T("&quot;"), fp);
-      break;
-#ifdef W3C14N
-    case 9:
-      fputts(T("&#x9;"), fp);
-      break;
-    case 10:
-      fputts(T("&#xA;"), fp);
-      break;
-    case 13:
-      fputts(T("&#xD;"), fp);
-      break;
-#else
-    case T('>'):
-      fputts(T("&gt;"), fp);
-      break;
-    case 9:
-    case 10:
-    case 13:
-      ftprintf(fp, T("&#%d;"), *s);
-      break;
-#endif
-    default:
-      puttc(*s, fp);
-      break;
-    }
-    s++;
-  }
-}
-
-/* Lexicographically comparing UTF-8 encoded attribute values,
-is equivalent to lexicographically comparing based on the character number. */
-
-static int
-attcmp(const void *att1, const void *att2)
-{
-  return tcscmp(*(const XML_Char **)att1, *(const XML_Char **)att2);
-}
-
-static void XMLCALL
-startElement(void *userData, const XML_Char *name, const XML_Char **atts)
-{
-  int nAtts;
-  const XML_Char **p;
-  FILE *fp = (FILE *)userData;
-  puttc(T('<'), fp);
-  fputts(name, fp);
-
-  p = atts;
-  while (*p)
-    ++p;
-  nAtts = (int)((p - atts) >> 1);
-  if (nAtts > 1)
-    qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, attcmp);
-  while (*atts) {
-    puttc(T(' '), fp);
-    fputts(*atts++, fp);
-    attributeValue(fp, *atts);
-    atts++;
-  }
-  puttc(T('>'), fp);
-}
-
-static void XMLCALL
-endElement(void *userData, const XML_Char *name)
-{
-  FILE *fp = (FILE *)userData;
-  puttc(T('<'), fp);
-  puttc(T('/'), fp);
-  fputts(name, fp);
-  puttc(T('>'), fp);
-}
-
-static int
-nsattcmp(const void *p1, const void *p2)
-{
-  const XML_Char *att1 = *(const XML_Char **)p1;
-  const XML_Char *att2 = *(const XML_Char **)p2;
-  int sep1 = (tcsrchr(att1, NSSEP) != 0);
-  int sep2 = (tcsrchr(att1, NSSEP) != 0);
-  if (sep1 != sep2)
-    return sep1 - sep2;
-  return tcscmp(att1, att2);
-}
-
-static void XMLCALL
-startElementNS(void *userData, const XML_Char *name, const XML_Char **atts)
-{
-  int nAtts;
-  int nsi;
-  const XML_Char **p;
-  FILE *fp = (FILE *)userData;
-  const XML_Char *sep;
-  puttc(T('<'), fp);
-
-  sep = tcsrchr(name, NSSEP);
-  if (sep) {
-    fputts(T("n1:"), fp);
-    fputts(sep + 1, fp);
-    fputts(T(" xmlns:n1"), fp);
-    attributeValue(fp, name);
-    nsi = 2;
-  }
-  else {
-    fputts(name, fp);
-    nsi = 1;
-  }
-
-  p = atts;
-  while (*p)
-    ++p;
-  nAtts = (int)((p - atts) >> 1);
-  if (nAtts > 1)
-    qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, nsattcmp);
-  while (*atts) {
-    name = *atts++;
-    sep = tcsrchr(name, NSSEP);
-    puttc(T(' '), fp);
-    if (sep) {
-      ftprintf(fp, T("n%d:"), nsi);
-      fputts(sep + 1, fp);
-    }
-    else
-      fputts(name, fp);
-    attributeValue(fp, *atts);
-    if (sep) {
-      ftprintf(fp, T(" xmlns:n%d"), nsi++);
-      attributeValue(fp, name);
-    }
-    atts++;
-  }
-  puttc(T('>'), fp);
-}
-
-static void XMLCALL
-endElementNS(void *userData, const XML_Char *name)
-{
-  FILE *fp = (FILE *)userData;
-  const XML_Char *sep;
-  puttc(T('<'), fp);
-  puttc(T('/'), fp);
-  sep = tcsrchr(name, NSSEP);
-  if (sep) {
-    fputts(T("n1:"), fp);
-    fputts(sep + 1, fp);
-  }
-  else
-    fputts(name, fp);
-  puttc(T('>'), fp);
-}
-
-#ifndef W3C14N
-
-static void XMLCALL
-processingInstruction(void *userData, const XML_Char *target,
-                      const XML_Char *data)
-{
-  FILE *fp = (FILE *)userData;
-  puttc(T('<'), fp);
-  puttc(T('?'), fp);
-  fputts(target, fp);
-  puttc(T(' '), fp);
-  fputts(data, fp);
-  puttc(T('?'), fp);
-  puttc(T('>'), fp);
-}
-
-#endif /* not W3C14N */
-
-static void XMLCALL
-defaultCharacterData(void *userData, const XML_Char *s, int len)
-{
-  XML_DefaultCurrent((XML_Parser) userData);
-}
-
-static void XMLCALL
-defaultStartElement(void *userData, const XML_Char *name,
-                    const XML_Char **atts)
-{
-  XML_DefaultCurrent((XML_Parser) userData);
-}
-
-static void XMLCALL
-defaultEndElement(void *userData, const XML_Char *name)
-{
-  XML_DefaultCurrent((XML_Parser) userData);
-}
-
-static void XMLCALL
-defaultProcessingInstruction(void *userData, const XML_Char *target,
-                             const XML_Char *data)
-{
-  XML_DefaultCurrent((XML_Parser) userData);
-}
-
-static void XMLCALL
-nopCharacterData(void *userData, const XML_Char *s, int len)
-{
-}
-
-static void XMLCALL
-nopStartElement(void *userData, const XML_Char *name, const XML_Char **atts)
-{
-}
-
-static void XMLCALL
-nopEndElement(void *userData, const XML_Char *name)
-{
-}
-
-static void XMLCALL
-nopProcessingInstruction(void *userData, const XML_Char *target,
-                         const XML_Char *data)
-{
-}
-
-static void XMLCALL
-markup(void *userData, const XML_Char *s, int len)
-{
-  FILE *fp = (FILE *)XML_GetUserData((XML_Parser) userData);
-  for (; len > 0; --len, ++s)
-    puttc(*s, fp);
-}
-
-static void
-metaLocation(XML_Parser parser)
-{
-  const XML_Char *uri = XML_GetBase(parser);
-  if (uri)
-    ftprintf((FILE *)XML_GetUserData(parser), T(" uri=\"%s\""), uri);
-  ftprintf((FILE *)XML_GetUserData(parser),
-           T(" byte=\"%" XML_FMT_INT_MOD "d\" nbytes=\"%d\" \
-			 line=\"%" XML_FMT_INT_MOD "u\" col=\"%" XML_FMT_INT_MOD "u\""),
-           XML_GetCurrentByteIndex(parser),
-           XML_GetCurrentByteCount(parser),
-           XML_GetCurrentLineNumber(parser),
-           XML_GetCurrentColumnNumber(parser));
-}
-
-static void
-metaStartDocument(void *userData)
-{
-  fputts(T("<document>\n"), (FILE *)XML_GetUserData((XML_Parser) userData));
-}
-
-static void
-metaEndDocument(void *userData)
-{
-  fputts(T("</document>\n"), (FILE *)XML_GetUserData((XML_Parser) userData));
-}
-
-static void XMLCALL
-metaStartElement(void *userData, const XML_Char *name,
-                 const XML_Char **atts)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  const XML_Char **specifiedAttsEnd
-    = atts + XML_GetSpecifiedAttributeCount(parser);
-  const XML_Char **idAttPtr;
-  int idAttIndex = XML_GetIdAttributeIndex(parser);
-  if (idAttIndex < 0)
-    idAttPtr = 0;
-  else
-    idAttPtr = atts + idAttIndex;
-    
-  ftprintf(fp, T("<starttag name=\"%s\""), name);
-  metaLocation(parser);
-  if (*atts) {
-    fputts(T(">\n"), fp);
-    do {
-      ftprintf(fp, T("<attribute name=\"%s\" value=\""), atts[0]);
-      characterData(fp, atts[1], (int)tcslen(atts[1]));
-      if (atts >= specifiedAttsEnd)
-        fputts(T("\" defaulted=\"yes\"/>\n"), fp);
-      else if (atts == idAttPtr)
-        fputts(T("\" id=\"yes\"/>\n"), fp);
-      else
-        fputts(T("\"/>\n"), fp);
-    } while (*(atts += 2));
-    fputts(T("</starttag>\n"), fp);
-  }
-  else
-    fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaEndElement(void *userData, const XML_Char *name)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  ftprintf(fp, T("<endtag name=\"%s\""), name);
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaProcessingInstruction(void *userData, const XML_Char *target,
-                          const XML_Char *data)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  ftprintf(fp, T("<pi target=\"%s\" data=\""), target);
-  characterData(fp, data, (int)tcslen(data));
-  puttc(T('"'), fp);
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaComment(void *userData, const XML_Char *data)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  fputts(T("<comment data=\""), fp);
-  characterData(fp, data, (int)tcslen(data));
-  puttc(T('"'), fp);
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaStartCdataSection(void *userData)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  fputts(T("<startcdata"), fp);
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaEndCdataSection(void *userData)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  fputts(T("<endcdata"), fp);
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaCharacterData(void *userData, const XML_Char *s, int len)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  fputts(T("<chars str=\""), fp);
-  characterData(fp, s, len);
-  puttc(T('"'), fp);
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaStartDoctypeDecl(void *userData,
-                     const XML_Char *doctypeName,
-                     const XML_Char *sysid,
-                     const XML_Char *pubid,
-                     int has_internal_subset)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  ftprintf(fp, T("<startdoctype name=\"%s\""), doctypeName);
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaEndDoctypeDecl(void *userData)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  fputts(T("<enddoctype"), fp);
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaNotationDecl(void *userData,
-                 const XML_Char *notationName,
-                 const XML_Char *base,
-                 const XML_Char *systemId,
-                 const XML_Char *publicId)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  ftprintf(fp, T("<notation name=\"%s\""), notationName);
-  if (publicId)
-    ftprintf(fp, T(" public=\"%s\""), publicId);
-  if (systemId) {
-    fputts(T(" system=\""), fp);
-    characterData(fp, systemId, (int)tcslen(systemId));
-    puttc(T('"'), fp);
-  }
-  metaLocation(parser);
-  fputts(T("/>\n"), fp);
-}
-
-
-static void XMLCALL
-metaEntityDecl(void *userData,
-               const XML_Char *entityName,
-               int  is_param,
-               const XML_Char *value,
-               int  value_length,
-               const XML_Char *base,
-               const XML_Char *systemId,
-               const XML_Char *publicId,
-               const XML_Char *notationName)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-
-  if (value) {
-    ftprintf(fp, T("<entity name=\"%s\""), entityName);
-    metaLocation(parser);
-    puttc(T('>'), fp);
-    characterData(fp, value, value_length);
-    fputts(T("</entity/>\n"), fp);
-  }
-  else if (notationName) {
-    ftprintf(fp, T("<entity name=\"%s\""), entityName);
-    if (publicId)
-      ftprintf(fp, T(" public=\"%s\""), publicId);
-    fputts(T(" system=\""), fp);
-    characterData(fp, systemId, (int)tcslen(systemId));
-    puttc(T('"'), fp);
-    ftprintf(fp, T(" notation=\"%s\""), notationName);
-    metaLocation(parser);
-    fputts(T("/>\n"), fp);
-  }
-  else {
-    ftprintf(fp, T("<entity name=\"%s\""), entityName);
-    if (publicId)
-      ftprintf(fp, T(" public=\"%s\""), publicId);
-    fputts(T(" system=\""), fp);
-    characterData(fp, systemId, (int)tcslen(systemId));
-    puttc(T('"'), fp);
-    metaLocation(parser);
-    fputts(T("/>\n"), fp);
-  }
-}
-
-static void XMLCALL
-metaStartNamespaceDecl(void *userData,
-                       const XML_Char *prefix,
-                       const XML_Char *uri)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  fputts(T("<startns"), fp);
-  if (prefix)
-    ftprintf(fp, T(" prefix=\"%s\""), prefix);
-  if (uri) {
-    fputts(T(" ns=\""), fp);
-    characterData(fp, uri, (int)tcslen(uri));
-    fputts(T("\"/>\n"), fp);
-  }
-  else
-    fputts(T("/>\n"), fp);
-}
-
-static void XMLCALL
-metaEndNamespaceDecl(void *userData, const XML_Char *prefix)
-{
-  XML_Parser parser = (XML_Parser) userData;
-  FILE *fp = (FILE *)XML_GetUserData(parser);
-  if (!prefix)
-    fputts(T("<endns/>\n"), fp);
-  else
-    ftprintf(fp, T("<endns prefix=\"%s\"/>\n"), prefix);
-}
-
-static int XMLCALL
-unknownEncodingConvert(void *data, const char *p)
-{
-  return codepageConvert(*(int *)data, p);
-}
-
-static int XMLCALL
-unknownEncoding(void *userData, const XML_Char *name, XML_Encoding *info)
-{
-  int cp;
-  static const XML_Char prefixL[] = T("windows-");
-  static const XML_Char prefixU[] = T("WINDOWS-");
-  int i;
-
-  for (i = 0; prefixU[i]; i++)
-    if (name[i] != prefixU[i] && name[i] != prefixL[i])
-      return 0;
-  
-  cp = 0;
-  for (; name[i]; i++) {
-    static const XML_Char digits[] = T("0123456789");
-    const XML_Char *s = tcschr(digits, name[i]);
-    if (!s)
-      return 0;
-    cp *= 10;
-    cp += (int)(s - digits);
-    if (cp >= 0x10000)
-      return 0;
-  }
-  if (!codepageMap(cp, info->map))
-    return 0;
-  info->convert = unknownEncodingConvert;
-  /* We could just cast the code page integer to a void *,
-  and avoid the use of release. */
-  info->release = free;
-  info->data = malloc(sizeof(int));
-  if (!info->data)
-    return 0;
-  *(int *)info->data = cp;
-  return 1;
-}
-
-static int XMLCALL
-notStandalone(void *userData)
-{
-  return 0;
-}
-
-static void
-showVersion(XML_Char *prog)
-{
-  XML_Char *s = prog;
-  XML_Char ch;
-  const XML_Feature *features = XML_GetFeatureList();
-  while ((ch = *s) != 0) {
-    if (ch == '/'
-#if (defined(WIN32) || defined(__WATCOMC__))
-        || ch == '\\'
-#endif
-        )
-      prog = s + 1;
-    ++s;
-  }
-  ftprintf(stdout, T("%s using %s\n"), prog, XML_ExpatVersion());
-  if (features != NULL && features[0].feature != XML_FEATURE_END) {
-    int i = 1;
-    ftprintf(stdout, T("%s"), features[0].name);
-    if (features[0].value)
-      ftprintf(stdout, T("=%ld"), features[0].value);
-    while (features[i].feature != XML_FEATURE_END) {
-      ftprintf(stdout, T(", %s"), features[i].name);
-      if (features[i].value)
-        ftprintf(stdout, T("=%ld"), features[i].value);
-      ++i;
-    }
-    ftprintf(stdout, T("\n"));
-  }
-}
-
-static void
-usage(const XML_Char *prog, int rc)
-{
-  ftprintf(stderr,
-           T("usage: %s [-n] [-p] [-r] [-s] [-w] [-x] [-d output-dir] "
-             "[-e encoding] file ...\n"), prog);
-  exit(rc);
-}
-
-int
-tmain(int argc, XML_Char **argv)
-{
-  int i, j;
-  const XML_Char *outputDir = NULL;
-  const XML_Char *encoding = NULL;
-  unsigned processFlags = XML_MAP_FILE;
-  int windowsCodePages = 0;
-  int outputType = 0;
-  int useNamespaces = 0;
-  int requireStandalone = 0;
-  enum XML_ParamEntityParsing paramEntityParsing = 
-    XML_PARAM_ENTITY_PARSING_NEVER;
-  int useStdin = 0;
-
-#ifdef _MSC_VER
-  _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
-#endif
-
-  i = 1;
-  j = 0;
-  while (i < argc) {
-    if (j == 0) {
-      if (argv[i][0] != T('-'))
-        break;
-      if (argv[i][1] == T('-') && argv[i][2] == T('\0')) {
-        i++;
-        break;
-      }
-      j++;
-    }
-    switch (argv[i][j]) {
-    case T('r'):
-      processFlags &= ~XML_MAP_FILE;
-      j++;
-      break;
-    case T('s'):
-      requireStandalone = 1;
-      j++;
-      break;
-    case T('n'):
-      useNamespaces = 1;
-      j++;
-      break;
-    case T('p'):
-      paramEntityParsing = XML_PARAM_ENTITY_PARSING_ALWAYS;
-      /* fall through */
-    case T('x'):
-      processFlags |= XML_EXTERNAL_ENTITIES;
-      j++;
-      break;
-    case T('w'):
-      windowsCodePages = 1;
-      j++;
-      break;
-    case T('m'):
-      outputType = 'm';
-      j++;
-      break;
-    case T('c'):
-      outputType = 'c';
-      useNamespaces = 0;
-      j++;
-      break;
-    case T('t'):
-      outputType = 't';
-      j++;
-      break;
-    case T('d'):
-      if (argv[i][j + 1] == T('\0')) {
-        if (++i == argc)
-          usage(argv[0], 2);
-        outputDir = argv[i];
-      }
-      else
-        outputDir = argv[i] + j + 1;
-      i++;
-      j = 0;
-      break;
-    case T('e'):
-      if (argv[i][j + 1] == T('\0')) {
-        if (++i == argc)
-          usage(argv[0], 2);
-        encoding = argv[i];
-      }
-      else
-        encoding = argv[i] + j + 1;
-      i++;
-      j = 0;
-      break;
-    case T('h'):
-      usage(argv[0], 0);
-      return 0;
-    case T('v'):
-      showVersion(argv[0]);
-      return 0;
-    case T('\0'):
-      if (j > 1) {
-        i++;
-        j = 0;
-        break;
-      }
-      /* fall through */
-    default:
-      usage(argv[0], 2);
-    }
-  }
-  if (i == argc) {
-    useStdin = 1;
-    processFlags &= ~XML_MAP_FILE;
-    i--;
-  }
-  for (; i < argc; i++) {
-    FILE *fp = 0;
-    XML_Char *outName = 0;
-    int result;
-    XML_Parser parser;
-    if (useNamespaces)
-      parser = XML_ParserCreateNS(encoding, NSSEP);
-    else
-      parser = XML_ParserCreate(encoding);
-    if (requireStandalone)
-      XML_SetNotStandaloneHandler(parser, notStandalone);
-    XML_SetParamEntityParsing(parser, paramEntityParsing);
-    if (outputType == 't') {
-      /* This is for doing timings; this gives a more realistic estimate of
-         the parsing time. */
-      outputDir = 0;
-      XML_SetElementHandler(parser, nopStartElement, nopEndElement);
-      XML_SetCharacterDataHandler(parser, nopCharacterData);
-      XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction);
-    }
-    else if (outputDir) {
-      const XML_Char * delim = T("/");
-      const XML_Char *file = useStdin ? T("STDIN") : argv[i];
-      if (!useStdin) {
-        /* Jump after last (back)slash */
-        const XML_Char * lastDelim = tcsrchr(file, delim[0]);
-        if (lastDelim)
-          file = lastDelim + 1;
-#if (defined(WIN32) || defined(__WATCOMC__))
-        else {
-          const XML_Char * winDelim = T("\\");
-          lastDelim = tcsrchr(file, winDelim[0]);
-          if (lastDelim) {
-            file = lastDelim + 1;
-            delim = winDelim;
-          }
-        }
-#endif
-      }
-      outName = (XML_Char *)malloc((tcslen(outputDir) + tcslen(file) + 2)
-                       * sizeof(XML_Char));
-      tcscpy(outName, outputDir);
-      tcscat(outName, delim);
-      tcscat(outName, file);
-      fp = tfopen(outName, T("wb"));
-      if (!fp) {
-        tperror(outName);
-        exit(1);
-      }
-      setvbuf(fp, NULL, _IOFBF, 16384);
-#ifdef XML_UNICODE
-      puttc(0xFEFF, fp);
-#endif
-      XML_SetUserData(parser, fp);
-      switch (outputType) {
-      case 'm':
-        XML_UseParserAsHandlerArg(parser);
-        XML_SetElementHandler(parser, metaStartElement, metaEndElement);
-        XML_SetProcessingInstructionHandler(parser, metaProcessingInstruction);
-        XML_SetCommentHandler(parser, metaComment);
-        XML_SetCdataSectionHandler(parser, metaStartCdataSection,
-                                   metaEndCdataSection);
-        XML_SetCharacterDataHandler(parser, metaCharacterData);
-        XML_SetDoctypeDeclHandler(parser, metaStartDoctypeDecl,
-                                  metaEndDoctypeDecl);
-        XML_SetEntityDeclHandler(parser, metaEntityDecl);
-        XML_SetNotationDeclHandler(parser, metaNotationDecl);
-        XML_SetNamespaceDeclHandler(parser, metaStartNamespaceDecl,
-                                    metaEndNamespaceDecl);
-        metaStartDocument(parser);
-        break;
-      case 'c':
-        XML_UseParserAsHandlerArg(parser);
-        XML_SetDefaultHandler(parser, markup);
-        XML_SetElementHandler(parser, defaultStartElement, defaultEndElement);
-        XML_SetCharacterDataHandler(parser, defaultCharacterData);
-        XML_SetProcessingInstructionHandler(parser,
-                                            defaultProcessingInstruction);
-        break;
-      default:
-        if (useNamespaces)
-          XML_SetElementHandler(parser, startElementNS, endElementNS);
-        else
-          XML_SetElementHandler(parser, startElement, endElement);
-        XML_SetCharacterDataHandler(parser, characterData);
-#ifndef W3C14N
-        XML_SetProcessingInstructionHandler(parser, processingInstruction);
-#endif /* not W3C14N */
-        break;
-      }
-    }
-    if (windowsCodePages)
-      XML_SetUnknownEncodingHandler(parser, unknownEncoding, 0);
-    result = XML_ProcessFile(parser, useStdin ? NULL : argv[i], processFlags);
-    if (outputDir) {
-      if (outputType == 'm')
-        metaEndDocument(parser);
-      fclose(fp);
-      if (!result) {
-        tremove(outName);
-        exit(2);
-      }
-      free(outName);
-    }
-    XML_ParserFree(parser);
-  }
-  return 0;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.dsp b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.dsp
deleted file mode 100644
index eb80c62b..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwf.dsp
+++ /dev/null
@@ -1,139 +0,0 @@
-# Microsoft Developer Studio Project File - Name="xmlwf" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=xmlwf - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "xmlwf.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "xmlwf.mak" CFG="xmlwf - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "xmlwf - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "xmlwf - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "xmlwf - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ".\Release"
-# PROP BASE Intermediate_Dir ".\Release"
-# PROP BASE Target_Dir "."
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\win32\bin\Release"
-# PROP Intermediate_Dir "..\win32\tmp\Release-xmlwf"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir "."
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILED_FROM_DSP" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE RSC /l 0x809 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 /nologo /subsystem:console /machine:I386
-# ADD LINK32 libexpat.lib setargv.obj /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\win32\bin\Release" /out:"..\win32\bin\Release\xmlwf.exe"
-# SUBTRACT LINK32 /nodefaultlib
-
-!ELSEIF  "$(CFG)" == "xmlwf - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ".\Debug"
-# PROP BASE Intermediate_Dir ".\Debug"
-# PROP BASE Target_Dir "."
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\win32\bin\Debug"
-# PROP Intermediate_Dir "..\win32\tmp\Debug-xmlwf"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir "."
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILED_FROM_DSP" /FD /c
-# SUBTRACT CPP /Fr /YX
-# ADD BASE RSC /l 0x809 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386
-# ADD LINK32 libexpat.lib setargv.obj /nologo /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\win32\bin\Debug" /out:"..\win32\bin\Debug\xmlwf.exe"
-
-!ENDIF 
-
-# Begin Target
-
-# Name "xmlwf - Win32 Release"
-# Name "xmlwf - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\codepage.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\readfilemap.c
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=.\unixfilemap.c
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=.\win32filemap.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlfile.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlwf.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\codepage.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmlfile.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\xmltchar.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwin32url.cxx b/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwin32url.cxx
deleted file mode 100644
index bbfcce22..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/_expat/xmlwf/xmlwin32url.cxx
+++ /dev/null
@@ -1,395 +0,0 @@
-#include "expat.h"
-#ifdef XML_UNICODE
-#define UNICODE
-#endif
-#include <windows.h>
-#include <urlmon.h>
-#include <wininet.h>
-#include <stdio.h>
-#include <tchar.h>
-#include "xmlurl.h"
-#include "xmlmime.h"
-
-static int
-processURL(XML_Parser parser, IMoniker *baseMoniker, const XML_Char *url);
-
-typedef void (*StopHandler)(void *, HRESULT);
-
-class Callback : public IBindStatusCallback {
-public:
-  // IUnknown methods
-  STDMETHODIMP QueryInterface(REFIID,void **);
-  STDMETHODIMP_(ULONG) AddRef();
-  STDMETHODIMP_(ULONG) Release();
-  // IBindStatusCallback methods
-  STDMETHODIMP OnStartBinding(DWORD, IBinding *);
-  STDMETHODIMP GetPriority(LONG *);
-  STDMETHODIMP OnLowResource(DWORD);
-  STDMETHODIMP OnProgress(ULONG, ULONG, ULONG, LPCWSTR);
-  STDMETHODIMP OnStopBinding(HRESULT, LPCWSTR);
-  STDMETHODIMP GetBindInfo(DWORD *, BINDINFO *);
-  STDMETHODIMP OnDataAvailable(DWORD, DWORD, FORMATETC *, STGMEDIUM *);
-  STDMETHODIMP OnObjectAvailable(REFIID, IUnknown *);
-  Callback(XML_Parser, IMoniker *, StopHandler, void *);
-  ~Callback();
-  int externalEntityRef(const XML_Char *context,
-                        const XML_Char *systemId, const XML_Char *publicId);
-private:
-  XML_Parser parser_;
-  IMoniker *baseMoniker_;
-  DWORD totalRead_;
-  ULONG ref_;
-  IBinding *pBinding_;
-  StopHandler stopHandler_;
-  void *stopArg_;
-};
-
-STDMETHODIMP_(ULONG)
-Callback::AddRef()
-{ 
-  return ref_++;
-}
-
-STDMETHODIMP_(ULONG)
-Callback::Release()
-{ 
-  if (--ref_ == 0) {
-    delete this;
-    return 0;
-  }
-  return ref_;
-}
-
-STDMETHODIMP
-Callback::QueryInterface(REFIID riid, void** ppv)
-{ 
-  if (IsEqualGUID(riid, IID_IUnknown))
-    *ppv = (IUnknown *)this;
-  else if (IsEqualGUID(riid, IID_IBindStatusCallback))
-    *ppv = (IBindStatusCallback *)this;
-  else
-    return E_NOINTERFACE;
-  ((LPUNKNOWN)*ppv)->AddRef();
-  return S_OK;
-}
-
-STDMETHODIMP
-Callback::OnStartBinding(DWORD, IBinding* pBinding)
-{
-  pBinding_ = pBinding;
-  pBinding->AddRef();
-  return S_OK;
-}
-
-STDMETHODIMP
-Callback::GetPriority(LONG *)
-{
-  return E_NOTIMPL;
-}
-
-STDMETHODIMP
-Callback::OnLowResource(DWORD)
-{
-  return E_NOTIMPL;
-}
-
-STDMETHODIMP
-Callback::OnProgress(ULONG, ULONG, ULONG, LPCWSTR)
-{
-  return S_OK;
-}
-
-STDMETHODIMP
-Callback::OnStopBinding(HRESULT hr, LPCWSTR szError)
-{
-  if (pBinding_) {
-    pBinding_->Release();
-    pBinding_ = 0;
-  }
-  if (baseMoniker_) {
-    baseMoniker_->Release();
-    baseMoniker_ = 0;
-  }
-  stopHandler_(stopArg_, hr);
-  return S_OK;
-}
-
-STDMETHODIMP
-Callback::GetBindInfo(DWORD* pgrfBINDF, BINDINFO* pbindinfo)
-{
-  *pgrfBINDF = BINDF_ASYNCHRONOUS;
-  return S_OK;
-}
-
-static void
-reportError(XML_Parser parser)
-{
-  int code = XML_GetErrorCode(parser);
-  const XML_Char *message = XML_ErrorString(code);
-  if (message)
-    _ftprintf(stderr, _T("%s:%d:%ld: %s\n"),
-	     XML_GetBase(parser),
-	     XML_GetErrorLineNumber(parser),
-	     XML_GetErrorColumnNumber(parser),
-	     message);
-  else
-    _ftprintf(stderr, _T("%s: (unknown message %d)\n"),
-              XML_GetBase(parser), code);
-}
-
-STDMETHODIMP
-Callback::OnDataAvailable(DWORD grfBSCF,
-                          DWORD dwSize,
-                          FORMATETC *pfmtetc,
-                          STGMEDIUM* pstgmed)
-{
-  if (grfBSCF & BSCF_FIRSTDATANOTIFICATION) {
-    IWinInetHttpInfo *hp;
-    HRESULT hr = pBinding_->QueryInterface(IID_IWinInetHttpInfo,
-                                           (void **)&hp);
-    if (SUCCEEDED(hr)) {
-      char contentType[1024];
-      DWORD bufSize = sizeof(contentType);
-      DWORD flags = 0;
-      contentType[0] = 0;
-      hr = hp->QueryInfo(HTTP_QUERY_CONTENT_TYPE, contentType,
-                         &bufSize, 0, NULL);
-      if (SUCCEEDED(hr)) {
-	char charset[CHARSET_MAX];
-	getXMLCharset(contentType, charset);
-	if (charset[0]) {
-#ifdef XML_UNICODE
-	  XML_Char wcharset[CHARSET_MAX];
-	  XML_Char *p1 = wcharset;
-	  const char *p2 = charset;
-	  while ((*p1++ = (unsigned char)*p2++) != 0)
-	    ;
-	  XML_SetEncoding(parser_, wcharset);
-#else
-	  XML_SetEncoding(parser_, charset);
-#endif
-	}
-      }
-      hp->Release();
-    }
-  }
-  if (!parser_)
-    return E_ABORT;
-  if (pstgmed->tymed == TYMED_ISTREAM) {
-    while (totalRead_ < dwSize) {
-#define READ_MAX (64*1024)
-      DWORD nToRead = dwSize - totalRead_;
-      if (nToRead > READ_MAX)
-	nToRead = READ_MAX;
-      void *buf = XML_GetBuffer(parser_, nToRead);
-      if (!buf) {
-	_ftprintf(stderr, _T("out of memory\n"));
-	return E_ABORT;
-      }
-      DWORD nRead;
-      HRESULT hr = pstgmed->pstm->Read(buf, nToRead, &nRead);
-      if (SUCCEEDED(hr)) {
-	totalRead_ += nRead;
-	if (!XML_ParseBuffer(parser_,
-			     nRead,
-			     (grfBSCF & BSCF_LASTDATANOTIFICATION) != 0
-			     && totalRead_ == dwSize)) {
-	  reportError(parser_);
-	  return E_ABORT;
-	}
-      }
-    }
-  }
-  return S_OK;
-}
-
-STDMETHODIMP
-Callback::OnObjectAvailable(REFIID, IUnknown *)
-{
-  return S_OK;
-}
-
-int
-Callback::externalEntityRef(const XML_Char *context,
-                            const XML_Char *systemId,
-                            const XML_Char *publicId)
-{
-  XML_Parser entParser = XML_ExternalEntityParserCreate(parser_, context, 0);
-  XML_SetBase(entParser, systemId);
-  int ret = processURL(entParser, baseMoniker_, systemId);
-  XML_ParserFree(entParser);
-  return ret;
-}
-
-Callback::Callback(XML_Parser parser, IMoniker *baseMoniker,
-                   StopHandler stopHandler, void *stopArg)
-: parser_(parser),
-  baseMoniker_(baseMoniker),
-  ref_(0),
-  pBinding_(0),
-  totalRead_(0),
-  stopHandler_(stopHandler),
-  stopArg_(stopArg)
-{
-  if (baseMoniker_)
-    baseMoniker_->AddRef();
-}
-
-Callback::~Callback()
-{
-  if (pBinding_)
-    pBinding_->Release();
-  if (baseMoniker_)
-    baseMoniker_->Release();
-}
-
-static int
-externalEntityRef(void *arg,
-                  const XML_Char *context,
-                  const XML_Char *base,
-                  const XML_Char *systemId,
-                  const XML_Char *publicId)
-{
-  return ((Callback *)arg)->externalEntityRef(context, systemId, publicId);
-}
-
-
-static HRESULT
-openStream(XML_Parser parser,
-           IMoniker *baseMoniker,
-           const XML_Char *uri,
-           StopHandler stopHandler, void *stopArg)
-{
-  if (!XML_SetBase(parser, uri))
-    return E_OUTOFMEMORY;
-  HRESULT hr;
-  IMoniker *m;
-#ifdef XML_UNICODE
-  hr = CreateURLMoniker(0, uri, &m);
-#else
-  LPWSTR uriw = new wchar_t[strlen(uri) + 1];
-  for (int i = 0;; i++) {
-    uriw[i] = uri[i];
-    if (uriw[i] == 0)
-      break;
-  }
-  hr = CreateURLMoniker(baseMoniker, uriw, &m);
-  delete [] uriw;
-#endif
-  if (FAILED(hr))
-    return hr;
-  IBindStatusCallback *cb = new Callback(parser, m, stopHandler, stopArg);
-  XML_SetExternalEntityRefHandler(parser, externalEntityRef);
-  XML_SetExternalEntityRefHandlerArg(parser, cb);
-  cb->AddRef();
-  IBindCtx *b;
-  if (FAILED(hr = CreateAsyncBindCtx(0, cb, 0, &b))) {
-    cb->Release();
-    m->Release();
-    return hr;
-  }
-  cb->Release();
-  IStream *pStream;
-  hr = m->BindToStorage(b, 0, IID_IStream, (void **)&pStream);
-  if (SUCCEEDED(hr)) {
-    if (pStream)
-      pStream->Release();
-  }
-  if (hr == MK_S_ASYNCHRONOUS)
-    hr = S_OK;
-  m->Release();
-  b->Release();
-  return hr;
-}
-
-struct QuitInfo {
-  const XML_Char *url;
-  HRESULT hr;
-  int stop;
-};
-
-static void
-winPerror(const XML_Char *url, HRESULT hr)
-{
-  LPVOID buf;
-  if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
-		    | FORMAT_MESSAGE_FROM_HMODULE,
-		    GetModuleHandleA("urlmon.dll"),
-		    hr,
-		    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-		    (LPTSTR) &buf,
-		    0,
-		    NULL)
-      || FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
-		      | FORMAT_MESSAGE_FROM_SYSTEM,
-		      0,
-		      hr,
-		      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-		      (LPTSTR) &buf,
-		      0,
-		      NULL)) {
-    /* The system error messages seem to end with a newline. */
-    _ftprintf(stderr, _T("%s: %s"), url, buf);
-    fflush(stderr);
-    LocalFree(buf);
-  }
-  else
-    _ftprintf(stderr, _T("%s: error %x\n"), url, hr);
-}
-
-static void
-threadQuit(void *p, HRESULT hr)
-{
-  QuitInfo *qi = (QuitInfo *)p;
-  qi->hr = hr;
-  qi->stop = 1;
-}
-
-extern "C"
-int
-XML_URLInit(void)
-{
-  return SUCCEEDED(CoInitialize(0));
-}
-
-extern "C"
-void
-XML_URLUninit(void)
-{
-  CoUninitialize();
-}
-
-static int
-processURL(XML_Parser parser, IMoniker *baseMoniker,
-           const XML_Char *url)
-{
-  QuitInfo qi;
-  qi.stop = 0;
-  qi.url = url;
-
-  XML_SetBase(parser, url);
-  HRESULT hr = openStream(parser, baseMoniker, url, threadQuit, &qi);
-  if (FAILED(hr)) {
-    winPerror(url, hr);
-    return 0;
-  }
-  else if (FAILED(qi.hr)) {
-    winPerror(url, qi.hr);
-    return 0;
-  }
-  MSG msg;
-  while (!qi.stop && GetMessage (&msg, NULL, 0, 0)) {
-    TranslateMessage (&msg);
-    DispatchMessage (&msg);
-  }
-  return 1;
-}
-
-extern "C"
-int
-XML_ProcessURL(XML_Parser parser,
-               const XML_Char *url,
-               unsigned flags)
-{
-  return processURL(parser, 0, url);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/aolxml.cpp b/Src/Plugins/DSP/sc_serv3/aolxml/aolxml.cpp
deleted file mode 100644
index cd71111e..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/aolxml.cpp
+++ /dev/null
@@ -1,428 +0,0 @@
-#include <algorithm>
-#include "aolxml.h"
-#include "stl/stringUtils.h"
-#include <map>
-
-#ifdef AOLXML_FASTLOOKUP
-#ifdef _WIN32
-#include <crtdbg.h>
-#endif
-#endif
-
-using namespace std;
-using namespace stringUtil;
-
-// stl helpers
-static void ndelete(aolxml::node *n) { delete n; }
-static bool matchNameVS2005(const aolxml::node* n, string name)
-	{ return (n->name() == name); }
-//////////
-
-aolxml::node::~node()
-{
-	// delete the children
-	for_each(m_children.begin(),m_children.end(),ndelete);
-}
-
-void aolxml::node::deleteChild(childIterator_t i)
-{
-	// deletes child and all subchildren
-	aolxml::node *n = (*i);
-
-#ifdef AOLXML_FASTLOOKUP
-	bool found(false);
-	for(nameToNodeMap_t::iterator mi = m_nameToNodeMap.begin(); mi != m_nameToNodeMap.end(); ++mi)
-	{
-		if ((*mi).second == n)
-		{
-			m_nameToNodeMap.erase(mi);
-			found = true;
-			break;
-		}
-	}
-	_ASSERTE(found);
-#endif
-	m_children.erase(i);
-
-	delete n;
-}
-
-bool aolxml::node::deleteChild(aolxml::node *n)
-{
-	list<node*>::iterator i = find(m_children.begin(),m_children.end(),n);
-	if (i != m_children.end())
-	{
-		#ifdef AOLXML_FASTLOOKUP
-			bool found(false);
-			for(nameToNodeMap_t::iterator mi = m_nameToNodeMap.begin(); mi != m_nameToNodeMap.end(); ++mi)
-			{
-				if ((*mi).second == n)
-				{
-					m_nameToNodeMap.erase(mi);
-					found = true;
-					break;
-				}
-			}
-			_ASSERTE(found);			
-		#endif
-		m_children.erase(i);
-		delete n;
-		return true;
-	}
-	return false;
-}
-
-void aolxml::node::snipChild(childIterator_t i)
-{
-	// remove child from this node but keeps subtree in tact
-#ifdef AOLXML_FASTLOOKUP
-	aolxml::node *n = (*i);
-	bool found(false);
-	for(nameToNodeMap_t::iterator mi = m_nameToNodeMap.begin(); mi != m_nameToNodeMap.end(); ++mi)
-	{
-		if ((*mi).second == n)
-		{
-			m_nameToNodeMap.erase(mi);
-			found = true;
-			break;
-		}
-	}
-	_ASSERTE(found);
-#endif
-	(*i)->m_parent = 0;
-	m_children.erase(i);
-}
-
-void aolxml::node::addChild(node *n)
-{
-	n->m_parent = this;
-	m_children.push_back(n);
-#ifdef AOLXML_FASTLOOKUP
-	m_nameToNodeMap.insert(make_pair(n->name(),n));
-#endif
-}
-
-void aolxml::node::insertChild(childIterator_t i,node *n)
-{
-	n->m_parent = this;
-	m_children.insert(i,n);
-#ifdef AOLXML_FASTLOOKUP
-	m_nameToNodeMap.insert(make_pair(n->name(),n));
-#endif
-}
-
-aolxml::node* aolxml::node::findNode(node *root,const string &path) throw()
-{
-	if (path.empty() || (!root))
-	{
-		return 0;
-	}
-
-	vector<string> v = tokenizer(path,'/');
-
-	node *current = root;
-	if (path[0] == '/')
-	{
-		// move to root of tree
-		while (current->parent())
-			current = current->parent();
-
-		// make sure first tag matches first token
-		if (current && (!v.empty()) && (current->name() != v[0]))
-		{
-			current = 0;
-		}
-		else
-		{
-			v.erase(v.begin());
-		}
-	}
-
-	for(vector<string>::const_iterator i = v.begin(); (i != v.end()) && current; ++i)
-	{
-		string s = stripWhitespace(*i);
-		if (s == "" || s == ".")
-		{
-			continue;
-		}
-		else if (s == "..")
-		{
-			current = current->parent();
-		}
-		else
-		{
-#ifdef AOLXML_FASTLOOKUP
-			nameToNodeMap_t::iterator mi = current->m_nameToNodeMap.find(s);
-			current = (mi == current->m_nameToNodeMap.end() ? 0 : (*mi).second);
-#else
-			list<aolxml::node*>::iterator ci = find_if(
-				current->childrenBegin(),current->childrenEnd(),bind2nd(ptr_fun(matchNameVS2005),s));
-			current = (ci == current->childrenEnd() ? 0 : (*ci));
-#endif
-		}
-	}
-
-	return current;
-}
-
-list<aolxml::node*> aolxml::node::findNodes(node *root,const string &path) throw()
-{
-	list<aolxml::node*> result;
-
-	if (path.empty() || (!root))
-	{
-		return result;
-	}
-
-	vector<string> v = tokenizer(path,'/');
-
-	node *current = root;
-	if (path[0] == '/')
-	{
-		// move to root of tree
-		while (current->parent())
-		{
-			current = current->parent();
-		}
-
-		// make sure first tag matches first token
-		if (current && (!v.empty()) && (current->name() != v[0]))
-		{
-			current = 0;
-		}
-		else
-		{
-			v.erase(v.begin());
-		}
-	}
-
-	string last;
-	if (!v.empty())
-	{
-		last = v.back();
-		v.pop_back();
-	}
-
-	for(vector<string>::const_iterator i = v.begin(); (i != v.end()) && current; ++i)
-	{
-		string s = stripWhitespace(*i);
-		if (s == "" || s == ".")
-		{
-			continue;
-		}
-		else if (s == "..")
-		{
-			current = current->parent();
-		}
-		else
-		{
-#ifdef AOLXML_FASTLOOKUP
-			nameToNodeMap_t::iterator mi = current->m_nameToNodeMap.find(s);
-			current = (mi == current->m_nameToNodeMap.end() ? 0 : (*mi).second);
-#else
-			list<aolxml::node*>::iterator ci = find_if(
-				current->childrenBegin(),current->childrenEnd(),bind2nd(ptr_fun(matchNameVS2005),s));
-			current = (ci == current->childrenEnd() ? 0 : (*ci));
-#endif
-		}
-	}
-	// now do last
-	if (current && last != "")
-	{
-		list<node*> nv = current->m_children;
-		copy(nv.begin(),stable_partition(nv.begin(),nv.end(),bind2nd(ptr_fun(matchNameVS2005),last)),back_inserter(result));
-	}	
-
-	return result;
-}
-
-static bool isAttr(pair<string,string> attr,string name) throw()
-{
-	return (attr.first == name);
-}
-
-aolxml::node::attributeList_t::iterator aolxml::node::findAttribute(const string &name) throw()
-{
-	return find_if(m_attributes.begin(),m_attributes.end(),bind2nd(ptr_fun(isAttr),name));
-}
-
-aolxml::node::attributeList_t::const_iterator aolxml::node::findAttribute(const string &name) const throw()
-{
-	return find_if(m_attributes.begin(),m_attributes.end(),bind2nd(ptr_fun(isAttr),name));
-}
-
-std::string aolxml::node::findAttributeString(const std::string &attr,const std::string &deflt) const throw()
-{
-	aolxml::node::attributeList_t::const_iterator i = findAttribute(attr);
-	return (i == m_attributes.end() ? deflt : (*i).second);
-}
-
-std::string aolxml::node::findAttributeStringTHROW(const std::string &attr) const throw(std::runtime_error)
-{
-	aolxml::node::attributeList_t::const_iterator i = findAttribute(attr);
-	if (i == m_attributes.end())
-	{
-		throw runtime_error("attribute " + attr + " in node " + m_name + " not found.");
-	}
-	return (*i).second;
-}
-
-void aolxml::node::findAttributeStringTHROW(const std::string &attr,std::string &s) const throw(std::runtime_error)
-{
-	s = findAttributeStringTHROW(attr);
-}
-
-void aolxml::node::findAttributeStringTHROW(const std::string &attr,int &i) const throw(std::runtime_error)
-{
-	i = atoi(findAttributeStringTHROW(attr).c_str());
-}
-
-void aolxml::node::findAttributeStringTHROW(const std::string &attr,double &d) const throw(std::runtime_error)
-{
-	d = atof(findAttributeStringTHROW(attr).c_str());
-}
-
-/////////////////////////////////////////////////////////////////////////////
-////////////////////// Parsing (expat) //////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////
-
-void aolxml::StartTag (void *parser, const XML_Char * name, const XML_Char ** atts)
-{
-	aolxml::node* parent = reinterpret_cast<aolxml::node*>(XML_GetUserData((XML_Parser) parser));
-	aolxml::node* current = new aolxml::node(name);
-
-	if (parent)
-	{
-		current->m_preserveSpaces = parent->m_preserveSpaces;
-		parent->addChild(current);
-	}
-
-	int attnum = XML_GetSpecifiedAttributeCount((XML_Parser) parser);
-	for (int i = 0; i < attnum; i += 2) 
-	{
-		string key = atts[i];
-		string value = atts[i+1];
-		current->addAttribute(aolxml::node::attribute_t(key,value));
-		if (key == "xml:space")
-		{
-			current->m_preserveSpaces = (value == "preserve");
-		}
-	}
-
-	XML_SetUserData((XML_Parser) parser, current);
-}
-
-void aolxml::EndTag(void *parser, const XML_Char * /*name*/)
-{
-	aolxml::node* current = reinterpret_cast<aolxml::node*>(XML_GetUserData ((XML_Parser) parser));
-	if (!current->m_preserveSpaces)
-	{
-		current->pcdata() = stripWhitespace(current->pcdata());
-	}
-	XML_SetUserData((XML_Parser) parser,current->parent() ? current->parent() : current);
-}
-
-void aolxml::CData(void *parser)
-{
-	aolxml::node* tag = reinterpret_cast<aolxml::node*>(XML_GetUserData ((XML_Parser) parser));
-	tag->m_preserveSpaces = true;
-}
-
-void aolxml::PCData (void *parser, const XML_Char * s, int len)
-{
-	aolxml::node* tag = reinterpret_cast<aolxml::node*>(XML_GetUserData ((XML_Parser) parser));
-
-	string ss(s,s+len);
-	tag->pcdata() = tag->pcdata() + ss;//(tag->m_preserveSpaces ? ss : stripWhitespace(ss));
-	// whitespace stripping moved to end tag because sometimes we get the PCData in
-	// multiple calls
-}
-
-aolxml::node* aolxml::node::parse(const char *data,size_t len) throw(runtime_error)
-{
-	aolxml::node *root = 0;
-
-	XML_Parser parser = XML_ParserCreate (NULL);
-
-	// setup the parser
-	XML_UseParserAsHandlerArg(parser);
-	XML_SetElementHandler(parser, StartTag, EndTag);
-	XML_SetCharacterDataHandler(parser, PCData);
-	XML_SetUserData(parser, 0);
-	XML_SetStartCdataSectionHandler(parser,CData);
-
-	if (XML_Parse(parser, data,(int)len, 1)) 
-	{
-		root = reinterpret_cast<aolxml::node*>(XML_GetUserData (parser));
-	} 
-	else
-	{
-		// cleanup tree fragment
-		root = reinterpret_cast<aolxml::node*>(XML_GetUserData (parser));
-		if (root)
-		{
-			while (root->parent())
-			{
-				root = root->parent();
-			}
-			delete root;
-		}
-		//////////
-
-		std::ostringstream o;
-		o << "[XML] " << XML_ErrorString(XML_GetErrorCode(parser)) <<
-			" at line " << XML_GetCurrentLineNumber(parser);
-		XML_ParserFree(parser);
-		throw std::runtime_error(o.str());
-	}
-
-	XML_ParserFree (parser);
-	return root;
-}
-
-aolxml::node* aolxml::node::parse(const string &text) throw(runtime_error)
-{
-	return aolxml::node::parse(text.c_str(),text.size());
-}
-
-aolxml::node* aolxml::node::parse(const uniString::utf8::value_type *data,size_t len) throw(std::runtime_error)
-{
-	return aolxml::node::parse((const char *)data,len);
-}
-
-aolxml::node* aolxml::node::parse(const uniString::utf8 &text) throw(std::runtime_error)
-{
-	return aolxml::node::parse(&(text[0]),text.size());	
-}
-
-static void out_tabs(ostream &o,int t)
-{
-	for(int x = 0; x < t; ++x) o << "\t";
-}
-
-static void outputXML(ostream &o,const aolxml::node *n,int tabs)
-{
-	o << endl; out_tabs(o,tabs);
-	o << "<" << n->name();
-	for(aolxml::node::attributeList_t::const_iterator i = n->attributes().begin();
-		i != n->attributes().end(); ++i)
-	o << " " << (*i).first << "=\"" << (*i).second << "\"";
-	o << ">" << n->pcdata();
-	if (!n->childrenEmpty())
-	{
-		for(aolxml::node::const_childIterator_t i = n->childrenBegin(); i != n->childrenEnd(); ++i)
-		{
-			outputXML(o,(*i),tabs+1);
-		}
-		o << endl;
-		out_tabs(o,tabs);
-	}
-	o << "</" << n->name() << ">";
-}
-
-ostream& aolxml::operator<<(ostream &o,const aolxml::node *n)
-{
-	outputXML(o,n,0);
-	o << endl;
-	return o;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/aolxml.h b/Src/Plugins/DSP/sc_serv3/aolxml/aolxml.h
deleted file mode 100644
index f87e4789..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/aolxml.h
+++ /dev/null
@@ -1,372 +0,0 @@
-#pragma once
-#ifndef xml_H_
-#define xml_H_
-
-#include <string.h>
-#include <string>
-#include <stdexcept>
-#include <list>
-#include <numeric>
-#include <functional>
-#include "stl/stringUtils.h"
-#include "unicode/uniString.h"
-
-#define XMLIMPORT
-#include "expat.h"
-
-#ifdef _WIN32
-#pragma warning(push)
-#pragma warning( disable : 4290 ) 
-#pragma warning( disable : 4996 ) 
-#endif
-
-//#define AOLXML_FASTLOOKUP 1
-
-#ifdef AOLXML_FASTLOOKUP
-#include <map>
-#endif
-
-namespace aolxml
-{
-	class node
-	{
-	public:
-		typedef std::pair<std::string,std::string> attribute_t;
-		typedef std::list<attribute_t> attributeList_t;
-		typedef std::list<node*> nodeList_t;
-		typedef nodeList_t::iterator childIterator_t;
-		typedef nodeList_t::const_iterator const_childIterator_t;
-		
-	private:
-		std::string			m_name;
-		attributeList_t		m_attributes;
-		std::string			m_pcdata;
-		node*				m_parent;
-		std::list<node*>	m_children;
-		
-#ifdef AOLXML_FASTLOOKUP
-		typedef std::multimap<std::string,node*> nameToNodeMap_t;
-		nameToNodeMap_t m_nameToNodeMap;
-#endif
-		bool				m_preserveSpaces;
-		
-	public:
-		node(const std::string &name,const std::string &pcd = "")
-			:m_name(name),m_pcdata(pcd),m_parent(0),m_preserveSpaces(false){}
-
-		~node();
-		
-		const std::string &name() const throw() { return m_name; }
-		std::string& name() throw() { return m_name; }
-	
-		attributeList_t& attributes() throw() { return m_attributes; }
-		const attributeList_t& attributes() const throw() { return m_attributes; }
-		void addAttribute(const attribute_t &a) throw() { m_attributes.push_back(a); }
-		attributeList_t::iterator findAttribute(const std::string &attr) throw();
-		attributeList_t::const_iterator findAttribute(const std::string &attr) const throw();
-		std::string findAttributeString(const std::string &attr,const std::string &deflt = "") const throw();
-		std::string findAttributeStringTHROW(const std::string &attr) const throw(std::runtime_error); // throws if attribute not found
-		void findAttributeStringTHROW(const std::string &attr,std::string &s) const throw(std::runtime_error);
-		void findAttributeStringTHROW(const std::string &attr,int &i) const throw(std::runtime_error);
-		void findAttributeStringTHROW(const std::string &attr,double &f) const throw(std::runtime_error);
-		
-		node* parent() throw() { return m_parent;} 
-		const node* parent() const throw() { return m_parent; }
-		const std::string &pcdata() const throw() { return m_pcdata; }
-		std::string& pcdata() throw() { return m_pcdata; }
-		
-		childIterator_t childrenBegin() throw() { return m_children.begin(); }
-		childIterator_t childrenEnd()   throw() { return m_children.end(); }
-		const_childIterator_t childrenBegin() const throw() { return m_children.begin(); }
-		const_childIterator_t childrenEnd() const throw() { return m_children.end(); }
-		bool childrenEmpty() const throw() { return m_children.empty(); }
-		
-		void deleteChild(childIterator_t i); // deletes child and all subchildren
-		bool deleteChild(node *n);
-		void snipChild(childIterator_t i); // remove child from this node but keeps subtree in tact
-
-		void addChild(node *n);
-		void insertChild(childIterator_t i,node *n);
-		
-		static node* findNode(node *root,const std::string &path) throw();
-		static nodeList_t findNodes(node *root,const std::string &path) throw();
-
-		static node* parse(const std::string &text) throw(std::runtime_error);
-		static node* parse(const char *data,size_t len) throw(std::runtime_error);
-		static node* parse(const uniString::utf8 &text) throw(std::runtime_error);
-		static node* parse(const uniString::utf8::value_type *data,size_t len) throw(std::runtime_error);
-		
-		friend std::ostream& operator<<(std::ostream &o,const node *n);
-		friend void StartTag (void *parser, const XML_Char * name, const XML_Char ** atts);
-		friend void EndTag(void *parser, const XML_Char * name);
-		friend void PCData (void *parser, const XML_Char * s, int len);		
-		friend void CData(void *parser);
-	};
-
-	//////////////////////////////////////////////
-	///// utility functions on nodes ////////
-	////////////////////////////////////////////////
-	
-	template<typename T> // convert from text
-	inline T nodeText(node *n) { return n->pcdata(); }
-
-	template<>
-	inline int nodeText(node *n) { return atoi(n->pcdata().c_str()); }
-		
-	template<>
-	inline unsigned short nodeText(node *n) { return atoi(n->pcdata().c_str()); }
-		
-#ifdef _WIN32
-	template<>
-	inline __int64 nodeText(node *n) { return _strtoi64(n->pcdata().c_str(),0,10); }
-		
-	template<>
-	inline unsigned __int64 nodeText(node *n) { return _strtoui64(n->pcdata().c_str(),0,10); }
-#endif
-
-	template<>
-	inline bool nodeText(node *n)
-	{
-		const std::string &s = n->pcdata();
-		if (s.empty()) return false;
-		return (s[0] == 't' || s[0] == 'T' || s[0] == '1' || s[0] == 'y' || s[0] == 'Y');
-	}
-
-	template<>
-	inline double nodeText(node *n) { return atof(n->pcdata().c_str()); }
-
-
-	// get a subnode value. Returns true if value existed
-	template<typename T>
-	inline bool subNodeText(node *n,const std::string &path,T& value,const T defaultValue) throw()
-	{
-		value = defaultValue;
-		if (!n)
-		{
-			return false;
-		}
-		node *subNode = node::findNode(n,path);
-		if (!subNode)
-		{
-			return false;
-		}
-		value = aolxml::nodeText<T>(subNode);
-
-		return true;
-	}
-
-	// same as above, but you cannot detect missing value
-	template<typename T>
-	inline T subNodeText(node *n,const std::string &path,const T defaultValue) throw()
-	{			
-		if (!n)
-		{
-			return defaultValue;
-		}
-		node *subNode = node::findNode(n,path);
-		if (!subNode)
-		{
-			return defaultValue;
-		}
-		return aolxml::nodeText<T>(subNode);
-	}
-
-	inline void subNodeText(node *n,const std::string &path,char *result,int maxLen,const char *defaultValue) throw()
-	{
-		strncpy(result,defaultValue,maxLen);
-
-		if (!n)
-		{
-			return;
-		}
-
-		node *subNode = node::findNode(n,path);
-		if (!subNode)
-		{
-			return;
-		}
-		std::string tmp = aolxml::nodeText<std::string>(subNode);
-		strncpy(result,tmp.c_str(),maxLen);
-	}
-
-	// this one throws if the value is not found
-	template<typename T>
-	inline T subNodeTextTHROW(node *n,const std::string &path) throw(std::runtime_error)
-	{
-		if (!n)
-		{
-			throw std::runtime_error("node NULL");
-		}
-		node *subNode = node::findNode(n,path);
-		if (!subNode)
-		{
-			throw std::runtime_error(path + " missing");
-		}
-		return aolxml::nodeText<T>(subNode);
-	}
-
-	// throws and returns value as a param instead of a function value
-	template<typename T>
-	inline void subNodeTextTHROW(node *n,const std::string &path,T &result) throw(std::runtime_error)
-	{
-		result = aolxml::subNodeTextTHROW<T>(n,path);
-	}
-
-	/// calls function 'f' with each node in the list and the value 'l'
-	// The purpose is to allow you to write a function which will insert
-	// data from each node into container 'l'
-	template<typename L,typename Func>
-	inline void XMLList(L &l,const node::nodeList_t &lnode,Func f) throw(std::runtime_error)
-	{
-		for(node::nodeList_t::const_iterator i = lnode.begin(); i != lnode.end(); ++i)
-		{
-			if (*i)
-			{
-				f(l,*i);
-			}
-		}
-	}
-
-	template<typename L,typename Func>
-	inline void XMLList(L &l,node::nodeList_t &lnode,Func f) throw(std::runtime_error)
-	{
-		for(node::nodeList_t::iterator i = lnode.begin(); i != lnode.end(); ++i)
-		{
-			if (*i)
-			{
-				f(l,*i);
-			}
-		}
-	}
-
-	template<typename L,typename Func>
-	inline void XMLList(L &l,node *n,const std::string &path,Func f) throw(std::runtime_error)
-	{
-		if (!n)
-		{
-			return;
-		}
-		node::nodeList_t lnode = node::findNodes(n,path);
-		for(node::nodeList_t::iterator i = lnode.begin(); i != lnode.end(); ++i)
-		{
-			if (*i)
-			{
-				f(l,*i);
-			}
-		}
-	}
-
-
-	//****************************************************************
-	//* Various templates for constructing XML data
-	//****************************************************************
-	
-	// embed a value in a set of tags (<tag>value</tag>) providing a function
-	// which will convert the value to a string
-	template<typename T,typename ConverterFunc>
-	std::string xmlTag(const std::string &tag,const T value,ConverterFunc func)
-	{
-		return std::string("<") + tag + ">" + func(value) + "</" + tag + ">";
-	}
-
-	// embed a string convertible value to <tag>value</tag>
-	template<typename T>
-	std::string xmlTag(const std::string &tag,const T value)
-	{
-		return std::string("<") + tag + ">" + stringUtil::tos(value) + "</" + tag + ">";
-	}
-
-	inline std::string xmlTag(const std::string &tag,bool value)
-	{
-		return std::string("<") + tag + ">" + (value ? "1" : "0") + "</" + tag + ">";
-	}
-
-	// helper functor to make lists of web taged values using accumulate
-	template<typename T,typename ConverterFunc>
-	class xmlListFunctor: public std::binary_function<std::string,T,std::string>
-	{
-		std::string		m_tag;
-		ConverterFunc	m_func;
-
-	public:
-		xmlListFunctor(const std::string &tag,ConverterFunc f): m_tag(tag),m_func(f){}
-		std::string operator()(const std::string &accum,const T &val)
-		{
-			return accum + xmlTag(m_tag,val,m_func);
-		}
-	};
-
-	// template function so we don't have to use the entire accumulate syntax.
-	/* example:
-		
-			list<string> items;
-			items.push_back("foo");
-			items.push_back("bar");
-			items.push_back("narf");
-			
-			string result = xmlList(items,"junk");
-	
-			// the value of result is now
-			// <junk>foo</junk><junk>bar</junk><junk>narf</junk>
-	*/
-	
-	template<typename Container>
-	std::string xmlList(const Container &c,const std::string &tag)
-	{
-		typedef std::string (*tostype)(const typename Container::value_type);
-
-		return std::accumulate(c.begin(),c.end(),std::string(""),
-							   xmlListFunctor<typename Container::value_type,tostype>(tag,stringUtil::tos<Container::value_type>));
-	}
-
-	// similar to xmlList, but you provide a converter func to make your values into a string
-	template<typename Container,typename ConverterFunc>
-	std::string xmlList(const Container &c,const std::string &tag,ConverterFunc func)
-	{
-		return std::accumulate(c.begin(),c.end(),std::string(""),
-							   xmlListFunctor<typename Container::value_type,ConverterFunc>(tag,func));
-	}
-
-	// similar to xmlList, but with auto indenting
-	template<typename Container>
-	static std::string xmlListIndented(const Container &c,const std::string &tag,const std::string &indent) 
-	{
-		std::string result;
-		for (typename Container::const_iterator i = c.begin(); i != c.end(); ++i)
-		{
-			result += indent + "<" + tag + ">" + stringUtil::tos(*i) + "</" + tag + ">" + stringUtil::eol();
-		}
-		return result;
-	}
-
-	template<typename Container,typename Func>
-	static std::string xmlListIndented(const Container &c,const std::string &tag,const std::string &indent,Func f) 
-	{
-		std::string result;
-		for (typename Container::const_iterator i = c.begin(); i != c.end(); ++i)
-		{
-			result += indent + "<" + tag + ">" + stringUtil::eol();
-			result += f(*i,indent + "\t");
-			result += indent + "</" + tag + ">" + stringUtil::eol();
-		}
-		return result;
-	}
-
-	// escape a string so it is valid inside an XML tag
-	std::string escapeXML(const std::string &s) throw();
-	uniString::utf8 escapeXML(const uniString::utf8 &s) throw();
-	/*static std::string utf8Header() throw() { return "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; }
-	static std::string latin1Header() throw() { return "<?xml version=\"1.0\" encoding=\"latin1\" ?>\n"; }*/
-	
-	std::ostream& operator<<(std::ostream &o,const node *n);
-	void StartTag (void *parser, const XML_Char * name, const XML_Char ** atts);
-	void EndTag(void *parser, const XML_Char * name);
-	void PCData (void *parser, const XML_Char * s, int len);		
-	void CData(void *parser);
-}
-
-#ifdef _WIN32
-#pragma warning(pop)
-#endif
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/aolxmlutils.cpp b/Src/Plugins/DSP/sc_serv3/aolxml/aolxmlutils.cpp
deleted file mode 100644
index df8ad66d..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/aolxmlutils.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "aolxml.h"
-#include "stl/stringUtils.h"
-#include <map>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-class xmlEscapes: public map<char,string>
-{
-public:
-	xmlEscapes()
-	{  		
-		(*this)['<'] = "&lt;";
-		(*this)['>'] = "&gt;";
-		(*this)['&'] = "&amp;";
-		(*this)['\''] = "&apos;";
-		(*this)['"'] = "&quot;";
-	}
-};
-
-static const xmlEscapes gsXmlEscapes;
-
-string aolxml::escapeXML(const string &s) throw()
-{
-	string result;
-	string::size_type siz = s.size();
-	for(string::size_type x = 0; x < siz; ++x)
-	{
-		unsigned char uc = s[x];
-		if (((uc > 0x7f) || (uc >= 1 && uc <= 8) || (uc >= 0x0b && uc <= 0x0c) || (uc >= 0x0e && uc <= 0x1f)))
-		{
-			result += "&#" + tos((unsigned int)uc) + ";";
-		}
-		else 
-		{
-			xmlEscapes::const_iterator i = gsXmlEscapes.find(s[x]);
-			if (i != gsXmlEscapes.end())
-				result += (*i).second;
-			else
-				result += s[x];
-		}
-	}
-	return result;
-}
-
-utf8 aolxml::escapeXML(const utf8 &s) throw()
-{
-	string result;
-	string::size_type siz = s.size();
-	for(string::size_type x = 0; x < siz; ++x)
-	{
-		//unsigned char uc = s[x];
-		xmlEscapes::const_iterator i = gsXmlEscapes.find(s[x]);
-		if (i != gsXmlEscapes.end())
-			result += (*i).second;
-		else
-			result += s[x];
-	}
-	return result;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/aolxml/unix_build_expat b/Src/Plugins/DSP/sc_serv3/aolxml/unix_build_expat
deleted file mode 100644
index a54a8b4c..00000000
--- a/Src/Plugins/DSP/sc_serv3/aolxml/unix_build_expat
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-cd expat
-chmod a+x configure
-./configure --prefix=$OLDPWD
-make install
diff --git a/Src/Plugins/DSP/sc_serv3/auth.cpp b/Src/Plugins/DSP/sc_serv3/auth.cpp
deleted file mode 100644
index 021e0919..00000000
--- a/Src/Plugins/DSP/sc_serv3/auth.cpp
+++ /dev/null
@@ -1,434 +0,0 @@
-/* auth.cpp  routines for authenticating client details with external server */
-
-#include <curl/curl.h>
-#include <list>
-
-#include "protocol_shoutcastClient.h"
-#include "uvox2Common.h"
-#include "webClient.h"
-#include "auth.h"
-#include "bandwidth.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-
-#define MAX_AUTH_THREADS                20
-#define AMNT_ALLOWED_BEFORE_SKIPPING    1000
-
-#define LOGNAME "[AUTH] "
-#define DEBUG_LOG(...)    do { if (gOptions.authDebug()) DLOG(__VA_ARGS__); } while(0)
-
-extern int xferinfo(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow);
-
-namespace auth
-{
-	using namespace std;
-	using namespace uniString;
-	using namespace stringUtil;
-
-	class authService
-	{
-	public:
-		time_t				restart_time;
-		utf8				main_post;
-		list<auth_info*>	clients;
-		CURL				*m_curl;
-		bool				in_use;
-
-		authService();
-		~authService();
-
-		static THREAD_FUNC process(void *arg);
-
-		friend void schedule(auth_info *info);
-		friend void init();
-	};
-
-    list<auth_info*>        g_queue;
-    AOL_namespace::mutex    g_qMutex;
-    authService *           g_services = 0;
-    utf8                    g_authURL = DNAS_AUTH_URL;
-
-#ifdef CURLOPT_PASSWDFUNCTION
-	/* make sure that prompting at the console does not occur */
-	static int my_getpass(void *client, char *prompt, char *buffer, int buflen)
-	{
-		buffer[0] = '\0';
-		return 0;
-	}
-#endif
-
-	static int handle_returned_header(void *ptr, size_t size, size_t nmemb, void *stream)
-	{
-		auth_info *info = reinterpret_cast<auth_info*>(stream);
-		if (info)
-		{
-			utf8 line((char*)ptr);
-			if (!line.empty())
-			{
-				line = stripWhitespace(line);
-				if (!line.empty())
-				{
-					// skip over the initial HTTP header and just look at key pairs
-					utf8::size_type pos = line.find(utf8(":"));
-					if (pos != utf8::npos)
-					{
-						utf8 key = toLower(stripWhitespace(line.substr(0,pos)));
-						utf8 value = stripWhitespace(line.substr(pos+1));
-
-						if (!key.empty())
-						{
-							DEBUG_LOG("[AUTH sid=" + tos(info->sid) + "] Auth Header [" + key + ":" + value + "]");
-
-							if (key == "shoutcast-auth-user")
-							{
-								if (value == "withintro")
-								{
-									info->has_intro = true;
-								}
-								info->authenticated = true;
-								info->valid_response = true;
-							}
-							else if (key == "advert-group")
-							{
-								info->group = atoi(value.hideAsString().c_str());
-								#if defined(_DEBUG) || defined(DEBUG)
-								if (info->group == 1729)
-								{
-									info->group = 501;
-								}
-								#endif
-								info->valid_response = true;
-							}
-						}
-					}
-				}
-			}
-		}
-
-		int amount = (int)(size * nmemb);
-		bandWidth::updateAmount(bandWidth::AUTH_AND_METRICS, amount);
-		return amount;
-	}
-
-	static int handle_returned_data(void *ptr, size_t size, size_t nmemb, void *stream)
-	{
-		auth_info *info = reinterpret_cast<auth_info*>(stream);
-		if (info)
-		{
-			// cap any intro content to a few meg
-			if (info->has_intro && ((int)info->content.size() <= gOptions.maxSpecialFileSize()))
-			{
-				vector <__uint8> &v = info->content;
-				__uint8 *s = (__uint8*)ptr;
-				v.insert (v.end(), s, s + (size * nmemb));
-			}
-		}
-
-		int amount = (int)(size * nmemb);
-		bandWidth::updateAmount(bandWidth::AUTH_AND_METRICS, amount);
-		return amount;
-	}
-
-    authService::authService() : restart_time(0), in_use(false)
-    {
-        m_curl = webClient::setupCurlDefaults (NULL, LOGNAME, g_authURL, 4L);
-        //DEBUG_LOG("[AUTH] Starting auth instance");
-    }
-
-    authService::~authService()
-    {
-        restart_time = 0;
-        in_use = false;
-        if (m_curl)
-        {
-            curl_easy_cleanup(m_curl);
-            m_curl = NULL;
-        }
-        //DEBUG_LOG("[AUTH] Stopping auth instance");
-    }
-
-    THREAD_FUNC authService::process(void* arg)
-    {
-        try
-        {
-            authService* m_auth = reinterpret_cast<authService*>(arg);
-            if (m_auth)
-            {
-                if (!iskilled())
-                {
-                    g_qMutex.lock();
-
-                    while (!m_auth->clients.empty())
-                    {
-                        auth_info *info = m_auth->clients.front();
-                        m_auth->clients.pop_front();
-                        g_qMutex.unlock();
-
-                        if (info)
-                        {
-                            if (info->url.empty() == false)
-                            {
-                                g_qMutex.lock();
-                                m_auth->main_post = info->post;
-                                m_auth->m_curl = webClient::setupCurlDefaults (m_auth->m_curl, LOGNAME, info->url, 4L);
-                                DLOG ("updated main post to " + m_auth->main_post + " and URL " + info->url, LOGNAME, info->sid);
-                                g_qMutex.unlock();
-                            }
-
-                            if (m_auth->restart_time && (::time(NULL) >= m_auth->restart_time))
-                            {
-                                m_auth->restart_time = 0;
-                                DEBUG_LOG("Restarting disabled auth", LOGNAME, info->sid);
-                            }
-
-							protocol_shoutcastClient *client = info->client;
-							if (client)	// if set to be kicked then no point in processing
-							{
-								if (client->m_kickNextRound == false)
-								{
-									if (m_auth->restart_time)
-									{
-										// auth is disabled for now, but assume client is ok
-										info->authenticated = true;
-									}
-									else
-									{
-                                        if (info->post.empty() == false)
-                                        {
-                                            utf8 post = info->post + "&" + m_auth->main_post;
-
-#if defined(_DEBUG) || defined(DEBUG)
-                                            DEBUG_LOG("POST body: " + utf8(post.c_str()), LOGNAME, info->sid);
-#endif
-
-                                            char errormsg[CURL_ERROR_SIZE] = {0};
-                                            if (m_auth->m_curl)
-                                            {
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_HEADERFUNCTION, handle_returned_header);
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_WRITEFUNCTION, handle_returned_data);
-
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_ERRORBUFFER, errormsg);
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_HEADERDATA, info);
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_WRITEDATA, info);
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_POSTFIELDSIZE, post.size());
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_COPYPOSTFIELDS, post.c_str());
-
-                                                // use progress/xfer functions to trap for the server kill case
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_NOPROGRESS, 0L);
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_XFERINFOFUNCTION, xferinfo);
-                                                curl_easy_setopt(m_auth->m_curl, CURLOPT_XFERINFODATA, info->sid);
-                                            }
-
-                                            CURLcode ret = CURLE_FAILED_INIT;
-                                            if (!m_auth->m_curl || ((ret = curl_easy_perform(m_auth->m_curl)) != CURLE_OK))
-                                            {
-                                                ELOG("[AUTH sid=" + tos(info->sid) + "] Request failed on auth with " +
-                                                        (errormsg[0] ? errormsg : curl_easy_strerror(ret)));
-
-                                                g_qMutex.lock();
-                                                if (m_auth->restart_time == 0)
-                                                {
-                                                    m_auth->restart_time = ::time(NULL) + 60;
-                                                }
-                                                g_qMutex.unlock();
-
-                                                info->authenticated = true;
-                                            }
-                                        }
-                                    }
-
-									if (info->authenticated)
-									{
-										// we need to double-check that the client still
-										// exists as there could have been a delay with
-										// the processing of this and it's since dropped
-										// or been kicked - if so we don't want to crash
-										//stats::
-
-										if (info->group >= 0)
-										{
-											client->setGroup(info->group);
-										}
-										if (info->has_intro)
-										{
-											DEBUG_LOG("[AUTH sid=" + tos(info->sid) + "] Listener auth supplied intro of " + tos((long)info->content.size()));
-											client->setIntro(info->content, info->m_dataType);
-										}
-									}
-									else
-									{
-										// if we didn't get the required header responses
-										// but we did get a valid response from the server
-										// then we should just allow the client to connect
-										// as we don't know what's going on so assume "ok"
-										if (!info->valid_response)
-										{
-											info->authenticated = true;
-										}
-										else
-										{
-											DEBUG_LOG("[AUTH sid=" + tos(info->sid) + "] Auth failed, 403 returned");
-											client->return_403();
-										}
-									}
-								}
-
-								// if we're re-processing the client then we
-								// musn't re-schedule it else it'll go boom!
-								if (!info->delayed_auth)
-								{
-									threadedRunner::scheduleRunnable(client);
-								}
-							}
-						}
-
-						delete info;
-						info = NULL;
-
-						g_qMutex.lock();
-					}
-
-					m_auth->clients.clear();
-					m_auth->in_use = false;
-					g_qMutex.unlock();
-				}
-			}
-		}
-		catch (...)
-		{
-			authService* m_auth = reinterpret_cast<authService*>(arg);
-			if (m_auth)
-			{
-				g_qMutex.lock();
-				m_auth->clients.clear();
-				m_auth->in_use = false;
-				g_qMutex.unlock();
-			}
-		}
-		return 0;
-	}
-
-	void schedule(auth_info *info)
-	{
-		if (info)
-		{
-			g_qMutex.lock();
-			do
-			{
-				if (g_queue.size() > AMNT_ALLOWED_BEFORE_SKIPPING)
-				{
-					// what to do when under stress/timeout
-					DEBUG_LOG(LOGNAME "Heavy backlog of auth requests, skipping");
-					threadedRunner::scheduleRunnable(info->client);
-					delete info;
-					info = NULL;
-					break;
-				}
-
-				if (g_services)
-				{
-					int i = 0;
-					for (; i < MAX_AUTH_THREADS; ++i)
-					{
-						if (g_services[i].in_use == false)
-						{
-							// start auth thread processing
-							g_services[i].in_use = true;
-							g_services[i].clients.push_back(info);
-							if (!g_queue.empty())
-							{
-								g_services[i].clients.insert(g_services[i].clients.end(), g_queue.begin(), g_queue.end());
-								g_queue.clear();
-							}
-
-							// do what we can to make sure that if we fail
-							// to start the thread then we'll pass it on
-							DEBUG_LOG(LOGNAME "Starting auth thread #" + tos(i+1));
-							SimpleThread(authService::process, &g_services[i]);
-							break;
-						}
-					}
-
-					if (i >= MAX_AUTH_THREADS)
-					{
-						g_queue.push_back(info);
-						//DEBUG_LOG(LOGNAME "Unable to process auth requests, skipping");
-						//threadedRunner::scheduleRunnable(info->client);
-						//delete info;
-						//info = NULL;
-						break;
-					}
-				}
-				else
-				{
-					DEBUG_LOG(LOGNAME "Unable to process auth requests, skipping");
-					info->authenticated = true;
-					threadedRunner::scheduleRunnable(info->client);
-					delete info;
-					info = NULL;
-					break;
-				}
-
-				// make sure that if things go arwy that we should be able to terminate
-				if (iskilled())
-				{
-					break;
-				}
-			} while (0);
-			g_qMutex.unlock();
-		}
-	}
-
-    void updateServices (bool initial)
-    {
-        if (g_services == NULL)
-            return;
-        httpHeaderMap_t vars;
-        vars["server"] = "Shoutcast v" + gOptions.getVersionBuildStrings();
-        vars["port"] = tos(g_portForClients);
-        utf8 main_post = encodeVariables(vars);
-
-        for (int i = 0; i < MAX_AUTH_THREADS; ++i)
-        {
-            if (initial)
-            {
-                g_services[i].main_post = main_post;
-            }
-            else
-            {
-                auth_info *info = new auth::auth_info (g_authURL);
-                info->post = main_post;
-                g_qMutex.lock();
-                g_services[i].clients.push_back (info);
-                if (g_services[i].in_use == false)
-                {
-                    g_services[i].in_use = true;
-                    SimpleThread(authService::process, &g_services[i]);
-                }
-                g_qMutex.unlock();
-            }
-        }
-    }
-
-    void init()
-    {
-        g_services = new authService[MAX_AUTH_THREADS];
-        if (g_services)
-        {
-            updateServices (true);
-        }
-        else
-        {
-            WLOG(LOGNAME "Failed to start auth service threads");
-        }
-    }
-
-	void cleanup()
-	{
-		if (g_services)
-		{
-			delete[] g_services;
-			g_services = NULL;
-		}
-	}
-}
diff --git a/Src/Plugins/DSP/sc_serv3/auth.h b/Src/Plugins/DSP/sc_serv3/auth.h
deleted file mode 100644
index 86e96e3d..00000000
--- a/Src/Plugins/DSP/sc_serv3/auth.h
+++ /dev/null
@@ -1,69 +0,0 @@
-#pragma once
-#ifndef _AUTH_H
-#define _AUTH_H
-
-#include <vector>
-#include "unicode/uniString.h"
-#include "uvox2Common.h"
-
-
-class protocol_shoutcastClient;
-
-#define DNAS_AUTH_URL "https://auth.shoutcast.com/AddShout"
-
-namespace auth
-{
-	using namespace uniString;
-	class authService;
-
-	typedef size_t streamID_t;
-	struct auth_info
-	{
-		protocol_shoutcastClient    *client;
-		utf8                        url;
-		utf8                        post;
-		std::vector<__uint8>        content;
-		streamID_t					sid;
-		int                         group;
-        int                         m_dataType;
-		bool                        authenticated;
-		bool                        has_intro;
-		bool						valid_response;
-		bool						delayed_auth;
-
-		explicit auth_info(const utf8& _url = "")
-		{
-			url = _url;
-			client = NULL;
-			group = -1;
-			authenticated = false;
-			has_intro = false;
-			valid_response = false;
-			delayed_auth = false;
-			sid = 1;
-            m_dataType = MP3_DATA; // default
-		}
-
-		~auth_info()
-		{
-			client = NULL;
-			post.clear();
-			group = -1;
-			authenticated = false;
-			has_intro = false;
-			valid_response = false;
-			delayed_auth = false;
-			content.clear();
-			sid = 0;
-		}
-	};
-
-    extern utf8                    g_authURL;
-
-	void schedule(auth_info *info);
-    void updateServices (bool initial = false);
-	void init();
-	void cleanup();
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/banList.cpp b/Src/Plugins/DSP/sc_serv3/banList.cpp
deleted file mode 100644
index ac9bf6a4..00000000
--- a/Src/Plugins/DSP/sc_serv3/banList.cpp
+++ /dev/null
@@ -1,431 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#else
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#endif
-
-#include <stdio.h>
-#include "banList.h"
-#include "global.h"
-#include "stl/stringUtils.h"
-#include "macros.h"
-#include <algorithm>
-#include "webNet/socketOps.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-#include <assert.h>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME "[BAN] "
-
-#ifdef _WIN32
-typedef unsigned long in_addr_t;
-#endif
-
-banList g_banList;
-
-class banList::impl
-{
-private:
-	struct banEntrySave
-	{
-		FILE *f;
-		size_t stream_ID;
-	};
-
-	struct banEntry: public ban_t
-	{
-		in_addr_t	m_ip;		// ip as binary type. Old style, but that's how the old sc_serv did it and we'll
-								// continue to do it that way until we're ready to break the old software
-
-		void save(banEntrySave entrySave) throw(exception)
-		{
-			if (m_stream_ID == entrySave.stream_ID)
-			{
-				utf8 s(m_numericIP + ";" + tos(m_mask) + ";" + m_comment + eol());
-				if (fwrite(s.c_str(),1,s.size(),entrySave.f) != s.size())
-				{
-					throwEx<tagged_error>(LOGNAME "I/O error writing " + (!entrySave.stream_ID ? "global" : "sid=" + tos(entrySave.stream_ID)) + " ban file");
-				}
-			}
-		}
-
-		bool validIP() throw()
-		{
-			return ((m_ip != INADDR_NONE) && (m_ip != 0));
-		}
-
-		bool validMask() throw()
-		{
-			return (m_mask <= 255);
-		}
-
-		static in_addr_t stringToIP(const utf8 &sIP, utf8 &hostIP)
-		{
-			// default is to assume a raw IP address in the list
-			in_addr_t ip =  inet_addr((const char *)sIP.c_str());
-			if (ip == INADDR_NONE)
-			{
-				// though if that fails then attempt to
-				// get an IP address from a hostname...
-				string sHost;
-				try
-				{
-					sHost = socketOps::hostNameToAddress(sIP.hideAsString());
-				}
-				catch(...)
-				{
-				}
-				if (!sHost.empty())
-				{
-					ip =  inet_addr((const char *)sHost.c_str());
-					if (ip != INADDR_NONE)
-					{
-						hostIP = sHost;
-					}
-				}
-			}
-			return ip;
-		}
-
-		banEntry(const utf8 &numericIP, const __uint32 mask, const utf8 &comment, const size_t stream_ID) throw()
-				 :ban_t(numericIP, mask, comment, stream_ID), m_ip(stringToIP(numericIP, m_hostIP)) {}
-		banEntry() throw():m_ip(0){}
-	};
-
-	AOL_namespace::mutex	m_lock;
-	list<banEntry>			m_list;
-
-public:
-	bool load(const uniFile::filenameType &fn, size_t stream_ID) throw(exception)
-	{
-		if (fn.empty())
-		{
-			throwEx<tagged_error>(LOGNAME "No " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban file");
-		}
-		else if (gOptions.microServerDebug())
-		{
-			DLOG(LOGNAME "Attempting to read ban file: " + fileUtil::getFullFilePath(fn));
-		}
-		
-		stackLock sml(m_lock);
-		
-		FILE *f = uniFile::fopen(fn,"rb");
-		if (!f) return false;
-
-		try 
-		{
-			int l = 0;
-			int count = 0;
-			while (true)
-			{
-				char buffer[4096] = {0};
-
-				if (!fgets(buffer, sizeof(buffer), f)) break; // get a line
-
-				++l; // increment line counter
-
-				utf8 s;
-
-				// skip utf-8 BOM
-				if ((strlen(buffer) > 2) &&
-					(((unsigned char*)buffer)[0] == 0xef) &&
-					(((unsigned char*)buffer)[1] == 0xbb) &&
-					(((unsigned char*)buffer)[2] == 0xbf))
-				{
-					s = &(buffer[3]);
-				}
-				else
-				{
-					s = buffer;
-				}
-
-				s = stripWhitespace(s);
-
-				utf8::size_type pos1 = s.find(utf8::value_type(';'));
-				if (pos1 == utf8::npos)
-				{
-					throwEx<tagged_error>(LOGNAME "Parse error in " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban file on line " + tos(l));
-				}
-
-				utf8::size_type pos2 = s.find(utf8::value_type(';'),pos1+1);
-				if (pos2 == utf8::npos)
-				{
-					throwEx<tagged_error>(LOGNAME "Parse error in " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + "ban file on line " + tos(l));
-				}
-
-				banEntry e(s.substr(0,pos1),utf8(s.substr(pos1+1,pos2 - pos1 - 1)).toInt(),s.substr(pos2+1),stream_ID);
-
-				if (!e.validIP())
-				{
-					WLOG(LOGNAME "Line " + tos(l) + " of " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban list has been ignored (bad IP)");
-				}
-				else if (!e.validMask())
-				{
-					WLOG(LOGNAME "Line " + tos(l) + " of " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban list has been ignored (bad MASK)");
-				}
-				else
-				{
-					if (this->find(e.m_numericIP,e.m_mask,e.m_stream_ID,false) == false)
-					{
-						m_list.push_back(e);
-						++count;
-					}
-				}
-			}
-			ILOG(LOGNAME "Banned " + tos(count) + " IP" + (count != 1 ? "'s" : "") + " from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban file");
-		}
-		catch(...)
-		{
-			if (f) ::fclose(f);
-			throw;
-		}
-		if (f) ::fclose(f);
-		return true;
-	}
-
-	void save(const uniFile::filenameType &fn, size_t stream_ID) throw(exception)
-	{
-		stackLock sml(m_lock);
-
-		FILE *f = uniFile::fopen(fn,"wb");
-		if (!f)
-		{
-			throwEx<tagged_error>(LOGNAME "Could not open " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) +
-								  " ban file `" + fn + "' for writing (" + errMessage().hideAsString() + ")");
-		}
-		try 
-		{
-			banEntrySave entrySave;
-			entrySave.f = f;
-			entrySave.stream_ID = stream_ID;
-			for_each(m_list.begin(),m_list.end(),bind2nd(mem_fun_ref(&banEntry::save),entrySave));
-		}
-		catch(...)
-		{
-			if (f) ::fclose(f);
-			throw;
-		}
-		if (f) ::fclose(f);
-
-		if (!uniFile::fileSize(fn))
-		{
-			uniFile::unlink(fn);
-		}
-	}
-
-	bool add(const utf8 &ipAddr, const __uint32 mask, const utf8 &comment, const size_t stream_ID) throw(exception)
-	{
-		// skip loopback addresses as we treat them specially anyway
-		if ((ipAddr.find(utf8("127.")) == utf8::npos))
-		{
-			banEntry e(ipAddr, mask,comment, stream_ID);
-			if (!e.validIP())
-			{
-				throwEx<runtime_error>(LOGNAME "Invalid IP specified - `" + ipAddr + "'");
-			}
-			if (!e.validMask())
-			{
-				throwEx<runtime_error>(LOGNAME "Invalid MASK specified - `" + tos(mask) + "'");
-			}
-
-			stackLock sml(m_lock);
-			m_list.push_back(e);
-			return true;
-		}
-		return false;
-	}
-
-	// true if removed
-	bool remove(const utf8 &ipAddr, const __uint32 mask, const size_t stream_ID,
-				const bool allStream, const bool fallback = false, const bool use_lock = true)
-	{
-		if (use_lock)
-		{
-			stackLock sml(m_lock);
-		}
-
-		for (list<banEntry>::iterator i = m_list.begin(); i != m_list.end(); ++i)
-		{
-			if (
-				(allStream || (!allStream && (((*i).m_numericIP == ipAddr) || ((*i).m_hostIP == ipAddr)) && ((*i).m_mask == mask))) && 
-				((*i).m_stream_ID == stream_ID))
-			{
-				m_list.erase(i);
-				return true;
-			}
-		}
-
-		// attempt to see if we've got a hostname which has not been detected from the loading mapping
-		if (!fallback)
-		{
-			string sHost;
-			try
-			{
-				sHost = socketOps::hostNameToAddress(ipAddr.hideAsString());
-			}
-			catch(...)
-			{
-			}
-			if (!sHost.empty())
-			{
-				return remove(sHost, mask, stream_ID, allStream, true, false);
-			}
-		}
-
-		return false;
-	}
-
-	// true if found
-	bool find(const utf8 &ipAddr, const size_t mask, const size_t stream_ID, const bool use_lock=true)
-	{
-		if (use_lock)
-		{
-			stackLock sml(m_lock);
-		}
-
-		if (!m_list.empty())
-		{
-			utf8 hostIP;
-			in_addr_t ip = banEntry::stringToIP(ipAddr, hostIP);
-			for (list<banEntry>::const_iterator i = m_list.begin(); i != m_list.end(); ++i)
-			{
-				if (((*i).m_mask == mask) &&
-					((*i).m_stream_ID == stream_ID) &&
-					(ntohl((*i).m_ip) & ((*i).m_mask|0xffffff00)) ==
-					(ntohl(ip) & ((*i).m_mask|0xffffff00)
-					)
-				)
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	// true if found
-	bool find(const utf8 &ipAddr, const size_t stream_ID, const bool use_lock = true)
-	{
-		if (use_lock)
-		{
-			stackLock sml(m_lock);
-		}
-
-		if (!m_list.empty())
-		{
-			utf8 hostIP;
-			in_addr_t ip = banEntry::stringToIP(ipAddr, hostIP);
-			for (list<banEntry>::const_iterator i = m_list.begin(); i != m_list.end(); ++i)
-			{
-				if (((*i).m_stream_ID == stream_ID) &&
-					(ntohl((*i).m_ip) & ((*i).m_mask|0xffffff00)) ==
-					(ntohl(ip) & ((*i).m_mask|0xffffff00)))
-				{
-					return true;
-				}
-			}
-		}
-
-		return false;
-	}
-
-	void get(std::vector<banList::ban_t> &bl, size_t stream_ID) throw()
-	{
-		stackLock sml(m_lock);
-
-		for (list<banEntry>::const_iterator i = m_list.begin(); i != m_list.end(); ++i)
-		{
-			if ((*i).m_stream_ID == stream_ID)
-			{
-				bl.push_back(*i);
-			}
-		}
-	}
-};
-
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-banList::banList():m_impl(0)
-{
-	m_impl = new banList::impl;
-}
-
-banList::~banList() throw()
-{
-	forget(m_impl);
-}
-
-bool banList::load(const uniFile::filenameType &fn, size_t stream_ID) throw()
-{
-	assert(m_impl);
-
-	bool result(false);
-
-	try
-	{
-		result = m_impl->load(fn,stream_ID);
-	}
-	catch(const exception &ex)
-	{
-		ELOG(ex.what());
-	}
-	return result;
-}
-
-bool banList::save(const uniFile::filenameType &fn, size_t stream_ID) throw()
-{
-	assert(m_impl);
-
-	bool result(false);
-
-	try
-	{
-		m_impl->save(fn,stream_ID);
-		result = true;
-	}
-	catch(const exception &ex)
-	{
-		ELOG(ex.what());
-	}
-	return result;
-}
-
-// throws if parameters are invalid
-bool banList::add(const utf8 &ipAddr, const __uint32 mask, const utf8 &comment, const size_t stream_ID) throw(exception)
-{
-	assert(m_impl);
-	return m_impl->add(ipAddr, mask, comment, stream_ID);
-}
-
-// true if removed
-bool banList::remove(const utf8 &ipAddr, const __uint32 mask, const size_t stream_ID, const bool allStream) throw()
-{
-	assert(m_impl);
-	return m_impl->remove(ipAddr, mask, stream_ID, allStream);
-}
-
-// true if found
-bool banList::find(const utf8 &ipAddr, const size_t stream_ID) throw()
-{
-	assert(m_impl);
-	return m_impl->find(ipAddr, stream_ID);
-}
-
-// true if found
-bool banList::find(const utf8 &ipAddr, const __uint32 mask, const size_t stream_ID) throw()
-{
-	assert(m_impl);
-	return m_impl->find(ipAddr, mask, stream_ID);
-}
-
-void banList::get(vector<banList::ban_t> &bl, const size_t stream_ID) throw()
-{
-	assert(m_impl);
-	m_impl->get(bl, stream_ID);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/banList.h b/Src/Plugins/DSP/sc_serv3/banList.h
deleted file mode 100644
index 97cb781d..00000000
--- a/Src/Plugins/DSP/sc_serv3/banList.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#pragma once
-#ifndef banList_H_
-#define banList_H_
-
-#include <map>
-#include "unicode/uniFile.h"
-
-// class that manages list of addresses banned from the system
-
-class banList
-{
-private:
-	class impl;
-	impl	*m_impl;
-
-public:
-	struct ban_t
-	{
-		size_t				m_mask;
-		size_t				m_stream_ID;	// used to differentiate
-		uniString::utf8		m_numericIP;
-		uniString::utf8		m_comment;		// hostname or other symbolic name
-		uniString::utf8		m_hostIP;		// used to hold the converted IP from a hostname
-
-		ban_t(const uniString::utf8 &numericIP, const __uint32 mask, const uniString::utf8 &comment, const size_t stream_ID) throw()
-			: m_mask(mask), m_stream_ID(stream_ID), m_numericIP(numericIP), m_comment(comment) {}
-
-		ban_t() throw() : m_mask(0), m_stream_ID(1){}
-	};
-
-	// throws if parameters are invalid
-	bool add(const uniString::utf8 &ipAddr, const __uint32 mask, const uniString::utf8 &comment, const size_t stream_ID) throw(std::exception);
-	// true if removed
-	bool remove(const uniString::utf8 &ipAddr, const __uint32 mask, const size_t stream_ID, const bool allStream) throw();
-	// true if found
-	bool find(const uniString::utf8 &ipAddr, const size_t stream_ID) throw();
-	bool find(const uniString::utf8 &ipAddr, const __uint32 mask, const size_t stream_ID) throw();
-
-	bool load(const uniFile::filenameType &fn, const size_t stream_ID) throw();
-	bool save(const uniFile::filenameType &fn, const size_t stream_ID) throw();
-
-	banList();
-	~banList() throw();
-
-	// for web administration reference
-	void get(std::vector<ban_t> &bl, const size_t stream_ID) throw();
-};
-
-extern banList g_banList;
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/bandwidth.cpp b/Src/Plugins/DSP/sc_serv3/bandwidth.cpp
deleted file mode 100644
index b909eb8f..00000000
--- a/Src/Plugins/DSP/sc_serv3/bandwidth.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-#include "bandwidth.h"
-#include "global.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(...) do { if (gOptions.statsDebug()) DLOG(__VA_ARGS__); } while (0)
-
-#define LOGNAME "[BANDWIDTH] "
-
-static __uint64 g_bandWidthTable[bandWidth::ALL_OTHER];
-static AOL_namespace::rwLock g_bandwidthLock;
-
-const __uint64 bandWidth::getAmount(const bandWidth::usageType_t type)
-{
-    stackRWLock sl (g_bandwidthLock);
-
-	if (type < ALL_SENT)
-	{
-		return g_bandWidthTable[type];
-	}
-
-	switch (type)
-	{
-		case bandWidth::ALL_SENT:
-		{
-			return g_bandWidthTable[CLIENT_V1_SENT] +
-				   g_bandWidthTable[CLIENT_V2_SENT] +
-				   g_bandWidthTable[CLIENT_HTTP_SENT] +
-				   g_bandWidthTable[CLIENT_FLV_SENT] +
-				   g_bandWidthTable[CLIENT_M4A_SENT] +
-				   g_bandWidthTable[SOURCE_V1_SENT] +
-				   g_bandWidthTable[SOURCE_V2_SENT] +
-				   g_bandWidthTable[PUBLIC_WEB] +
-				   g_bandWidthTable[PRIVATE_WEB] +
-				   g_bandWidthTable[FLASH_POLICY] +
-				   g_bandWidthTable[RELAY_V2_SENT]+
-				   g_bandWidthTable[YP_SENT] +
-				   g_bandWidthTable[AUTH_AND_METRICS];
-		}
-		case bandWidth::ALL_RECV:
-		{
-			return g_bandWidthTable[SOURCE_V1_RECV] +
-				   g_bandWidthTable[SOURCE_V2_RECV] +
-				   g_bandWidthTable[RELAY_MISC_RECV] +
-				   g_bandWidthTable[RELAY_V1_RECV] +
-				   g_bandWidthTable[RELAY_V2_RECV] +
-				   g_bandWidthTable[YP_RECV] +
-				   g_bandWidthTable[ADVERTS];
-		}
-		case bandWidth::ALL_WEB:
-		{
-			return g_bandWidthTable[PUBLIC_WEB] +
-				   g_bandWidthTable[PRIVATE_WEB];
-		}
-		case bandWidth::ALL_SOURCE_SENT:
-		{
-			return g_bandWidthTable[SOURCE_V1_SENT] +
-				   g_bandWidthTable[SOURCE_V2_SENT];
-		}
-		case bandWidth::ALL_SOURCE_RECV:
-		{
-			return g_bandWidthTable[SOURCE_V1_RECV] +
-				   g_bandWidthTable[SOURCE_V2_RECV];
-		}
-		case bandWidth::ALL_CLIENT_SENT:
-		{
-			return g_bandWidthTable[CLIENT_V1_SENT] +
-				   g_bandWidthTable[CLIENT_V2_SENT] +
-				   g_bandWidthTable[CLIENT_HTTP_SENT] +
-				   g_bandWidthTable[CLIENT_FLV_SENT] +
-				   g_bandWidthTable[CLIENT_M4A_SENT];
-		}
-		case bandWidth::ALL_RELAY_RECV:
-		{
-			return g_bandWidthTable[RELAY_MISC_RECV] +
-				   g_bandWidthTable[RELAY_V1_RECV] +
-				   g_bandWidthTable[RELAY_V2_RECV];
-		}
-		case bandWidth::ALL_OTHER:
-		{
-			return g_bandWidthTable[FLASH_POLICY] +
-				   g_bandWidthTable[RELAY_V2_SENT] +
-				   g_bandWidthTable[YP_SENT] +
-				   g_bandWidthTable[YP_RECV] +
-				   g_bandWidthTable[AUTH_AND_METRICS] +
-				   g_bandWidthTable[ADVERTS];
-		}
-		default:
-		{
-			return 0;
-		}
-	}
-}
-
-void bandWidth::updateAmount(const bandWidth::usageType_t type, const __uint64 amount)
-{
-    if (amount > 0)
-    {
-	stackRWLock sl (g_bandwidthLock, false);
-	g_bandWidthTable[type] += amount;
-	g_bandWidthTable[bandWidth::ALL] += amount;
-    }
-}
-
-void bandWidth::getFinalAmounts()
-{
-	__uint64 all = getAmount(bandWidth::ALL);
-	if (all > 0)
-	{
-		ILOG(LOGNAME "Total: " + tos(all) +
-					 ", Sent: " + tos(getAmount(bandWidth::ALL_SENT)) +
-					 ", Recv: " + tos(getAmount(bandWidth::ALL_RECV)));
-	}
-}
diff --git a/Src/Plugins/DSP/sc_serv3/bandwidth.h b/Src/Plugins/DSP/sc_serv3/bandwidth.h
deleted file mode 100644
index a74c1c8b..00000000
--- a/Src/Plugins/DSP/sc_serv3/bandwidth.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#pragma once
-#ifndef bandWidth_H_
-#define bandWidth_H_
-
-#include "unicode/uniString.h"
-
-namespace bandWidth
-{
-	typedef enum
-	{
-		ALL = 0,
-		PUBLIC_WEB,			// public facing pages
-		PRIVATE_WEB,		// private admin pages
-
-		SOURCE_V1_SENT,		// v1 source connections sent
-		SOURCE_V1_RECV,		// v1 source connections received
-		SOURCE_V2_SENT,		// v2 source connections sent
-		SOURCE_V2_RECV,		// v2 source connections received
-
-		CLIENT_V1_SENT,		// v1 client connections
-		CLIENT_V2_SENT,		// v2 client connections
-		CLIENT_HTTP_SENT,	// HTTP client connections
-		CLIENT_FLV_SENT,	// FLV client connections
-		CLIENT_M4A_SENT,	// M4A client connections
-
-		FLASH_POLICY,		// flash policy server
-
-		RELAY_MISC_RECV,	// relay connnections handshaking
-		RELAY_V1_RECV,		// v1 relay connnections received
-		RELAY_V2_SENT,		// v2 relay connnections sent
-		RELAY_V2_RECV,		// v2 relay connnections received
-
-		YP_SENT,			// YP connections sent
-		YP_RECV,			// YP connections received
-
-		AUTH_AND_METRICS,	// metrics based responses
-		ADVERTS,			// advert data requests / pulls
-
-		ALL_SENT,			// consolidated sent total
-		ALL_RECV,			// consolidated received total
-		ALL_WEB,			// consolidated web page total
-		ALL_SOURCE_SENT,	// consolidated source sent total
-		ALL_SOURCE_RECV,	// consolidated source received total
-		ALL_CLIENT_SENT,	// consolidated client sent total
-		ALL_RELAY_RECV,		// consolidated relay received total
-		ALL_OTHER			// consolidated remainder total
-	} usageType_t;
-
-	const __uint64 getAmount(const bandWidth::usageType_t);
-	void updateAmount(const bandWidth::usageType_t, const __uint64 amount);
-	void getFinalAmounts();
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/base64.cpp b/Src/Plugins/DSP/sc_serv3/base64.cpp
deleted file mode 100644
index 358ed66c..00000000
--- a/Src/Plugins/DSP/sc_serv3/base64.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include <vector>
-#include "base64.h"
-
-using namespace std;
-
-static const std::string base64_chars = 
-			"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-			"abcdefghijklmnopqrstuvwxyz"
-			"0123456789+/";
-
-static inline bool is_base64(__uint8 c)
-{
-	return (isalnum(c) || (c == '+') || (c == '/'));
-}
-
-const std::vector<__uint8> base64::decode(std::string const& encoded_string)
-{
-	size_t in_len = encoded_string.size();
-	int i = 0, in_ = 0;
-	__uint8 char_array_4[4], char_array_3[3];
-	std::vector<__uint8> ret;
-
-	while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_]))
-	{
-		char_array_4[i++] = encoded_string[in_]; ++in_;
-		if (i == 4)
-		{
-			for (i = 0; i <4; i++)
-			{
-				char_array_4[i] = (__uint8)base64_chars.find(char_array_4[i]);
-			}
-
-			char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
-			char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
-			char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
-
-			for (i = 0; (i < 3); i++)
-			{
-				ret.push_back(char_array_3[i]);
-			}
-
-			i = 0;
-		}
-	}
-
-	if (i)
-	{
-		int j = 0;
-		for (j = i; j <4; j++)
-		{
-			char_array_4[j] = 0;
-		}
-
-		for (j = 0; j <4; j++)
-		{
-			char_array_4[j] = (__uint8)base64_chars.find(char_array_4[j]);
-		}
-
-		char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
-		char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
-		char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
-
-		for (j = 0; (j < i - 1); j++)
-		{
-			ret.push_back(char_array_3[j]);
-		}
-	}
-
-	return ret;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/base64.h b/Src/Plugins/DSP/sc_serv3/base64.h
deleted file mode 100644
index 723cc6a1..00000000
--- a/Src/Plugins/DSP/sc_serv3/base64.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#pragma once
-#ifndef base64_H_
-#define base64_H_
-
-#include "unicode/uniString.h"
-
-// no decoding... yet
-namespace base64
-{
-	template<typename OUTT, typename ITER>
-	OUTT encode(ITER start, ITER finish) throw()
-	{
-		static const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-		int shift = 0;
-		int accum = 0;
-
-		ITER i = start;
-		OUTT result;
-	
-		while (i != finish)
-		{
-			accum <<= 8;
-			shift += 8;
-			accum |= *(i++);
-			while (shift >= 6)
-			{
-				shift -= 6;
-				result.push_back((typename OUTT::value_type)alphabet[(accum >> shift) & 0x3F]);
-			}
-		}
-		if (shift == 4)
-		{
-			result.push_back((typename OUTT::value_type)alphabet[(accum & 0xF)<<2]);
-			result.push_back((typename OUTT::value_type)'=');  
-		}
-		else if (shift == 2)
-		{
-			result.push_back((typename OUTT::value_type)alphabet[(accum & 0x3)<<4]);
-			result.push_back((typename OUTT::value_type)'=');  
-			result.push_back((typename OUTT::value_type)'=');  
-		}
-		return result;
-	}
-	
-	template<typename OUTT,typename CONT>
-	OUTT encode(const CONT &c) throw() 
-	{ 
-		return base64::encode<OUTT>(c.begin(), c.end()); 
-	}
-
-	const std::vector<__uint8> decode(std::string const& encoded_string);
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/cache.cpp b/Src/Plugins/DSP/sc_serv3/cache.cpp
deleted file mode 100644
index ea9fe2fa..00000000
--- a/Src/Plugins/DSP/sc_serv3/cache.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <map>
-#include "cache.h"
-
-void AddorUpdateCache(cacheItem *item, const time_t now, const bool compressed,
-					  const uniString::utf8 &header, const uniString::utf8 &response,
-					  CacheMap_t &cache, AOL_namespace::mutex &lock,
-					  const streamData::streamID_t sid)
-{
-	if (lock.timedLock(3000))
-	{
-		// if we've already got an instance then we update
-		if (item == NULL)
-		{
-			item = cache[sid] = new cacheItem();
-		}
-
-		if (item != NULL)
-		{
-			if (compressed)
-			{
-				item->generatedGZIP = now;
-				item->responseGZIP = response;
-				item->headerGZIP = header;
-			}
-			else
-			{
-				item->generatedRaw = now;
-				item->responseRaw = response;
-				item->headerRaw = header;
-			}
-		}
-		lock.unlock();
-	}
-}
-
-bool GetFromCache(const cacheItem *item, AOL_namespace::mutex &lock,
-				  const time_t now, const bool compressed,
-				  const bool headRequest, uniString::utf8 &response,
-				  const int limit)
-{
-	if (lock.timedLock(3000))
-	{
-		if (item != NULL)
-		{
-			if (((now - item->generatedGZIP) < limit) && compressed)
-			{
-				if (item->responseGZIP.size() > 0)
-				{
-					response = (!headRequest ? item->responseGZIP : item->headerGZIP);
-					lock.unlock();
-					return true;
-				}
-			}
-			else if (((now - item->generatedRaw) < limit) && !compressed)
-			{
-				if (item->responseRaw.size() > 0)
-				{
-					response = (!headRequest ? item->responseRaw : item->headerRaw);
-					lock.unlock();
-					return true;
-				}
-			}
-		}
-		lock.unlock();
-	}
-	return false;
-}
-
-void DeleteCache(CacheMap_t &cache)
-{
-	if (!cache.empty())
-	{
-		for (CacheMap_t::const_iterator i = cache.begin(); i != cache.end(); ++i)
-		{
-			delete (*i).second;
-		}
-		cache.clear();
-	}
-}
-
-void DeleteAllCaches()
-{
-	DeleteCache(m_xmlStatsCache);
-	DeleteCache(m_xmlStatisticsCache);
-	DeleteCache(m_jsonStatsCache);
-	DeleteCache(m_jsonStatisticsCache);
-	DeleteCache(m_7Cache);
-	DeleteCache(m_PLSCache);
-	DeleteCache(m_M3UCache);
-	DeleteCache(m_ASXCache);
-	DeleteCache(m_QTLCache);
-	DeleteCache(m_XSPFCache);
-	DeleteCache(m_xmlTracksCache);
-	DeleteCache(m_jsonTracksCache);
-	DeleteCache(m_xmlPlayedCache);
-	DeleteCache(m_jsonPlayedCache);
-	DeleteCache(m_htmlPlayedCache);
-	DeleteCache(m_streamArtCache);
-	DeleteCache(m_playingArtCache);
-	DeleteCache(m_crossdomainCache);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/cache.h b/Src/Plugins/DSP/sc_serv3/cache.h
deleted file mode 100644
index 72dfb9c5..00000000
--- a/Src/Plugins/DSP/sc_serv3/cache.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#pragma once
-#ifndef _CACHE_H
-#define _CACHE_H
-
-#include "unicode/uniString.h"
-#include "streamData.h"
-
-struct cacheItem
-{
-	time_t generatedGZIP;
-	time_t generatedRaw;
-	uniString::utf8 headerGZIP;
-	uniString::utf8 headerRaw;
-	uniString::utf8 responseGZIP;
-	uniString::utf8 responseRaw;
-
-	cacheItem() : generatedGZIP(0), generatedRaw(0)
-	{
-	}
-
-	~cacheItem()
-	{
-		generatedGZIP = generatedRaw = 0;
-		headerGZIP.clear();
-		headerRaw.clear();
-		responseGZIP.clear();
-		responseRaw.clear();
-	}
-};
-
-typedef std::map<size_t, cacheItem *> CacheMap_t;
-
-void AddorUpdateCache(cacheItem *item, const time_t now, const bool compressed,
-					  const uniString::utf8 &header, const uniString::utf8 &response,
-					  CacheMap_t &cache, AOL_namespace::mutex &lock,
-					  const streamData::streamID_t sid);
-
-bool GetFromCache(const cacheItem *item, AOL_namespace::mutex &lock,
-				  const time_t now, const bool compressed,
-				  const bool headRequest, uniString::utf8 &response,
-				  const int limit = 1);
-
-void DeleteCache(CacheMap_t &cache);
-void DeleteAllCaches();
-
-extern CacheMap_t m_xmlStatsCache, m_xmlStatisticsCache, m_jsonStatsCache,
-				  m_jsonStatisticsCache, m_7Cache, m_PLSCache, m_M3UCache,
-				  m_ASXCache, m_QTLCache, m_XSPFCache, m_xmlTracksCache,
-				  m_jsonTracksCache, m_xmlPlayedCache, m_jsonPlayedCache,
-				  m_htmlPlayedCache, m_streamArtCache, m_playingArtCache,
-				  m_crossdomainCache;
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/config.cpp b/Src/Plugins/DSP/sc_serv3/config.cpp
deleted file mode 100644
index 0b6cd64b..00000000
--- a/Src/Plugins/DSP/sc_serv3/config.cpp
+++ /dev/null
@@ -1,2867 +0,0 @@
-#include "config.h"
-#include "stl/stringUtils.h"
-#include <set>
-#include "cpucount.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-#ifdef _WIN32
-#include "win32/rezFuncs.h"
-#else
-#include "unixversion.h"
-#endif
-#include "banList.h"
-#include "ripList.h"
-#include "adminList.h"
-#include "agentList.h"
-#include "w3cLog.h"
-#include "global.h"
-#include <string.h>
-#include <stdio.h>
-#include <iostream>
-#include <math.h>
-
-#define LOGNAME "[CONFIG] "
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-config::config() throw()
-{
-	#define OPTINIT(n) accessor_t(&config::assign_##n, &config::fetch_##n, &config::count_##n, &config::multi_##n, &config::def_##n)
-
-	m_optMap["configrewrite"] = OPTINIT(configRewrite);
-
-	m_optMap["log"] = OPTINIT(log);
-	m_optMap["screenlog"] = OPTINIT(screenLog);
-	m_optMap["logfile"] = OPTINIT(logFile);
-	m_optMap["reallogfile"] = OPTINIT(realLogFile);
-	m_optMap["logrotates"] = OPTINIT(logRotates);
-	m_optMap["logarchive"] = OPTINIT(logArchive);
-	m_optMap["rotateinterval"] = OPTINIT(rotateInterval);
-
-	// networking
-	m_optMap["namelookups"] = OPTINIT(nameLookups);
-	m_optMap["alternateports"] = OPTINIT(alternatePorts);
-	m_optMap["portbase"] = OPTINIT(portBase);
-	m_optMap["publicport"] = OPTINIT(publicPort);
-	m_optMap["portlegacy"] = OPTINIT(portLegacy);
-	m_optMap["autodumptime"] = OPTINIT(autoDumpTime);
-	m_optMap["maxheaderlinesize"] = OPTINIT(maxHeaderLineSize);
-	m_optMap["maxheaderlinecount"] = OPTINIT(maxHeaderLineCount);
-	m_optMap["password"] = OPTINIT(password);
-	m_optMap["adminpassword"] = OPTINIT(adminPassword);
-    m_optMap["sslcertificatefile"] = OPTINIT(sslCertificateFile);
-    m_optMap["sslcertificatekeyfile"] = OPTINIT(sslCertificateKeyFile);
-
-	m_optMap["buffertype"] = OPTINIT(bufferType);
-	m_optMap["fixedbuffersize"] = OPTINIT(fixedBufferSize);
-	m_optMap["adaptivebuffersize"] = OPTINIT(adaptiveBufferSize);
-	m_optMap["bufferhardlimit"] = OPTINIT(bufferHardLimit);
-	m_optMap["metainterval"] = OPTINIT(metaInterval);
-
-	m_optMap["adtestfileloop"] = OPTINIT(adTestFileLoop);
-	m_optMap["adtestfile"] = OPTINIT(adTestFile);
-	m_optMap["adtestfile2"] = OPTINIT(adTestFile2);
-	m_optMap["adtestfile3"] = OPTINIT(adTestFile3);
-	m_optMap["adtestfile4"] = OPTINIT(adTestFile4);
-	m_optMap["introfile"] = OPTINIT(introFile);
-	m_optMap["backupfile"] = OPTINIT(backupFile);
-	m_optMap["backuptitle"] = OPTINIT(backupTitle);
-	m_optMap["backuploop"] = OPTINIT(backupLoop);
-	m_optMap["maxspecialfilesize"] = OPTINIT(maxSpecialFileSize);
-
-	m_optMap["artworkfile"] = OPTINIT(artworkFile);
-
-	m_optMap["uvoxcipherkey"] = OPTINIT(uvoxCipherKey);
-
-	//// w3c logging
-	m_optMap["w3cenable"] = OPTINIT(w3cEnable);
-	m_optMap["w3clog"] = OPTINIT(w3cLog);
-
-	m_optMap["pidfile"] = OPTINIT(pidFile);
-
-	//// relaying
-	m_optMap["relayreconnecttime"] = OPTINIT(relayReconnectTime);
-	m_optMap["relayconnectretries"] = OPTINIT(relayConnectRetries);
-	m_optMap["maxhttpredirects"] = OPTINIT(maxHTTPRedirects);
-	m_optMap["allowrelay"] = OPTINIT(allowRelay);
-	m_optMap["allowpublicrelay"] = OPTINIT(allowPublicRelay);
-	/////
-
-	//// stream configuration
-	m_optMap["streamid"] = OPTINIT(stream_ID);
-	m_optMap["streamauthhash"] = OPTINIT(stream_authHash);
-	m_optMap["streampath"] = OPTINIT(stream_path);
-	m_optMap["streamrelayurl"] = OPTINIT(stream_relayURL);
-	m_optMap["streambackupurl"] = OPTINIT(stream_backupURL);
-	m_optMap["streamminbitrate"] = OPTINIT(stream_minBitrate);
-	m_optMap["streammaxbitrate"] = OPTINIT(stream_maxBitrate);
-	m_optMap["streammaxuser"] = OPTINIT(stream_maxUser);
-	m_optMap["streampassword"] = OPTINIT(stream_password);
-	m_optMap["streamadminpassword"] = OPTINIT(stream_adminPassword);
-	m_optMap["streampublicserver"] = OPTINIT(stream_publicServer);
-	m_optMap["streamallowrelay"] = OPTINIT(stream_allowRelay);
-	m_optMap["streamallowpublicrelay"] = OPTINIT(stream_allowPublicRelay);
-	m_optMap["streamriponly"] = OPTINIT(stream_ripOnly);
-	m_optMap["streamautodumpsourcetime"] = OPTINIT(stream_autoDumpSourceTime);
-	m_optMap["streamautodumptime"] = OPTINIT(stream_autoDumpTime);
-	m_optMap["streamautodumpusers"] = OPTINIT(stream_autoDumpUsers);
-	m_optMap["streamlistenertime"] = OPTINIT(stream_listenerTime);
-	m_optMap["streamsonghistory"] = OPTINIT(stream_songHistory);
-	m_optMap["streamuvoxcipherkey"] = OPTINIT(stream_uvoxCipherKey);
-    m_optMap["streamlogfile"] = OPTINIT(stream_logFile);
-	m_optMap["streamadtestfileloop"] = OPTINIT(stream_adTestFileLoop);
-	m_optMap["streamadtestfile"] = OPTINIT(stream_adTestFile);
-	m_optMap["streamadtestfile2"] = OPTINIT(stream_adTestFile2);
-	m_optMap["streamadtestfile3"] = OPTINIT(stream_adTestFile3);
-	m_optMap["streamadtestfile4"] = OPTINIT(stream_adTestFile4);
-	m_optMap["streamintrofile"] = OPTINIT(stream_introFile);
-	m_optMap["streambackupfile"] = OPTINIT(stream_backupFile);
-	m_optMap["streambackuptitle"] = OPTINIT(stream_backupTitle);
-	m_optMap["streambackuploop"] = OPTINIT(stream_backupLoop);
-	m_optMap["streambanfile"] = OPTINIT(stream_banFile);
-	m_optMap["streamripfile"] = OPTINIT(stream_ripFile);
-	m_optMap["streamagentfile"] = OPTINIT(stream_agentFile);
-	m_optMap["streamartworkfile"] = OPTINIT(stream_artworkFile);
-	m_optMap["streamw3clog"] = OPTINIT(stream_w3cLog);
-	m_optMap["streamhidestats"] = OPTINIT(stream_hideStats);
-	m_optMap["streamredirecturl"] = OPTINIT(stream_redirectUrl);
-	m_optMap["streammovedurl"] = OPTINIT(stream_movedUrl);
-	m_optMap["streamratelimitwait"] = OPTINIT(stream_rateLimitWait);
-
-	m_optMap["requirestreamconfigs"] = OPTINIT(requireStreamConfigs);
-	m_optMap["userid"] = OPTINIT(userId);
-	m_optMap["licenceid"] = OPTINIT(licenceId);
-
-	//// cdn
-	m_optMap["cdn"] = OPTINIT(cdn);
-	m_optMap["cdnmaster"] = OPTINIT(cdn_master);
-	m_optMap["cdnslave"] = OPTINIT(cdn_slave);
-
-	//// flash
-	m_optMap["flashpolicyfile"] = OPTINIT(flashPolicyFile);
-	m_optMap["flashpolicyserverport"] = OPTINIT(flashPolicyServerPort);
-
-	//// yp
-	m_optMap["yptimeout"] = OPTINIT(ypTimeout);
-	m_optMap["ypaddr"] = OPTINIT(ypAddr);
-	m_optMap["ypport"] = OPTINIT(ypPort);
-	m_optMap["yport"] = OPTINIT(ypPort);
-	m_optMap["yppath"] = OPTINIT(ypPath);
-	m_optMap["ypmaxretries"] = OPTINIT(ypMaxRetries);
-	m_optMap["ypreportinterval"] = OPTINIT(ypReportInterval);
-	m_optMap["ypminreportinterval"] = OPTINIT(ypMinReportInterval);
-	m_optMap["publicserver"] = OPTINIT(publicServer);
-
-	/// agent
-	m_optMap["agentfile"] = OPTINIT(agentFile);
-	m_optMap["saveagentlistonexit"] = OPTINIT(saveAgentListOnExit);
-	m_optMap["blockemptyuseragent"] = OPTINIT(blockEmptyUserAgent);
-
-	//// stats
-	m_optMap["hidestats"] = OPTINIT(hideStats);
-	m_optMap["minbitrate"] = OPTINIT(minBitrate);
-	m_optMap["maxbitrate"] = OPTINIT(maxBitrate);
-	m_optMap["maxuser"] = OPTINIT(maxUser);
-
-	// radionomy metrics
-	m_optMap["admetricsdebug"] = OPTINIT(adMetricsDebug);
-	m_optMap["metricsmaxqueue"] = OPTINIT(metricsMaxQueue);
-
-	m_optMap["authdebug"] = OPTINIT(authDebug);
-
-	/// client behaviour
-	m_optMap["listenertime"] = OPTINIT(listenerTime);
-	m_optMap["autodumpusers"] = OPTINIT(autoDumpUsers);
-	m_optMap["srcdns"] = OPTINIT(srcIP);
-	m_optMap["srcip"] = OPTINIT(srcIP);
-	m_optMap["destdns"] = OPTINIT(destIP);
-	m_optMap["destip"] = OPTINIT(destIP);
-	m_optMap["dstip"] = OPTINIT(destIP);
-	m_optMap["publicdns"] = OPTINIT(publicIP);
-	m_optMap["publicip"] = OPTINIT(publicIP);
-	m_optMap["titleformat"] = OPTINIT(titleFormat);
-	m_optMap["urlformat"] = OPTINIT(urlFormat);
-
-	//// banning
-	m_optMap["banfile"] = OPTINIT(banFile);
-	m_optMap["savebanlistonexit"] = OPTINIT(saveBanListOnExit);
-
-	//// rip
-	m_optMap["ripfile"] = OPTINIT(ripFile);
-	m_optMap["saveriplistonexit"] = OPTINIT(saveRipListOnExit);
-	m_optMap["riponly"] = OPTINIT(ripOnly);
-
-	m_optMap["adminfile"] = OPTINIT(adminFile);
-
-	//// debugging
-	m_optMap["webclientdebug"] = OPTINIT(webClientDebug);
-	m_optMap["yp2debug"] = OPTINIT(yp2Debug);
-	m_optMap["shoutcastsourcedebug"] = OPTINIT(shoutcastSourceDebug);
-	m_optMap["uvox2sourcedebug"] = OPTINIT(uvox2SourceDebug);
-	m_optMap["httpsourcedebug"] = OPTINIT(HTTPSourceDebug);
-	m_optMap["streamdatadebug"] = OPTINIT(streamDataDebug);
-	m_optMap["microserverdebug"] = OPTINIT(microServerDebug);
-	m_optMap["httpstyledebug"] = OPTINIT(httpStyleDebug);
-	m_optMap["shoutcast1clientdebug"] = OPTINIT(shoutcast1ClientDebug);
-	m_optMap["shoutcast2clientdebug"] = OPTINIT(shoutcast2ClientDebug);
-	m_optMap["httpclientdebug"] = OPTINIT(HTTPClientDebug);
-	m_optMap["flvclientdebug"] = OPTINIT(flvClientDebug);
-	m_optMap["m4aclientdebug"] = OPTINIT(m4aClientDebug);
-	m_optMap["relaydebug"] = OPTINIT(relayDebug);
-	m_optMap["relayshoutcastdebug"] = OPTINIT(relayShoutcastDebug);
-	m_optMap["relayuvoxdebug"] = OPTINIT(relayUvoxDebug);
-	m_optMap["statsdebug"] = OPTINIT(statsDebug);
-	m_optMap["threadrunnerdebug"] = OPTINIT(threadRunnerDebug);
-
-	m_optMap["songhistory"] = OPTINIT(songHistory);
-	m_optMap["showlastsongs"] = OPTINIT(songHistory);
-
-	///// misc nonsense
-	m_optMap["unique"] = OPTINIT(unique);
-	m_optMap["include"] = OPTINIT(include);
-	m_optMap["cpucount"] = OPTINIT(cpuCount);
-	m_optMap["clacks"] = OPTINIT(clacks);
-	m_optMap["startinactive"] = OPTINIT(startInactive);
-	m_optMap["ratelimit"] = OPTINIT(rateLimit);
-	m_optMap["ratelimitwait"] = OPTINIT(rateLimitWait);
-	m_optMap["usexff"] = OPTINIT(useXFF);
-	m_optMap["logclients"] = OPTINIT(logClients);
-	m_optMap["admincssfile"] = OPTINIT(adminCSSFile);
-	m_optMap["faviconfile"] = OPTINIT(faviconFile);
-	m_optMap["faviconmimetype"] = OPTINIT(faviconFileMimeType);
-	m_optMap["robotstxtfile"] = OPTINIT(robotstxtFile);
-	m_optMap["redirecturl"] = OPTINIT(redirectUrl);
-	m_optMap["forceshortsends"] = OPTINIT(forceShortSends);
-	m_optMap["adminnowrap"] = OPTINIT(adminNoWrap);
-
-	// used to control the cache handling
-	m_favIconTime = m_styleCustomHeaderTime = 0;
-}
-
-// return the streamConfig entries that reference relays
-const vector<config::streamConfig> config::getRelayList()
-{
-	vector<streamConfig> result;
-	streams_t stream_configs;
-	getStreamConfigs(stream_configs);
-
-	// get all stream configs and then make a vector list of only valid configs
-	// which ensures we're only getting known stream configs unlike prior to
-	// the behaviour with builds 24 which usually gave an extra config than was
-	for (config::streams_t::const_iterator i = stream_configs.begin(); i != stream_configs.end(); ++i)
-	{
-		if ((*i).second.m_relayUrl.isSet())
-		{
-			result.push_back((*i).second);
-		}
-	}
-
-	return result;
-}
-
-// return the streamConfig entry that references the backup url asked
-const vector<config::streamConfig> config::getBackupUrl(const size_t streamID) throw(exception)
-{
-	vector<streamConfig> result;
-	streams_t stream_configs;
-	getStreamConfigs(stream_configs);
-	config::streams_t::const_iterator i = stream_configs.find(streamID);
-
-	if (i != stream_configs.end())
-	{
-		if ((*i).second.m_backupUrl.isSet())
-		{
-			result.push_back((*i).second);
-		}
-	}
-
-	return result;
-}
-
-unsigned short config::getMetaInterval(const size_t streamID) const throw()
-{
-	unsigned short metainterval = stream_metaInterval(streamID);
-	if (!read_stream_metaInterval(streamID))
-	{
-		metainterval = metaInterval();
-	}
-
-	// don't allow less than 256 and
-	// due to overflow we don't need
-	// to do an upper check as it'll
-	// have wrapped around for this.
-	return (metainterval < 256 ? 256 : metainterval);
-}
-
-int config::getBackupLoop(const size_t streamID) const throw()
-{
-	int backuploop = stream_backupLoop(streamID);
-	if (!read_stream_backupLoop(streamID))
-	{
-		backuploop = backupLoop();
-	}
-	return backuploop;
-}
-
-int config::getRateLimitWait(const size_t streamID) const throw()
-{
-	int ratelimitwait = stream_rateLimitWait(streamID);
-	if (!read_stream_rateLimitWait(streamID))
-	{
-		ratelimitwait = rateLimitWait();
-	}
-	// just to make sure that we're giving a sane value
-	return (ratelimitwait > 0 ? ratelimitwait : def_rateLimitWait().toInt());
-}
-
-const int config::isBitrateDisallowed(const size_t streamID, const int bitrate,
-									  int &streamMinBitrate, int &streamMaxBitrate) const throw()
-{
-	int ret = 0;
-
-	// check that these bitrates are allowed (looking at both max and average values)
-	streamMinBitrate = stream_minBitrate(streamID);
-	if (!read_stream_minBitrate(streamID) || !streamMinBitrate)
-	{
-		streamMinBitrate = minBitrate();
-	}
-
-	if ((streamMinBitrate > 0) && (bitrate < streamMinBitrate))
-	{
-		ret |= 1;
-	}
-
-	streamMaxBitrate = stream_maxBitrate(streamID);
-	if (!read_stream_maxBitrate(streamID) || !streamMaxBitrate)
-	{
-		streamMaxBitrate = maxBitrate();
-	}
-
-	if ((streamMaxBitrate > 0) && (bitrate > streamMaxBitrate))
-	{
-		ret |= 2;
-	}
-
-	return ret;
-}
-
-size_t config::getSongHistorySize(const size_t streamID) const throw()
-{
-	size_t songhistory = stream_songHistory(streamID);
-	if (!read_stream_songHistory(streamID))
-	{
-		songhistory = songHistory();
-	}
-	return songhistory;
-}
-
-const int config::getAutoDumpTime(const size_t streamID) const throw()
-{
-	size_t sid = (!streamID ? streamID : DEFAULT_SOURCE_STREAM);
-	int dumpTime = stream_autoDumpTime(sid);
-	if (!read_stream_autoDumpTime(sid) || !dumpTime)
-	{
-		dumpTime = autoDumpTime();
-	}
-	return dumpTime;
-}
-
-const int config::getCPUCount() const throw()
-{
-    int cpu_count = cpuCount();	                // check options
-
-    if (cpu_count < 1)
-    {
-        int maxclients = gOptions.maxUser();
-        if (maxclients < 1100)
-            cpu_count = (maxclients/350) +1;
-        else
-        {
-            int hwcpus = cpucount();
-            if (hwcpus < 5)
-                cpu_count = hwcpus;
-            else
-                cpu_count = (((int)::log10 ((double)maxclients) - 2) * 6) - 2; // should be range of 4-12
-        }
-    }
-    if (cpu_count < 1) cpu_count = 2;			// eh? can never be less than 1
-    return cpu_count;
-}
-
-bool config::setupPasswords(const streams_t &stream_configs) throw(exception)
-{
-	// now form the per stream versions of passwords if there are any
-	bool passwordError = false;
-	for (streams_t::const_iterator i = stream_configs.begin(); i != stream_configs.end(); ++i)
-	{
-		utf8 tempAdminPassword = (*i).second.m_adminPassword;
-		if (tempAdminPassword.empty())
-		{
-			tempAdminPassword = gOptions.adminPassword();
-		}
-
-		utf8 tempPassword = (*i).second.m_password;
-		if (tempPassword.empty())
-		{
-			tempPassword = gOptions.password();
-		}
-
-		// follow legacy behaviour (just incase)
-		if (tempAdminPassword.empty())
-		{
-			tempAdminPassword = tempPassword;
-		}
-		else
-		{
-			// otherwise if explicitly set as the same then we abort
-			if (tempAdminPassword == tempPassword)
-			{
-				WLOG(logSectionName() + "Stream " + tos((*i).first) + " should not have matching passwords for `adminpassword' and `password'.");
-			}
-		}
-
-		if (tempAdminPassword.empty() && tempPassword.empty())
-		{
-			ELOG(logSectionName() + "Stream " + tos((*i).first) + " does not have any passwords specified.");
-			passwordError = true;
-		}
-	}
-
-	return passwordError;
-}
-
-config::streamConfig& config::getPerStreamConfig(streamConfig& stream, const size_t sid, const bool useParent)
-{
-	// tweak the maxuser setting on the stream so it can be made to follow the
-	// per stream setting or for it to revert to the global server limit
-	int tempMaxUser = native_fetch_stream_maxUser(sid);
-	if (!tempMaxUser || (tempMaxUser > gOptions.maxUser()))
-	{
-		if (useParent)
-		{
-			tempMaxUser = 0;
-		}
-	}
-
-	int tempMaxBitrate = native_fetch_stream_maxBitrate(sid);
-	if (!read_stream_maxBitrate(sid))
-	{
-		if (useParent)
-		{
-			tempMaxBitrate = gOptions.maxBitrate();
-		}
-	}
-
-	int tempMinBitrate = native_fetch_stream_minBitrate(sid);
-	if (!read_stream_minBitrate(sid))
-	{
-		if (useParent)
-		{
-			tempMinBitrate = gOptions.minBitrate();
-		}
-	}
-
-	bool tempAllowRelay = native_fetch_stream_allowRelay(sid);
-	if (!read_stream_allowRelay(sid))
-	{
-		if (useParent)
-		{
-			tempAllowRelay = gOptions.allowRelay();
-		}
-	}
-
-	bool tempAllowPublicRelay = native_fetch_stream_allowPublicRelay(sid);
-	if (!read_stream_allowPublicRelay(sid))
-	{
-		if (useParent)
-		{
-			tempAllowPublicRelay = gOptions.allowPublicRelay();
-		}
-	}
-
-	utf8 tempAdminPassword = native_fetch_stream_adminPassword(sid);
-	if (tempAdminPassword.empty())
-	{
-		if (useParent)
-		{
-			tempAdminPassword = gOptions.adminPassword();
-		}
-	}
-
-	utf8 tempPassword = native_fetch_stream_password(sid);
-	if (tempPassword.empty())
-	{
-		if (useParent)
-		{
-			tempPassword = gOptions.password();
-		}
-	}
-
-	utf8 tempPublicServer = native_fetch_stream_publicServer(sid);
-	if (tempPublicServer.empty())
-	{
-		if (useParent)
-		{
-			tempPublicServer = gOptions.publicServer();
-		}
-	}
-
-	return (stream = streamConfig(native_fetch_stream_ID(sid), native_fetch_stream_authHash(sid),
-								  native_fetch_stream_path(sid), native_fetch_stream_relayURL(sid),
-								  native_fetch_stream_backupURL(sid), tempMaxUser, tempMaxBitrate,
-								  tempMinBitrate, tempAdminPassword, tempPassword,
-								  tempPublicServer, tempAllowRelay, tempAllowPublicRelay));
-}
-
-// return a streamConfig entry for the streamID	
-const bool config::getStreamConfig(streamConfig& stream, const size_t streamID)
-{
-	stackLock sml(m_lock);
-
-	map<size_t, size_t>::iterator i = m_stream_ID.find(streamID);
-	if (i != m_stream_ID.end())
-	{
-		config::getPerStreamConfig(stream, streamID);
-		return true;
-	}
-
-	return false;
-}
-
-// return all streamConfig entries organized by streamID	
-void config::getStreamConfigs(streams_t& streams, const bool useParent)
-{
-	stackLock sml(m_lock);
-
-	for (map<size_t, size_t>::const_iterator i = m_stream_ID.begin(); i != m_stream_ID.end(); ++i)
-	{
-		streamConfig stream;
-		streams[native_fetch_stream_ID((*i).second)] = getPerStreamConfig(stream, (*i).second, useParent);
-	}
-
-
-}
-
-// attempt to update an existing stream configuration with the new data
-// and then attempt to pass it to the currently active stream based on it
-__uint64 config::updateStreamConfig(config &readConfig, streamConfig update) throw(exception)
-{
-	if (!update.m_streamID)
-	{
-		return 0;
-	}
-
-	stackLock sml(m_lock);
-	size_t streamID = update.m_streamID;
-	__uint64 updated = 0;
-
-	if (native_fetch_stream_authHash(streamID) != update.m_authHash)
-	{
-		native_assign_stream_authHash(streamID, update.m_authHash);
-		updated |= AUTH_HASH;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("AUTH_HASH");
-		#endif
-	}
-
-	if (native_fetch_stream_path(streamID) != update.m_urlPath)
-	{
-		native_assign_stream_path(streamID, update.m_urlPath);
-		updated |= URL_PATH;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("URL_PATH");
-		#endif
-	}
-	
-	if (native_fetch_stream_relayURL(streamID) != update.m_relayUrl.url())
-	{
-		native_assign_stream_relayURL(streamID, update.m_relayUrl.url());
-		updated |= RELAY_URL;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("RELAY_URL");
-		#endif
-	}
-
-	if (native_fetch_stream_backupURL(streamID) != update.m_backupUrl.url())
-	{
-		native_assign_stream_backupURL(streamID, update.m_backupUrl.url());
-		updated |= BACKUP_URL;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("BACKUP_URL");
-		#endif
-	}
-
-	if (native_fetch_stream_maxUser(streamID) != update.m_maxStreamUser)
-	{
-		native_assign_stream_maxUser(streamID, update.m_maxStreamUser);
-		updated |= MAX_USER;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("MAX_USER");
-		#endif
-	}
-
-	if (native_fetch_stream_maxBitrate(streamID) != update.m_maxStreamBitrate)
-	{
-		native_assign_stream_maxBitrate(streamID, update.m_maxStreamBitrate);
-		updated |= MAX_BITRATE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("MAX_BITRATE");
-		#endif
-	}
-
-	if (native_fetch_stream_minBitrate(streamID) != update.m_minStreamBitrate)
-	{
-		native_assign_stream_minBitrate(streamID, update.m_minStreamBitrate);
-		updated |= MIN_BITRATE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("MIN_BITRATE");
-		#endif
-	}
-
-	utf8 publicServer = readConfig.stream_publicServer(streamID);
-	if (native_fetch_stream_publicServer(streamID) != publicServer)
-	{
-		if (!readConfig.read_stream_publicServer(streamID))
-		{
-			publicServer = gOptions.publicServer();
-		}
-		else
-		{
-			updated |= PUBLIC_SRV;
-			#if defined(_DEBUG) || defined(DEBUG)
-			ELOG("PUBLIC_SRV");
-			#endif
-		}
-		native_assign_stream_publicServer(streamID, publicServer);
-	}
-
-	bool allowRelay = readConfig.stream_allowRelay(streamID);
-	if (native_fetch_stream_allowRelay(streamID) != allowRelay)
-	{
-		if (!readConfig.read_stream_allowRelay(streamID))
-		{
-			allowRelay = gOptions.allowRelay();
-		}
-		native_assign_stream_allowRelay(streamID, allowRelay);
-		updated |= ALLOW_RELAY;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("ALLOW_RELAY");
-		#endif
-	}
-
-	bool allowPublicRelay = readConfig.stream_allowPublicRelay(streamID);
-	if (native_fetch_stream_allowPublicRelay(streamID) != allowPublicRelay)
-	{
-		if (!readConfig.read_stream_allowPublicRelay(streamID))
-		{
-			allowPublicRelay = gOptions.allowPublicRelay();
-		}
-		native_assign_stream_allowPublicRelay(streamID, allowPublicRelay);
-		updated |= ALLOW_PUBLIC_RELAY;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("ALLOW_PUBLIC_RELAY");
-		#endif
-	}
-
-	bool ripOnly = readConfig.stream_ripOnly(streamID);
-	if (native_fetch_stream_ripOnly(streamID) != ripOnly)
-	{
-		if (!readConfig.read_stream_ripOnly(streamID))
-		{
-			ripOnly = gOptions.ripOnly();
-		}
-		native_assign_stream_ripOnly(streamID, ripOnly);
-		updated |= RIP_ONLY;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("RIP_ONLY");
-		#endif
-	}
-
-	int autoDumpTime = readConfig.stream_autoDumpTime(streamID);
-	if (native_fetch_stream_autoDumpTime(streamID) != autoDumpTime)
-	{
-		if (!readConfig.read_stream_autoDumpTime(streamID))
-		{
-			autoDumpTime = gOptions.autoDumpTime();
-		}
-		native_assign_stream_autoDumpTime(streamID, autoDumpTime);
-		updated |= DUMP_TIME;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("DUMP_TIME");
-		#endif
-	}
-
-	bool autoDumpUsers = readConfig.stream_autoDumpUsers(streamID);
-	if (native_fetch_stream_autoDumpUsers(streamID) != autoDumpUsers)
-	{
-		if (!readConfig.read_stream_autoDumpUsers(streamID))
-		{
-			autoDumpUsers = gOptions.autoDumpUsers();
-		}
-		native_assign_stream_autoDumpUsers(streamID, autoDumpUsers);
-		updated |= DUMP_USER;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("DUMP_USER");
-		#endif
-	}
-
-	size_t listenerTime = readConfig.stream_listenerTime(streamID);
-	if (native_fetch_stream_listenerTime(streamID) != listenerTime)
-	{
-		if (!readConfig.read_stream_listenerTime(streamID))
-		{
-			listenerTime = gOptions.listenerTime();
-		}
-		native_assign_stream_listenerTime(streamID, listenerTime);
-		updated |= LIST_TIME;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("LIST_TIME");
-		#endif
-	}
-
-	int songHistory = readConfig.stream_songHistory(streamID);
-	if (native_fetch_stream_songHistory(streamID) != songHistory)
-	{
-		if (!readConfig.read_stream_songHistory(streamID))
-		{
-			songHistory = gOptions.songHistory();
-		}
-		native_assign_stream_songHistory(streamID, songHistory);
-		updated |= SONG_HIST;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("SONG_HIST");
-		#endif
-	}
-
-	utf8 uvoxCipherKey = readConfig.stream_uvoxCipherKey(streamID);
-	if (native_fetch_stream_uvoxCipherKey(streamID) != uvoxCipherKey)
-	{
-		if (!readConfig.read_stream_uvoxCipherKey(streamID))
-		{
-			uvoxCipherKey = gOptions.uvoxCipherKey();
-		}
-		native_assign_stream_uvoxCipherKey(streamID, uvoxCipherKey);
-		updated |= CIPHER_KEY;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("CIPHER_KEY");
-		#endif
-	}
-
-	// passwords are handled slightly differently as clearing of the
-	// password will lead to an invalid scenario so we check and block
-	utf8 streamPassword = readConfig.stream_password(streamID);
-	if (native_fetch_stream_password(streamID) != streamPassword)
-	{
-		if (!readConfig.read_stream_password(streamID))
-		{
-			// clear what was being previously stored if possible
-			m_stream_password[streamID].clear();
-			updated |= SOURCE_PWD;
-		}
-		else
-		{
-			// if empty then set back to the master password
-			if(streamPassword.empty())
-			{
-				streamPassword = readConfig.password();
-			}
-
-			// if empty then set back to the master admin password
-			if(streamPassword.empty())
-			{
-				ELOG(LOGNAME "'password' cannot be set to empty. Not applying this change to stream config# " + tos(streamID));
-			}
-			else
-			{
-				native_assign_stream_password(streamID, streamPassword);
-				updated |= SOURCE_PWD;
-			}
-		}
-
-		#if defined(_DEBUG) || defined(DEBUG)
-		if (updated & SOURCE_PWD)
-		{
-			ELOG("SOURCE_PWD");
-		}
-		#endif
-	}
-
-	utf8 adminPassword = readConfig.stream_adminPassword(streamID);
-	if (native_fetch_stream_adminPassword(streamID) != adminPassword)
-	{
-		if (!readConfig.read_stream_adminPassword(streamID))
-		{
-			// clear what was being previously stored if possible
-			m_stream_adminPassword[streamID].clear();
-			updated |= ADMIN_PWD;
-		}
-		// if empty then set back to the master admin password
-		else if (adminPassword.empty())
-		{
-			ELOG(LOGNAME "'adminpassword' cannot be set to empty. Not applying this change to stream config# " + tos(streamID));
-		}
-		else
-		{
-			native_assign_stream_adminPassword(streamID, adminPassword);
-			updated |= ADMIN_PWD;
-		}
-
-		#if defined(_DEBUG) || defined(DEBUG)
-		if (updated & ADMIN_PWD)
-		{
-			ELOG("ADMIN_PWD");
-		}
-		#endif
-	}
-
-	utf8 movedUrl = readConfig.stream_movedUrl(streamID);
-	if (native_fetch_stream_movedUrl(streamID) != movedUrl)
-	{
-		native_assign_stream_movedUrl(streamID, movedUrl);
-		updated |= MOVED_URL;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("MOVED_URL");
-		#endif
-	}
-
-	utf8 artworkFile = readConfig.stream_artworkFile(streamID);
-	if (native_fetch_stream_artworkFile(streamID) != artworkFile)
-	{
-		if (!readConfig.read_stream_artworkFile(streamID))
-		{
-			artworkFile = gOptions.artworkFile();
-		}
-		native_assign_stream_artworkFile(streamID, artworkFile);
-		updated |= ARTWORK_FILE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("ARTWORK_FILE");
-		#endif
-	}
-
-	utf8 adTestFile = readConfig.stream_adTestFile(streamID);
-	if (native_fetch_stream_adTestFile(streamID) != adTestFile)
-	{
-		if (!readConfig.read_stream_adTestFile(streamID))
-		{
-			adTestFile = gOptions.adTestFile();
-		}
-		native_assign_stream_adTestFile(streamID, adTestFile);
-		updated |= AD_TEST_FILE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("AD_TEST_FILE");
-		#endif
-	}
-
-	utf8 adTestFile2 = readConfig.stream_adTestFile2(streamID);
-	if (native_fetch_stream_adTestFile2(streamID) != adTestFile2)
-	{
-		if (!readConfig.read_stream_adTestFile2(streamID))
-		{
-			adTestFile2 = gOptions.adTestFile2();
-		}
-		native_assign_stream_adTestFile2(streamID, adTestFile2);
-		updated |= AD_TEST_FILE_2;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("AD_TEST_FILE_2");
-		#endif
-	}
-
-	utf8 adTestFile3 = readConfig.stream_adTestFile3(streamID);
-	if (native_fetch_stream_adTestFile3(streamID) != adTestFile3)
-	{
-		if (!readConfig.read_stream_adTestFile3(streamID))
-		{
-			adTestFile3 = gOptions.adTestFile3();
-		}
-		native_assign_stream_adTestFile3(streamID, adTestFile3);
-		updated |= AD_TEST_FILE_3;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("AD_TEST_FILE_3");
-		#endif
-	}
-
-	utf8 adTestFile4 = readConfig.stream_adTestFile4(streamID);
-	if (native_fetch_stream_adTestFile4(streamID) != adTestFile4)
-	{
-		if (!readConfig.read_stream_adTestFile4(streamID))
-		{
-			adTestFile4 = gOptions.adTestFile4();
-		}
-		native_assign_stream_adTestFile4(streamID, adTestFile4);
-		updated |= AD_TEST_FILE_4;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("AD_TEST_FILE_4");
-		#endif
-	}
-
-	int adTestFileLoop = readConfig.stream_adTestFileLoop(streamID);
-	if (native_fetch_stream_adTestFileLoop(streamID) != adTestFileLoop)
-	{
-		if (!readConfig.read_stream_adTestFileLoop(streamID))
-		{
-			adTestFileLoop = gOptions.adTestFileLoop();
-		}
-		native_assign_stream_adTestFileLoop(streamID, adTestFileLoop);
-		updated |= AD_TEST_FILE_LOOP;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("AD_TEST_FILE_LOOP");
-		#endif
-	}
-
-	utf8 introFile = readConfig.stream_introFile(streamID);
-	if (native_fetch_stream_introFile(streamID) != introFile)
-	{
-		if (!readConfig.read_stream_introFile(streamID))
-		{
-			introFile = gOptions.introFile();
-		}
-		native_assign_stream_introFile(streamID, introFile);
-		updated |= INTRO_FILE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("INTRO_FILE");
-		#endif
-	}
-
-	utf8 backupFile = readConfig.stream_backupFile(streamID);
-	if (native_fetch_stream_backupFile(streamID) != backupFile)
-	{
-		if (!readConfig.read_stream_backupFile(streamID))
-		{
-			backupFile = gOptions.backupFile();
-		}
-		native_assign_stream_backupFile(streamID, backupFile);
-		updated |= BACKUP_FILE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("BACKUP_FILE");
-		#endif
-	}
-
-	utf8 backupTitle = readConfig.stream_backupTitle(streamID);
-	if (native_fetch_stream_backupTitle(streamID) != backupTitle)
-	{
-		if (!readConfig.read_stream_backupTitle(streamID))
-		{
-			backupTitle = gOptions.backupTitle();
-		}
-		native_assign_stream_backupTitle(streamID, backupTitle);
-		updated |= BACKUP_TITLE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("BACKUP_TITLE");
-		#endif
-	}
-
-	utf8 banFile = readConfig.stream_banFile(streamID);
-	if (native_fetch_stream_banFile(streamID) != banFile)
-	{
-		if (!readConfig.read_stream_banFile(streamID))
-		{
-			m_stream_banFile[streamID].clear();
-			gOptions.unread_stream_banFile(streamID);
-
-			// unload the IPs from the list
-			g_banList.remove("", 0, streamID, true);
-		}
-		else
-		{
-			// load the IPs from the list
-			size_t sID = (!banFile.empty() ? streamID : 0);
-			g_banList.load(banFile,sID);
-		}
-		native_assign_stream_banFile(streamID, banFile);
-		updated |= BAN_FILE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("BAN_FILE");
-		#endif
-	}
-
-	utf8 ripFile = readConfig.stream_ripFile(streamID);
-	if (native_fetch_stream_ripFile(streamID) != ripFile)
-	{
-		if (!readConfig.read_stream_ripFile(streamID))
-		{
-			m_stream_ripFile[streamID].clear();
-			gOptions.unread_stream_ripFile(streamID);
-
-			// unload the IPs from the list
-			g_ripList.remove("",streamID,true);
-		}
-		else
-		{
-			// load the IPs from the list
-			size_t sID = (!ripFile.empty() ? streamID : 0);
-			g_ripList.load(ripFile,sID);
-		}
-		native_assign_stream_ripFile(streamID, ripFile);
-		updated |= RIP_FILE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("RIP_FILE");
-		#endif
-	}
-
-	utf8 agentFile = readConfig.stream_agentFile(streamID);
-	if (native_fetch_stream_agentFile(streamID) != agentFile)
-	{
-		if (!readConfig.read_stream_agentFile(streamID))
-		{
-			m_stream_agentFile[streamID].clear();
-			gOptions.unread_stream_agentFile(streamID);
-
-			// unload the agents from the list
-			g_agentList.remove("", streamID, true);
-		}
-		else
-		{
-			// load the agents from the list
-			size_t sID = (!agentFile.empty() ? streamID : 0);
-			g_agentList.load(agentFile, sID);
-		}
-		native_assign_stream_agentFile(streamID, agentFile);
-		updated |= AGENT_FILE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("AGENT_FILE");
-		#endif
-	}
-
-	utf8 w3cLog = readConfig.stream_w3cLog(streamID);
-	if (native_fetch_stream_w3cLog(streamID) != w3cLog)
-	{
-		if (!readConfig.read_stream_w3cLog(streamID))
-		{
-			m_stream_w3cLog[streamID].clear();
-			gOptions.unread_stream_w3cLog(streamID);
-			w3cLog::close(streamID);
-		}
-		else
-		{
-			// could have just changed so update as needed
-			utf8 oldw3cLog = native_fetch_stream_w3cLog(streamID);
-			if (!oldw3cLog.empty())
-			{
-				w3cLog::close(streamID);
-			}
-			size_t sID = (!w3cLog.empty() ? streamID : 0);
-			if (gOptions.w3cEnable())
-			{
-				w3cLog::open(w3cLog, sID);
-			}
-		}
-		native_assign_stream_w3cLog(streamID, w3cLog);
-		updated |= W3C_FILE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("W3C_FILE");
-		#endif
-	}
-
-	utf8 hideStats = readConfig.stream_hideStats(streamID);
-	if (native_fetch_stream_hideStats(streamID) != hideStats)
-	{
-		if (!readConfig.read_stream_hideStats(streamID))
-		{
-			hideStats = gOptions.hideStats();
-		}
-		native_assign_stream_hideStats(streamID, hideStats);
-		updated |= HIDE_STATS;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("HIDE_STATS");
-		#endif
-	}
-
-	int cdnMaster = readConfig.cdn_master(streamID);
-	if (native_fetch_cdn_master(streamID) != cdnMaster)
-	{
-		if (!readConfig.read_cdn_master(streamID))
-		{
-			cdnMaster = -1;
-		}
-		native_assign_cdn_master(streamID, cdnMaster);
-		updated |= CDN_MASTER;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("CDN_MASTER");
-		#endif
-	}
-
-	int cdnSlave = readConfig.cdn_slave(streamID);
-	if (native_fetch_cdn_slave(streamID) != cdnSlave)
-	{
-		if (!readConfig.read_cdn_slave(streamID))
-		{
-			cdnSlave = -1;
-		}
-		native_assign_cdn_slave(streamID, cdnSlave);
-		updated |= CDN_SLAVE;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("CDN_SLAVE");
-		#endif
-	}
-
-	int backupLoop = readConfig.stream_backupLoop(streamID);
-	if (native_fetch_stream_backupLoop(streamID) != backupLoop)
-	{
-		if (!readConfig.read_stream_backupLoop(streamID))
-		{
-			backupLoop = gOptions.backupLoop();
-		}
-		native_assign_stream_backupLoop(streamID, backupLoop);
-		updated |= DUMP_USER;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("BACKUP_LOOP");
-		#endif
-	}
-
-	int rateLimitWait = readConfig.stream_rateLimitWait(streamID);
-	if (native_fetch_stream_rateLimitWait(streamID) != rateLimitWait)
-	{
-		if (!readConfig.read_stream_rateLimitWait(streamID))
-		{
-			rateLimitWait = gOptions.rateLimitWait();
-		}
-		native_assign_stream_rateLimitWait(streamID, rateLimitWait);
-		updated |= RATE_LIMIT_WAIT;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("RATE_LIMIT_WAIT");
-		#endif
-	}
-
-	int metainterval = readConfig.stream_metaInterval(streamID);
-	if (native_fetch_stream_metaInterval(streamID) != metainterval)
-	{
-		if (!readConfig.read_stream_metaInterval(streamID))
-		{
-			metainterval = gOptions.metaInterval();
-		}
-		native_assign_stream_metaInterval(streamID, metainterval);
-		updated |= METAINTERVAL;
-		#if defined(_DEBUG) || defined(DEBUG)
-		ELOG("METAINTERVAL");
-		#endif
-	}
-
-	if (updated)
-	{
-		ILOG(LOGNAME "Updates applied to stream config# " + tos(streamID) + " [code: 0x" + tohex(updated) + "]");
-	}
-	else
-	{
-		ILOG(LOGNAME "No updates required for stream config# " + tos(streamID));
-	}
-	return updated;
-}
-
-void config::addStreamConfig(config &readConfig, streamConfig add) throw(exception)
-{
-	if (!add.m_streamID)
-	{
-		return;
-	}
-
-	stackLock sml(m_lock);
-	size_t streamID = add.m_streamID;
-
-	native_assign_stream_ID(streamID, streamID);
-	native_assign_stream_adminPassword(streamID, add.m_adminPassword);
-	native_assign_stream_allowPublicRelay(streamID, add.m_allowPublicRelay);
-	native_assign_stream_allowRelay(streamID, add.m_allowRelay);
-	native_assign_stream_authHash(streamID, add.m_authHash);
-	native_assign_stream_password(streamID, add.m_password);
-	native_assign_stream_publicServer(streamID, add.m_publicServer);
-	native_assign_stream_maxBitrate(streamID, add.m_maxStreamBitrate);
-	native_assign_stream_minBitrate(streamID, add.m_minStreamBitrate);
-	native_assign_stream_maxUser(streamID, add.m_maxStreamUser);
-	native_assign_stream_relayURL(streamID, add.m_relayUrl.url());
-	native_assign_stream_backupURL(streamID, add.m_backupUrl.url());
-	native_assign_stream_path(streamID, add.m_urlPath);
-
-	if (gOptions.w3cEnable())
-	{
-		utf8 w3cLog = readConfig.stream_w3cLog(streamID);
-		if (readConfig.read_stream_w3cLog(streamID))
-		{
-			if (gOptions.w3cEnable())
-			{
-				w3cLog::open(w3cLog, streamID);
-			}
-		}
-	}
-
-	if (gOptions.saveBanListOnExit())
-	{
-		if (readConfig.read_stream_banFile(streamID) && !gOptions.stream_banFile(streamID).empty())
-		{
-			g_banList.save(gOptions.stream_banFile(streamID),streamID);
-		}
-	}
-
-	if (gOptions.saveRipListOnExit())
-	{
-		if (readConfig.read_stream_ripFile(streamID) && !gOptions.stream_ripFile(streamID).empty())
-		{
-			g_ripList.save(gOptions.stream_ripFile(streamID),streamID);
-		}
-	}
-
-	if (gOptions.saveAgentListOnExit())
-	{
-		if (readConfig.read_stream_agentFile(streamID) && !gOptions.stream_agentFile(streamID).empty())
-		{
-			g_agentList.save(gOptions.stream_agentFile(streamID),streamID);
-		}
-	}
-
-	ILOG(LOGNAME "Added stream config# " + tos(streamID));
-}
-
-void config::removeStreamConfig(streamConfig remove) throw(exception)
-{
-	if (!remove.m_streamID)
-	{
-		return;
-	}
-
-	stackLock sml(m_lock);
-	size_t streamID = remove.m_streamID;
-
-	// clean up the per-stream files
-	if (gOptions.w3cEnable())
-	{
-		w3cLog::close(streamID);
-	}
-
-	if (gOptions.saveBanListOnExit())
-	{
-		if (gOptions.read_stream_banFile(streamID) && !gOptions.stream_banFile(streamID).empty())
-		{
-			g_banList.save(gOptions.stream_banFile(streamID),streamID);
-		}
-	}
-
-	if (gOptions.saveRipListOnExit())
-	{
-		if (gOptions.read_stream_ripFile(streamID) && !gOptions.stream_ripFile(streamID).empty())
-		{
-			g_ripList.save(gOptions.stream_ripFile(streamID),streamID);
-		}
-	}
-
-	if (gOptions.saveAgentListOnExit())
-	{
-		if (gOptions.read_stream_agentFile(streamID) && !gOptions.stream_agentFile(streamID).empty())
-		{
-			g_agentList.save(gOptions.stream_agentFile(streamID),streamID);
-		}
-	}
-
-	// now clear out where possible the per-stream values
-	gOptions.unread_stream_ID(streamID);
-	gOptions.unread_stream_adminPassword(streamID);
-	gOptions.unread_stream_agentFile(streamID);
-	gOptions.unread_stream_allowPublicRelay(streamID);
-	gOptions.unread_stream_allowRelay(streamID);
-	gOptions.unread_stream_authHash(streamID);
-	gOptions.unread_stream_autoDumpTime(streamID);
-	gOptions.unread_stream_autoDumpUsers(streamID);
-	gOptions.unread_stream_backupFile(streamID);
-	gOptions.unread_stream_backupTitle(streamID);
-	gOptions.unread_stream_backupLoop(streamID);
-	gOptions.unread_stream_banFile(streamID);
-	gOptions.unread_stream_introFile(streamID);
-	gOptions.unread_stream_listenerTime(streamID);
-	gOptions.unread_stream_maxBitrate(streamID);
-	gOptions.unread_stream_minBitrate(streamID);
-	gOptions.unread_stream_maxUser(streamID);
-	gOptions.unread_stream_password(streamID);
-	gOptions.unread_stream_path(streamID);
-	gOptions.unread_stream_publicServer(streamID);
-	gOptions.unread_stream_relayURL(streamID);
-	gOptions.unread_stream_backupURL(streamID);
-	gOptions.unread_stream_ripFile(streamID);
-	gOptions.unread_stream_ripOnly(streamID);
-	gOptions.unread_stream_agentFile(streamID);
-	gOptions.unread_stream_songHistory(streamID);
-	gOptions.unread_stream_uvoxCipherKey(streamID);
-	gOptions.unread_stream_w3cLog(streamID);
-
-	gOptions.unread_cdn_master(streamID);
-	gOptions.unread_cdn_slave(streamID);
-
-	map<size_t, size_t>::iterator i = m_stream_ID.find(streamID);
-	if (i != m_stream_ID.end())
-	{
-		m_stream_ID.erase(i);
-	}
-
-	ILOG(LOGNAME "Removed stream config# " + tos(streamID));
-}
-
-config::~config() throw()
-{
-}
-
-static void write_option(const utf8 &name, const utf8 &value, FILE *f,
-						 const uniFile::filenameType &fn, bool &written) throw(exception)
-{
-	const char *delimiter = "=";
-	const size_t delimiter_size = 1;
-	size_t name_size = name.size();
-	size_t value_size = value.size();
-	size_t eol_size = eol().size();
-
-	if (written && (::fwrite(eol().c_str(), 1, eol_size, f) != eol_size))
-	{
-		throw runtime_error("I/O error writing to file " + fn.hideAsString());
-	}
-	if (::fwrite(name.c_str(), 1, name_size, f) != name_size)
-	{
-		throw runtime_error("I/O error writing to file " + fn.hideAsString());
-	}
-	if (::fwrite(delimiter, 1, delimiter_size, f) != delimiter_size)
-	{
-		throw runtime_error("I/O error writing to file " + fn.hideAsString());
-	}
-	if (::fwrite(value.c_str(), 1, value_size, f) != value_size)
-	{
-		throw runtime_error("I/O error writing to file " + fn.hideAsString());
-	}
-	written = true;
-}
-
-std::string config::logSectionName()
-{
-	return LOGNAME;
-}
-
-bool config::rewriteConfigurationFile(bool minimal, bool messages, bool setup) const throw(exception)
-{
-	if (!cdn().empty())
-	{
-		WLOG(LOGNAME "CDN mode prevents re-writing of the configuration file");
-		return false;
-	}
-
-	if (messages)
-	{
-		ILOG(LOGNAME "Rewriting config file");
-	}
-
-	stackLock sml(m_lock);
-
-	// add any config options to be ignored when re-writing
-	set<utf8> ignore_set;
-	ignore_set.insert("streamid");
-	ignore_set.insert("include");
-	ignore_set.insert("dstip");
-	ignore_set.insert("yport");
-	ignore_set.insert("showlastsongs");
-	ignore_set.insert("streambitrate");
-	ignore_set.insert("relayserver");
-	ignore_set.insert("relayport");
-	ignore_set.insert("reallogfile");
-	ignore_set.insert("clacks");
-	if (flashPolicyServerPort() == -1)
-	{
-		ignore_set.insert("flashpolicyserverport");
-	}
-	if (portLegacy() == -1)
-	{
-		ignore_set.insert("portlegacy");
-	}
-	if (publicPort() == -1)
-	{
-		ignore_set.insert("publicport");
-	}
-
-	bool saved = true;
-	FILE *f = 0;
-	try
-	{
-		uniFile::filenameType fn = _confFile();
-		// create a backup of the current config file and then use that
-		if (fileUtil::fileExists(fn))
-		{
-			uniFile::filenameType fn_backup(_confFile() + ".backup");
-			uniFile::unlink(fn_backup);
-			#ifdef _WIN32
-			if (!::MoveFileW(fn.toWString().c_str(), fn_backup.toWString().c_str()))
-			{
-				throw runtime_error("Cannot create backup of the current config file `" +
-									fn.hideAsString() + "' (" + errMessage().hideAsString() + ")");
-			}
-			#else
-			if (::rename(fn.hideAsString().c_str(), fn_backup.hideAsString().c_str()) < 0)
-			{
-				throw runtime_error("Cannot create backup of the current config file `" +
-									fn.hideAsString() + "' (" + errMessage().hideAsString() + ")");
-			}
-			#endif
-		}
-
-		f = uniFile::fopen(fn,"wb");
-		if (!f)
-		{
-			throw runtime_error("Cannot open config file `" + fn.hideAsString() +
-								"' for writing (" + errMessage().hideAsString() + ")");
-		}
-
-		map<utf8, utf8> deferredOptions = m_deferredOptions;
-		bool written = false;
-		for (optMap_t::const_iterator i = m_optMap.begin(); i != m_optMap.end(); ++i)
-		{
-			const utf8 &optName = (*i).first;
-			const accessor_t &a = (*i).second;
-
-			if (ignore_set.find(optName) != ignore_set.end())
-			{
-				continue;
-			}
-
-			map<utf8,utf8>::iterator deferred_i = deferredOptions.find(optName);
-			if (deferred_i != deferredOptions.end())
-			{
-				if (!minimal || (!((*deferred_i).second == (this->*a.m_defaultFunc)())))
-				{
-					write_option(optName,(*deferred_i).second, f, fn, written);
-				}
-				deferredOptions.erase(deferred_i);
-			}
-			else
-			{
-				if ((this->*a.m_multiFunc)())
-				{
-					const size_t num = (this->*a.m_countFunc)();
-					for (size_t x = 0; x < num; ++x)
-					{
-						size_t index = 0;
-						if (!minimal || (!((this->*a.m_fetchFunc)(x, &index) == (this->*a.m_defaultFunc)())))
-						{
-							write_option(optName + "_" + tos(index), (this->*a.m_fetchFunc)(index, 0), f, fn, written);
-						}
-					}
-				}
-				else
-				{
-					if (!minimal || (!((this->*a.m_fetchFunc)(1, 0) == (this->*a.m_defaultFunc)())))
-					{
-						write_option(optName,(this->*a.m_fetchFunc)(1, 0), f, fn, written);
-					}
-				}
-			}
-		}
-
-		// remaining deferred options
-		for (map<utf8,utf8>::const_iterator i = deferredOptions.begin(); i != deferredOptions.end(); ++i)
-		{
-			if (ignore_set.find((*i).first) != ignore_set.end())
-			{
-				continue;
-			}
-
-			optMap_t::const_iterator m = m_optMap.find((*i).first);
-			const accessor_t &a = (*m).second;
-
-			if (!minimal || (!((*i).second == (this->*a.m_defaultFunc)())))
-			{
-				write_option((*i).first, (*i).second, f, fn, written);
-			}
-		}
-		deferredOptions.clear();
-
-		::fclose(f);
-	}
-	catch(const exception &ex)
-	{
-		saved = false;
-		ELOG(utf8(setup ? "[SETUP] " : LOGNAME) + ex.what());
-		if (f)
-		{
-			::fclose(f);
-		}
-	}
-	return saved;
-}
-
-utf8 config::dumpConfigFile() throw()
-{
-	utf8 streams, general, debug;
-
-	stackLock sml(m_lock);
-
-	// add any config options to be ignored when re-writing
-	set<utf8> ignore_set;
-	ignore_set.insert("streamid");
-	ignore_set.insert("include");
-	ignore_set.insert("dstip");
-	ignore_set.insert("yport");
-	ignore_set.insert("showlastsongs");
-	ignore_set.insert("streambitrate");
-	ignore_set.insert("relayserver");
-	ignore_set.insert("relayport");
-	ignore_set.insert("reallogfile");
-	if (flashPolicyServerPort() == -1)
-	{
-		ignore_set.insert("flashpolicyserverport");
-	}
-	if (portLegacy() == -1)
-	{
-		ignore_set.insert("portlegacy");
-	}
-	if (publicPort() == -1)
-	{
-		ignore_set.insert("publicport");
-	}
-
-	for (optMap_t::const_iterator i = m_optMap.begin(); i != m_optMap.end(); ++i)
-	{
-		const utf8 &optName = (*i).first;
-		const accessor_t &a = (*i).second;
-
-		if (ignore_set.find(optName) != ignore_set.end())
-		{
-			continue;
-		}
-
-		if ((this->*a.m_multiFunc)())
-		{
-			size_t num = (this->*a.m_countFunc)();
-			for (size_t x = 0; x < num; ++x)
-			{
-				size_t index = 0;
-				if (!((this->*a.m_fetchFunc)(x, &index) == (this->*a.m_defaultFunc)()))
-				{
-					if (optName.find((utf8)"stream") == 0)
-					{
-						streams += optName + "_" + tos(index) + "=<b>" + (this->*a.m_fetchFunc)(index, 0) + "</b><br>";
-					}
-					else if (optName.find((utf8)"debug") != utf8::npos)
-					{
-						debug += optName + "_" + tos(index) + "=<b>" + (this->*a.m_fetchFunc)(index, 0) + "</b><br>";
-					}
-					else
-					{
-						general += optName + "_" + tos(index) + "=<b>" + (this->*a.m_fetchFunc)(index, 0) + "</b><br>";
-					}
-				}
-			}
-		}
-		else
-		{
-			if (!((this->*a.m_fetchFunc)(1, 0) == (this->*a.m_defaultFunc)()))
-			{
-				if (optName.find((utf8)"debug") != utf8::npos)
-				{
-					debug += optName + "=<b>" + (this->*a.m_fetchFunc)(1, 0) + "</b><br>";
-				}
-				else
-				{
-					general += optName + "=<b>" + (this->*a.m_fetchFunc)(1, 0) + "</b><br>";
-				}
-			}
-		}
-	}
-
-	return "<div style=\"float:left;padding:0 1em;\">" +
-		   (!streams.empty() ? "<br><b><u>Stream Settings</u>:</b><br><br>" : (utf8)"") +
-		   streams + "<br></div><div style=\"float:left;padding:0 1em;\">" +
-		   (!general.empty() ? "<br><b><u>General Settings</u>:</b><br><br>" : "") +
-		   general + "<br></div><div style=\"float:left;padding:0 1em;\">" +
-		   (!debug.empty() ? "<br><b><u>Debugging Settings</u>:</b><br><br>" : "") +
-		   debug + "<br></div>";
-}
-
-int config::promptConfigFile() throw()
-{
-	if (!sDaemon)
-	{
-		#ifdef _WIN32
-		vector<wstring> fileList = fileUtil::directoryFileList(gStartupDirectory.toWString() + L"*.ini", L"", true, true);
-		vector<wstring> fileListConf = fileUtil::directoryFileList(gStartupDirectory.toWString() + L"*.conf", L"", true, true);
-		#else
-		vector<string> fileList = fileUtil::directoryFileList(gStartupDirectory.hideAsString() + "*.ini", "");
-		vector<string> fileListConf = fileUtil::directoryFileList(gStartupDirectory.hideAsString() + "*.conf", "");
-		#endif
-
-		if (!fileList.empty())
-		{
-			#ifdef _WIN32
-			// exclude desktop.ini on windows builds as that can cause other issues
-			for (vector<wstring>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-			{
-				if ((*i) == L".\\desktop.ini")
-				{
-					fileList.erase(i);
-					break;
-				}
-			}
-			#endif
-			fileList.insert(fileList.end(), fileListConf.begin(), fileListConf.end());
-		}
-		else
-		{
-			fileList = fileListConf;
-		}
-
-		if (!fileList.empty())
-		{
-			ILOG(LOGNAME "Choose one of the listed config file(s) to load or");
-			ILOG(LOGNAME "enter `s' to enable the setup mode for the DNAS or");
-#if CONFIG_BUILDER
-			ILOG(LOGNAME "enter `b' to enable the builder mode for the DNAS or");
-#endif
-			ILOG(LOGNAME "enter `x' to close this instance of the DNAS:");
-			ILOG(LOGNAME "Note: Press `Enter' after choosing the config file.");
-			if (fileList.size() > 10)
-			{
-				ILOG(LOGNAME "      Only the first 10 config files detected will be shown.");
-			}
-
-			int option = 0;
-			if (fileList.size() > 10)
-			{
-				fileList.resize(10);
-			}
-			#ifdef _WIN32
-			for (vector<wstring>::const_iterator i = fileList.begin(); i != fileList.end(); ++i, option++)
-			#else
-			for (vector<string>::const_iterator i = fileList.begin(); i != fileList.end(); ++i, option++)
-			#endif
-			{
-				#ifdef _WIN32
-				utf32 u32file(*i);
-				utf8 u8f(u32file.toUtf8().substr(1 + u32file.rfind(utf32("\\"))));
-				ILOG(LOGNAME " [" + tos(option) + "]  :  " + u8f + (fileUtil::getSuffix(*i) == L"ini" ? " [1.x config file]" : ""));
-				#else
-				ILOG(LOGNAME " [" + tos(option) + "]  :  " + (*i).substr(1 + (*i).rfind("/")) + (fileUtil::getSuffix(*i) == "ini" ? " [1.x config file]" : ""));
-				#endif
-			}
-
-			string input;
-			cin >> input;
-
-			while ((!input.empty() && (input[0] != 'x') && (input[0] != 's') && (!isdigit(input[0]) || !((size_t)(input[0] - '0') < fileList.size()))))
-			{
-				ELOG(LOGNAME "You have entered an invalid option. Please enter a number matching the config file required.");
-				input.clear();
-				cin >> input;
-			}
-
-			if (input[0] == 'x')
-			{
-				return -2;
-			}
-
-			if (input[0] == 's')
-			{
-				ILOG(LOGNAME "Entering setup mode. Open 127.0.0.1:8000/setup in a");
-				ILOG(LOGNAME "browser on the same machine the DNAS is started on.");
-				return 2;
-			}
-#ifdef CONFIG_BUILDER
-			if (input[0] == 'b')
-			{
-				ILOG(LOGNAME "Entering builder mode. Open 127.0.0.1:8000/builder in");
-				ILOG(LOGNAME "a browser on the same machine the DNAS is started on.");
-				return 2;
-			}
-#endif
-			if (!input.empty() && isdigit(input[0]))
-			{
-				size_t index = input[0] - '0';
-				// clamped to 0 - 9 (fileList can be larger but input is only 0-9)
-				if (index < fileList.size())
-				{
-					#ifdef _WIN32
-					utf32 u32file(fileList[index]);
-					utf8 u8f(u32file.toUtf8().substr(2));
-					return load(u8f);
-					#else
-					return load(fileList[index]);
-					#endif
-				}
-			}
-		}
-		else
-		{
-			return -1;
-		}
-	}
-	#ifndef _WIN32
-	else
-	{
-		// if running as a daemon then make checks just for the default
-		// if we've not had a configuration file specified to be used.
-		vector<string> fileList = fileUtil::directoryFileList(gStartupDirectory.hideAsString() + "sc_serv.ini", "");
-		vector<string> fileListConf = fileUtil::directoryFileList(gStartupDirectory.hideAsString() + "sc_serv.conf", "");
-
-		if (!fileList.empty())
-		{
-			fileList.insert(fileList.end(), fileListConf.begin(), fileListConf.end());
-		}
-		else
-		{
-			fileList = fileListConf;
-		}
-
-		if (!fileList.empty())
-		{
-			load(fileList[0]);
-		}
-	}
-	#endif
-	return 0;
-}
-
-bool config::load(const uniFile::filenameType &filename, bool load) throw()
-{
-	stackLock sml(m_lock);
-
-	// set the option that returns the name of the config file
-	m_confFile[DEFAULT_CLIENT_STREAM_ID] = filename;
-
-	// only need to set the filename when creating a new file
-	if (!load)
-	{
-		return true;
-	}
-
-	// check for 'setup' and abort config file loading
-#ifdef CONFIG_BUILDER
-	if ((filename == "builder") || (filename == "setup"))
-#else
-	if (filename == "setup")
-#endif
-	{
-		return false;
-	}
-
-	// setup the legacy relay config options to cope with reloads, etc
-	m_legacyRelayServer.clear();
-	m_legacyRelayPort = ":80";
-
-	bool result = _load(filename, (utf8)"", true);
-
-	// if the server hasn't been read then skip over this as it's
-	// likely there wasn't any legacy relay config options read
-	if (!m_legacyRelayServer.empty() && !(m_legacyRelayServer == "http://"))
-	{
-		// make sure that the old relay url is added by force setting streamid=1
-		optMap_t::const_iterator i = m_optMap.find("streamid");
-		(this->*((*i).second.m_assignFunc))(tos(DEFAULT_CLIENT_STREAM_ID), DEFAULT_CLIENT_STREAM_ID);
-
-		utf8 legacyRelay = m_legacyRelayServer + m_legacyRelayPort;
-		i = m_optMap.find("streamrelayurl");
-		(this->*((*i).second.m_assignFunc))(legacyRelay, DEFAULT_CLIENT_STREAM_ID);
-	}
-
-	// use this to map the v2.0.0 value to that from 2.0.1+
-	if (hideStats() == "1")
-	{
-		optMap_t::const_iterator i = m_optMap.find("hidestats");
-		(this->*((*i).second.m_assignFunc))("stats", 0);
-	}
-
-	// detect a failed attempt to load a config file and ensure we follow defaults on fail
-	if (m_log.empty())
-	{
-		m_log[DEFAULT_CLIENT_STREAM_ID] = true;
-	}
-	if (result == true)
-	{
-		if (m_logFile.empty())
-		{
-			m_log[DEFAULT_CLIENT_STREAM_ID] = true;
-		}
-		else if (m_logFile[DEFAULT_CLIENT_STREAM_ID].size() < 1)
-		{
-			m_log[DEFAULT_CLIENT_STREAM_ID] = false;
-		}
-		else if (compareStringsWithoutCase(m_logFile[0], uniFile::filenameType("none")))
-		{
-			m_log[DEFAULT_CLIENT_STREAM_ID] = false;
-		}
-		else if (compareStringsWithoutCase(m_logFile[0], uniFile::filenameType("/dev/null")))
-		{
-			m_log[DEFAULT_CLIENT_STREAM_ID] = false;
-		}
-	}
-	return result;
-}
-
-// load options from a config file. Generally only done at startup.
-// Config file should be in utf8 format
-const bool config::_load(const uniFile::filenameType &filename, const utf8& uniqueStr, const bool parent = false) throw()
-{
-	const utf8 unique_matching_token("$");
-	utf8 unique(unique_matching_token);
-	if (uniqueStr.empty())
-	{
-		unique = unique_matching_token;
-	}
-	else
-	{
-		unique = uniqueStr;
-	}
-
-	int l = 0;	// line counter
-	bool loaded = true;
-
-	// open it. Use the deferred messages since this happens at startup
-	FILE *conf = uniFile::fopen(filename, "rb");
-	if (!conf)
-	{
-		loaded = false;
-		m_deferredWarnLogMessages.push_back(LOGNAME "Could not find `" + fileUtil::getFullFilePath(filename) +
-											(parent == true ? "' - looking for config file to load..." : "'"));
-		goto no_read_conf;
-	}
-
-	// parse each line of the file
-	while (true)
-	{
-		int subIndex = DEFAULT_CLIENT_STREAM_ID; // for items of form xxxxxx_#  (multi-options)
-		char buffer[4096] = {0};
-
-		if (!fgets(buffer, sizeof(buffer), conf))
-		{
-			break; // get a line
-		}
-
-		size_t offset = strlen(buffer) - 1;
-		while (buffer[offset] == '\n' || buffer[offset] == '\r')
-		{
-			buffer[offset]='\0'; // get rid of cr/lf
-		}
-		++l; // increment line counter
-
-		char *pbuffer = buffer;
-		while (pbuffer && (*pbuffer == ' ' || *pbuffer == '\t'))
-		{
-			++pbuffer; // remove trailing whitespace
-		}
-
-		if (!pbuffer || !*pbuffer || (*pbuffer == ';') || (*pbuffer == '[') || (*pbuffer == '#'))
-		{
-			continue; // blank lines or comments skipped
-		}
-
-		char *tok = pbuffer;
-		while (pbuffer && *pbuffer && (*pbuffer != '=') && (*pbuffer != '\r'))
-		{
-			++pbuffer; // look for = sign
-		}
-		if (!pbuffer || !*pbuffer)
-		{ 
-			m_deferredWarnLogMessages.push_back(LOGNAME "Invalid statement on line " + tos(l) + " of " + filename + " -> `" + utf8(buffer) + "'");
-			continue;
-		}
-		*pbuffer++=0;
-
-		// skip utf-8 BOM
-		if ((strlen(tok) > 2) &&
-			(((unsigned char*)tok)[0] == 0xef) &&
-			(((unsigned char*)tok)[1] == 0xbb) &&
-			(((unsigned char*)tok)[2] == 0xbf))
-		{
-			tok += 3;
-		}
-
-		utf8 stok = tok;
-		// see if it's a multi option and set the subIndex value
-		const vector<utf8> tokens = tokenizer(stok, '_');
-		if (tokens.size() == 2)
-		{
-			stok = tokens[0];
-			subIndex = atoi((const char *)stripWhitespace(tokens[1]).c_str());
-
-			// this ensure the subIndex has been specified even if there is no streamid
-			// this is to fix a load of config setup issues from people not setting it.
-			optMap_t::const_iterator sid = m_optMap.find("streamid");
-			(this->*((*sid).second.m_assignFunc))(tos(subIndex), subIndex);
-		}
-		stok = stripWhitespace(stok); // cleanup some more whitespace just in case
-
-		// look for the base option name in the option map
-		utf8 base_option_name = toLower(stok);
-		if (base_option_name.empty())
-		{
-			// skip over empty values
-			continue;
-		}
-
-		// used for mapping *autodumpsourcetime to *autodumptime
-		int autoDumpTime = 0;
-		if (base_option_name == "autodumpsourcetime")
-		{
-			base_option_name = "autodumptime";
-			autoDumpTime = 1;
-		}
-		else if (base_option_name == "streamautodumpsourcetime")
-		{
-			base_option_name = "streamautodumptime";
-			autoDumpTime = 2;
-		}
-		else if (base_option_name == "reallogfile" ||
-				 base_option_name == "autoauthhash")
-		{
-			// skip over as not pubiically exposed
-			continue;
-		}
-
-		optMap_t::const_iterator i = m_optMap.find(base_option_name);
-		bool legacyRelay = false;
-		bool stream_bitrate = (base_option_name == "streambitrate");
-		if (i == m_optMap.end())
-		{
-			if (!((base_option_name == "relayserver") || (base_option_name == "relayport") || stream_bitrate))
-			{
-				m_deferredWarnLogMessages.push_back(LOGNAME "Invalid item on line " + tos(l) + " of " + filename + " -> `" + base_option_name + "'");
-				continue;
-			}
-			else
-			{
-				if (!stream_bitrate)
-				{
-					legacyRelay = true;
-				}
-			}
-		}
-		else
-		{
-			// do we have a stream* entry and no stream id mentioned / working against default
-			// if yes then force streamid=1 to be set so that the options will be recognised
-			uniString::utf8::size_type spos = base_option_name.find(utf8("stream"));
-			if ((spos != uniString::utf8::npos) && (spos == 0) && (subIndex == DEFAULT_CLIENT_STREAM_ID))
-			{
-				// this ensure the subIndex has been specified even if there is no streamid
-				// this is to fix a load of config setup issues from people not setting it.
-				const optMap_t::const_iterator sid = m_optMap.find("streamid");
-				(this->*((*sid).second.m_assignFunc))(tos(subIndex), subIndex);
-			}
-		}
-
-		// move tok to the value
-		tok = pbuffer;
-		while (tok && *tok && *tok == ' ')
-		{
-			++tok;
-		}
-
-		utf8 value = stripWhitespace(utf8(tok));
-
-		// if we're re-mapping *autodumpsourcetime then indicate in the log output
-		if (autoDumpTime > 0)
-		{
-			m_deferredWarnLogMessages.push_back(LOGNAME "Deprecated statement found on line " + tos(l) + " of " +
-												filename + " -> change " + (autoDumpTime == 2 ? "stream" : "") +
-												"autodumpsourcetime_" + tos(subIndex) + "=" + value + " to " +
-												(autoDumpTime == 2 ? "stream" : "") + "autodumptime_" +
-												tos(subIndex) + "=" + value);
-		}
-
-		// this is used in the mapping of the old ocnfig options to the new style streamrelayurl
-		if (legacyRelay == true)
-		{
-			if (base_option_name == "relayserver")
-			{
-				utf8::size_type check = (!value.empty() ? value.find(utf8("http://")) : 0);
-				if (check == utf8::npos)
-				{
-					m_legacyRelayServer = "http://" + value;
-				}
-				else
-				{
-					m_legacyRelayServer = value;
-				}
-			}
-			if (base_option_name == "relayport")
-			{
-				utf8::size_type check = value.find(utf8(":"));
-				if ((check == utf8::npos) || (check != 0))
-				{
-					m_legacyRelayPort = ":" + value;
-				}
-				else
-				{
-					m_legacyRelayPort = value;
-				}
-			}
-
-			continue;
-		}
-
-		// check for yes / no values and map them to 1 or 0 to cope with legacy config loading
-		if ((base_option_name == "w3cenable") ||
-			(base_option_name == "allowrelay") ||
-			(base_option_name == "allowpublicrelay") ||
-			(base_option_name == "riponly"))
-		{
-			if (toLower(value) == "yes")
-			{
-				value = "1";
-			}
-			if (toLower(value) == "no")
-			{
-				value = "0";
-			}
-		}
-
-		// validation checks on the 'cdn' parameter to ensure we're all good else where
-		if (base_option_name == "cdn")
-		{
-			value = toLower(value);
-			if (!(value == "on") && !(value == "always") && !(value == "master"))
-			{
-				value = "";
-			}
-		}
-
-		if (stream_bitrate)
-		{
-			const optMap_t::const_iterator min = m_optMap.find("streamminbitrate");
-			(this->*((*min).second.m_assignFunc))(value, subIndex);
-			const optMap_t::const_iterator max = m_optMap.find("streammaxbitrate");
-			(this->*((*max).second.m_assignFunc))(value, subIndex);
-			continue;
-		}
-
-		// validation checks on the port parameters to detect the 'any'
-		// case which is meant to be treated the same as an empty value
-		if ((base_option_name == "srcdns") ||
-			(base_option_name == "srcip") ||
-			(base_option_name == "destdns") ||
-			(base_option_name == "destip") ||
-			(base_option_name == "dstip") ||
-			(base_option_name == "publicdns") ||
-			(base_option_name == "publicip"))
-		{
-			if (toLower(value) == "any")
-			{
-				value = "";
-			}
-		}
-
-		// check for streampath values and fix to have / on the start to ensure it will
-		// work for client connections without impacting on client connection time, etc
-		if (base_option_name == "streampath")
-		{
-			utf8::size_type path = value.find(utf8(":"));
-			if (path != utf8::npos)
-			{
-				m_deferredWarnLogMessages.push_back(LOGNAME "Ignoring streampath_" + tos(subIndex) + "=" + value + " as this will produce an invalid path.");
-				value.clear();
-				continue;
-			}
-
-			path = value.find(utf8("var/www"));
-			// catches var/www... or /var/www... style paths
-			// which are best just filtered as it gives away
-			// paths on the host machine which looks crappy!
-			if ((path != utf8::npos) && (path < 2))
-			{
-				m_deferredWarnLogMessages.push_back(LOGNAME "Ignoring streampath_" + tos(subIndex) + "=" + value + " as this will produce an invalid path.");
-				value.clear();
-				continue;
-			}			
-
-			// check for empty as we can incorrectly end up
-			// setting streampath_xx=/ which causes issues!
-			if (!value.empty())
-			{
-				path = value.find(utf8("/"));
-				if ((path == utf8::npos) || (path != 0))
-				{
-					value = "/" + value;
-				}
-			}
-
-			// additionally we check for specific 'default' paths and block their usage
-			// based on a match against the start of the streampath (might block some
-			// possibly valid streampaths but it'll avoid stupid configuration issues).
-			const char * disallowed[] = { "/listen.pls", "/listen.m3u", "/listen.asx", "/listen.xspf",
-										  "/listen.qtl", "/listen", "/7.html", "/index.html",
-										  "/played", "/played.html", "/admin.cgi", "/statistics",
-										  "/stats", "/streamart", "/playingart", "/nextsong", "/home",
-										  "/home.html", "/nextsongs", "/currentsong", "/shoutcast.swf",
-										  "/crossdomain.xml", "/index.css", "/images/", "/favicon.ico",
-										  "/robots.txt", "/images/favicon.ico", "/images/listen.png",
-										  "/images/history.png", "/images/lock.png", "/images/noadavail.png",
-										  "/images/streamart.png", "/images/adavail.png", "/images/v2.png",
-										  "/images/playingart.png", "/adplayed/adplayed.png", "/images/v1.png",
-										  "/images/relay.png", "/images/wa.png", "/images/chrome.png",
-										  "/images/firefox.png", "/images/safari.png", "/images/ie.png",
-										  "/images/vlc.png", "/images/fb2k.png", "/images/wmp.png",
-										  "/images/icecast.png", "/images/html5.png", "/images/rtb.png",
-										  "/images/ps.png", "/images/mplayer.png", "/images/apple.png",
-										  "/images/roku.png", "/images/itunes.png", "/images/warn.png",
-										  "/images/xff.png", "/images/radionomy.png", "/images/curl.png",
-										  "/images/flash.png", "/images/synology.png", "/images/wiimc.png"
-			};
-			for (size_t x = 0; x < sizeof(disallowed) / sizeof(disallowed[0]); x++)
-			{
-				path = value.find(utf8(disallowed[x]));
-				if ((path != utf8::npos) && !path)
-				{
-					m_deferredWarnLogMessages.push_back(LOGNAME "Ignoring streampath_" + tos(subIndex) + "=" + value + " as this contains a reserved path.");
-					value.clear();
-					continue;
-				}
-			}
-		}
-
-		// check for redirecturl and streamredirecturl and ensure there is a http://
-		// otherwise we need to process multiple times on page hits which isn't good
-		if ((base_option_name == "redirecturl" || base_option_name == "streamredirecturl") && !value.empty())
-		{
-			utf8::size_type url = (!value.empty() ? value.find(utf8("http://")) : 0);
-			if (url == utf8::npos)
-			{
-				value = "http://" + value;
-			}
-		}
-
-		// check the passwords for validity e.g. they're not allowed to contain a colon
-		// as that can break the multiple-1.x source support as well as 2.x source join
-		if (base_option_name == "password" || base_option_name == "streampassword" ||
-			base_option_name == "adminpassword" || base_option_name == "streamadminpassword")
-		{
-			if (value.find(utf8(":")) != utf8::npos)
-			{
-				m_deferredErrorLogMessages.push_back(LOGNAME "`" + base_option_name +
-													 (subIndex > 1 ? "_" + tos(subIndex) : "") +
-													 "' contains a reserved character and will be ignored. "
-													 "Please remove all colons to resolve this issue.");
-				value.clear();
-				continue;
-			}
-		}
-
-		// special case to mimic old sc_serv conf file behaviour. In old sc_serv, the conf variable "unique" can
-		// be subsituted for $ in any value related to a filename
-		if (base_option_name == "unique")
-		{
-			unique = value;
-		}
-
-		if ((base_option_name == "logfile") ||
-			(base_option_name == "adtestfile") ||
-			(base_option_name == "adtestfile2") ||
-			(base_option_name == "adtestfile3") ||
-			(base_option_name == "adtestfile4") ||
-			(base_option_name == "streamadtestfile") ||
-			(base_option_name == "streamadtestfile2") ||
-			(base_option_name == "streamadtestfile3") ||
-			(base_option_name == "streamadtestfile4") ||
-			(base_option_name == "introfile") ||
-			(base_option_name == "streamintrofile") ||
-			(base_option_name == "backupfile") ||
-			(base_option_name == "streambackupfile") ||
-			(base_option_name == "banfile") ||
-			(base_option_name == "streambanfile") ||
-			(base_option_name == "ripfile") ||
-			(base_option_name == "streamripfile") ||
-			(base_option_name == "agentfile") ||
-			(base_option_name == "artworkfile") ||
-			(base_option_name == "streamagentfile") ||
-			(base_option_name == "streamartworkfile") ||
-			(base_option_name == "include") ||
-			(base_option_name == "w3clog") ||
-			(base_option_name == "streamw3clog") ||
-			(base_option_name == "portbase"))
-		{
-			if (unique != unique_matching_token)
-			{
-				utf8::size_type pos = value.find(unique_matching_token);
-				while (pos != utf8::npos)
-				{
-					value.replace(pos, 1, unique);
-					pos = value.find(unique_matching_token);
-				}
-			}
-
-			// attempt to convert \ to / and vice versa as needed for cross-platform sharing of configuration files
-			fileUtil::convertOSFilePathDelimiter(value);
-		}
-
-		if (base_option_name == "include")
-		{
-			// get the current folder so we can load from include=common.conf if using full paths, etc
-			uniFile::filenameType currentPath = fileUtil::onlyPath(filename);
-
-			// this will handle wildcard matching as applicable to what has been set in the 'include'
-			// value so will allow us to have individual configs via 'include=./stream/stream_*.conf'
-			#ifdef _WIN32
-			vector<wstring> fileList = fileUtil::directoryFileList(value.toWString(), currentPath.toWString(), true, true);
-			#else
-			vector<string> fileList = fileUtil::directoryFileList(value.hideAsString(), currentPath.hideAsString());
-			#endif
-			if (!fileList.empty())
-			{
-				#ifdef _WIN32
-				for (vector<wstring>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-				#else
-				for (vector<string>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-				#endif
-				{
-					#ifdef _WIN32
-					utf32 u32file(*i);
-					utf8 u8f(u32file.toUtf8());
-					_load(u8f, unique);
-					#else
-					_load(*i, unique);
-					#endif
-				}
-			}
-		}
-		else
-		{
-			(this->*((*i).second.m_assignFunc))(value, subIndex);
-		}
-	}
-
-	// close the config file
-	::fclose(conf);
-
-no_read_conf:
-	return loaded;
-}
-
-bool config::editConfigFileEntry(size_t sid, const uniFile::filenameType &filename,
-								 const uniString::utf8 &authhash,
-								 const uniString::utf8 &param, const bool add,
-								 bool &handled, bool &idHandled,
-								 const bool parent = false) throw()
-{
-	bool loaded = true;
-	FILE *conf = NULL, *newconf = NULL;
-	char buffer[4096] = {0};
-	char copyBuffer[4096] = {0};
- 	char *pbuffer = buffer;
-	int l = 0;	// line counter
-
-	// create a backup of the current config file and then use that
-	uniFile::filenameType fn(filename + ".backup");
-	uniFile::unlink(fn);
-	#ifdef _WIN32
-	if (!::MoveFileW(filename.toWString().c_str(), fn.toWString().c_str()))
-	#else
-	if (::rename(filename.hideAsString().c_str(), fn.hideAsString().c_str()))
-	#endif
-	{
-		loaded = false;
-		ELOG(LOGNAME "Could not backup original file `" + filename + "'");
-		goto no_write_conf;
-	}
-
-	conf = uniFile::fopen(filename+".backup","rb");
-	if (!conf)
-	{
-		loaded = false;
-		ELOG(LOGNAME "Could not open `" + filename + "'(" + errMessage().hideAsString() + ")");
-		goto no_write_conf;
-	}
-
-	newconf = uniFile::fopen(filename,"wb");
-	if (!newconf)
-	{
-		loaded = false;
-		ELOG(LOGNAME "Could not open `" + filename+".backup' (" + errMessage().hideAsString() + ")");
-		goto no_write_conf;
-	}
-
-	// parse each line of the file
-	while (true)
-	{
-		size_t subIndex = DEFAULT_CLIENT_STREAM_ID; // for items of form xxxxxx_#  (multi-options)
-
-		if (!fgets(buffer, sizeof(buffer), conf))
-		{
-			break; // get a line
-		}
-		memcpy(copyBuffer, buffer, sizeof(copyBuffer));
-
-		size_t offset = strlen(buffer)-1;
-		while (buffer[offset]=='\n' || buffer[offset]=='\r')
-		{
-			buffer[offset]='\0'; // get rid of cr/lf
-		}
-		++l; // increment line counter
-
-		pbuffer = buffer;
-		while (pbuffer && (*pbuffer == ' ' || *pbuffer == '\t'))
-		{
-			++pbuffer; // remove trailing whitespace
-		}
-
-		if (!pbuffer || !*pbuffer || *pbuffer == ';' || *pbuffer == '[' || *pbuffer == '#')
-		{
-			fwrite(copyBuffer,1,strlen(copyBuffer),newconf);
-			continue; // blank lines or comments skipped
-		}
-
-		char *tok = pbuffer;
-		while (pbuffer && *pbuffer && *pbuffer != '=' && *pbuffer != '\r')
-		{
-			++pbuffer; // look for = sign
-		}
-		if (!pbuffer || !*pbuffer) 
-		{
-			fwrite(copyBuffer,1,strlen(copyBuffer),newconf);
-			continue;
-		}
-		*pbuffer++=0;
-
-		// skip utf-8 BOM
-		if ((strlen(tok) > 2) &&
-			(((unsigned char*)tok)[0] == 0xef) &&
-			(((unsigned char*)tok)[1] == 0xbb) &&
-			(((unsigned char*)tok)[2] == 0xbf))
-		{
-			tok += 3;
-		}
-
-		utf8 stok = tok;
-		// see if it's a multi option and set the subIndex value
-		const vector<utf8> tokens = tokenizer(stok, '_');
-		if (tokens.size() == 2)
-		{
-			stok = tokens[0];
-			subIndex = atoi((const char *)stripWhitespace(tokens[1]).c_str());
-		}
-		stok = stripWhitespace(stok); // cleanup some more whitespace just in case
-
-		// look for the base option name in the option map
-		utf8 base_option_name = toLower(stok);
-		optMap_t::const_iterator i = m_optMap.find(base_option_name);
-		if (i == m_optMap.end())
-		{
-			fwrite(copyBuffer,1,strlen(copyBuffer),newconf);
-			continue;
-		}
-
-		// move tok to the value
-		tok = pbuffer;
-		while (tok && *tok && *tok == ' ')
-		{
-			++tok;
-		}
-
-		utf8 value = stripWhitespace(utf8(tok));
-
-		// this will attempt to check if streamid is present, otherwise we need to add otherwise
-		// when the DNAS is restarted then it will not find the authhash despite being in there
-		if (base_option_name == "streamid" && subIndex == sid && add == true)
-		{
-			idHandled = true;
-		}
-
-		// this will attempt to update a dummy entry in the config or remove depending on the mode
-		if (base_option_name == "streamauthhash" && subIndex == sid)
-		{
-			// attempt to match the line breaks already in the file so it's consistent
-			if (add == true)
-			{
-				// default to the current platforms encoding so it'll at least have a line break
-				utf8 readEol = eol();
-				if (copyBuffer[0])
-				{
-					// determine if just \n or \r\n
-					size_t offset = strlen(copyBuffer)-1;
-					if (copyBuffer[offset] == '\n')
-					{
-						if (copyBuffer[offset-1] == '\r')
-						{
-							readEol = "\r\n";
-						}
-						else
-						{
-							readEol = "\n";
-						}
-					}
-					else if (copyBuffer[offset] == '\r')
-					{
-						readEol = "\r";
-					}
-				}
-
-				uniString::utf8 newEntry("streamauthhash_"+tos(sid)+"="+authhash+readEol);
-				fwrite(newEntry.c_str(),1,newEntry.size(),newconf);
-			}
-			handled = true;
-		}
-		// this will attempt to update a dummy entry in the config or remove depending on the mode
-		else if (base_option_name == authhash && !sid)
-		{
-			// attempt to match the line breaks already in the file so it's consistent
-			if (add == true)
-			{
-				// default to the current platforms encoding so it'll at least have a line break
-				utf8 readEol = eol();
-				if (copyBuffer[0])
-				{
-					// determine if just \n or \r\n
-					size_t offset = strlen(copyBuffer)-1;
-					if (copyBuffer[offset] == '\n')
-					{
-						if (copyBuffer[offset-1] == '\r')
-						{
-							readEol = "\r\n";
-						}
-						else
-						{
-							readEol = "\n";
-						}
-					}
-					else if (copyBuffer[offset] == '\r')
-					{
-						readEol = "\r";
-					}
-				}
-
-				if (param == "1")
-				{
-					uniString::utf8 newEntry(authhash+"="+param+eol());
-					fwrite(newEntry.c_str(),1,newEntry.size(),newconf);
-				}
-			}
-			handled = true;
-		}
-		else
-		{
-			fwrite(copyBuffer,1,strlen(copyBuffer),newconf);
-		}
-
-		if (base_option_name == "include")
-		{
-			// get the current folder so we can load from include=common.conf if using full paths, etc
-			uniFile::filenameType currentPath = fileUtil::onlyPath(filename);
-
-			// this will handle wildcard matching as applicable to what has been set in the 'include'
-			// value so will allow us to have individual configs via 'include=./stream/stream_*.conf'
-			#ifdef _WIN32
-			vector<wstring> fileList = fileUtil::directoryFileList(value.toWString(), currentPath.toWString(), true, true);
-			#else
-			vector<string> fileList = fileUtil::directoryFileList(value.hideAsString(), currentPath.hideAsString());
-			#endif
-			if (!fileList.empty())
-			{
-				#ifdef _WIN32
-				for (vector<wstring>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-				#else
-				for (vector<string>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-				#endif
-				{
-					#ifdef _WIN32
-					utf32 u32file(*i);
-					utf8 u8f(u32file.toUtf8());
-					editConfigFileEntry(sid, u8f, authhash, param, add, handled, idHandled);
-					#else
-					editConfigFileEntry(sid, *i, authhash, param, add, handled, idHandled);
-					#endif
-				}
-			}
-		}
-	}
-
-	// only save back to the first config file if nothing was done in any included files
-	if (parent == true && add == true && (handled == false || idHandled == false))
-	{
-		if (sid && idHandled == false)
-		{
-			// look at and append a newline if there isn't one already at the config's eof
-			if (copyBuffer[0])
-			{
-				size_t len = strlen(copyBuffer)-1;
-				if (copyBuffer[len] != '\r' && copyBuffer[len] != '\n')
-				{
-					fwrite(eol().c_str(),1,eol().size(),newconf);
-				}
-			}
-			idHandled = true;
-		}
-
-		if (sid && handled == false)
-		{
-			// look at and append a newline if there isn't one already at the config's eof
-			if (copyBuffer[0])
-			{
-				size_t len = strlen(copyBuffer)-1;
-				if (copyBuffer[len] != '\r' && copyBuffer[len] != '\n')
-				{
-					fwrite(eol().c_str(),1,eol().size(),newconf);
-				}
-			}
-			uniString::utf8 newEntry("streamauthhash_"+tos(sid)+"="+authhash+eol());
-			fwrite(newEntry.c_str(),1,newEntry.size(),newconf);
-			handled = true;
-		}
-
-		// for anything else, if it's at the default then no need to add, just remove it
-		if (!sid && handled == false && (param == "1"))
-		{
-			// look at and append a newline if there isn't one already at the config's eof
-			if (copyBuffer[0])
-			{
-				size_t len = strlen(copyBuffer)-1;
-				if (copyBuffer[len] != '\r' && copyBuffer[len] != '\n')
-				{
-					fwrite(eol().c_str(),1,eol().size(),newconf);
-				}
-			}
-			uniString::utf8 newEntry(authhash+"="+param+eol());
-			fwrite(newEntry.c_str(),1,newEntry.size(),newconf);
-			handled = true;
-		}
-	}
-
-	// close the config file
-	::fclose(conf);
-	::fclose(newconf);
-
-no_write_conf:
-	return loaded;
-}
-
-/////////////////////////////////////////////////
-///// service template interface methods ////////
-/////////////////////////////////////////////////
-
-const vector<utf8> config::fromArgs(const vector<utf8> &cl) throw()
-{
-	vector<utf8> result;
-	// only attempt to load a passed configuration file otherwise beforehand
-	// this would cause sc_serv to load and appear to do nothing so make sure
-	// that we let the defaults stay in effect so it will do work correctly
-	if (!cl.empty())
-	{
-		load(cl.front());
-		vector<utf8>::const_iterator i = cl.begin();
-		++i;
-		while (i != cl.end())
-		{
-			result.push_back(*(i++));
-		}
-	}
-
-	#ifdef _WIN32
-	if (_logFile() == DEFAULT_LOG)
-	{
-		// this will fill in the default log path as required
-		wchar_t m_fileName[MAX_PATH] = {0};
-		ExpandEnvironmentStringsW(DEFAULT_LOGW, m_fileName, MAX_PATH);
-		assign_logFile(utf32(m_fileName).toUtf8(), DEFAULT_CLIENT_STREAM_ID);
-	}
-	#endif
-
-	return result;
-}
-
-bool config::getConsoleLogging() const throw()
-{
-	stackLock sml(m_lock);
-	return (!sDaemon ? _screenLog() && _log() : false);
-}
-
-const uniFile::filenameType config::getFileLog() const throw()
-{
-	stackLock sml(m_lock);
-
-	static const uniFile::filenameType empty;
-	return (_log() ? _logFile() : empty);
-}
-
-#ifdef _WIN32
-utf8 config::getSystemLogConfigString() throw() { return AOL_logger::systemLogger_element::panicConfiguration(); }
-#else
-utf8 config::getSystemLogConfigString() throw() { return "";}
-#endif
-
-utf8 config::getVersionBuildStrings() throw()
-{
-	static utf8 version = "";
-	if (version.empty())
-	{
-#ifdef _WIN32
-		getVersionInfo(version);
-#else
-		for (int x = 0; x < VENT; ++x)
-		{
-			if (x)
-			{
-				version += ".";
-			}
-			version += tos(PRODUCTVERSION[x]);
-		}
-#endif
-#ifdef LICENCE_FREE
-        version += " no-licence-check";
-#endif
-	}
-	return version;
-}
-
-utf8 config::streamConfig::urlObj::parse(const utf8 &in_url, utf8 &out_server, u_short &out_port, utf8 &out_path) throw(exception)
-{
-	utf8 url(in_url);
-
-	// quick out
-	if (in_url.empty())
-	{
-		out_server.clear();
-		out_port = 0;
-		out_path.clear();
-		return in_url;
-	}
-	/////////////
-
-	utf8 server;
-	utf8 path("/");
-	u_short port = 80;
-
-	if (url.empty())
-	{
-		throwEx<runtime_error>(LOGNAME "Parse error in url (" + url + ")");
-	}
-
-	url = stripHTTPprefix(url);
-
-	utf8::size_type pos = url.find(utf8(":")),
-					pos2 = url.find(utf8("/"));
-
-	if ((pos != utf8::npos) && ((pos2 == utf8::npos) || (pos < pos2)))
-	{
-		// port
-		server = url.substr(0, pos);
-		url.erase(0,pos + 1);
-		pos2 = url.find(utf8("/"));
-		port = utf8(url.substr(0, pos2)).toInt();
-		url.erase(0,pos2);
-	}
-	else
-	{
-		server = url.substr(0,pos2);
-		url.erase(0,pos2);
-	}
-
-	if (!url.empty())
-	{
-		path = url;
-	}
-	out_server = server;
-	out_port = port;
-	out_path = path;
-	return in_url;
-}
-
-uniString::utf8 config::getCrossDomainFile(const bool compressed) throw()
-{
-	if (m_crossdomainStr.empty())
-	{
-		utf8 body = loadLocalFile(fileUtil::getFullFilePath(flashPolicyFile()));
-		if (body.empty())
-		{
-			utf8 ports = tos(portBase());
-			if (g_legacyPort >= 1 && g_legacyPort <= 65535)
-			{
-				ports += "," + tos(g_legacyPort);
-			}
-			if (!m_usedAlternatePorts.empty())
-			{
-				ports += m_usedAlternatePorts;
-			}
-
-			body = "<?xml version=\"1.0\"?>\n<!DOCTYPE cross-domain-policy SYSTEM "
-				   "\"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">\n"
-				   "<cross-domain-policy>\n"
-				   "<allow-access-from domain=\"*\" to-ports=\""+ports+"\"/>\n"
-				   "<allow-http-request-headers-from domain=\"*\" headers=\"*\"/>\n"
-				   "</cross-domain-policy>";
-		}
-
-		m_crossdomainStrGZ = m_crossdomainStr = body;
-
-		if (!compressData(m_crossdomainStrGZ))
-		{
-			m_crossdomainStrGZ.clear();
-		}
-	}
-
-	// default to returning the non-compressed version
-	return (compressed ? (!m_crossdomainStrGZ.empty() ? m_crossdomainStrGZ : m_crossdomainStr) : m_crossdomainStr);
-}
-
-uniString::utf8 config::getShoutcastSWF(const bool compressed) throw()
-{
-	if (m_shoutcastSWFStr.empty())
-	{
-		utf8 body = loadLocalFile(gStartupDirectory + "shoutcast.swf");
-		if (body.empty())
-		{
-			body = MSG_HTTP404;
-		}
-
-		m_shoutcastSWFStrGZ = m_shoutcastSWFStr = body;
-
-		if (!compressData(m_shoutcastSWFStrGZ))
-		{
-			m_shoutcastSWFStrGZ.clear();
-		}
-	}
-
-	// default to returning the non-compressed version
-	return (compressed ? (!m_shoutcastSWFStrGZ.empty() ? m_shoutcastSWFStrGZ : m_shoutcastSWFStr) : m_shoutcastSWFStr);
-}
-
-uniString::utf8 config::getIndexCSS(const bool compressed) throw()
-{
-	if (m_styleCustomStr.empty())
-	{
-		utf8 body = loadLocalFile(fileUtil::getFullFilePath(adminCSSFile()));
-		if (!body.empty())
-		{
-			m_styleCustomStrGZ = m_styleCustomStr = body;
-
-			if (!compressData(m_styleCustomStrGZ))
-			{
-				m_styleCustomStrGZ.clear();
-			}
-		}
-	}
-
-	// default to returning the non-compressed version
-	return (compressed ? (!m_styleCustomStrGZ.empty() ? m_styleCustomStrGZ : m_styleCustomStr) : m_styleCustomStr);
-}
-
-const uniString::utf8 config::getStreamHideStats(const size_t streamID) const
-{
-	if (!streamID)
-	{
-		return hideStats();
-	}
-	else
-	{
-		uniString::utf8 hide = stream_hideStats(streamID);
-		if (!read_stream_hideStats(streamID) || hide.empty())
-		{
-			hide = hideStats();
-		}
-		return hide;
-	}
-}
-
-const uniString::utf8 config::getStreamRedirectURL(const size_t streamID, const bool isStats,
-												   const bool homeSet, const bool compress,
-												   const bool force) const throw()
-{
-	utf8 url;
-	// check if hiding of public pages is enabled with some
-	// specific handling as required for 'all' or 'stats'.
-	bool all = (getStreamHideStats(streamID) == "all"),
-		 //none = !(getStreamHideStats(streamID) == "none"),
-		 stats = ((getStreamHideStats(streamID) == "stats") && isStats);
-
-	if (all || stats || force)
-	{
-		// if no streamid then look at global redirect option only
-		if (!streamID)
-		{
-			// if not set then we look at the streamurl from source
-			// and if that is not valid then and return a 403 error
-			if (!redirectUrl().empty())
-			{
-				url = redirect(redirectUrl(), compress);
-			}
-			else
-			{
-				// but we check if it's for a stats only hide on a
-				// stats method and then redirect to /index.html
-				if (stats && !force)
-				{
-					url = redirect("index.html", compress);
-				}
-				else
-				{
-					url = MSG_HTTP403;
-				}
-			}
-		}
-		else
-		{
-			// look for a stream specific
-			utf8 surl = stream_redirectUrl(streamID);
-			if (!read_stream_redirectUrl(streamID) || surl.empty())
-			{
-				// see if it's a stats page and redirect to /index.html
-				if (stats && !force)
-				{
-					url = redirect("index.html", compress);
-				}
-				else
-				{
-					// otherwise attempt to use the streamurl (if available)
-					if (homeSet && !force)
-					{
-						url = redirect("home.html?sid="+tos(streamID), compress);
-					}
-					else
-					{
-						// and if not then try the global redirect
-						if (!redirectUrl().empty())
-						{
-							url = redirect(redirectUrl(), compress);
-						}
-						// before reverting to a 403 error
-						else
-						{
-							url = MSG_HTTP403;
-						}
-					}
-				}
-			}
-			else
-			{
-				url = redirect(surl, compress);
-			}
-		}
-	}
-
-	return url;
-}
-
-void config::setOption(uniString::utf8 key, uniString::utf8 value) throw(exception)
-{
-	stackLock sml(m_lock);
-
-	size_t subIndex = DEFAULT_CLIENT_STREAM_ID; // for items of form xxxxxx_#  (multi-options)
-	uniString::utf8 stok = key;
-
-	// see if it's a multi option and set the subIndex value
-	const vector<utf8> tokens = tokenizer(stok, '_');
-	if (tokens.size() == 2)
-	{
-		stok = tokens[0];
-		subIndex = atoi((const char *)stripWhitespace(tokens[1]).c_str());
-	}
-	stok = stringUtil::stripWhitespace(stok); // cleanup some more whitespace just in case
-
-	// look for the base option name in the option map
-	uniString::utf8 base_option_name = stringUtil::toLower(stok);
-
-	std::map<uniString::utf8, accessor_t>::const_iterator mi = m_optMap.find(base_option_name);
-	if (mi == m_optMap.end())
-	{
-		throw std::runtime_error("Unknown option " + base_option_name.hideAsString());
-	}
-
-	// first see if the value has changed. If not then we don't worry about it
-	if ((this->*(*mi).second.m_fetchFunc)(subIndex, 0) != value)
-	{
-		if ((base_option_name == "log") || (base_option_name == "screenlog"))
-		{
-			m_deferredOptions[base_option_name] = value;
-		}
-		else
-		{
-			// tweak things as needed with checking the type so we can use the sid or not
-			(this->*(*mi).second.m_assignFunc)(value, subIndex);
-		}
-	}
-}
diff --git a/Src/Plugins/DSP/sc_serv3/config.h b/Src/Plugins/DSP/sc_serv3/config.h
deleted file mode 100644
index ab2bc095..00000000
--- a/Src/Plugins/DSP/sc_serv3/config.h
+++ /dev/null
@@ -1,710 +0,0 @@
-#pragma once
-#ifndef config_H_
-#define config_H_
-
-#include <string>
-#include <vector>
-#include <map>
-#include <list>
-#include <set>
-#include <stdlib.h>
-#include "unicode/uniFile.h"
-#include "stl/stringUtils.h"
-#include "threading/thread.h"
-#include "metrics.h"
-
-#define DEFAULT_SOURCE_STREAM 1
-#define DEFAULT_CLIENT_STREAM_ID 1
-#define DEFAULT_YP_ADDRESS "yp.shoutcast.com"
-
-#ifdef _WIN32
-#define DEFAULT_LOG		"%temp%\\sc_serv.log"
-#define DEFAULT_LOGW	L"%temp%\\sc_serv.log"
-#else
-#define DEFAULT_LOG "/tmp/sc_serv.log"
-#endif
-#define DEFAULT_FLASH_POLICY_FILE "crossdomain.xml"
-
-/*
-
-Each option has a map associated with a member. Let's take an option called foobar
-
-	std::map<size_t,int> m_foobar;
-
-For single options (non-multi options) the map only has a single element. We use a map
-so we can treat all options, multi or not, in the same fashion
-
-The value of the option is assigned via the assign_<name> method. subIndex is only used
-for multi options (zero based). The value is always passed as a string and is converted 
-automatically internally
-
-	inline void assign_foobar(int subIndex,const uniString::utf8 &value)
-
-The value of the option is retrieved as a string via the fetch_<name> method. The value
-is fetched as a native type via native_fetch_<name> method. subIndex is used to select a 
-particular entry in a multi option. It's ignored for regular options
-
-	uniString::utf8 fetch_foobar(int subIndex)
-	int			    native_fetch_foobar(int subIndex)
-		
-A shorthand is provided via the _<name> method. It returns the same value as native_fetch_<name>
-
-	const int _foobar()
-	
-The number of elements for the option is returned by the count_<name> method. For single options
-this is always one
-
-	size_t count_foobar()
-	
-The multi_<name> method returns true if the option is a multi option
-
-	bool multi_foobar()
-	
-The def_<name> method returns the default value for the option as a string
-
-	utf8 def_foobar()
-
-All the proceeding options are private, and not protected by a mutex.
-There are two public methods for accessing methods that provide mutex
-protection. The value of the options is <name>() and the default value
-is provided by <name>_Default()
-
-	const int foobar()
-	const int foobar_Default()
-
-All of this is created automatically via the OPT and OPT_MULTI macros below
-
-
-In the optMap table we associated all these functions with the actual name of the option
-as it appears in the config file. In addition there is a change function associated with
-each option that is fired when the option is changed. 
-*/
-
-/////////////////////////////////////////////////////////////////////////////////////
-///////// crazy macros to provide uniform assign/fetch functions for each option
-
-/*
-	Create a single option of type "tipe" with the name "name" and a default value of "def"
-*/
-#define OPT(tipe,name,def)\
-private:\
-std::map<size_t,tipe> m_##name;\
-inline void assign_##name(const uniString::utf8 &value, const size_t subIndex = DEFAULT_CLIENT_STREAM_ID) throw() { assignMulti(m_##name, subIndex, value); }\
-uniString::utf8 fetch_##name(const size_t subIndex = DEFAULT_CLIENT_STREAM_ID, size_t *fetchByPos = 0) const throw() { return revert(fetchMulti(m_##name, subIndex, def, fetchByPos)); }\
-tipe native_fetch_##name(const size_t subIndex = DEFAULT_CLIENT_STREAM_ID, size_t *fetchByPos = 0) const throw() { return fetchMulti(m_##name, subIndex, def, fetchByPos); }\
-const tipe _##name() const throw() { return fetchMulti(m_##name, DEFAULT_CLIENT_STREAM_ID, def, 0); }\
-size_t count_##name() const throw() { return 1; }\
-bool multi_##name() const throw() { return false; }\
-uniString::utf8 def_##name() const throw() { return revert(def); }\
-public:\
-const tipe name() const throw() { return fetchMulti(m_##name, DEFAULT_CLIENT_STREAM_ID, def, 0); }\
-const tipe name##_Default() const throw() { return def; }
-
-// for options that can have multiple instances (like encoders and broadcast points)
-/*
-	The option has the type "tipe" with the name "name" and a default value of "def"
-*/
-#define OPT_MULTI(tipe,name,def)\
-private:\
-std::map<size_t, tipe> m_##name;\
-inline void assign_##name(const uniString::utf8 &value, const size_t subIndex) throw() { assignMulti(m_##name, subIndex, value); }\
-inline void native_assign_##name(const size_t subIndex, const tipe &value) throw() { native_assignMulti(m_##name, subIndex, value); }\
-uniString::utf8 fetch_##name(const size_t subIndex, size_t *fetchByPos = 0) const throw() { return revert(fetchMulti(m_##name, subIndex, def, fetchByPos)); }\
-tipe native_fetch_##name(const size_t subIndex) const throw() { return fetchMulti(m_##name, subIndex, def, 0); }\
-const tipe _##name(const std::vector<tipe>::size_type i) const throw() { return fetchMulti(m_##name, i, def, 0); }\
-bool multi_##name() const throw() { return true; }\
-uniString::utf8 def_##name() const throw() { return revert(def); }\
-public:\
-const bool read_##name(const size_t subIndex) const throw() { return (m_##name.find(subIndex) != m_##name.end()); }\
-void unread_##name(const size_t subIndex) { native_assignMulti(m_##name, subIndex, name##_Default()); }\
-const tipe name(const size_t subIndex) const throw() { return fetchMulti(m_##name, subIndex, def, 0); }\
-size_t count_##name() const throw() { return m_##name.size(); }\
-const std::map<size_t, tipe>& name##_map() const { return m_##name; } \
-const tipe name##_Default() const throw() { return def; }
-
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-
-// global configuration
-class config
-{
-public:
-	// stream specifications from config file.
-#pragma pack(push, 1)
-	struct streamConfig
-	{
-#pragma pack(push, 1)
-		class urlObj
-		{
-		private:
-			uniString::utf8	m_url;
-			uniString::utf8	m_server;
-			uniString::utf8	m_path;
-			u_short			m_port;
-
-			static uniString::utf8 parse(const uniString::utf8 &url, uniString::utf8 &server,
-										 u_short &port, uniString::utf8 &path) throw(std::exception);
-
-		public:
-			explicit urlObj(const uniString::utf8 &url) throw(std::exception)
-			{
-				if (!url.empty())
-				{
-					set(url);
-				}
-				else
-				{
-					clear();
-				}
-			}
-			urlObj& operator=(const uniString::utf8 &url) throw(std::exception)
-			{
-				set(url);
-				return *this;
-			}
-			const uniString::utf8 &url() const throw() { return m_url; }
-			const uniString::utf8 &server() const throw() { return m_server; }
-			const uniString::utf8 &path() const throw() { return m_path; }
-			const u_short port() const throw() { return m_port; }
-			bool isSet() const throw() { return !m_url.empty(); }
-			void set(const uniString::utf8 &url) throw(std::exception)
-			{
-				m_url = parse(url, m_server, m_port, m_path);
-			}
-			void clear() throw()
-			{
-				m_url.clear();
-				m_port = 0;
-			}
-		};
-#pragma pack(pop)
-
-		uniString::utf8		m_authHash;
-		uniString::utf8		m_urlPath;			// url that clients use to connect
-		uniString::utf8		m_adminPassword;	// per stream admin password
-		uniString::utf8		m_password;			// per stream source password
-		uniString::utf8		m_publicServer;		// per stream source public flag
-		size_t				m_streamID;
-		int					m_maxStreamUser;	// per stream user limit
-		int					m_maxStreamBitrate;	// per stream max bitrate limit
-		int					m_minStreamBitrate;	// per stream min bitrate limit
-		urlObj				m_relayUrl;			// if this is a relay, then this is set to the source url
-		urlObj				m_backupUrl;		// if there is a backup, then this is set to the backup url
-		bool				m_allowRelay;		// per stream relay allowed flag
-		bool				m_allowPublicRelay;	// per stream relay public flag
-
-		streamConfig() throw() : m_streamID(DEFAULT_CLIENT_STREAM_ID), m_maxStreamUser(0),
-								 m_maxStreamBitrate(0), m_minStreamBitrate(0),
-								 m_relayUrl((uniString::utf8)""), m_backupUrl((uniString::utf8)""),
-								 m_allowRelay(true), m_allowPublicRelay(true) {}
-
-		streamConfig(const size_t id, const uniString::utf8 &authHash, const uniString::utf8 &url,
-					 const uniString::utf8 &relayUrl, const uniString::utf8 &backupUrl,
-					 const int maxStreamUser, const int maxStreamBitrate, const int minStreamBitrate,
-					 const uniString::utf8 &adminPassword, const uniString::utf8 &password,
-					 const uniString::utf8 &publicServer, const bool allowRelay,
-					 const bool allowPublicRelay) throw(std::exception)
-				: m_authHash(authHash), m_urlPath(url), m_adminPassword(adminPassword), m_password(password),
-				  m_publicServer(publicServer), m_streamID(id), m_maxStreamUser(maxStreamUser),
-				  m_maxStreamBitrate(maxStreamBitrate), m_minStreamBitrate(minStreamBitrate), m_relayUrl(relayUrl),
-				  m_backupUrl(backupUrl), m_allowRelay(allowRelay), m_allowPublicRelay(allowPublicRelay) {}
-	};
-#pragma pack(pop)
-
-	///////////////////////////////////////////////////////////////////////
-	///// functions to convert types to and from unicode strings
-	template<typename T>	inline static void convert(const uniString::utf8 &v,T &r) throw() { r = v; }
-	#ifdef _WIN64
-	inline static void convert(const uniString::utf8 &v,size_t &r) throw() { r =  atoi((const char *)v.c_str()); }
-	#endif
-	inline static void convert(const uniString::utf8 &v, int &r) throw() { r = atoi((const char *)v.c_str()); }
-	inline static void convert(const uniString::utf8 &v, unsigned int &r) throw() { r = atoi((const char *)v.c_str()); }
-	inline static void convert(const uniString::utf8 &v, unsigned long &r) throw() { r = atol((const char *)v.c_str()); }
-	inline static void convert(const uniString::utf8 &v, unsigned short &r) throw() { r = (unsigned short)atoi((const char *)v.c_str()); }
-	inline static void convert(const uniString::utf8 &v, short &r) throw() { r = (short)atoi((const char *)v.c_str()); }
-	inline static void convert(const uniString::utf8 &v, bool &r) throw() { r = (atoi((const char *)v.c_str()) ? true : false); }
-	inline static void convert(const uniString::utf8 &v, double &r) throw() { r = atof((const char *)v.c_str()); }
-
-	template<typename T>	inline static uniString::utf8 revert(const T &r) throw() { return r; }
-	#ifdef _WIN64
-	inline static uniString::utf8 revert(size_t r) throw()			{ return stringUtil::tos(r); }
-	#endif
-	inline static uniString::utf8 revert(int r) throw()				{ return stringUtil::tos(r); }
-	inline static uniString::utf8 revert(unsigned int r) throw()	{ return stringUtil::tos(r); }
-	inline static uniString::utf8 revert(unsigned long r) throw()	{ return stringUtil::tos(r); }
-	inline static uniString::utf8 revert(unsigned short r) throw()	{ return stringUtil::tos(r); }
-	inline static uniString::utf8 revert(short r) throw()			{ return stringUtil::tos(r); }
-	inline static uniString::utf8 revert(bool r) throw()			{ return (r ? "1" : "0"); }
-	inline static uniString::utf8 revert(double r) throw()			{ return stringUtil::tos(r); }
-	////////////////////////////////////////////////////////////////////////
-	////////////////////////////////////////////////////////////////////////
-
-private:
-	mutable AOL_namespace::mutex m_lock; // api may write to config, so we need a lock
-
-	////////////////////////////////////////////////////////////////////////////////////////////
-	//// tables and functions so we can read and write options in a generic manner based
-	///  on the names that are used in the config file
-	typedef void				(config::*assignFunc_t)(const uniString::utf8 &, const size_t subIndex);
-	typedef uniString::utf8		(config::*fetchFunc_t)(const size_t subIndex, size_t *fetchByPos) const;
-	typedef size_t				(config::*countFunc_t)() const;
-	typedef bool				(config::*multiFunc_t)() const;
-	typedef uniString::utf8		(config::*defaultFunc_t)() const;
-
-	struct accessor_t
-	{
-		assignFunc_t		m_assignFunc;
-		fetchFunc_t			m_fetchFunc;
-		countFunc_t			m_countFunc;
-		multiFunc_t			m_multiFunc;
-		defaultFunc_t		m_defaultFunc;
-
-		accessor_t(assignFunc_t af, fetchFunc_t ff, countFunc_t cf, multiFunc_t mf, defaultFunc_t df) throw()
-				   : m_assignFunc(af), m_fetchFunc(ff), m_countFunc(cf), m_multiFunc(mf), m_defaultFunc(df) {}
-
-		accessor_t() throw() : m_assignFunc(0), m_fetchFunc(0), m_countFunc(0), m_multiFunc(0), m_defaultFunc(0) {}
-	};
-public:
-	typedef std::map<uniString::utf8,accessor_t> optMap_t;
-	//////////////////////////////////////////////////////////////////////////////////////
-	//////////////////////////////////////////////////////////////////////////////////////
-
-	// takes an option map (container) and returns the value at the index (i) if it exists,
-	// otherwise it returns the default value (defaultValue). Value returned as native type
-	template<typename T,typename D>
-	static T fetchMulti(const std::map<size_t,T> &container, const typename std::vector<T>::size_type &subIndex,
-						const D defaultValue, size_t *fetchByPos) throw()
-	{
-		if (!fetchByPos)
-		{
-			typename std::map<size_t,T>::const_iterator i = container.find(subIndex);
-			if (i != container.end())
-			{
-				return (*i).second;
-			}
-		}
-		else
-		{
-			// there's cases where we need to get the value
-			// effectively by it's position in the map so
-			// for the moment we'll just look through (bad
-			// for speed but it's not a commonly used mode).
-			typename std::vector<T>::size_type pos = 0;
-			for (typename std::map<size_t,T>::const_iterator i = container.begin(); i != container.end(); ++i, pos++)
-			{
-				if (pos == subIndex)
-				{
-					*fetchByPos = (*i).first;
-					return (*i).second;
-				}
-			}
-		}
-		return defaultValue;
-	}
-private:
-	// assign map index. Expand with default value as needed. Value is specified as a string and converted as needed
-	template<typename T>
-	static void assignMulti(std::map<size_t,T> &container, const typename std::vector<T>::size_type subIndex, const uniString::utf8 &value) throw()
-	{
-		T vtmp;
-		convert(value, vtmp);
-		container[subIndex] = vtmp;
-	}
-
-	// same as assignMulti, but you can provide the native type instead of a string
-	template<typename T>
-	static void native_assignMulti(std::map<size_t,T> &container, const typename std::vector<T>::size_type subIndex, const T &value) throw()
-	{
-		container[subIndex] = value;
-	}
-
-	/////////////////////////////////////////////////////////////////////////////////
-	///////////////////////////////////////////////////////////////////////////////////
-
-	// radionomy metrics
-	OPT(bool,adMetricsDebug,false)
-	OPT(size_t,metricsMaxQueue,80000)
-
-	OPT(bool,authDebug,false)
-
-public:
-	friend void metrics::metrics_apply(config &conf);
-
-private:
-	optMap_t m_optMap;
-
-	// we can't log during startup because the loggers don't exist
-	std::vector<uniString::utf8> m_deferredWarnLogMessages; // log warning messages from startup
-	std::vector<uniString::utf8> m_deferredErrorLogMessages; // log error messages from startup
-
-	// deferred options are those that weren't set because they can't take effect immediately
-	// they are used when writing out the new config file.
-	std::map<uniString::utf8,uniString::utf8> m_deferredOptions;
-
-	OPT(size_t,configRewrite,0)
-	OPT(uniFile::filenameType,confFile,"")
-
-	OPT(uniFile::filenameType,logFile,DEFAULT_LOG)	// file for logging
-	OPT(uniFile::filenameType,realLogFile,DEFAULT_LOG)	// file for logging
-
-	OPT(bool,screenLog,true)			// log to screen
-	OPT(bool,log,true)					// do I log?
-	OPT(int,logRotates,5)				// hwo many backups to keep when doing a log rotate?
-	OPT(bool,logArchive,false)			// backup rotated files which would otherwise be deleted
-	OPT(int,rotateInterval,86400)		// interval between log file rotations (24 hours)
-										// if set to 0 then we won't rotate any of the files
-
-	OPT(int,portBase,8000)				// listen port
-	OPT(int,publicPort,-1)				// listen port for firehose - workaround for firehose hosts running on port 8000
-										// but need to effectively be seen as bound to port 80 - allowing all to work ok
-	OPT(int,portLegacy,-1)				// legacy port override/disable
-	OPT(uniString::utf8,alternatePorts,(uniString::utf8)"")	// alternate port(s) for client only connections - comma separated string
-	OPT(bool,nameLookups,false)			// do internet reverse lookups
-
-    OPT(uniString::utf8,sslCertificateFile,"");
-    OPT(uniString::utf8,sslCertificateKeyFile,"");
-
-	OPT(int,autoDumpTime,30)			// how long before an idle connection is dumped (in seconds). Zero means no timeout
-	OPT(int,maxHeaderLineSize,4096)		// maximum size of an HTTP header line. Default is pretty arbitrary right now
-										// but should be at least as big as a u-vox packet, since we have to anaylize
-										// initial data bytes to determine protocol and type of connectee (source or client)
-	OPT(int,maxHeaderLineCount,100)		// max headers lines in HTTP style exchange
-	OPT(uniString::utf8,password,(uniString::utf8)""); // password for broadcaster to connect
-	OPT(uniString::utf8,adminPassword,(uniString::utf8)""); // administrator password
-
-	// buffer configuration options
-	OPT(int,bufferType,1)					// 0 - fixed, 1 - adaptive
-	OPT(size_t,fixedBufferSize,524288)		// size of buffer if fixed (gives ~32 seconds ~ 128kbps, 44.1kHz)
-	OPT(double,adaptiveBufferSize,16)		// size of adaptive buffer in seconds
-	OPT(size_t,bufferHardLimit,16777216)	// no more than this give or take a factor of two
-
-	OPT(unsigned short,metaInterval,16384)	// metadata interval for shoutcast 1
-	OPT_MULTI(unsigned short,stream_metaInterval,16384)	// per-stream override
-
-	// special intro and backup files
-	OPT(uniFile::filenameType,introFile,"")
-	OPT(uniFile::filenameType,backupFile,"")
-	OPT(uniFile::filenameType,backupTitle,"")
-	OPT(int,backupLoop,0)
-	OPT(int,maxSpecialFileSize,30000000)
-
-	OPT(int,adTestFileLoop,1)
-	OPT(uniFile::filenameType,adTestFile,"")
-	OPT(uniFile::filenameType,adTestFile2,"")
-	OPT(uniFile::filenameType,adTestFile3,"")
-	OPT(uniFile::filenameType,adTestFile4,"")
-
-	OPT(uniFile::filenameType,artworkFile,"")
-	std::map<size_t, uniString::utf8> m_artworkBody;
-
-	OPT(uniString::utf8,uvoxCipherKey,uniString::utf8("foobar"))
-
-	// w3c logs
-	OPT(bool,w3cEnable,true)
-	OPT(uniString::utf8,w3cLog,uniString::utf8("sc_w3c.log"))
-
-	OPT(uniString::utf8,pidFile,uniString::utf8("sc_serv_$.pid"))
-
-	// relaying
-	OPT(bool,allowRelay,true)	// can other servers relay us. Based on Shoutcast user agent, not reliable
-	OPT(bool,allowPublicRelay,true)	// relays can list themselves in yp
-
-	OPT(short,maxHTTPRedirects,5)	// max times we can redirect (http 3xx)
-	OPT(int,relayReconnectTime,5)	// seconds to reconnect on relay failure
-	OPT(int,relayConnectRetries,0)	// number of times we retry a relay request before throwing it away
-									// which if set as zero will keep retrying (excluding bitrate blocks)
-
-	////// stream configs
-	OPT_MULTI(size_t,stream_ID,DEFAULT_CLIENT_STREAM_ID)
-	OPT_MULTI(uniString::utf8,stream_authHash,(uniString::utf8)"")
-	OPT_MULTI(uniString::utf8,stream_path,(uniString::utf8)"")
-	OPT_MULTI(uniString::utf8,stream_relayURL,(uniString::utf8)"")
-	OPT_MULTI(uniString::utf8,stream_backupURL,(uniString::utf8)"")
-
-	OPT_MULTI(uniString::utf8,stream_password,(uniString::utf8)"")
-	OPT_MULTI(uniString::utf8,stream_adminPassword,(uniString::utf8)"")
-	
-	OPT_MULTI(uniString::utf8,stream_publicServer,(uniString::utf8)"")	// if "always" or "never" overrides public flag from source
-	OPT_MULTI(bool,stream_allowRelay,true)	// can other servers relay us. Based on Shoutcast user agent, not reliable
-	OPT_MULTI(bool,stream_allowPublicRelay,true)	// relays can list themselves in yp
-
-	OPT_MULTI(int,stream_maxUser,0)			// if set to a value greater than zero then we have per stream limits
-	OPT_MULTI(int,stream_maxBitrate,0)		// if set to a value greater than zero then we have per stream limits
-	OPT_MULTI(int,stream_minBitrate,0)		// if set to a value greater than zero then we have per stream limits
-	OPT_MULTI(bool,stream_ripOnly,false)	// only addrs in rip file may connect
-	OPT_MULTI(int,stream_autoDumpTime,30)		// how long before an idle connection is dumped (in seconds). Zero means no timeout
-	OPT_MULTI(int,stream_autoDumpSourceTime,7)	// how long before an idle source connection is dumped (in seconds). Zero means no timeout
-	OPT_MULTI(bool,stream_autoDumpUsers,false)	// if true, then users are dumped if source disconnects
-	OPT_MULTI(size_t,stream_listenerTime,0)	// max time in minutes you can listen. 0 means no limit
-
-	OPT_MULTI(int,stream_songHistory,10)	// max song history to preserve
-	OPT_MULTI(uniString::utf8,stream_uvoxCipherKey,(uniString::utf8)"")
-
-    OPT_MULTI(uniFile::filenameType,stream_logFile,"");     // file for per mount logging
-
-	OPT_MULTI(int,stream_adTestFileLoop,1)
-	OPT_MULTI(uniFile::filenameType,stream_adTestFile,"")
-	OPT_MULTI(uniFile::filenameType,stream_adTestFile2,"")
-	OPT_MULTI(uniFile::filenameType,stream_adTestFile3,"")
-	OPT_MULTI(uniFile::filenameType,stream_adTestFile4,"")
-	OPT_MULTI(uniFile::filenameType,stream_introFile,"")
-	OPT_MULTI(uniFile::filenameType,stream_backupFile,"")
-	OPT_MULTI(uniFile::filenameType,stream_backupTitle,"")
-	OPT_MULTI(int,stream_backupLoop,0)
-
-	OPT_MULTI(int,stream_rateLimitWait,0)
-
-	OPT_MULTI(uniFile::filenameType,stream_artworkFile,"")
-
-	OPT_MULTI(uniFile::filenameType,stream_banFile,"")
-	OPT_MULTI(uniFile::filenameType,stream_ripFile,"")
-	OPT_MULTI(uniFile::filenameType,stream_agentFile,"")
-	OPT_MULTI(uniString::utf8,stream_w3cLog,(uniString::utf8)"")
-
-	OPT_MULTI(uniString::utf8,stream_hideStats,(uniString::utf8)"")		// hide /stats & /statistics as well as /index and /played public facing pages
-	OPT_MULTI(uniString::utf8,stream_redirectUrl,(uniString::utf8)"")	// used with hideStats=all or if the stream version isn't specified
-	OPT_MULTI(uniString::utf8,stream_movedUrl,(uniString::utf8)"")		// used to redirect a deemed dead stream (just in case)
-
-	OPT(bool,requireStreamConfigs,false)	// if true, then sources can only connect if stream configs have been defined
-	OPT(uniString::utf8,userId,"")
-	OPT(uniString::utf8,licenceId,"")
-
-	// flash policy
-	OPT(int,flashPolicyServerPort,-1) // listen on port 843 for flash policy server request
-	OPT(uniFile::filenameType,flashPolicyFile,DEFAULT_FLASH_POLICY_FILE)
-	uniString::utf8 m_crossdomainStr;		// used to hold a cached copy of the crossdomain.xml file
-	uniString::utf8 m_crossdomainStrGZ;		// used to hold a cached copy of the gzipped crossdomain.xml file
-	uniString::utf8 m_shoutcastSWFStr;		// used to hold a cached copy of the shoutcast.swf file
-	uniString::utf8 m_shoutcastSWFStrGZ;	// used to hold a cached copy of the gzipped shoutcast.swf file
-	uniString::utf8 m_usedAlternatePorts;	// used to hold a copy of the valid alternate ports in use
-
-	////// yp
-	OPT(int,ypTimeout,30)	// yp timeout interval for requests
-	OPT(uniString::utf8,ypAddr,DEFAULT_YP_ADDRESS)
-	OPT(int,ypPort,80)
-	OPT(uniString::utf8,ypPath,"/yp2")
-	OPT(int,ypMaxRetries,10)	// number of times we retry a yp request before throwing it away
-	OPT(int,ypReportInterval,5 * 60)	// never touch any slower than this
-	OPT(int,ypMinReportInterval,10)		// never touch any faster than this
-	OPT(uniString::utf8,publicServer,"default")	// if "always" or "never" overrides public flag from source
-
-	//// cdn behaviour
-	OPT(uniString::utf8,cdn,"")		// if 'on' or 'always' then we enable all of the cdn modes (including YP pings for private streams)
-									// but use it to determine opt-in (via 'on') or opt-out (via 'always')
-	OPT_MULTI(int,cdn_master,-1)	// this and the option below is used to control the behaviour of things
-	OPT_MULTI(int,cdn_slave,-1)
-
-	//// stats
-	OPT(int,maxUser,512)	// max clients
-	OPT(int,minBitrate,0)	// min bitrate of source connections - if zero / not set then there is no limit
-	OPT(int,maxBitrate,0)	// max bitrate of source connections - if zero / not set then there is no limit
-	OPT(uniString::utf8,hideStats,"") // hide /stats & /statistics as well as /index and /played public facing pages
-	OPT(uniString::utf8,redirectUrl,"")	// used with hideStats=all or if the stream version isn't specified
-
-	/// client behaviour
-	OPT(size_t,listenerTime,0)	// max time in minutes you can listen. 0 means no limit
-	OPT(bool,autoDumpUsers,false) // if true, then users are dumped if source disconnects
-	OPT(uniString::utf8,srcIP,"")	// bind addr for sources
-	OPT(uniString::utf8,destIP,"")	// bind addr for clients
-	OPT(uniString::utf8,publicIP,"")	// public address to use for the YP listing if the bind addr is not appropriate
-	OPT(uniString::utf8,titleFormat,"") // modifies icy-name
-	OPT(uniString::utf8,urlFormat,"")	// modifies icy-url
-
-	//// banning
-	OPT(uniFile::filenameType,banFile,"sc_serv.ban")
-	OPT(bool,saveBanListOnExit,true) // save on exiting
-
-	//// rip
-	OPT(uniFile::filenameType,ripFile,"sc_serv.rip")
-	OPT(bool,saveRipListOnExit,true) // save on exiting
-	OPT(bool,ripOnly,false)	// only addrs in rip file may connect
-	OPT(uniFile::filenameType,adminFile,"sc_serv.admin")
-
-	/// agent
-	OPT(uniFile::filenameType,agentFile,"sc_serv.agent")
-	OPT(bool,saveAgentListOnExit,true) // save on exiting
-	OPT(bool,blockEmptyUserAgent,false) // if true, block the client connection if there is no user agent specified
-
-	//// debugging
-	OPT(bool,webClientDebug,false)
-	OPT(bool,yp2Debug,false)
-	OPT(bool,shoutcastSourceDebug,false)
-	OPT(bool,uvox2SourceDebug,false)
-	OPT(bool,HTTPSourceDebug,false)
-	OPT(bool,streamDataDebug,false)
-	OPT(bool,microServerDebug,false)
-	OPT(bool,httpStyleDebug,false)
-	OPT(bool,shoutcast1ClientDebug,false)
-	OPT(bool,shoutcast2ClientDebug,false)
-	OPT(bool,HTTPClientDebug,false)
-	OPT(bool,flvClientDebug,false)
-	OPT(bool,m4aClientDebug,false)
-
-	OPT(bool,relayDebug,false)
-	OPT(bool,relayShoutcastDebug,false)
-	OPT(bool,relayUvoxDebug,false)
-	OPT(bool,statsDebug,false)
-	OPT(bool,threadRunnerDebug,false)
-
-	OPT(bool,logClients,true)
-
-	OPT(int,songHistory,20)	// max song history to preserve
-
-	/// misc nonsense
-	OPT(uniString::utf8,unique,"$")	// subsitution string for file names to mimic old sc_serv conf file behaviour
-	OPT(uniString::utf8,include,"")	// include file placeholder
-	OPT(int,cpuCount,0)				// cpu usage. zero is default
-	OPT(bool,clacks,true)			// need i say more...?
-	OPT(bool,startInactive,false)	// used to not start the relays on startup
-	OPT(bool,rateLimit,true);		// if we do frame rate limiting or not
-	OPT(int,rateLimitWait,5);		// if we do frame rate limiting, how many seconds before we enforce it fully
-	OPT(bool,useXFF,true);			// if we use XFF (if available) for the listener address (and related actions)
-	OPT(bool,forceShortSends,false);// used for debugging streaming issues by introducing forced delays into sends
-	OPT(bool,adminNoWrap,false);	// used for defaulting the admin listener page mode for wrapping or not
-									// wrapping the listener output list which might be handy for some users
-
-	// used for customising the css of the index.html and admin pages
-	OPT(uniFile::filenameType,adminCSSFile,"v2")
-	uniString::utf8 m_styleCustomStr;		// used to hold a cached copy of the custom css file
-	uniString::utf8 m_styleCustomStrGZ;		// used to hold a cached copy of the gzipped custom css file
-	uniString::utf8 m_styleCustomHeader;	// used to hold a cached copy of the gzipped custom css file
-	uniString::utf8 m_styleCustomHeaderGZ;	// used to hold a cached copy of the gzipped custom css file
-	time_t m_styleCustomHeaderTime;			// used to control the cache handling
-
-	OPT(uniFile::filenameType,faviconFile,"")
-	OPT(uniFile::filenameType,faviconFileMimeType,"image/x-icon")
-	uniString::utf8 m_faviconBody;
-	uniString::utf8 m_faviconHeader;
-	uniString::utf8 m_faviconBodyGZ;	// gzipped version
-	uniString::utf8 m_faviconHeaderGZ;	// gzipped version
-	time_t m_favIconTime;				// used to control the cache handling
-
-	// used for returning robots.txt
-	OPT(uniFile::filenameType,robotstxtFile,"")
-	uniString::utf8 m_robotsTxtBody;
-	uniString::utf8 m_robotsTxtHeader;
-	uniString::utf8 m_robotsTxtBodyGZ;		// gzipped version
-	uniString::utf8 m_robotsTxtHeaderGZ;	// gzipped version
-
-	uniString::utf8 m_certPath;
-	uniString::utf8 m_certFileBody;
-
-	const bool _load(const uniFile::filenameType &file, const uniString::utf8 &uniqueStr, const bool parent) throw();
-	int promptConfigFile() throw();
-
-	bool editConfigFileEntry(size_t sid, const uniFile::filenameType &filename,
-							 const uniString::utf8 &authhash, const uniString::utf8 &param,
-							 bool add, bool &handled, bool &idHandled, bool parent) throw();
-
-	// used for legacy handling of the relayport and relayserver options to sid=1
-	uniString::utf8 m_legacyRelayPort;
-	uniString::utf8 m_legacyRelayServer;
-
-	streamConfig& getPerStreamConfig(streamConfig& stream, const size_t sid, const bool useParent = true);
-
-public:
-	config() throw();
-	~config() throw();
-
-	static std::string logSectionName();
-
-	uniString::utf8 getCrossDomainFile(const bool compressed) throw();
-	uniString::utf8 getIndexCSS(const bool compressed) throw();
-	uniString::utf8 getShoutcastSWF(const bool compressed) throw();
-
-	const uniString::utf8 getStreamRedirectURL(const size_t streamID, const bool isStats, const bool homeSet,
-											   const bool compress, const bool force = false) const throw();
-
-	int getRateLimitWait(const size_t streamID) const throw();
-
-	const int isBitrateDisallowed(const size_t streamID, const int bitrate, int &streamMinBitrate, int &streamMaxBitrate) const throw();
-
-	unsigned short getMetaInterval(const size_t streamID) const throw();
-	int getBackupLoop(const size_t streamID) const throw();
-	size_t getSongHistorySize(const size_t streamID) const throw();
-	const int getAutoDumpTime(const size_t streamID = DEFAULT_SOURCE_STREAM) const throw();
-
-	const int getCPUCount() const throw();
-
-	const std::vector<streamConfig> getRelayList();
-	const std::vector<streamConfig> getBackupUrl(const size_t streamID) throw(std::exception);
-	const uniString::utf8 getStreamHideStats(const size_t streamID) const;
-
-	typedef std::map<size_t, config::streamConfig> streams_t;
-	void getStreamConfigs(streams_t& streams, const bool useParent = true);
-	const bool getStreamConfig(streamConfig& stream, const size_t streamID);
-
-	// handle updating stream configs on the fly (as applicable)
-	#define AUTH_HASH		0x1
-	#define URL_PATH		0x2
-	#define RELAY_URL		0x4
-	#define MAX_USER		0x8
-	#define SOURCE_PWD		0x10
-	#define ADMIN_PWD		0x20
-	#define PUBLIC_SRV		0x40
-	#define ALLOW_RELAY		0x80
-	#define ALLOW_PUBLIC_RELAY		0x100
-	#define RIP_ONLY		0x200
-	#define DUMP_TIME		0x400
-	#define DUMP_USER		0x800
-	#define LIST_TIME		0x1000
-	#define SONG_HIST		0x2000
-	#define CIPHER_KEY		0x4000
-	#define INTRO_FILE		0x8000
-	#define BACKUP_FILE		0x10000
-	#define BAN_FILE		0x20000
-	#define RIP_FILE		0x40000
-	#define W3C_FILE		0x80000
-	#define MAX_BITRATE		0x100000
-	#define BACKUP_URL		0x200000
-	#define HIDE_STATS		0x400000
-	#define MOVED_URL		0x800000
-	#define AGENT_FILE		0x1000000
-	#define CDN_MASTER		0x2000000
-	#define CDN_SLAVE		0x4000000
-	#define ARTWORK_FILE	0x8000000
-	#define BACKUP_LOOP		0x10000000
-	#define BACKUP_TITLE	0x20000000
-	#define MIN_BITRATE		0x40000000
-	#define AD_TEST_FILE	0x80000000
-	#define AD_TEST_FILE_LOOP	0x100000000ULL
-	#define RATE_LIMIT_WAIT	0x200000000ULL
-	#define METAINTERVAL	0x400000000ULL
-	#define AD_TEST_FILE_2	0x800000000ULL
-	#define AD_TEST_FILE_3	0x1000000000ULL
-	#define AD_TEST_FILE_4	0x2000000000ULL
-
-	void addStreamConfig(config &readConfig, config::streamConfig) throw(std::exception);
-	__uint64 updateStreamConfig(config &readConfig, config::streamConfig update) throw(std::exception);
-	void removeStreamConfig(config::streamConfig) throw(std::exception);
-
-	// deals with configuring all of the per-stream passwords, etc
-	static bool setupPasswords(const config::streams_t &) throw(std::exception);
-
-	void setOption(uniString::utf8 key, uniString::utf8 value) throw(std::exception);
-
-	bool load(const uniFile::filenameType &file, bool load = true) throw();
-	bool rewriteConfigurationFile(bool minimal = true, bool messages = false, bool setup = false) const throw(std::exception); // throw on I/O error
-	uniString::utf8 dumpConfigFile() throw();
-
-	//////////////////////////////////////////////////////////////////////////////////////
-
-	const std::vector<uniString::utf8>& deferredWarnLogMessages() const throw() { stackLock sml(m_lock); return m_deferredWarnLogMessages; }
-	const std::vector<uniString::utf8>& deferredErrorLogMessages() const throw() { stackLock sml(m_lock); return m_deferredErrorLogMessages; }
-
-	void clearDeferredWarnLogMessages() throw() { stackLock sml(m_lock); m_deferredWarnLogMessages.clear(); }
-	void clearDeferredErrorLogMessages() throw() { stackLock sml(m_lock); m_deferredErrorLogMessages.clear(); }
-
-	/////////// interface for service templates
-	const std::vector<uniString::utf8> fromArgs(const std::vector<uniString::utf8> &cl) throw();
-	bool getConsoleLogging() const throw();
-	const uniFile::filenameType getFileLog() const throw();
-	static uniString::utf8 getSystemLogConfigString() throw();
-	static uniString::utf8 getVersionBuildStrings() throw();
-	////////////////////////////////////////////////////////////////////////////
-};
-
-#undef OPT
-#undef OPT_MULTI
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/cpucount.cpp b/Src/Plugins/DSP/sc_serv3/cpucount.cpp
deleted file mode 100644
index fc2a1156..00000000
--- a/Src/Plugins/DSP/sc_serv3/cpucount.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "cpucount.h"
-
-#ifdef _WIN32
-#include <windows.h>
-
-int cpucount() throw() 
-{
-	SYSTEM_INFO sysinfo = {0};
-	::GetSystemInfo(&sysinfo);
-
-	return sysinfo.dwNumberOfProcessors;
-}
-#endif
-
-#ifdef __APPLE_CC__
-#import <sys/param.h>
-#import <sys/sysctl.h>
-
-int cpucount() throw() 
-{ 
-	int count = 0;
-	size_t size = sizeof(count);
-
-	if (sysctlbyname("hw.ncpu",&count,&size,NULL,0)) return 1;
-
-	return count; 
-}
-#endif
-
-#if (defined PLATFORM_LINUX || defined PLATFORM_ARMv6 || defined PLATFORM_ARMv7)
-#include <unistd.h>
-int cpucount() throw() 
-{ 
-	return sysconf(_SC_NPROCESSORS_ONLN);
-}
-#endif
-
-#ifdef PLATFORM_BSD
-#include <sys/param.h>
-#include <sys/sysctl.h>
-#ifndef HW_AVAILCPU
-#define HW_AVAILCPU 25
-#endif
-
-int cpucount() throw() 
-{ 
-	int numCPU = 1;
-	int mib[4] = {0};
-	size_t len = 0; 
-
-	/* set the mib for hw.ncpu */
-	mib[0] = CTL_HW;
-	mib[1] = HW_AVAILCPU;  // alternatively, try HW_NCPU;
-
-	/* get the number of CPUs from the system */
-	sysctl(mib, 2, &numCPU, &len, NULL, 0);
-
-	if( numCPU < 1 ) 
-	{
-		mib[1] = HW_NCPU;
-		sysctl( mib, 2, &numCPU, &len, NULL, 0 );
-
-		if( numCPU < 1 )
-		{
-			numCPU = 1;
-		}
-	}
-	return numCPU; 
-}
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/cpucount.h b/Src/Plugins/DSP/sc_serv3/cpucount.h
deleted file mode 100644
index c11e40ec..00000000
--- a/Src/Plugins/DSP/sc_serv3/cpucount.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-#ifndef cpucount_H_
-#define cpucount_H_
-
-// platform independent function to return number of logical processors
-int cpucount() throw();
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/deps/win32/include/sched.h b/Src/Plugins/DSP/sc_serv3/deps/win32/include/sched.h
deleted file mode 100644
index ad0fb2ec..00000000
--- a/Src/Plugins/DSP/sc_serv3/deps/win32/include/sched.h
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Module: sched.h
- *
- * Purpose:
- *      Provides an implementation of POSIX realtime extensions
- *      as defined in
- *
- *              POSIX 1003.1b-1993      (POSIX.1b)
- *
- * --------------------------------------------------------------------------
- *
- *      Pthreads-win32 - POSIX Threads Library for Win32
- *      Copyright(C) 1998 John E. Bossom
- *      Copyright(C) 1999,2012 Pthreads-win32 contributors
- *
- *      Homepage1: http://sourceware.org/pthreads-win32/
- *      Homepage2: http://sourceforge.net/projects/pthreads4w/
- *
- *      The current list of contributors is contained
- *      in the file CONTRIBUTORS included with the source
- *      code distribution. The list can also be seen at the
- *      following World Wide Web location:
- *      http://sources.redhat.com/pthreads-win32/contributors.html
- *
- *      This library is free software; you can redistribute it and/or
- *      modify it under the terms of the GNU Lesser General Public
- *      License as published by the Free Software Foundation; either
- *      version 2 of the License, or (at your option) any later version.
- *
- *      This library is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *      Lesser General Public License for more details.
- *
- *      You should have received a copy of the GNU Lesser General Public
- *      License along with this library in the file COPYING.LIB;
- *      if not, write to the Free Software Foundation, Inc.,
- *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-#if !defined(_SCHED_H)
-#define _SCHED_H
-
-#if defined(_MSC_VER)
-#  if _MSC_VER < 1300
-#    define PTW32_CONFIG_MSVC6
-#  endif
-#  if _MSC_VER < 1400
-#    define PTW32_CONFIG_MSVC7
-#  endif
-#endif
-
-#undef PTW32_SCHED_LEVEL
-
-#if defined(_POSIX_SOURCE)
-#define PTW32_SCHED_LEVEL 0
-/* Early POSIX */
-#endif
-
-#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
-#undef PTW32_SCHED_LEVEL
-#define PTW32_SCHED_LEVEL 1
-/* Include 1b, 1c and 1d */
-#endif
-
-#if defined(INCLUDE_NP)
-#undef PTW32_SCHED_LEVEL
-#define PTW32_SCHED_LEVEL 2
-/* Include Non-Portable extensions */
-#endif
-
-#define PTW32_SCHED_LEVEL_MAX 3
-
-#if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 )  || !defined(PTW32_SCHED_LEVEL)
-#define PTW32_SCHED_LEVEL PTW32_SCHED_LEVEL_MAX
-/* Include everything */
-#endif
-
-
-#if defined(__GNUC__) && !defined(__declspec)
-# error Please upgrade your GNU compiler to one that supports __declspec.
-#endif
-
-/*
- * When building the library, you should define PTW32_BUILD so that
- * the variables/functions are exported correctly. When using the library,
- * do NOT define PTW32_BUILD, and then the variables/functions will
- * be imported correctly.
- */
-#if !defined(PTW32_STATIC_LIB)
-#  if defined(PTW32_BUILD)
-#    define PTW32_DLLPORT __declspec (dllexport)
-#  else
-#    define PTW32_DLLPORT __declspec (dllimport)
-#  endif
-#else
-#  define PTW32_DLLPORT
-#endif
-
-/*
- * The Open Watcom C/C++ compiler uses a non-standard calling convention
- * that passes function args in registers unless __cdecl is explicitly specified
- * in exposed function prototypes.
- *
- * We force all calls to cdecl even though this could slow Watcom code down
- * slightly. If you know that the Watcom compiler will be used to build both
- * the DLL and application, then you can probably define this as a null string.
- * Remember that sched.h (this file) is used for both the DLL and application builds.
- */
-#if !defined(PTW32_CDECL)
-# define PTW32_CDECL __cdecl
-#endif
-
-/*
- * This is a duplicate of what is in the autoconf config.h,
- * which is only used when building the pthread-win32 libraries.
- */
-
-#if !defined(PTW32_CONFIG_H)
-#  if defined(WINCE)
-#    define NEED_ERRNO
-#    define NEED_SEM
-#  endif
-#  if defined(__MINGW64__)
-#    define HAVE_STRUCT_TIMESPEC
-#    define HAVE_MODE_T
-#  elif defined(_UWIN) || defined(__MINGW32__)
-#    define HAVE_MODE_T
-#  endif
-#endif
-
-/*
- *
- */
-
-#include <stdlib.h>
-
-#if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX
-#if defined(NEED_ERRNO)
-#include "need_errno.h"
-#else
-#include <errno.h>
-#endif
-#endif /* PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX */
-
-#if (defined(__MINGW64__) || defined(__MINGW32__)) || defined(_UWIN)
-# if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX
-/* For pid_t */
-#  include <sys/types.h>
-/* Required by Unix 98 */
-#  include <time.h>
-# else
-   typedef int pid_t;
-# endif
-#else
- /* [i_a] fix for using pthread_win32 with mongoose code, which #define's its own pid_t akin to     typedef HANDLE pid_t; */
- #undef pid_t
-# if defined(_MSC_VER)
-  typedef void *pid_t;
-# else
-  typedef int pid_t;
-# endif
-#endif
-
-/*
- * Microsoft VC++6.0 lacks these *_PTR types
- */
-#if defined(_MSC_VER) && _MSC_VER < 1300 && !defined(PTW32_HAVE_DWORD_PTR)
-typedef unsigned long ULONG_PTR;
-typedef ULONG_PTR DWORD_PTR;
-#endif
-
-/* Thread scheduling policies */
-
-enum {
-  SCHED_OTHER = 0,
-  SCHED_FIFO,
-  SCHED_RR,
-  SCHED_MIN   = SCHED_OTHER,
-  SCHED_MAX   = SCHED_RR
-};
-
-struct sched_param {
-  int sched_priority;
-};
-
-/*
- * CPU affinity
- *
- * cpu_set_t:
- * Considered opaque but cannot be an opaque pointer
- * due to the need for compatibility with GNU systems
- * and sched_setaffinity() et.al. which include the
- * cpusetsize parameter "normally set to sizeof(cpu_set_t)".
- */
-
-#define CPU_SETSIZE (sizeof(size_t)*8)
-
-#define CPU_COUNT(setptr) (_sched_affinitycpucount(setptr))
-
-#define CPU_ZERO(setptr) (_sched_affinitycpuzero(setptr))
-
-#define CPU_SET(cpu, setptr) (_sched_affinitycpuset((cpu),(setptr)))
-
-#define CPU_CLR(cpu, setptr) (_sched_affinitycpuclr((cpu),(setptr)))
-
-#define CPU_ISSET(cpu, setptr) (_sched_affinitycpuisset((cpu),(setptr)))
-
-#define CPU_AND(destsetptr, srcset1ptr, srcset2ptr) (_sched_affinitycpuand((destsetptr),(srcset1ptr),(srcset2ptr)))
-
-#define CPU_OR(destsetptr, srcset1ptr, srcset2ptr) (_sched_affinitycpuor((destsetptr),(srcset1ptr),(srcset2ptr)))
-
-#define CPU_XOR(destsetptr, srcset1ptr, srcset2ptr) (_sched_affinitycpuxor((destsetptr),(srcset1ptr),(srcset2ptr)))
-
-#define CPU_EQUAL(set1ptr, set2ptr) (_sched_affinitycpuequal((set1ptr),(set2ptr)))
-
-typedef union
-{
-  char cpuset[CPU_SETSIZE/8];
-  size_t _align;
-} cpu_set_t;
-
-#if defined(__cplusplus)
-extern "C"
-{
-#endif                          /* __cplusplus */
-
-PTW32_DLLPORT int PTW32_CDECL sched_yield (void);
-
-PTW32_DLLPORT int PTW32_CDECL sched_get_priority_min (int policy);
-
-PTW32_DLLPORT int PTW32_CDECL sched_get_priority_max (int policy);
-
-PTW32_DLLPORT int PTW32_CDECL sched_setscheduler (pid_t pid, int policy);
-
-PTW32_DLLPORT int PTW32_CDECL sched_getscheduler (pid_t pid);
-
-/* Compatibility with Linux - not standard */
-
-PTW32_DLLPORT int PTW32_CDECL sched_setaffinity (pid_t pid, size_t cpusetsize, cpu_set_t *mask);
-
-PTW32_DLLPORT int PTW32_CDECL sched_getaffinity (pid_t pid, size_t cpusetsize, cpu_set_t *mask);
-
-/*
- * Support routines and macros for cpu_set_t
- */
-PTW32_DLLPORT int PTW32_CDECL _sched_affinitycpucount (const cpu_set_t *set);
-
-PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuzero (cpu_set_t *pset);
-
-PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuset (int cpu, cpu_set_t *pset);
-
-PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuclr (int cpu, cpu_set_t *pset);
-
-PTW32_DLLPORT int PTW32_CDECL _sched_affinitycpuisset (int cpu, const cpu_set_t *pset);
-
-PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuand(cpu_set_t *pdestset, const cpu_set_t *psrcset1, const cpu_set_t *psrcset2);
-
-PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuor(cpu_set_t *pdestset, const cpu_set_t *psrcset1, const cpu_set_t *psrcset2);
-
-PTW32_DLLPORT void PTW32_CDECL _sched_affinitycpuxor(cpu_set_t *pdestset, const cpu_set_t *psrcset1, const cpu_set_t *psrcset2);
-
-PTW32_DLLPORT int PTW32_CDECL _sched_affinitycpuequal (const cpu_set_t *pset1, const cpu_set_t *pset2);
-
-/*
- * Note that this macro returns ENOTSUP rather than
- * ENOSYS as might be expected. However, returning ENOSYS
- * should mean that sched_get_priority_{min,max} are
- * not implemented as well as sched_rr_get_interval.
- * This is not the case, since we just don't support
- * round-robin scheduling. Therefore I have chosen to
- * return the same value as sched_setscheduler when
- * SCHED_RR is passed to it.
- */
-#define sched_rr_get_interval(_pid, _interval) \
-  ( errno = ENOTSUP, (int) -1 )
-
-
-#if defined(__cplusplus)
-}                               /* End of extern "C" */
-#endif                          /* __cplusplus */
-
-#undef PTW32_SCHED_LEVEL
-#undef PTW32_SCHED_LEVEL_MAX
-
-#endif                          /* !_SCHED_H */
-
diff --git a/Src/Plugins/DSP/sc_serv3/filenameMetadata.cpp b/Src/Plugins/DSP/sc_serv3/filenameMetadata.cpp
deleted file mode 100644
index d335a5e4..00000000
--- a/Src/Plugins/DSP/sc_serv3/filenameMetadata.cpp
+++ /dev/null
@@ -1,681 +0,0 @@
-#include "filenameMetadata.h"
-#include "metadata.h"
-#include "stl/stringUtils.h"
-#include "macros.h"
-#include <functional>
-#include <algorithm>
-#include <string>
-#include <list>
-#include <assert.h>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-/*
-	Overview of how it works:
-
-	The setPattern() method looks at the pattern string and builds a stack of parseState objects.
-	Each of these objects are responsible for finding their associated pattern within a text range.
-
-	parsing is done right to left.
-
-	the parseState_optional object is used to encapsulate  other state objects that are
-	optional (bracketed by [] in the pattern).
-*/
-
-class filenameMetadata::impl
-{
-	// to make unicode compatibility easier, we're just going to store things as utf32
-	utf32 m_pattern;
-	utf32 m_data;
-
-	// put the map will be in utf 8
-	typedef map<utf8,utf8> tokenMap_t;
-	tokenMap_t m_tokens;
-
-	class parseState;
-	typedef list<parseState*> parseStack_t;
-	parseStack_t m_parseStack;
-	static void clearparseStack(parseStack_t &ps) throw()
-	{
-		while (!ps.empty())
-		{
-			delete ps.back();
-			ps.pop_back();
-		}
-	}
-
-	void clearparseStack() throw() { clearparseStack(m_parseStack); }
-
-	///////////// parse states //////////////////////////
-	class parseState // virtual base
-	{
-	public:
-		typedef utf32::const_reverse_iterator range_e;
-		typedef pair<range_e, range_e> range_t;
-
-		virtual ~parseState() throw() {}
-		virtual range_t	findRange(range_e rbegin, range_e rend) throw() { return make_pair(rbegin, rend); }
-		virtual void setFromRange(range_e /*rbegin*/, range_e /*rend*/) throw() {}
-		virtual void reportValue(tokenMap_t &/*tm*/) const throw() {}
-		virtual utf8 describe() const throw() = 0; // for diagnostics
-		virtual void reset() throw() {}
-		virtual bool optional() const throw() { return false; }
-		virtual bool finite() const throw() { return false; } // fixed width match
-	};
-
-	class parseState_optional: public parseState
-	{
-		parseStack_t m_parseStack;
-
-	public:
-		parseState_optional(){}
-		~parseState_optional() throw() { clearparseStack(m_parseStack); }
-		parseStack_t* stack() throw() { return &m_parseStack; }
-
-		virtual bool optional() const throw() { return true; }
-
-		virtual void reset() throw()
-		{
-			for_each(m_parseStack.begin(), m_parseStack.end(), mem_fun(&parseState::reset));
-		}
-
-		virtual utf8 describe() const throw()
-		{
-			utf8 result("[");
-			for (parseStack_t::const_iterator i = m_parseStack.begin(); i != m_parseStack.end(); ++i)
-			{
-				result += (*i)->describe();
-			}
-			result = result + utf8("]");
-			return result;
-		}
-
-		virtual range_t findRange(range_e rbegin,range_e rend) throw()
-		{
-			const range_t NOTFOUND(make_pair(rend, rend));
-			range_t result;
-
-			reset();
-			if (m_parseStack.empty())
-			{
-				return NOTFOUND;
-			}
-
-			parseStack_t::reverse_iterator s_cur = m_parseStack.rbegin();
-			parseStack_t::reverse_iterator s_nxt = s_cur;
-			++s_nxt;
-
-			range_e data_start = rbegin;
-			range_e data_end   = rend;
-			range_e last_restart = rbegin;
-
-			bool first(true);
-			while (s_cur != m_parseStack.rend())
-			{
-				if (data_start == data_end)
-				{
-					reset();
-					return NOTFOUND;
-				}
-
-				range_t curR(NOTFOUND);
-				range_t nxtR(NOTFOUND);
-				curR = (*s_cur)->findRange(data_start,data_end);
-				if (curR.first == data_end)
-				{
-					reset();
-					return NOTFOUND;
-				}
-				if ((!first) && (curR.first != data_start))
-				{
-					// must abut. Try moving forward again 
-					reset(); 
-					s_cur = m_parseStack.rbegin();
-					s_nxt = s_cur;
-					++s_nxt;
-					++last_restart;
-					data_start = last_restart;
-					first = true;
-					continue;
-				}
-				if (first)
-				{
-					result.first = curR.first;
-				}
-				first = false;
-
-				// don't do this if we have a single character state followed
-				// by anything (in particular, a string which eats all
-				if (curR.first + 1 != curR.second)
-				{
-					if (s_nxt != m_parseStack.rend())
-					{
-						nxtR = (*s_nxt)->findRange(data_start,data_end);
-					}
-					if (nxtR.first < curR.second)
-					{
-						curR.second = nxtR.first;
-					}
-				}
-				(*s_cur)->setFromRange(curR.first,curR.second);
-				s_cur = s_nxt;
-				if (s_nxt != m_parseStack.rend())
-				{
-					++s_nxt;
-				}
-				data_start = curR.second;
-			}
-			result.second = data_start;
-			return result;
-		}
-
-		virtual void setFromRange(utf32::const_reverse_iterator rbegin, utf32::const_reverse_iterator rend) throw()
-		{ 
-			findRange(rbegin, rend); // resets to restricted range if necessary
-		}
-
-		virtual void reportValue(tokenMap_t &tm) const throw() 
-		{
-			for (parseStack_t::const_iterator i = m_parseStack.begin(); i != m_parseStack.end(); ++i)
-			{
-				(*i)->reportValue(tm);
-			}
-		}
-
-		virtual bool finite() const throw()
-		{
-			bool result = true;
-			for (parseStack_t::const_iterator i = m_parseStack.begin(); i != m_parseStack.end(); ++i)
-			{
-				result &= (*i)->finite();
-			}
-			return result;
-		}
-	};
-
-	class parseState_char: public parseState
-	{
-		utf32::value_type	m_char;
-
-	public:
-		explicit parseState_char(utf32::value_type c) : m_char(c){}
-		virtual pair<utf32::const_reverse_iterator,utf32::const_reverse_iterator> 
-		findRange(utf32::const_reverse_iterator rbegin,utf32::const_reverse_iterator rend) throw()
-		{
-			for (utf32::const_reverse_iterator i = rbegin; i != rend; ++i)
-			{
-				if ((*i) == m_char)
-				{
-					return make_pair(i, i + 1);
-				}
-			}
-			return make_pair(rend,rend);
-		}
-
-		virtual utf8 describe() const throw() 
-		{
-			utf32 u32; u32.push_back(m_char);
-			return u32.toUtf8();
-		}
-
-		virtual bool finite() const throw() { return true; }
-	};
-
-	class parseState_stringSymbol: public parseState
-	{
-		utf8	m_symbolName; // can be empty for any string
-		utf32	m_value;
-
-	public:
-		parseState_stringSymbol() throw(){}
-		explicit parseState_stringSymbol(const string &s) throw() : m_symbolName(s){}
-		~parseState_stringSymbol() throw(){}
-		void reset() throw() { m_value.clear(); }
-		void setFromRange(utf32::const_reverse_iterator rbegin,utf32::const_reverse_iterator rend) throw()
-		{
-			if (!m_symbolName.empty())
-			{
-				m_value.clear();
-				m_value.insert(m_value.begin(),rbegin,rend);
-				reverse(m_value.begin(),m_value.end());
-				m_value = stripWhitespace(m_value);
-			}
-		}
-
-		virtual void reportValue(tokenMap_t &tm) const throw() 
-		{
-			if (!m_symbolName.empty() && !m_value.empty())
-			{
-				tm[m_symbolName] = m_value.toUtf8();
-			}
-		}
-
-		virtual utf8 describe() const throw()
-		{
-			if (m_symbolName.empty()) return utf8("*");
-			return utf8("%") + m_symbolName;
-		}
-	};
-
-	class parseState_digits: public parseState
-	{
-	public:
-		parseState_digits() throw(){}
-		virtual range_t findRange(range_e rbegin,range_e rend) throw()
-		{
-			range_t result(make_pair(rend,rend));
-
-			bool got_start = false;
-			for (utf32::const_reverse_iterator i = rbegin; i != rend; ++i)
-			{
-				if (uniString::is_a_number(*i))
-				{
-					if (!got_start)
-					{
-						got_start = true;
-						result.first = i;
-					}
-				}
-				else
-				{
-					if (got_start)
-					{
-						result.second = i;
-						return result;
-					}
-				}
-			}
-			return result;
-		}
-
-		virtual utf8 describe() const throw() { return utf8("%#"); }
-	};
-
-	class parseState_year: public parseState
-	{
-		utf32 m_value;
-
-	public:
-		parseState_year() throw(){}
-		~parseState_year() throw(){}
-		void reset() throw() { m_value.clear(); }
-		virtual pair<utf32::const_reverse_iterator,utf32::const_reverse_iterator> 
-		findRange(utf32::const_reverse_iterator rbegin,utf32::const_reverse_iterator rend) throw()
-		{
-			int count = 4;
-
-			pair<utf32::const_reverse_iterator,utf32::const_reverse_iterator> result(make_pair(rend,rend));
-
-			bool got_start = false;
-			for (utf32::const_reverse_iterator i = rbegin; i != rend; ++i)
-			{
-				if (uniString::is_a_number(*i))
-				{
-					if (!got_start)
-					{
-						got_start = true;
-						result.first = i;
-					}
-					count -= 1;
-					if (count == 0)
-					{
-						result.second = ++i;
-						return result;
-					}
-				}
-				else
-				{
-					if (got_start)
-					{
-						got_start = false;
-						result.first = rend;
-					}
-				}
-			}
-			return make_pair(rend,rend);
-		}
-
-		void setFromRange(utf32::const_reverse_iterator rbegin,utf32::const_reverse_iterator rend) throw()
-		{
-			m_value.clear();
-			m_value.insert(m_value.begin(),rbegin,rend);
-			reverse(m_value.begin(),m_value.end());
-		}
-
-		virtual void reportValue(tokenMap_t &tm) const throw() 
-		{
-			if (!m_value.empty())
-			{
-				tm[utf8(metadata::YEAR())] = m_value.toUtf8();
-			}
-		}
-
-		virtual utf8 describe() const throw() { return utf8("%YEAR"); }
-		virtual bool finite() const throw() { return true; }
-	};
-
-	class parseState_fixed: public parseState
-	{
-		utf32 m_value;
-
-	public:
-		// fixed string
-		explicit parseState_fixed(const utf32 &val) throw() : m_value(val) {}
-		~parseState_fixed() throw(){}
-
-		virtual pair<utf32::const_reverse_iterator,utf32::const_reverse_iterator> 
-		findRange(utf32::const_reverse_iterator rbegin,utf32::const_reverse_iterator rend) throw()
-		{
-			assert(!m_value.empty());
-			if (m_value.empty()) return make_pair(rend,rend);
-
-			for (utf32::const_reverse_iterator i = rbegin; i != rend; ++i)
-			{
-				if ((*i) == (*(m_value.rbegin())))
-				{
-					utf32::const_reverse_iterator t_i = i;
-					utf32::const_reverse_iterator v_i = m_value.rbegin();
-					utf32::const_reverse_iterator v_i_end = m_value.rend();
-					bool match(true);
-					for (; match && (v_i != v_i_end); ++t_i, ++v_i)
-					{
-						if ((t_i == rend) || ((*t_i) != (*v_i)))
-						{
-							match = false;
-						}
-					}
-					if (match)
-					{
-						return make_pair(i, i + m_value.size());
-					}
-				}
-			}
-			return make_pair(rend,rend);
-		}
-
-		virtual utf8 describe() const throw() 
-		{
-			return m_value.toUtf8();
-		}
-
-		virtual bool finite() const throw() { return true; }
-	};
-
-	static string stringify(utf32::value_type v) throw()
-	{
-		if (v >= '0' && v <= 'z') return string(1,(string::value_type)v);
-		return tos((int)v);
-	}
-
-public:
-
-	impl(){}
-	~impl() throw() 
-	{ 
-		clearparseStack(); 
-	}
-
-	void deleteToken(const utf8 &token) throw()
-	{
-		tokenMap_t::iterator i = m_tokens.find(token);
-		if (i != m_tokens.end()) m_tokens.erase(i);
-	}
-
-	const tokenMap_t::size_type countTokens() const throw()		{ return m_tokens.size(); }
-	utf8& operator[](const utf8 &key) throw()		{ return m_tokens[key]; }
-	const map<utf8,utf8>& getTokens() const throw()	{ return m_tokens; }
-
-	void setPattern(const utf8 &pattern) throw(runtime_error)
-	{
-		parseState_optional *opt = 0;
-		parseStack_t *stack = &m_parseStack;
-
-		try
-		{
-			utf32 fixedAccumulator; // fixed string value
-
-			#define DUMPACCUMULATOR	{ if (!fixedAccumulator.empty()) { stack->push_back(new parseState_fixed(fixedAccumulator)); fixedAccumulator.clear(); } }
-
-			clearparseStack();
-			m_pattern.assign(pattern);
-			for (utf32::const_iterator i = m_pattern.begin(); i != m_pattern.end(); ++i)
-			{
-				if ((*i) == ']')
-				{
-					DUMPACCUMULATOR
-					if (!opt) throw runtime_error("Unmatched ']' in pattern");
-					stack = &m_parseStack;
-					stack->push_back(opt);
-					opt = 0;
-				}
-				else if ((*i) == '[')
-				{
-					DUMPACCUMULATOR
-					if (opt) throw runtime_error("Optional sequences cannot be nested in pattern");
-					opt = new parseState_optional;
-					stack = opt->stack();
-				}
-				else if ((*i) == '%')
-				{
-					++i;
-					if (i == m_pattern.end()) throw runtime_error("Bad pattern. Trailing %");
-					switch (*i)
-					{
-						case 'N':	DUMPACCUMULATOR stack->push_back(new parseState_stringSymbol(metadata::NAME()));	break;
-						case 'G':	DUMPACCUMULATOR stack->push_back(new parseState_stringSymbol(metadata::GENRE()));	break;
-						case 'A':	DUMPACCUMULATOR stack->push_back(new parseState_stringSymbol(metadata::ALBUM()));	break;
-						case 'R':	DUMPACCUMULATOR stack->push_back(new parseState_stringSymbol(metadata::ARTIST()));break;
-						case 'Y':	DUMPACCUMULATOR stack->push_back(new parseState_year);					break;
-						case '#':	DUMPACCUMULATOR stack->push_back(new parseState_digits);				break;
-						case '%':	fixedAccumulator.push_back('%'); break;
-						default:	throw runtime_error("Unknown symbol %" + stringify(*i));
-					}
-				}
-				else if ((*i) == '*')
-				{
-					DUMPACCUMULATOR
-					stack->push_back(new parseState_stringSymbol);
-				}
-				else
-				{
-					fixedAccumulator.push_back(*i);
-				}
-			}
-			if (opt)
-			{
-				throw runtime_error("Unterminated optional sequence in pattern");
-			}
-			DUMPACCUMULATOR
-		}
-		catch(...)
-		{
-			delete opt;
-			throw;
-		}
-	}
-
-	static utf8 describeStackRange(parseStack_t::const_reverse_iterator begin,parseStack_t::const_reverse_iterator end) throw()
-	{
-		parseStack_t stck(begin,end);
-		reverse(stck.begin(),stck.end());
-		utf8 result;
-		for (parseStack_t::const_iterator i = stck.begin(); i != stck.end(); ++i)
-		{
-			result = result + (*i)->describe();
-		}
-		return result;
-	}
-
-	static utf8 describeRemainingData(utf32::const_reverse_iterator begin,utf32::const_reverse_iterator end) throw()
-	{
-		utf32 u32(begin,end);
-		reverse(u32.begin(),u32.end());
-		return u32.toUtf8();
-	}
-
-	void parse(const utf8 &data) throw(runtime_error)
-	{
-		m_data.assign(data);
-
-		// beginning and end of data string
-		utf32::const_reverse_iterator data_start = m_data.rbegin();
-		utf32::const_reverse_iterator data_end = m_data.rend();
-
-		// current and next object pointers from the parse stack
-		parseStack_t::reverse_iterator s_cur = m_parseStack.rbegin();
-		parseStack_t::reverse_iterator s_nxt = s_cur;
-		++s_nxt;
-
-		while(s_cur != m_parseStack.rend())
-		{
-			// if we haven't finished the parse stack, and we're out of data then it's an error
-			if (data_start == data_end)
-			{
-				throw runtime_error("Premature end of data (" + describeStackRange(s_cur,m_parseStack.rend()).hideAsString() + ")");
-			}
-
-			// we do one lookahead. Get the range match for the current parse object and
-			// the next parse object. Note that there is some added complexity due to optional objects
-			pair<utf32::const_reverse_iterator,utf32::const_reverse_iterator> curR(make_pair(data_end,data_end));
-			pair<utf32::const_reverse_iterator,utf32::const_reverse_iterator> nxtR(make_pair(data_end,data_end));
-
-			// find widest possible match for current state
-			curR = (*s_cur)->findRange(data_start,data_end);
-
-			// if no match, and the object is optional, just move on to the next (continue)
-			if ((curR.first == data_end) && (*s_cur)->optional())
-			{
-				s_cur = s_nxt;
-				if (s_nxt != m_parseStack.rend())
-				{
-					++s_nxt;
-				}
-				continue;
-			}
-
-			// if no match, but object is not optional, then we have an error
-			if (curR.first == data_end)
-			{
-				throw runtime_error("Parse error, symbol not found (" + describeStackRange(s_cur,m_parseStack.rend()).hideAsString() + ") (" + describeRemainingData(data_start,data_end).hideAsString() + ")");
-			}
-
-			// if match was not found at our current starting point, then we have an error
-			if (curR.first != data_start)
-			{
-				throw runtime_error("Parse error, data skipped to find symbol (" + describeStackRange(s_cur,m_parseStack.rend()).hideAsString() + ") (" + describeRemainingData(data_start,data_end).hideAsString() + ")");
-			}
-
-			// restrict match range by one lookahead. Do not do lookahead
-			// if our current state is a single character match
-			if (!(*s_cur)->finite()) //curR.first + 1 != curR.second)
-			{
-				// we must loop in case the followup objects are optional and we must
-				// continue to look ahead
-				while (true)
-				{
-					if (s_nxt == m_parseStack.rend()) break;
-					// to handle the case of two optional string elements in a row, we
-					// repeat this if the range of the current and follow up objects match by
-					// incrementing the start
-					nxtR = (*s_nxt)->findRange(data_start,data_end);
-					if ((nxtR.first == curR.first) && (!(*s_nxt)->finite()))
-					{
-						nxtR = (*s_nxt)->findRange(data_start+1,data_end);
-					}
-					if (nxtR.first < curR.second)
-					{
-						// lookahead object restricts range
-						curR.second = nxtR.first;
-						break;
-					}
-					if ((nxtR.first == data_end) && (nxtR.second == data_end) && (*s_nxt)->optional())
-					{
-						// lookahead object not found and is optional. try the next
-						++s_nxt;
-					}
-					else
-					{
-						// no restriction
-						break;
-					}
-				}
-			}
-
-			// set value and advance to next parse object
-			(*s_cur)->setFromRange(curR.first,curR.second);
-			s_cur = s_nxt;
-			if (s_nxt != m_parseStack.rend())
-			{
-				++s_nxt;
-			}
-			data_start = curR.second;
-		}
-		if (data_start != data_end)
-		{
-			throw runtime_error("Data extends beyond pattern (" + describeRemainingData(data_start,data_end).hideAsString() + ")");		
-		}
-
-		m_tokens.clear();
-		for (parseStack_t::const_iterator i = m_parseStack.begin(); i != m_parseStack.end(); ++i)
-		{
-			(*i)->reportValue(m_tokens);
-		}
-	}
-};
-
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-filenameMetadata::filenameMetadata(): m_impl(0)
-{
-	m_impl = new filenameMetadata::impl;
-}
-
-filenameMetadata::~filenameMetadata() throw()
-{
-	forget(m_impl);
-}
-
-void filenameMetadata::setPattern(const utf8 &pattern) throw(exception)
-{
-	assert(m_impl);
-	if (!m_impl) throw logic_error(string(__FUNCTION__) + " internal impl object is null");
-	m_impl->setPattern(pattern);
-}
-
-void filenameMetadata::parse(const utf8 &data) throw(exception)
-{
-	assert(m_impl);
-	if (!m_impl) throw logic_error(string(__FUNCTION__) + " internal impl object is null");
-	m_impl->parse(data);
-}
-
-void filenameMetadata::deleteToken(const utf8 &token) throw(exception)
-{
-	assert(m_impl);
-	if (!m_impl) throw logic_error(string(__FUNCTION__) + " internal impl object is null");
-	m_impl->deleteToken(token);
-}
-
-const size_t filenameMetadata::countTokens() throw(exception)
-{
-	assert(m_impl);
-	if (!m_impl) throw logic_error(string(__FUNCTION__) + " internal impl object is null");
-	return m_impl->countTokens();
-}
-
-utf8& filenameMetadata::operator[](const utf8 &key) throw(exception)
-{
-	assert(m_impl);
-	if (!m_impl) throw logic_error(string(__FUNCTION__) + " internal impl object is null");
-	return m_impl->operator[](key);
-}
-
-const map<utf8,utf8>& filenameMetadata::getTokens() const throw(exception)
-{
-	assert(m_impl);
-	if (!m_impl) throw logic_error(string(__FUNCTION__) + " internal impl object is null");
-	return m_impl->getTokens();
-}
diff --git a/Src/Plugins/DSP/sc_serv3/filenameMetadata.h b/Src/Plugins/DSP/sc_serv3/filenameMetadata.h
deleted file mode 100644
index 4b23f4cc..00000000
--- a/Src/Plugins/DSP/sc_serv3/filenameMetadata.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef filenameMetadata_H_
-#define filenameMetadata_H_
-
-#include "unicode/uniString.h"
-#include <stdexcept>
-#include <map>
-
-class filenameMetadata
-{
-	class impl;
-	impl *m_impl;
-
-public:
-	filenameMetadata();
-	~filenameMetadata() throw();
-
-	void setPattern(const uniString::utf8 &pattern) throw(std::exception);
-	void parse(const uniString::utf8 &data) throw(std::exception);
-	void deleteToken(const uniString::utf8 &token) throw(std::exception);
-	const size_t countTokens() throw(std::exception);
-	uniString::utf8& operator[](const uniString::utf8 &key) throw(std::exception);
-	const std::map<uniString::utf8,uniString::utf8>& getTokens() const throw(std::exception);
-};
-	
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/global.cpp b/Src/Plugins/DSP/sc_serv3/global.cpp
deleted file mode 100644
index 8671e227..00000000
--- a/Src/Plugins/DSP/sc_serv3/global.cpp
+++ /dev/null
@@ -1,1177 +0,0 @@
-#ifdef _WIN32
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0601
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "global.h"
-#include "aolxml/aolxml.h"
-#include "threadedRunner.h"
-#include "w3cLog.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-#ifndef _WIN32
-#include <sys/time.h>
-#endif
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-config gOptions;
-
-unsigned char appname_tmpbuf[] =
-{
-	(unsigned char)~'B', (unsigned char)~'a', (unsigned char)~'n', (unsigned char)~'a', (unsigned char)~'n', (unsigned char)~'a', (unsigned char)~'r', (unsigned char)~'a', (unsigned char)~'m', (unsigned char)~'a', 255, 0,
-};
-
-void tealike_crappy_code(unsigned long v[2], unsigned long k[4])
-{
-	unsigned long y = v[0], z = v[1], sum = 0,    /* set up */
-	              delta = 0x9e3779b9UL, n = 32 ;  /* key schedule constant*/
-
-	while (n-- > 0)
-	{
-		/* basic cycle start */
-		sum += delta;
-		y += ((z << 4) + k[0]) ^(z + sum) ^((z >> 5) + k[1]);
-		z += ((y << 4) + k[2]) ^(y + sum) ^((y >> 5) + k[3]);   /* end cycle */
-	}
-	v[0] = y; v[1] = z;
-}
-
-const utf8 bob()
-{
-	static utf8 _bob;
-	if (_bob.empty())
-	{
-		char* app_name = (char*)appname_tmpbuf;
-		tealike_crappy_code((unsigned long *)(app_name += 12), (unsigned long *)appname_tmpbuf);
-		for (int x = 0; x < 12; x ++)
-		{
-			appname_tmpbuf[x] ^= 255;
-		}
-		app_name -= 12;
-		_bob = app_name;
-	}
-	return _bob;
-}
-
-static int gs_kill = false;
-static int gs_postSetup = false;
-
-const int iskilled() throw() { return gs_kill; }
-void setkill(int v) throw()
-{
-	gs_kill = v;
-	threadedRunner::wakeup();
-}
-
-const int isPostSetup() throw() { return gs_postSetup; }
-void setPostSetup(int v) throw() { gs_postSetup = v; }
-
-utf8 MSG_ICY_HTTP401;
-utf8 MSG_ICY200;
-utf8 MSG_ICY_HTTP200;
-utf8 MSG_UVOX_HTTP200;
-
-int MSG_ICY_HTTP401_LEN;
-
-const utf8::value_type* MSG_INVALIDPASSWORD = (const utf8::value_type*)"Invalid Password\r\n";
-const int MSG_INVALIDPASSWORD_LEN = (int)strlen(MSG_INVALIDPASSWORD);
-
-const utf8::value_type* MSG_VALIDPASSWORD = (const utf8::value_type*)"OK2\r\nicy-caps:11\r\n\r\n";
-const int MSG_VALIDPASSWORD_LEN = (int)strlen(MSG_VALIDPASSWORD);
-
-const utf8::value_type* MSG_HTTP_VALIDPASSWORD = (const utf8::value_type*)"HTTP/1.1 200 OK\r\n\r\n";
-const int MSG_HTTP_VALIDPASSWORD_LEN = (int)strlen(MSG_VALIDPASSWORD);
-
-const utf8::value_type* MSG_STREAMMOVED = (const utf8::value_type*)"Stream Moved\r\n";
-const int MSG_STREAMMOVED_LEN = (int)strlen(MSG_STREAMMOVED);
-
-const utf8::value_type* MSG_BADSTREAMID = (const utf8::value_type*)"Bad Stream ID\r\n";
-const int MSG_BADSTREAMID_LEN = (int)strlen(MSG_BADSTREAMID);
-
-const utf8::value_type* MSG_STREAMINUSE = (const utf8::value_type*)"Stream In Use\r\n";
-const int MSG_STREAMINUSE_LEN = (int)strlen(MSG_STREAMINUSE);
-
-const utf8::value_type* MSG_200 = (const utf8::value_type*)"HTTP/1.1 200 OK\r\nConnection:close\r\n\r\n";
-
-const utf8::value_type* MSG_NO_CLOSE_200 = (const utf8::value_type*)"HTTP/1.1 200 OK\r\n"
-															  "Content-Type:text/html;charset=utf-8\r\n";
-
-const utf8::value_type* MSG_STD200 = (const utf8::value_type*)"HTTP/1.1 200 OK\r\n"
-															  "Content-Type:text/html;charset=utf-8\r\n"
-															  "Connection:close\r\n\r\n";
-
-const utf8::value_type* MSG_HTTP400 = (const utf8::value_type*)("HTTP/1.1 400 Bad Request\r\nConnection:close\r\n\r\n");
-
-const utf8::value_type* MSG_AUTHFAILURE401 = (const utf8::value_type*)
-						("HTTP/1.1 401 Unauthorized\r\n"
-						 "Connection:close\r\n"
-						 "Server:Shoutcast DNAS\r\n"
-						 "WWW-authenticate:basic realm=\"Shoutcast Server\"\r\n"
-						 "Content-type:text/html;charset=utf-8\r\n\r\n");
-
-const utf8::value_type* MSG_HTTP403 = (const utf8::value_type*)("HTTP/1.1 403 Service Forbidden\r\nConnection:close\r\n\r\n");
-
-const utf8::value_type* MSG_HTTP404 = (const utf8::value_type*)("HTTP/1.1 404 Not Found\r\nConnection:close\r\n\r\n");
-const int MSG_HTTP404_LEN = (int)strlen(MSG_HTTP404);
-
-const utf8::value_type* MSG_HTTP405 = (const utf8::value_type*)("HTTP/1.1 405 Method Not Allowed\r\nAllow:GET\r\nConnection:close\r\n\r\n");
-
-const utf8::value_type* MSG_HTTP503 = (const utf8::value_type*)("HTTP/1.1 503 Server limit reached\r\nConnection:close\r\n\r\n");
-const int MSG_HTTP503_LEN = (int)strlen(MSG_HTTP503);
-
-void constructMessageResponses()
-{
-	MSG_ICY_HTTP200 = utf8("HTTP/1.0 200 OK\r\n"
-						   "icy-notice1:<BR>This stream requires "
-						   "<a href=\"http://www.winamp.com\">Winamp</a><BR>\r\n"
-						   "icy-notice2:Shoutcast DNAS/" SERV_OSNAME " v" +
-						   gOptions.getVersionBuildStrings() + "<BR>\r\n"
-						   "Accept-Ranges:none\r\n"
-						   "Access-Control-Allow-Origin:*\r\n"
-						   "Cache-Control:no-cache,no-store,must-revalidate,max-age=0\r\n"
-						   "Connection:close\r\n");
-
-	MSG_UVOX_HTTP200 = utf8("HTTP/1.0 200 OK\r\n"
-							"Accept-Ranges:none\r\n"
-							"Access-Control-Allow-Origin:*\r\n"
-							"Cache-Control:no-cache,no-store,must-revalidate,max-age=0\r\n"
-							"Connection:close\r\n"
-							"Server:Ultravox/2.1 Shoutcast v" + gOptions.getVersionBuildStrings() + "/" SERV_OSNAME"\r\n" +
-							"Content-Type:misc/ultravox\r\n");
-
-	// this is only used for WMP which won't play the stream correctly when the in-stream
-	// metadata is being provided and we use the now standard HTTP response (added 2.4.3)
-	MSG_ICY200 = utf8("ICY 200 OK\r\n"
-					  "icy-notice1:<BR>This stream requires "
-					  "<a href=\"http://www.winamp.com\">Winamp</a><BR>\r\n"
-					  "icy-notice2:Shoutcast DNAS/" SERV_OSNAME " v" +
-					  gOptions.getVersionBuildStrings() + "<BR>\r\n"
-					  "Connection:close\r\n");
-
-	MSG_ICY_HTTP401 = utf8("HTTP/1.0 401 Unauthorized\r\n"	// Service Unavailable
-						   "icy-notice1:<BR>Shoutcast DNAS/" SERV_OSNAME " v" +
-						   gOptions.getVersionBuildStrings() + "<BR>\r\n"
-						   "icy-notice2:The resource requested is currently unavailable<BR>\r\n"
-						   "Connection:close\r\n\r\n");
-	MSG_ICY_HTTP401_LEN = (int)MSG_ICY_HTTP401.size();
-}
-
-utf8 g_userAgentBase = "Ultravox/2.1 ""Shoutcast Server "/**/; // user agent for sc_serv2
-															   // comment out for testing
-utf8 g_userAgent;
-time_t g_upTime = 0;
-
-const bool isUserAgentRelay(const utf8 &user_agent) throw()
-{
-	if (!user_agent.empty())
-	{
-		return ((user_agent.find(utf8("shoutcast")) != utf8::npos) &&
-				(user_agent != utf8("shoutcast directory tester")) &&
-				(user_agent != utf8("relay")) &&
-				(user_agent != utf8("icecast")));
-	}
-	return false;
-}
-
-const bool isUserAgentOfficial(const utf8 &user_agent) throw()
-{
-	if (!user_agent.empty())
-	{
-		return ((user_agent == utf8("shoutcast directory tester")) ||
-				(user_agent.find(utf8("shoutcast-to-dnas message sender")) == 0));
-	}
-	return false;
-}
-
-const utf8 redirect(const utf8 &url, const bool compress) throw()
-{
-	utf8 header = "HTTP/1.1 302 Found\r\n"
-				  "Content-Type:text/html;charset=utf-8\r\n"
-				  "Location:" + url + "\r\n";
-	utf8 body = "<html><head><title>Redirect</title>"
-				"</head><body>Click <a href=\"/" + url + "\">here</a> for redirect.</body>"
-				"</html>";
-	if (compress && compressData(body))
-	{
-		header += "Content-Encoding:gzip\r\n";
-	}
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	return header + body;
-}
-
-const utf8 urlLink(const utf8 &url, const utf8 &text, const bool embed) throw()
-{
-	// so the pages have a better chance of wrapping
-	// we'll attempt to insert <wbr> to give a hint.
-	utf8 wbrUrl = stripHTTPprefix((!text.empty() ? text : url)), fixedUrl;
-	vector<utf8> parts = tokenizer(wbrUrl, '/');
-	for (vector<utf8>::const_iterator i = parts.begin(); i != parts.end(); ++i)
-	{
-		fixedUrl += (i == parts.begin() ? "" : "/<wbr>") + aolxml::escapeXML((*i));
-	}
-
-	wbrUrl.clear();
-	parts = tokenizer(fixedUrl, '.');
-	for (vector<utf8>::const_iterator i = parts.begin(); i != parts.end(); ++i)
-	{
-		wbrUrl += (i == parts.begin() ? "" : ".<wbr>") + (*i);
-	}
-
-	return "<a target=" + (embed ? "\\" : (utf8)"") + "\"_blank" +
-		   (embed ? "\\" : "") + "\" href=" + (embed ? "\\" : "") + "\"" +
-		   utf8((url.find(utf8("://")) == utf8::npos) ? "http://" : "") +
-		   url + (embed ? "\\" : "") + "\">" + wbrUrl + "</a>";
-}
-
-const utf8 http302(const utf8 &url) throw()
-{
-	return "HTTP/1.1 302 Found\r\n"
-		   "Content-Type:text/html;charset=utf-8\r\n"
-		   "Location:" + url + "\r\n\r\n"
-		   "<html><head><title>Redirect</title></head><body>Click <a href=\"" + url + "\">HERE</a> for redirect.</body></html>";
-}
-
-const utf8 addWBR(const utf8 &str) throw()
-{
-	if (!str.empty())
-	{
-		// this allows browsers to word break the string on small displays
-		// and is aimed for user agent strings, hence / and ( to break on
-		utf8 wbrIdent, fixedIdent;
-		vector<utf8> parts = tokenizer(str, '/');
-		for (vector<utf8>::const_iterator i = parts.begin(); i != parts.end(); ++i)
-		{
-			wbrIdent += (i == parts.begin() ? "" : "/<wbr>") + aolxml::escapeXML((*i));
-		}
-
-		parts = tokenizer(wbrIdent, '(');
-		for (vector<utf8>::const_iterator i = parts.begin(); i != parts.end(); ++i)
-		{
-			fixedIdent += (i == parts.begin() ? "" : "(<wbr>") + (*i);
-		}
-
-		return fixedIdent;
-	}
-	return str;
-}
-
-utf8 getfooterStr()
-{
-	return "</body></html>";
-}
-
-const utf8 randomId(utf8 &temp)
-{
-	temp.clear();
-
-	// construct a secondary temp id for this
-	// action for use after the check happened
-	for (int i = 0; i < 8; i++)
-	{
-		temp.append(utf8(tos(rand() % 10)));
-	}
-	return temp;
-}
-
-utf8 getStreamListeners(const size_t sid, const bool nowrap, const int fh)
-{
-	return "<script type=\"text/javascript\">" EL
-		   "function $(id){return document.getElementById(id);}" EL
-		   "var registerOnWindowLoad=function(callback){" EL
-		   "if(window.addEventListener){" EL
-		   "window.addEventListener('load',callback,false);" EL
-		   "}else{" EL
-		   "window.attachEvent('onload',callback);" EL
-		   "}" EL
-		   "};" EL
-		   "function getHTTP(){" EL
-		   "if(window.XDomainRequest){" EL
-		   "return new XDomainRequest();" EL
-		   "}else if(window.XMLHttpRequest){" EL
-		   "return new XMLHttpRequest();" EL
-		   "}else{" EL
-		   "return new ActiveXObject(\"Microsoft.XMLHTTP\");" EL
-		   "}" EL
-		   "}" EL
-		   "function getListeners(){" EL
-		   "var xmlhttp = getHTTP();" EL
-		   "try{" EL
-		   "xmlhttp.open(\"GET\",\"admin.cgi?sid="+tos(sid)+"&mode=listeners&server="+randomId(listenerId)+"&nw="+tos(nowrap)+"&fh="+tos(fh)+"\",true);" EL
-		   "if(window.XDomainRequest){" EL
-		   "xmlhttp.onload=function(){$('listeners').innerHTML=xmlhttp.responseText;};" EL
-		   "xmlhttp.onerror=function(){$('listeners').innerHTML=xmlhttp.responseText;};" EL
-		   "}else{" EL
-		   "xmlhttp.onreadystatechange=function(){$('listeners').innerHTML=xmlhttp.responseText;};" EL
-		   "}" EL
-		   "xmlhttp.send(null);" EL
-		   "}" EL
-		   "catch(e){" EL
-		   "$('listeners').innerHTML=e;" EL
-		   "}" EL
-		   "}" EL
-		   "registerOnWindowLoad(getListeners());" EL
-		   "</script>";
-}
-
-utf8 getHTML5Remover()
-{
-	return "<script type=\"text/javascript\">" EL
-		   "var registerOnWindowLoad=function(callback){" EL
-		   "if(window.addEventListener){" EL
-		   "window.addEventListener('load',callback,false);" EL
-		   "}else{" EL
-		   "window.attachEvent('onload',callback);" EL
-		   "}" EL
-		   "};" EL
-		   "registerOnWindowLoad(function(){" EL
-		   "var audio=document.getElementsByTagName(\"audio\");" EL
-		   "if(audio.length){" EL
-		   "var canPlay = !!audio[0].canPlayType && audio[0].canPlayType('audio/mpeg; codecs=\"mp3\"') != \"\";" EL
-		   "if(!canPlay){" EL
-		   "for(var i=audio.length-1;i>=0;i--){" EL
-		   "var parent = audio[i].parentNode;" EL
-		   "parent.removeChild(audio[i]);" EL
-		   "var parent2 = parent.parentNode;" EL
-		   "parent2.removeChild(parent);" EL
-		   "}" EL
-		   "}" EL
-		   "}" EL
-		   "});" EL
-		   "</script>";
-}
-
-utf8 getIEFlexFix()
-{
-	return "<script type=\"text/javascript\">" EL
-		   "function $(id){return document.getElementById(id);}" EL
-		   "var registerOnWindowLoad=function(callback){" EL
-		   "if(window.addEventListener){" EL
-		   "window.addEventListener('load',callback,false);" EL
-		   "}else{" EL
-		   "window.attachEvent('onload',callback);" EL
-		   "}" EL
-		   "};" EL
-		   "registerOnWindowLoad(function(){" EL
-		   "if(navigator.userAgent.match(/msie|trident/i)){" EL
-  		   "$('hdrbox').style.display = 'block';" EL
-		   "}" EL
-		   "});" EL
-		   "</script>";
-}
-
-utf8 g_IPAddressForClients;		// address clients will connect to
-u_short g_portForClients = 0;	// port clients will connect to, generally portBase
-int g_legacyPort = -1;			// port legacy v1 sources will connect to, or not
-
-// attempt to compress everything in one go though
-// only use if its smaller than the original data.
-const bool compressData(utf8 &body)
-{
-	if (!body.empty())
-	{
-		z_stream stream = {0};
-
-		const uInt size = (uInt)body.size();
-		stream.next_in = (Bytef*)body.data();
-		stream.avail_in = size;
-
-		char *m_outMsg = new char[size * 2];
-		stream.next_out = (Bytef*)m_outMsg;
-		stream.avail_out = size * 2;
-
-		// set windowBits to 31 to allow gzip encoded output
-		if (deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 31, 8, Z_DEFAULT_STRATEGY) == Z_OK)
-		{
-			int ret = deflate(&stream, Z_FINISH);
-			deflateEnd(&stream);
-			if (ret == Z_STREAM_END)
-			{
-				// if it's bigger than we started with then there's no
-				// sensible reason to return the compressed data block
-				if (stream.total_out < size)
-				{
-					body = utf8(m_outMsg, stream.total_out);
-					delete [] m_outMsg;
-					return true;
-				}
-			}
-		}
-		delete [] m_outMsg;
-	}
-	return false;
-}
-
-const bool compressDataStart(utf8 &body, z_stream *stream, Bytef* name, const bool local)
-{
-	if (!stream || body.empty())
-	{
-		return false;
-	}
-
-    stream->zalloc = Z_NULL;
-    stream->zfree = Z_NULL;
-    stream->opaque = Z_NULL;
-
-	// set windowBits to 31 to allow gzip encoded output
-	if (deflateInit2(stream, (local ? Z_BEST_COMPRESSION : Z_DEFAULT_COMPRESSION), Z_DEFLATED, 31, 8, Z_DEFAULT_STRATEGY) != Z_OK)
-	{
-        return false;
-	}
-
-	if (local)
-	{
-		gz_header head = {0};
-		head.text = 1;
-		head.name = head.comment = name;
-		head.time = (uLong)::time(NULL);
-		deflateSetHeader(stream, &head);
-	}
-
-	return (compressDataCont(body, stream) != 0);
-}
-
-const int compressDataCont(utf8 &body, z_stream *stream)
-{
-	#define CHUNK 1024
-	static utf8 body2;
-	body2.clear();
-	static unsigned char out[CHUNK] = {0};
-	int ret = Z_OK;
-	uInt start = (uInt)body.size(), have = 0, pos = 0;
-
-    do
-	{
-		if (start - pos > 0)
-		{
-			if (have == 0)
-			{
-				stream->next_in = (Bytef*)body.data();
-				pos += (stream->avail_in = min(CHUNK, (int)start));
-				have = start - stream->avail_in;
-			}
-			else
-			{
-				stream->next_in = (Bytef*)&body[pos];
-				pos += (stream->avail_in = min(CHUNK, (int)have));
-				have = have - stream->avail_in;
-			}
-		}
-
-        do
-		{
-            stream->avail_out = CHUNK;
-            stream->next_out = out;
-			ret = deflate(stream, Z_PARTIAL_FLUSH);
-			body2 += utf8(out, (CHUNK - stream->avail_out));
-			if (!stream->avail_in)
-			{
-				break;
-			}
-        } while (stream->avail_out == 0);
-	} while (ret != Z_BUF_ERROR);
-
-	if (!body2.empty())
-	{
-		body = body2;
-	}
-	return stream->total_out;
-}
-
-void compressDataFinish(utf8 &body, z_stream *stream)
-{
-	if (stream)
-	{
-		#define CHUNK 1024
-		static utf8 body2;
-		body2.clear();
-		static unsigned char out[CHUNK] = {0};
-		stream->avail_out = CHUNK;
-		stream->next_out = out;
-		deflate(stream, Z_FINISH);
-		body2 = utf8(out, (CHUNK - stream->avail_out));
-		if (!body2.empty())
-		{
-			body = body2;
-		}
-	}
-}
-
-const bool compressDataEnd(z_stream *stream)
-{
-	return (stream && (deflateEnd(stream) == Z_OK));
-}
-
-const utf8 loadLocalFile(uniFile::filenameType fn, const utf8& logPrefix, const size_t sizeLimit)
-{
-	utf8 body;
-	if (!fn.empty())
-	{
-		size_t fileSize = uniFile::fileSize(fn);
-		if (fileSize && (!sizeLimit || fileSize <= sizeLimit))
-		{
-			FILE *f = uniFile::fopen(fn, "rb");
-			if (f)
-			{
-				size_t alloc = fileSize + 1;
-				utf8::value_type *buf = new utf8::value_type[alloc];
-				memset(buf, 0, sizeof(utf8::value_type) * alloc);
-				::fread(buf, 1, fileSize, f);
-				::fclose(f);
-
-				body = utf8(buf,fileSize);
-				delete [] buf;
-			}
-		}
-		else if (fileSize)
-		{
-			WLOG(logPrefix + "Unable to load `" + fn + "' as it is over the allowed size limit (" + tos(sizeLimit) + " bytes)");
-		}
-	}
-	return body;
-}
-
-#ifdef _WIN32
-static const char *abb_weekdays[] = {
-    "Sun",
-    "Mon",
-    "Tue",
-    "Wed",
-    "Thu",
-    "Fri",
-    "Sat",
-    NULL
-};
-
-static const char *abb_month[] = {
-    "Jan",
-    "Feb",
-    "Mar",
-    "Apr",
-    "May",
-    "Jun",
-    "Jul",
-    "Aug",
-    "Sep",
-    "Oct",
-    "Nov",
-    "Dec",
-    NULL
-};
-
-/*
- * tm_year is relative this year 
- */
-const int tm_year_base = 1900;
-
-inline int match_string(const char **buf, const char **strs)
-{
-    for (int i = 0; (strs && strs[i] != NULL); ++i) {
-		size_t len = (strs && strs[i] ? strlen(strs[i]) : 0);
-		if (len && strncmp(*buf, strs[i], len) == 0) {
-			*buf += len;
-			return i;
-		}
-    }
-    return -1;
-}
-
-// stripped down version which only processes against '%a, %d %b %Y %H:%M:%S'
-// which is only used on the Windows builds as it's native for other targets
-char *strptime(const char *buf, const char *format, struct tm *timeptr)
-{
-    char c;
-
-    for (; (c = *format) != '\0'; ++format)
-	{
-		char *s = 0;
-
-		if (isspace (c))
-		{
-			while (isspace (*buf)) ++buf;
-		}
-		else if (c == '%' && format[1] != '\0')
-		{
-			int ret;
-			c = *++format;
-			if (c == 'E' || c == 'O') c = *++format;
-			switch (c)
-			{
-				case 'a':
-				{
-					ret = match_string (&buf, abb_weekdays);
-					if (ret < 0) return NULL;
-					timeptr->tm_wday = ret;
-					break;
-				}
-				case 'b':
-				{
-					ret = match_string (&buf, abb_month);
-					if (ret < 0) return NULL;
-					timeptr->tm_mon = ret;
-					break;
-				}
-				case 'd':
-				{
-					ret = strtol (buf, &s, 10);
-					if (s == buf) return NULL;
-					timeptr->tm_mday = ret;
-					buf = s;
-					break;
-				}
-				case 'H':
-				{
-					ret = strtol (buf, &s, 10);
-					if (s == buf) return NULL;
-					timeptr->tm_hour = ret;
-					buf = s;
-					break;
-				}
-				case 'M':
-				{
-					ret = strtol (buf, &s, 10);
-					if (s == buf) return NULL;
-					timeptr->tm_min = ret;
-					buf = s;
-					break;
-				}
-				case 'S':
-				{
-					ret = strtol (buf, &s, 10);
-					if (s == buf) return NULL;
-					timeptr->tm_sec = ret;
-					buf = s;
-					break;
-				}
-				case 'Y':
-				{
-					ret = strtol (buf, &s, 10);
-					if (s == buf) return NULL;
-					timeptr->tm_year = ret - tm_year_base;
-					buf = s;
-					break;
-				}
-				case '\0':
-				{
-					--format;
-					/* FALLTHROUGH */
-				}
-				case '%':
-				{
-					if (*buf == '%') ++buf;
-					else return NULL;
-					break;
-				}
-				default:
-				{
-					if (*buf == '%' || *++buf == c) ++buf;
-					else return NULL;
-					break;
-				}
-			}
-		}
-		else
-		{
-			if (*buf == c) ++buf;
-			else return NULL;
-		}
-    }
-    return (char *)buf;
-}
-#endif
-
-const time_t readRFCDate(const utf8& str)
-{
-	struct tm tmdate = {0};
-	if (strptime(str.toANSI().c_str(), "%a, %d %b %Y %H:%M:%S", &tmdate))
-	{
-		#ifdef _WIN32
-		return _mkgmtime(&tmdate);
-		#else
-		return timegm(&tmdate);
-		#endif
-	}
-	return 0;
-}
-
-const utf8 getRFCDate(const time_t use)
-{
-	char buf[1024] = {0};
-	const time_t now = ::time(NULL);
-	struct tm tm = *gmtime((use ? &use : &now));
-	const size_t size = strftime(buf, sizeof(buf), "%a, %d %b %Y %H:%M:%S GMT", &tm);
-	return (size > 0 ? utf8(buf, size) : (utf8)"");
-}
-
-const utf8 timeString(const time_t t, const bool slim) throw()
-{
-	__int64 sec = t;
-	__int64 min = sec / 60;
-	sec -= min * 60;
-	__int64 hours = min / 60;
-	min -= hours * 60;
-
-	if (slim)
-	{
-		char buf[24] = {0};
-		snprintf(buf, sizeof(buf), "%02lld:%02u:%02u", hours, (unsigned int)min, (unsigned int)sec);
-		return buf;
-	}
-	else
-	{
-		utf8 result;
-		__int64 days = hours / 24;
-		hours -= days * 24;
-		const __int64 years = days / 365;
-		days -= years * 365;
-
-		if (years) result += tos(years) + " year" + (years != 1 ? "s" : "") + " ";
-		if (days) result += tos(days) + " day" + (days != 1 ? "s" : "") + " ";
-		if (hours) result += tos(hours) + " hour" + (hours != 1 ? "s" : "") + " ";
-		if (min) result += tos(min) + " minute" + (min != 1 ? "s" : "") + " ";
-		if (sec) result += tos(sec) + " second" + (sec != 1 ? "s" : "");
-		return stripWhitespace(result);
-	}
-}
-
-class jsonEscapes: public map<char,std::string>
-{
-public:
-	jsonEscapes()
-	{  		
-		(*this)['\\'] = "\\\\";
-		(*this)['/'] = "\\/";
-		(*this)['\"'] = "\\\"";
-		(*this)['\b'] = "\\b";
-		(*this)['\f'] = "\\f";
-		(*this)['\n'] = "\\n";
-		(*this)['\r'] = "\\r";
-		(*this)['\t'] = "\\t";
-	}
-};
-
-static const jsonEscapes gsJSONEscapes;
-
-const utf8 escapeJSON(const utf8 &s) throw()
-{
-	string result;
-	const string::size_type siz = s.size();
-	for (string::size_type x = 0; x < siz; ++x)
-	{
-		jsonEscapes::const_iterator i = gsJSONEscapes.find(s[x]);
-		if (i != gsJSONEscapes.end())
-		{
-			result += (*i).second;
-		}
-		else
-		{
-			result += s[x];
-		}
-	}
-	return result;
-}
-
-void rotatew3cFiles(utf8 files)
-{
-	// w3c logging (global)
-	if (gOptions.w3cEnable())
-	{
-		if (files == "w3c" || files == "")
-		{
-			w3cLog::rotate_log(gOptions.w3cLog());
-		}
-	}
-
-	// w3c logging (per stream)
-	if (files == "w3c" || files == "")
-	{
-		config::streams_t streams;
-		gOptions.getStreamConfigs(streams);
-		for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-		{
-			if (gOptions.read_stream_w3cLog((*i).first))
-			{
-				w3cLog::rotate_log(gOptions.stream_w3cLog((*i).first),(*i).first);
-			}
-		}
-	}
-}
-
-utf8 &fixSongMetadata(utf8& metadata, int& trigger)
-{
-    utf8::size_type pos = metadata.find((unsigned char *)"Advert:", 0, 7);
-
-    if (pos == utf8::npos)
-        pos = metadata.find((unsigned char *)"Advert!", 0, 7);
-
-    if (!metadata.empty() && (pos == 0))
-    {
-        trigger = 1;
-
-        // got a first matching block
-        metadata.erase (0, 7);
-
-        // look for an end block
-        metadata = stripWhitespace(metadata);
-
-        // check for it being empty after stripping out non-alpha
-        // characters so we can show what is sent to the listener
-        if (stripAlphaDigit(metadata).empty())
-        {
-            metadata.clear();
-        }
-    }
-    return metadata;
-}
-
-const utf8 getCurrentSong(utf8 currentSong)
-{
-	int trigger = 0;
-	utf8 &song = fixSongMetadata(currentSong, trigger);
-	if (trigger)
-	{
-		if (song.empty())
-		{
-			song = "<i>" + utf8(trigger == 2 ? "Test " : "") + "Advert Trigger</i>";
-		}
-		else
-		{
-			song = "<i>" + utf8(trigger == 2 ? "Test " : "") + "Advert Trigger:&nbsp;&nbsp;</i>" + aolxml::escapeXML(song) + "</i>";
-		}
-	}
-	else
-	{
-		if (song.empty())
-		{
-			song = "<i>Empty Title</i>";
-		}
-		else
-		{
-			song = aolxml::escapeXML(song);
-		}
-	}
-
-	return song;
-}
-
-const utf8 stripHTTPprefix(const utf8& addr)
-{
-	if (!addr.empty())
-	{
-		utf8::size_type pos = addr.find(utf8("://"));
-		if (pos != utf8::npos)
-		{
-			return addr.substr(pos + 3);
-		}
-	}
-	return addr;
-}
-
-const bool isAddress(const utf8& addr)
-{
-	if (!addr.empty())
-	{
-		if (addr.find(utf8(".")) != utf8::npos)
-		{
-			return true;
-		}
-	}
-	return false;
-}
-
-const bool extractPassword(utf8 &dj_password, utf8 &dj_name, int &streamID)
-{
-	if (!dj_password.empty())
-	{
-		const vector<utf8> tokens = tokenizer(dj_password, ':');
-		// if 2 or 3 then we've got user:password or password:#sid or
-		// user:password:#sid so we need to check for which version
-		if (tokens.size() >= 2)
-		{
-			if (tokens[1].size() > 0)
-			{
-				// this is user:password:#sid or user:password
-				if (tokens[1].find(utf8("#")) != 0)
-				{
-					dj_password = tokens[1];
-					dj_name = tokens[0];
-
-					if (tokens.size() == 3)
-					{
-						if (tokens[2].size() > 1)
-						{
-							if (tokens[2].find(utf8("#")) == 0)
-							{
-								streamID = atoi((const char *)tokens[2].c_str()+1);
-							}
-						}
-					}
-				}
-				// this could be password:#sid
-				else
-				{
-					streamID = atoi((const char *)tokens[1].c_str()+1);
-					dj_password = tokens[0];
-				}
-				return true;
-			}
-		}
-	}
-	return false;
-}
-
-#ifdef _WIN32
-
-const utf8 errMessage() throw()
-{
-	LPVOID lpMsgBuf = NULL;
-	::FormatMessageW( 
-			FORMAT_MESSAGE_ALLOCATE_BUFFER | 
-			FORMAT_MESSAGE_FROM_SYSTEM | 
-			FORMAT_MESSAGE_IGNORE_INSERTS,
-			NULL,
-			GetLastError(),
-			MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
-			(LPTSTR) &lpMsgBuf,
-			0,
-			NULL
-	);
-	if (lpMsgBuf)
-	{
-		utf32 u32((const wchar_t*)lpMsgBuf);
-		const utf8 result = stripWhitespace(u32.toUtf8());
-		::LocalFree(lpMsgBuf);
-		return result;
-	}
-	return "Unknown error";
-}
-	
-#else
-#include <string>
-#include <ctype.h>
-#include "stl/stringUtils.h"
-#include <errno.h>
-
-const utf8 errMessage() throw()
-{
-	const int e = errno;
-	const utf8 b = strerror(e);
-	return (!b.empty() ? utf8(b) : tos(e));
-}
-
-#endif
-
-#ifdef _WIN32
-#define _WS2DEF_
-#define _WINSOCK2API_
-#endif
-#include "threadedRunner.h"
-const int getStreamBitrate(const httpHeaderMap_t &headers)
-{
-	const int bitrate = mapGet(headers, "icy-br", 0);
-	if (!bitrate)
-	{
-		// try to find a bitrate if not provided by looking at the possible Icecast info header
-		const utf8 info = mapGet(headers, "ice-audio-info", utf8());
-		if (!info.empty())
-		{
-			vector<utf8> blocks = tokenizer(info, ';');
-			for (vector<utf8>::const_iterator i = blocks.begin(); i != blocks.end(); ++i)
-			{
-				vector<utf8> pairs = tokenizer((*i), '=');
-				if (pairs.size() == 2)
-				{
-					utf8 key = toLower(stripWhitespace(pairs[0]));
-					if (!key.empty())
-					{
-						// should just be "ice-bitrate" but seen some servers use "bitrate"
-						if ((key == "bitrate") || (key == "ice-bitrate"))
-						{
-							return atoi((const char *)stripWhitespace(pairs[1]).c_str());
-						}
-					}
-				}
-			}
-		}
-	}
-	return bitrate;
-}
-
-const int getStreamSamplerate(const httpHeaderMap_t &headers)
-{
-	const int samplerate = mapGet(headers, "icy-sr", 0);
-	if (!samplerate)
-	{
-		// try to find a bitrate if not provided by looking at the possible Icecast info header
-		const utf8 info = mapGet(headers, "ice-audio-info", utf8());
-		if (!info.empty())
-		{
-			vector<utf8> blocks = tokenizer(info, ';');
-			for (vector<utf8>::const_iterator i = blocks.begin(); i != blocks.end(); ++i)
-			{
-				vector<utf8> pairs = tokenizer((*i), '=');
-				if (pairs.size() == 2)
-				{
-					utf8 key = toLower(stripWhitespace(pairs[0]));
-					if (!key.empty())
-					{
-						if (key == "samplerate")
-						{
-							return atoi((const char *)stripWhitespace(pairs[1]).c_str());
-						}
-					}
-				}
-			}
-		}
-	}
-	return samplerate;
-}
-
-const int getHTTPRequestDetails(const string &firstLine, string &request, string &url, string &protocolAndVersion)
-{
-	const vector<string> parts = tokenizer(firstLine, ' ');
-	if (!parts.empty())
-	{
-		int state = 0, partsCount = (int)parts.size();
-		switch (partsCount)
-		{
-			case 3:
-			{
-				request = parts[0];
-				url = parts[1];
-				protocolAndVersion = parts[2];
-				state = partsCount;
-			}
-			break;
-			case 2:
-			{
-				request = parts[0];
-				url = parts[1];
-				// this allows things like old v1 sc_trans to send
-				// title updates without failing (like v1 allowed)
-				protocolAndVersion = "HTTP/1.0";
-				state = 3;
-			}
-			break;
-			case 1:
-			{
-				request = parts[0];
-				state = partsCount;
-			}
-			break;
-			default:
-			{
-				// if we're here then it's likely that it's an
-				// incorrectly encoded request and we'll need
-				// to re-combine to make the 'url' not cludge
-				// the expected data for 'protocolAndVersion'.
-				request = parts[0];
-				for (int i = 1; i < partsCount - 1; i++)
-				{
-					url += (i != 1 ? " " : "") + parts[i];
-				}
-				protocolAndVersion = parts[partsCount - 1];
-				state = 3;
-			}
-			break;
-		}
-		return state;
-	}
-	return 0;
-}
-
-const utf8 fixMimeType(const utf8& mimeType)
-{
-	if (mimeType.empty() || (mimeType == "mp3") || (mimeType == "audio/mp3"))
-	{
-		return "audio/mpeg";
-	}
-	if (mimeType == "audio/aac")
-	{
-		return "audio/aacp";
-	}
-	return mimeType;
-}
-
-const int detectAutoDumpTimeout(time_t &cur_time, const time_t lastActivityTime,
-								const utf8& msg, const bool debug,
-								const size_t streamID) throw(runtime_error)
-{
-	const int autoDumpTime = gOptions.getAutoDumpTime(streamID);
-	cur_time = ::time(NULL);
-	if ((autoDumpTime > 0) && ((cur_time - lastActivityTime) >= autoDumpTime))
-	{
-		throwEx<runtime_error>((debug ? (msg + " (" + tos(cur_time) + " " +
-							   tos(lastActivityTime) + " [" +
-							   tos(cur_time - lastActivityTime) + "])") : (utf8)""));
-	}
-	return autoDumpTime;
-}
-
-const utf8 sampleRateStr(const int sr)
-{
-	switch (sr)
-	{
-		case 88200:
-		{
-			return "88.2 kHz";
-		}
-		case 44100:
-		{
-			return "44.1 kHz";
-		}
-		case 22050:
-		{
-			return "22.05 kHz";
-		}
-		case 11025:
-		{
-			return "11.025 kHz";
-		}
-		case 7350:
-		{
-			return "7.35 kHz";
-		}
-		default:
-		{
-			// 96, 64, 48, 32, 24, 16, 12, 8
-			return (sr > 0 ? tos(sr / 1000) : "unknown") + " kHz";
-		}
-	}
-}
-
-const __uint64 time_now_ms()
-{
-#ifdef _WIN32
-	FILETIME ft = {0};
-    ::GetSystemTimeAsFileTime(&ft);
-
-	__uint64 t = ((__uint64)(ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
-
-	t -= 116444736000000000LL;	// convert epoch as there's this
-								// many 100ns between 1601 & 1970
-	t /= 10000;	// convert to milliseconds as this is
-				// based on the number of 100-nanosecond
-				// intervals since January 1, 1601 (UTC)
-	return t;
-#else
-	struct timeval now;
-	gettimeofday(&now, NULL);
-	return (((__uint64)now.tv_sec) * 1000) + (now.tv_usec / 1000);
-#endif
-}
-
-const bool isRemoteAddress(const utf8 &addr)
-{
-	return (!addr.empty() &&
-			(addr.find(utf8("127.")) != 0) &&
-			(addr.find(utf8("10.")) != 0) &&
-			(addr.find(utf8("192.168.")) != 0) &&
-			(addr.find(utf8("192.0.0.")) != 0) &&
-			(addr.find(utf8("198.18.")) != 0) &&
-			(addr.find(utf8("198.19.")) != 0) &&
-			(toLower(addr).find(utf8("localhost")) != 0));
-}
diff --git a/Src/Plugins/DSP/sc_serv3/global.h b/Src/Plugins/DSP/sc_serv3/global.h
deleted file mode 100644
index 6f2065f0..00000000
--- a/Src/Plugins/DSP/sc_serv3/global.h
+++ /dev/null
@@ -1,218 +0,0 @@
-#pragma once
-#ifndef global_H_
-#define global_H_
-
-#include "config.h"
-#include "versions.h"
-#include <limits.h>
-#include <stdexcept>
-
-// #define INCLUDE_BACKUP_STREAMS 1
-// #define INCLUDE_SSL_CERTS 1
-
-#define EL "\n"
-
-#ifdef _WIN32
-#define getpid _getpid
-#define MAXHOSTNAMELEN 256
-#endif
-#ifndef MAXHOSTNAMELEN
-#ifndef HOST_NAME_MAX
-#define HOST_NAME_MAX _POSIX_HOST_NAME_MAX
-#endif
-#define MAXHOSTNAMELEN		HOST_NAME_MAX
-#endif
-
-extern config gOptions;
-extern size_t gFF_fix;
-
-// manage killed state
-const int iskilled() throw();
-void setkill(int v) throw();
-
-// manage post-setup handling
-const int isPostSetup() throw();
-void setPostSetup(int v) throw();
-
-// helper template to throw an exception with a utf8 stream
-template<typename T>	inline void throwEx(const char *msg) throw(T) { throw T(msg); }
-template<typename T>	inline void throwEx(const uniString::utf8 &msg) throw(T) { throw T(msg.hideAsString()); }
-template<typename T>	inline void throwEx(const std::string &msg) throw(T) { throw T(msg); }
-
-// subclass used to distinguish between error messages that are already labeled
-// with [<subsystem>] and those that aren't
-class tagged_error: public std::runtime_error
-{
-public:
-	explicit tagged_error(const std::string &s):runtime_error(s){}
-};
-
-
-struct parserInfo
-{
-    unsigned long   m_mask;
-    unsigned long   m_pattern;
-    unsigned int    m_samplerate;
-    int             m_version;
-    int             m_bitrate;
-    unsigned        m_frameCount;
-    unsigned        m_reduce;
-    float           m_duration;
-    bool            m_inUse;
-    std::string     m_description;
-
-    virtual int verifyFrame (const unsigned char *buf, unsigned int len) = 0;
-    virtual const std::string &getDescription() const  { return m_description; }
-    virtual const char *getVersionName() const = 0;
-
-    parserInfo(unsigned long mask = 0, unsigned long v = 0) { m_mask = mask; m_pattern = v; m_samplerate = m_bitrate = 0; m_inUse = false; m_frameCount = m_reduce = 0; m_duration = 0.0; m_version = 0; }
-    virtual int getUvoxType() = 0;
-    virtual ~parserInfo() {}
-};
-
-/////////////// various strings /////////////////////////////
-
-void constructMessageResponses();
-
-extern const uniString::utf8::value_type* MSG_INVALIDPASSWORD;
-extern const int MSG_INVALIDPASSWORD_LEN;
-
-extern const uniString::utf8::value_type* MSG_VALIDPASSWORD;
-extern const int MSG_VALIDPASSWORD_LEN;
-
-extern const uniString::utf8::value_type* MSG_HTTP_VALIDPASSWORD;
-extern const int MSG_HTTP_VALIDPASSWORD_LEN;
-
-extern const uniString::utf8::value_type* MSG_BADSTREAMID;
-extern const int MSG_BADSTREAMID_LEN;
-
-extern const uniString::utf8::value_type* MSG_STREAMINUSE;
-extern const int MSG_STREAMINUSE_LEN;
-
-extern const uniString::utf8::value_type* MSG_STREAMMOVED;
-extern const int MSG_STREAMMOVED_LEN;
-
-extern uniString::utf8 MSG_ICY_HTTP401;
-extern uniString::utf8 MSG_ICY200;
-extern uniString::utf8 MSG_ICY_HTTP200;
-extern uniString::utf8 MSG_UVOX_HTTP200;
-
-extern int MSG_ICY_HTTP401_LEN;
-
-extern const uniString::utf8::value_type* MSG_AUTHFAILURE401;
-
-extern const uniString::utf8::value_type* MSG_200;
-extern const uniString::utf8::value_type* MSG_NO_CLOSE_200;
-extern const uniString::utf8::value_type* MSG_STD200;
-
-extern const uniString::utf8::value_type* MSG_HTTP400;
-
-extern const uniString::utf8::value_type* MSG_HTTP403;
-
-extern const uniString::utf8::value_type* MSG_HTTP404;
-extern const int MSG_HTTP404_LEN;
-
-extern const uniString::utf8::value_type* MSG_HTTP405;
-
-extern const uniString::utf8::value_type* MSG_HTTP503;
-extern const int MSG_HTTP503_LEN;
-
-extern uniString::utf8 g_userAgentBase; // user agent for sc_serv2
-extern uniString::utf8 g_userAgent;		// user agent for sc_serv2
-
-extern time_t g_upTime;
-const uniString::utf8 timeString(const time_t t, const bool slim = false) throw();
-
-const bool isUserAgentRelay(const uniString::utf8 &user_agent) throw();
-const bool isUserAgentOfficial(const uniString::utf8 &user_agent) throw();
-
-const uniString::utf8 redirect(const uniString::utf8 &url, bool compress) throw();
-const uniString::utf8 urlLink(const uniString::utf8 &url, const uniString::utf8 &text = "", const bool embed = false) throw();
-
-const uniString::utf8 http302(const uniString::utf8 &url) throw();
-
-const uniString::utf8 addWBR(const uniString::utf8 &str) throw();
-
-uniString::utf8 getfooterStr();
-uniString::utf8 getHTML5Remover();
-uniString::utf8 getIEFlexFix();
-uniString::utf8 getStreamListeners(const size_t sid, const bool nowrap, const int fh);
-
-extern uniString::utf8 g_IPAddressForClients;	// address clients will connect to
-extern u_short g_portForClients;				// port clients will connect to, generally portBase
-extern int g_legacyPort;						// port legacy v1 sources will connect to, or not
-
-const bool reloadConfig(int force);
-void reloadBanLists();
-void reloadRipLists();
-void reloadAdminAccessList();
-void reloadAgentLists();
-void rotatew3cFiles(uniString::utf8 files);
-
-const uniString::utf8 loadLocalFile(uniFile::filenameType fn, const uniString::utf8& logPrefix = "", const size_t sizeLimit = 0);
-
-const uniString::utf8 escapeJSON(const uniString::utf8 &s) throw();
-
-// creates GZIP (RFC 1952) encoded output as
-// either one go or in blocks for logs, etc
-#include <zlib.h>
-const bool compressData(uniString::utf8 &body);
-const bool compressDataStart(uniString::utf8 &body, z_stream *stream, Bytef* name = (Bytef*)"sc_serv.log\0", bool local = true);
-const int compressDataCont(uniString::utf8 &body, z_stream *stream);
-void compressDataFinish(uniString::utf8 &body, z_stream *stream);
-const bool compressDataEnd(z_stream *stream);
-
-
-// used for getting and setting modified dates on relevant http responses
-// set use = 0 for current time, otherwise pass in a time_t as needed
-const uniString::utf8 getRFCDate(const time_t use);
-const time_t readRFCDate(const uniString::utf8& str);
-#ifdef _WIN32
-char *strptime(const char *buf, const char *format, struct tm *timeptr);
-#endif
-const uniString::utf8 getStreamPath(const size_t sid, const bool for_public = false);
-
-const bool isCDNMaster(size_t sid);
-const bool isCDNSlave(size_t sid);
-
-#ifndef _WIN32
-#define localtime_s(x,y) localtime_r(y,x)
-#else
-#define snprintf _snprintf
-#endif
-
-// return system error string
-const uniString::utf8 errMessage() throw();
-
-const uniString::utf8 bob();
-
-void printUpdateMessage();
-
-extern uniString::utf8 listenerId;
-const uniString::utf8 randomId(uniString::utf8 &temp);
-
-const uniString::utf8 getCurrentSong(uniString::utf8 currentSong);
-const uniString::utf8 stripHTTPprefix(const uniString::utf8& addr);
-
-const bool isAddress(const uniString::utf8& addr);
-
-const bool extractPassword(uniString::utf8 &dj_password, uniString::utf8 &dj_name, int &streamID);
-
-typedef std::map<uniString::utf8,uniString::utf8> httpHeaderMap_t;
-const int getStreamBitrate(const httpHeaderMap_t &headers);
-const int getStreamSamplerate(const httpHeaderMap_t &headers);
-const int getHTTPRequestDetails(const std::string &firstLine, std::string &request,
-								std::string &url, std::string &protocolAndVersion);
-const uniString::utf8 fixMimeType(const uniString::utf8& mimeType);
-
-const uniString::utf8 sampleRateStr(const int sr);
-
-const int detectAutoDumpTimeout(time_t &cur_time, const time_t lastActivityTime,
-								const uniString::utf8& msg, const bool debug,
-								const size_t streamID = DEFAULT_SOURCE_STREAM) throw(std::runtime_error);
-
-const __uint64 time_now_ms();
-
-const bool isRemoteAddress(const uniString::utf8 &addr);
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/icy.ico b/Src/Plugins/DSP/sc_serv3/icy.ico
deleted file mode 100644
index ba0bb6d7357c6a3e63b140fb8ce7409ba33fa047..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 40585
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

diff --git a/Src/Plugins/DSP/sc_serv3/libcurl_building.txt b/Src/Plugins/DSP/sc_serv3/libcurl_building.txt
deleted file mode 100644
index 2cd06c23..00000000
--- a/Src/Plugins/DSP/sc_serv3/libcurl_building.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-------------------------------------------------------------------------------------------------------
-
-OpenSSL
--------
-Linux / BSD / Mac OS X / Raspbian
-
-./config no-ssl2 no-ssl3 no-unit-test no-shared
-
-
-Windows
-
-Note: Use "Visual Studio 2008 Command Prompt"
-build-openssl.bat build x86 static release
-build-openssl.bat build x86 static debug
-
-Note: Use "Visual Studio 2008 x64 Win64 Command Prompt"
-build-openssl.bat build x64 static release
-build-openssl.bat build x64 static debug
-
-The generated lib files are created in build\openssl-x[86|64]-static-[release|debug]-vs2008\lib
-
-------------------------------------------------------------------------------------------------------
-
-libcurl
--------
-Need to ensure that --with-ssl is set to the correct version of openssl being used otherwise we'll have inconsistencies in the generated libraries :o(
-(and not to use my folder path)
-
-Linux / BSD (SSL) - change the openssl path as needed
-
-./configure --with-ssl=/home/dro/Desktop/sc_serv3/openssl --disable-shared --disable-rtsp --disable-verbose --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-pop3 --disable-smtp --disable-telnet --disable-tftp --without-libidn --disable-smb --disable-dependency-tracking
-
-
-Mac OS X (SSL) - change the openssl path as needed
-
-./configure --with-ssl=/Users/dro/Desktop/sc_serv3/openssl --disable-shared --disable-rtsp --disable-verbose --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-pop3 --disable-smtp --disable-telnet --disable-tftp --without-libidn --disable-ldap --disable-ldaps --disable-smb --disable-dependency-tracking
-
-
-Raspbian (SSL) - change the openssl path as needed
-
-./configure --with-ssl=/home/pi/sc_serv3/openssl --disable-shared --disable-rtsp --disable-verbose --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-pop3 --disable-smtp --disable-telnet --disable-tftp --without-libidn --disable-ldap --disable-rtmp --disable-scp --disable-sftp --without-libssh2 --without-librtmp --disable-smb --disable-dependency-tracking
-
-Note: may also need to do 'apt-get install libcurl4-openssl-dev' first so that libcurl will see that there's a valid OpenSSL setup, otherwise HTTPS support will not build.
diff --git a/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/ARMv6/libexpat.a b/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/ARMv6/libexpat.a
deleted file mode 100644
index 6ca029f7b8aab8ef6c5cd0619048249a1fcdaf6e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 476516
zcmeFae|%I|o&SID{D8?Y)(ZrU5%p41O*OWIMMW3aP|^x6tplVj)vTRBLcxY)8iJ*6
zbq5F}rD1m{&{7NSRN4Kq%G%VeyIsFlhZb$EUB%kgTC2{F+(J`oQLCa>`95D~?uCHV
zb=}A3`}qFx&Es)$?ma)>=l$!v&-<KvX4>rb-eoKPI)1);>fekDX3n}`#;jS%_qcA-
zWR3mry6>3r?srvdq~n%lEwrrIf&V{%gV4^Q|8W?1P0S)Jxn#jrsrKI0oxO`XS9kVV
zdSBexcTxAUo{p8>SDW{0{>8nWonv0-_I9@SbzXJJC4ZE5>Eb_1G6@&0?d$CAZtuFN
zyKiOR_0>kJt(fe~R(Dp@=B%FA-rdpF**mAV+CMoL_w;tIyt=!kwZ)VL!bP2ZYkIpc
zUEJEcGShVuaLV?!wD+|K#V%}LU4{Asoqc1U7iT(`tz5pcvtv$QU+>DLYx+9p_N?iy
zj-R6QPo~fB?&w?_G<Q)~=c>-`J|Dm!b#Y&NZ{L}-F6!<$bH>~i?Y-^Gz=)tdt-Vxl
z&$7<dtHJ;L?$v$0YnJt`?CCzO%-o(;XMkjG2dypcJW~Y&<e$g~(m#>g(z(2SP1orI
zKQ;BDwHXK(Af=^eS>N@U&X&$)U8jL=AbI6%0D0xi%eph-){ZI@ouTndd-~dit}|t|
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
J?LqfO|1YmbvOxd<

diff --git a/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/ARMv7/libexpat.a b/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/ARMv7/libexpat.a
deleted file mode 100644
index 91505b28a112883e5e183630eb9dc5af55abce17..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 512028
zcmeFaeRy0)dH+3UUo3eol2t6XLI^k_0t5)MCI(DusGKOl0Tb3Q2_~qpvZcgsWN9PI
z#k4M6OR}vbQoBy<#3VM^6kq)rYKkbKO=+NO5+Dr$3^+6mDeQ|6b`%F38X!Qx&*wYm
z99a=gO8fM8UC$qnE|2G&dA;X;n|tn=GuyJHdvM+Qw<j)epZm9P(S?f^UbyH@i{Ik9
zDVsI(f7gBE!neHHuaQX@V^$bbd;k9*z(M4nANy~IIrr5W!kTw4|6sa%a8vK#%HB=A
zLq_kbdWSCUUpLURq5oR@?&n`N*xNhf^^(Ef?xEffzWd$3mG)Z+SFEy0mu?yA9qjM!
zyR?63!_bHQM*UW7_LZA@{j{Z<mUZ{{^z{xd9rXJr=dyvp-VN9GcdqWVWr1*I@6hJK
z{wr3k9^8=aI|Ddn2Rplmy2D}@cW?5cen;=n%;#0v-gO(U+0fgwbZBUB!`jV5y_XDZ
z?)S$}(aX=IU*6x-yCrPy(!Sn}z5PQ0fMM#Yq3*$<vu9n}-*fhiOV)P}cCP~?f_7GW
z>A`_@y_+_H|I7O~4GnHyH?(1(e^!}G1~#4rl1qAMZB_5tDp(+2ARkCyAh)ykn(obg
zvj_g%)JwNyAzX-*&VhA9AI|o6_O9!j1-gag`LhA!`7^KV&x%`nd?q?e<5vs}bqif*
z%j(|PyD8hf?s;Ll;spu-)eB|QEyL>X>Fyio@0~T?=Q94v-fMox{E+|Q_Epzy$Y#S)
z&#Hc9|8@NXAL<W9c2;h{eP=-joZq)$)6iLRo)@`mHujyRIAYtq@r+c5Y6GyBb#Gd~
zs=Ln@D=Xa>Z@%W5-a*SFlE^b}HrMB!p@FP@^NXREHg616Ls(DQbOXkRHg5_OFC82l
z7`$YlXIkDb**rLiuwMM(q24n>Os_N2pDXnJ+08?j4D=86ZkbjDLD}US`g^a~ym9Rr
z(1VOi2KqK{?4OY(HEG-EA9^>i^jYZM-MjJK-F<xn>%zB{z0Y}_)~$g+1&!O%c37)W
zQh_#>lnq_g3jzlE{Q@%*F7Ll)z$P-x%TUmp2YZ)8V*}x?9J*$)<q_~>-xj|4%<HNR
zf7<(=Yi4nh%3a>SVdyN$G_Uq92UosI52uTbeSX%$H=iv}t%ZE5)-9Qd#Z-EKo@O<H
zgqgqHu%A1#X+LFV<7dju8ca}haG-C%vJ;%L!J-QtJTvLJGHlG2jeS`uqBjiqR!nHS
zyb%j!VJd~;GX4LX7cJuLEpJ}@W^2x55`S^&^2;2@!G!Vu9MfjbyczRQYeX6GMK-(5
zyv)4BG&_0kWv4GF$2wl`nbZ-_m{rxe#w1=8#7-(#p^d2*nU&Qz=}}WCJMMRm8Qy<!
z`gBvQWB)PLSGgCtg=(UspmI}=dx__`YHwxLF|?5ysnpqaS5~9RLiuOZbvh_hJmMux
zSGCS9l>d{o2z698LLJrp32DYX?1lZDTKf9OophnREcq?3@yNR?rlU~CWTXCs7tIvP
zFEgeopUQi2v#NaFM{<$&>+=gP|EpXimfLw=ySv*<rFMG_lr^ad$`r~=ihI1e<V0l-
z{Wqj0DoYqkU1~r1W0c$PwI_FbY3fAW?o!O`_AZ>x-|4B`9Qru{jEzSoDyO!6;Y5V7
zMcuWfG%&<W-j)yZPQB;#j|<*B>CM3Im~^>w@;|)x?%fL_`9k@;{?UkWZ}v34%l~3D
z63gy5FIr%HsY2Cl8I5a<#@zvIH+V^4tp#?Cp)R@KO8~!MPg>Y_(s!=XZqilr)Sb7D
zK#xZt{WDQxo+Z|El4rfo4y~l^J4^cPa{ssA_W|Q_@GgGrg>ORKmz>>R2Xu)rHjVXs
zQvlk+eBs2ThQTXz_^U6RFy{T$2J(J+`gB6&Elo|KI=jpq%7_=kdTKLf%k7wMYe`OU
ztf{^gIF_XzwlE<RiDlr`q;^;y5nm<gM|{<gobbd~K5Zr{Azy{G3HeH65??J2cuMsn
z@YCbKgA7hB3C8~t`hvdI2KVd02LC1}Dh}`BMYUOK+0FPSsJoK!?eHXLQJy!`j>c~L
zoi%o){r;?Rg3D@%2l2dcAEPbsQI5mcbwOJ%J$?EK+wbYqQ(?Ki;8|r<HY_)vayL^(
z{Hd|c9IxshA@9^Xkmn9$BANG0=4Q&Qn3mf}u28O(j3?p$?p*xxJ980}+37`HWFk4{
z#gGAmtke~Ei)Q6H>OYU17yiSOEX3$Td?8tQLm&$*?xyPI7_)@XO3?E&asORu|6dN1
zz?n|%IYSr5E4?K?(^&uUH>aN{IeWY|;hJ~J$Qk(<v+_|Z`Plh|6Uz7be5V(t8FO_t
zf;>=vft9Ju@PeO1Bc)4D+EQWq$bzRxR~tSL&1i!;Bx}%f@J=hdWA!sIqSLBwrcj+H
z{1=^)LFb>Ne6zBQ04JQ(O3$T^$$V*n;|`zaq@K3pq(CB(yri<cc&B%L^2a~?J#_to
z`a=21)2DAYsV^~CJnd1wqW+$S-_;(fW4b-Zy*MKMsj^w~g%g^q4Dc{_P0ckOrWQS&
z?eO6R*7@S6Sf)^~evP{a+1ca8oSTo=rf#viTxqpR>mEMtbc|MF$SeKcs6Oga+r4b=
z3nvz<J=#&*f=lhz(w^G#>)&GAl>Dl#upRW!jkb(YAAWy}XS8RSH{gJ3oVFU&R!4ri
zoH45_c0Q)A%22QN`O2tGJ7!?)S(^9m$w=0(s$N99lgRy{<ZjPlT<02d(E;?0+It;&
z+v>YZf^Qr67wk%Z6X}PjGm<Kl52Z#u)kj{-2h1q-%+vwex|=peTGo}E;s|s~S0gRk
zN|VJ=kM<MyAiFhAN5we%j^~_A$vE3e$)d*DRUJRvm#nMbmTXLIThM@hNTzb6uc$i7
zZI!xIF5Zyj9o-N$g>qwZ7`-^`B?)x|(V-4l&v}urC)KZL>Ov>Mc@+8|#r9Dd<D41K
zJ%T%vTX3)CrBYSxNJnYxJ$L23NCsYJ{0H3Iy=ac-)Nsjh;ScGly!0Qml^$lEj+q@^
zTXw(KLca~r)3|$qe^oU}Uep;W>AenpZ59rfWN#cu-40C)^PS{KsV=?C;wPE9)r+-^
zmZV!FE!4?QK=VR*E@OTK{knZcZ%Os)+*>Ul#aE1Ar>rbDruTS14*0T`KBi^dz0LAW
zt?US%og}i8+zB4PL--PD#K13pReqFy9V7YL={e><$wTJcZ`m@MH+{a}0d3CoAv>oX
zeAMQ5c@8)-=6%(qVSbuKS2Iuj0XCZO@ECn0Q@fbY3srP?HI{t9t97NPZt<MDGjucH
z+?X-1){MnpL!G&Tsl8DB4dXYd??H3)Jnfxo*@Zo363e4^dh;lgk3>ol_xzHRddlWw
z3pCXxp+Rad<6c^ET=JJncaD^jqJ^Oy>@UsXZxnx{-;5ct<)Q0w@zAGfU-O&z&hMXk
z)Qu%?Id1jP<Tfvsx#f5r<3MMY+e3RK`EB1mfPYV2f3sIZI|m}b>57MdwWg+2lNGE#
znTFMIFRz%wUhfqPHU2_1lCCLjO8xkU5%;U*T5Lh)KQG>W`|&tqko?9{H<n&ZyQX+6
zFh2&pR>3F2^@{5En4fK5$fR)fZ@jB7r{h`pbd~fW;$d}5Q_MU99sD`OF&&jRnrI0d
zzG}>s<+<tYsdze5Dj`3b*VXnP(`U?m1pEoF7gtiwWcib7AHD443)MmQ$3IMh^B3O?
zoX~cza1L%{hf9w*1;&|9SJv2e{CQlst)-4&y^8eLwiL?Elpkacs7+2_@0Q99w*S3e
zSNTrQ%}#i&ldJ)<$jKx)g}#l#5oPBr%|pA@Rn`UxYono)PA!Da0UyUm|5!9yil$zH
zEQ?oGR>dnZa4@eJE!EObA{8wy`4aOMyy_IkWfy_Rm0Gtrve`^(Z7P~t>qhJM9G`2D
zQ}7b4-(LEuWTayoZGxN3j!KQWs{ANvZgxNL$~N0Ot-~8r;G90Arl!<PpAEdHB94#y
zwCtS+n8O%<e#}c`Yb-1w9KZz}?=3sowW*ryTDNB5p5rx^FIdkdca~zQ?Iq2RozM+=
z(tJM6o5G{;n@E)`-UO>~-I((6_b_!Xx%gaT=Zua*d21%`E&V?F4xXD2?p_4{I$y&U
zb4%5j`*HYSRry(sJB>`ctW#Fg4xx_l40FMop?RFO4>HhHw@5s+iZvoU6x(n4;XHVK
z>GvlpR)=SHd*X$#&MEZsd6Yd_JnCiKJH1TmPU?46BgKLfEf(sbccr!!JkqXgK=HH(
zFUCkyUwP_3?T&hJ#{Vqyz%lVL=~^#3*f{X@G#tEF9}~WUzh^YBGyWL!dXo7_aCZWW
zXniSht*bTPEuL(8*&*nv&l|=o7$VANjU2_keFx7C%#+T%mDS-);V$RT3ZJbtJN|l&
zbLZzIA9J#WyJ|9p&)7K@xzM`9P`=J(jREg2Guux%v~SX*@Xq#1oP6~eWlX}A%BU>5
zxvccs?9NIpvKVo<muk}6;U{bra8OJABsh46InETBpDe5+UTt#pM6DUA`1(!j8rmZd
z9Y>k9rCRLiT6d(v+`+uXTtyqyq1-4sr%+XU!iD<&qVPxC!b{Y}CQ{qU;bW}B(7A$t
z6j;yHlb%z3;b%Cl^4lvhaAI+hN>`Y35_WvW-RLNM3Pr|O948)Ojubq8Te0+rS64g(
zmxT#oIRy>1zOI9Q4Vtr|ooE{R55&)P*-`utW@=dT3$&{ztri@FYdV8$gg%2BaBO`B
z(wE?W4s<yM?<c`mgLFS*$p-DnPoVLI>B)ef{yoT-JzU4Q)t7WioOf&i<O+I$U*q2A
zsof-Ps;{eqdem9q+rEXW@<Knu$;l($BF0$yYstv_s~Y!t=j1AFxrs`1cB0~DCMxZv
ziArmJqLPPa?){R=p<9uo+8kp<rzSJ3XG^}X#FUWd{DfyRrD`*2E}@mso?&j!;rGb;
zxDd`jHDkRJom+^$ob~x4;li%Vuaqn_wWHgZpQ`U-jN=)}$W_(1^W2=4KDe^_BA)Z4
z%kGh`a<PNN198`%9}N1e|J>2ar-TD!<o<=b7d)_VbitL>YlRll&8yW0<7zYey-w^5
zlUir%6jUdZuDp}{@uJp_yFINP)wbXgJx@Rf$+zqc!2^8qGeqI<`Co$v@2%hM-Lp_-
zR`|A(ufv+KKc*rn<~bKxNsd@JWJAd|zjq-tg#Pz9quv9A`w2xth?_KU2zRfg&sty+
zZ;8$tL&vX9KQSk5ZN8}<*89V(XHL?;aCmaXXdFCDxxg-%U#fAtyS+~2wG(?Lg3b|N
zH<Le~{$1d>o$~oKwl}az7rNNN7QejL(6>qLw79x5z%TS@V(is%>P0ez@}%k`YyU`W
zct_WlKf`l#RxrG`%Cp6rbgyWrarCo3{U75kRj8f^Ztekg=<MB3C=wV`obkl35gfta
zsY}q)z@xQ|WIUZ4t#m=>H5R{J<qN=tW5z4u=PrYe05(&4$ZOJA^XbY$<!5fNK0)E8
zEjh}1qflM;Yx1+{iscDxW63&vp2)x}HI(ZDA6B+UzHmbQWzat-1AkFcZKnR++Y->n
zq`qxw1(FgMkrpw9dXp^7muy@N4=L^Sw$3SRs%;g~RXn7A!0D7=MhBrQm|K~r-wSSK
zkA-%d_=q{x>KpXSl;Al`907)nwDo=3it^mYGqzz<jOTuySyME{dEUe`^M2DDo}J_-
z`Cu*-48S%2o1}~H@gpbpY7N}M+5r5_O?}nk;S2QR<cCY*6Ul><8m|a9PU^eI=3@Vt
z)I*-&(Hdh7xQm*uvg{;{>6MH_u;Uv_s0?eEsj!UZeaD4v^wq_jA=;>|CD4a8Q8nZ4
z_I~i}=_f=FW9MRgMbHSGIbEsUabQ@GNsY#Nuis6(>Thn)-`zofKO|l4s?8er2HWm~
zv>9Xl^JVg+TU+6&o^5$=c?Z0nWsc3G`!dK-0oxG1OPjGu|I2q)8Vvdq8YPRqFHkyW
z8M+C(%KDk*mwFvzm5+88cp7WO|3o;75uYX86FlpEX4p;ovLJ7qyd%$3Zf2eT?PvAh
ziOz^-c9a^?|61c|?ux^6vKKUeN#{83D$hk1i~lvRi5~lHI&(KPG==*-)+oqsq1qbE
z5p!H$Ur2ArCaw=?w3~X3nf)GX3v|zI^tGz|5z^2t({<Z{DGvRFYil!r-@VvjuJCN$
z7lj|21ZN226m)k|f^k*#IM2<=3E%Fa{Ef8zlFY=H%;b(D^&b2I{W|W?kOyFAKAtCD
zW==-Fo-=QYm!<Cpr7vjb8ro5x;^h!-w|i%tGErpG!v78OgwIC!Bbwa7x^-Pi<46U1
zIXn5|A8HPl&qQs7HUj=ka2()r@;>h$X7%y=^l^|rh^KL6`$1Pk-5sT*VIF2)6s{i?
zyl%R35pB*(F%QsxE$IpPUq0&x7TyM3SC{W!xYIL}h4Ny`ZA(33^_XjQ&HJnGCG8cg
z$)zh+^6UoBmyq9Fyo2;E`I*o+dR|o}9lp4Od5ra~J5qAZ*Q^dXmb}eFeooAF(Q`#?
z4Rmu|alhvlzec@ubt_{UWUO}0L|qq{`gtD~JgHmQZ^D;H`_Kkm^?up$O#|eME_DH2
zz~h20($)6|gS>c<hpx4F{y(HA8MoRxNt$h+XT}|GUwGRBCxvcI6)vn&ZYFKd0q=zQ
zm(NN+mvqAXOJ=3lkxrQZwpr;((h2k5LV6=`zKM7q@rA_FMUkvO&pDIWmAmrZdSp!c
zN%oKCKqrH4$`#7%3!{~W&*Z$n1K&+=*j^b;jaHJ(9qdhb4fqRWW62hf-7!-?S-C+!
z-HwbNYc^(*u$P5&J4Qw$LC>?p)0DY4D5vM<vy_=#=XZJUq`yw=z-V@7sWCg@4Iu~F
zK&NbHT#|z!bc*&$B$tiYB3}hh(k%_Uwu6@mYlF(ZNibgN2=UJ^;BWDi_8P?t>_bA!
zJ>X<jc|Gk)zx-%MntT0rE4!r6$EKe;vG8HbADX+vdLN*kU~RN=wsTs})TasL44z?K
zr~OiVA(TsD<4rEy;~iSK9r;REuB8pPC|T;N0!LFaE17w3HBEXJ_{5W%6Gw{o(+@I4
zTW;!WUIX$pgdaGGjAgTwV-AuG)zSA`ux%wr8t?mT`(N`$Qb%oDf6w@bdCsNo_dd<I
z+JQghi%^#?L6^?dk<tM#Nl8bJ6r<U~Vd+WiYxJZ~3&;IAdh)$iPhxW>X3|W0Qgmnw
z@PB8J@9Rk)|H8F&7-9Yd?W%lpP<}b}k%jUY>1Xu7c5j4t>anj}sOEw?=LU6l1bu8G
zz0Tb6xRV5D$*+0Q)UegJ$CB)ypljT$uV*$=UV0;>tKbP`djsjhmtYXidS{gjWm>vL
zdTjylpl_yRpVlFxwQ2V8vhYI=8^6Q%El2arec4w+4>J{mCrmNe+j6nfQ)kv!?8`iO
zY@x4v!8tmP`7L|Hf~f3B=~w!y6Tf4NIwmU~vwNW`N8Ln(G-w-z1_{|gF?d6AF^4`*
z$d(N1hOn9rbOY-}!5c~YI>pIj^VE;x7kHJ0SL=#A@Tv{QUY4KM6!&>?+70*PS}7wK
z*rR;3j<^B-Ifq!|M#h?=_!!Z%O~)MZWV))oP=oI)gy+~opI6zS3dTHU$1Gp;%rR@;
z;Js|1??nOapQKEQH50ap-4~<nM3iR`#(V^>@xjX<6ymE)zF<Jcr}4!+B7I<SC3<LW
zwr>W$M6*W2IyyOK$KA;KPX2n;fft{6i1xKiv3o=v=;w4`BZqUii!MQTIjM(_Nxrd-
zo-^NTov*gukFF4Gi`nOqJs|z0*!l;swMn=8P-?$xA@I;w<H8(%^;}@zTq&NwXJ``f
zWTD)2&S-_XlC^Z9dct5^yBgbQW&Mg#Z?_q>b*}kC{34vqknJJ4k^d=1SVUM%SVHI^
zbP|>kmJ`y1)r2*KE<%RTLs(DfBV-9%2sy$iVT>?NXeG1}*3f?!VF{swFw`-Mjl{Z-
z(8>EU!g4~Iu$quralhA1*h}~*!AakDY<4i|`@Ck#x`b9j8=;-Bn9xTUBIF3C=>J*5
z(}c%(FA+}A=Hmp`+}<g|qWb$Su0>PpcgYs2wQ1J=9k<xErzs#W8Dw|GXsIUWui0Yq
zql0%diEOiel6``60XanGQ@btQV^)T*EdLUEYfiH3O8h6$N%4#L`VJ4>WbL(gQdfFW
z>%Z1iq5833kj^@`lk_Czv{rjH&#ISE9r)&Lyf-jEB+U)vud;h%QL_e{kFx{tgUZ%o
z8?2^$tz?6BZ%TPN=Bn%scD_-&z-ilkXV9+tX{62Opx-e6;voO!<TsPwlKh@0JFzAC
zuf+fA{gdTi_PT7nRn=N-Ma%}|ud9lzKU!DZRzlAqo7lSSt2yRd$LjEF7;_(cXt&~@
z6#m%vV9wUOBKRZ8iN|;S^7Ipt<o?GsX38y)j<NPYU<)LZx7xicjpZ3+yB3@z%ngr!
z19-wVax>asZbBY!^;jp{vkRthOU2D$Ll=B|lXD_bllAScNFJJ`^L8IkKBRe!qoJ5b
z&+G&KRb`#)(EN`KPSthX%Urv<{ClM7{FBx;*r33Ab+rXvNCxX2t)m+7J#5F1t2I}A
zh2{n3uFUZ9+T4g2%S(3@qP3~7#OtUd-tm33J3a0D>s_(n!FFhpuS{#_WNN3Ev1M=e
zeXZcDfi>^%3r1JtxXnW!PSw(;_~lVxo16NseXh;yjDMFr&JB3mJAkKt6hAEInCjsb
zbK7)#;sv#%_L3btvF~?!zCQF}3jLuclSjP8`1TiD-~NhfB*l82wX*cl33N|ri#UP}
zm_vW)33PF?;|nK_{$hqN2pd`Rlu7Pl4v}4qzqbHyOcLzazJ*U_CAyHdir-;8oJH#>
zIP6i{w()ySX}@zLWi-b`c<$pF8<Dx{Tlh@U)xQktGH=kn{3Kn~b)<E?;!e-W6sm3P
zvCe@f=H%Q`Gz}~r&;&aUeonNqF9p9y{vV8Fj~=g+t(0XCI13HU?;(dK@lutc9hGr1
zlqp_SGMTNFy39YYr~Xq<=LgiM=E|Tw>eobS*kcjS#rqdS>o#y@=TY=X(B^z6GY2$W
zC7Yn>k(NijEi2fAW_+{>dt6!Vq<*8zc?Z_*i?ID-JSVX&x3t{IIu-hMZ1-Z&Q$8r|
z7pM(8m(oTuxo1JFV_VX3I~T;<k9sD*-K(42&f0Z5JRn@JwEIV~^bKAL-6cI}++DOs
zetMhy0*RiY;OVlsQX4Vj!xwe2bKFAIBtIJL^PCx5PyOxQUVLVbd0#o^-Vn#9(<Hx+
z@Br?e`;p;S&A>%tMr)zl?YLy0Yb@IT^~b?EGqZg`V`lq;f1w?RdUnr<^36PlW#xmG
zU8T09H|ofr)rO}w@QXGzuwNgijQAM;!&D5O+5|2>Kwg|@;pNrXW)ITd`z+l4+#+9Q
zPq*~Px4g8w!=8O)-B(_c-%)YktERuqRm4l$%lM-Uv_~^RTdS&D!~^&t*_VUwR?SE6
zG#$bYI*1=xewt0>%U(a!!h8-~CVQXthf6n2QYP_?KWCs<=DVrl0=1=fo%HteCTS-Q
z42Kqu0+*lOHLE|ZbKXXI^~oHU2>boujD8&#dk4Em`}yBu%<5OL?JewxV4qFbSu>+f
z2&?Q&m6sm-!OwxUkjAgZn3K1Af=_#HS~CeoC;71FOm1fmK@XS}^JRZV(%UPVd*#<T
zRIf5udM0_s1_N*N1-tn1V7)(H>2IwUWjj9;;79v6Du?|#rE==`BGSTkg;&92&sxxb
z96AU_=_G^@IXyGa%a5C2T-s~0<8%wvuLXWE*??-t$GO&r%$Kw!-VE&o!S(F`F4?bw
zYddf`>6`G4e9zMCL%gfp13@`_!nWK;gY+*2>CAODUF$l@yv|8n5%@`rxl!l%5`yP%
zf_irc^~AsG_lu<ad#5YJpJmNw*a=gzBil;QIkUZ_^};#DKH{tFx*VE6YM5)Ru1}^b
z@f7oaW?M;fW~=e{H(QhN9C}H<Jp6I-2pdz99kpu==ZMVcg0_s-C!&SFHySh4=}`V^
zt5X`&_)Ch|v+zKSdhyhFNqqNj;8^(7z9Dg0vFtlLhfMDBw6_o`Kp$`^*)tgebXek!
zo|n#|JM)G4?0vH~F-_P_Q%>qvmQM2N%eODP&gAy6c3dMJ--KV!@?RHYa*~f6Q@VIi
zJcsYvTf-Q{bFyt}fam=Ij&ZNpe65*nImRIPaSL0SmY-bu$mH(>5Bu3O_vM6xebx??
z-4y!E<(rj{T)uMo$wk``Ze-HpBb-0PtKqZYc}oC~Y$(C;gOKLnMz~6w(Te3K>`3O+
zg!Es7^|8wbQ>Z@mGvHxQPV=3?zKSvr0)T~0@N54-G*G{a)rZ;uPOGb8=)+qB8&hjq
z)ls<=d#s{a1UMRt`@QB4<{5k;v5pCE9(JAP1OyK|>q_gt7QV$l!iD77xU$c%=K`Ov
zbd<)OqV3R!j2-~jzMtDkT@qnGJkDCv`Wl}K@C*+{Pf<>5H0J54p2K-h{L~3-4Vm#u
zGjooU!zSs#PDny8?H_^{)?;NCct0Wh0BfU}@ZRn)Co`5Yd_|Jqy6iq^iyx)9*W22%
z$IgdayZ2CkCpPmc<aNS(mt!6r`wVB@si*nW6tSCV_v(mwRKDK23?a`P@{R442GZwT
ze9LjQt#)0`s7MZDuI~??^Vh(a;!GO(=WDIe!P)?rbVfmVkPKez`1;5(mjDO4^DzE^
zg*P1+%!z`|3_MD?Rn{)4b&uLQ@@>m5f<GRW->ku~XRC7r*u`~j?mWrTPmz<l<juz%
z(tbjD*~&GHQ8a@0njGj=i%xAYI=_T&O-g^VPsTU|Z!Kf{Fnm&L@sO7N(KHFp>QXnA
zVlMV`QhF8Kp_3=^!@Y(+<_7*TfJ@XBDTn<Y+ArS`?_jfN%ty$VP0$&xEz}2NkK}Kt
zaAt@z1wPJ&6VXBEfu!$P-z0>WyWopDbNl0hUGNIlpTa+aHO3yA=pQvV9e<eev*CQ0
zvCnK%eaapbpVR_x4*#d{O(P70^L44TegD3Ff1lPS(C-fTK3$$C+lskf_&zU!o=*Nf
zx+h&eN*S&H=Ynt6CZ89r-Yh-cQK&ZNpjUdrLuRIok!@$sydYP?4g0phvL0A8HpyRO
zFn@ejG{b(afu66R{RYk+jTT2sbuIbhb=|p=NwbbfF&_iF=Dk{UgPxy4mSV}9y}5Vc
z%Pri5-sc;T!i4uJ+L&9=-s;uX=O0P3Czrg`t6P{qo}_<!#xKSA=~Miu_Cy=?FL@B&
zVw^M8enCT;^I6ofa)`{Re1Z0N<L@1ZK6&_N#r(-~y?C8|!~^y73*}aLt`&LU>~TeB
z+#1vdYqk90?Vjql>OHG-WXmgU^x4k&zPe(myo6_$Je~1t1E$5iOCH<N4U2e=fZGUX
zdFG-US#x}{X4@UdYmh7XcAeB3>3v{e?O>Mq=Rtt!)KcjI;b563{$Gq-$;ZFvr|fBR
zj)}91z;;!29`H5<xIGL_;eoO#6sk3o=zuJ|NZ-r9!g>Zhc&L86x38wAWIFC+|KL`y
zCfiy{z!Q_yOR@%+{2Z)D&O44A*PP`PZmcjrH7zpgd%`<}E|YyDz7Wk-p1rrJ7~lS!
zODsN#sei^52j+>uf42~tznXmEC~eT0#3s4Vd!2k?>|05HNO!7^=9DhRs6M1Kfj<%M
z#ee!Y*y-Rw<znu(N^M|Qed0I%95*e$jCCtxP2y{J&cn~__-7<cDqVpW(FM}M+nHax
z%F)TfxBky>PCpvzVXK#2|13%2H@^S47F-+x4)UgTgh`dEqqOll#w8xIybABng(sru
zB%Mc{+XA1uxB9$^j(Q_y#g}vGm-+jXj^X^I>0`}Zs1_KL!&<rS@J*$hLmS{D>h6Qj
zIY%T~Bro=4dkDw!Lr9iPvM@gmTy>gr=uc&I=1O_UdDBVru%*=l!W;Fh{v$62&&0AS
z_ulHCQQy)dgKvX<e%UzBQuoOmb*;}}4gK6==^$Bkas@|yI;o`<lVjZOe|k=C3>a5d
ze?>jDB|nFgx=ibwYAiF(p6xh#aolUjjRPa)kzuu^^0C5jsgZta3pbXc=ISzg8xP87
zg1+M2pHpM5Zv*OE9&lBD5dEfpR1UczZQT1SXjRiuD9?lE<s)!XkJzzjpCx=2PNe6=
z&%X$GEDJw~kNtJjcH%W&Gv|<fU+x+&AB&ZQ&sfK6OUr4?$_V<yDLisa_8PW9lh%UT
zqfr|xE}Sgu+-w9mMK68Z<D?2ByIa2O&3{E<TdO;<eb^n&MN@@aYKw(ib}#($o=AOR
zTP9h!Mf^GrueKH^_JqEYWxzM?um{F?HUHND!+3JMG!6`$Z7Dk~!zGg}(Z?$GwqN0i
zc22QWl`ZfMa1z)W)kNx+<1YMqDQPbOXO|E+BHsycth4mCzkIsVPJfMsot%GQ9~U~x
zH_!)ulK6v!hdBLPe#6eH%a6o$?lI&yeYc=?RBtY@CG$JIad5N5-S4#_w-Gm1ispd1
z7%Pq6wZ}`LQ;-AZoi%E=Y4^5=y%e;uXUuZTDycEfFXzTsBOx!v^@Y~t{?9q7^^?)!
z_~bbDzUHK8%k9Ub$Q=BKyxdsA567Os&CG|Z?e~4P$i*Z&%^2nu*58^ZwdRt3i4e~P
zKEYqZxOLv#F+b6GG*2d!uJwcwee;F#i^18G^7BK}M)3kPc%=Se&yES%GswEWg~Ap_
zCk$JCYm)fdIG^vh-#w;!vQt%0dRAvaH8+YMuMGI{A!Jqg+85CNgY<>oonlu-^PF^-
z#xvQ1PbPWOaq)}hsi>PPMT@!PoYBNa9`@Fv6C=f)6%M;kJ<{^9=X7-P%}cHnbMHGY
zxz=1FeIwZxjbBTD($D*{(k<_`{^3wB{E9ZDqrOC}HN)M%_Rke};1hjDXSQUQcF<lL
z*~_4}a)t6+8D}T<mCN}(hdRTV9VO{_@ki4~@U^(;d)|%G8K>GkC>+3pZNd@jPnDl!
z?H?zvHQ+6sfl$4X)G~CeU+;F+OQ$OkHF42Xr=O5tp#%FZPQK0vs?P)UyS)N!O7Cb+
z5p5mlFIq`f&vx$bfc1@_n~4R7*6jxgjHmhx`*S9U)A9|21NbS?N&jJf7<UR!Ix`yL
zDI4G^ZP(NmPfeWf98Td6=1fPVWk;zu7?b?&aoW_FI~mjewehen3dbSe<9XpYNEiOK
zCbQ!q*0;Q(x9F_zXHKwB6=6&!!+gM)w6~}|EA6qxGT1oOH^p6EjqB4K-<yAq3Z2kO
z*>mB;mm!ZjPqh|$6xifg|MuT4<b$$HD8HKU*ngw$nxO2-AWl*rU0wG1#@{2nG+3Lq
zf|FQ!zo&gj?LWz86OU^j62By@r!^nnx@Zl-_r&4%mEyJ8ZT|BqzW1XYwIN=&`^D@#
zstw6~j954f+nQbfj{}(G%NI@L-%l5Peix5XpZU+qqw{U_nCS2^`V{=y9|`wpS!>TH
z-|o}m3z|-c-t+PAH?c08noIltN_;+X2#?`UYhVYO>-$fgRj$Ej)>Gu0=xzB0YbN)5
z2S0eH*K-$g(c$y@d4HLU=sVC@e(bzf?BeEvY~~5{<(Su%(%gm*nQuNX#}>8kS@@<7
zJK^wd`%RGah4!Ky&f=Rwp)9{-6n@zXzck|{+_%!0t%Or6j42V0zQ>r8IKhuB!@?r$
zdzUdo9mYIBnS+FeRq)EioW~=axPos=snb9>LR*Uoi{8mI!0aRR5gwuZLxhuryD3-H
zv)X#MF>Vl^;r&^Rgt2${A$=LM3}G>S+)bG*{U|)ka~JTfCe+bR9dPETQ@WIA%05F{
z`VwOf@%{+mZbFehw=jkV!u`Oe;1*;Ha<-W@pVm$ObM!pvHWSA;mAVPr+Q-xNlB=ck
z{X2$3LAkBOV}v{*#k?UsExp|3`rmxWXG_2HmvDv~-<7q?a(u%i7;cK0gzWtq%8P!Y
z>jh7vt0&VH{0s^4slJz)M_w!Q%Ljf!9(rI2d+!&KZ&>GO4vL!hm*>xsPiY^#GVU$8
zi+y8sq56=nQrl`v{iu)XkI%@L>?O%4a@driFQ3<BGj4-#kyZ9o#M|NXYIKt+GCyWM
zJ3UtIwTbu4WTCtgSwL>4%Ofi~Uxp74`<iE+MZj-s-_M;aRG0Id2UhvT&Sebk$bCbw
z&b}G^*fa0&x}AgIb@6-@d(QGYXFXnu|0y%$yI%R&Tj|S8UdP#7)|b2=!G|8B-DvXL
z$G0-SeJ<|X^zBLZo|0cWUI^&%8FWD|z}r6{-=CuHV#Yd?rm{KgSfRr>?Kp)(RWt}`
zD!=;@`V#KzdG3TKy1=W>B#PELlPEfT?mvAxKR}t|=pMB(h8|i1tX+2fvZC5JIm~xJ
z<K8XOLGbS`;2Q&`*?nq%X31yN=lkVLc-}tu(x+fcnwwa2$Sz%3JxKqyZ+wI6>($0e
z&LHpOo6`||s^i`eeaq(=fmSLP;_4du5szzp5ym9`(sxxaV_wvmCGqJlov9LToJ>hP
zcp!=GgkK|8gbxmHJDx~xv-M(pTPU0y4E&ZO0Zaznc>r8E?$U~UYse8kFnqVkpRj%!
zsf25!<^p{H|3SOwz&#xJ)DNa^^q8BPmIz<&b76lAu!nU1P{0fFZ{1zk=iQ_J3h%7k
zT^RQg3vW4YVFvg4`RAA9M@!LW4>+uYR+HfHpt;3<PZnw6T)2}fEkq9N_>o~$Qev`r
z3wLvHS3>e8)~@5Fc9-wClIMF`$A)_#+7FS8x1;Z04E{{!25$|tP@094J>Jl+5k7^7
z0_VdI!W&x{pG|`g(R0<u@4DaHM&4@hk-&a_D*9X=)OnbY2OHpr1onO>`s7u>Dw|Sv
zoZ1@>WMVFQ;UwweXKcZyzCb>rln-GNt$Wc&ArHP69H|ZQ#AtH7a&Oz6_WZ^hG`2v0
zC8*yxne!z74!m_O@oYWyhQOEhoxp$bDE2k}2z%CSrcAdZ(?xWJ_@H3qe@$0+FmCb3
zXw)>_UA*19$K3AK99~{I0FTr;dH<X2!@G`iM!))Jl+6{e58z9u@TZzTFBE@nP5S!b
z<pGXE8OI;u%b3Am!}yF@SIV>;^`faAC4Fb4Z!<M^@pOZDI+d<`CFbk?y3%N6jf0FM
zW0^?;GL|fkR#d+Wnww=4C*&X9ANbdc@akxQ^Bd@Qc|eODJj++xhP=Lov0p*_Mq=^K
ztBO}w)<}=2Y=Qms!sl57>kbOu;aRm2D_~npPI#k5bk6^>{eP|Kgv_<f!rS`<GdR{*
zyE*S>@xYjc6Zyo1hgb=p7SDeaj6XMH{Fl!d|7A1Ae{L{-7}AcvwKQ}5AE}(9@t4p!
zXTgESZ|HM24!%mi;&}(2|1#rvzBQ1(30bW+;G-5`ioX>3qOWtzF1}@ZZrhSu?VWZY
zV_Iwd-HbjCy+9ua0zAT(R=z{I>UpIvS8JF*B*(G~nD4AUmoBh+0N#-gb2+d*-(04;
z|Na7cA|bm2ea8JLi6z($(i6)*<FEPt5L!RbivN`UmbZ+0nT7XbyJ|l4_dy=}^%?#x
z|C+NHtc^q2ki5$-cp$KAx`00>oY0oqSq`4MiRC|fKG-Gep9J<aFo|A8`kOiD&eV60
zSlybgJOM5e!8lfT`{VdLaIFs7`0GfpcSw78@+_HBp6HpbXP!j1^ew%G6WUvQ0NVU-
zuAw8~RXQ}J<4N_2j1Nal)3E!P7cDS1xDVO1pM%#>FF(!rXX@os<o%v0RBvK@FJu#b
z;7PtOqCaahBY)BlA)UIIvt(0U{v%(1Z=uaDbf0kF$MZvPyp#3psK<99(>mNqqNk~|
zE71AZQ7)h5+cC;?fJ5nKr%;Gu6I-3IEWmH4#!3H@so64#jXEup%tg;Dlh!W*JqmY0
zTf!m2K|&{eh(~ro(`npJK4$03aE^O5ePjcD+sd=%FX7>t7GKu>9KJEdbmeMz=y7yd
zv+%%J)$V$})oe(OFBnM{y$1Aq5?i9NxQ{dI{+O~MuYk8r%$I^;B$#Kjz!c88FEr2I
z6v)Tp$c4TiQ@<aYLGxPh8`3S5ua&_b_8Mo@`+er-*9E*4&S(Gm>=_w7#dA2vJX5%H
z!PmwA$a2#c(b4pUZFC-MhNcVIKMT*+IPNc*S9Gq#m-%+;NJoU{VX#T<dG;Rklz3(y
zxKqB?@_Unadduray{CXFw8_2+41zrzhxn*v#u$FZc!fL3pKQCkv4bWF1?1s@XOWwN
z>{K6?dui)#=KOouGp(s#TFF5RM|K_On4-{aWZ^pIZ1x}PhmZf$vz$Mne#ZEJ%ZT<8
zSVJ4m{+K*rl+Z_5PZ%QTk0q@UJfUrTCw+!vISrk)H{O5@S|2j|IbQ?**I-j3+w-N<
znOmZ@g<-EYHhiLvI7tX?K(%A%5o|!!563P0kMBF|SVLXAjef(m$47V`3;5&DcvgE$
z4#O|t%x`a>*Mc6g_j;AsXJ-yf64w%oXSs*X)Bf97z_Ww&#e%xpF8+dcN0C$c_m?>4
zwMXiATboh&QTMQ2Pbu$@=vOp+aiBLQetr7$qK%~o_}Bd|jx&5*w!6}_PVm18U0H?x
z)w{9vP0PsfRnX;~^uIb7&mV$Q>2=vxA&++lyww4ZZvwyKFX2}9>@s9u<L>175be~l
zPO4|!cp30D^PJ#0f=}mS^1^xK<@AvW`fKL-`R0^M)GzkkRrG1+32^+Jc>)|}Lb(T?
znRCQnAO}{akf%R~|DVss*i4?zw`dGHzp<KeqzQ50*Z4zRNKRfJ;2{kj76y0_4kC;#
z9M9=roo@Qsul)HX)B!*F6})p7eZZGL=2>mc^i9mAUGY{kXJ?v&J&hOBzUZklD_zi2
zW68KTdY#}a<Tv4>5x&xXW~dWoZ#BbXF>s@AVWsCE1)l7MFSm34k7mpxqOoAv9IOqG
z0Q;|I@WMm9-$z~PV)c)VTA1v-nSK=A{-FJyTzNOl(Cs^T7H^IwZ>$_U|K)alGDm!h
zZm)t@bh*{*=yPu*`QS9{&!^Afk){QvQ2h+Bgt|-ff?z+QIRhQ@cIf>H^3Q?iJ_e5W
z@I2F2+C^F@v$ry?3FV_#LK=M*K2iA$xb6ba_>{a+$`oSY4SE;A+syKRPJ4Hf7D1NY
z4$fxw^(W-b<Z0m|To=9!do0u=W|DJG&~pp&IYhr>&@+Z_K;wxdxub&TEx_V1m%j*{
zTDq69k&pw)UyJ*F_RBwJZDG+{w3kk)EudcrNrJVXz{!_^N#7i07*qC5J}+Q5Ol=9C
z*Yliv<;$68d|Okt;X2atLB4DYjWN{yZ=*fopD|RwOPlg<nannC8PC95-65F(zXrOQ
z%(!<k>B8T(^g~{WHs!~YT_Yb<OmNZGx8mlB#gvmR#vG6srp(d$QSXR@Uj;d^IzE}M
ztdwq{t$WNq?+E$Am+Y6L=t`B-8FE{e^mnLi0X`w`9^^~<^^?fFVEjoCU(48J^Xc1=
z-ve&t{VRDP4b|6dA5(K+t6ZS=8H4o4DEn?2i|!?DEKYcrWA`OnkWuPuOrp1Jnhd_h
zF3yX@HOAon)W71nU2+k~nfy)1NDIG(Jq>@xf^T83A$>{e>WXnURif_SmvnEH`d#Q4
zD+}NM<>|x^e~G@G<^TM#WDuVz`pV)@b!3AjfVUO+Ukbd!rPeyXfWGp9YG3?s=}$P+
z7-!1Iz4YNi-=mb*JRIWu2=9+mU${n2%U6I)o%Ph%*m$>mC^-)G&))=d*kk0WoYp3v
zqU})c+<`9K0F6Q$6MDqAO+FOAg*4GBN&922+Fx0{jj_+vkF1r;(vNm7#%9#nYuS$a
zPNk7}EW;X^XX#AM5!&a}y+IT7KN8qEY3#z`;Q2k+Tj6>D|4KqSI2<>+Gw}}WuF%Ha
z7T`^Gl=kRHiVxD~9iHoc&4-6?F0%#ktiHVzpG<fc(YMbp>FPfQ_4WO72n%q;bEya8
zy^K>d8Fn8<)(hqDNCzQ<+t_Cop8J7QJam9I!f&guBTe4}e~_^`sqc92q1?Zs3uoGs
z8!4~zI<Em{ookluIWym$zb0SyNSH609fHqAx5<`K?{4XUp#7(2wZHDaX#dI}|ApFz
zPo~_&%RQI*G?vs|!v+2o%CCbT#E-9Le3Dt|GV2S%57d$>dXE8PIM2%$+=vWbYVq?W
zFPt0B{UzT4h4l-C>K1rph<WN$@ECSXHK{xopFDjJb00^JJ5_%9i_=Y8;D6!$=fB{L
zkCjKAYxM0>@+~}CgXFL+f5f}|(DFaG6o3o-H5PKVzUBsfNAiloebX>a(LRR)u&p?o
zMJ$_SeITpnA~T}TN8vlAuMN`Y2I;J6rlO`$=AuWNe|3=W1o<Bi>a7mae+6Huy*;G2
z6Nlfbe~$MPfgJ!0e8*C#ew{YOgUv;)6Icf@k8zf@ayS0rsIv?Iu5Y*OOZxuZN$N>n
z4}e4FqUsl@Z@=9Kx9xY)SKuGyn+g9rsWf*Pa1PjIk56Z>olK!DdewsKl)g)ZzHaI(
zUOQ(J7BA$SMHV^Ba;IRDZ}XOJ_Zr;$y*kcv>%J<J#s5KQ(f3EuTOZf?&$;=r5@#uz
zn$1LIF>M^<JC(U+;&GGr&yZ<9;zHx=)H;=8j*9YqNCX&4oQuF-tm<sJVJxos3g;RG
z*B-B(^AWnEDg_L#_Idbr>KJDS*muM~t^H{3vvb+QhAs*E&>XF{^&PR!Mo355IXpXI
z&$7tx8K-QKbsG1sOfBL&r)X|{sV=v}YoxERk2>_V&JIe(rIU33g3j6Ajoc$3y0eA3
z)!#pjfZIIhWS4{6ICihj7Poij7wGKH7WPuLPkLT|E@Jn4I&`-*`={J3t#wP&H*yu-
zQ6hb%yMs9!<F(<3j}`e2nsmXMm5cxb_rFqRCuzBg?&8rt`%fJ+b&5sbu?%~T-RwDj
zz!(?BvWU<bgzO)&UrBIL7+cr!%PPd{DSJPmf%i3pJZ<bFu->RH7oOQq)0`Fu$FeKb
z_ZI_SXFqn9-gWP>#unat{5{e|$FGB<p`ecF$z5aM#&1*SUgU!uh6k1ea^Ax_d|7ZF
z=Z*M{!h6DXu1Ir@aKM?)itwO43f%)HeCTfQ6lrQlcb$dvhdnb&AFS`2vg)tMeV@Sb
z05t1_FI#iMBkS4R7<QrVobvk!?_d(&Xx!`p!qfY`r%#@KLUVb_On4VCM#*$L{HOJb
z-S;c_J}A`@eAjAkl=ApWn-&3^^ttqz^!bmdFF5tR)fnmGt;GQz@K+=j!S~j_N!`YG
zK06kWw;(L9vNP9ZveVSA11|B!Jny<pex~+d%=*T3_Bj|fniJ~-7@}&^<vvYdlpk7s
z>KxY=2YZ_JlyIeddygl5$G8`C%eGNu2wCII(n-d=82kvX%{+^TL^quq8={?Vc!)i@
zsgMumu%=zh+&@IVl@H4=+kT5*;DP8G%HgA#67SJ2e6_<{#d~&}`dd>K|LJbgEaSCw
zhIW1R<cZdtt8(EReHY%&-fje1^#QkdE6IBUA;z7d;;UGGueS{PY8=fOo$ckDYsQ(%
zbFP@NoBR!>X7{yT8_$dBD>8|l3jW(B_p)Efei+};jFTo?(%xeVFU*_FmFA>!r8~iI
zD{Zw+3J%(yd{@Ox`ur!pPQmBWW727YCB;}<i+j1_T<1;oEdlGFOkas_x;TrCUx9uk
zV~w;|SNu45I80g2aV7<;za9`@HfQ#GhqadrEOP?B6piHHt4sRy4*Bta%45RwY~FgB
z`6#3{-#;~lve|U{^rOPB?yBVcebYx~@Wh`{&X?PrR<;Fa2XHPEZd}Idc3b{*cou(#
zZN}jbwW)WtizSnI5x98}7?uV6{ax@M>Iw0jg$-P3%?D3exo>mPHQ@ax$9;T#o_#&5
zdx7IH&zfsWZ}ol2pQUY`WwUx4d`H<U{;j)%a=JTcO*NJKy7w>iAL>1SZ7*GL=05p@
zn!j~6jy}|;#wVH$I_C4?J@{K_Lv><#|87n_W8?8nJLk(Oe;aLtV+nP4JotVkAM8<X
zr%c#h5AB8b>Z3;z;aG$x=~cBkOnJ$h)w$qO-x^Cd)A#hfjMC9oKU3byGIN#mv+B%j
zOL?j<-<!UX=o2gfeU{R{Xq@7%{eOffX3|qW<-T3qtC#cfZTKEF3%$p3+e&@tR%;J%
z_DHysF3;{7wfL(|eH8tlE}wwUgeR4YnUC7@lEQ6;^u_36>0x~{Abwj+d!GZAlYASK
z<QrG%<X2Hn<EZ1^*NaN$Tu!b~hA$H9k$shmQBQhEWpyr7I-ngG?3r$KhIDDDKih%#
zY&ujnayr1t`LsQop3U&)ODS_c{2k7%+N<C@aQglh{Qps}8T<%7=|1UoC-tRc;a$wX
z0`E`qT}^`>+bZ1$!d$Y#-b3&RwyC{y8hc!A31@bkXK6z+ue;raJJBnI`PINN8|EMX
z@bnYfYn8lcJ`ivEXI_V=&zwkCH9mpd<<phbv>_cQU8uHnN6$MR=Ps-wYcqVpI!7dY
z>nxF(ER<gZeBs`NXeHXtMF)iIe*Cf6op)HAT*PyXHKXeHQg0D^y?S0ly)6OWKPFrz
z@33?fy$`b{(l~_+&JZ_+W99j`#(FnnoezB^OVVYQZ;&Om^Ih7}dh(^f7Op4t{g7-;
z`N5>WLfxpke=OQy!|?s-G=9Zz!j<qMJW5~PMxXyYqs;hO;QC9-uqQv=&b!Y-r|p!{
z+B+QIC-E7~?rSS$4gjls6)E7hdMcN$9H&pExnUYK(0q4{F}T>RZ9M-z{cCQF26X*y
z@O=q>iNptm8*K3!>UZ&+4e<R3!09Ae8*o=p&t2U4!Wv0*xPW$LkA-_U-{f6u?zg#T
z*3>Hd2=r~p`)7%q{N<QD@2i?z;XcldJor-P?tS<S{cmen<8aoz*8TQzeGf5L-+{7j
z*LkU#{rtqzYrpsJ@T2(b<3T?5&y?mB1N^4A&C@zs@1kRv_A1iOA-|Pa>#k1vUXtT`
zc5IDE3pQznvzB>uSeowuSt9`>HW_zw@V%ONRI>aAV2-)Bg4UJ#Z2;`Q_u20hYH7#N
zp62`7ZNnuuO<bTod{4HW9Oo<Y!?d%;wzEg=<UUF}YpOTX&Rojrdxx20mG1-{Pz~`T
zd`#9uV|*{V+w_m2c_aQb`CWAPm3%PT8=bk2cz`ynZv%Vj$M{$D?U>e0(m9-4K=*KV
zpE9;z+SYeV@>{A;e1Oyb5q-03f;;b=+%mhz$GUUs%pTt}j9+_v{@qME+ctA7+T)W=
ze_cSgHwF3H;|t}U?}ap8dw-JTR=oWsV4ew^{0f%OiUDjzzVAh^JyH*!u_m?q#>M6E
zSyvTB^r(Ea@LM$wZR;2}w!7%ZIQgE-c`nbz1D=~V3-*xbbpQGv0Ke`<7w^S_ayoyY
zb-j2h%d>Q|?jzG4J$K$!#~6eB9`Yy8BOWELHRx4jOk;FN`wP;9pYsF!@Exti-)m@3
z=`Rh^j|b^GSEBUa57IfqY|H0Kce#^Z{AuqnnMq&fTFw31Q@8iYxZn^Rh;Amg7uh#H
zu7h&o+cWfC6Vex+^}k8fcr`~{8o=`O3123^7{H=$vjyXif^@!xv@q(tp!PzvpQijD
z2Kkdg{!;R_#@D?lN!Iqq%16Asz7cS-+e;s*m{Q?F`KN0;CLRX{e51&G2X_qzcSAYA
zojfv8(fufV3t!P%q?!FGC%C6%I`4OEU;0n&mtUa$*jd^?Mf<wD;@I^^u#G1w`BL6<
zvLDi202fB##Ym=5E^ybQe73P<yLV0!9%WqWYoX`k5?*Wye{VqRMfur6neE`dtvQs}
zU0ZRrVG3o=nm=LhLSXEzXUYG>jC}Y`zddGgEqsUHCFq+3{Z<#}tSZqg?PmC168Lnc
z-hMNc2KHQ`EFW_$g*}080k_px0$+HyS%mil?}Z{~f1veZ!N~Zu#;*a^#>4)d8~cGL
zJQp9{amLzozP>fHdOIEb#tz>E#Hp(>iXPE`@AZ9U_$>f7S@a2bC_Jw$*yOkQA!7{N
z#zxiMg^93Fo$1F0usAsD_!+0hE*wmc9h_+F8nb+7y2nlWPGgpDU@LgnSVfl_V3sW<
zxc}xXV@*<?@mBRs#7vlKX59zJw-IsRZj!zX$3mS28joywA6I9-pO{Hc{a&2tiLcAj
z)8u@5PLC(!uV0Rpr9=6xfF$!kAZN8%*2s)u4r8b*A%DpU>!11tYuf4Gcl&?A=Su=U
zN7qdAIsD?p!He#bdm;Wl>lo9FF^3ElHO5z3xo{X?1e$4GFTIT%Jt~^Lf<A;x`G@zF
z?zCe!+-a)ut6%M@$Zx4T;VsXWeV)~t^)F|PKct6fFP?xV(VxR(>PvI0_yQV7nMV@%
z58yR?h#CL>KJ>hNHC6a_DzAAw!}q!1TJUS`68{M9qaly--H7fv#n0(UPv{$Fr@;6o
zHJ?myZ&e|Rjlz9Xw|ZldJ&(5(ANJ<vM@pIxYqBGy*MR5d9J(=it9Q)heggW+)lZ!G
zWUzn!a^)j8I&UAL9r+sNTfB^CaKpUzWo)!t@e$*TYk_B3o2I(ulh${AtE2;(jvYSg
zJ%-MG8u~fKt^5uga#-ZdY;sp6PoK!|eEEmvf6-Y^`CTL{l94gsXhnC+4|<IGQLxSh
z5Art)7g5Sco`e(aj|iq?&`a}>=p|Z-KBAXBYfJg_q19Id{Pwta0<(`_ovUtS4D+a~
z_Qd~cQ}BlTFJ53>OrPvWm$*BFx}glbh;~C*bw3opgTnm|+wC_(;!XY8-)+qLx;~nw
z-wvLGeG0yFY7~!a4^iV6&xLyY)Y31U(0S(PYvZZFH~L?-@#`08qco$99_Z<~oOi+&
zXgD*+G%bDs`0Tmo7s!A86KCd@@Q$-n4txv$OIA(>_e(HeTi<?opIIAczI312Up#qw
zO5avWrl9kM%=PCRGg4BT!YOcu{7fAHN#SplJhqTIR(OUNX%`vv?@j3o`i+(f_1Tu)
z3pAIuv)7<+2vpX%Id9A1-3#Q0iE#!xRvaN6o4;5nZ()AZ9L@J!=-Cz3_EOHv(zoHh
z2y|7we6Q^R&QkTe7vvbvQ1HHm_vtq6xd{JvKxeioJMdIs?>@_O2>a7P+W*uqsNWor
zeCSN^Z2#arz$Y36eZ8O`+x~t7?PyNB2VBhj9RkVhEASiibR(<TTe%B^dl9bZ_g0v{
z_*9E_3*~jkuw|$}!amoi*-`l*?+wI%MBGOFe&Qv>?;~D~UJ{O}n@FehY=3K}sZZ&_
zSkma6455p#hOnM;zw21~C~wk*>iYB!?%&+u4H2@0y@Y*)Li#J5v0xm~LALolq#c;?
z4!x@fNV}VGh%iYwNZ3ZbVM2~QG=1wSeyN3zbpFNi5xA30lLCJ;d4umWtPi%qaBpVN
zXB^!tTbOl?wY6Cn^7~Ex8d~#;Y&Nxjwr_4%r*?RsC11GHGwn>3kO|3OBy}G$0k3y3
zuUOizu=A6?o!vWi`U%~C%8r!wqUTE%B|C~wB>iu8^=!Xa&ZH}RzgydPJv7N<8}q$0
z-;LXQG+OnYd(OYVs=Y(sysx(3Y{%00hv8@4n<2c4Z^CEYK@<n3pMr~;AiXvlo_~3-
z?xAhUsxSJ<?%J{781L<l?n>g0mJap{XS6BZV)0DAo>SNFSfF;dEY<se50;_-L7k>^
zc2tg3Pe0Lr?vBbgh)*p1F8x}6NmI`X!Ej}@9b7eM`R=@9kN4O%$qRR+^1VItZIkvh
zV$dJKg#NqFN`IeMLOj0LegluqQT`bHjhgM1eZ&pKw-dJ!?<HPBd@FI9_#p9m;=du5
z{~=Dl!r?t8xPO4>1HrS}4e_gZ47`eddOkAaS$B|z>FqO~$7hr|6{J5)-7`AwOg-re
zwV`jrtu3D6-n5)=yG7H5GM{x~gWT%<`MH7Li+$mD1!-|}>*G;mOuxy*nh$>nyo|m`
zGN)-D+a+veu6Ou-J$-{E-Y^;6Z8GZJMjP^-IrD;cgS>XynIO-(E{EUd%4#Yz>Rqg|
ze23D5y{`6KX#eiRquxUV>2&RZNyd*7ju5ue?=ysx+>`wzVVtx)VK-;fq?5HrI7v7}
z(6{l@uhO?Ob?hT8_gmXY{`0Teb<dhAyplMP(Ohv=^*WwI8Dx&EsxQrtF~)a{F__f9
zd5_Sa@T+gD8Mo|F`z&0ltoGQM-x7WGcY1xCW$#;fr|y=+CkHNp|8LPFGusU73vc(L
zCqy^lMR;8#oB>BVo#PJV9Csh*xC1%IUC24Fr<mgo<Q#V(Gv5-12wB2b(qrkOSIcu9
z!4Q(9HImlMvrA|ow360NT8igIgf_xr(mF`%<arrk31K;DBczQH#(B>ZMhUw~-%GrY
zP$2If;sb=c35N)igoA`_<P8&YsiM~dkBl&W>F0KIm}u|wI(s0FKTjx6I!)<u@UAl{
zN;_NrKJrvn_|%yf*?7}`;O!5Umb7Qr%iyt$4|Xb6dOi2Aad*1Q{!?--b_@CBEuszG
z%N9Ge|CqihAEJ!TL2y^SU9ZZ%mQAa>Wwi!a#JU2$oi7`Cv7VW0bsl1go;&=rW4f0@
zXDB*}bv|MlvA#85PTWeYdk)%&yNKI~GsG$49%9|sw4Qh|aUZencFGcW5N{!Vr2fc)
zPM){&Tr~L;%XrT5JT%EU4xUGOZrH}Xc|4Et{AA$>-+D}V<2;|@cOKU8yoT|05idG?
zguW-dle|Z;!+Lnm7ALs6tKh_veG9N>9eDUWd@A+Ck;jAkj+p<;zkx?%;6=YnxCoxG
z`;pl~y?9Cc0I@85#Ix4JF}|Pf;8|zdI*E19$1-BwDI-2>BTf^y6L%4(h%>~Ch{f-V
ziPsY^A?_pYAkGqZ5^o`1MlAkcPMjl76Aw-17L4+|nrD;AfeYk^=O;O9HO_Mv&!={g
zb~tD0``A)s2Kwr}YQr}AJ`CUTe3JZMGuB$3d%$aFexJ7_v(HOs@v-mPQPS@c$p^8d
zFjk4BZat>?SGw8ytl2}m8Q+}NNvxT$k<%6N?WZVzU&Z%NeUfMSz~zTgAF0AVuZ=zu
zcim7*kiMAwwjymq8|9nHLUnIZzgs7s8?$$^>?IbzHKtj&G5^V~Q9t(gP3iX_eZ|an
z_TjHCpHF+SjQr+T=`Kmm@9y>1u(v0_<}i8kS9ZB$w8J<i??X;*^|}N9;zw+L4*Bu-
z=kb43cWE5ybmc>8m${|Z_2=ta_sd>|_UH00-q61GT+;rHaf&AdORTuv`yTI&X?*>p
zHM^W)XKzfuS1Wkx+zD@hb{m56g?O;zW<4pH(wJLw6F$%7_A#zCReXis`>AKgz!`ys
zf*;(=CKg__AE$f1)(Up^>z0vT2OdPXo0!YP-w%zG9^z7C)_ip(b!rWJpWw`|!*6-A
z7n&q!ouV?j3rqdD)VZAUb=pIvj@rj>|ET7VhV)0hIR)lh=+!{}oXL?=4RG3YcYCRp
zZ^&y?H`_X{h3})BW7|>DS=?6c?rP9JE$yqHIWE63OTW4=O?|i1X9MurcHLplZ;X^;
z?ze$&`*H5yAzi*|`J_fl`n_nATvhoG(M2$+Z_YhIyD61<kF{~qRd8YHBzwlrcg$Hs
zfuBJ<l%>4rtltGfj>@+Obk&(9!Kk^n#+4lG_bv|jNxnwWUHQrz<^0EJYP@n$kdLp&
z=4-!TB+t3YEZ>r49`lAf9`g#N$Gn5w5qO9@e(vUupL+_syaSxy)%n+h?A49rAE5jL
zlz)Ko4^aLA^2aDYM)@(y^E(Ul`wxL1lrvU|9_|fSS|j&Vg=1rmsGe9@oc{fT&a;$}
zUK?RuT?hXf?oJEO&NM*t>jFIJj6--o)u%K+1%EM<^Yq)|CDs_>`r`5W;sVwV^PBKR
z&CcW9ksrvx2lQmJXzRvY%}Io0PQIox=V9aa_sUZ%Dxu#%yxHUEKGj@hV{krXy)(KX
zT&t|tSxRWCHOhL*seUeqM}v3~?JstHc=fC@i-UMc5O)M|XAmzVULMrZv+67lV)1O6
z=SARG>B9BQ_toUB3F_)uW!407R}g1{xQBRsP*%?>yFQ5ff;bz*nzK!^;0y)tTY`8i
z@iRdixgc#ch{u9>Jcwt~>tub-;t`tt7QIfLB`>SBB)Y)<_IC&NIrC|Fm(LreL&$q2
zaWnQ$EA~=jQNE>-l7rrGlDU%ZFK)wL)*0htEBGE58?%j2>gL{~!@eEWm>RWr9Lb(+
z#{PO0@>{~za(I8OF}HKBq#DU^cT1))KTkhx_&TES=%OO`Ex5Zq{bq-JdX41CR&B$k
zmVZ49f5=B97&)`iq;K)x%f61)kF*I5qs{!T;y1~|Upv(TO`G8@aAWW9QT^7lq`57?
zfNZH;Ym4r0I@6!l4(u@`ShHKZyF?!IhLs`FA;hNvmwyP}w12_cwrOVH>eod^nhoDG
zxO@kPoRD@<_c+&rU*q<c;+#)&=HU-c4wn|PzdnaEQBlss>GvYgxsU3%6{6|hr1Snl
zbUQS2@X>JJ-REV)OK-?_H5vbRcN>$WrFWFXYi@eflTW#pzM8?UlkTOTE335gah+3&
zqobW<ul38x=B+ipP25Z@TEy+W2Wx3-J7EX=?A#$?z!B>T$&mJsT!Lsc8^3yYUb2mO
zqffAuzs~RfIM-cPnZq4^_DtUEhAYzNwlDfNnQJO@3}^l_BPH7heR<$o`RZ5wb636X
zU;B{I+tLJ@+rCSOu`{`!D}pU0dN?_szoQwxQ?#_{vUm5(){@W3$;$t6WwmtusE5+S
zKX_I3Soi&&{OFp0wB8E&4Zlqj-<v!ko<7C1`c}UxGn3YOpUGo-*Blc^UhLeJO51xl
zH7CVgKP}9k!~3bFU*M;V*jt5$qE}nJFJI3mTjxr)@CVkwANWO)tyNX=|9>S{5qMoR
z6MW+T=3s6K`CsYcdEr4kuXn?r)jjl~vmNRS-ERG=!k@~Qf^+ebXX!!lpw^}*79N3q
z=oZ#5$Rxi(SBSzt^P_GdT58F~!}8O(qpdJ)8ox8r!rvkiJb}z{F6fNBFBb2mfoBD_
zKYY=Muego5if=BSqnogwr*#t-N%^`djc!W+*Sbk^CmgD;P=|#0lP*zuxW6QOL-<i0
z;Zu3SXD#~JFjt~85--D-7iC=)H6tf#$*;pdUza4f1nA@2KKzCq^<IUseT29<m>=Ch
zFSaG~3tHX$f@rEc88IUauVm+i)*xT~xYQ9JM@=Rv8ijZ^MeN2Pk90?OFpFl~fs*9=
zBuKn%L0xfOlJfPYILtlq1xNMW7T-rHU#a9yvej0PFCRS@H|8SkUrMKI{VKig!mq;H
zUOOk`DoKmK|5+RRXhZdd#|Ct)1Ae6og+Ha~n}peE$sjF)49+Y&yM7ve(U^pb_QQJi
z?>RgMFV&fSCu;wLeLtQxe&IL9yOZjuyc(QAuRX>Y$)7O!J@CSa@FaR0XsYKnp6I{o
zxagoFdMuec;g|9A#~pS{{@&R(Ir&MR;FHhj*^K_K&nl;i(89)(#FK~OxjqsnKRqXx
zixK~wlS?DOwgdQyzH+OHKT-Rc+<_o|CP;5(QK@pPu@ELdoyfJH!wY}yD4@Tk{3$qX
z@^53gt!$=GP9Dr1Rs89?+))(8<fme}6bD)+KV6%<mrZxYLnztFPepRB>&IJK{C*z`
z;^pV7Tr9WbmBf>Omm9~3P`f3?pN`}XvKgxU^*ChJfBWnG^e!ely_bk5KM~1oxj^a3
z+~`Hde2Vl#f8ghDT|)XHCzs>iL&4c|HSyoo<ccibCO>^%?!a}#2cx-IpC9)qW_%4B
ziK*An@5je%9M3Hu@be!~44&`F5;M;AgT#}Ea)*NWR1jx3`S?6SEO<};iOL<!EoLz*
zI13;4>+Rj@mn#JEB(WKd<c<<ge!4lgY{bt`2XS8zj|cGqVzv8N@O~_aPX_VRK`hP^
zeQSd_8N`i2>;`dL5HAYiB|+R7#H)k2Cy28_yd{WpK|B`3`5@jG#0P@-P!Qi8#P<gA
zLqU8rh)Y3yB8X1~@iReew)^914&uech*WNDhw$>rT;rJHL%FRt_~l|Z`h55hvG7rM
zlOHz(@uDDJ6U2F9%kM$lFisunwGm5CFClIvUQL`LUQeuc_XY92LHs}vKNiI6hla8j
zU2wsNKJ=kCeCWbA3=Cd-!J2n3zhL28-@5pM{_c&vo3h>OdTGY|cDXmEQmG5JZ0zgb
z1nb-TEu?F%c+cvkt1o}g6?#6Oa7pLV)k}#l?^IZM>1Fnr7)Sl3SFFB#_4|VO@=Hmf
z{<~Md=Utax5ym!+PTuz0{hu99Qa|{P-l25&;HC}z*RC4s9@-4&`+qs2JfT3in{bqH
zjPMMh7G&}Ly;)4?B4i2DjRnF3gkuCII@3W|O&B8-2uBDf32u~cx(Hhc2MPBOjuM_F
zG{>k%=pk$&<Ov1B-GmY$73V$>!W`gOM4&5!IyB3IXPU5ghY%Txo1WmImUxSvXZ>xm
zqjp=~=C-x{$-ssl_qDG{p~g(#hP5JC7Tol{VVyC(Te96lAAI8*7QP{6Hf{LR-hpe{
zguYAGcMq!g%(UfUq6&1b?liXGd#+f0>6+Cay!d^qE%B6g1r!_DJmd~s<8JKTI53EM
zF`GWzKh(X&?HwE(Kr0#3Kj8NE^=|C#A9Al5*xYZ2(?2leeyF#v@AcOV3~uc0aoaZZ
z|4DZrun!Gf*W3RZv$=m=-@qm^>^t=79vs@x-RG_Y*zR>hy=r*lhD{s0ht{oEsqSmR
z)8=g7hIQRTy>9o=(BOu(n}>SMA8+oz&h5U23U1H9y3H1d02s5Oudnx7+N5n*Uqt|M
z!_bG_!QN|n2YdV1Aqjxnd(DP^y72Qfp26OAn_;&<={-yNZU(<@{op|Vz~)V1mFeaf
zj2n(~dLVB9=8bFZc%D;k?S}sD!4HQ`&}RUW+UVT^u>C+Dz`LP;#)$D2zI(YlFz60Z
z%<bu2*T?XNHVpK;!g=?Q3%d+jf`uajMg0RG>Zi4J13gHQ#uz@ko3g#@He9m-1kj6G
zp4sAtO{A_H7z86j!c{;ss|4IlB+@Nyi4jyiJ2<eecasG5w}vo1KKh;}6wM1}0PgSU
z?i=X0^ni<L7<epS4=NXmzuwLE^>%OSrPux*x7%I2`C7=B9T)_z082jL{y=7v9Q<Ct
zxp$MAy`~o(GT2M)>o;#0?A@e6O9b3ao3m<91G!X^WY%@}3p^;<f2}$m8q&xH;2R5@
zUe<SSa@Y1=yBRD9KWoMQpaGUbkT-7LG-L-TCKH*c7i1Zsbt6M!XdAl+uiKop_?yM3
zv^kq1v*gO0l?i4Dp5O}QV45Y{HoeAnw|On{<Zh6_hREIwKLD+j;ULYDXm+{=-@O)e
zQB>vhjvQ^+gtV&90C$`Gdg^VOsn0^2O}&GEB8pq=xNRu4*SOQzTifeSBd|w|?_(J`
z=?1j*i1qZ$W}l$-Z@1UakY~0y%`CKcrgiY(gD|t`baybQ^dMcrJV6)F?Rt~Bo(U-?
z1elof5+-iv$~rz1e4R}(Czz!57m39;^beWnW<4K$3;)MrHNRv%O!QIS;<0z}|D3ck
zA~m0C=lPX3d99KqzcHuw)i1KqhIzKykLT-cPA6t|EE4Z{HBoK+0LF8yw&so&qFDS7
zYM6#%@tEqzV}665<+(Qc35rKQp!DcFn)&a8_VEtJ5xs7&QXfw8U!TB@jxwIui=W^z
z9(#)a=f)V^(~k2srx<7b_EwUdZ#Z`nu|dI*oNwBfSmGk!b&fc9kx`qtP{qFGTz4K;
zPhxW`FW+&xNNY^|jINxAZL#LWPqF%)f3rDm;sQ){=Mm>YinS&h&*$aeZBAR_PhDOf
zb#AL+U6J?(=8N+^`;tnu0-W=hbBL*RQQ{HR`48t2UKS^Q#O&;R-}xmkOA<Hozw-m9
zWiAtYBE`6!lCzAL&cp)@$|*amd0CeD8^Km_GQ2ELd`kUPojzXDi3c@=W6l;{RwsJi
zz>DX6f|oUk%arp&=a;;6B_4y6&T%INl`@GJV;49loNiuv5^qv#k2@QAS)X`VIaAJu
zdFe~MM>$V8xAT%sY|;=;Iwf#0lvoehoF|=clCvf8FE8WeN6sqPVQb<ag^(XR9|s}1
z#MN+tbILi&%V>h-lX0GMJ_k5si8^XJKXK+V`tihq244Qtx$+zgnnZIWFHbw)IoFuo
zi65zfpW2*b2`%THpE>_ZYbO$4)_8tyDStBYerh_;*q0|0=P2hFmh`6*dxVf*+Lxyj
z^M%A;*_US$8&v06=MErvcHU=2?O!`3mVm~Yw~0@MoZmQK1d>K)-q)3P+L?kJ&Ca}y
zaIa$`;uzPN_Z_jBW8Yexd7l^gBKED#nRl`BqLKS)r5!)1SSV)SQqH^|fGZ~+5#KIy
z=0%YbXHJBcF&gJx9_6hjGEBWC&b-a4R~ylwJDhnxeKBuy?OUfa@1N8|!oDqY=KVcI
zoO$+bxijyJ48^IlZ)s;<m5!Vj*|*iSBE~o;@*q8|apt|`RlJ=WIl^0)^Z!uxF7Q!R
zSKt3RnVBRcnIu3+qJjnp5;a^+LeyLaf*Lex5&}U11w}<gOEoGYYE-P$QYDotwo%Yh
zrPW%hs8q3{MN3;RXt56}YTBZu-X7XguT=lv-`aCdCg}V5zb_vqd)@ciYp;Dd`<yeA
z{RlfyKi@o?gPvN{->|v(BHn<sKO;HM&)zi*Y@pek?`I!!I9Ng2PIwFa>{r!>L53~#
zv+q(H3e#?4qUi9m2gSjP3|r)9U!YDcwze<vvj;N7{R0f^^s_US7Y7=))X$zzM)(J%
z9YnFr&;E<*8=Ur6>Raw-f3D6PlBQ{5g`a)BvgY8li@;W5MZG>O?JG>L^0WUeUxugU
z^90!%Kl>Sy(JwV@qo4hTd>N6Zd19NNy-6`UG;IRdc0apFIWaPA1K18CAwSE~dcb!2
z*)OR#4@-NIqQ}p^{|K-nEM~j?>@nh%8}<)BJElGwmG(Ns5B%)mC17LB>pi{~IhzSE
zI#^!kTtjWq=qTk}{3~4b;;-|^kN=eZNb_<&r}5Ef)rU+Z@sh*DuGAQe@1+50@t1Kf
z67L{wqwyu9nJweLWbCEKuOmnq@s*6c%=qUF?SAp^VIV7hGYOC#Uo?Vx;~(LCJiZQV
zx$%RsmKUE&a^}bHptJkOeWE=eUV>Kx<2Nx=6vSuZ+@Sc<63;7)Ur9O^#qXyT#qp8U
zctHFh679gaX1#;r<M=x`J_O4{;@9HC!SR==@sM~F$&&c}_&GFw6X`uHeiM}8@l3ob
zjUNYPM0_P-J2d_R=`b?Bj}9#Ja)w|c8a?}9IPnZZ;Kwy~)8Z{S8i_Z8MB@`th{dyj
z(+TNFDO}Vbg=WI&#Sg}JKi*A?i5c987umuj7rpUhWO9E^5*0+htC>BI``}*mCWYI}
z`#tf9eoysA^G?Ud=yHi<=5>?<e_z>>ledHjMQ^?ndOmBFawZm4#Su?y<!uiFLKa)&
zy8mhf`Wqw_ST9keOD$3)g?rxyk3~5#_wqGkrYM+J?;j$H(iSN_UVvmQdLV!EE51R=
zL<i(Vx6Fl^cPoQ3`s_kLFK;)0qR(kzispT&7XD6?WTrPzeoCZ2O_gnF8d0*&sU+tz
z2>H@7DxxcZBd5`^(XDbO@{qc3-(!HW=#%`-e}z9O?Gg%0Eh~7w1X<QN6Mj#^S~`1$
zy@KJ2eaug1G{>Sj{LR;T+AGoD8e4EaT^-HxN151>64OeXBBtuRf{A2#G~engn6922
zXsblQs50OJ2QN^Fhg*#Wt)yA>aDS<py-8-Z{_bbi^{?|I!XSuNIzx|Yq)+jmHs#+*
zS?hI*vQ&DN9n{<5&f_mfVq~tLPEct-fAh7@rx@w0U`D)x+8nel^lMCOlC-oT_&;iS
z1sAEIi!FWye>x2K8W*HW4GDhs$_#yvzXRp8whd;?D|ms?9bNC=YXT1h0@^+F?+KgN
z*GI45bfx6e7UDrU(dg&?5N6H73+FEMqF)&7W#==CMfcf)?nSfDVMdDn*Pn=3G@4zb
zocPj$oEi0s<k2WN#dQE*IS(c2nyclU&`F@6umr`g{5SBfV5<gxe%cw(W6`tuYc0Dv
z)H9!j!aknjfS)s`M57InpM%8r(UV^MawZZ#{u_dw7B8nwd<A@F^n{33i>!Y!B}Y$;
zER}_<Ic!OzO%ZJhqU5yNc9I!7;Gi_%=z_@SvU-Pv<2NAX$0q~w^*1@uU6CWGAgfFB
z*E<n4*30^yCc$?NiDr$GV}Ca!(<_*xcI`HM2VA1Gj{Y-pBL?D4hs*eG+{8GeAuawH
z9UX~Zt1gajW(JJKXRxxQ#|vyV$-``Bd=d@q7avc3S#rjUZj>_*sssJ#1Yj@Arph#9
zM6>w)buSu;u7Z(C<P@9qr$7p7sURAS%9Y4Fw8Aex7jo{;sWCIQP)m5;Liup<tB}3C
z!=cA65ghd*mk^Oy$Lq)p$d6stK;<?+$1b<d%^OGZ#uf>V<}rPEu`2{;<_#vCvBjz;
z$BV2Y(6KA|IuS3@$jleJ`c%N&cW78s?1n>Wao)AeVX^O=1L)=5BQrN%2ArQ)M3`dB
zRs$F3wX$%=zV}<;!FhM^H+IXL{4L4r91FbS6X4RkZ;=(TuAyvZ%JTlfd=UGgWXkh~
zGn8Yu$<ElkpUH(gjz^{<@3-_)?9Oq}tMd+GQH<SvG4z_e7RlWE6W~PNT{s)NU!6ZW
z?@amgfST2qHw*t`zYsjdi`>uFEY>MQvFHT;T1IQ@-QWHwDE;lv9B9aBZ=HU!EJsBy
zQWVr=8%Pm{e<#3wXHM?#XAX5qS#65Uer&4}nV$wSibk&toZpKh4-~&X9KPM&+11vt
zmt&KDf6>rZI>e&?MKXV4Uny&=Xz-O_vFJ#U`~{(u;@~1;G|3}$xBWdyqPKs8sL_sf
zqIbfNMVn1w5%7V{v6%k?K-PPVwphBa=z3XSWPoHCqX~KSM#0@IMX^l(X9yn@O)pSK
z#`VMU*TkQP?ZrpxdLaHkEJkVZ>&V?md^FQmG(JjM5kHQdZ+iTB=o#^iq<Ln1BlLdp
zb>vc3e0{05eYp(mocOtD#p5%P%#FXwV9tvlHkg*h`7HyseK*;*Z}>369G_W&Tk)0X
z4vO!?@51<NOj||qkKh)^r;}U<#BXO7Ixzkb&K?vmgfcijhHM-X--Vrn<F!~gB)*1P
zO5#u9;n4Uh*1%!$%>-k3{9onT_FY8nBjS%@|IqkV*dG~>(bBT`Uq*S}Vevbm93H=y
z&N?Fg6qd{5$1<8m#h+o^jgEgwTgJqTseNpGEcVC6ujcRg_#EPUWc)91E8_Q{RT+Pf
z7*@rH;K_veENZWgSF(g06+ayK==gKU9}~Yfol)lHcF~OD^!8t2HSaDePM`5QpqKZ=
z5x}!207mm-%!TQvYxrg6%_YR?b41U{n@AAT=Zc=6moXCfOu+>%XLZ-Hzx@%><(X2<
z@|ZNRu^Uyr5#4}HpC`iL6OTRB^Ji-H84&enXA=*b>-^K-mseh7HeUN@d<-(6z@K|6
z{2`Zl{+R;2yib^J{If0sjOLw8_xtmRIX*Yic>ip{IYT&c_xy9tMqWGEGbm$GRTGQq
z;3WNSX3)q00_UGw2tFXwzwSqrLl$xa*(w>rQJ&{770lH92W<K`TnUmpl04)IfOJwe
zuNH#ebp)W7$KxxW|ATSbR^?qx!2DYUXXbrOkNYb-fOCdidhvOl|3huJ^Ya#vWBzRx
z$h_?u1-A<>_Ht!3)BlmIx|sY}Ve;}+vEQw0&?v1?{meG<sGi==@!wMwPT_skko4|@
zgS2kujaEEA)XJQhm&O?KKN8#z6N^zxpTM8UXADw*l}yH>*N9NhknrzRO#_Pk)gMp}
zxuoM_&tKyl%2f;Q794evxJPhip3g$%|3t0Hajje{I6v<Wdei@@-~ung7wCEZy+6k0
z!MZ^))_-IMYI#p75|0Y>@|twT`j~Plnzuw<yHUECu8qHzJ2^wny!0H;fBbIfrFs7z
zgUl0x%kmPWyT3`nDyKD{P!4XJc)aI7DR4lk|J28-O>4Tp*|nxi-aYMF^MPu6#?`h`
z{r6kJIeD2Sz*{7fpI0FIvw{oq$`!fi1Q+L>FcSE8f(PgImls<V>5{xID)xUbcxYZi
zE&GGuVP0gUy5^7P;m?4<{tKrw1=!`9|6=dun*UPo<(j`uwlnjz0Q$ND#jh91X8#qz
z`FWoxC;ue4An#c9(00MaUgS{{fzv_k=UzztIsR*_RM%IdA-^urbA#y($w!A=!r|Xt
zP_@4~kFsb3<Ocz4-6T6!;j#awSY*fBSy;~-#AM?42=ww^jRXHhaMX>Zznb4e7Ak}O
zrVP!=dmKT3myHKEVBgVzEucnK6#2V4^xa<ra{Wd4B17cs|0-Dr<oN%bf$brj!2ACa
z<mEM}NB*s-M)R~m^Y>bfD4z~LeJFn-f5?LVpK?GfeDY(;ylo27r<Y>E%PVAA@IMnA
z&3lNy{^!m_q?q~H|KcL)75o4FLVA`wUy7d`YG2t<%hEXZJzqX$W__ZW!1oo>oUE6I
zf}|OepY<G*p&#*ON)0|s<ylIFsDCf;ft&nvKbQ3;>oz8TKf_;0WH=+%_{cP*Age|x
z(9e*vtS6LTJYR<x7epGl*}e{mnzMe16+g$2`B^uqRk?Q3*qODLN#5^o$hBEl&=P-u
zA=hQiQcwmNa(&iQ3VWfMUYhj*ha`Tnul`t-RiYf=2Y`wBnyj4~K?j-BYqLt#*1^6O
zkabzNFem#%40#|cN6CM%A?vg5(KK*~g=9lk7d`El`1hf+QN0Fwh;Fd@L;X1MFS!+W
zi~ZsL5`|@!!dz;n*k0CGnj1$L63w!VKGdW#v)-53NMDDMIaz0@>at`9yrJwm%zRe|
zlpqm{YFa4pl?8|Uq7>XpJpFQi4e&snX6a0|e-9p}taQnZ=1Q}$%>MfL8;dICV$lMl
zoQ~yKR2et)D)r6}BL0DN=CCUjfgeO<a+u9pKZt1B8eV!POND`GJgNacJL)${!=z?M
zCFQhdN2P5VbBxU1<66b?g92L5IF^=<fFS71beOG49~9`sbeN5r4+_+U!}_V$KXkB-
zpbra_->#Mq3sg%f_m3Ha1<Kn)pT=-0OWMD!9&h-_cBMdMkeDMcRiZ=($piecku{}A
zL(9*F<7`eT>VZ(kTr;IeD}U*H&p*+GyrF+k(mYk<S4jFIW$IH!2LDlG`>CR%p%YOp
z+p%Z@Bwe{b^mHxiFBkdeOU=f?%SD3AE~J*1i!{L?uaPmdQq%S$MgFZ~v+_SuWRL_O
z2?S+x#Qi>k&lPDG;Xf<8=FW5G&hXL>Z8d&xT#W9;zQ41`|17M3r`12alp6k0qzN&p
z@;5^eANrq>=!`D(E7%#!k<o=ZqBf657s}(2R^iw}HFkLE*`9x7p*j-P3^jK~p?_sk
zb%v=9TdsjQqfotSW@e<AIjz^s?4+3y8FZ7MD3ZMY6PdbXoN)C?*(Kux&>PXEd9W_7
zk>LLkIoFMK@g96BC2onh)@yIX6irR<Wt-d%_QFo?y==)1vu)FR*#{8{mx}LYYql)2
z?a}+$mU4?VI^WNh?qPRDfIrOs2zbQ*)x$4`zo@AEC%c{6N)KD2r2Hg1!r(vn>*}e`
z?i~I*-0;6Ny&)qvqwV`Sipj_;hXSWL_-L(i5rZ{IV>ud$r3=o!$n(>4h+{Ag#^=~R
zjBJyDt)FUwt)Hb{`dh$8lw(F5;-&vvZTts+{ESTNjB{YR;ALd?V7pYiC2l+EKE?2n
z7i!7N&Qzr%Kh&(1<KW9Q`s0~*_d0W+A>bowG@BROxb!!N){6)Az#JA=rWX%Va+S{O
zU~N5ckYq;MVt3FWb<OaR)_(^NQva#X4>2<1Pf0ssvG!C)+g#}%!A9LVfAm0^FXPb(
zF?DI^CZ3}QT8i4H;266)Muut~?8a}+K#kv#)3rF(nPKuvmjHLV>8&fQ<xZQTTrGDN
zSS^oJt$$a+ELS_09X#@A4Ujc9y^Yi<oPT$Lddm&wdraONF-VNZT`g~iwLG3u%i}4v
zJdsk1gPr9k&9XP*6|MLUnKmXy0lUaFSho%{KPPAQ`gyFu!`4aZxJ)fEE&`2az#DNH
z!S>&9Bk_vR+8Z_!HKFdbk?5lNroqGZs&n6p_uA?)b#KI>#Mgh%*?Km#^<HS}{S;dt
zq}ci}#n%5OZJjDxmlrA}{hLZ?<?C|v^1>bn!=BUvbGe(Ms$c?3#-^ytQ>LgZY>GN`
z3_O>5*Ay!CM%HVc?=1Wwbnnnp#ck6naZ90=GAFshN$$*o-c@Kj!{J(^)|*Qsza{x!
z*|g{6A9C_Vvixx28d+w<uAoeJ3-^x&YP%DQ-YZZ``-oSS<-f7JV*c-;y1x8PT93!S
zBjzdwFBsx~CGK49;a;#?jl&)q3jAW4ruAXZX<dKG=wA7$c_8Clf@1|1*L$r<kFq_&
zI2%F`z0q{<cpEH!%V--eM>?!^jCFCvKy|S{)f=mO1paq)BgI>1=5D~;IMlymISJy8
zXT4cw*aKkRk-yVqyRBe7@FqTf_jGnE&Vy~1_@6@^X9IbgCI4vOnS9yOze$++<nSMX
zS8PY6gHIi%D$_I_Z!eIGFT$*BECYYla9wv*eSlyyp9vpm5_`Kq^`~{st1f_fls`4C
zYt~VIYuaVNEoohCNBPZm|Iw?SXZ+Um%e;U4t%Ko4DAj8(<!~DEclE#(IU0Nm5G+tD
zyWb@pUDK|}>7mN6;JBtO&e7~KguU6QU7A;~%#pvxfV;*m$<atX72JjVD&wbhd1LNj
zPvl>1t3z5>^cZ5@X|icuO%tr?*P5t5eS$UoI)}B_V9uLhTh|py`R4IF;71bMnsPZ+
z)ixrdbA!r%F}(Z-b95Uihn7?&_#=m0%pS^dF>9+{0NrBNWYL-&Myo;(W)4PU)o_}{
zq<nAA1~39zz1ehH{c)z!M6YclEE|wBOO1;DVqlAVeKp%kCDn_@Z=o;5p|cZnk{p={
zsa%i$Mw6;<vqdK&GVXW(ogllO@NL#P94A~)q{Y<}jo_{)A~xro<M_<yQJatWUD{+%
z#Ec*IM0#8c3_amun`zSIkc(}<IDz!mqpXg~GNwP>rD(PpisGW{sT{-oQ|op@(nBj2
z4id1HM4PHsDkojrw^65}(wnIr#?$t9>|xAg{wIU<8h}Qb-(7|iW9$s!lR;X9{ALZx
z&kP<$W#jSfbHf&bc}IRJt-Fi#U~HQin2mu^wk^Kfwy?jE5_8^9ipt^3U+>5rtY7{E
zMQtc)bot#s2$dc%r7x0751P^ew7@&^!o!i=Q=~T&TuuL#lI^PZ*siu3F**A$+so=^
zW5q^<8EoDzM916Sc&{;Ug6UQ5OmdGg&gaJQv3>OQ+R9v4jFP7pAj&N*ZeyBtX>na~
z51c!(ag6OtmKJMY;<t^zklpYN#kx{{8D^!8pzoNOUEsBI(7F;Um3C>e!UR8oQN5e7
zLw7~8I_dqYPOt=`m39EN*2MHhRCL#ej6DCLV!e$q)||R{WZ=|8=2RJSqh@N@KWz0L
zC;Zt`@D0VfAAYXzSNY>VQY_sY0LRS3wEt-FB5-omwP~Yk(`gm+sjCx#cDU-t-xp5+
z`w4pE&tjMP2dm~8(8OjW6(r^2BK`(L?F#Rxw5z<d%TcS^gN!DJ@t0i8K;KlXm9z(C
z&5iOe7FE(6{SfP#-)fgJdgEjVVez}aIxJ{wYf%px*+{xfYqg}&Ljj{~bJ%JZ3zrL@
zthKb&(&#O4wV=(gLZV!|2s87_2z8sprW-@ypQy{!&D6XG0spL`N@ON|2<<kQlRg8u
zAD~9uh6oGnU%;50)}V15qSlujyd-3z_7)p^ku1+wOo#>p^D@M1H}mIJ8a19P&2#KZ
z^DFFB-hg@kT*D6|T$QKDxA{dEA$=;i`8FTg9th~YOois#uV9*QZvoVZYrYlW12?gB
zQMLoE3Ta(X^r^INhc*TFq~!p!Bv+G9T2<DPl>TK_<Bd=&dvtzwxkcw^!vA$R_#*T0
zcfu`tR~Y{t;p-Uc{^BAXSP!7eTIK3}hrx(L@jFfN7#QQv_xx*3?PRcH74$7Ekj+Z%
z&LV5nTo~4<%K&P`u}0ku#=kl}#`qYPgUPNNJQ;8%{@#gDlbu(m+mnBH($TIB*Q9%i
z1eBz_QPA+ml7RY>Ie&vK4CPGu^d$-S6PoR2fDQ2;h)<zB%C=J*;!5N<!E5FtI-!3F
z@{h%J7dz6m>vHY+Hrn)Fu?B0)(OrqH@wRi>9GBfM5j}1l%+pAh;~xMZN2+@$aVgTZ
zlhISX$goz2F;sM`>u8;h`;&^bvS`}gVxFFT1fJQ{IH_0{EC(wrov`9C+(dYOu`d5x
zVN|Zgu780I<b~jg?btcTvX*s~jI7X8UmCR)q4p`JeKXR>mB5s=SF=h@H)FHRm_N<U
zbhAzPZiK5JKv=yZvtD_drcJ+CLtZbCEr;fJ?+tzT&G)C!bIY$^tmXF*T0PD#($b3M
zRIPB^<vIL&;K!A)vHKZet<%Fx?_p7s(&hXOcWdn2Y}aty{G_N?ei1(SRpySa(`T4F
z%gTdLRylWEb<AE>=FXd;I}^;EFGF`6eh4ntFT<Sr<Z_JRiCd(#R=28m|LwN~`MWvk
zOcM9XA02^DGc6HyW6QId&>IsZ;!I1#1a*wMU(?1+%d*qKwX>dOn~0CZwYA9MIdty?
zOWV_vJCMnh&q?_V%i`<BewqovpJUsdw64Ypb}l_PDcv+-tF9@|Orp(|C)1h!S*HA7
zDckAoJoAK2++>|nRg<MnisyszTShUWUxBuWa91_LU@Gz&-iC6sC~Z*aa<Ab%D9=FQ
zU+sEQ>!{J#wkz*DEgpXJM44V#;9dpt?~T8Y=|-83c5IBSuIhvn+U}8U9Yuw<3lvXM
zBp;%WZRMp>#BC-^p(+)J8K>1a$rUYvbuXcMwIo?On_7pgwJ~#CYdS%~X)TmZR>1;x
z-W2(1T?vYuNY|!oC^HE$MO148D`li(O`2D?9y_-uy>eSt){OcsQ03Leq*vl3H+$w)
z{ijKR7fhhph;_w;^l$rVc!>v~x{YC9Pt}a_Chat;2I*Q>?{Ll%+I_*;An&RM^&q8(
zRNT<48l<7w3_j{{82*Go8k#pbK09NFZvh`~Tc)GzDCbMzx@&T@Rn&s-m9~H%W5+o6
zg4g!Y^ZUqmt=y;DNzprytL8Czt(OZdA+wE~M|0{|Le{wdBN~c23w-@{XjhM98Zg>a
zzgi*ds7ZEoBFbJvDoJq^^10Ykkn?G7U}P*b8L2edR3G(VD(NUonyP;uA(@)etC%Rm
zyc8Mss<}1oii|$>d*vStCtxSowYFZ9UC!Ru@7_8-2=xgAduZoyTIWK2f*n~+1RrJR
z<tNy&)fwX3tazebe|Lhr>v4zcBE%MiCOg5><)C%M$pdZgI-}-OP2M(3G@F66uH-de
zi#=xYD)wr}k_Ay5bDebKKrMRblO2`sYnECzP<J+#3D>h9{&xqSi{pnAlksP<!?|hT
z2GCm2ilq$E8jyA4khKy0du#rUFe`5?NB0kA`$yo32M|``S?sJo7^E649ayMa$HcV}
zGeH;RBdxyslhJ|!+m%T7>dRoMC;n}$scBcD)M7i;W^GOr1<ZLtBFJ{_e45LFvv-W$
z**#;R`h*EhnK;LSqT7Mv*#yruEJB{u^$>!Skqd{VP6X<U@$&jxJnzgTr>lu;QfR5w
z)h(g(Z!-Z77IbMF=~|TD*UmbuYaMyi#DWA2uV@pW(!^Ao?of9J(#a=`%HL$O?e|!;
z^)9yFhxEJmR0PS^Gq8u2>z<@bw!c`i%>f_v$zVkPYPq3NHtL_6_5Wu0UT~LA@3?eo
zn_#*2uH~A4n(O1gTdf)o6Lfgt|HGo@pE|{t<*N&JQ`C0Cc^h|JD*mT$Dt>Gl_hO-T
z9dbjEbE)`+rAs5xajCe^Qt=${`bF$9ln}d)OzD(}CBzC?N{A?SG(5)=>`2#SVs1;o
z@q6Ku8Hr+!Ar-?U-K*8xrOQ!ri7~YxB{ACUg!VaVR$@#uET5jPE9aW`T&pNpWiG?J
z8mLN)E0Y{0#xiI@CoWcw4<;}VIv-tPBrmVrVkI+~c&fa3(WHXK%AEmVBJsg~CKDU?
zBb2w{v42sn&ZP8c%mdWxcW<c-^5UXg<%RC}YG3iK+*x4l!ffNU(C|yaN7<p@w{z#P
z8r%wA`M3;SV*Fo$yKe0;oRg1ZYzKU4t`-ljpY4q4vRoz;?<IumHsHzK_@K?3lH4V{
zJJu*J2|8t}9d-nbc842_Fj4*;CVW55+Ejw{3}!gL`?ac|O=;GqPpL?4ikMG@3?SF0
zsNuTF=h_srHnoB~H#5x5h2XA@nI^v$+_kY^(8k(5WXl?Ab)#Uo`IFArtKW@N+Fo7{
zGnn1D{7{;8&}j>YvMo+_yY>*RDMwdz3((zUdO`EuR^SR08&P!m8idVd3P!#1zmV{L
zf4lJ3moC_~fA_EnG}DG`f7|39fO`sxlbZmR*o1J9l`=H8xe!B*5q)FBLSK=+Pe$x`
zxG~a$#0{vq%cI7KRtnwAtN#@7yGZy85vHM$j?Od|++m)lepzP3VAAeb!!D~F)+5LV
z&2Ncxtl&Bt#g$Y#;yCivA7ZWXUqjp7r5R$4(47azDq|=Pu}c!Kyoj9QNeAUv6ASMi
zbG`6rT(z46Ulhvqm*n~~mOOu7q3*+eDEusDd;h<Mx}M5mM2?!Ex%10H-TOTpywdKA
zdPTY~dZO^vN<Y6yP5-m-CskFN;f0LXiMsXNh6|ap6D_)}ntky|XeYu9fyRTNr2p$k
zn5>y4h*sKdgN!0AwhIt-Ghn9KeHwg%-9G47q&E38C*Fa62es(b((hOF8HO5v-fOdF
z4)lh{AiRw(YqNGE3jj_zN|~<P$pg)_?w{4~g{h7@9H!FrGH9ixj#k%8OEe{ENg1zV
z9)tp{UKLs$Z&v4EHL+kn>DsaQ^fx5k9k9bq@>r$UawHeQ^baqZ^dk5rs88Agp!;r<
zHUc~@H+4*|TzxskB^_)A`HR~~ZB91klN2evTbSIfrDc}ddeCI+!D6YzqJxj7H}qh}
z33~iN-%g?<3BP+g^hvWJ>1cD(c>vYq*(6Pg*9o{5;8lRe?*p(GYrKOp{d4_YoeDSn
z6w1d4*6L7vB~}|Ag>pa%wO2H8xTZY#oygBXu7=$3BEX3N)${G_t)<_k-uTiEZ`gQ(
zP+e@a=CsT?2x$N=htP%%zdP#~+}QxhZ)@62QL~L2PZGf(qak>*ZmsKUSGF>Z`Q2X}
zLu+<II-M#f?FRUPfV}|g1?V9EMSw;P5gOWX3uXCG{QNP%bOHAPJT2g1fRT*vh9?2e
z0XU@?fbW9hU-JoorKhwTK^Jk&*8vWxh;qfnl<7Tz9}Rzi^e}qWgQ2>e68+kYxDF&<
zLPXOBvsGOq0&f}K>^FIJb3i|GsB*Zv)AViC_sY)$@gE<g6P0y<o2}h{t7XL7<o5WW
z9_oLNYDdkcek3)*^#Y&U0&TKO8-Kb^%AYizhF|S&nspOKD(#N-3wFo)1sD?*-wxJp
zdtddPK|_$4q~I0Ne-_Ru0u<nL1t{dV3Q#9(0;rLqg;{(H^E(0*W&uqKbCW{+{~zAO
zdK^(=C~jIbT9UU{SXFgp+SQm&+v~S8wlqp=@HKf|6C7+3?D|HGXs9(C+g*f}&}pL0
zOQGql63r%8I9jBui4(aQNkL5=i>R!&k><UE#CQ(ZpB|)HPY<KlmnD68+LYZDZ0c=~
zo}?3jokZq-hELF@X+Fd))Z%x~ts`j<fRz5Z{;p1i8%97WrPdnV^k^6lHVLeu4q%#q
z696s*s9gbnI+hyRq5KL;^;&8OQuDYyAa+*fouG#)^sPl>ZT?8B$K>UZ^rA-N^#JLg
z>+kAR_>^0q_-ze8rid^iYc|T8bzpjNp<x5SJb?O5m{qK|;fR`lIkbJy)Ma~&<}QL2
z@Z=1gXySMvm>!YGx0B@9hsApQViwG$7Nsxo(+z_Ui+iB_i2B@>!bf%*rf1^aW$6Ff
zY1nIy&n5mI!#@Xi!{lGdn<j4g`nN6N2jSrOi_hkvuDw?8QQ-9psazZQ4OC6CedF0#
zq+=VB%aK$YUvrYa-5zvV+)<#0aw(SBhLHMN8Gc#R^^D`SDBzk7yc3=U(pN~WvPQp^
zpmY8V=}e4I`YXWo0zLv*E8ug0X8{`14|bFL04t*n2UETaqqc{R`dMHl%KT(j43M$`
zQZ5rq+PWWW6`TW5BlRX3OUz?W5p)wn4T{bJ-Q{r*8rvoYr;3EDIeE40M)0C^4vlqR
z!M`a>yZuGz=VWUHoO*oFw>M?=V0tN4yS}|COB?hnm<&hx`G|fmYZm-AQf$<V>~_GV
z`$zCG_N>(MEIlj5?C%bHZqCvf!~3u+?U|livXoTW^l7C%le!{{r1#Dde%pbV>&ns_
zi_Zza0>J-)@egI}RN8afw;Fy78Ldn4m4+=8#y0PVhP_MQjkia*Zp+f?@+~y7@=&7a
z-){VE!tEjURatr<Y7OTLmG%tz9a);q-v+P!6!}{lSfUP)Q@_p9+b@;&xZ>6<or@j8
zIYO;&I(~N&3_Hg7i-oikMx~w2{54Cf$gL8b18^RKI<R`zocIG|FYzf=DczKbDJO-|
zXxCb9P;iS1y~%jtDu~)+Z2v&>Sgjk?04osiquD2E&9L=iA4FR(4&<8E){AO@leAvc
zNZ8hj>5y!#xJ-c73IYF5YsI>X-nAmQrQDliy5yy4r{TJq7G9RsPll?bU2GgJ&#6uK
z5^Hf^<2|GXkywZC=T0Vq^X7W~@a!{4x!dr$s*OLg=^`}JBJ>orRz*lm@|fptQzG;V
zM2pZD0<@x*aynoUGHX(>D4h-2qSPfoQ4;X~6s09p;a1dUYe;H@yxJYK>5XGuRwS}V
zQ16peP-*Aw6SJAGyyJ;-<%wjsKgswHgVz?58JnfX9%H6Gq<93E$u)Bz+j;8jY$fRP
z(8lvr;OW`t6RWquDs_X=Kf??UWaX`0hejoa+)c(SvM-{>OJKO0kc&-l9e7QTOkcu-
znAcc!e}Fb#4`X&3`X5lNeTvZOa*Mko3$yj&^;K-i6O;LqoV0Yjg5X$KHzoz=o8ZF|
zTtwUY2-fc-8k*97fpGGOrq!K(XfG1X>D!OmPtU7biM?6)<nBNnoBdbfky|Y<D>hKe
z9DrHJ!M5Y(yKK-8g<ZcDruHQHFfpIrwf>s);muxs4|F*)#^_VEwgkHkdMS}faFeS_
zde=Hsw6a76rK~N6<G^5qn{ePsIj}xPkNm<WgnArs{yu1vO)Gd^1;Y1Or7hW)dtKev
zqz@aOUs1|4Mle{!q9VzeaD;gklTn;c1)rg(Cn8?R)+3q=Wv-1syUkoPTRX13z=L~z
zSD;e=07Fv^Ej~VscuGU-cEBEOtdtt-_YyH#X*5nSrZ2;OGuJB4zWPm<P<mO0_kWR0
z*NX<R=t6<Ijd_BuG4)N2Wws~!cO!$-4#@CvQX{+<1hfH+pu;EW+VNt5rUd{^i}YtH
ze=62uVK-I%Rr(V8m87Nik^mX{RDev6LAEMTXpo_kpft$X1p;L7y8w0*YwR(u-~2}k
z+GJaInz~_DC18|Mqus>%r6^5MazxQhtiM6wU)?6k^HJ=RI`uoCYQDS4IPNqjc?6=J
zTivJd*L+PYp9-Y)c#`AJfRV2s3`bAuy=WZU^i<1pZFs^nB6_A9n!EjD$4%Y|x`x*G
zV{XG&zkA;lT6hm6AJU`;0ZtU4>+72YJO}W5fTmXfYG-7yz)M5q(wd~;=>nvBqW~FO
z4^SiF2C2OUW|7t10F4O$j|C6PiXt1YC64(p%3xSzhl?^8N*LL8DEzD6g(Hf_?@?BC
z?YxWoXc4b|4=jb_O=G!ms5*&VD&@pHu+%`5j~am|iw0<Sv;<x>P4U=!La;kpG@u8y
zOQ~8%WLFHB1@@RQI}2TG`1|1Q-0;c)ItwkTqumQ>w>uo{G$EcObZ3dz4xmOZC+O`h
zRJf9=bmZxtE_54MT&-V#Q4Ns?jh}KHSic#Lny~e291o-F*uU=2NmRf|ZMHXJ!2lY1
zggZ<dd}45zc0_oX=2+f{?n98<Vb2r!mr2g9i+9)sfqPQ>b=%yR+E)Gz6C63OKT10d
zF10uJ-n1L-BQK!k{#)*F?&w%K$QnB#)i<;5Ita8oep(RuHMu=V{|1iRm)>m$$2*17
z6Zhn*Cq8#vt~h>T_+%~y#@WI0T061565QPl|EckRkqCO~UOVA^TDUzpd0(zJZy$nB
zc%ukMex5r7Pht_(G9fDu$^*IMjWS1+%d??8n0vfY=8JN(WPX|3WRwM>WT-*E%AISJ
z4pE*}u05Q4j!~9~qCfs4xmOxxsVGy@p*)tm!YC_5xoHTLU+4bND62#{O|?If`*Wi-
zi=t<G{3mmNX%yxHZ^A8%8~-=C8;sHf#cj`@&eit(fQd-hL!rO5IQTQ%qlQ}?c50=*
ztHpmdS8xBdB0J@z;o!&TEnrVOMfdFe|H)gz7@K<QVZgBgQ_en^^6&xq?AU5np;Wn9
zo%^zN!n+u#yvPTC#e%%}Smuyz2)%j|3|o^QvafR)jpOy35^i*_hiR8>y<<F`JLp=U
z6FZR6vZZmOgS%FDdoL=!mS6?DVi~?F5<^d>?RK^~B~O<JXR4O9Fg1td!wlz;(EfV3
ze=ilM8OwOP2fd%m&e;n*KVyKdXgV>IJdGWotB6~L+p7@$Y=A!mKK`ObT;68c_<vUX
zv?x)C8-E9Q{Svmtdb08R=7zfyuo0S02=;5dHL5l<lSZAwWy<AoER7$a$LJ<&_|78o
zb8r>fG4Lmig7!XDR0WKNqo8~VrQukB{&e0cEdbp4J!Q6)Z4Kv9j)9Tbgt6e^KD#;T
z;@jtVh=&`fu6hTet^){D3EoX6A1m8()lTcwGcf2j>$&-wWS4=v1@?FjjpXqW`H#qB
zEd!fiRwZDR!LViE6;Ya?kj`#_O=oiBU;T16HoBI29p$hKi4uG6XwZ}OTM!z0Gy|EM
zU}UCs<cpuykwf9ptQMWhDz<fFsbq)~i>jrL&*MC&y8Y&O@pLbOg(k5kNel?CNfm^b
zT?->3e;Lx&q*C0inhYas($S(cLkXL7k!zAY;j#ioA`=@2<~<+SST2oqFv>7)VYx??
z4NyWGe|9!13JBN?#KyG{_wz_pztYlPOIlqy%oq#}9QV|wyKShgL^C`Mi4x<dE~|-I
zuu{iEh4u?-=wf8u*z)>oYz-iT>WisKhR*xCAq68a#D>vDtpg%0<ps(9zd^;KHWouw
zOJRg9K2DSsP{I~3hQhy!0?K&+qg#VatM0E%TLrzof<IdLzA$Hko9MP>P_HLuz}M6G
zM8w?<ZcXc2vVS@y(;?F3F*#Q(LZyWI&JF7uny32ihn`r@AKm5)N3R}dcQcY@{Z{x*
zDEp`7-H*OC_BYU~cJL=`>~>Lh@h5C-rj!_Bb21scQ)%cahhgNbJgr)X!mC*X!`%-*
zCr{_5EfDKx@kbM76ph}=(l&+}HkmHf?KK6Wx*Jj2tp_4G*~Hk@s>RN)-^$Yj_bmh_
zDvO$!nb#xW|2=OmGL!n_=XEeA#Q+`$NUTC4IJnaMnP{8tZdr#>aho=qTq~9{`Jv_A
zrwV_OhT*sSYhK#{v3ix88GWXiie-#+3BD>pn@VT*9|8Wc>RbU+Q)v+Gie_@E5pGr+
z(wQZg&9$#@>W6cQ1u&JPVNctzcKNspo|4-i-2Y^Bt&2vYRJ9I984MeNwW4f*k|T<C
z{@;eezuK+D=3!N8U9`fw=oWZ2yJ5I4y4AYqS%~%3WP!TqUNpika{CUPi!AQ#p#?~W
zJ(Stc^RAhOJzGDQTFZ7|&)L7Bzf$01@QS4fmEzW661H=zdu?<i2yCUjihN&xCDByy
zL^ndeK26oM#uj^-HHRradUVERaD66xh3$CCFm&N$TMkuCxxl#Y5sUrO?D#qDOt*`@
z>ak3q)Z&lB#U(VX1Q$1==Uj}~fVw~~t$^8gKn3^Az1jpp$RM?x(s)~6u12XoL5Aq2
z`1`4TTAHti!_=PdhIEcAGAZz5K3$;wUcF4(WBXJ3-wl2rCaYG#EC+Fnll$KX{0a;@
zTu;rfm5%krE4J*tBR4ity~4Ew=6<Ok1TC=>nZA1&z2nldU);DdWUITij~(k5-BY)v
ziYdHqS%Mp1CKFu6Yho{%=%&Cg`)G$#U|k3Np>&I~PjerSBI&W16ccs35IM<-BxlJ$
zrr$o2qmL7F*gTz=G`Ig6Q_S8*0lCrm$u%YjMSa<^j(blk*In4Hf~6?EkTmReecv>Z
z)o(>q7fv6V=+|ca`Yp%1EkV%?%Y^;51pe6G9f6kf(M~GZ5imX0X@#zHWL}%&q7z)c
zohMqjBmG9-)=wc{#&F7DqF?i^Za4g&Ce7>@ySjx;y&D`)UT7iNB9wg!czr&DUE9W8
z-)y>mdy*e@1CLuD;Q+SnPc!r9A;#0dWrWyYGrbp<dM)vFRo6TFlC$aD|C2x)tFJ8F
z@O6Q(_qQXXi`SoiT}BSp&td>xe-0^Nd{%3ZB;7Apk*ga_n!jl>+zBu7j^71NYwI^d
z)1vgb<C*7)9Z8}kF&jHB-Z$_^*M9a8o$saViqwd@{4-+AOCJ^xbp>d|G``FRxR;~r
zKI5c&=`G^uj~UX{o^dk0^a}!_F8GX?;iY#1_i}WZXPkas`j5nsNA{<@A&+J12|K))
z2T?zo;CJty$wjSQr9UyChsGR0_l<gggh^^yI7zt8{F?@7=D!wv!XKsj8@p2RXSl~Q
z9rlE{_NeGn$#aZZZo1uU)xHM1@-GLX{PX~QVecp46%}}(g?a;}JM?(nu6atxle#vD
z-{qsBqN$FDWGxjJkzh-p>ySY_QQh&c&T+`d9Bmr3hhL28`aQJwW@hW1NmHq}Q}lYK
zw(nQ4kgqd-v(F$M@p6Csywq;f`_gr18J7-Hl-yay<?gL>d%9=QAU)kPQco}VSJ)E*
zhaQWP-tSmq4<Wl(@2@i0J5=A6C*Jo`c*`BkdByjwR`&+`&GtM1-=_fmUZd-q74Ea!
z-Q2J1QH77$+t&Jpnq7II-O7B|sgGsK-FiYf%Dz@)qrG`Q8{D0f{5n(j@2(P#{m1QX
z?w^6V2ZWz6Tn`A_!+V?T1#cb@cCU{<Y4850b!EE4g3XyaEcgS;?#;w!O!^aWcU<sW
z!~OP}WvqZMNnSGhk*<x`xQ^du-eobiYj+^jbvm}}`;~6%N4&hDtnMzIZttf(bUpZl
z1mn<O)lc{8^w50eWV*q>qn~nhw)nQp{-~eMmU*_`uA0VT*ULg|eZMq7+p~Qa*{TFs
z89dvwtrn#TO1NkH6BPc{mY{ne4BbI_$ZGzlICU#$bGr$;=E@+$y!v%eHJ!B@CwY&;
z&Re<dv*sEeKi+}FTL~_ZOoGX3<25p&ML}CB%TCfbvGeTUT&|bN04hKoZSN)2-K(`n
zX1P~u6V)~F7$44L@Yryq>j5gT15dU^H0H@OXpDU|#54UyV9Bl-Ebzazz>i@cG~T|_
zVM{;VFE|Ulb|H$BP;_@kU+$-E|Lri`Wxy+jKO#lD+xn+|y5!pm?$s_s^E6dS{QlwM
zCwl!}8la2CCGgDYC2rEzv(C1stebZhPZb$AHNu@x-?)WcameASf+66}FjHeyyN;@-
z&J9}AVy)@VTH(^F)zYdNe8LkNS5wVtrB&@V6uagiIGe?r?}S%AUL?W%BJc|hC%<ZX
zkgK#WyjW<VTrT6o4npSJhCdEo`zb=_$(ZdMm-M?EV;{k&-j!^@l@O{+kl1hDbN!f{
z;&dXxKf6*~i7X?HFB$0fDxjsb&t|b|Em)Y+MWU>S5~lQtQ21B3l8WDfkxYyFg}_S5
z9AYIO7Ug^`BNvr>^&QD5A8KMLk*<3lPL)wvSlNN}fFBp&C0_ON^Ic_3<X%NN4ARQ$
zq&$W@gs*3A03)2$lTF3F=B>sPyy9$L*nsT1EZ6R<pGPz5*Fc;#j0gNphn!d5kn`*J
zA5GC%*UD>F`Wjb}t|dHKw1*RcZ%CH0)btK4w^ff>MlYczciEKQPwV5~!H+qMml!ho
zC4H`4hFTM9BkduuV@&N>t+N&9atj5fU)yieXW*OJY}AO*5F?%Tf;H&-nvP^I+Asv5
zWQLkcUp;&#l+jQwgwjwAupFR%3-+{0Sp%DnbF)dJo5+e9Qrz>T(fOnlw*2o7`Wy20
z80pWk(hKN$(tkqnYMYV!0fVaH1gbiWT~9+BK%;;;0OtreAK>Qz_84gi#uv%>&4X&u
zo217`wd<)_0nwfzJq-+(mz?LEn~GHEV0}%}<@5SbHzcXoq*4>le{=Ji@nD@iSUcz$
zd7#H--=xl7K+V%Wz^mPi+ypwPVG(U8rXw1z12_+0@*N1x$JAKlSY&gNvc{~2S+x*G
z2@Gq{@1W4285g()l_D87D6ud}4JlljevO1DJMd%)nl6_|+w`Ls8xomxt-H2Py`-+&
zMQSg1HL*N!dd7;NwdLnVOOC&E-S^d<=?b{I)_BFZ?hr4zflA&RcBeV(=oD?A+-oma
z(5%`$IF^gLMq_$bFdFkM(fW+W%sA^7f_lQ{6Pw`<#s7+GBug;Fd+*72A-?G6-i1ii
zPll&A8>Yi!R<U8-)&|j?G6r*;{HW%uixgHhmP>z-<pBSKqWf}*le6^Y5|dTq128GQ
z7h$?pur*u-cbJu6VNG5Bj$a3hdO7Vx`9J0na+)%dtEJUlzaFlxH}aUqQfESLy<tFC
zkcWMZQ$yG_t2BI#(+owNdB#c3R4KD(VpCGURzdfwPp})HiRIs;%l!)5^sObW=0Nki
zt4JBQ>8r3!Upp?3dR(kZ+h$z~?rua@8Gg6;_QgFDY-jc&xXZ(%%<>oD^*b=H&F>J5
z%NctiHGC6+88m87-DxJ(_n0L1BCiKx)n^^~EqY#3*JED!xAJggof(cU2weV0=<+&q
zIhWmvbNOfHVmY{T`R9hu5Z_$B-(0={+`0S<v-}WveKqFg^0vM%Cr?(t?s6OQ-{|sH
zq_%&CeHqI<WY$}h*E0vWD4&tj1Law{WKo`DUx@NIaOd(|!*kiwIG4|~?@*Zl?p&T{
zmZyQ&uf@Dpu1hek)mE3=94*hXD8k<fU)_6alCNBF=K(f=6Z_z6&oABmcwYIDg*0Q4
z#i!sxwSoWLYZ&sb8H+6PSIbRn#uXOnZgAI(#fCpFzD52@i~J67w`ae~_Us>nyFLBY
zCeID*+7jY-I`z2be#bmGoP9=O3vL9bbaJ<)_t<+{BRtxFl}$;(jc#|k!5olS4qK5>
zOLZvKXFKgO%^ySqn_YV^3Z7Y*$*SSn+idNv#Shos7W4N!aM#{e!#9d=?VW1v)yB-V
zZ(7hk*Zk?${QNmQ?mL;<aJ`zU<lcVw=o5=zD|^IKgM!DXdk1#;^<}ue(r$9^LK<PZ
zY7j%pxxO;D2g+pX(#6^jb4haVOkwtT!EJ_jg1g5HZnxXBcY!;{?=XJ&WWkT@cIzhC
z(+a+2bKpPwIPQ*o6!XcjgX?UUnSsj;rcAnl;XNo1S3k6j)(@U8f#!E_3O)bO#>yL1
z=7Ro_jg5@Cf$#ro_;_#^^gT9K&I5PJ^DndfL-6|LnAbg+)fiVO_ZusTP4Ly*;(cu_
zd>+HEV=ch?J=Q(u<}yZ)3-GZP;B|6~03T-odrp`I_;|y$1iJt?T7c7-|6PDj=o{b@
zEx;wP>prEfQ>dlaC*`irOuhQa3te=-mE^muR;%3NydM5H=y~M}52h`9?OervQ`T3=
zk0)(hTlNm<p>=0az1s30JC3<Zn6>3&!+!<t+VY7#i}DV*+uVLOK%3hrJE=-L?D^c}
zhY7d0a2=iicWwV7dEC?H`fH!Lb-LJg-1A>M?(wHrto^pTPFce^b^|EG-rT$q(Yh@#
zFN2}xrj8JH0*O81o#=QjMDFWS?D9Crjvq6%j(Zh*k!%C_GOVJ+y&S443NGf^qCQo)
zP0wPgXoMG3A!_giQdUK#&ammO0<7Q6z#B`T<)?X(b9{$)nK$+@o=z(qs1-);vnFb6
zB)XFtl6K!nr3LXseN*3jYMcz>ci)Y<#y#rMw#I!b+8Z+up_txSpki862}MnHoC7%#
zP7?DZ37#Y+W0;66>s$NutHRFm7qVOj3Cky_Xm4y&F}-n)ifK&?C~BHzS%j0sJV}Bl
zNy!){BFp*)KmAT|r};dMtZvk=2x0j)743~{R7`JtK*hACjTANWWm$xi#5_rYCrQZ|
zCW5gMcb1^>sBQE7ORzgq-)G}*w4a6YPP`xP!b^f(!;`9alN8!&JF(skev)vnRW7YV
za4?AfOj=a{H=P56f72(I!?@Fa{9~KsBB0%G(j+%%?u_&x^(>j<UQfK!UQhfCyi%_^
z`l};4{-~P=ezlg>H4z<S&H}Gpg(qh*R^2(ty(V}kjAM5rkwcenM!^4BWYT}YpM){V
zKY-N<pk@c0hFq}E!1y;&D)Ug;Bb7%YcVO1kirAl;S|vbDW^PjLJTSDLJ&=A!s|33L
z>&TnZ(sL3w!mio`gVn_yZQU=*Rwy~5=yv4WX2RLn1tTFFk4J`*yJq9R(#T{r2yF~y
zzfn~HCA2XO3jZd4hP^fz^JQaGWF66+luz_7fj>#FxBd{IM%;#jz#ay3Z#<&2OgiHV
zZ&1Cug!@c7A)rgRgIN8&+BL{MjZi}w78)QOt1GuTSlB2FM;4x>OVFyd%&_L4USqsL
zn#nk=LUNlVCl>nhPjUJs{F+Z8+VS6?z^XO}`ifD8*5jo9di3-2(4SOzY@j~^e${pu
zVT_Iur3XqFqi;DI^$R67g0F2tSu?#>g3cuEB1el{w$$f=k|goEK(N58Uy-EU7SPH#
z?@H3lSPgDg%t`wG98&JkeZ6Jt_vJ#O8F{_i+vj4&Yd`G>+Vphfk1>8Z4gDrW{qC`h
z6gNJej`TqJEf(DPc-qECoXuLIfVobOM`O@kCAf!QycrJ<!p8Yg{eHQ=Hh~ufsoI%4
zKPq!ap<Y=%64rvKhF81r<A#A>7}fCl9(Y9~>WdKGjxTy}`4SV|0IOABP(2^^SlIqm
z(Md;wzXD^DezxNsfU1DokbsiQ=Ae2x^2rqzt%|LnWdQ%ex{KBIR`mpAy~(OzZ&1N4
z(JIDAqbl*ITNNiDR2A^8ic3^QG46&{n2j<h=H!a#;{9ys(55Qjn~i5>qbb$K#0qk~
zQ#O=%KaOr8j+5G<eT3+w69FRZi6%`1I1r#lVhv}4jRLa~Cgnyc&n)~q4%on&CmoG2
z12n>}fZ|oGKsEs|l3E(Rg_SPIHp;}ABP+9mQ3fF#Wxta)*}MbdY%=^9^c4n*`ko|B
z$p<ZRsWN<bk~l9AB*XV4X^R3{8SjTDY0CpzjaTno!9f+3+#ML)MlG31;-dj^H<7G>
zm~;b?IoOikYe|vI*6=*={3P+CfVeTjlP*a;27@=^J#xg4+ZV(7!=TtV!p7|zVN1!$
zJmYvr|11-+SJQe>S%dngmi7O|x*IgF+Bd2GlQ@mCZ(04beaq^I1>p8gtN&yCo59D~
z7qRTHpMrb_ywYyey>6C22CvwN`Esgx3}-6yv|7BGri!XAq{&;H>ya$oyqS0`J=?UH
zL8P7=A9)LnNvA`bf#{@GfC~VeSTkZPBz9yZM%wokyHjEnnOC}sE8x3|cU#3T!A<1D
z{QMTz#jbJ<`9`SgWVIl2H7-ud!Gm3h*NE6q1QxxB!6rZFAzDl|{(!>o1P<ss=giN;
z0i4*9Kx|;)F9NYdAU4&+^eqf45i5|jg2L?*yAj%X61xguNhr215F1qZMId%dAa+kE
zwkZ%REF7k0$l7Cp*dIc%ZGl)(;gmq^?Lh2bq1f&~?7+f>fmp`3lD-`X;8nLFqRh?Q
z1XkxQ=AAVpHGKHqK<;2eSQ8SWJVydSGyCI44DORK+>hG@Cw~P%H6{lG)XiGLJyEBu
zi|4u};2-qjiDlrL{Z&7FUdgzd+&<y=B|I<(3z+$QI(atfbx337_`3it0{#VXF~F&7
zkkn{l1FWyG*ze2DSS*^E^9Pq<YPB0P$mg5o-(lH}nbkHXZpB=yDwjzUxjXGN)#II}
zYMmDnI(7Yib*f@_Y~||n+OI98!k=1&5(c9wGl`I^@TXSc25gPGRZG!N?KeqZ1wW?a
zLdN=iX}YnV*41JDY{o*4Ec`63QT{}_7OYNjDQzL6;`#ktO6yv%pHI^d9gd0Zw#IHp
zx+7gaeYX=I>>DT?XE?^(`{l3N>ib>cbBTukXTvvuyNP0lS$b8teWmql5q<ahacr9^
zt8mhP-SAG~OQYa#L>{0=e<}PWwRvYmzbX0;;aysu-;C(Ab-4BuujPTi718fM>LRA{
zLt5|mL>j?=Df})5od1`IepUHn;XfJ({<p{+@b*i<(=g<}6VY!gZxr4U0e?55A7!*P
zxH$`acVsL@If+;K{X+16MCO8@BYd>%y&uu9DX$Se=?L%-Bl<z**M+}W2L4e*KaQw9
zYULXFyC<UGLOfZxUefme8JU{RmQ(n9L&5(Y`AG&}EGPU30_E?GYzN<G{L$e5iRf3A
zt4QU_BL;wf9O*|h77Bm70Q{4Pp7s7Y_=Jc0gMSuTt(=%%sW;C3&kfrp?z{uQzp$$i
zZgN%rO^x4Yo%M-~jVS{EGV(gk4Pqv$JVp!1R}ozHCJH}a!Skb=V|*Wn@bV$x8BzT7
zZU?X3Ok<xQe_W;(L|vw~vAgHGYtPku6phKz5uFT~&!IhoRxj`olp-d9Nq+@s5%6b#
zCjn}t*bpmWc4lPSmO|#Lm3&tf9(@&}+DSwhMZJKw6hDK)qH&GeQ9guVLm^iF0=Z!r
zz*hivBS|7NWUjODI;3nDU(*S}?zvPkZ?SrpBc!e7ZAfTl!u!NzXvrtz+}F7EUTV9G
z3;3&K_@=_Y27XS#ocU>h{Crsz)UHSF$F!@V0@wNx$c6;KcmYiSvjNQ6dDz@4n_Y!R
zBJM6ZHbK->U=BZmC=RbrIyVg|9Rt{zL$qtp)xnMJ`aMXfN#~h_doe$!(>3WPr=>5J
z<Hf;Up;F?5Yu&x4WDHz~G^3@j%=CXz_(v42egD9XUO){UM-05$e6sXU)ZB1d2~|UC
zm<Mo=fQ0~m7O(_hFMzdpPA9#s)PA^d1bVK;D<G2ouEhsar&<int_F}wx>vsyn!4yT
zqq!F)qg{K$_SEl73S5~K(43vx;QDeJEDPOz1Ukd_IF6fvfU2!ulazd}k7RG`s%x%y
zj*-V+ed0RQCh*+1la6-nmQ%q2t&XDHIs2TX9DSG}nc;fgHYpZa6h3^5#ZQTt*1Y3s
z64Lo&CEm5~>h!Ur?U0DAE4H+>&NK<PKYkvXzDDJ8qtSL0R5v3#@hQBr73Os0(#|v#
zH)syJKiWu3m=IVg9z<=7Z4vK}_K4E#wI8mD>sL`dF4K(QU=#d1g6<0JS0;Eooi?Ub
z=6+?fir?bRJnK-<r=kl`Dlw(Ogw$Do%9Q-(Q5!T1KNZ!)G++Hb^N=D4TcgWSDmJB)
zLZz)qrO_;&TcfMRZSmS$aL9i-s_V_QC{>%%?I=0-UN)ugVtX8FFWV0lKM9uDjIiaG
zyV_(`iH^b2+a|FSri;ikp{2LY(q4Jl-f<YB@0i=WLeURH(RWOA5V_#BA3X@s_f7PJ
zP_&q?aQ?k-qE!-|d1^VLpGEf~rt#0WCLrbl_L+(K&0`)H<MXJN+2BVJzKCj(<=)xM
zrwEy!7Ss1>IPaH-2GU|Z(o7nN#GC<drd?WO#xg^dr$Uv?q>6izt6$7&p<iD+2t&EC
z{7~gzp-OI0i++01&x>ibS1LR-igHk_I8+%y8(qr=^-(E|X+t2Deuq;Ij+KNeGeVWY
zeN=|Tv}cgYX64TCSQ#oVes_c_!vhtIUujI+iXeU?V%k(Fe)?KjzdTkE*7<yBpuCTP
zQAq>d%-Aqg#>Z+xm9IjT@ky2BPgl5FaPt5KqdGPj6=qqwc|4E{Ms-k&#qX$?b~kF7
zzUatL#M(lYvqP0cAC-xr%0Gsn(ioeEpbN&mp-N+*V!@aaTa*%v6JkG02IC>7Nxvnw
z5H*)fuZ0F$`WR?U8t`W72RQup*rHG+=Z2tV?MW3Ej2W&LTDDOeiP^EvP^CUpnH|((
z!8kppt(}5#7pspyFSaaHxj0mr*GJ{-n09|snLCW~g4haFTreIERW1lrEEo%7+8_p*
zabZl`LuJNaODH>H-C>>Yh6XzN7`QZPz?-?xM`dwrZK!g<cY<InPO7+IT<L1T&1ejj
z&e#K?N>ixP8PsCIxHhJJs#>Nmbo6hGZ3tDa2~}?Fqp~cft*lh8QXFrNZ9>K6--b}-
z=A_EFxfk>6OE<?f$+p|vRHH$Ed+hnJp1+4mxA&=MRZLrC)$>Os?On0$sJNh)-53Pm
zu0ATOW7<XgEo1Bliq=@I3i`G}sQ1Ns!a8S$2B2!_G>`eO+P^NQZMW*YMur}Y?G9CL
z4pkluR0eA={mYnk=29ueIscK^o>1lKQ00+8#e)85Oq+M9oU3wE?9)(XZ>X}VkIIuV
z?e9@(zxQy;XJRAp+9P$`DmrReunat7YKsW<nEyQt$=}AbcbDRo>69;<;^0v6oKW#)
zQ@lfp_Bi${F>T_dc)pgi_H-?b)hISA9lJBX8`RjI-h<%dD2}t|HrvxjfFIZipHiB_
zF9dhrL3wKWEbzyK+iN|indMi(>(*iZT|Cmpw4*q=)v4PJ^%F;pbgbef#(Xm7{t~xo
z>cH0YS((&xOZsZyW$;#*hkHT~Z!r(OYXc8&F^^6FubIORvhuHoqJF0lmqM)EGZK8Y
z;lBf~U4+mdu~vDi_9YwA@1~yJ5}cw<$0H^<{yMHID(Jm7n7@&*S^2FozYQ}n17`3g
z7Hr2jm4%SpQgKrRqylPXOw;W;=L~AcZIcw6E&k1#IuhQ_n0lg^fXwqjyQke042GT7
zg?^iU?r5i;<MaF(qpeSNTDSYt=t;An9`UEwte{~NhH4gUvf%LxNM8FL<={QmDNASv
z^-#&pRO0p-J?TAA9>%pXx;jHr7k|o=J2bMtG{q?5TTStUQ1MGsJcL!v^}Cm$c1#7Y
zn~cy~eERfz^-@Q%KKEw6r!icb@jS$YSw8)HflH+sJy5R3(x}4=OiH}xz-K=k;p_q=
z7TJbKVjtQw2qqOdiq3$t4%L@k$0FJ$(jV@t{dB<eA|t2hT&S{OZ!#2k>GOcwKUT&Z
zk)f?@4mjyYjMf6V7#)$(14UaQul-G3V2{iA18@NXC6s>mOQGnvj2<Y5nds}e@Q%_i
z3wjj@lv4WLpNFDHW%NKf!9+h)J11tSk7pp@Hmeht2M$a$(WQuvv3#1CaUYUQjP~o#
zNvzdt&u9AZPtJH1<_gSAmQeQ<p_!A-%zDgJZ-!0OTxYaz7>3{s)7uUsVS2v`^=6pf
zi_(ii4E1IXNJsC?i~@)>fV%z@>YQmhAD}bJ-Vr}DL+?_?Z@@;W*=W|i90EE>gJ6D!
z276g(r}q0n)90I=(ddn`#?H?uNAeWesqSOvCnUdrk=dz%q2BkqyF)t{nVp5`xvz?I
zl3k(Qi_GqmvfFHS?dP+|ALr)GA03Xpj*K>VuBknt=?*jfR%p7zocKzn=B2tg^UP9g
zEY6q@vBKONb#u_n#b%>~+3xh^ux}X3?MRre{$}sg?j$iFc<oCGr@t&?V-6RsFiXtf
z`7&5L!Z^z2(=a&UI`Y}SDPu9bSY$VHUXiqf+bAgW(xrFCJc#}iW^of1!H8h{yQ=4<
zj3Yp|LUoP*J@W1c8eTR|&iK{0M#u3P%ZF>P(dfL9@i9_6LrcOYyv5GKe>0>1E%If#
zPZhD~J{al0#eR|gh-Gf^dXo=quPPlH5X-y?_Nc)FY1L+8Ef&%X0p~nAoF{j{^jjwV
z1=u^e{p*0dxpxwh*nvKOy*b|^HN@A0qE7G^U{3JNsbvTjo1nfi*x9%nzIWDnBv|@6
zzZ6w}aJ&b~nV%j4ILI_!70>>>kO!pEjMSfi=iR}djLE8Bw=eozjrONpLT7eTWd4sY
zw{(o&->7q+XYGiM^YtFh+=e)Cp}}WeK`y4x*DB&XnHOcw&lo3d&4wwBGCOB~)Q`ia
z<INxUhXaYEdmcZ3JR)~sb|m+p-2VQ6biH$sR_bME*JVdYn@FJ-$vryzm~1VL(Ig#r
zVtI&&mVT(GB11S$U>^1Q4di>Rvtww*d{|j=XCgLbU^ODyDJTh=6P0kbs*rHJ4B^2v
zHP?)UbZ$Tee#l7vAb;cmlJ6h0>IV$;du<F9bIL%m3zF_rHwT^wg<ch6FjFo%uZn!%
zX%r8|;25enAau-HabU6rLk^0jR5zG9WXZxYBxx2zejZFKGJ8EcBq?g{l!Prbn?pwv
z2st$JfD#MEuvi#3PR6qtDy0>n&)hNWm7g-uX&jpEtI;D7GfQf88CH_*WLfIv49?;U
zl~YihJz}(9e?Z_vV6!~68YM`g`1VN_`cb|9rI9qFdn-y~fQ?Dvf{yJq)5plT6fKO5
z?`@%M9=X5PZLaEyY_fJhx*A*A+XiV=ISvy|3Z43^zk8jJ4ioB4*ZE#ran~e>NB5ea
zGSIn|tl*dwKM<_R_NQUIR)s39bJhgbJ8+z(TOvR>(;UJtS+*iSBl}eA-$^lV+(5b5
zP>}>COGMQMBFCocuvNsG*B=?q`W$$xylyl@0Q`uS>n*kGgwaW3VgH=iOOc~Zs+MzA
zX>+HdmziwxDdrYtn*|IeA6gWuaRV(>t*O4U%L}Szf9%?9u1yPJ)i}LxKJ^K3`#15D
zi8UjY*GKDAXa9$j4p19TQ&Z&V%&#jXP0dQ>1br;uW-C3W46Hanxq5nvSuxKT?WGO`
z=K>a4JDfdDFBJ#W*f5yeSGWeLGyB%+<jx9-*&~yx^HNDu20FR3Q;D)>|Dyc$y=E26
z%3hS8_-xj6Z~sIY%Lf4!+FC@sORiZhpxWqDRm?E3S;c%l5xzlxwSYyAu3||*7qHaP
zRj{Zyc>&!HNn0&oJs;}jul<wpg?xOkMTKmdD}iy}n;Mulx{R+f`Kc;o5mo-$KN<gk
z4;84eD^;&e#T-6RRV*;D%@p_}olSf&qr!2g0olJ^i><PliEf(L)uwWw!QZx0Rfw+A
ze!;<ORUu;{CyiNMJ3wfa3g_Q+6?Vz(O;zDMm>%f#0PN!9d+oa^oK8EC{p%&o2uRXj
z#E0gp=!^;sT@ZJpaa&Y4ZrEIL^^*m@*Q&yCPffMF&bU)mIPPfycN?Ug#%)&dK$@k%
zlGQr^dIDr0K$L4Tl4;56e1PHrDFsLbNH@TS0QnTaqZOu83{Vyz34pc$nFp{iKmw=A
z(3LUYn<2h)ISiH1=lKvS70tRj@xow;yWF@fDjYWqq_`W6+p5BG`&iy=+^H(waDpl%
zsNpy@9F9Ao?lysD6<gWmSW`a*@Q^kn2cRH8N&(6Pqy|9G1DjaT?o}A-Hk<A1DV%p<
z)(Evb`d+h&Ri=HhzgoarK6Jl|tpQ!YUPo8qX@}oChQGlY2`5|Kd?H?lzgoZ+KG0P-
z!yVVG{swC@KG;>DqRqgtPXcb5H+Hqyjm8c;MbZn5)T}~3!<y2e0awamuP}C~Ea~+|
zYF6>7fnm)e{myZ>QfxD@O~w0;`T>R02`z4hloSj)MiTj%7C#mH44kIIW7DmuQs}2s
zQ~X{6cc%%q24;FmQv*^B5_3$dSzp+*&w&AVCFth9B-LWKFT7?IZS3%TFC6URmYW|f
zD#TUVwuEUbff^HNRpHdbX-nM6#+|Cdal_%U9MT#->Is!Sd{QQ<ZqO}8nzoZdzsH&q
zj!!|g9c30(p`&@$27k4Hgrf(oR<+$mYF42iB#n5yyDOlR5Ajx^U(Ymps@`(bYf&L_
zW)Kw%3~W&$EvTtF%S@+LMWzYPR3SaZu64Dbg~n)Au_H$oW~$KB<17_TDx(;7@`7A7
zGgGTsYSm0tA&a=a!J4$pOixvjY|@5n0=+#5docQWi!#&44ZheraJA4(Q)yjKQDNRp
ztEO1)K>bkZE<Wlem2%Garf;IyYhZiepd^BtRwi2?^>`{Qq;5-6`@~tqoqPy_iXH=7
zRP5#x@xJY^79ihKmU(G8(bipnY6de_P<=P(cJseoMKZ9Bfv2paf#ez_H#%h%I?jlA
zS6s7N!1a96U8uq)NPaUPHCAOYGGtIWMRO7)Dm8p0p>lymsZ{~nk|e8i!3#ZJgso0K
z$!rwYq7=B?Cu9<K{XA2}a?@*7v64^3V;UErD5L~MT28cm1>pZ(e0CtY*X+y+LMC*d
zky=&g%*Uz}kYh0jTh$4gY|5r<QktTtQry2lf>|fvr%XW0lKQ@PS}!-;ZHTLsWY$oj
ziefy1JHB*vuW&dIOZdko+^oWde_F3#ILQyjOgSH>mcU7&t{X$rK5U58r(Z<OG1V3o
z1;!_T1;}hl{`QJa&4*KN+|as4Zih`R%_{6?&U^Q7;$Cjt78T<5otAr`?lXaA6;T9O
zf>*F3bN{5##)o86VNW=DZ7LS<fvUou+Uc!SkF0HTIx6-W7zRy`@h&w|s|x)NFOx)2
zUk>OYMhcVY0ni;rYF6PY3)?SLzj}%*Dh3<ars5DsRWZX+Rm^f!754SLUYm+@9aY5=
z1H)vH{e4z@iwegL8`E2Rt7@;|!?Zk0<?#l8+e%d-dT&*&K~*9LjqkNKRo0w;(|eVs
z21+RblS4Q1q5Ueh8yI@u%WVm`efz&xpfy#XHJrtI1*WD7^zKJh<6h^03jMNb%GxY$
z&H#~GRLnPUnu>*doG*e_I);kn0|SPj^?X>(Rp_A|ry=Nh$51huIvqn$lX);rg`DZz
zUimZC>S|TtybTxSUhY(Jowx0&-cDUDZ%eK2b`^oQQ&$Vx=NKv~l66mAEvStTYl({O
zAtUJbnq*yC2V`Eqh$~p-c0Tm23ROTTR6Nf|5-N3O4!M+~+`wiPiUd>@&3q)RQk6pv
zYSwoSsd+)o`l(&PDm|;NS%s^4`u;V$>ZVs<vnE-GN>}ytZ>~BV>H7I(8H{@RVdKCd
z{dRI2AEs0lGYo81F~?C=EO697Cq;19*SVc|w44tXRje?uRmCbtRk7Al1B)qwE5FWF
z4ELBqvkLvdZAwVR{nWTEDmD%ZQc%zz`7jhzNNvB|3^iL*HCtErYPP0o_72kCI;W;;
zPEFCAnyT45dV8p|*_>)qF@sOkTeSX~)q*A$%G)*-jeO{--B+&`G{Z0x19Aaq3xcPg
z6?P_@Wn?)Y5?F=W!64W}AuCW-6j=P)RTLZ8til;>4~*ucGuYIdRXF?8W#1W{E~ENQ
zSEfc;a_Z9q^+j-3@lkH8T+fGoP&@Ri%PFgEK$2vjEn_qI;IN8Kx^vyTFBEr{aa&Y4
z?zB|hdB$y3A+CD8x9_Cx1g5H(TrA_$mr*Qt;7W@14%|Rd%Ap+s3n}(+Uj{G-o37Td
zz53nVPCj_7Vi9_F!5^44M25Qq&PIT(0is`8*%2VBsgsZCEC*N<Alm_U1;}Qc*~-Vn
z<k{W;2||$%p@a`ksn7%0DSOTu(B+P+Lgv`#Z=-O{Y%ZmlO&0p*c@!NERI$XsnJVlX
z;>k9^m5!=nt%1!d9&l6@>m60a21iw~(NR^npw0~Z--$1~%&n;b=>b~5g%3?qp@87@
zUJBhagQ`L;gPMayy-f;Lg_;93w1kjrb8|pi0cox2wyL<FPnyT$xygSe)H0TjGF4>-
zpG@B7?piW<__)==CZ|xwt`?@g?3D>D_0ZKtaPUmO>MUb`O*lBqoD4luK=wM4iuHO3
zinW<ygMrN|Iu0>vV7ynSrB`RVbRILE78On>Oke42w|ZJtY#c0$?L8FwL1n<b6#07e
z#cMC7Snt5WSZX$-?W-tuIj{_W=9^FLU-xNhuTL|2eVW?q(~Lmp0~}H93b)D+%#&t$
zQb6@0tCTxw-ni8&cjAEPD&<U?cl2tN#dssSN_j`HRp@<okyR=nY2LA`gWC0b$tA8v
z70>grfwl`k-WVcZ_63L>DC1)sy=YMrAd>+W1c+i*%E!bMwRHiq6<}L{>;UKq5Vc`<
zfCL^c!s0SMG)9H}u3ztEwtkm-r{k(ntt9_GihNp%jtUoxnF+u~M^({m;7k>B994zO
zn3+NCld&{|kK(6t9-mB)9~ZL0AWT1m6HtgTm|7c9?C!Q1D~EavAAG8zkg;U{RJ+=P
zD&>LwY>3yaqNGHEVY>8kTY9-+0`_uSd%0oy_j0H9a!(EFT^iQgvIg*BJ}K*$6hy}7
z4HVlQxQpTg2L@*3Z<G1ltU^DWoU(84<+k*4L-%{Rt-aiE$?N4#?d67nSwLmouHN+&
zTOGKAqQ`*+L;pYK-akI7?79<t(p9Tvx4N4)vW;yLE8V2S52>mo)E$z+32I3oRh6Vy
zKP1GD86l+lAt?Q@RH8+<K(eIn#x~C2m`q5FDcNSnY{JB3ha?z?%_Jly2}zik?Zyd7
zm<hXKCnP2|v9$>^+3)w<ci(&ZfxX$!{IL&?&Uxpad+x7u&pr3PS5>eN09s%<R~=HQ
z3hgAag-j3)3%P^njOLyLI<HA0D#jiwN&MHE%>uRo$hMs89+DnOvRf#7<cO{Z5q}ig
z*Fj!tjHxFjwS(w1Kv`px1rpaapXjFHlhE4SvUvLtfHo8HSDbxiG4*?r8Y8NBo~a!~
z6kHfYlEWWog(f2YoG*?<Of$XIm`O!1M3*MVO)}z(rKt&%%Cfy+ayJUh0iLjupDFoF
z3CUSNDQ`PIQ$qT<@1FEYK$(@Fz<WKA;N3Z&1nKh&BzR|`O-3haw$Z(JDr*`_e~?F>
ziZ$$qE}|ENOl$&rsJTXoZ~89IUnP>;y-eG^OzyN``&k&a8bqwu!Vcn3F+UIin}|RC
zj3X?fIU#K#U8x<^zZw7mqDmocBI@;>eDOD*uWO}5?+6(;gT_ujCahgV#{ujUV)izw
zN_5&`p94Ox*+jY|*U3HvYqhQ@5j(QjI=EsDaI<Ddfx0wlDv-nN_(Il6-0BAJX48I5
z+OykaVCp%^5W5QWSDIvZXu+6YP<K`*Q*~usYvt_)(QFev5OO=wL(L_c*Ic3%FS0jm
zqL7f=iTLBQ;1cm?rhQ?*r$6TD@1*|si(rgMYw9HG(p(~~X_=bFjV8TCpt2Il7AK+>
zoj}Ug2}IPV6HM2za^nCDFOd=Ors_3tZ)pJ{mQ-quSYy`n1*0Pi-Vp%Jg?J7CeQq)e
zos~McUM%UdT))a+*)IPv=|iG5LhdBmqPax;Not>yVxIe=IYy*Y-Q|y|C6YHzq*GlJ
zWol@xRFvpGKu<wZAChtsM4JFQfz&pgKs4(nkkZ=SHk&4}OOhyjx75R??s)(V#q^FR
zStF9;kYrdm1$<2CP=WXapcHY+gte|f`Xt~P3<Q4c{CH8>KYx(?+u)Up`t7D9R^SH}
z#UjrF;K8o|Q42_-`v5pyt99K0JlC1W9e=IY<1AOo8c1B1N_5-=q6pTY67&%}5M(n@
zmyk9Qdk@^DmDD}Q%CQl|<)SOe57PH((q91<p_REt#h*qGiGH`gIZ$^ri-^C0?OQ;-
z)EHB@tY_*jqO6b|MCBWVOT>?A$P!MXQurN2At84Wbpb?##8J&Z0mLsgg>E8#!3Dbj
zNY}@;((`U@r9MY>C5VmzL@kLj(bYl3T7iGKa0|o(&8K49DZ}Y!{)+j104$M6*J~&1
zbzSo8WL90Togrl1B-w2uT}3xi$U~6Xap?1~xL`EsJEKJ3nISeg;3FvhWq{9Jm{bnB
z(MH<n@>{f#g-<Y|AdRHYQ+R?&PcZ2Tx)x&uIR%X*X(LM7v|}wgPMd{mUF@3)>8cnJ
zf8*R|T}Qw=C#kMWpT{jf&{AsUSCzitJ=SFIIT1||eGyQKH=5{n&w~DzPO3o8)lx=c
z4UjI*bwd30^$Q|s6WtXuM!~g`$0pKw+@+GYS)EG6A3yg6cAMSQT};gZl=XU1fkdT<
z?jl+P5I%`2&EEv1wYkRq2)T5s+kaDFod6)fBANpzYkaamLW_2Jirk$7_2#4)n}|PN
z?(-;29THZIh^chw-Wvy=K-@3joxFJh3BQ21NDf2igcM;D=?b{f-chj5>C_8AS2Rha
z1zls{t^BlvWfP4Dbxm#8;yi(vU%+dMClL1wcunyH5`F=%Df~H>N&p<gW}rQqG$vn$
z+d2R{&@ND5X(f#e_6y@ig7jh?m>4G6H%Clv44{|lt`02imjS39kzFGrO|%=JYekB`
zd<_jml^bb8_(5?JN9&9fsTD7Y6cK-xSZ61d*9k;ZZUU*JI)Uf{K=hJWyUAoHwHd(r
z0}cO#Ngy>2KmyV5Pr3=9#sN$KnspOQhq2Koq|q@V-RLfVqhkd&Ix3CsA~Nla6})zK
z`P&&Qc<t=+w=-7o+S$c+nx@4HUemh#O^X%0rgiz7h6J~1UH+zd_R6N6l%~arR)yFN
zNh1DGH3uYKAf-nt>2E<?T98Ezk%P!|b=+5<B<o{()SCq?c20^-5K#a_d3MtD_!%&@
zne8TW()k@1`r_|IUjV=iiC9DAKQl?<G5~y{JBClflA78?PYM|$a#WvjRbPX?BnA^3
z2#)Clj20wEk;*}O<F=h6by;+6KlbCs?6!NOvEA!`*BL!<_3xtobE1Ejr+*i_QrrJ7
zPya4Y|1MAeE>FMf)Y)|$KQ7b6eKMpwh-k5R5vE9tHEV8290OpZN_5-sN!-!=&9LYd
zQqdhm6#&sgf;H#X*y$kQ8;fBb*j;QAX=1jC@<7KmNpub%SxMY^Swt$(rCl<Ucbs)*
zGBTRhQy-113bq4w5{SJ4(pWl3V=sH4@d$vKh^ZP&9Dk~uszFi>b@)yeI8y$eWcOh$
z=BVA&B$4i~1Cs@>zdB3MUuys?j+p(22#bgwk!<2e!cG#ck}k!YlO*UUF{eU6G!Kds
zuhsTPq&wYbHJzT-bQ<Rf6?Ba>P^uul4Jfj9UqBaF(gjKOM5U0sh-hZ8aUyyf=JUKx
zr`KOeZ$w;sr!Yrkt#spdB0V^}iRy%#Bw|0y>!ZeenbQo_J@op00H!dJwpsk#0K1)?
zhIxK+(z7<)(85B}Fq?>TM}%l;><hWMi6(2i+G!djd^V|BOkgJwo29JRvaSmgAyZGe
zF%`WFjo$%aVEMcD`$dUOq)lqaCN#5IT5S`xORI+`-Igw%sq{K1VNRNwH#a240T?zS
z&PWlWF>x}=4T;qN2oX8{a8CT;3UmQGnBBB^B1&fV5sgD`Xb)Um<i-rL+$^4W^B8JL
zFdbr{GdAfCX#~=9Y`bSO+r2rqy$_wCr|Wi;J&8PBlD(6NQ&w4+S0uD9pZ#@ux;k^N
zu1=$?5#DZ(I6j+5&)g(UNPD!TF(7B@(*D+_WrXxN66r7^X_U@G(;68G+puQAx(VQ}
zg!p>^JSnC2V*s*=j|<J0*!6V`V&^4Ws6c!}vL#IN8Hnq}#x|@?C|9>4L1kY8__l0b
zYLclsZ*pngn3p%UIF%-1GW+MF(apAa>E0%cbMhDfo^cLH`!1gka>rx>sk0*Jwu*UQ
z7gpj5(0xtP9!~;%4fF)#6x603r{D<@jGNYYf-wr-6^${Xdw^nVq=cD{Nv0SP7ay|y
z3Rp{afhmeKv(cOSyM~2n*&3g0jZfC=rgDr+6@dAPn*ne%lLZo405;1+G#%l4j(O(;
z%*hpcPM)76Q6V?@WDki|0Cd$Apoc>4wlFg}Tj?@@<}_(qxCIVkkNAo>Q6B*36~`0_
zT{>cQmd-^06a4ffiQ@oRHql=RA31#P;q;_gizSD@tR(c}6I!FzngU4{gQr7Ar;|dx
zX8=!GHDkw>9H^}+ka1ZG!+X$6I-ycGmWcBf<(_wgxGPRuu$r?aYXBgLsze`lv?M~B
zPn0)&60@35#CpmOn2o(GMRuJ;hn|;C?IgMk5Kl$ouI3ZnGkgmUivG&?@b3{SNHf4H
zXZotd8GTG7)|mx^G<^(`J<Os(nml)1HA!mQEE>1dq&SjT$f;?yXxdJc6Eev*YW==-
zTtanS&7{%K(ys$(wZyk{2iynJ1}6KBV^XOue<r44L@xNvf<LXLuMkp`k|{>iCBk^8
zmPDWC`$eN*J%fYSnl%&F^R;VUvz~vUj6CLDwTNFjc21S9{wR)VjOGtMP6DSrrohK*
zG4<GtE^7c3<1~bL9DpfnOoVK9)>Y}CohBCt1)rmYWO5G>C-@UMMM4Wm4g;Rlw>7JI
zlLz3Xj}@g5s9DWBJ&Y2it&$RxM)h6XJ`k2`LD!Js763*?^p`@$O$M|6`^={f4sAC8
z8Hjp?OqdMAXv+y{kIUk2>6}=yO?32MNz;fvE2K?yT62lcXfDxN%{9uY>4IpA5nU3}
zCaMs@4k9Y%9u&K1P`ZeiS40Pk(0bkFjC#+AvN+LsAv=kTvbaxK+*8)+DRaAw%Fc?0
z1Q9jBjd*oQc-gzW>~3$JUN*bw0jBzDdR@xtBzi|kw-yxq7j%_h|I)ECskfl?fs|tt
z>89;4sVmUZ4@qlnqFEt3Oe*WBGq{c@<VtNfQd_`^O2!0{Eo7XiOLK|(G}q+u2_~1O
zo(1csWUz^no5lKwdWE!!@|sIDuDL`Lnrq6TroR$RF(R#LyQeAUY1&RrI=gFR%zi_%
z$BA_IPA_}h%iif_cL$W&Z%Ot9(LEtMh^T@FpD1|B5>%Fx`gagfp_cJfyC!!XN`8>)
zg-T49Fz3=X8Cjpxpy1NJ^8{T3py1Ns@&uEn=(`a7765LDh)u^?90iAkw29bQa7`Wy
zw-m&ajXCe7<Q3qo7QqBjrI2x=wVF#*r@2OxPjJoBRF3><$zT&z{gl`o(MBO{q6y6<
zngVciyfb4@LyQ{Mifjjw))3zeQfqKq=jDkrk51k0*YBOBQT7-BF(8qa?efcdhs#$X
za6@EmqP~xCl^*_RVGhIvb8{QS9dmOZ#Jss#ftpqVB+q6LTg*)oM3=eAg2<U0)6MLd
zYXA%~5q};UtD-;ksHDb-bgFAfUfwwKR@O6bXCKgwCLwPDtqu!W2Xq5|2?F<kv?kY2
zd72W`WJkE7f4Y%)yU-)e#LPv$zj~AhPa1J$3k%pajv7ozWo)7|Lhd>XlzT-4ZUf!X
zq}>361t42F^v(i6-Uk|&HtaeJbWW4!fpp7uv1PY4_YTmRt&(kO8<e#OnFG2fP2W|4
znpZ`I`v@r6D&!fUJbVvIn*fT!SAe_%v;y4^vI1x`Ob_H4pgQTiU0I-UO&$fR#9%;R
zO&3C30LXbDp0I&D2h=D7x@(ypEAjK39xwCtc)72~%a)NX_sOpC$(9@0s~8!M4&pI0
zsE9o;Px|t0G5I9HWaM}Z>oHk@fym03#EEi%3JJ|>*Gya}Dt*56hbK-0y->oG*8wXL
z#hJ9IN#tm8n2N291&+}X0O@k{b_Jl=sx8cuMwc_DE=Q;7j&m0W>!;yBwy-gF9%w?7
zL`Q|(Sq^(@7Mrp?^Rj7Pd1;DG^Qr?t1JNcSchb^Uiy_&xw9A?#(w4T9b$_I}Hmocw
zmSz)`qZQ~|qAGy0CSH`*oe{oGRNkybfGPmWI=rTk193$7Hqi|scM{#vT%!8``34Bu
z@r0PPO*AFs&XYiMnoD#;bBS(gE)l0Z>POTiq)n99+^ax(e%PEJYXRsOqRm3?90!`x
zT%wbjOLReVIhQP%OEyuZkUNQ@n#&n>O_M~AgxpEAx=l(O20E@uqO(Hoya!a-E&@rQ
zVNKoyx~oZ|GDP=i+iIXSLfS-|G?!?P<`SLI+#5g-G?%CXVGA@6H4AB<2fC(7qB}zF
zBw8ze!ls{?)g;kLA$Jnp(%kz%4>U<MFXT?5I#@UQm+pl|4ss7rUXw)Uh1_`+=#l0U
z(ea>?L}!JxiLPjFIsDHGaYZ(fc2GO%m5ysJol{60)Xoz?v*Mt35*-oJrmuRWNuow^
zTRX>r?rD+}ajkeToAWU$B>w1&Ud4h}=NT9sJ-s_=V$MO-+)PEX>G3%q!6vH0%p;rl
zme8RBXX9o}Hu8x%B_U44=}0!`V<ToCX<|-FY6P0Vj3b+vZicRexDS(od}7Wg@`*#3
z1LPBPmXJ?8?C^;>UC1Xs13*z`>M$#(P`REOoJMs3vWYo?n3MQ~!zbnxBA>VdbBOZ9
z^8jck;?$xD@jT`WMTj|fgb#cR(}a9tP8nn+vN1WxCg${^IPnUYJo&_&H4rB{?y!kD
zPbf}&0{{`C6_@~$6PUAwBE;t$J~5{b`NUjQDbLw*PMmv9fta=rl|+58Pl^z8L1k8A
z+Ac(h?h3o6K+J%JBE)$ZGP4rXsL3Y|!C=WJt`iz#39LgF@4)f$7EE#gW*`yG7b`U_
zpJop-3G-$qkVuy6Gz|C4V$U|w4I$ms3$W#K*ex`g4A;QAEtVc5Vrnr~O>>dQFQ4?C
z<Z`)vU2>p%^fiIoW5ROv?nWj~6<>t72e({zeYz%adsbLBk<Q>&ml=iu<<{uAqSD46
z9zBEgyFgAJP=;6c8h?1$_ZB5Xt3FI3^v6~7Gb0_4Q|K&)H@;pv3c)#<j5g743z?wM
zc@eaUE(qziF~r#kSh!u;0!~zlOc2>Z#)-N#mq^zMHl{D1U~*|{9hOtBy9>){1jh!T
z?}(B@#))=oE)lc&KIP>T>{^;S2NqZIh2@+9=R5%A5M2;5PIN_ciI~k-j!*FN(o`GX
zYZm}EM?`1l8;MnLN-qGAN<^3D+o&2(wy=(~5IQD;38Ldd#)(d9E|GSCZlC)EPb^LC
zf`97+_~yk?+#X-Zx`tbNzlF8A1@2uDOc31@GEVeBbBP{luCV~0;Qghk+yI0Ch|)e*
zMB*+0ea2W`yB&9i>_$pXQf;E6Lhd%jFu2(bfS)of?kF5qAIM<<o>deTNaO(!C1N}z
ze1ASNQ4KEM^nkumJOOWhLmazJ^p22T-@~V00Qh=02R|_d0E_4|Lb_AUc=d%HeFj43
zwII<2A>%|>G?z#(25!+l!OKfi%OF<{KubSXL_%+}IyNDk*&>lm2mQF-I3bYH*Cq(=
z0r;9zhQvyVbZnvxLb}7io!J(hN~8m&UDQf1#cqVB(E-gadUiT2a2dtW!~6RAq?;X$
z(bufQD#d1|Z1Xzz(eyFYP)B{PDEE!K0jM~UUgUOhFUa7^*PIEo{iw9xCORo(jOa@M
zJomq$Oz~&HxGd>zF_%%J>i{Suniq2CX%xYtU|<Z`=B16US#lLSB5k#aPQbu%QbcrG
zNSo-2=9;3tJTWg%C-Zzs1Y<-x4+c?RUY@wg!=s*f!OIpm*>r-*c^%cN61_X>fOHMf
z2z@<3YK5fQQ*Nr;BU5gZl4p>5K?@S;>Y@Mil>}>CrxLvm@P7)G(kozA=vkuE`$@W)
zz0{aV#a8)*`^bjr*8%X{L|RdY5nb3?PglY(;2lHVfrh)HY&Q{waHMp%*hr&f{{D`>
z=H24lfv7@;O}Z&W$94YK3nxL$nVSb7*8XeJ{CZ&+#8GoI|8L-iyPcFu5LM=;4#Z}2
z(+Hx=+}z!RlpZHf7R0!@xeDU8xvAKTs1tzZyk6)6vD@5CfS5BkWxY@h5HbEh?;U{L
z+(}_i43L{p8dDn}Hzz@yGdEX2Tr)SOr>4-r9NLCw6z8CVsz935TS%P;VEmbST~b{u
zJA#xF<Yj0{yhdoec;qM|-)IUU?IvKMhus2B6oAE_$QCkA)TOyZeVS`D`2>?oQ;&dk
zT{3hLu}HWN{veIM`p|<D0JMl`Qb>3%eKq6uny|W}=w0?QdSe`&#-0ROk+G~wfUl40
zAir7!cX)YrczJesdED8126@g&IWgwRNp@@x^fimya|>Bn+@2IxoJgnIM7oY{3$8=!
z3K8rgV#OA;--dD0F42G_n#5{?ybg3*NSkP0bEo!Uo&bD}9Y)rplHF$ZKAlHb8-B)B
zzQa@QHu^eJ{|bO_9a~#EY^|<YQ&<aCNr12>gk^M5+Cmb7vrRxbO%mzq@A68(WY^bS
zH;-$h$DIrd?d~+V=K!!fqVqz=i7sm{(KXGroXaP8VQK0dX7dFA?8;<Vg=tWwXAIFs
zA>%}xAb8Vo9;iZka0h#wb^<QVYgm&<`>|O8fSbiQa6CYANX}}~6cvT0GosWc()xE%
z{|Y@qM7pS5EUHBG+eEt5T`V=JxkNXG+{G_@WhD?15S<p%CSrZSCCUkD6Af!FQC@S2
z#x<8{LUW09Yj&|UCp4ExFEQ?j*12^_dUZ*%Pjm&6%)V$@+T`Zh$vjyAVt{$KDLa{c
zw-mXP*>7vo^kq2&D*;bfUHqJD2;>&I?c^=VX26ry0e-CYGbOySz4R`SEb$2|&Qy})
z-Yv-^a=U}6B#!}}v<_-zygA{elbn-VQD&ju9EK+>sS2C%(7Pr1NN!`)O$%Ym9AT1E
zSiYaIq-4`r(^otxuuxJ7fHd(*04B&hPzCgYWN%R~C8+Qr0Boad936iIz+_@=MDAij
zqt>h)rYKmm$;@u=0w6TrTp+=&^NpME&B*B+l+Ienjb9D>sMPxQzsAZb(`Pq?+<VZp
z7jtj&-En%4b!RUoA?NdZx140W9_6JX&eT^OQnvt*fv6c!jF0^gCjodDsHi}q3ji4+
z)=~II2W^O5%?fa!%S5(=s8Yx{5wjsqWk1Yol1Nv!lS6Y=>fJ%~2SUb)*iFbr#Kub*
zPQjHZ^Z!eSg^+JE0Kpy6768=}H)}Q#TSYco_CKu|rptU*;%BieGrXq7=HAGyKrd8C
zPmBv*1sWqmv<V<@Z;{xn`9#fzZ-dC18>8?93T44;EDNP_D5M;x9Y~_ZolhJ8e^cFY
z$jt(vhUf@@1rgI_fK9|YJidHW(=trM3V?5=T7#L=003(qDUTMWP9cTCCrU9o*p7Fk
zSvFBgj;ZdxfT=emHAbWb6Go76f2`owbX8>IL=@r%#4qeUwx;6iBAg)7!k_N*3ws-e
zTadUf!tRR9dj7c7)h6m&SZ$_;gcT#wf(awIu-cSeBeHQK3bERLVXxX0t`gw{krw`R
zpI_Lk_9jR~McA!&A8x;>Sws~B3woQWCnPmSM2TX&zGfux_!*lTeNptJh{lPu&V-Tl
z9fMKum<T3_bcwFJI}O$~Nwx0+-P2?Vs#PXcb1Tk#Ycz|fVsJslnYv9<V?;XDEyPQW
zd#SDgGIg`$O%Un4+f6&0!OBXieH>^`ljnghYw`imBTbq-S8;o5A&XkqNS$q>JG%Nr
zcL6jA?~M)0Hi$rsXk5sSDWEw`5?uypJ0e9zaLPo~r=ZVWN<DRPs?(y|jVN_^=0({}
z0IbABTDHqC>sePL1a^z8Jq2`3lP7`BYLXSZu1V7~tlUG*B8m<z7)7S86jqE#r@Eu)
zrN+HfcTdjLGRd1D(s|uctN?3^q}oIc0RPzpr9Y{YiLMHnB)SGzI69P_5`h>I<vB-)
zDeRvk6rBZNT_e&ZB)k$j{UvyVz-;4^EkQ&fjICeR8-$}soD%_ermz;bG>hoM@Pa;O
z>h~lyMx;~SUi4DqUaH%ROua986GS?%JCEkUDwD$Oa-hwci~{Y^<OI+WO&$k2p-E#J
z)OK65i1?f9zIA}9B_Aa#Ms!-pokZs}mq_Qqd6mAHr%Y1gL^{tdq6?Z!r1Q9&1m?L1
zzyu&-s{cityWpLa%pKIDGrJc0z)juZrMgk+yqmh+OLhCUg6c%G{SatglQzoNh1jN5
zSCMjGrxJY&;5X$8<Y<(>vx&9={K+>)ksE;JndpI#Nur0EOLYIhg1%>-lDzJFpxt96
zJBao`P&*+~$0S<^5jE%pQ*G)k7bP~4t@WAIByRhJl^_}h;HcqjG1c~o+Bi{G$OMrt
zEN&FAeo;|i6Hz@BJSaBlUYSWht5UKgh&BlsC(@Nm7{S$G)k$iCNDF!kAy}*?jCBfV
zQQxsOd7YQ&sE~1@W17o6x-D*bZ2b|PN~H6|Ol{7B#q#tigxA^r_Yf~b=9<<(bX~|e
z(M`=Ix}&*9uTSvC(o}3gOsV)1R$r;UuVgKQOobRnf@qbHaiU7iC92X~Q>ssJ_0rTN
zSZphXvfM3HZcKh7fq=tQ$`^akMzeq?EPQ9wXG$n>8sOZLJOg;r8Y_|gH*c<Z>81>0
z>B>4#;j0C17E54j5XF3y0i_|Bdn3oXusw{dS(y_6cp9S53VUqA)B$W(g<2?WH2mOP
zM)HJHR*7}shE*`S^qrA81DSIGr?9Ii3~Lq9bs-Z(cQn`Jp(aQ0+S1hPUa9xw*X<<R
zO>pn%a)|B<87I20xkU4tYs&En-dmcw2SxWu#bQL`LMDigXf6>u3)XVZ^#bh86|b_9
zHqja(lSFGZm#9i}iRv_$Xp`oe+ELR=Va153Li;;XTGpMhyiEd7D$(3QlAT6VGgx~h
zbvw}+A-jmqYwiW0E1EQUuHyE(uxz4RLMDkGX|54ud8dW7o#;yoQ?s}|CoH!%WaWjG
zBsw8v2ay&`8qE|uDyd1L#|vIV>NiBtUBVvXmcPlw^&M!9kR3#89j;Rf1y^Yn(c=Y~
zuTBdRbqU!)bVPGawJ8|YETYE?9z|*$MhcU@+?{=f`2?yR@*Y<jHdaMb4q2xG&NtkV
zJOg;r$~&$GH#fX=e>Pp}nCD%LdU%sxfoFEFlgLlSn7!0}Rg*+t2NdJW@>l}Z`8~)F
z&SeUqp<WSVwTa4JXHi{5<wDv-CnkjJ&-2@oCq`8E8dE!o9s%?eA!Uh%P9iGQ38bEt
zgcwnskex&<WnnzQ%ISjQQjo}Q_cX+*L04|OzjBwQatR^|W5~Qb2``U3kXIpiQ}WnE
ztUJt>i22yDD}Z%XZBtcW;CkK3k7sD*1!}kpSg?f6Lf0ix>&6shJp|}Ao?4p$`fdtc
zp}WJs;`?%7MfT;uoiB%PwO-{^TPkLHs0+*n8PVNDeSigZW%_1GcPH~6>d{$@7Q-sB
zhOzV*?!;0-!-Al1wK%?1&||sfo>?koSZI<rdoC}PGc3rhb*pz{shnX!ZnG<QZ>gMN
zp&7H@S2%Hy3c9a|<^VKdZ=df8#QXx@ftDu__X~JCMe6*rE`sRXk|N0Y11&&wb6J6_
zA`l~@5I&A9*a&;|x#CD*AzNM>v)nwy8DbM{nUu*w)F7lyH2*Q-5|vMzJ|Q&)U=$5>
z&rKlJJR=FlkXXt?0QQ1JkA&P!L_s{fe{|R{dQU18Ct^Cs!0W+P;QDH8Atxs<P=&5B
z5nl#?qad=Uq=fmycTxR^02DWWn6<9}$PH`!5P(h~DwoQ;{)7eI0?>01e-8i$PQ=<h
zXN5j}?{F!aP#OxXEwbLXvS8X`stRkoTg*B$4`%1xVv`xg-*cO8#PLF8osq_xP)FfB
zS_0v_hgnxvP;M3%gq)jvIX5xqtj>AgpYy(3=4wb(0`O>qh?${evroxpDmki^Jn$=d
z;3`=IiM0SIA!24U`HB$CjV51_wjbAO9{SZhbk$TrGz5SeB1g?tznZI}hA)}81Lt(c
zysM@Tc{gb_M2?zkel^!b%@J)GQ<HZ+%b1$<S;o|)ueYaAsJ=Es>lR%AkyF5Re*xE}
zfMdFVS$_eu{sLzG1#qDB)d;Q4x&R`lfE)e-Zb$*n>^b7*j6&SjIf<N{xBWS9`*U(!
z^_7Hpm(EG#<h<k0dB>mgn45Dq#P{f&L{84T{+xIHIcWs?>VtSz=Ol7+-t*_Y=g;ZA
zT$F?Ou+B;3<h<|CdEcMYdpRf%@o}A#$jSM@pYwq~=bT&HDTvSNoJ3B}d4JA%f6mix
z&Z7`NrgIWGIUo6RKJw@EzFX=9#82v+L{84BA`;HbnkpjUSc3P3Sf{}}1Hfb=a&pf4
zbI$s6dS8`w4&vu^P9i7g5r57j{+#FCc3y_~6`hmF$$8YD^Qb?k_xb*-5Wl8#5;-|<
z`JLu1ztg<zmdTu}F!%A*1;(tdgEavGyrE#`ukWSCTS&bPK*ta{y?9@lUi2RxQkISd
zK{QbXl)|wcFZR@SnL;V*==xh}BZc|)p}U~$^ow%A!}D(<N9zOSiS96>zEaBz6r>^J
z%QwmkB)GIa$<?g%h4R8($BDTN<H%gbVx{N-s<co;S%;W`b<j6hV;rOMRw!17PK}Qo
zfmkGjJ^uziS6BuLCDyC>sTorTByhE@(%NSyNsI#=DX%Qg39_so7>=;+Iz(eh%Z4Ld
zAJ`CIgl~Ga6d%*(DHD5P6#%bw=)E3qk^txRi9H}`an9=#B(DJQ;)WLI4adSs-wl%8
z^MsX<Gc1sEfTyfaKfp-oEM$CHWOh@ABzqHM_24iWykS>5DosB+x27*$annebVL6v+
zDqim1EC$53KnfAd3!4kP83rJAZGi-<?xe0Q@Mai*)QSQLr-sa1;kP$3*1BWu=4UNw
zPY$D^;H#z9VL2CT$)Uu4xd`(}qD<y=@0~F;_a<Kzs=OJ1z>P?UtnLXjM{$FsCODY1
zO2%;PODY%IQB2w>^<^`x|G)GT>%nH2elSgO?;q1oCy|fK5&DVfypSE`Q#e@xfNL81
z04eiYkmwNr4zH*{;wcezdzU)3qRwj|wW3Z=1DXjtl$bV*;{;>BAdOW#uKTI?G614i
zfT$4U^14j5zrUrL5`VBAQV&Zq{b_QVdt<=n-jrX5JW&AKL_7?@i%F9O5+?vy2#Ba#
z_$K2u6nGneAs}KpRs|MQ0RWdsdoOoQI0wPYIuFs;g>;AIG;Xz;uBv4W9gf&?F1jE`
zlI^54QcV+mf;Q^Vr>jGh11#JYlQSy<F`}c6fVT}j4bBA-u!(L6nIyWUxkR@$*Hn*r
zz9y^~(G>tojTJ~;mjs&{bT;?smbZ6wD$!lQ!pf3!PYV#;Um`%x11&)GaEZX>SsdK~
zu$v{i4$w6-Rkz;2_yIV6K&t@@>p)IO3lMEuB0x@`79e^gWRmFFH$^YeS|O7}b(%}G
zS#yb+HJ9j!=9(IM`eR1FZh}`t%oL#$Sc)x5Vno!pu+g5%xKW86xTh~}^nvRsiyLL&
zn#v8MnJ1;iyNSLeq&vVY=Q@DzmlHpf<W3gEO8H+q=lwYV#)0U(kV&G;noD%@Eea%w
z&IoA}tvVuHQzdG;BY9#(6xOXLbyl*)h?s3*w^023p1@U25?u$p8z(og>E~aVDl72*
zj{#3Qyn-p5DjrJVoh;)4fWN3*;tH$+XFCAxBswBwC*>Y$E>W4ZsFP@gkT#KSr~5F0
z#XJI(TBFvOwYossLgpuNkFPslUEs}HQQARGI=ee^TacnlcUhOgx&pvstf}z=soMZ}
zbfUXD!TPY<l!=dH7yxJr(OCfd(=L#@r4xv5y9uQ3>ja_)ZUQOm6QYW!gdnO+zml^?
z3lOapGD*~+xkT4B*PkZ~7R`+KxFmNFQPOXHyuU5UHqjjbjvMDD3Z(AI9UDgKJ^(Ey
zD*xo-YElogz}=XfIDTTb2bxPXFJywqXz<)GIV%7tf~aCi5#&^90iwDk0^~Gm0V3NK
zAeGb!L|txz=`eEkXaS;eA$JoU11ua6a?Xo@O>|Spq|wCNd7VmBag+^mQ+Zn{ESqR8
zV4-pfydVNGA|v4S5;=7uU=wWyEYv`O9~XfbkrD7Tkkc#zHc=9=Py+>`A`l~L7t$s&
zvI~`Ifw*75I|yZ#Jz4`%7O=213iOIVjK~OhMUeAJ5wMAl0<;EFpVbLOC*1@y7UZ1O
z0z{XW2&{%=u}GJgJk~u(nd?Fk!T<=|0z3pf0+cD3DPT2V4d4M_9#8@m<$x7{Re&jg
zxhQuM(6@+RSq2{9HsBG!T;uP?+6}k{xDMbi$d^5ZIy{ZC0Oq;^{$jZY;F&9nJUPHH
zAP?Zrsy`@)9>6?+zwAw&=2}kvB=VSRH{`!x{xe9wOPv6tpT9hAuB%Qu%jJ)Zn=ASZ
zd=y{~z#sfJ7k{dozur9$C|O~+n3SMz0{C;>_k4W*>@j~6csGDQNo%fQ&}RYX09Sl`
z{wnJQ!0z{9roP`u!}>wnfFyuFg32E%<xiiQ-zeqJlivRT>IUFXMVgE9{0&w9Na;-{
zoxiDRenhk!vQYqkKGdI&`uNM3Ce7&MZ$sXJk(wV_<nJr;M<V&li1`m2DbxdUB}m)-
zL+Dqe@n;R!B7F<MFUMc3<j*ovhCe=NWQ?X;mFR~bLE8cReK~U_Ux3pDWC1yVx$>a-
z%U%4{t|M#EZooXi{2JDBa{O5@b4`HeuYZ|e{W5&&IR-cmI04`<a`A_@sJ9HT8o*ze
zGS?o^eE|Mq)ER*JkuCmARTN;ZYoKocZUXp2P3F3=4&wp13b+Qi0pRcS<kn+c04D(a
zEgJL7E#_BSR#l-)fVuLJF>>cXn`<7r8lj^ZU^}{wA^jFWbUA|jbr$o>E&Tlz^P4J0
z4}a+8DBw8Y1mGlqKfkhA&PLunfC)fl0HHfzGoTT`A007QSrCf}!2BYH;jak6_G=&u
z;J0%h16&8(0`U9b`SqRW0p{D;`9-z-R%vtb`=eJtt^%+Muo_SaU_O4?vbp$$(fpF=
z#rzOtSw3Z1j=A`y&4z!*$8WC1)(*fgY@P@3tLMu$!XE?p&GY74j*Xr=@WufXOoJYN
zPxd%~UlniKV!q&;U-`<fsIB@*lN<8B{QL_0%gg9F4qfb%e~F&k{}c2agO1~X6M)lz
zGXT>*ew8cRV=lvA3!a}p=gZ6X@mpg109gRPYj+sHFWcp}#j>5|szP6G0W<=d0sM~G
zJ^;TJmi=rleuW~x<<NX-qTwG0?*xEf4tU}tSPuYq0sOYU{7)Gv@Ijvj@C%F@>oLax
zHlPb&zPxS<^br6*-EOWkTR?$lzAnamSBy#TYk<u(!gi9t0CSn|ZQ*wq@%xL+wP!2V
z`EBqU+c5{bK<~gB0WjCGX7mr>1mGlK4#4jTF;`_2?E{!Eu`v8*@NO@|-`tAv1ekA|
zm_?Z<0p{X&Ti5`8p#|m4^(cn^i^C6~O<Mrw3mi=P8l-){bf)p^fbJnLzp24|O@sN4
z2J;0Cjp%Fkskzo9U@L$;fZwdZ?>e{#xDSx;*>eP`vmD#I)8LB?`jB6S;9k42z5&Vr
z<p6%5o}Z5A2jlMn_?h@s-KZC!u@CkDD9b_)kOb@o@Pj$-1$n<devF<U!#1A^H*)+$
zcovWY3<L6jS%A6tN$$&lD}ZYNew_OTz+BYHPvwVt;RBs|@x##kNHagJ&CfXTQ?2Hj
zgWP3+`H;5Z^AppL02cC=1NgD&3V^xzk^Z}T&{pWAZhnlOpP@CMjy7_~A$JmR7H|c?
z4=`^=zGgraV6GeB-vrzSSbI=^Kpntb{GtGUKLFeE&{q%gti9+b0KXW3Y3x(;DPq>i
zw3#2X<Yz1wkCUmhf4q#oD&%=wzK77o&#Cc)g8b|uKYYs%gZlN<eV_c77v<mW<mYGN
zjsX068hv{BF;terPd1v1Jku_Ic+p&>`Ef&kJz0+VAnanfN6d@1m}@QWn*odY)M@NI
z%RJ6SnxDAir~TLta~;8$$hbJ;VfY+7e$_(-Y^{>^=3M0QTOatzJC2#T_;DqEPN{4V
zb_p=okrDVhz-ho)fVr-Nz6-bqc;MqVkHX9VeSl$rxlVwd1Dpn&@$u(L=P`!?d~JR+
zpb^jv;7j)ADhIs+unIsqbMejlHGnEWosZAA>W>1Z4j`5Qn2T@DkCP8L0x;KE(02j%
z0QUh80639yujSI}kiH4f?33f$=3M~uMmWpno51E;knYR32Q=UPraa%DHkaX_1n-=W
z&v&=^UiNvw1;Awh->ha{e|e|Dqa68neEFBlyTX?~H4gs>FmINc`uO?BkZvy0=K$9L
ze5cf0(bq7J0KR>A0$?ukk`C{zkKg<{_yE2}ST$j!F=mJ0hX6MKd|Gdws^0;97jO^o
z0AMb@EW|f`_@s{yy-OxBCICLs>Y4%#;FB#ri8ui`3AhR<pTT$n%(a}JGUzZD=@ozq
z03YP72CM-@0elE(uEptwPZ?9MKA${kdkSqs9a&Fvk)H#c2k<f27RWRLngNtI7irVZ
zJ)rvlS%A6xJeFae$SiKZUoMCI#{j1RM&5F+Yj2_---3?-@Q~JAJmBRCEf0tN{Bw}G
z4Y&ii>yy9pVV>iB9odVE{^^;gts-2w0Tku>_gcZR(UBmCV5YY>*fTOvo$DVQ8?Vj`
zj-`6`_Gi<<y1=Gj|6p%!tS_a7&5boakQ?q98BGOxsckgh*Oy8MvM9_-jSu(ayHn%&
z)W~2@4m_j_Pm{=)AKLHIBSX2Az8TGr^bcl0E76B)X}V{0G&PdfG@huV1U!X1|6);v
zx=|di$^J%Atw^hZw0bJg9;uF~gMm8rS|Av_R2vDZP2os&AXpu#iPUbWtqE2K--%p`
z>}x5gpC1aht*>3L-W^Z}0vp#?zf`Nn0_vH78V{^f<$+-BrAYDKii~=9xVm=T#-^ZE
zTvDWd*9xfpVdQ!(5UExl3aCEbtPZH2aIji^IG|d>!H9a-H0lsc1q+d2byf|Y%0yJ%
zscMv+ja0v^K1$JN15F!MV>qKm-p;7Xi|Y5Sx9trz!Hp^(P%FZyL$EGX9aKXB^;}@D
z8YK!wiqjRD&sSI1^aj-j11bkSQmG2G0M%HD0@SMkhj<E&u2o-qF8tmNHK#vExzccH
zM7<VP?<%W=n0i-$f6K!<N&ZGq_m76vmsGl<D%4zC1!ghZU0mQFxeW=mZ+}3D8Qy(v
zR$Z}9p}(Wm!RB`Pt3FYbMh_0mW~;MNbjO?3)gk;xhh#%lHC3TduzFVQ3m`3*o~f>>
z3aY9w1)4+6ftp}da6_$H5eSB=g3Y1G=l>quP}Rn$%A&zFh18{e5p<vW9~0qdRj4W(
zva711p-goY&E1#g$jj(|Ouav?>Mp)Bn?bjr^pN_MNiVe}*rGm^j?qjuq76ld3u=2H
z^A)vWI&x`tUjbdWp{6>xzP73+ni){dZ>!pGt3+A_0xBLrrc8_aiS%B`RD~kU-pfBV
z{Ig*{#zK{!8dR@M*QtZyVBNZ4FzA!&7b(@87F+uHT-mWmb?{9vi%SFYw>nz00a?`h
zrZdr?>JMkCgD+h;5(x&`acU$Gt->h%kBVt@IBfl0VfFMWsw_>Hs`sYX*UW6I3ALib
z(B$Cd5PD{P2pwa?dP31`RU}vyMOO@+s;R0DLW1Rlw^jxBwMDA4>uJy!w@@`_!kJ0T
zoM3e(*ZZANRl7F-129<F&H8X4n4O&w-ulm}FYXItmS7giTmlWtD!T^34d|*+um+O>
z=~e1!u{HJ6Y1QOdUFkq(|1W+KrnYax7h1onK9E+wT5&2^-L`K-u<GMzvihC<oLU(b
zJ*8HKqY?F?a0Y`Dgzl4{SG{5NZ^G)w!<cmI)knhFnEFaZ+T>PWMb_V{KraQ=rTu}G
z>e#cVBGqluRnzhpuBxPnMqNZ(E(*2=3(<^PmsUH%5lK_eq_a1XRIK)1Ec=LBF`dD6
zDbh;m)BGb;N;30Li_8@a#BcJhG%bG@l`>0aGyh1TVm(5+6)A?*sL_jR{`I%vVqTh7
zk%0PRxE-f^1L|v&flF$A@t&f6x|q_-4pwn#nEH58Kz(*Htp2O@c2ND(;Xqcs0nY4X
zc&1%yQ#xImm4e@5Mxne$RO?1em#XYVSWA_v4gZ6PAeXvkO@kNOsD5oS{LScFaG%v1
zF&3D|E7JS-4`5`1zZp?)O=1+Fx>)^@70%c~b*9y;w9{hs-mrS^A`7O)w!IB~YP?AO
zsTBrQfwmLHh3*SCtIgra#_BrS<5L0r&DL&&i+%|f^%ADSCH0@J;&4&_o2q&`sOmX?
ziqvmefg1EtSiSHzEUvd%RDE(%TU@%d|C?<y5tw5xlL>MDlywF7sp|BMEsZ?g-m`I?
z*fpEGl08tNzIQl0qo#}Kwzq|Yl1c~EbFn(|7CcuPLQkvnlSmKNNQQDqssEhERBhc5
zRUZheT%e%)P}_v4kUuyTVx6(-48wyT!F<8e^97a|uGx^qM1*y>2HuINm0{{h1XQ)O
zvNTXipIlU@+MI?-kNOp>s({)Xo{6@v%SPa9UG3`mQ&>7`Hq>Go-C21`)QMT(d&}sB
zrc1vH*Py=K8Ndn>47Og{P}>qzYr|X_-Wxy_FryY;A>P&q4=Yt&@FgetJH(Rc5Fz!^
zfcn^vrEAm`806){fnY%Wc2QV;?Qoz<{a#TZ5=jM{)wd6agX(9%{_VqoOmrriiL_P+
zBW*L;)=VS{Gr(W0AL!x#6G}dLIH3N)!=af}5Vif};j+!_)c=M-Q*Ry)w5kV1Y4wK(
zzg@e&cJJW&+DO@l`&-q@>Du*hG9j$esyEHmI~|BtN3w9U<I@Eg4}9osKe`DX{cFSF
zfO=n`Y*z~=<!271)$?#Z0rh-9{-Ts;(wMZFe)X<2w5Sh;BPtV6KZGF&z^w(#UO*wg
z@QMCN8`qFn`14rXg3&?bst#r{{kRGB2WvJ&LNm95Y79PKb%nLj2UTqV9_ey4xPdKt
z4I?_!vT=P7lRbl~d}(DmqE?4hZvYMwcBas!m@N4Jw2Z9U8IFk0Db-FdN;`3VO%WIH
zBC#5=Px&M6NR3TLRQYtM3QZK#!erfZF;Xpyoa5RS>6(qcRU-k3xW6gps(u51X;O}h
z5=~-k>U1tZ2XJv^TGa&9N59>QNttF%ieb`fEj>iBEQ_l5;(x*#C@JqwtJ8fKYc|xV
zXE56^e_<Gyiq-H18{-I?Hm=`T9cit}1l8_9G+6x-=2M;eA@qxw?q7c(&{kDdyS@!8
z)Vi7wJZhm8_EH@z`{~P7q1kAERjV4rD5nv3!AYT3VfBYkUWCE7MzJ&;ib3?N>S8_+
z&Saz6*{c4gLIxxCdxPnf2<R|D0_xec`Y5tL69}rO(ly&^pdJgX>Ikb1VP&V)JveeZ
zeDXI@|F<HUFS0+fk+Odksa}UXWiMn^d0G#<Gx%`b#o<e8XF&b0m=!P+SmXK0fZBBN
z7ToX#_C$R^-LTT?9Jv3x6_7Oup&m7t&cMz|pl1>M(SzQ`G??S$I2eZY$iQQC5ago5
z#>WN+5F%7F=6pH;=Zt`~Jb=I>jE-Elaoxt6(1x03glB4)k?MX{p)#Nv18Oregw@Wp
zdNIHXBZ_@r0FH+tOh)~l6;{778LnkmG9zZz=2+1eSVOT$&z|JAmI;`kEm(0tB0efr
zQ<L8gs?`_OiOF;!itkclE7PUFrmhwT)E^xRM`johVR6V%=$FvgJLvFBhcW!=2(|{F
zU<UO!RsfBbnAVB8TBu)4tQwJ|dz0$lHxrav(Kw|r9czi12c2FHz7cF)4-d!m;4DYz
znRIX#!{c<Y`o!e4w6(aD23=IDbx7r<p)#kmN~UXSgC0rMIbFCk*BsK-s4G2H%AgEO
z>@@y<91Z+$7Cb^QGZU%m&%g-Mdb}_pLWu1-rtc0!E>W$@pSqQm`CDB2HW}g48TD@u
zr`10exwf!y9Z=7{jXCu)Yz2l_Gg}Q8uYM{}jZM|gi?iy_k@erfOFwun{XPT&Z*Igu
z!G9xY#XhI%^N3x4sdPas_xlI~;Yr8Cn4Zt2H)4xXHTzOk&4zstJzk3Tcwyfih>k)o
z##pF4puYTiV5Yj3k!*GFQbfI{cx#dR;J2%TZ%ALg1dov^yb)CI3Co_WC;W{j4#RL5
zz9Fb8rrR()Xi3|8bV<BcJ$Mz)KCF5IbouzZCIEM#{*wx*TN44g?aFYlR_%i0mb(p%
zw1WtGFX3-z@pMtqchxsk@!FzGEwwX+=$ve4B4X3(msKD$HwV9r82DiLC01ij{oQy#
z9e)z5(Rg?p82I@DS^=EjyQUvjy%(I9(7)<_N#OGcNWP0Py?bz4eQNUC>bsWqy_lhY
ziZu^X6g*xUQ1{2v>I=$E{pN<6e$0|;u8MD{uxx3LWZ<Q$=HMZ*e2P&Qg=SC~gP!oq
zGg%?IUH+w~121g|Vpd1`gDuz>)J)c>KO6}JFK5)xO@uK@p<o6Dgph4En|Ukq)%CR@
z^>0-ekycpc--bU^e{(oI2WRu6)#}d>!Tc{zgli+}*rC81AN#Y`C^j0=Z#pf8BX}1!
z$kpmMo-Nz#AMoGIht;*$!!u>a7farL77>~@4RwBSI-|b++(mT>Zu)oNpoxF?xj;4c
z5AamKKR8_-`NI0znoRcLH=`J|8uiasfYapzdM$k8iD~txuT2*a-*9trr8w}A9gAUo
zzX=aB!SAUH@OwUEJPu3Ds2gb5xhGJp9upbv>S#+;ed};IGgtN_2vgLZ*8_!UjS2-2
zb%z;rBlvjkZNIMX4hFa%)s8n^n)yOB)EtZi%U+a)IK#$6sd_5hnn7TRio)!qM;NkK
zt3QI<y*Pw6uL#V1EThg0!IS@^N@v(2><i%<!!y|`jCN3E%dX92GWOQm4cK?r20yQk
zAJP%Pbm=8{_s=Qp(7r^+c&a*rh$@TSC0A5h(3#gUouCmFt%<0gFOd!P%W9|2pDxX|
zd?6bAGj-MNCiSx;)36ixKxR|_r8upAeZrJRRbp(2aWL?Q%eo@!dnH&@zOBCc+Vq0n
zfYV_4r%G@_@dvMk3+i`Eaj2sm?{ukpG%>9{01LPWN3TAPv1mCJRG*j#%zSejToVkq
zDx!YzP(b~4vFu@=D$8@>KZSiPmiowg7y^8<x>Q1AC_chJJYV@cY&ldm(2k<jpA>0)
zLY;~fTH()TqiX8)Q|c4yl=|*OSe<_&{14IF>a}!mzl@4#;zUlvuCx0tsWXSME+Lo*
zp<NO6Pw>sqdhF12_7>$4*QeEL1XkYwzOKU9fvBm&Wp`!V-NFA<Njig>PP2S>*=C$D
zv~YK(RA=~2>`&i36xPe0?q9JR@q&_HLOroAy^0|6_?Jkh!|E4`FRDFZ931e_i;kp3
z*2t1l>=q8gEunwEgT?kV#<-SZx*rfitT~lY|8yw8e3Fa9#$10{G_C&o1g*IED{Anf
z8q_57ssF3!qB=S;J*a-Yl)I;DuF>iXaQ;`H2&*3v%U7R*k^bLm+Ll-j@mwettwB@(
za}5P00(!~WpQcOqN9e4mxfW5!chpm5UC@WHXM1=iqaN;0i<0#`!gw`M72_82<ytP7
ze~ul*7qOEd{?)@cf@%q3I{#{MaiB>3BO-_aoSI>|aSrg#O@{YnXt=kkargqkKRJw}
zsJivFDZLg1FTvx&kl)BeGU`9BHb)Zbk9()ph1CId4Z%7vri=QW-ase=uiT2&Vq*|Z
z<kl9)X@QJ7diWw1tnEB!JcFg_pC)izxeaR7Us%}DzbCx4dSh^1HA>w8MKz)Isan{~
zR&2yED3O}rdThK9k$$&2f@3H+qGtm*+vE9WF!&D4=o_mSEV%!@2TfAx>3xw*W+1EX
z7EfcVo58LVjt$%8zdVHC6vvb55mu++Q!~*l;*M{tKRxue`k7*$cs`x}b(Ug|Jbz^p
z#_*NN^jo#tFfVaVh5#n>RaCw@xDhRQRz`N;Y^J~?t%HGDRMlzvkD%1Qvo6XCrfwY$
z$EtA1N83U4H|qqfILCB01c+*9)lb7EeCyD~vKOMKn>M0HIR22%#j@Ef9QXI|xg>CM
z85~MpRCf<uMC<>3F^|>MzdMA|zFc%Mqi$LF^EUr{_VC3_6p6K}BR!*jt_acm-yRNU
z)umP8+Wv<e*5J(N5QC}T?dK8}RG&SBAquLW#iaPu`@`xoT-(=Q52&w{gpcU`ERJ0N
zD;TFr!a2>j|9beLI+6(lqh&9u-(Qth7m(-L>w#$5PhEmn|5T=IGpu#hDP7t-EUoNk
z)u~Ka4W^qFR>~_lR#64)_da;>*VOwjX3Jjv`~JS)P`{YDsQwPz+0@$z{DYzPtzS_0
zajs(MFF(l>y;KB;pI9!$f(IF)>{A~fzqk)OBY5!jZNaGe@Wo)HPqu*(^(xG6eKoh9
zd(C0OyBJA5%LC{dwI!V8n$e6HZuLdzVpq=~(|#Nb^~*3jVZL54V{O58aC*r6#qu<A
z!pT)dgJlQQ%?W?q7^n2BKPpb|+rX1pR0_vNx$5BGi~cN5-S_G93>LSQe<VTvRMlbY
zfdTo<yWVbJ$D`nZ>Y7jurb*39zp1^IaTK-KZ8e9=eo|W6icR)+)CbG*=ph*NQ)S0g
z3cdUv_oV~a1E4<G>3!y@uy^xr((T#(NXk~N!`~drf>opgq3po6)(x0#Gm)3M;|gGp
z6p02mHq}<Cfq=qseJ&gdZopm?n@pMYp%`*^2eO*^d;n(q@7Ka3N<@5EAAR93J;taL
z?R;GQ$@YNym9@hBW4H<R=GuVz76RB$D=gT5kJIr;G!ntW748piU0wx)pm!#)SYo*v
z#609#4UXT{U*gbU!x2<Seep-9p${iq>OPjgb7~rK)@RjUZBM_St3#+Y(?e&<2QHs2
z3fHv0v_9SfoqgDRXZGUk;D-X+YPj~cVtK@w8xGwM;wFYebVneF!w^G<0+DtOB_rcs
zele|n0ZYvl1m<6QF;G`<ChK2g+4=0Da1<@$mC35JyVG#Sydvs<o0zWI&>zY&sKOot
z{f;$)OG<elQyqC3i$jEljM)5F)?vnV;+QUke>H%h`r<lvWsp0$p!!B9#q`n{#<~*8
z#ME(|Dc;9oa2f#xqDzKb->|~_)bIZ&Vm)koAN^<mailt{L{E_C{t)T*w2Er2|1U63
zr?jB@FB}08md^j%9f2s^<-QE81b^0JWKT>^uT<?}Ra2xorlV?ISnWuw|4<xm#Q})=
z$$;7#;JT-N91#&bJ=Vw|#-78^KMK{_1-2}D2;#Z+;dFv$L_zMY@<0fshXTR2R<$aC
zP)NNWr-ii}T3a{N)PPp~kdUoBW+5Jb;Z8GU2+SY$>VW{xun@Hfr4gq3`dTrN*8+Hi
zGxcKuHN685Z*WF%3FG@a#o;>j)k8SzgZsP)#@B(rawy!2Cq5zdTNrJ4&ud7(Pz)Qp
zc_<vy=Mt^Wv+4`QIG$D44}}qLMOx?dnhVz!L~w$W4k#l={=Y%~pJRTW2K_zw&rPd;
zF2d6QSoI+sG0sK@v!BD`9_(yyeU0Z0>R@{IWGHeH#!>ZgoFz}IbGuIA3>LxSi__}(
z;fsI%J>5Eloi!Y~_3Gx%fcg*U=>rHJ9D};CGw>!hx~M@UvQPaVYr+NE-{0)IxU&7d
z*<e*&ZN=<cD^ZEqN<5$pW<oe-4c1n);U7+iRtDQwwy(71U(C6wz}^vHZjt6A+bcf7
zTb%<rEBb>QUfNiJf@BxOEqb6$z2_932d#T)TU`~#3GV9M0UT7+sqVB2rr$w)jAKVV
z1?8^<mo01nj-3%oMqrI<A7)LJSi%_2>d}W!hga&*C^m;d3t@K{Qty$VUFJ_PlCfnI
ziK#h*O-u>{^lTs#QWqy-+T~#!e8SyxFrJqf5ZiWYEgTL|?F=F;xK9SdFu^@e?MgA(
z#{)2M9H@met(pD}>hqI4uC7CKf^%pI?Oo5&akv5X7e(onb7(#eYDf7T3GN7d8)eC}
z#C<^T4YUPnuoL2jzD^CN)eq|)*(b-~$iavYjSb35_OY@TE812@W`eaVeH|8w1Z(w!
z9sjB)%aV@ADeK*~*GkWcf<S2o=QwQ(8Le%>w}P44;7o1st(BR~{v)cYD3S@bs^^OK
zePE_my--wKiYNO0qg(s&pxrvqlN(Dl4fa`Gt<mm=<PN*3yS{CQHPD?J%=hOHHl})W
z%{_yCxzq@F1E~T09mA9L#-4nSWU=ex^{w4aZONA8j&9r}TH3aC*GIS4??~YJ{>bpq
zsMV9p4fT%pzm~H2r#o-;<PQ#~Buh(E!rGro4cj9_y{XYrJjoXsrdzpwybI8iOZ4^(
z4yH!%(X^5Nww?hf$@h%pt%0%8{3|I`+G?&(G<PTKUx_w#w<Me5QmaI=KG~7zZjV?a
zDJi}?-8*Ov4-MrSa;csXE88=gP4?`~rSxqoml{BOlPq?iTMA%Nqr*MDDSr>JkK*kp
zDB0AN>~3soh+623J}Z;TH~Cahd-rHhE^qY?4IaR22q=$T*qBQ9jDb7S^D5OxQ-hg&
zR_fankGIFWJK7qe?TMzw?uN$tWPNv{sUg|Y-sV-d1s&3cS0t?7p5AP#uPycJD?Otr
zD-TvecS`r*5Xr&5p4`x2$_yL@P?$9cZ0ARG524C~eUELW-80fN&?F`RQU)ejzpcBi
zzO~63%JsDj>a<Q;51U_~$9oui$MUHbZAsEg#wt2qiMBL!w=|+}`|^F3yaA$XA!3c~
z+V0xg+nTKUWHR3JN=LHE8tv^#r=zI@sT{j8kMUuC*rQk0XhWZ|!v&gJ+F%H6_0jG`
z$191Zq_uafKi7x8!TTs2!i2Ql88OpIL&NAHcYxh$bjy@*jTLPdyRr865B9-aN1Zz9
z?s#nemd1F~R(4#+ptQbE%lmC>81J+UWoUf)6yK9^hsH`Y)VH<4u)DkMcvBM7Y%2_f
zmeJh}^Bx`=$s5BO=uVHMQpui7w0|_u;+mZIX>@V%RN856{Yb_dIEW^s#x0p_Zo}K!
zF?Fb0Mq|((Nu~S8Q*37M&;Tci>94+_-Z9>5)zb2YSVw(ZQs<<?CV8i)6O*@p2(xb_
zbwI0oMfV*mD0aJOB$%~Dsz%D0%88DI-PG3DL?ePz>CZ!@vE`1z{ewfV!X$f#I3}is
zORNR9Ip}m1Y-rTjLfdk4M(QuKvZbw|Js!tggqLe*Z-jrtM0(X8dKE5FJj&4U!Gyep
z)TT9ZDvDtyQoXFEsgK>BXpsrsn}s=!IOevj1MO&wHYE~lds}0Dl=A|8#X2YGMhChx
zBST}u4h@T0zC7K2w5~@wYiw_>zZYEqCm`=wVP0eG9M3zX=i^qGPlKLpt(Yx2OHW~I
zpy%M;RB~v4Y7ph?8NM~ulOG#NX=mQnnrx3WwZR-m>EP%l8m*>iQ!Dbz41zZwOtp;-
z>_w-^sHR{@quB(Vq}SC8`hqitNiwsSP1)K6FCTB}Zf$AnPPFW75<kHeXEZ-Ff<=uB
znD$Vx-Yh&?FIvu(%Zvz2X{n#1m&6n@Mmjh&GSHJlvu)FXaIKljez+sn&eWl!tp&!>
z)V;l-xjx>V^lIMF4rhd3aC(Ewm*bvw!$(GjMzs0pd$GBAQ=%!}iIo5|errotH%f9G
zjqChmv2y#Tg&u<IZ@s%1oBoqo=uE<v!Ss-o8tmoFfkio!!E^_;Y2Vm5)JwPE_fJeT
z%M@3>`Z!m5T|eF7eOT&brc-oVD*wt@I*s8*IfJ9!m>|Qs6ee9yKCdS?*4NRV46PZi
z&sqIj1`#uiEtoZWwP?UP4!_u!Li*4_XKY5TK`f(*)UcK78O_VA^7Uay+biuIZKey+
zYMMh5gUe_K!36CO-)4?Z5S_j_!W%sNu&mgUxC_@3qOfJ{J<RB%H?}ot8yrnxg3vFt
z4EAdiL6>$7<QDfOJNo;0XLn@1mB@9?o%PX<CiGiAH85OjqbRNyT;SbIdfIk3w71&P
zCak61-THmV?sQLoPQ+T;;EU>`m^JjM$iKLLjvMG+XlL$P%|KwZKQox>tK`(;C>u|+
zSd%{%NbE=?n_3wQc=kj}VkwW+*kL1Ns81pob>ji1F1K7XHf^o%h$elK^p##;ESiAb
z@h00#+!k-|u)8Jf>Tb7_Y(|si4s@Sc=Fvq6^tQsQpvjHNM#|Y%uNbAc;n6&-FwgiF
zxgCcqOQ$t9=<g;8eVx|B0$^7;EY*v9Y{5LnjRe(gO`T43yCBw)x^oigFbzGFAJb8Z
z1e=`wgNWC(&ljKA595XVl0~5D0OkcI1RcUa_h4c;)!U!$Psv&%y(Io%@lJq4vD|3$
zrC^wnOj*3*E91!+z=Qx&OB87H9bml>IAm&YY(QMKjIa|g`(i{hh_-~rqIoM!IMEFA
z%`=eKg^BZQYd6j|p|>|2t%ils3*zVA{n8t<#jyrBm(T-@pB(QZF_hT0Se`Hb*sC2I
zCN;cVM?SsD>s}p!=$_l(KRldrB0b|`2V_<4W!UOO2i^jVWd<81*{KZl5596RpBlAO
zBMqEgX=kxzO=R@3C}4GPCr7t-2~vCL*bmQ`dQ}XQIgFQb)+ni+Xz}t(VDFdZdfL8~
z3r}~HOPZDLA2B`_F5CqB@aKJfW~l@pV@Nyl`FqTqh2dEoyDe^8s9G;5+*!1?BwFi}
z4b9@x;mf!)+RLW6t&kcUJ20_@9qmYX?U9(3dND2yV<QN$^6bWjp)su1&IFO_(VrWm
zlqspr3X>aCe96EJo0Z?)Hi~a|mMw4aIZdn-7j)mCcB5BD-JnaGoa0+PDaS2v$;KYL
z7p4f4O)O_XY#rw0<M$EtOy6%keWj&MVpvoQVF!A{MAIM_jg(`w?p|L;!10*P?JW&W
zUeB9#!FKn0h%zJ^=RQW(!vupe6v<6KTjA4|Xo__pxNgEu5?lSAob(di6ptbLmW!ob
z1u)@gOTxG55PNav%c#{i<j)O#dhRj=z|In$NUsHY1Bz-au9;pLTq`p(i4&*0rEP1w
z$UECtE{Wns`bXguYF@T_8H>V8U_7w3qi0Tu;lM=>j(Yn$Om>9d+@#YBW1EB>ms!nQ
zQv-2*f<cSuFefhyLwo6BY{JE?a6BM8XNWV>lQHmG<;{3+U%P|OLZYFp98)aXPO)G#
z!oNo8I%1`3$_+S1g7cZt6jw&*Lf{8?fzu@?0%SB)4_`Ql?cT!SH`7=qt~VXr(RHVL
ztDW2-tw0y(C8K`SDVclOd{2g*U^aw{oSQUN&u|G6d!5+b*?0O|#**P27B9-^0+@_D
zWd0o5pv3BAQ9*959DWfhT@-4wOSX*+y~^&=2MYb8dNacAMp=Hdbs7p|hG&H%GkbFC
zT{JRo&$YC1^Voo(G+7@{TC!(xLlLb0h-*h^WCPv(T<o2Y9MjFQnEt`;RIU%FEfAE5
z;sB3&*umIt!q$9--{AQIS-l^#d62YayRd&0S+r-gUWv9hM8x|&Zd;4~Vdpx7=Z2?x
zDOqOY)TS2*ED0@x!(;9w!F1CRkn9UMFJ1eqmBwj>aF_M*9p-@3?5U`X-R3NVa#%44
z18nWVHY7D#Kib>h&!Lszd_a}}u@L9vj}xR1(|j=H>d=$c48!oqP=2U)2#(O_L^-zF
z_PI^>=CnVCWpL{p55OA?;s64!h0%tY8oE`99c{__E{h+d!m-$(R%V==(_zkO4x{3M
z{@xMn8z0|e8=XTvac``rE(WKh`W(*Lk2K>rBgz959=7QLmnaKE`grRw&E~pc`~i-{
zwr*{YHge-LIBJ|FV^w_&yLk3tyx4P4fpQohQ>k;ZBvrN2BSQo1qqYR2DxHpH);L_$
z5DFF_iBgMi88e}H&r%118H1tL<vIa9#%XYrOnsEp4-4#<g9bC`deXY54Y{GA{bR#Y
zvtEtR-sRkc8K=b9-qBQ^Gmf*|1pH=#d!y9R7HMnW-sT-|QMw<y0>>4g?WpErm&p8!
zf@-X%=ETLFOBRAB96B+o89oTt#g%ZuWb^FU-QP+u$_=VlCBJHJcxC)j`q<kUbK@oT
zP?`P3a!Y}8TBZGh2)OGI*YGh!^q4$2&Cp&>Bv_zqQd8bRzaCC!M(O=Qw~cM_NUuI?
zMok>I|Cn9aK+ouYX^Pf?4#0`EIp@sw97weyWU~54x9PA*A6`h5Io!kGRv%7ax#*Qq
z#-T<%w-BNdChrS@jbrK42Rn&_qx~`{149RB9a&lUN4S*sB5uZT<IFsrcBedSAJcW=
zxD9l37B7f?8M5I-r2!|RQU}gC>|kV@+}+xW^En3Me#>j>vT?GCtqdn)lhrdk>`oI{
z_i}qogg&|rIFCacoHHlH7HEcqbXYt&kv$hfSIg%v`taG?kaHFE0&l-Ha2qMlZs=Ly
zhQ|g5owG|=oE|aM?y>Q?aiqRIlx(5AhPSj~!`9N+txrw8%`XlSC=|yrDxw*^OZLU*
zdiv0X;g})ysyjo`a_%}Bd=EIdZCvKOQ%5V&{sF{>&el|)kg{0MWO%~mJFV4oL_gzO
zI7^u=DqB=i=oEP()jI@lgFuwLSIl%3B})!#oSmzadtsEMXN}KZoMl8GKf-8m?u+^6
z<XsfD8h0S)cX9p14f`<n6i{p=orZ_hORwG}!Y9LD%7Z_gE20azeqtVT=hr=&!ii5_
zKiNaLW?ZUyo+rB;9p^G=8sRCjetsnzS=cAWj|ZL3VY{;wi3u)sNmzwsW3#|Dv8kAd
z@Ujb5xW^tuI7>Ok<uO4SCd=be<Sc~`KlB-*>1pGtx?7uC+v7W&Cs2;R#{%m+!nJyH
zL!&8#xmdPLXX)BI;-(`We-!E){8#GnV3ddJvP*u<Ue$Y8YL0bzf)h`r9cvzz$2Lx6
zE4?Yr)Z12^%k{!_=_=}|+!HaAI*z?+3&Kn}8sUbge_$97R{Gt*l3B2A8yY#-EjEZg
z=}wH{VYX#s3bb!?Tpc!P`nk4OMExu6ari>#aiu;g!ZckNx*>Yt!L4+K@oeHV&9bkn
zztC6nxy*n*CL550Y1eg(9>me*09NRJJ{pj^n024a!Xm5ZiiRh+6qD)fZ6}-BI$C{m
zSyDY$(cbMH{KA1F9%TsZwOm#{?_rld2FRzDRsf!E`3Mh&yeJN!c6w>fL@tj@p625K
z-AquoL5_#f$7$lm26;?^F*HFY)+DH0^n`ts2fto(eBH7r0;cWuk3v$UjZH~di#G~h
z*^$Hx5fbq&-LN5q8Wl6j578n9@tlE=K0Z3u!*z`7zT-W`8gTGICyXSFnbR|VpTP~N
z)B#<DzFRJibUVczM{f|F=RVL6UnDU+rS(BbE6*m4?&W(PQAcu!yBPmj>)<Hc<Mkqr
z1np>j1N=OBcoakAtx*mBb(xJ^VgY#SH#Q;*5_2vxSUD8HjPD<X@uTy4a#(NqiUGX-
zDBp;2r`>{Wk6x6W$5DJ#IErt?=*c0(={wlKLuEew@pcM0ype}ZdaJ!~ioz>7i<CT$
z@7d?L!{sXq%SkYd=7NQ_-%LX@%1#`_AZSTHAgTfrW}&yMdckkU<8&;b3pQxtJ$)m9
z7Y~wjG;MgeWo)&bhYH>nX6&&qG_cPdi*y1}R8GeqrfdD3=`2+X9fx<E=#HQ>L*>MX
zj{~7p7TaZ(G2zQx!SvT7(6{L1V1Mdh>Z8V1#Z@df6H>$d*tU3!7B)sH&a20S9PU~t
zCybb@PGoADt(Q=|QqX}XJDpAb!v#5v;h7<i3)<6*3gG^U0fckt<9m@xAC76o-pffX
z5_alIYH=atQLYJ$Wb5o3Z1;JJK3sIo1=GXr{6^<h9nTRonRg<vYpQt})+pO122rM0
z<0-r+Fo@$Q{RCL=SzPU2^r<V4C$@Ov-G)i82ih7N#&VIeomW1*s%&e*6K|}8#vbH>
zBz--N3jSIgBwQptGoOpda}_oO9;C^QmirgH$i!qU-L2wHdCrEN10rE3P^K&6Nu#*C
z(JbD(k+%TM^FFDXShNWU;Y4Vik2}V9rfzpkJUGm0*_fSm@(0*rq{|q)$mthw<hYs+
zo*Oae$dzx|ac_pLg>!iK_(up-<)50;GBjq{sbL-<+O%3e43p3TyH@=LKso^Ct9+ux
zd26HzkNcd%0B=@t$L0pr&ijYnc*Et?yYDv02|@p;`$`7g{{lDd`BvGG$_|v?4b3u#
zI1terc)e;h$r1A?##qLgePBXeyne&m<@~aF@g>{iKOYj+@)Tf`h3=MtcD6&XKL0~j
z?UD7~!-;H+M|X=fhhAnUz!Nz)Q6K)%nF|l2wCsvIEW1fg3+6PwoZ&0)5d$nb%8}Rz
zrq-)>yVCTQZEfv%+lH?t@+}TsbsQfrP>FZ6<X&=M@4z>JWMgFFaaak4-2Xge;mApD
zOhWgJ6P5Fg8tu|FL)Qx1lNPuOFXqz0n>k&BA<9`67tL1pyoC-xO44?YNrJad^aDqE
zMTP5xSy>jvl@h*TwSvtp8w)xe>PFbScZ?hr_ic}iBkt9Knl}-c!#RD`=ee+S&u*<8
zjyZBxFgrAm3J&)NM|-g`9XYTu*fW%aPY<T}#GSSC1sBw)t+^gYzYWH>_6_NwKugCK
zKBUC}NcSx3l15;u<_WIuKkZe}!}`4o4B4Vi<7tJ3N$<Y;rXP08Q!lznd1NKNTDmVk
zG^`bK)H*HgY!^Jf;L$azJvi#^`1pD(w>@M#?_l^NUMd!gadvP^O=hoY6zae5Bmydj
zov@G(l=W#^zw`R3KE;*F>lX-G+_P3h$2=25)Z--g>9Z?wF^nD)e90AKh1T-Hj;!v8
zAbA3tO^v{9nuqJ!RdFtSzlXc}ogjJY;5OH|55CroY3nTK+8W%)C3L6>8^LyWN4&**
z3D>-+gL81-%P*tu@bc-4bF9Yl;M^PsFKeX4qK{ds%xW)Z=H?)5i5W6p5j)i4-r*=l
z!|~(nUzWYli}?IM*M=oWChU93hAPVrfqPQtEW>eyl1wYatc54kZ`Gt8<6qI#$E`oC
z9Mz<-<>mWud;9g9!;A)XXeKex!VSBA!@E7#CzWGFCP$dYW%LcT_+M3ky|Df$fOBbY
zD*tLKHAvgH5_p@Muj#e7M`?vjmd=t>k1$UDyX&`N3($?g&b%~ZZENeOY^cPS_yuY!
zs|R{Udb1zFxBMM=88_+NP*1)Z-}3hn1e1Ma43B-}KzbNdJ~vw3hX)vV<n$4I6<}p`
zrn0&n3h*U=y#I-xsH{$>#(Pu4d>Iw5Xd)^~Sk|_NhM%ll8}At%-rL_Zs0*#GtvNh0
z+`kb}vre<DdVH<9)x+->w2EE?`NYdsX=z!}yNcdj{GO7EqW2cPU#%+oK+y+_KcrR{
z{c!Q~`1ZhZi2XCJBCB}fnewOQ9xS=a@VCN8p8@^KGbOXgW>q@;bHJAYuRODAw)BlB
z-Yj`b9Vz~qqOH%MDr+2>95Phkn+IR{f5<!k_^jst|DWr})|#p5mzk-nOeU2p4VBbY
zhGem7Wf;~khA@N>R;?t9A@n91LI@#*cwZ6X9f~2n!>;{c_Kt?oo9O#^obz~XXIIzK
z$J_heAK%?>uiek%_4~Ze>%7kEyw3BSt4(@I>sbl2Tip;pC+<f7T;EN0%#ev!?8jF#
z5qD^tKuN-^R<q-8h@0cT(Ki>da@u6ztBlGoCmvt$#CBGjq!N6_Wj5<$!mL*Knx!3<
zT;iYQn~k)MVYvv)LD<kX$us>-=?Yt{bg{y=A*`oeuckarozq+6OU1G4Jc@NT@p2RK
zCD4}IU}&41G}McKJ=@@4^RkX_Q=VWohT~T$R@>nzGviC*X8C9PZs2~H@P=f32^Cok
zZPTGC^!PRz<~UB<2VdK?!xKuF&eX30{`@**3&$ugfMEXd7cTPgoyehW(n?y*ik}^K
zgMW_iM&yJeZt@E5i#qsQ$ZKeuVJ04bjbcShWoEY-7O+diM|bh1&867hsm!5mGEAHR
zHuCItiK-Xkn7+YZmzZehv-9!ags>tzeN&jJXZC^kDySV6qyG+T)6dj_zYdXO$J?p@
zHl9bNI4{{hhqh_n{`_T#HFmqkD8tpZOAf&oa$AZwv`s(L5BLiatL<`{_Y<>EJ$spc
z8>76TZGt8r{&GV}jC@R+Rw8_X9d4hCH+wJ;m@=l~S00k~;&~dgjKToY@vme6egOgP
zmenROGog8}YV6lbkH*-5xLIwQ?@xdk;BVSMd^y){m#A?l&~y$K55gB*(dSy~<EGyH
zdVhZG<9K|VP*Z;4Gmsz7#}@J{GHt}Kco(3KI_7Ahrt!)@dFL?G_7f4tajx09?CSF!
z@D*%ltZ25+XvU`Txx+<HyG4!9&EnJ`PN7{+R6ap`B^dtv%f1+G47OC4H3)C8!*|ZZ
zwCjo@>`zPQ5yk~mRw2I9owajbjdkJIy>}JPuY4EBNN>hKe(k%!4tLH$Q|>zW^B0!T
zR?Ws%la61j&PKW{ox1^S^RM5PXg|B}wcLNpufo@nckZ8!*V_eX+yvy6Wao%4kV7Y9
z+myWwn(c_|FVC@LTw3hE3iwaK^)O~19NK09n!7Piel6NvMh<kED||9^z@<x}*@sOX
z7DM-gHv4bt${&_==UWq{H%DpyZY0y1^c-N^=@X)Ka+FSq(t#+Q0qxE|Gb(&wl+J=?
zTbugiM(K&r?)-|P(oc=j#Zh`rlrDpI=eIB_d~uXs8l{&<Y5wY_yZ-#yO?P`%K)cJU
zj0&%d(hX61Ta@OHc)I&dnl%0R$KRpkbug<<<9rFjcGH;0pNuSP9^QCv^UK>4?XYI!
zNaL~LuOK2y<D8DaRJaD(J#RDpl|K&{vcnQ)a;{^JZ_-W8+ouC`0P#$CCUm+>=RvdI
zn|%3Wd|A-uJTU$h@DIiC?@;Qb#rSX6!^F>M!G9q9dEQ0G=dac=t?^I7HvbCYp9vbh
z5IW$}E1?-?!q-4EAEP%x+uOY_yXr!`Ct&r4*`vckvxU`+-nO+uZ~Gpw_xQ^$vw9C1
zHKI4}=$L}xjy!MTR7YNVu@luH^X$_*(+Qe5Y5e8q;_e*}Q+qqx<HnE2n~&~Ln&{Zs
zD#E4XE;<)?v5IdL%XK2~-8mDAvaH?{oR=A_-dN|D)EoC}xXa>Fon6nyr8(r-l*c)^
zU!H`P*}XqZOD%L&3&XGd$74{3wlsf!ZD7h_wT25x*BtM)>h^NZA*N?Mp05YNQTyQd
zmp0F#`Oh%^9SX<ze-tl>I81}fj{V2{25Ory^&5<B#4DPiusp;IBXd)piH9jzv;9~*
z%4`1$A<uiZf!U9fvF$E5<yPD`n9LLpu!h6A+hz4wuT_Y6%#ZtL@*9h7CO;gGf17W^
z{Xm?v&Hs$Y@bg5#{#&pBKa5dkRMY<O2)oPenTK*mIpyN8G?t4WqiAdc=Cb!89_s;D
zxn`Gch>G`AZ;y2i#yIn5;^DH_tlasJdF}Zf_qPq4+21>{ZPH-V>hYY%3UEVzCJfEc
zEWfPBz4mp0`SE&S@_Pu|CJi>N;mB_Z@Avd)!d`$j+YI{tO^;Q>POd)__AIo!{c=$*
zj~B~r4`<4K9otO9e#pO%zw}tMjeuqt-Fu=5%HP*(9Rfe|XX1SV4{n>kS%~NUGhtuB
z6WzDSgfU(pBR~`HSJyU!S0G-J85E(pAN>0n&b`0+*xzET32=Y+gERZ9TWI(=f2$8f
zyO_e@Wj0B7&8HpWwJMV>>j3z(ZJ8gWT_*OU@h^XX*P7$1pUJN=f;Qa#e(Sp(?r>jY
zEgWB8<0xXZzwx@@_;@Vb;@E#Y#@?OMyG{s%`!Eu8cB1Qlyww$3OuGb*>3N)&!L5|W
zZJA}(h#1cFb&WgWT(=iCHkij6f$(B9(mKR3@wb|Th4gHqWsTMHSZ6|;H6s&$yBV|<
zpX)}>pU1+j41d?zzE5ZT>mbeA5%n$5X1$2|9%!>hM7<Q+tP4@|yfW)Q)ZD)ep78dc
zQ(t@CNBULJtOJ?&>E<9Py_1&z<Lv$I=?br4dT6c_ne?04q3l1WJgyTN{TVjQx)I~o
zL7R0V>TS?weaPgumJ<m3&&jXpmrp%bE0k;2i5R~Vv{@4}=}Y%*o_-)FJocZ*Iu!BE
z+K`FglP8<P?c?jx0}<b>5i$Nq=s>_(4>IYebX9VMGkw!9je4x}5#Ov0G5%H1W<AKH
zA9i3<dM<#Pdr*cmKduoue;$iBU1rUQ;Y*;++7R{Mq0Ksw$$vxlru59O>6b!1)(41h
z)`v{|#f<}`Q$E*)oIi}&h;P=37=H`2Sr4M-I*D2Tq3#N8)_JId&}LnSIt$vY<xsQ#
z7GurEl*jsV4aew{5#OxoF#h?_X8neGDzsUzG5Kv8*p#06<sH+cS>CikO`73c%W?iZ
z)*R$#)^<#ONu1Q!e@^@OLz1e0rb{!wDK5?O267T(|9Pxik-u60VE#*>&6*B1(-*no
zzld<NhQ#pqq0L&6so%;ols&>fMYvfTG5ImR^XIg8R(_Lad1Wrm`j%hN6#gB{pX`jW
zCcma%lEe9li;7uyGWAKiuqi$Bx7U_zFOSt7@y%M3iJyE?RD72{mhqw2A&QA#=?Z85
zTyt{%JXQhXn>8pCfAz&p;f&AqCFjp$6(PP^Z!+<h7d3@5KHJmzbK0-q(k9Jtt}!`(
z=s(EMtT~zdmbk(hzv&m{ocuONg*W}OoX1*>{LC7Z$*&M=OQt;L*Yt~X9(%5B)}&1Q
zwNdf8Hf7Ski~P-cl8IkBttp)Ob3MuVbLtzK*`yiX^vhvRcuC`Y)#=Z?M|b|5@ToU8
zX{P6Wxbx?Pufe^x(G2Ikx6$mM+g+OBya#vwob)S7n>53D&+7a+;j3Mm;k<`+hu65Y
z2_b!$d9eJZzXWR|+K+z+!FdqA89D>oj7M!@E-?(-IE`%G4m#VVyF=$dCn|gZG*3qp
ze-v~9biBgHLl<J3#WMekp(ne-uZNxj%_#`O%b<DqjJ_Yb1iH1tmqV9f8#T4#zX^?7
zoyPD_p%+8*lED1FhF*v5j?!Mtjq0$?I1FzKU5aZ2_nF%L=fhq$Z$IvJ)1S}c9aGbv
z&)U05V9RIU*))0i?3t}ww`&r1{Pt0rwQl<JS^L`cNpAGw47};jXV1vpx>J+DmJcf{
z2Q<zNoq2X<ls-C2=SJxZqI5}=z9&k%?-^O|<x%0Qqx1(+x;9Gx7^PdWqv?<Nw~5m2
zqx61Jx-+y{`)-FG&>PyUbyE+5Hf!9}BcjruAEhse(xp*)ew6+jv|0aV{!c)g^>6A|
zq0Ra?^?GQt?oHhQZT`6b`{2YeYuyY#6xytHQy&9u*1D-Vw>N9u)Dxi>&ve%OsEeS@
z8aMSc=o*CcOrgF9+N^O?KMQTvxT)WU<_T=#*Fc*!ZifE`o$LzV4-w58H^YyC4!FWc
zLz^{jhF=7o=?cFY+N^Oid?|Dm!r3;|uR-U!^yknMp_3H84Z6sc-@X`l%o;b-XF?ad
z!pA_HHExC%L6^DmD}^>|+zfvLda*10T4=Mz&G0(t<*x7q3^`_vo8gB-n>B9g6QC<x
z<xPUFbfv!@+N^Oi{@<V*T;b0^n>B8RuYope+|*UjW{sQrduX%9P3^@HXx6l;lU+k1
z+dKu@tZOs88?;%+rtSl6*0HIFLYuW~>QkZ3AM=|8ZPu_Eeg(8y!=}C&+N@zyKMZZw
zu&G~yHfz|_A3~e8YwB;I&6+i}4;>?;6n-e1dLQV4(7a`%4nUi=Y3iQPg$U17_+aRT
z&;jXFpm}`<?DPfL;Pu?(e>wCfXuuA4{~%`ixae<(q~m*a=Idk5H>a9^?l0=&7STpQ
zjcFUrWcfai{a#blS1^rjCT)hz_D<Gmu8%0{Rpi2$pNn87_NNWFq1WNK>HhwQEZtxW
zYFjCt+x!EPG2d6P-{W%(xg48um+h2n;$YJ0@@#HU#TvNGp<zD;qe<IZ5Ovw<o#g1(
zz#Kd9Mx*uK=UsN`xZa1`rlnEuY&U%lr#H%&(z}@faI<$2olN@EKv>3-P1bZySf60@
zmqqOi8mr;7gYmm;m#^YEJ;#`~MZeI{Xb9TE7jSkmQPlx#X6bkpzqX>6jv8Nqur2SJ
zj?V->IN9j~JI!t9lt)vd=E2R5Yv0CKl%1~8Eb#E1Ow3JAu*XCE-72B604Ghe0-V=8
z5n!7n<9Ii|?cD4Op1qIk*T0YRse(r1Z2F<{Fp0H~BHn!JeN?btf0qy6Wq@D*VAL1I
z7_VPrt(so)hyPLiomWEaZ=En+(9tJmQS>nauM$xo?$V>_(bw^C-l(8Qrpp7L>ZR8a
zj+gA->2qW=A3M@fJG~Sc<J+aZk30hP)mH#}A9>{Aea&aCE`#cu$&c32;18zBSHfiS
z><L9hc!4%(-hsl{L7Up0-;qH84^s52GqJs4#~rhnKIV%BNXFwk3FJ`4x0IUuM7{RF
z(B|gtjKB&t8H6|2$P%x0@taRm&ch=*j4UwHwEs0)j^YJYj1soxCM<xPGBTE>mpaDs
zyLt^+_SUEiEMEDVM$@UQ&phBA3H###d|9T^_SOCNep7Yy`dhRI8)qj=T)Xx34FJ3C
znzznz&CF))^sztj!<?I&A=3xV5&eFVyc<8=A>H^Mpt1O+Kek(X8$-c6eda~kMcKE@
z*M2!Cb`VT&V+X`Eu~&W?p<=%`pg2))ZWv$JKx?dq-Ia{>E|0=d(_Mr{8OAG3b6?ks
z`#3-?Sb!tMZmyPtQIVDdcm4VjGRMmq_J?ny-vM9{o`vu9I<UKSb`=4&+Ewr_-wA2f
z*<Cj3rsZ1*=lh|idM&+8hTV!9@}dsAdS8s@z=R^!*IkgKb5V_v1mj2yU!3da?JA!3
z<~<!`Gz>G(#*h8lLxQZ~xm!FV9ou*eg!UIn=xfJvcDw0y5C&i{Z2CHe(yKVx>F@lx
zQxwtk(x1}o^m&w>{hb%H<lpS`QO)B<eJ=y0Df4D8DKia6YE5uP*x!PrC*HQvJBLzu
zZMgA6E(mOV7fPp@d7qZC?cEw}zoM?u*Y&|oJA&&Aoc8yB>4_S;-_+nUNiP=pHj547
zR&krSUF3ow<MVk7nII;K$zlgFMNAU|V!D_i_7wS?hWTcS{ltM{NaXVy#v3MPi#cMh
z2r~#f9__mszd)QQ7K)R_B5{hy=Q>O`O)M5m#5rQASSHRF7l>Q^PCnbj?IIp^+WGs%
z1TjfW7CVS3VwxBb)5Q$2rx+Bu9?1RZCk_-tVwN~e%ocM*t`{<Wo|rEdh!e#^ak5w>
zP7$Yy)5K!2M4Tg*ie=(_ae=r{EEgAxOT?w(O0IJ($Gtu7|H%co0Vfx?0iVM&Z9G%<
zK998k5)ZZ4foU(oVNrtQGhy#b@F!o!ni`(*vK`9A`Qid`p;#_17MF-i#bx4hafP^2
z42!G9HR4)vome4m5I2dHVvSfQZWbHFt>QLuyU2wQ?x$Z&5R=4Yv4fZ*rilSDUE~W3
z%&(^y6f?zsVh1dJr>#W1G$%fd_L(kI<jVlm1I3V-CDP!U;n^ZzLZQwT^Td3yK%6KR
zij&16af&!qoF*2FCE^^hR4fzciwnesV!60jTp}(N`{6+a+k?;gy+N$Of@!ayzjgy(
z#rSt1{ExzWINia&V~vS~e|84K(SP|&-3wc_%{?96aHPY+eh#zojGOWJteWjqDb|Q}
z;%2cy+$wGpw~H2@aWfykm>?#J$zlgFMNAU|V!D_i_7sC+rr1v$D2Bu=ahRAb=7_l>
zpTT=i!nz!ut+U?AVh1rrOcMiQx|kvM6oX=>*iRfNhQus!n3yf*h`C~(m@gKH6U9Pt
zvREWe5vPjN#A2~ToFkTsW#W8sfw)jC7Z;05#HHdgak;ocTq%ad)#4g)t+-CC5I2aM
z#7eP7tP?kj4dPaDo48%HLe6o{6#Iz-#gLdK4imG*95GkS6Z6FaaiUl#P8N$q+G6m$
z43T5;EJJ#jm@VdrxniD}FBXUs#X|B_JPVShO@=og`NOe)4->P+95GkS6Z6FaaiUl#
zP8N&ADdJRdnpiBBh;zhJF*F|I&q~a%CV*kfw)yam!}$o?4KMtXN$d}8GpK2E;XMa-
zV6dI=PR28pB8RkvV7!SW{AugpJrCoaG;I~UNHdv);p7r9Z57t+$=6`ZLcWgcJ;QNa
zDzAoq3-!1LT!ZTm`8FPTO#|P=JOK2<zl?mxvgVWjfK9-3Cw%J+a2<~CO!!Yh`;%88
z{cJEE*P|N{j&XM_`ES^E%mKGSlkl$u5BM3+sBU!P(-wj0wt;ECJGKYjhb+sw3I1RL
ziF(uKfLu+&zeXA{tsXf32_mL9wkBzyiOa9817e046mhw*!$aaQF-Oc33tY5T;CN8u
zSzw|3i^Qp7u{cL86Bmf(;u3M0h^+1UgvB-DI&p(oDb|S%;x-YFcI<p;)5`Wq7E{E4
zm>~wmequ-*CgzBFVu4sF7Ku~EVsVaGCN2=m#U<i0afKKb*NE%H4PvEOCpL)NL<{?D
z_X{yuOc4Vj@6#ABDE1RWBJaZ(o+IXo1tRaW7+xe!6^ljQM=`uiTp*T<OT=a33Nb9M
z5!Z<u#7ePFY!J7Jmd`0SK};4?#DJI~2E~42NE{~Sh<RdxSSS{WQ^jc{&W~d066rb8
zrP5{6^Q9L^my1ipW#S5PGx|Bl0rq=xtH}OOy<N1>AE^Cef|w*Giyg!iF-;7J>0*Z1
zQw)lkVn2~~t}HhsW{JbZY%xd774yV=u|S+C7K)R_B5{g1Rh%XkizVV5u}oYjE)kcD
zVG%>K<;5VCL_Ps~4Uv{U)ccX>b6v@$meouC1H>WXXz_gU5^<_{y@<<*o$owxzIcy_
zTU$FkEaK8+>yO2V_`PUxKTyxT#Z>WN(LQbnA0mCSc!p@VH^MKMo*~{M+U<w%N2Q+^
zUl-SjpNaM2&!Qh~XSb`^Sv*wiCmtu_H6A<u*`mF^gYvJEo-N)ka-3oQPlzvxZ;2IR
zMEq9#RZPJ7#`GP<ZsK9$KykRp@qzKr5vPbVM4s;qzfW8$z9g;@KNf4m??sF2OGw{F
zOcQ&E{lw$NT#<HtOjjgcCzgtLi%Z1k#ns{mVx{=4Xs>r6-^4g4{}i#iXs=Hpe5ka&
z?gV|7w7s4LeYLc`P6U0Yw7vcV{fzV~ajm#P{9LRN|0Vt`{wDfxLbDxOi*3b@;{IY+
z@nEr+*jMZ?4i=9SPZCFpr;2Ba6U6hxi^a>uYsBf|4dOiUc9C{y+>b@#L*nD&)8Y%_
zE8^?o+v5A;N8&%li1?NGt@w**;o8RX<HaPgotPqa5oy=P_<h8qMB2B}KTAACJVQKJ
zyiB}ayh-G{ElmHBn3&*b+M&_^L~)GxfcS*?srakdt+mpLv=?JO<HQTatHj5|=fz*e
zK8a4c@#00|)#5$kI`Ie5vzL>utvF1~6=#XJi3`O0#Kq!rah3SK_)n4VbaKCFKSgd8
z{kYIk({76FEYePjx}SKQc#=3$JXJhXoFJYjUM$jXiuqk5P8V+#?-L&vSBvY!e~Mp;
zKZrExWxnmjF5;o$QDT;Oig>zsj(Dkfoj6y#Q+z;tQhZ5#Q~W^uT&x#=61{DldbSZ$
z#e>CXxo-Ug?q9_Uu}=I}+$#Pe(r}XL;>9GfotPqa7SqKZVo*F%94HPIhlwYPx#H<!
zfq0HMS-e!7Dqbg+h;zj<@lJ7}_<*=Xd{SI4z9fdlH^sH$2jT|tbFoIO7x``(+wUiF
zyXeKlkNyc_8?l3!Dh9;vVo&jKv7b0d%o2x-IpSFHOz}MNa&fviPyCzskQfnnh)M07
z`X3@5Ar28Q5$_Qn7M~Gc72gp*7QYpL5nHu)%4sil5&MZ*Vvd+E7K+8<t>Q9qrMO0{
z5G%!RL_eSB;5a3VX(B%=MgNePEnX^KC(ae`6dw?u6kihG6h9C@7wg5J#YEgFu-r~!
zH?g-kKs;U?C7vywFJ2+e5T6oX6W<fR7x(Gpl-o@ViP_>r@k()~c#F7Dd`f&-d`qkl
zBjUHBcVDO6eZ_RKk2pv?Nz4-`iI<Aki}rIlwBO&P9~Pe#!{WQ*M)51reh!B8o)o8E
zUB%ww(c&<1j5uDrSiDiZL;PC&N%Z1IkjHs{F+<E0M~G*M=ZjZ}GsK(4yT#YV_r=e|
zZ^gE$PPu7fhIqU<TD(NOTYOx6Q~Xf;MNHe@$@d5`Tbv+H6BmomiEG8r#IMC4#l6#<
zeD@Pi67A=AXup}#_VYDp`*|8@KR*Niq43rRIQgWCeZ|4zNn)OOt~gaJ5f_S&if@Xa
zh+D+=ot^T!h&{z)#4+N9;#J~p;)CML;)i0T_?`Hh*s+UKURSZVI9MDfUMOBI-XuOD
zz9_yaej-+jTg3Q)Q{KMff#MP35OIV!NxVe7R$MB+BEBR3Q~XN&LFB>-&zrqS+;gW&
zA4EQi`vU3F;^`#fU8?Y6akj$eDSV;yBMN^(d_(+5+(;t7uSnG6d-?w??d|5&qZNsG
z$t2=+ksd6bDgQ$0E2U?U*pJ)9yX60X^fTfM@_$pT5*x(d$;a_d*nv*@2aw3O8wvkI
z<$t97k0!lnKlzWAzEHeD{G0fk_`diR$@Y-;q&qr^M7e2VSNZpp9w-ixe~x&zc$LEE
zO5Y)UxAYPc_5O!gC;u(dze{&K$f?JH;vppJ8zhl_u=H?+=ZR;@e-ep!Q>3p~_&o7;
z`QJ?<-lNjX75<v|mcqY~u9g0sM15L!chaYj&<B!ezmRyG{BxwokT{-a$^Sh0UqqrF
z)5KW{FH`tk()TI+3F#FIe?@wY^t;j<q(76clm13J@nEOi0Ev1ZCT7Y%Pn<0O>q+eA
zT>1Y^da=SEm0m9WqV#I%x1}qjtHiHJv`d4+f0e&K!>L~aiSQH>_3SEkm;YhXN0MmA
z6U0dhzf$4TNYwuZ=~C&tq{~U9UreIB<???;d`<rUkp7rN{Ceph#D9}W|2xTkatMfe
zw;`eTlkO~ih;(o1{?db_Pn15HM82oWf4uyQ#H&cu=UNi+Zj}FR;$8ADm*%$_7=MNM
zu~;WsJrIui?nNSAs`NqRqj&})eT4J?66Fq-|7j%BU83+Sq^}om5bqElBT?RS(yOK4
zCsAGniTvxNzft%$>EB3{*XB@%-ASZ7RQd?=amyM&qMTvkXcF=ANTfeU{+CD>OW#By
z-aX>u;>%)~MEbYIe~CYmD9`HYgtsN3Q%U64LmVIu7f&IP-&FBN66xkkKPdeqiF}@w
zepPy{xL*F7q$AP|;;-`O0}kfjR_rYH68n)T=NRc667`!X|MR4;kiJHGj&vFMIOhB0
z6PEQjiS$p&{|)I6NR;!5bdB_8X>V^Q-GSl&afY}+d{KN)tPwqjIprsjD1U$H?j*`R
zQaoDz$4ieD&k-*duO^?stD4etN$lrB>HA5P^Q`m=>9yj&#NWhyf=>J+#o^*)66IVe
z&2Lyy-%6t1_lpn9|7qz};z#oTo<#kAmfok2lfDxP|1Ko*?IHieqz6b3mL4vBns^q8
z{k%ZoSIGYw>DkgZk%;%G_@Y=LZWZGWck0uf#QtT9{Yj)hMVuf`5$_UT5I-fcKQ+=n
zNdHbE-!^?6wkHv<v-E+|y`_gppCX<v|Ffkp6sM4=-&G{qbB6pEk~~iGe@y<*$^Rwk
zH>BSokx#7{m+9!e#m*%1A50?O5#lI?7mCxwdE!&z`(mZ|9f|$lF1^<gj_yPv|8y}^
z?62@F=@X@MrB9QdE<KyX{yZSQq40ImUr5)JC~upXaHOO6CQ-i>=?t-#{PA*|o$eUv
zY!dA=M!G=ZlStH~M7&>oMchcDoLcFv(mP1hYwx2Rwj+_xfh6MhknS&?MI!!*(z(*7
zkw|xuc%!(4L_RNy8^v0MZ<XFbB42+$Cw^NJx`T8V>2&GCq%)-lOJ_-+BAqLJwlwWc
zS<lHN+HsovXNhIxBbIfS!WWXL|04=tD*b}=O6m7V<of}Md}~PLQ!o7kiT(M7M7(zW
z9lb9JeW*BC%n=Joq`Of1IuiNcC4G<dBP8N26JHcxC0Q@AM%*TLAK--dCy{=rc#@ba
zUMtQZQT{E`caX^cVd<yD<?>%6ekyJyk^XnF?a@y9ZY0V-RLm5Q5l<FR6$`}k#7o6%
z$y+V!X7O(%>i3w!pORiFt`olyw}{(G9QRfOo%EeZ=&mH{*<HGi^aybjiTyi6;pfQz
zViNVZOyM)-Un<@q-X}gHE+vuQbJDMhZ;7_OH1_u!YS7q0cRt1`?-+5UI7z%(yop5q
z_mbGJ2ju^n_@P)QwjbogOCgc2t8@>suh>uF$4L(-vHz!v=ZIG+{C@Fa68SzQy+VA2
zMEdpOccO1F{Bc~`kO)6OI)lXi^b?1PdEx~m(p@1vTfB)xKF^68MPJDA??fWsE@Fn*
zM;tDmLSjGir6-9OiC2on;*H|XB+@M)QIE&OFG$q4Ui#nC{vq&3eL9Hyk%*TreTa0X
zbbsm5(s|Moqzk1llb$L)Q+kf{?a~XRAC!Jt{JZ$RSV5v*Ur5(TZ;{?Ay+hhR6!Fmx
zdy`1FpO{W!e-Bak;qpI5{zIilNRJ|s&qV3-NiXjA<$pVg{O==??<1ra^LP^JR?7bk
z@jY>a!Xwi4;tyiNu}F{eaX&Gg^jg+&;u+#K;(QY2Jwl=$OXdF@iTZ`*|F--;m;Op@
z5Pwm4t1Ks<WN|;SH;H-;7Kf9lS0Rb=uO?Cc^(4xjD}9Uf-O`Il#D7})dFeN#KNL5R
z$fsJmjzqfe<iB11p5vT&NhHeOheW)9^kL$W@*gHWf<*n#mj5O4ze4_V#3#j7;yWbj
z^%05kHp%~M`EQl~zvaKr@lH8G@l5f268T(CBA=_JXGzZ`QNIVpSH%j2e=7a8_=~vT
z2~N7h#1qA<#d##kyHi{wE)iFfDED3IkHs&<I`JD4@qUr^4Ri8M5<8LzKSa8>^wH8G
z=@HUnq%RO}67LsZ7T*`E#ckqVCpzVK5DyT$i$N0o;uz`U#Z$yQ@k|o&&XK;D#D2__
zo+EvS^xe{rNIxb0j`+E_S^SN}aZecT<hw5k-Hm({>$+k{JWk;`(ql-}?{xW3k^faB
z>UoFwl=!w-E&fQNy!ewG9w7D>M~UZ)SBf)8<bSL5LK5{|D!wGXBW@JGAW>eu^cLw~
zq<2UsW;^+{B@sW3#CX$Hy0>&+>5%ks(xaqLm7XYlp7a&c*GSKio+o{`^djk{(oajj
zD*d|jI_Zz3tE9gt(JnvBKW>DxKkdcNB*G7r?m?nm50gGp`e^B6#o_Wlg?t?EU&#M#
z68TM(zF2w+iFnt_e~$d;ktpwJ@ni8@h5sPE&&f`_ZY1(Kf<!q3$R}_;k{&KSMtYKX
zzWgtjzM4e2H;a#x$agu3{8r0<1Br4zldhNkK}<Tu3EziAegnl5N#r+*M1E(I$Y;Ft
zh0<4$NH<sd7U_l3_e(!1{k-%)#rPa2eP^++c%pbF$#SJHmYyO#U3#AMtt9Gwzx*GT
z|FhC7q~DN!S9&9f{j8OLz5L@xI`!)+9xe_iQLj^^&lj&3Z&&yN>4&5rlYT+^@6u~Y
zl>dqRH_3myc-SbX9s^0lJAp*`+47$(7R!H@^lj32NiUXON}`>fBavTN{%^?t9r=GG
z|BWP$bKGc$?MS5GpG5lZB<gdR!uu-xSovp*BNaYgyk0CNk<VQu@>wYVCE{}m4=el)
z`F|`{EBsr9{~-UixyTRoK9EGd8PZ2c50E}V`V<oTl}DmJ6Xahg{|n_mRsPqK$bUY0
zE9Q;T%Sq((3W<EykSPCM=?&7Kkw{-J{~zW5i*(!=CtV_mcs;~n;$(4(SS-#XQSJf~
z<=!j*7fICXHHE*c@DCKeSxgw~l-H3&J^>Q>93=nV^6xMI5Q%(Glz*=LPa{$9YsH7e
zx5Y2S9b&gro%kn<=Zka12gUcqZ^e{6C*5J<VDWr$uK2L{ocM-VE5@DX<P#8wh~vfC
z;=|&5;^*R*;;-UMrz1bK-y0;_p+fo#675+dy+wMf^bTqN8BY3k;sGSmb(8KR4wU~8
z>1^qdB+5Nc`XcGM;&b9>;@2eV`-|8v-_f1L3&dN*yGi8#sPu9Y^?OlzwRDA8CH|!F
zxHFynyO2niE`6AEru0w}{p$qj@d`gz{zdY?M*hXpH%XUCmy3_ff0^{_B=+Mi66JiN
z@J;gnTKZe*U!{F#Iq^G^sQ>;X^64Xv7OxR+6Bm(a=O?Atktnx@L_S|De5<toY{$Pf
ziFoZuq(4CZ-K2X-A0r-1BK{cZGf33$TJd)A5%E<L@joC@k55RHQziYC^v@*XSp`n`
zUL@itOLrj=o-Tcu!ZW1@OJ|XYH$wh-@;{SAJ<k{K6dzOgQ_?G?S4qDo{jv0y;@;z&
z{0<h65>F6w#f!x0B<eMn#QxtwV*l<|c!l^c67jZ@h_{18JpXt{w<V#wk%)Jw{EsHR
zxc`^`NhIRsNS`J>Uc5joQuwvfv&EZ8FXlbs3UMWga@Uf`|0D5pu}0zFN&h1HCOGkv
z#EzsF>nJ4hJ4F7yrH_&xL?T|Uc)nOH-X-2cBA>@e)N8r;iuk(1*GYdWR*}g6C+T0M
z6DB(Ov?URKkl0TgL882|B#zTK66Kzw@N30+;^X3n;+G`SZ<lU6$<bX&<kOu*xkJTM
zMf_fu?SG9pheY|elSsEf{twB2x%B(u2Jt5``5Y&|9%7a_Nh~3e|1Hw@Nk2-WyeFk!
zlzv-$PyU}ue=hyC^tUATuk*PMk0MddQ0bA<`6S92Cp}qunmAqlrP8-bFO<HYL^<ol
zdWHWe?Jso7ZA+q@4$@tu4-+%xKUg|T`V{G066H)0=ZjC1*sqn+|B(KeM0x*|{!;oU
z@mKlBpXbEuB<@clzaAv|PhaUl3O|-aJ<b-d6YnRHZmIOk(r=QF!p=?lW9cu&f64zR
z>0hNgp6{efB~e~~F`q;^=Sp88J)L|M{YYFSE>`$c(#xgalm3uI{@;t8E^zYiO2R)V
zeKd*uL((TnpCJ~={{rbE>1(8mN#w`h1R-Bh_!{X?q^n4j(;)Ik38>>p?02$sN9n_)
zGfCu|BNmA_l1MjS`a$U@N#wgyTq~|u_$KLy^k(Vrq_<0ZE_Cv@zjuNB_K^;Vhm!CQ
zN)IAY&$049L;6bbe(^<xzbd^^+#&Y4$jK*LoJKy5>z??q{6Ci7BJzi%SbmU1{1e5o
z<P+#u;#3mxZdUmH(ocx5l8FDd^akl_68l>x{e$#2X<v~Oo<Jgfd+8Js_30^n1c~zd
z%l|m}pDd1+f4+1fiTIP{KTZC##JTdnUHU!}@gI=?GxC2y{;Q?mmi}0}O8QF@_5Dfy
zzsf)168K~P_a>2ls&seh9wgEYkpHpbF!_&^KAlARv*dq~{I3*?#n}qKU3wvjbmj7Y
zLi#0zzbXBW!Z*tQ3+X!PZ%E|xi*)>@j!q;||5OtD*+u?6rTa(^l0IJgbP-?rw)34S
z-X%UNK2M@wtRj*BTk`*0{$ERPllEQa#7iLApQKYr)W47X`$?Z5J&HvBr%I2PK3Dou
z=_^U(Gf(<X>4&AC5|_(=mGqm^ABj~Y>i3Ppf0lo{DNa51B~ebg^dZtmi(}<~hIFCy
zh0@oHGf5nu+ZDc0d`Nsu;m=C1BvEcy{_EubsaPe}k%;$iY47EZjwexGd+7j)cFm9;
zD2@~-iC2m9#0SI|#5cr^;udi`iFQ2j3WvQ()aw}OVI;~QA)P0ErgWk7RPkE*&yk)-
zBEP%k|B(D2lmALFOk%&+Dg0BhTH#+Q{Ac-FS332ICy{@968q6v{s+pxzjzFZ{6{E!
zl=K<W6G`MVReHL3ll&J+FA<-S|C`e9i=WE>8|j}!YpRof2NLahfOxR{kCx67PnQ39
z=?lb5<bS<bCf+Z;EUp&c6+aWd5fiR*>a#zI`lO4!#KRSSDv5R-FMWyhG!p4%$^U-o
zho#q$NcW+1mGn0x(tR)en{>yk;g9yuBoW?UI-f*7=Sp88J)K0n+0wU4-zj~+^uy9m
zOFu8YO8QOd_0k_pN2I@${!aQQY0ouI`SB#`w~uru>8{e<rTa)9DLq8`c<GVSW2MJQ
zpCf&V^cB+6rDsduDt)K){n8IhKP~;d^eX8$rPoV;EFF>lQu;gTpQJt0wEracU%HcY
zSLyE3nc`siXGxD1&yxQH>5HT<lfF)Rru5Cyw@cqA{UC|+JWQfLt(N9*39-L?CVnYy
z5x0rIkw_nZtrNd3$?=7R|AF%FDIOsnO(I^l^ce9h`Hv@&{xWfz!e=V{F7XBNWfJlK
zL89Ij;%8#D!W*RjEqbqW;_pSGK5a?l6Oitu@J#8k;`!oDV!61OMEd0<>hX&Brnpw&
zpGsGW{}Q)~zmceq=Xxi<b|iEc68UzQ9w43}P807H9~R#dE5z+$_hKjCVPd{GRh&zr
zzuqccF8!4FlKkJ6t{_prPo?X`EhOsyyL8fYC*OTZ#6LhfokYC8(kF|j$-hwgG7{;g
zi?bEJK;aKcKO_ALiTJNezo+oer0W#^t@OVYo-hOHu>b8zq~A|EKzi}~O8OY_ba5Q%
z#dmO|uM_8q^GPr4OQgf%Tk`){x<>p#{6*odXCgi7wXfJ+>_vL<TvmFxc$!$C@QbCd
z74H`BSNJmNSH*Y53WZloTP03CT9GKXlXSY+R~(@56QxfT&k-+F_%!Lc;v?dd3V%iV
zAL2$aqVNXky=OV~>Oi7i2TJ!5L*fYvA1ggkyiB}W;WtX(B`z0VR`@&88^o`~Zx#NV
zbn0xUUR_DlD=0lk93kc^e1h~PVzGFG!ta!RibVf>PI{%n{~`UUSSM~#`0vt5H#qf5
z6%P@EB<eX>dW4uSPEh!z(#7H};++bANcvgvHSukQZ;<{{{86;#IOVq`(ce=^>}MD0
z-eP|e^&BQWnnb)j>2t+PNyM8jT}mR}Lh*k2FO_~;dZqL#X?|yu>DH6T?<;Ye*!o8J
zqrM$TgdZr~n|#!=28qX#xLyn+5r4G&^Q0$87m|o~iTtO@f4X$3^sOYyyHEa)%Ku6E
z|6N=weng_&O7c<IGsyot`EQrrYpxTouQ-H6eU6tND~=;kev$MwB=RkmzD2y7M7&3(
zmy?M1qV#I%w@JkNLi|SITcv$BAsqE@Ln3{9>CVyzO7|jfwXDNQ<TqIQ6!IbT6Y**i
z`OP8`Z@%;*68S$Qy-eYMmwrd#>!kmw@OtSV75=Mqe5sRvM-t@)NaTNzbYF3(ID$ld
z@}<uu5r4A$ua^HT>G{%&NW@z#|7Ya?qBMVFj^%$yBHjk+YUw%><^Cjp&pbyblSsEe
ziF5(!L#2Zx(hZXTiPCw}6G)`HOq?qJnbLDeq`z1Gi>05Hew9S}_rwns9#MFm^v}}X
zo1OTrNaUL)_9mae{gd=C>Cq(e&y$`+qW=_2-$WvxJEiZJUMBsH_>uf;q`xDP&%w8V
zC^wUY9wdE+c&=C?E)t&?H;KQB`;<BP9UvYe4iHZhx91_=BlynbX%5rGUZ*?y7;%L7
ztGL%0PWWTuOJetP9seW6k_#NY{A!1*#R_o~?}t$SW^ubXkn?f)+xG)tzI43h_$QNS
z?+UR4xy<?QF#Xe|GZa2hIwV~nJy9CNw4EN^+RhhQ*?PJ3TIqGtb<&%q{T?TN0*Uei
z(&^Fzr9;varS0!rB7Ui~{e4jArP9k3f339rT}y;-mTpkE{XI)mIssuUzb6SDl+KaP
zm7XeXeut!7da=S+ORtfxlin=t_i2Ag_ywfXrH4spOHY<Ak}i>+BW-_=67}WxW|?1w
z!Z%27mEI<8e}5A31AZs|KoUA6ohO|yT`XN9y;$1*?j*{yzc-2WYZP9m@XgZ6aZdgn
zNW||aJy5zpdZM)bdnCxOSbBlN&F_q?kY1_qP12Rp7CJij$4{cXbm<J~Ea_p=h0>Fy
z%cS``!c4zRdb#vE=?duv>8;WUt(@}h?<*pGhICI7IwWm>KM{JObfLmaq~}P_mtG*f
zSbB-{O6jn4o%CkuZPMGN6B1NE66L2zr%7i>_mmDvXG!Ns=SmkyPn0f_o+4c=T_Rm3
zJzu(9da?8}>E+U4>DAKfq${K=rE8=cq_;}*hs*8$Kw^KBr8`Imq|>E?()=A_`*=xb
zN#{uCN*72^lrEB<B3&$9B3&juU%Fg+vGg+O<<ep4)za&vE2Jx>Yor^bw@TwD)}8$)
zx&P7~qyy6F(n0A=>5z1mbdGecbdmHF=~C%3>7~-kr1?8QJRV``4bq#W8>F{N^C#f#
z<43ao(jBA&(&^Gc=}hTi(%I4l(i5epN>7t6lb$cVM0%-oSbDYeI_V1OO6eNu2I;NR
zR+9FI#QsdZaPpLkFX(;oVFBl_PiEiDK7BKfIO?cCpieLubp1avGcyo4{K&rj4+jH*
zg2d~O%Rb)Y!G%nJ9xKCYQuqc}B?`bJ_e?uH!#co9#a4NB=N*Sd{Gnd89&B6T^|hYB
z`r2S{QLQgIsjBqd^2k2P<&mZD&8+l}D34fgY^v=N@K%-XGre+gm+6)M(7iRDKDU3B
z?DbVLA7<T{R|t6_KQHndi2VHR$|Fh0<C5epUwV>fR;G8JUg--bRawWauT2Y=N4y7=
zM@m+eR^I=9X(h`@LcYvDX5Pqmm-T$}zfjNPcfX$A;QHEPt9>=vAD`@Y+So!nY_UdF
zcf{wG!$DtF*cx5^^Nt;fmGHwa&DUaxN-VaLtG|ceH}Jz;EHMm|zp#~4{SExgv04QE
z^^P5P+hM_+D$Mq)eAY6%{h80-5suTnv5e1=micZ1>v!y^XL{syJL)x)$Ltl<<16G>
zfiSN%GSV=l*VmpR9FGDV@0{|8uedyNBl5GbPrhJrWp?nx+C-%BeYfZ?JhrPZL${*i
zT!L;XwwGXju@<gKVGY<`h;46hT%`|b@tAbu<UVD!eeFJzQ|%Ak;5~$86wRsSel|>h
zrOs0{y^6Y((V^*8UMn|Jh<H5qXQGWx#kMyvt1>(A0qQiW+KW2%L7h0SqAQo<_7phI
zr;_1JIBA9E)W)lf_~1mle*fOF1NFP3HqI)K_|gAOJ%8A-Bh?=&sq$N6BMm$zfr?tR
zZ#~m_v0wi}y22RgYLU)|bVy^z^&oB~;!cbacO&9@5f^FdJzzDD3)+oo4nn(4bhVoo
z?e<U9W0~Tx4rz!}=!)Y*oDUG^5#|?U8;*|bt2XrJ6j!o+vjZPF?H8QxwSseM?e<4|
zueS4@j{Y?^f)1F-emw|fyvqI2@yRg9$EviCn@_~*hppMCwuR8ALasiA{`D;K<2m6C
zpiklW#RY~|rRW%@;23U?!~7fbs603e+q>&HM>KJhv~6ho8yUKx)<XTa6{ElDxZ>6p
zeZ2yGo&D;=X7$3kS-%qXSpvs7VPih7GGqCbM8!4rA>GcT^#pjF#zxNPaYCC<MVp_1
zZFBzZ2ki|__u@7)m3^@QVg6uwg!^Ej&gPtGhxQzUu>HWT?61Ka8uvF|eJZa{*&D;r
zXV}l#-%VdfA8hv$j<ba}V*4;Y``2K^%}4)=j*tG`?n%UF8!;}=b6jgS7Q~2)bEw^e
zh>LN@?&B<@wT^>12M<EpT$~?U?EIYbD*(S7_<bQio)i1SFB^XE!Ox5S&Ay6r0OLYa
z-%3H>@}LcTq3O51vSY_wwpn|&SwL+T{J=Th7~9$*&y?h2tM*1X#_s_hYb3|yyRAS|
z+j-Ep?LHHnS;aO@RNdL<ZU4Xw9ET?Vmd=6cC?onD;IZO3wja)crMM_;fb(NO=Ukoh
zV>)i{j$_;oifb61j&a!j$hp~ha60R@i}Romb;^YcsczBv#?ry4xTa2|+nKah@(s0}
z8vBJa2C~0mjNceNHupe%Ic~mh_YJ479*lVGtI=`0ATGyaj&G)~a@=HJjgHIfFvt8C
z5!XJy&{k=Ub#ks3=qo$*RqWDEeHE7*yRWj2=Dad}$@CqcHOd|@y%;Zj1-J%dtn}oR
zM-Jfe!1czQ+k2~@3_w3Y2t%#qE;k3;`EWtF=&)q?(WM0MwU0Y~5X(NtTcK=Eu%xON
zQut6l&yxtp0QGBgZle8SULSET+Sf;Oo#S|c_KSH<#5rtV6M3CuzC4%FJz`!H<B%_p
zEv}9BG1x$=PALJi4>Rn2;Q8MU^|$?lGip8T!#NnsgCEtl4jx-|S#Zmj9Z?o;f#-Sx
z<<;rdqS|(S(ax5y5|*YIPs%Ygl>2xdgZ4R*s<K+81T3D*oa1Jr3{M#8LYr#+AzZ^k
zI5wfIs`gfHwIAp2P#hQD2XO8`8T0#XU^18jM;(C6)i(7Xxn)S7gt9%!xJD<>j5`>0
z#Q2oRxr-H^i8|a{<IKUEYo_@TZH;tQjFb91#>sGLRT7Rh`eCXSm}$>{zD1k*;J*#@
zgFk^x`z6zcc|FSKXUP*e_wri2X0Nm7X7;=*j5?tXpDB&0Bjy&qkCFZp_<N8i`cggT
z2Ool7aJ|iukz~vdPKnW;KD6ilYR?ebvm7Vda<~O>WpKsP*<hx&8U9ze0P^Afr=won
zH@0&!`UL%cQG4Pz*ll3^agA+kE1s{rYAdE;JF{I^Asx>Hwm<T=j}MOn%i?*$W0xFy
zrS9?HoOb*UVe~8feaF8#IrDiR^JCkRY+Hw#&*NNfoX=xCv69z!w2I5ybN=i}#<`Kq
z`;U>;9`xJe(9Q$f;8{1^Hn?D0T!X-+aK&)L;237E8JsJcaRF&#jtlO2Gsde#E4iW;
z^I!YC=NNHR3u8pAd2`Pe#t4iJ_84K$n=yvPW1h=#-h;Bv#J;iba!h-TZKrU19*pp=
z2*<rxs#pGu>xKUr@JCyxdWz>%;r_`Ud)@_2Jd7cByg`VExeUh1Jj^jlsxV$9dWwft
zu`DwW=6J=nV!QP~U$W=eIEEg~P3-$FtJl}vn699_IuXYpF2|4YXiPQoO6_)fhbq)H
z)sxtv8r?FnwUu9u!;*+OO@#N8ykEn;c1>>1qS_>lMXhn}ObKoIG8N}fr>yb_?)~tY
z-hA#)VhF^%D$y#MS<5l5!Fr{RV@I)-R&9?J$QSpRsUBC@4{z1BYVh^?+A83jX?-oO
zOVzk8Rr@g(#3fI!%noBbC@zoSoR7qn;o23>u1ZBYN$68B_p4ukK{*F*1>9yd@I>hV
zNVf!TDf}nHF`jYsH``<a!udN8+%|NF(~s?T2Co@bPQ-d`<}$0@%omc%);`C2v(Buq
zKRg?C-c-x`UJv5Kq%+ZuA1;3o<NC8+_*r3I3-b9{4h(ZME0e+>p}q2XOcMR!JFsSw
zAK@4rKpW$cOJY*-8?`LMi!$u-R%N`*K7;%&MjX40p);3ZOnt^5E@7P>f_pA0x%}z9
zi^?Bly^!_+Y(L9<SjWeee)J!tPjaQlc4PW`?0)F<CDSHohiBm)G;QNUy?wk!sLnU5
zU4o{}813Rk7}~dz^-L;WYwx>zzpvema{VaR?<%**-q)N6?xi1N-gUMf!}BY#!RPc-
zb6&KxFJ2x4SDt5ZU*L!JjAqAW4E&R<Q>)kU+&6s%aT1bCoxWlfSGo7+M8w}4@iA|-
z?{k<Zk9{%fX4<V4`ouJ7renJdWc>rY9~#BawkP^Qp2J>{eTU~C&pqDfO~F{mYl~&A
zuRRyz`XLCP3=VWwGTPhMcf=cqcpSSf0dd_<W!lTJjW)v=w!ZdaY@^*$eaL4D(szrI
z9^<c_?n1=HbsPJ?zP1Q)ySw5t-y(#6<jNOo33k4hAui`2sJ~sWLD~<_jqJ6eFy;v8
zyKxu?QZx?q=d}d`)>cdkH^Aj%`_H&6q>JU47yYg92k46&TW8>YFh7DJ!QNNivsxj9
zVLs!8<wh{)w8N}q+ymlzi*p;A={KPd;reXnksEoN<0bad%(E~?M0g#x%fhiXW&IuT
zFb}A=u%^Ma7LFD6d?~oDHcs=;6tpSMox3@{Hs%*7ukPTQi+Zf0DwNmPgtxM;^8|5?
zfK>s;pqy&#6Y?Et-^X&@7A@)QC-x0x)^lEgX=S37!*$qFtXYkT;GQJa6Z)YRV-4oJ
zx%OD^4UWWh##uuQ>N>#vG~1pa;@WEpJFn9OP)@iL#&o!4aBKdgTY_}49P^{U2lv^W
zTlzt)ch&pAPeCupxuwq<XRm)Y_C2msqRy>xZM`(G<x9+UtI;jydP3#Zd030?&<)q8
zpcnf++P;qZ1Jf&UJdkga?S})6IUkN6+9?C^lhBuWeA%B{qd!jzGtd0$4r}c`z~hK}
z0%!j1!+|mP2<YNHcx;&7oC|R}7jSOZr(mHg0d5;k<_wU(hq3_93g2GK@q@>Wb5C4{
z&|h%hfo)vJ2bi*~5aO{fW6r_j&HFek!6tHCGWR5jIL=<o&+TK5d^WQkkw3>==Fjn!
znqxn8jWowkYR=ObZtBB%Py_m5vW5GuoLeyuxV_dJo`iNg7cM`7cHC%TO%~TX-iHl{
z!(0OA80IR+Re1`AR<*);;|VojKAi)ut@)K>OJEYNAxKknL#3579eK{IHFFZqkC+GM
z!<_HbhOs7IjQ&rJIZAy)TbvVN)B|l1D7qK(@m$m)e;*w0M5|y^Z9LXEvvWQ|d1I;%
zgI_BU^-7Ebmldqu2m9ELYhAc!P4(p9xj{jE74MG*=fqXTPnZ=!oCxndO}?BLSz*)>
zZQan;xgL4TN~&60r$$;KZ87Fx#l?$iF^@|0EZbD;E5|rewyAdTvc0MXmnT;3^?Z3`
za9QiB`15XxBo@q$w4N|K;wd~H*WJ>p_<PDD-6xet4gnL2Z;Zs{%#J)$ygIThXEpj)
zN!44}UvKfITGo?w8eE*<)bpG<kvQb@OhHzJ_Ykijp0#1e4hsj%K2|xrM@Ac=9XW1T
zn5#{*wtQKP=K`3@<9c&D);(}M!o^h>BM{C$cPqv~^uG}H75&}{ha2<YHOCwuwtLUl
zu}?TIN$*xhijyiMaRt1eA6wlMx*Xb5R8oaCw2k(BGrSskp+DJqbN;#3&ewx$Ei4FY
zajmImT{+hAnw)^TbBxCAFYb#Fhjj~~Zs8Ja^Eg!0@?LgXD9pZxQ`gxS-gB5SEIL0#
zO2ycSds5}s!oIS6cb?dXW_dQWa_X3deury%>aold=XVy)`(mp@^-#7g_LXyjfv6j<
z167_Jv?=Oq<#0dN@)N{ZM_7k#-cRTAdVcqYoNQdT#xVU{D+lQdCSm?Cw)#+<TYP4g
zJ^|0tR-xbESf`IGk7Q3TkF-VKOSl<rT|TQS1Drj%GJ;1uwZ1YuW5c|Z^>`S5EWh>m
z*-rTdYjN(P>;jzsA%B&pcy?9K(HQTGk*;`M?X3LD$Y7NB5a>f+^N*SpNf<c`Y2U0Z
zU5orfIQOwnbW5Q<IXEU}-*BAQ@La($ZD^%=oA!l$1LyBX?#E!18-HPCq$ImC(jD{^
z&#L0Su?|+)srO=pJ;i>Z^jI6`{AOd%8RZe?F=rmqmCdSJ0^0jsHnX-ZpDl8~k%s%t
za+1ce&1Ttsh~-%YZ`5LaqrQmORkTl1fpeb3hbC8gLaVF2IR%xxZeo(N(Gwa~yA644
z;CLDs>Sf>Hxs-(UCWNQr_}4R!cpPh9KfD%?v(s1oxITDtxIVP5CN8T4*IxG5wczwx
z-d`3qUUzRrTm3bCis!gz5A`Wu3w_G_|68B3)Tc1M#D@yhrzSV{Deq2w%AUia`?&fP
z^5C`7?o+Pu%FFQ+*8va4X53Rm;#QYNmW9JOC!6;v&KuajadA%chPj5GR_*1O6WCP!
zDg7|_;d6RiyE&)Cc-1stNz`0r0Qz=uH?04_rF3;%!hu*H!}eDAl__imxEO8&=13Oi
zAO|ab52R-tw=?+}ntb;Jr=o67+vHc@hI1YBC3}68Yk!_(T>C<BSmS|CwdYk>8%l)c
zdKu;t^()X0bo1r7JqK<I+(I}LPI{9kV{SB(_kbA7o%t61_?!vXUX)#0#phe}!~IA#
z#~#iNu)bCQJH{TY%MOUg{G8W8Gj4219#VC%>VxY?J<D`Eclq2l_1qI&hVr=|4`Dxe
zpTRX$vmZPLxL>R8WAF3ys(bBrn2xzubUbH08guAGUx0mg6xN}z-h*vii|n;&u1otd
z@3qsq+KOdheprp^HrjuBRSC-g?fa#I@(AYai9XyjaSeg%3?AfrCh7|&#^HVd_x6|%
zJN<+6+PJWD?s(ZZussNQb6qeV^V|y&*MoJx`5@N;Zv%Z`85ocGHTRv*&r6|so^pNd
z2c$LUBi0L2dH)s{!aiZ16Nfdu6x4;!7qBK(zX2Vxw7c`WQZ?A#UAGWvOx*N?oNYtn
zPi}|X5W=~PIvlKWgD7{J$~1JRG3l6gPq?ipm+LKj-un=avFT%G?dW$LQ`mR($T@aV
z?L(Jh9u+RB?1H(z1)CvH0glD08!D4l&Ht*?8)=nXBQ;~eJRFy_%V5XE`y#~S`T*~t
zH{@hh@i=*lN7g3jUL!8&I2<Rex8XQVMthauLF8h%BDl2Obn~O)@wd8|mUKJ%^@H=4
zjl?l>%Df6?vMjfYE_XG;_mu0&`r;UIP3+DcJKi}O^`+*T7|xM*j-u8%#(OrdO|q@`
zV>@GeDz=Bh-`wNw2aRzU=bv+4VmQaS$}}UZG0#u6Fot`QaSp++9sGJBd_ORb`C)A3
z{R8h8?Xe#InCB<j{RZPkQ@=T_x^;0m??ZdQUa4})D9n?OtElaQd2z{*S(W}FcYW1q
zPKQd|N21R-dGa25iaiIetUin9cz|R2D6VC`!*Ss>`LVB7!4Lfs`;F^5%B4NTNQJXq
zF#f;8^(GUZh;Xh)vQE4<n0<%6P-2|g3(qQWy=qzuNWu8wL0jQIa&ElZ3hO6{t<+Y0
z4i(*2DWM^JZkPBH#%rcsfwX4-Fu!kXvuBVN=L^O;99xZL|74qno$)ci<A8C*J(lsf
zaV$F#$D6-ZmX8~pY`Epvo($4)dv_e;ZdF`Ece=I8GuC*<GTqLdj@wMTr`&3kZN{_G
zU5sa0L;r8%*%Ta`<V*kW;~Abo)K5cuSv~QccyP{cx`wEDtEEY|V}6U_+~Zju%4At?
z7hP^L>a(ZZ0@l|xo?-lHHlB5c?u7G|*LyRba4g_?kL5n+8ub^9HS;vqT*+}FYOJ}G
zei~b7zjBe{aBP7M<2zWdvd0pPL-sk0aSCfry<qFYbNB;{rTJWcNaea{Qkc*CHet=f
zdA`T}E61Qpw+6?-xRuym0=Et>I;;eKboQEIct+K5l#>*|b84)aqYkN@FPU{tUwFJd
zXTuuPMjzH;Sy%dTtz`iGxJHk0*Y@N5@d)_&;fLoT_0GM>2e>vmb;Y_+J?rCkrtXHO
z{(FK8(1x5J<9WjXe~{}D=r@5T`wm_=ux5(qR-+voHpW5U@mV}Zwry{Fu6=oF)5hnr
z!S%M?3vFJ$!PxByl*2|ew#^HlozvEZHmAnch3jyq+I;|P7_K=F4p3@KwlBDr)(3In
z4#6$&?YPO<o+jM@zqRr=;k#lk(s4Zu_XT&GYY(0Sq#E0mc$7z530!Y&+ZfFGeVnhG
z`y{gt$T+yh;+pTw_i+pRhxZR`Ti!#U?QmY;SU|h;qm2Tu^Yq&r_8IPa9E^JK*&1zx
zd9TNL#uL!%pm|S6{V4QWhNIp2EZPfxU=#Q4p<Z9-$7p+uFU{KCZ6^b}llnSL(sSfi
zg4?w{4J_2Q3I9*I7Wwhm^l%-U53x_?*c25zHZ!<oNMzgbm>9ob5YHS7Oxt(+STMb5
zPs~SB*<ac2v{mA<`24pfyBJdz?PwTQ6ndrZ!R<}$zXblMFYdRU`!ODCJAWJplE=el
z*jYRA1lG34nn|)*SHUZl&K!qxt^)KAj58S1G4H~BGh6|?8fV-Y!gHc8>}lXO9gcTB
z;ELfU!_7y>?w~Mpe~LN$M*Eoz`p86g8OV>%!a1&)F%4~B&-89*$}(hmd&*^?Zf1Su
zSdQ0dYs?+%y*bmX_-qHmaiUN2#Qo8Boa6JJ8;|}{{ffhL)!b`iII!ongAiwLY-7Ew
zn)lNfQW8A{$5%bAy!i}@^LmrFUwL;$x^~PD_w&3rXL;Pdh1)pJyoTUj12)mqtL}pz
z$K&-e)+>08GHVyCC(Fb5(pXR4UvU0?2GXOCrg{oySFxTqB2W6WOkS5crhg4`e$WH`
zk89FcW3DpiMgzuRwvm1BSyawvHmLK+TEFf$TjPE+73Uz@ZtlKg$|EZZ7S+ZV#8t9g
zx+0w!GuiHFtVA=8V@yl5*Ryj*@)^s3FHlb(pE;loJXaemXWf1W{4t)U^4=MCQs{1a
zc8oftV;l8N41u@?H{MUNEIdn0^&l^kPq*_sqK){TONZ)Dk%spRp2UuPCYjh8=`sGL
za_!5uHNrZ$g?;se%B$_;SAe+z^2GTWX@z?pe;Mw-aGWswq}ultvRiT69nC;Hh46r-
z0WJ@dg6-f$++0#;fOK`(UJX|cM}On!Z??&NIOf4^Lw7j+*gli^%oqDIfqf0@w#NPl
z`|uELkU-d$z{V(4{w(XyeR_|_forC?KQiYuuQ#l#+qug#^<cSs!sVb`?jLSXY&#w9
zhiwBCUSGR_#}#cboPCdN&}ci9i+<(URH3gXT0?15Re^a+e)V{^myR|1dF2hr1MmAd
z@Ax1Oj2kbpAHXikZZpQcPI0nS4u&{84s4$q<6N#dST9Rude*ZDemq7zKg}`X@!)YW
z_E22Q<M=xXak(%1?qXl?EXuKiLY>$KEQk9rb~no5n8x$^B*bMp3wf}PCot`6w5@_o
zR!(Ux_sOn5!Z~gXjtXbHxWkV^IBlDFPjB{-dE2&4cwT46MLE3?k2Xy&Al_DNn`d?Y
z@O+nj+Ze8|!oF>Ft@{{tMtr-@IDQyEQoZQE0h|NKClSxC?dR@z-fq7u#eHJheUN5D
zc{XgL*w;_5PQ?8`#`F5D{;=I~xq;YryKLw^<$9v*->_c?<dokI8?u?0o7X4glye=W
zz7_Zeh_LF{LEZ;GaM+B>*KjYxwH{pB6KV6+-tIrmZN7XK*G6(|n=jgJ(f$iIUi;AQ
zinb}-wh)K5U?(Ddv@MuN>0uL+N}DU%h2ea(?ZTMW=gP+$ppDq5YAn5_#wlGow*81h
zdojjurTDbjjz^qm+c8rf#;eBiVwH0t%Hef64rOv}K9S`hzi9ii==v2QF0M0)K8*3m
zH)86^d19=3vTW9KSGH)TEl)rl_)N+l=De)AUD}1{fBX&9BDmFbcv$~uTn*C3a?FeV
z{vfVdp&0gOsF#KNHNR!si^a4*!#x6;(Pb|dF5k)i%#UZ!ycY93=9~qWj~={Vr$4T>
zuuZ2;6V5~28`Cb1{l>Hp&VO8kj;&%FnQIWQ&vtv5c8Sq8vG(_W<+lm-p{*Xz6+Amb
zpQH^Rj<0O(XlIuhWoNemHhB1D4eX=y4lC}z>X#uOx2wbPayxg}|9X4LF&ulE-q|&4
zBAx)=M{wQ88+$?6rq<I|(6)t>tstLi@qUHZFtZ*DKl^;Zb&z&}i5Q=7of{Rw+%nOe
z=X)tm65`+<8~x`8yZ`Wd?W{43#2nMH9W?cF_t7Mr$5=0iy*<_rV2{VKU_*Fl73~Q#
zke@ezV-;xr?q>k?@MEDT39bWN+MjgHBbH-+^#2`oiNpEPXhR5FLfRhD#*p`eKFhHw
zH0J`(Db~mBqU#o`y#JNo_CY)soa;t1j~lk__eIgxw1dQ21IOXHp0HyBndY*A<h7mS
zf+yg-tIy-aaTs%VdmOglZ;qA8i|O$!dakjf#B*oP_3ij>8%R87?P2;{66+OivM-=*
zu(5|kAFN*<f^ESNtQ)~`y8<o)+ngKoo~#?rW!fUzb;bG#`!sDLG3E_u?0+HJBVu1*
zA7^YLTVY>(7}q%G!@k=0m*&|K?IZb|*w{z%K8$4;dq}Q{(XPjo$@?PAVXJwc!g%&Q
z8R~-dD9l&?*w%vk&+~`Ji0zUTcCJTmTZ_$@?9!DCb=;IJ+`D7D0Nk#ybZqnYY}qy*
z?3?MQJ<yJf<8~%LLzC~GU=8YK)&g$hT7aHIrQ;ac&z|fx#+Gd@_}jsBmK?XYqHQYS
z5)@|Q{4Z=RSf<;VvJFi=_XN{WH_ihdim`TK);Tag-N<K$yJKs?Ii#_*@L}6)ar|Bf
zTbMs@YvIkoIEDVZJGK_QC$sOFaqh%n`#-X^@bvonJN7x{*@fpL>f(Mr>9)1VIv#e~
zm_*jV<zRbvUBa-YxMfOb=+2`MVSF~pI=F2uSf1Ot({P*V_LM6?+2+~gx#&l{_S?_6
zJkGk2v9;*1yS5g*24N0@_mbLIj$hRAM%VFS+t|mbXnk#~5c*w|Jq*X=KXZ&KT*rs)
z8I~s9j$!5S^AtB7p9?V7x{pn)zOfZ)_LQ5CvdweJyJT|!*3-|}S~xZbj@<+vJtcB2
zl-J4qa6a(7q^$*(ZxhY+GTPQ6z_4VdacnJUL*cfyz_Y=fY%O>%%(0$nzUO@nuc_!e
zT$lMB?@%Tbl}9eXI%5*n^d1?CdnSH&sHjy{>8g^-q*Zr*)$z)-$_YqkUz5>au*QRB
z&C2Qm?i>0L`ylNn@~LrcX8wuLdC<%o>ovG`JNt|^OYEDo&oGxyjl;ItS7R@M`{B99
zUIJ^HiSgRsb)54=?XR(yz#72-t{Y*EV6Itz#r(2yzqu~M`zu_@u#N`XFN{YYvR%T?
z7>9P<X*_b<OKcbp+plcQ3*c(7y%411_U<^wO+U$rYv@k5U3tbDlUSzPxzll*Y4?=d
zin4cSOtN;@UcxmdtsS?BKjGDQjCN;Ciat)!Z52yzjyjGTq)E49+7<9~k4ZS?>!-rc
z?V`)rj_^I@?B5{A_`|iaU5!bdcDj~0<HFoO7#C)^#)bJB7p~_xpmBk=57%fMz;lOs
zo_}sz2d<ZJjzL=ou9w8JbtpX<=N{bh5lwChw&%mGgo_R<f*&37jd;WVU0VlFsJX2J
z>*IE&?uPDt_+M|Apba@c<yiTDv32lT&21fg{{>qI$L8Cy@5IF=mCww~b;13ekB&Is
z(sE!91y_EG<MOawD7^`OE97s&cf}CW{kLo#{%HQr>m;9l^Vt)x$JDfI;94x7uj5|W
zeuhrJUjIc~2Y1_di)#C5TZf8~cupX<1gz6`A(*Re6aJra1@il=Y#ny@SlG4*vK5JC
z>#*eyY#m<zi)|e^Kk;zBRIqDXhqPR*-NCIHjc1r}li~8<ibr7>R2c6;X^Vdq?j78=
z4vl3X>?@4t(Y6ju?{=mvLzcIvTnE(6tZ(4<JEpCJS984m(YHCrj%Dj$?sf5O%$}1D
z!Z^7%w*Sc1!Q|~%-qE%WERW9*Z{al&?f;+JI+%LKsh+WH9XO|EnJwBn;M#24J81nZ
z19L17`WN=Mo_)<cv*Ekf{H6%*P3CsOyVpzcu5DaSQYF_8c%NbJ2e9VYI7h>}By1e=
zVMhQvINQb{zuISP9B`jd)M(>?IM@eXkAAjo9P;h=<7wZ(=er>g_Sg3K$9q()Ii}LK
z!KCkYdK%Un9oq)nM<n9D0=5lle4o>{ZTJN7VMo1_ZG(Nh3R<>pu-7D7ux&^?6?SxR
znPV|81Vb>CrS^k#tFc`UHw}*d#?jwwll|bB2e%E~;q=>;Z3Fhfwrv1gv~6(KH5^+g
zUSC*Ow{w?g>cMjNgzJfNW7#%vT>4LJ8+fc+vTb14AK5lAPD{283}gT2Jv0VKKHEq&
z&;317whcbS{j;_WW*>IPwt-`Vv29>F+8?lvC$NsMHMecB>yL1b6R~U?+~G$d{jO{q
z?6@fB&)7CFEsqgx8@SDT0gM}|d?##oZ5tTZZQBqy-Ll*+1={U0p!bwZK-vEd+Xk=2
zwsUM7_?+L^Ht@NWv2E}mPD{28w0mHB^Nc#$w!!Pl#}{a_ZSX4{o+qTnA&#+ah*x~t
zHnc*VXxj!;9&H==9F67Cz970BW82_InZ~vu4*5mfHbke3wrw!=q-{g2da`WRb62(v
zrY&*Lk9$>&4Kdb5FTyo+0gQ;V;TF@K`RCkfq>bg6AN~1E%(iU^@;TxRJa5#ub&}Ce
zxR2(yvf}J|^4mHeVyv2pYrYe2C)<V~*8GxTH^^}U_p|o5M{JvgT;78u;@LCS3G*HM
z288=imi_z@_kkQ=oP0;y-!L<6^gPmS2pwC+b~5YhTz|9M#I#L}_KCI6|0}<hY*&|k
z18p64$G*XX`(tC@umt;9ihSH|4UU=Hxx@a~+jGwPYwa7%`e_IDwGhwIo$VXUxxSa;
z{1x^Mv}rK*4YYN@9JWRKhMKeSd>3vj-1a}|m`5zf{OJE@>>F4gw~MY@tn&U>ew$D?
zb1t{#al;rLZQp?Fv~Ayzi*Gi$?He%PPxJ=9vww#m+P1+H_+#4!j1!#e$FyxQ{Vj=g
z;usuup65r~Hk6G++rp)d$9E9GWpI9M{}r|kUZ<biwhg?$GwW1;rELShA>qNbgxBsi
zXiraYT@Bi<W*o-UK*6z9<6zgr=M#aPp;cD|x7@iO#^=ieTkhohT)1ya<a(01S90Gs
zS+HR`{2Pq(t#Ch(SswWU`QyBNX9EbY$5dV_e?x-D+mCN_(+|&kd|a2}b02aC{CIuY
zF)&p1J8Zl>PMq5rX55Mdv^m~s<J@E_<`#Sh;AjwCD=}z=s(9^~I%E;Tt@=`HMx`Hi
z$ML9(C-_~hwW_%CXyh3T99xC^L)i7-Tf_HsSiZ46;XH@)YQ`ImJbSKMgu3EeYDjY=
z*1P##?*YiWWFqW3cEe3XoR-{FgvD|##s91Qb5VXQcPj1cys+y=+r7YNj%Yi!2fj&V
zx7jST*-?t~BiqkABf{%B+ljV#J9Z>noKN{NkKp{zk7LTY)>O1#Jbs^G+Nwoy`=V_z
zKZq2mec3O4$(U2Xc8kvxgMmuk<EL8iJKEMms<5n@XnBe&i*a08H#~RTX!_2nu#ZAL
zY=7nfo3(e0y&B&a<Jf*Q$`2+Ft%8|V;*rRc-~K=z^?`FRx8DtyJPGzXEw~J%kL6m5
z|5y7bpkA?@<((dR5&L+Q+6Qx}`i?qAoWJ6`d5y=2b6EaP0gusC9HUM;Mw4}nFnZ$|
z%=b7SaD0N!@$n>o;2fWz`}jD02Yq6f$H!c6d3<=RS~@;q7$)qFTZUuMl3Rm3V!4*$
z|JD9WP`6kv*711)-}mM@lz?{!i|{@BDIVu{Rs#K&MG|pN^u#z?gx}x^rO&Kfh2P|{
z-uR%l3%=dv`G4%a3w%|@)%U;mIVXn@qlQZehA4-dqFg*6C<;hWRH|6RMa7CXDk>^!
zRJ2fS2^R$|w4tR+ePW3%TI#J)v85I@-qE6>qD4zJ7miTGN-I86i{$_P&FneZIfRSa
ze|g{Mea`1IXKrg|)~s2xX3gxiXD7J(g75n1dp>QwXl-`6z5m?$@W<ZP_rh1NF9Lqw
z<4)_U19kr$-{e3h$lr1bYY%5+Ufu%k($hP_qq!dp`}(q~x<u7osV#G!$o7&y;Tiu}
zbDt-1?peNrdw6HpdnI#HUf%7gYVSGnc+L)NmiH}tZzeqJ!^10>^Rw7<JnAiCJ;ByC
zaZA4T6J`AtLBB=zJ2lDMQ{uTuVy>}SjWQ>Y6}5b9n7v=)2YPQ>?dqLPue79|H7sWk
z=aV|~h@(5i@*Yd|p>L``PCsRz7-zlIS|T~5bAI5A9|K<Tbtp8dZ_(=0>+eX;ukTnq
zzdko_eriZfMXG)Ad~C+&bC>7*`u5~SM4ytXx*>X2!#lyc{~CHS<W&ueR?n|jeeLzG
zZ~_~0>h}`QriSD#PGtu;Nk<xy{3&an*3l|oYqsECZfyJz+hX&MRvx_L`SdxbBIWAb
z29Emu|Ba{K=@jjDg=bX@cowyQr*z1t=_9ncQ|Axm+=0mYVa{@;C)6+(YBIj7q;);>
zdrs~fPVC=vwAWWYW10T$lHP$)TU%%g5*eFnwWagmt)!tZ=Cst7^x7YhkDbY#rj5kd
zde6I-vt|2@ryq$wL*H+*-_~Kz%Ra~PfaZnI9q&A@;(iW$zk8=(%{mo1JZUn|Cvn}c
zY;xO(ufi>CAukN~Wy4db&)pSoznL<-Uf*aq!r-<h)d#$K5snsD)yeMK-6h|hXD2Ov
zgGqNB>n==vn}X*6=mBd|&j;niyR17ces4nWVP}4Wi8<Qh_a@Nm3L~_^Sp&}>>^GP+
zM-BdguRGw?4|E0g7HhCY)c0j(!&bcCmYkDMpR@Mo{crOf3EoE-4{kB=)f&khjB0NB
z%uVr}&zwY`PMuC(F6p|HS#lvl+9<-{$-6&eWh;fO7$d#7FgMA0OL7M1Dz*;6svg0!
zb^;fqOXlgDUeGriITC?4BqyTfRdpXzuZM0GNyv_~xgCB-_#|;P=SH|P+-we#zKUBI
zlyiP&9l}%J;L1iunLF`IXCN2Pu3IVGl5eB)!@tPgEaa{GKGbk<TLVtL%OrR>e<ECp
zFQ;(WEzF3!Ji(3+;N^#%gK3r2JKtj)ehHuO-5I+MF#jT@v)f|JRT#!wu;RZ(!0MYb
z?mJ3RV3DDP(s2c&?;`yO7=3HT!Nh=(Js1mjn*aA>d}GM>)1ZT&yoL8($JWhKIPtdS
zwbH6KJU2D+-79UPU#sLL2Im`SL*GS0me<Aen!f8agfbD{L%zr0bBV#{3SjlErA*j<
zz{Y^RGk{h9N`cikm@;7x1vUz-o-67-=lL!4<xF7w;#-)zXV;Y|?8cWp-GS5{MW;T2
zv2{GM<QmQ@12+|a6s|o^`7S-v-^y5O-HNd;CRh`+W;~>^f<_k$w}kHU9aEPy?Q7nS
zZQxbboCxznHvFyl7LCS;{<J86#!#1)KWCfoOXwR(uLR{pALdPq@@E9)ocvK6;wzqS
zwkUs&1vZi)e>7(5LyUWuk5WI7L;dh2myX1DeQpTW^JkDtza(Ath)-3nhvJe4(x;FE
zMjn(l$%A8}nsdRq3S;8F^LH;}GWA;ao47@|?$_~L4mWBFHix+JL0%c*xrE(!{<=g(
z!w{br&xwqI)@IK0Z9g;T(V6@*_7TCi{?O-<xxDkr7@gsZN1E`_{plT{oA~55aC#0V
zuf&z%Hq-X5Tq*hOadWTV8D?8h&iR>j=<GQ=$sN1v8$V=SFt};0jY2D(9qBuSO#B@8
zT_*EA9Pr~&>ZW<nDC~OEmWNwIdSynQbicGbfhKMpWPNFo549G!b&&HZ<oFu%{T-DP
zA0kUy<U{m|G#?69e2DFIi+uP_m=9U+q*Jb;EuXg3@2-rc*6pXnSAnct65071g|d5{
zA=<I02e-P%p_gbE;r;^I8)bffaB5JW`oXs)=|>X}>3fFA%A70BSj?_}()j4`Dw8K1
zN7vm?e#Fz<E@{y7o^u!r(N=tSf#Be`R;=CV=IwqfeoX$!t~2m_n8(He+i@y9^BwH`
zaN_?2zFb}qS6bL@hR?!r!LFr_5jgo_=inj%zyCyXXczqcD!4p{z^}wj!DaI4-o|Uy
zA9&FDndP|KgfTj+4l&vcm-dWBKgO*S{yLxMq09^Jajv^WJOKUrkX}r_muKnR%8ZAd
zJAXlUk18I>)=rG6`!1kc1GCEJwEY=lrE%J(Z&U?*%tb5d?+rTG7_dJCR%@!@#KUpm
zv_|V24-PI0+-%_VPM4pYWAwG-z}HXw$*iFV2w%Q;DZcnKZTe+%j2wy(|C8cDnLg?x
z^3vD&5@p?759=f^0YBw?d>;u{gwxn|XYA$nmRAIO(~Y*Q^Bs>kKc2kQtWPidO>1_m
zP@m_6EA%n^JyP^!eOLl+DyR9hf^u&C4wsv5`Zy=}M(L%7rVj(_bcir4?32S?{YF2Q
zt-)<OID;vkV{~%%!8!ge=F`E9!zlV!gxmbxuffAX+1g#yp>dR4VEhdoID6dX96uM@
zbW}aespa^h^9X#or9s@$epkL=CsV#9=gJ5t^NwIJ2fhVuGv`1Yer1g*92)So#;XK4
z_q|QW*P1IUfs-EK`2S?!GWow3{T46K|Md6|0j{O-e^k7}8hlW|E1FaNfNg2~wYSyy
z|B8Cu9GOU3G!e`Z&h^~Bvo&`UV>@cjOJ79}kAzloRm_p<y>Nnc^Aer2;qTa;x;fAq
z{G8qz=1=L;e-v%Nk$q3YVAFrA*KJ4VDh>44u&k)v!JQQWy!0uzj&1>dLJRO~fER65
zf42Z$G+Ph+_!i(-0xy0Pd;#$4Q+CDtdf^=_J3Qr8u?H;EeK#i?xteEqR=N-SpNw_s
z9>!?1<jnW6?ZzL+nltDo>lAiwGHEWH=?nfj%8$ay4?722P{aMWtfBfY3eQMx({q>e
znEN_2i?PmD9L@caiTSA%ebZS=guZwl_;UYyYj0Hj0XzdL<2w`B*>iuxU8yX_U-kKU
zxwVmGRo$tk&e7)kT7F^{b&jnY(!tib+SI9MJ=9mF`cAFStvR(`_37R};l^3OZ91=y
ziiYf!v>rV}Ijh53x<xtb^Ux!+!CiXe=iuP_C%>Yc=cTw@+&YBdGJK^w9%CJRS7YRO
z#?3*u21y5Zvi0Hs*71vjW!&4&f(C~Mu;P<%1+b1+94tKB7X7ENlXwK12QM)fx>YqC
z1>Y;IwJK@mfZa=uq#id1Tpj<VH6ZUUV|&FuD0R7M*Y0J90Pp6sgJ(Z#;3KT*f<Hfi
zm;6Zr@8pGp*FIGBO9v1<d!kJqceylvA=?@I4PK4Mw>5_5e1Wmxe1Uye!zq*nhugUK
zt3m5X9RFa}k9guD)+h7bb8La_w}?eY*QWFgwdpfYT)P8AqW}kuLxi@aqZR=hp<SKH
z91Tuc%opvK>am56;@8R-Z0SX{S=^B|a7W|2E4y)LRx$Lhc@sYR2Ym}<8Fni#QHS;;
z=ByTdA)7IHjXES>Bs1B2HT+R_*3|tHejGWdJww628b5qqaHPu)Tjv*1a61^k9exLV
z&NYoqspzP_HA?<M3%wunI(oUIh4|0WqFaa-vaeIwzf(@S4DY$sEfo&Ic|=WUAK=O#
z!1+;l{F1?Vi!Yaj_5uzb*erM>LOWUPA#>92YS7+%+M2iB&TqAUtJ(&C-EDez2!HXp
zs}H>`J(iB=p4J%A7kIr+^lJ_MKCZR<cWiCn6~6HRPwmfdBW-dZXI;H(C1*l>|9McS
z=<}JvjJeM2#GA{%XwIANUIRU&oyPnsnZd~cuIEh76VS^t-A3}lX@XVTK6tAil0|Cw
z=cXM!H?VUctTSp(FQNW2+z_0ROVl$C*W1NI@?80wl^;$c-Z6l6ezSaFEnZE1r+;Q%
zYJMCa@SpVdD13Yn;}^+87K6J7KT1C`<>`}Pbl#X3@R!D+C*zPQ8*dE8SLGdleuH`(
zPa@mWYpNT&t3qYm{2mgN5nmoanM_&9Ue555+HrhzBxRy`o_9=+Y<M~AIMJSc=IZRT
zG&t)htExL+y1$W4_Uu#k=Ut(P#(xlN#G+d~4w`uWeluf(YmXa6TxkPvOA&(Il@Hv=
z09JWnw}LVc-~>Alm~x!+6_#`GbAekjhjj?&(zcUdNxGjWonTy@&)F3w3_0eT#(`d-
zGaAVf-S654zcs$jkPl>>^bPV{ovY4zVq-hrtK}@aE$7ntojIfCT%k~FiO%L7OoX!{
zovZ6SAyQnWZ$F#!4t?vY4X~`YW)4Zl>TJL(os&8M*_H~;%L;U|@Y&`ati3v?Xj`u5
zPG{BaAfEoNc%avG24}6!?^4g?xgJ|U=#3K{vhkgBbdkR$L?@T-;5L%C3MW78!f*-;
zelugU3^-TT@#y*VBYci~6?p6XPW`}M(eSePavX5sv*9toiH?Hf3@%MC?KRzb(W8b2
zb5e!S^mf58w<Pn-IGp&z#%pVv=$;RZ&Qf(Irg1ok_^pbUv$uwxf1|Elosm5NA4_Xn
zdn<g1TSR}qii-thou65Uo<n+h$h`#TFUUWhdo-*<c7Gc@GxN9;sNs3?#s__BS6<bC
zzGM0)nq99ja#}q0JM}FzM<qM;JwL6ZJQKN1vS>=d;#3}Y(fE0hTG<wezYm7Li{Vdy
zzqSpRa8?n)zXIP&&Pj>qj}6)rJr5;5P;qoxbdkDWIC|=C&ET8iI`a^Jz70K>K||*%
zpsjODNO$3|FW7K=cVWS<#?|0l8*bbSz;i$F4A0{P{bWrn%q6|8=6A*H`d66yhZAni
z{DrpBE~c-u>pN$ZJ%qBXiG^PvFC_!eY3e>P^49K?ejd^*!}}yy!OUmj;`T^C3F(Mo
zShf{r&UgW=<_ld*>z`rR>wwj~`BeCn+i`l0u+GMWUpM;yN985vq&gC2Kb6kwLHxN;
zygTt4;_iG?&o`XT8*cNgpiRl8u4Yd1t@zM>%gLo>)Kv@OlNj$IILVGAzH?5l?9LZ#
z&!DXQuyf@E<LY*4E*?)#GUq<5O-8<EGvD0WnT1^E8APGzHq-QbQmu4%&aI3L3&Vb@
zH4{2NZN_AhIp;y2G%_p<hpaba_dDS94D>O4jYE5Ads#qRt^e&Q>-HaE+Oj5amNzGL
zegG?cS_A9$5@A@KN$V_6W2^Z&nljSY&%hU)8#~uu_@pho-R^SuS8I=891aeKJ{p({
zfZ=^C1LN9uFvxQQGai^Xfr)$P)ZGbBgxA;bdGHC$|GasesQrMm3tTbbui};jW#xyR
z>RLpaS7GUJApO^zIJ~^7L3&L*d70q>#w1Pi)*(KCEpy-n1K%xx7v1j%-t|2U&rz`9
z1=U{=z-x{!2Hw#;3_lrot$~8y5BNaFG~^I==f<Z3<Mv+B;u#TmAge3S!B2q3f7Tw>
zn^gY}zV=~%!p}nPm~(s9zgEenHLzqGbq3Ga&GR{)IXE4<J?nt>lG4>~rR{kfdTv2i
z%FXbVwh@{}c`hJ*96ry9^1M!G)khKb@+_Sn6Fxy(C`FuOHMQlwA)8NoSMA{beBMiF
z!+MjG(^mH_8~WvFo#h#|=83~GTu$)pg>O?C_Fg&I{jdkAl3gs#)i(T8?Ne6sr3?JO
zfOtF7e}rFvKOg@f{2$=Y#a<T8mbI=#_qm}<%}M1^W;S`ErSym}9dGyyn!`^wkspb-
zZ5V3y<g@B^#{WKZT()!i_Ufp-w^BN*y9V2^eAdy8oUQmZd@CS<Ep;2lDB;uQ7;Fya
z<f9knOrpM4Ocm+c(Y%D`?yA=J0yqkVPjnviI=GH&I9m2Kd90_zogGRkH0xP`9K^*!
zZX1UY30!Uqd11IO8{YCmsK&Q1b>H}CgP;9=(`n!q;obf|;3+wB26<UERdssS=k5<1
ziQIDc%_9SH%>CKs{+e+OoWt^7$%uOQPRSAUOSp%f>!<U-EbjkK_yoAQ@6ENPU%H!y
zKA67hdvp7frf(BGOWF?N|LyJ$3*7|}q3@#69AL!1x(~qEu@Gi`LDtS=zM1oqoUDZC
z%v{x(17Yns2{ZR*kzQr)J&y->^hj@%JeMtu&Kf&X#^Zjm@suf`%v5~#I)zcvRA-*X
zj_~P(wfE7xS^JTe7360Vj(M`7DG6+7jQtpM&e)dkWJAN=UGJOIzP$q>!hBM{+%t2p
zq^d5DedHVBfg17l1bx$;bq-rt5B{dDEbPcT(w>KGLjTz`4&^AZ5M2RRO8Bd|2YzhJ
zIX_&-Z1UD})+!th3)(%LcGX_kh07?ca{J2NMB94L8o6*pO>A*$$%V-Mn)2Gtd|%bO
zLEp5jYM67uEwypKVnb0ZueLYzmL8}xxa$bdo6Q+<4QDJmFXuV0WZ~M<;`&3y4;2$q
ztxJ(-rEjOQ_!dA%eH(zW7z<4*e#-MTTm`f##%&9n!eRG7M%?8Ierk{>KkNiE9_Q{J
zLQj5I{4GAu(;l2>`jM&$jFH8ME$1fT5q7Q}=U0L2zH+02zUWMr{qD<Wg0H(v40-V~
zGL*Tm^MhHb7nn0UbeDHUmA-#~2%KB{YsS>eTAk|5x30_mTWURj(T0N7d9~OrFqS%J
z7{gsS^Xl~+S29HUWh9}!$C!rW9POyv(Jtm)P|J5vnaA9*?#<`h2UT^jv8hY;7#~q@
zH1U>^3pxjk5SFZYi*T&uX6%4x@tx?qQvXFenRRizmm?iSGV9N(2cC-5SiTwzPvzFY
zPu@Cgl<d4dlD@n7w4E_>ZVTa6xY+G>zPj{Ge<?8Pt7!Y2-Zh~A*9ZOAx#?4+LB~y^
zC%W4v@xJ=V*(|t8?vyl)5YEUTtyyaX1AQW-qqlQrtn<e)bxVQQa~Zv(^v3|k2Zm>~
z=3WZPYL$zU_7~E0R;PC^*CNB5EZIt2{RunQcjssJ?>`w|32u59^kvqmuBJaa_h+0~
zpYoxR=mU>!;;f)fw$gfDr89|(v6G4=u!m0KfFA{|zSjaA=bz2sP5|x#(F9s)Zi}aM
zE{)dixpg8^Y;CK&QtT|@(+$`PS^JoFX6@ts*M^^y7AwZy9(xb1M_SA5b1Ux657}Pb
zBRR1MIf3iQgB=gI<W9~YaTU0#Aa6Y3kvMa|bwX=_J+pw-HVG!|Tz$?jrrf@AbHQx~
zJbwjua~OG&cXQe<EEd>HzK0!|y{~Uv-RZ{e3Z25}U-mwGKM$JGXJ>oWfj%#XPGML4
zGtO&q*|?7MH=Gws>YKdS<<{K%7Is)~zNa~aY+{~lQl9oiF7Hp8JLDlJ*q_WZ&n&49
z*<<w_n$0o#4){gkLEv-NvR^rjK5D<h+3F^>A9i6}6dnYQ`^r_*zWS`az3VgfpGGJA
zxuJ)Bj`%L;p3?b$COVk8a5K;Msv3S|=%TfHY+aX_=pz0OeV?~fWA(NfE8g*ncu8As
zMo_oLp_K8~w|Qr(E_~fz&%GCQI~aRcU%A$L=FWM*^Ng&`jgs?8+wR3#=<uGElTqOG
z{+QMR+RD0=@o2@kTtVH8HG5CWBzWGKtg1V>-kw?NIilVvhY0ERj!}Cxyx-}8e}<k{
zDSqR?tO~dEF3#_E<K_Z05x1%Z7%xb3ez=}BG$MWc+sHZa*4U)yNd(@LJ)WMw`{G6V
zr!&r2nfUW;z3T=&#GfU`t~^$5dGmPA39)r3^vZ5dbpd{@r*955>5;wYm--WSVVo2e
zUi-?eqHXOlw{r%dH2?u}MD6s&sRw3izdEP3b4_l&cc|_jsA`zmWo~Vx%N-l?a@*F5
z4`j0-8LsCl=pWHK;!7y&m7`PE-~zdPbOgC9UP_2>o7>1wig=s0R$(`Q+j=i&4Y*>$
za!H)xnQr^y=4pamPg?HX)>qg$m94?WiuF8rT*E2M3(XhF$;ark3qL|wyf2>p9dj-V
ze%GAi8CPL!7d$%~+?UbTD%{jx@VsT|S93AStE}_G^{j=@9bWf_@akdg?rcA1fxG6R
zc}^J2!(VJ~{E+v+HmTp}Jq`PX`u&|CU3aUt3Z-8|x_IE55$}j~-wW}87w`aM>Uf~Y
zvpg`7G3R|nLpSk2De)@GW{WSx13J?IH_>u!`3d!7pr`rHb2+?FzBZLrK9c<f_fjI)
zZ-btt&~YSg;;-3f;8ruHa)U@yd{0iW%W%sBUt#A|b`VZ9QQwaW^}T<HRy|`)JkpzV
z$v5%%sha2LnTMG)=10))!$LATA{htoNLJnx8lys2hPph~=Lr0lue5~KOGUdj&`$43
zNtfxXXD!AC3_3ACvp84ki0slkvpg@`w0;SEhg*9OK5jc<x!%kL#WUSD@o6Ysuxp^H
z(wra8UqW82So-j|hPdbf&YCkDIkQr_=*NUgr`MCt?yX@<RBMXmhYuzDHSdv`9W?IH
zCDOvUkJLN@pLw{c_hAG06<q~5tE}_G^^720djxD2j2_FGnpwAG`*db7t`C!EY@x{e
zv(b_4eH3R(e(8)akY8at2j<Eq$D>QYzxe(=JHe|R$(}4|`V&J_J5MV^JgGBF$E#0b
zo9krNoFHBDY+49@hSJ5W<y8%`C)xqsUqYVey^KtTm!ipej2r9T4R5CI?q5~cInS@3
z({EO7v|r_hJilG7m$*5r47-NfpD};S=hthzbv~fGU}A}$De3y!Lw#4YN$UR4u?@ax
zBR;KxPivZg6KDvu>HRRW4c8O8w10qk`Ah2*cCHw@xp1a0_?sxZ5GOzE1UrGW2)ceW
zN&EN*fYafu->rGif$zIE436?WzjmBC9jm(!{956BH26o*Rn#x_NBfzR#H)E4@6odR
z&v_r;)En_`TSpjMq;A+iAF-A&XT#k-Abc=qTs(JyXJlhY`&DnIa+9YbE5<hDsQ!p|
zr^92rZ}FHrs0okHcwQ!bBaBBk;StDyjRudg=p?VF?xy@Y>TSY<^S2B<oUA`0#1q?P
zixT3sZNwc<<%Zz?Vbb-D;BgJB&`aS3Gv7A{>6-5!hzEo84^(eJzioOh4-bfTuOq`a
z`>R`<cOv|wJ9MnfI#0UMJyu>hKP+z)mdx2#u9CK0-+mMHS@Y}pP@jKIx^zbAj`u2z
zJXwOjmb)pW-?;q={I^NEOxR`WFw#l(m0M2Rk`1kq4bkMB+A5x{cmv-w@37D6Hxqeq
z$A%)WU2QSXn<V$IP+tT2KZ&s9zi4x{XcMGgNO}}{lqz3xK9H5|SqFzRA3Nc{ft{4o
z6(+zlt$;K8Jl4!O;Xc4%-^}wE%X_C&m-K1rU+yerEiz8JR@jC0C55Fk?JKvMwjKTl
zgTL0CPJu7GF!f*aZ$Ib<|Ge3Ld*i!PIlpZyxy>3Qda!*gG&YopEy&vmb$3XoU=AZ!
z>Ns!WjDvj(JeWm&oR>fwt3QeFq&J0KroJToXJ5G_ZHw<Xr#V7<3+aJg58ZW;UB8t5
zMp(B*H!}TP^)D;0#BbXqmjd2+fpiysmhjqg?w)~%!nBYs5q4pHKw;?w`^pWWZJpV)
zh8CVTr}h{0--~nBn}~4MJD0Ow=3peRmgmBT4!4E+J10bwTS7FMLAq>R&0Zkb2mEzg
z<A*n@EPOak<?z2FAAZx^jloCPDL<fV8Da74Re?V_@Gr-g4elg--4i66fG?2ktbspa
zqc&><y6pR;OBcw+u1IUu5c;+jpZIaH;tP$;SfF$1U=2Bwx?H<sf_i;;U3+xwE|5*P
z*53V0Ae+!tX7!tgZ2H-Tf`08-r&v3UUNS!=nV>qO>@$j0Cp>nx=1ks9qqoZr^K{nQ
zXpPpW2@NMIuj-9dPM|aJUU0)n)Ys40RF7>qjWD)TdcIxgbl{7GH}vXh@EmRIw7&qx
z^<Vn0=$26XLH`a8g$oIr{Ta9zTTt|lp0bk)WZ-Pt3ZGrd=6)i0IGg)#GPjpK$X*7w
z5m$p-imSxU#+BieCmb3-m!0(31{e!F>9Gw7{0{hs;yZc$-@qWLJUx3Jmg9NvLl@Dc
zjTyTM`u-?mH$l$?89OWQy9P9nUig8^2mR#Zn`TXrj&M)_^B!r9l(*ygt%h3a%dNS!
z_CEAZFV43}s&eYfjqb^K9@h@u;4C*7PwA)^X-uKF#`KTWrGCAnc7pRv&h%ea+H*mg
z&b+us;$5BFYrOA4-w>>HG5TW8>XnXNMtUuKjI!F>x%q-_Rd?lItiAM4sUI8dEci3)
ze&8J4ma0tB?r&rR{X6h>=V|ANuNY6a_J#KeV;H|R53$$6t^N&isRcKWyl}c;-$zD>
zFQ%Ds8DsRnX=ZG=!vOv7hCmOUqW(%hPwKmrvW=LZst|60UdDW3KD@!c6unk_5X|=}
zq91e*=1)VJiBnI8Uiv-N73ig$5fw%}t=;In8RvMT=x4H;vss*n8;M&>KjhZXXT>vJ
z1$p5#!7dMAogdC$NS?!g1o%oGSw1Ui=pD!noxyoWOQ*@Le*hVhmL2FdhSvf<5ihS~
z9aaDPxxNSV5Fhp?O>#~BMb|fStz973h^OV+x$u~q51myH@=m%md&_kCK|#9a$r+*a
zcBH$qd4wAobL>-*uTAnr=X2usY}J7u$5%WS_>sW(@LgSB{L{kx3t#g8pMn2b;C~wA
ze-ikA57IxD&)gGjHV0{&0)HdE+WjE#*9U%mkY9`M`raYb$9IEt^&R}4r|xIp`e)<I
z`@^@Y?~S1RYJA0C#m}^di4?QXVlT8idze9wqTk@!hg>${<RiT6)k0nv?#qTf>I~b%
z$OcBZv3?Xr34a-T7=5on-$7D&o(=D04<p>e&h^vzUl#X&CwvmzzOFq?^h?;o$Ogvk
z8)O@!vo<5sc4H6Yh3sMc#Lo6GvVl>Zc^W&ynf5TTAYb+{S>C_N9)|ZSyppQA_SnO$
zmQ0q+V$JMK8$P_=l06J^cvI<bIp<^H8G@Tk_^Y@TkJ)n057)7fJlVqt2e<D!oOab-
z*oDg|taAIx&7*DE!wf_=FW(D$m|oD^*~9pyRqbX^S)6~h#=zOa)L2^>zkE$9y9V2Z
zn&xL)W1+{Q<>+3xMbKpw&Lb?RaM&%&h`T(&&JObAhn-+1;+!qaT<KNFV?8f#AH0v^
zSFB-t?Dqg}5kA0&oomPWOKERkx$!|?oGr{a@D1C-ln^)lOWVSn)6lxy*}}}JU8;S6
zY+=f?*&od_`=buo&23?LZfefwf6JQEk{yhrTc+(wOLj1_eUUtPhdN~wBN_8H;aJEH
zrcyeW*W9M&JL0R59gObKi0;7-#?7PH?>Tc1+&0E)4KA0s@?CnSUkyyA9Sl05>3`S`
zMznlD>BUWUFjj}Nb}&(7&z|gHbjBr{y{}^jqyB`Q>$~$a`}d!WuLd_~2c!4Vqx5%g
z>|id<ux~k?^}8iInDa8=P6RH~4yG0DB1ODi*};5Z&aSnuX|jX4i!|B6XrJKhVC?%$
z_DtN}L3EE~#2=6mxWtp#ao`?!0-26mgj*Wql@cz&$qq*Q)36<kV8YJT=lqeB+gGjv
z+;paL#cu3ic&_uVvx6B0-8}RMt9R|%4yFb=h26*%tiQNCT!Q|F^Zp%nFtSAm&H-7E
zc;9(9b}(u`?83MxTnvu;$}Ok;f0rH1p*&;N-dgmC86Ay%b}9V52RoPx81I(sV7yR$
z<*JXl(~=#`PqBlEAqRA(#J;gmb^%%obS|(vJDA_rHMfIdQ=Z2E7`0ckYde^lr<r58
z>Kg9M-HodNW-@L~3ozM1n)Ac;tb0oHq-8r8*<kI-4kqS_Kdl{1R{5^&VAMyaKca7K
zQh&lOjFZB`YhSrFw5`2m*bZjP*RX?G7P5nJa(N)nN{uaP@N6Xf9{ZI%E8YGqb}P8e
zFEMXkMvfAe8-!DQCzp{f*v-$d_kGU#3OlE=&#7LXJ?Jd`q|md!UD?50r*#E>*PJ^K
z+_QGUv$Mc`1#PXt-Sj+XKY#pcE|>Bu>-=y%weY#KgLy23SND*OMN4)tJfCZ32h%##
z@30+AUMSt!!JLjA%;v9Q2U8uggVA#uze4Z#>KPBV_B^jBfu=3lL(GMq6QScM+{9JT
z6t{*kl^a5u;(Ky}U9k(NvV(B$Iq<(iwgq83m~VYaJDAxa85ap;v}EPaLSwYIb})LT
zE?uS%b})LjZ0u8+pJ6+gvDm?Ee3A21+`5(cI4^Jmm<x($Ixiz#@N1!|;G7>Wvy?pd
z4B&uW*uk_7r8_&Awjn#1{Y4kgt|9Fi^C)wwrEx!*abHefDsWR@LAHNIw-B6F*7@Oj
zMv$)aHQB+m=A2m16?F!FR<L(^gmk6p40$zpyF22CN_N4!EuC#+-?z!}=TdNAPaAu3
zf)CpzETmoWqs~m93i0C)gLIu6jt!;H4bmmcmW1Z+Or_Hw*}#lNmv%NV-LZiYAMK3|
z%r)4+Y~6zm%w2}3^*jmNS<yy3T7y1P)BK#^MrbpL!<__fz^lk+{1q=)r?7J)pqmS4
z`hvfSvMX`&!%nahNQ>^q2Ilj?_N05r2If=Qp76ZG*>K1P23t(_uFY*=RPW_`VFM%m
zsU;hjOF}j<rPL!^oXU_5%(<q`=6Em<z|GEoX9J_PdGVL9f$0(Ai7)h=JY)m&PvTDY
z9U0=OPfWT!w?9hh!Sk(;f^_lVeIeVJ4XT%C1+pRPBz}MgWCQa?$OguKN2<vNMsh0b
z!m>tT$(w!Us%YEwxjN{x<`*9kNYmmz(wz;=uM|d>+=DM080j`)8yM*^VV9}DNFUi(
zZUt>iHXLZ47tPtF4b1Ss24=FMhkXwEWAR4teB=_*AP8SXST-;h;A@}YWM$X}=FN}|
z%t6dS*}X`=(t0U-7}>zQu5-xX`P?_DOExgly__zscfX})g<V)zQds)ZzH)16+u?r*
z_-nl>3j9L+OdFVdY+&XEHZX3zxf6Q$HP{XZHZZpn*Bs8Yfr(RJ*ycm}QrKncNz!}v
zl}pmL&L{HVIoW)4E|1jfO!F6AtLn<T%rv(3MLpZrb_{GjB0T$kRdxe`&i;YUfCIi*
zDcgb|{5)allhP}~w2%%Fc40k0Vd(<<$_=4y(V}%gi(T2ja7O}m5jUsih5CDIh$epx
z(PWm=S^G5~W!EyDcuV#$vV)P_GIlWd*DD^-@>;^;*RUOo%e#U+J!`%w!}jH5*>O|m
zqM+;r_<Ck6oq+zCXU5a$r)*(}ALndgh6wjyjTslz?ZfBVn_p?<(%#v>NFJyj*-D&1
zJ+97S0X{>O27ZGB|JWe?n7|)s(n}hKYL10$W+v(^JFuBKoV;j;%?x|`oPz?JnYM&w
zGqXQ%PG63xe~g9fV4U5?h58m4xO5~<_92Iw{(h^WyUy%@)iZ!Lf)8xWxzohdkxQDn
zx14rl)6x-NHZ8jUA#68tJG783i*Ut87urwIJq*T{WxtRui{90A?R^@0X8sR_`N=Nk
zlpOY=yRliprlnAIi0<oy=kN8Qy51-3o`pXhdKUgpkRE;(zUK4BmzSHf-`a-PgSuW*
zUC`<k`2lTS4$@Wz{tNh`r|e+lKZD;0|14si3EL0c2wjx_xXJ}Q_dCLwHc7m@pW_8<
z(rJuM_#9a_Ng8u!la$Yy&O{a~xkb1#+<4q5+yGq9*KD5pP#NHNr`p6WNA@~5K@(@M
z!~241dmWx%r0sQh4>{fUA5b>aUT57pYp?Ta$X;g#aE@NzSD9p!z0PmwpF2l9M?6hm
z-8!9VuQU4%p2^|L-=r@sxFO_)(*-Mg9np;W4)0leokv3UI<#->#vfFFGwgNd3b#Oq
zH2Y`5nf5xTihdz`os&&`XM3INRac-xAE$nL(lc7N*Qup%D{<AhZMeDgLvD5uS6bK=
zlNXK)c2WT2{BZsV@|+AU1mBkIb#zv^xAr=BvF3}1Te-f6>~&-ZBiXC|?#^E4FWgt^
z=7H>B+&ukLC|!0iO4mHau00L^SJGWs*}=4AuQQPG)qHzTu=wln6_*{1{I&Qo{I`Sn
zn!uMGjPhj%W1az>!QG442n-1BUW``p9JIKqZY=Y#C+}z+&imLNc5S_r^Xv0U@XPJD
zt@23McdUBzZZ`9^?gYUn|B}-C2nEpRc=*$=u4)*`ovodY(*7%2D?M}&aNW!1*Y~KH
zUq2$bFcnYe{p*`+y$ah#@3Q%+p0qQhW}(*DI^B2W+S%T9aSB_?x>l+q)Rw8A_FNmt
z<3jF?txJ^8Z`-9}ep~Qp=at-+p9`NJj7&-7foEcP{ZQmsC%&(CGxZgKo8I4GeY{P3
zZsdQV@N>8cPtl-zng$j>-8*dXW3El;&wDMr)6cq4SZdx`=XpAJ8Vp!HzkbV)_}&@s
zbI9h4OUcq{<AE!J9tT4Y(M#~VqDx{IbXniU(xr|$S){)4tv-!GOLS46dEXhG=gw3X
zv|K|OwbzlcR$mXIk9zmMNc|*i$J_R`C~tnf=-|df<Nh4wJ8CT0pNWQ98uzNIhLSdm
zQ-$cA?#@5#CJObOud6q<otLPJ`U%Da_+{WSBC#-aUB$;AOn?><aLBFVdue6!>-PsI
z(StGBlpYKCPk6N#epO9;qHzf0rti$%1#Y?EmPkB{UNp9Dc;bY5^apebeJAq7dfvCW
zlkd&xKAAiFnEmA#^G&aBgD3Bm=geo0X?%nOGS=Xr@e`fQ_>w+{bm5v`!S~(3Gq=Wv
z&nGl+H;<vK_}TH0@D^Wp1b4^VVVsL<>^NRc+4iC-I2M3kA$L2$(|0~ZTkX7ZPxqw`
zVZM&2`EhD|$z3VU(@1eu-Mo^MYIC2SSDRZqtJZ@~i5locUaV$*$}3}D*T8?JyhqI#
z9ss?BLw9iEU9435S_7Zz4s1`{XFN;RIkM>0Jr5dy2kJ^rQ7|ui!taBQTAUIu2oAjy
z+laHwyBLB`K#K`Accskt><rJ(OAT4gJm8*F(QYDnnrFhHwEV98MDnhD?j~l*pU}X(
zt)G~<E1$CY?dgM;oSBcF-KHnFw&$K>@n;O2v%yn+Q6IQ>(BRuCgl~roeCIJg9lpR7
z3eRwV%0l_@9Nj(3*lMdE-N9M9qnB*zhw{;}b0$EGrhd*$_fzSnTykcL`$9G)h$rb=
zKk!u_dMD<m1`r-VU!1(_oj1Q;eG;AnXj5~n2W=$9$H`|Kh9h4Of^N|Fwn^YMnK}*4
z4E^RoKlAM|!+Y(?6MZ9zi)s_}^%&}$Z2B?F@<w8Qy?7@ZJfLezJR@EaJylM4Tp!RC
z-960*4>M;q54hiX(}Z%y+SDo9%uU@)n&zt77H!qG>Qejd`!&(O5A~H9+@;Uxdu%f`
z-iAI!rO3lF<Y7e>-ys$6+Hp3tDs7^bTN^~D72JWQ`$&=TIYpW~!8&vhYY*#1dTof2
zFWihgNzSb0yNoH_XQj3!4_7kxG~RBkM+bdWzWRsl#V-4&?;kt<imHDq!&rHxv+`dI
z>M^vUp25UR;IQ$yiMTSH=JphPeG9H5I209Y{3g`N=EpbpqVXPl$&XVf5%)^5D=1r+
zS~-J$cb`+Ib>|4uId6J*IcbXbBi>j(mpf?3)G;{=o!)&0>B2*IWO&>e);?LmdyN{u
zn^XF}+kyLy(H(dOKFarWedfN_McKMj5A>@@Nk7R&hUg3-`t*-C#NZXxss5`D%?<78
zR0g?d>e7AkbT225@_(cM$~%^LBry-!$r+~!uS-1z95#wM!Z*^TVnYM44)<=PhjGu#
zz+G^{8QrFValcb{kbEo|O1T31AUUSFJp>=QPjYR8#rJH<e1k9huAJv-Q|;)E5z#0+
zqaERnj$Me&mg$G=xO6|I_SUbP``E^q`UUq2^`R@K`|uL+XsK{KtKkLY`jh18Tu*rX
z;bYHh+`%)U+CJFfozC|e=5PE)UU~hfL^(2pZ>@5-Ap4gOWos7Oa@TrEsg_`MKbl~<
zLt~GyuHMoRY|$R-#qK;^uV9TXse8O@bU!5bco$dIwK31@WJ}amJdooTztQj#=h)^>
zorJYP5s!E!Jktp79*poFdRL7R@1c)j4Ow2#evcJ(D}FJ4sa6}D(#Dfky`J~F@hfrb
z8f?1q!mcAQ9mx}H1$nb6?|g;j1V0fsf_i!aJ1A7wHp1DIT?=0cSNG0o68wZq*oE75
zb*kQd;U>^-tXOyB@E*6$*fq!DWp|hO4)4r{f3jcPT(mfK&xKkiX4G~r$>M%Do;8(M
zHFP|a`vb4JrMA^I3pTX!^6QRa3?(z#mgs&j?m924YF9mPaekh8&&ZDF(Hc)=Q#=??
zJx}c%jHmYCnPZrTgmkVM?MQDHr!Nk!ma*81lOJ}1uOUrv3d<jWE5f<5qKBS2{DJ-a
z0G{tEu4jVW*ZOjjxZW3>c>(v@by=_>LZ4adOrP7)XU<qQ86Kd2jt6*jwnrWiPW#F&
zr|k%LJxV^iyUVA)&fX81tNYy+F&`zz?OktGbzO)@OSG3ivq8@f#4oz1{u=u3)(hP;
ze<gA0FrL-`)s>`v($9IL@xx058`S>_b;!O<a(A@u`6le{8FkOvr~1h0#4KQ{8qN-t
z<^A7u*(ZbxFonQ;GlYxoTIb%3G;RgNPY%_g_kdmdtn;>gPxqYiy&8Da-E}J7yom#F
z=Qbh-oSRI#3x|EdhU2>n3w8o-6wbAgNk84K*&6zF2=(Vs(%OdN`NR(h`lmJX`Vf6F
z)hmo>?&)6ilDAS>B`0yG$C(XT$kKZ$GlaH#;@0AJhwJY0CNfIOcYYXl{RViAalf3l
zcCfb9?`S+i-{QVk-!RvExTW#>nO$b^9D;iW4{clf4{#SxNtXOg=kVUe^_-7zPx_e+
zs%IAYhbzpQ!u*T!p4}$#W0qG{_X=?BOy0b<q~#~LE1mns3!l$O*LM{7-caFF8R@!P
zeFf>iCp|`6q9r!tIkj`pr@#r>)}Zrs@$K4@;q|f;iIh%gM%&H-ZO>?dwyU7Ab730o
zDlFJ#!MMl|JC#`&)Tgju!}Tcc&X;;4$8^4Pv-%aBEgeQ0a(<KUj1~QQz(eNlo*>?x
z_%y)>@ovP?`_WfsnS0!?CA`DKUcQufNmwuZJjQekW19cE8PgeUZm#v)Fs2>a)Sjs|
zB6w!4v6YUbdy;vd*VNaZx^>^UaFZPN!0ioiiy(8d0=~_GuG!R+j~~Zxt#PJKzW-OK
zae9a6-w~d}aAt;_nOXlY%4>|o`-cT%f?lynd>(dTnkg)P-B)fMZEKEj2mTS0uV0+H
zcc#utcxG1;ulG7&2VYv%Fr&>}=z7P74*Ad(I%+)Fchwz0zt<wWA|YLb{nV!QXx(AA
zg?QM7^ZwJ}@qfiGh(668w>Z^-^Ng$#pB4JdhA87Jo;(=7(0kVG=^Fg~+B7h9d=sKg
z!&JuF&Clb2%?j2Mc#`i3HLWG>p+~Dg&$t5mETlb+@sbQ*X%k74?t`9x9QR3WinBhV
zBh_`K{#FUA$3$p9PFT;&IeyO3dofy{eglr~F61u6?+@ZeA1bM8r!z(#?ZE5n*!v=f
z6Fj5i+(~zn=W`x**BADV@u#WN$-Wq2A9$a>YyXa|Qla)o+MDR^9<7<@(YNDGpDnJR
zp_e#X3<_wWvwU!iK+mkMUR4xZyTVy2&waaYUL3X;^I|J4?<+T#ftQ@&?l&VZq<f5^
z585A<;7d>8IaYd2?=3!I9%Pk5>x}z^wSNe&dGj{2SNIBU)rYp6{IFA950EBaLN_*Y
zQF^qIi|Ela+T3F0BJ=k^aF%>M96geI_BX99b@SKWHT<z;ScbgH#8qwWE4PHUgLSwe
zs&UBBDG&K8<HbCVAfI%1kM6`@kFPuN^-VY3L9Fi(y-zr-i=MNQZ?cvwM)pUHJYe1#
zd7%69*8r>g@K<j~-Y4uDeXPd5SaWoo-n%c<y9^Oe^9+41m}ktL+uERWBsddF--(Zo
z5c8_qu;<TtQuy#|b~nDhL&dp^_OIrf+r?FN*jUnT^Zn}z^hxtB4DD*J9uEKc;=f?O
zlevGL`gfl3vZr5$@8Ku5uouB8ts`k=pP&=sPrz0F!=@`Q?ADULHh?W5Zv^F?udtlp
zyW?WOZNzQExjL3pex>TrSq`|my-Sk$AzZ@Fm2tl6+*hth{R#H3>=DxYSMyDB&Pv?=
zb^X`azb*~-uaegqPwij*(p~RgGskc><L8{Cnen$a(ch&zxGKsl!^saj!IcN~DJ=M{
zxOG9A;^F=4Q5pN!BlmLus{T11cwsMiKsfCyH<h;C{?&~8@FzBQdRuy*-M`+>d<^ej
zyAqc!DcvGhdq!l^m)XCrf4lkqwMKgs)?e)dMz9CaUNUq4%6F?;+`sb9MY?RYa7ldm
z{p+_vb!h);+Lyd*VgEYlQ_igdx0LzsTu;(mIP42H9N%47upM#PIM+r?``3lg@5}68
zCxz%+&D@J>?(Jg#x{W!t9yjqz;GNm0?vz)W^TYXN|NZ6muQP=^Yx=JCud~VjkL+Iq
z9MG@Zt^Lm8{FAhX2J%cYzl+{+2(3}!Gr3<&&qCIO*QN2$*EuJ<cIOLr1WqvW!%k`Q
z{%Pw|Sg_%`6nA^qKEdAg7I1QV*PboxUB9n<`mDLFz3X>FaqV4iP@kA<9SL7Y*p1Qe
zgS{x<2->8w+KXzh;P#^X)0WPGbpExcz34`CYwblp2==1ysh!YXRDA4oZghlA;@PkZ
z^PR%ty?x~-(YE%YoT(hKXfO7n7l!tto#?mrqS26Ep}lC?XY?oJZXz6Z;k^HJcs;mi
zFIv5uy=V#@*X>0S8D=lanM$+0sP>;)7pB7t+Kah$A-or5|GFu$&B~l)hOcqo0xoVZ
zdL^*oy{Pt|(n+)z)xK1F(Z6VJ2Yb;K;K+W@%meL3_0EmrnR`*~EnC`)-WTjeS5c>%
zBif5fcDTLh-J!i`74>WV(O&d4v*&Eui#l4I6wo4bFFK6$3d;NCO}fXxz0f_DBRlq$
zE2r%py8Ez%Z-afIv&=cQ_qel6_ILIylk=G#ZEM-D7P|e<S@ct7{-HfQa!C5eXwi=S
z&l&jI!`{a}#OW2iweB&0cD08MuX`o`Lihg)uHtiBPJY;_t}@d0W)JI!_OQISVD_+f
z-Z$-G!!l0cOkCC0zH*aj+wEZ^8i!yH>-5Tgf3y2m?O(NT)&AA(Tk8mG-|Aqm{%F_x
z*0+JxzV(gJzO}E$yIAwt?pyU9^q1YY)(D@BeJd1hXzO{8PsiVnXaAA?%>9@56=U}>
z%=7A_Lu>2Gb8G9m;aB1N-qR^B`Ly=w4f<}DM_jfX3b)C&b?KbTd@GDN=f?LHcdM!^
zKAQTtJ5qJd>|I+oE2#Gugnt>-9Z_8gTYogDqxc2Ns{FB(=dOQO$Glawb*d+Nyv6SU
z;;O3~ap4(NT{Ykt)W_c4;I!ow_UPqykM89yN=2&p&L4aCo)y?yl*yKmZ@No{Vek2#
zWTF434Y^OxsTG~tDLwg9Y(w;patYtS#a0{`ecM;x&Gt&?)q2H0P5H^$JZrxhf8F{x
z_7`6AxzskTd9<gtWH(^=fbT_>^}8cA#lORRH=X<cc;tZ{Qm75iC|>rGi&EIt)Z070
z=a@6WC}$PCZ^E4#b5oo{GOlLa9`~U+<M_D7BG>co^9OP7D1DFis;WD2U{zgL{MNlr
zsLvUEV*MkDr|YVdPn++bReMh}wr)(Fzc{6FoZ5<Y20KqZmrp*knENy5Z}d3d@Dkj;
zom{sel6-E1kM2@%z!=?eSeS<$l*vOrE4`d`r!}<my-(oZl7=F$MBk>)iTHX(TB18+
zbHp>|`670Xv8v(qv5Km?^MAxQq)KT=&r+&+o=kn(mz`+%^~?rrF<)MaonTgSM(v70
zZ>EZ{mB3!6olje>yff>t&np!CsN_qjX=7hVm5*MWb$v-=hpCUgkg6_O$@Awq^?vTz
zd{g(<`UrL|vC>=W2U9jy@;E$weFJtQ*f~};jH-Ugz^mM}qh3hq`$<_I_dc#=tmqGC
zqK|jShB88%`i_?Dl&<F+#wWF(Rr?HQwqBh5<kO2&os(Jh<^IfC*;RUe<pwNv>N@0A
zwHuZ9Qa;Zs3U%(cwq|i^Mi;$nQweR_)fJLoguSC+MkQX#dav^>hTqh_cx7tz1#{m`
z419T3^0@GgmRwvvs^q2ARB)|Mu9S`CCZ&6cT0@KK#L7DLL;ZO|dDsfc)?0R9Q@YGf
zl|4N>1rOzn%Uhfp#~Ii-?2<;cnVl-Zjl+!xW&*AhH?iOB)Fj+wToTwMu*|i(A&J?k
z;^b^=E5MkR(ZN69^lNOi{?7jazrhWjXTuvoWKeORzlz`B<2s-DdC0qsANpQd!#BL=
z@)LQB^Es!({%>*qsFK<Fac_3V0m<3<@Nzq^_~v~0DmtiK_C!rT**|uNm$474D=x#9
ztMsna$dbEKqp+7Msl6*Tt_Itta>gjHs%|d4-a3K2NaC;^%PpCo$}6_^jvcXela0)M
zpEiEj9eWztCfZgk?&A><t{*Egh|288=6C+j>c`ZKeq=*;Bah(mf@D>@Taq>T+0Zik
zVSh$-wKrS6+f`V3%tKE@E`MC$vqv}a?SVg@Oy%dHq*hlyP(Bd_^8W0H%O@do<S#^U
z$R7Y72yQk)t-5+?c`dXReEESkJ(*|yNeF4vUVH0T!vTtS?_mAafj=H0uk=9(75UEv
z{`!M#d=ZjE=^F!oNGBW5M(8NLBJd|*Xr}o3z@OL6#>e-xei6!<@)LcnUwNeUd-n_C
zM+N=>>yJCu`nAVdf89{)Pr@Kx^{i$Al|P}_`X$4yziou|=YGTb*{54S_lzLD#QGh_
z1aSsL^-Mj}`pIuuf5o|hf4=oce%t!hrPd#Gf%SV|X#LrNUlI6Q1Aoy(n?K|d>#w_%
z#`yJ~#Qq)sCVWWlEyb^{eyDuhWfpD;e)WAl%12#p{jK=Iv*#7oe-7X9$CWm|9>4kl
zzkKU8_z(HzwKMS_jFgZ1q0L`Z5tLtG{gOMZKjC5PFMZVdgO*u;{Nq9X8tVB?Zh8B)
zs_%gEt$)Uc-?se)WM;?8yT51slEA+y@R#BX-$@@?KLMjFp7#ai!EYnJ;zM>=e`Mf4
zK&sN02mW(`-`@9WKf8PizVgche_r6P3-X6VY(5~n{Wb347Zi>$@8{r{h4$CjIGvJm
z`h7Be#}_6r-Td=+AWBGMW54bErAsKq{Csa))K!$>7xOX!&)=zf`nWF|5A=4tuZVs-
z-si6|%4(tC;)D2mZCFqZm^Dt1nE!NrB(<{W3hx~zC<ybrsd4&|UMa8!&BjJ%sYl(!
z7o(wm@w|f7QI8$g9L29x{Cq6GyxQM@-4`DT-q7E|zoIzslz(yP+Z|tgN<s6heILSn
z@v(`U{HAzuQ`|I7Ydil8#?$xrnC9kpdyg$U9-6#=qH_jlqX1i~AOlWOQDB()pYDD1
zt|3f`U(#>p{TCvfJg?Y$sr*xun(apnwVMC&=rR3^QqwTS_-6~+Xu^$+?|*w;=hqHw
z?7YsPSv*SB+MgW}7lVHZ@{KnyJu;1*L*d3&W_&U`+f>~2LhXlt!}gHR64Cru3V$@?
z?{ey$PL*<v0jz?-&+xA$wo6i*N~zfc|K1p2ylej5(FlkAp@ZN;{Hv+g2(^PB{L2&G
zp^Z_VP3rea<FG>-Ujx;@Ef&8%|K{Rj%d205A=X>|eRIyS-uX4q_HUMdKY0qp_USbI
zE1&%6*qZ8RiEp<2`|OKD%e`{tTYi1^{h_6v$#04mH^m#DeGPcUGk=zU8(Tq2Lomy~
zjf1~EEX}Ra#%R?umVb9NzJK6TI~s@Wh-B8YbG)&$fU0mi8jlb0Oy^6Qc&YI_2Sp1z
z6&-wt=XFkW>DsM(kGwYFn%cHIw0$`4d5577?E2^byMJgMO}{Tuxt7Yk`bDC#taz(z
zj39FM%iaHg12g;YW%NJ)e^~$bib#6^(mE@b{^heFK@ZLR<>%$LD>@{)zhSjbg>4Q>
z|2njd9I)SkMIFtrLkqw5MX{m|yU8!=UQ|?+{WX7Cd-%mOey#LNcM`?oKlIzFp?ySe
zNWPc94oz?!iVBMuO8r_GXC>__-GQg`_lDdP+2@SMmEg9)lOym4;m#a)a-V)jb2iG<
zPijsxkY%LHm9QsLJdeFi6%weNJxwigQLYAgp!kU+hL0PL?w{%3aPhU*U3T?V-o;m4
zboIo`uDVn>UN_}}t0rDB`Rc1K_Pl8qU*}zQwNk(Suf=)C{w?$Ozw<7WB3~_T7TxgV
z)4baU^lq9=dkXEldH2;Q+`QD+=kJ35U00fubhoju&)@$Zdhdy=oAUP^f7|tA)JY<!
z4WEz>4^rCLKEubJ_>FHU{~Ke^=rd^0z+?OLQ|#;ic2fTTcm4nRMBPmdU!UIp@63zc
zka4fGT9iZkU_a3$XZ94@cXDX2iMkuWuTSs)<?r2)cc-it^_qRa-#a1pKQ!U%)BE4U
z-~U6&yHmHqTO^bDrS+44554y!wVU$)@0Q>Hr||dJJbugG!|_{I#_?PHtDL{B;`wRJ
zFlEfI!N$Npj0fdwY>GFIhl2V=Vp*46HN}hGLpZkP82!gu)n?)O+27w^u`Iq>;6;l#
z5Xzc-w#^?AC(@d~?0DHMlHwISw~b$Gp6$d((@Ok0g=1dyF=b5QahcaDFMh*|g1wt^
z@$V?;#ruIxe5%5+_>fkFrzxBrzgIBdJ)Ur`mmPZrzqKOK$%4O;=eJ(;Odj3DzrT@S
z)>IC*M#XP_j2^`=0onL1pQ>~5e+XnwE^B^Xe4J{Z%V#XSj`3a!|KJ?LMe*YV|D)>&
zC*nU-dc}Og-Qx#yI2K><JHkEV&v5n;|EXYl$4^xwx2v9H{5>`Dv%e4?5a*e$7r(29
z+(Ge=AYc6M1E_gOya#lP-#eOcar~dqGk$*$AV<W{QV$<cr$)vniee8c{0%SqsTwX<
zMcJ_z_|FmidII~IKhbAD^Y<}nz-+>6ttZdfF(v1U3R$4Ezy6{c%|g~&lU(GId3iv!
zsuvlxQj4HWwg{AwZCVCqu!9j%nqbKJwsM4s$k;4rnk(~gvz+~e$$m<s^c&{?CqxeT
zQ*$WOWu*Z%%ltnfs0f6$t%w|!FeXj#fM%1Q9TRD@V={I=;HVY~n6#700O(j#U>N_g
zNUJujl*G4|yw*y|j<x6iz>;{De<Ojsr)V-B_eFd!Z>R>emB|<dqz0?aF<GQ#`)32(
z=D#!(4)%X$>RHUcq4A>x_A`G5;kL1MgJGC5->)u#)!TEl>iG|w2IALHqyLDKN9Ava
zBmKuk{84^>4EFK=ph$_IpR33UMaKF0-57cQ2}Q>H`F#|5QjrOM{xOO?rAVotzW_A-
z8bv1h`No>&X+<Xa`NLG(Gm1?1z1&jTmNTr?C<!s0{0^~J@o!Q?!7(7^6<ke^{DO64
zL<%m4CeebAX)9K63+QJR{757#Sj2y;f>+7SE?B|jZC!9a@HquKP1vvCEv9X5L02Zr
z{snQGKA_;&gbytEIZfvkTtlfg1?N$!ZNZ7u)2`qpT5MmiKlIHn=t#Ij!GlP<f`U`2
zvtz+als%~6pX3%6d>c$U6`VyqMFpop=YtFKfjp$(UQ#+2OriBe!8Tg#Qg9?4>RRv?
zDcuTw3ru&fW6VF!zfS!;k{Rk1oJ31CenAOdtzU31-WK0Gs57urTlw$DUIa34xQ3}V
zCIRXdo<Wvh7n@I{%rERu^L~9yLqEkYyh_8-U<yt33s0hR{`%OTsA6i=%N6S>9FRR%
z+$<4e<H0-!y&q>C25kzqz_il~+R|aK;AjZs7xVz(NWs4dM++i^V+A*nnN{$GM2*)e
zPt7gvL6Sd;3W^NVEfxb8m62f>vr|$)Mt1oc0Sk1$1G?V=ErWKE^Gr<-IiSdS7HG<~
zWC@I-6TQg!3Ld<?6$Q>WlC0DD4144eQ~1Brg&%1u{76&bM@`{7)Y_whJ*0pEj69~Y
zOg(v>BTzJQuy3k6msS$$6$z>@Q6^*#_Eih%U~`BGcQNQ3;tQXyZ5SZl@V$bvar@+>
z+hty)tEtg5W1uWU{VcDwn&_-2v3_>Mw7H0c#H7m<*LWo+U+sckr|IgcCDU7g8Cvc&
zneKp%0x})UnApN!o=ly84R1OE-9$xSl|U-HGl2|2I&GH}upNCejqBd>!^M;cIvQs%
zzj8-Ke%H~9spzYARAqP3(azt7WBg@NGxEQ6ZIF=WHo`ADZVSTQF1-E{&;M;y@ZFeb
zzl&<IvaIz2X@<4nDw#j}HMZ`0)y<M%qh9Cr%yNIV%{!j~HGLzYsomE@?Y?2cUFI<D
z{WqiH@-DxI75z0f{8J>Q|CSAFCiriga5vgpYntdjoaX&^qN1qRxrd6rlV$q6nzp-K
zE|K<5mckZ~ceDPibS-xNpADdydH%YrCR+T(gw4$J-^&tC-L;bXwOLwXdvv?l^Sj2?
zhGzELRM%R4%Z_20@3o!*$f57SC;qR^toM(A;Y1%BO&ALQ+9&~s#r*qY1(#B`+%I4;
z^UCuIj)QvT<%o`+YbfV`&o)EtH0D=oNjluf!tbd`{f=Omz9-!M(O%E<)ZJMsBluBD
ztz4KcGfQQ<ka##{W~s~xIIrhPS-{<@QsZzFaDL^>=~B0<)I}t!)U7Ht8|U@Bn`D21
zN>$@*Te6k3_$^SWd&p3!1uFFd&g;pG!JdDIO39?wwsmy6)Ez3dfee+pL#47w@Omah
z&wEr#2Dr=d{mRSJrS4Iw!*Qa;Jt_q)dYuYOMfw@pD0UqumaRMqe(G(+Za*V-Z=zIh
zBYOK8aeEO^<RgCjn|NnNvyTzM{f!8Int0#Y0KH4=NBW~9-{HR`ay_ZN$=VX6PD!Uu
zBsET>f^ABzAhl?x)D@)m4^q?hCTmG;){@uxWOzQZ+Abt>C}73M>d->6+F(yQJ$c=P
z?LzXp>4n$%CldG7wgzb<wub6Z4b`C<9uC#;u&trj?_rS07E^<apkrX^SFUCuu;krh
zs``{vOWrM}iU)zT<hAiDvmAN<ZmRtO@qQYkN&@;tw)qRFv;TKV^O=MFuOd*az=Z^+
zC~y{mZ3K=ICDst=sd8`m{Z|kl-wKFo0yikIgup@t77?f=z_4|s#II<g`2dY1^@+^X
zq}po+=k=-=mrXIENH*ZT4VPU8buAgD7_rwH_O)b~V#M8a#m(5*_-Di|mtAkfTR!94
zcO{9%RMf1&zFSE>D>F5jpg=P?uU9L&7<s@TCZqH!7~QXw*40N6GswA~phffngXm8b
zH`C!kgXqgPA11Q#W07zJ%yf9jAR1ZV4J?L=M^Eu051Y2m2BPmM{{EGTWZ$WzwgG`=
zh$fei+APKMdL0b1kw=aAl<Hq%a9>POi|eCiC-W}~T3jDByUafVX^Fbb#C89<CF-)6
zWcYQ&yFbDhMSg4YkJ&~6@jk6*ed3Sq2F#!WDvf+(T9)bl1k-YRr0TIoXnbT^_Dha6
zH2TQY<Bui}3jNK-##s9N&9v!{wJmNjdB=$(Wzg1b%GFnR5#KC7bhj(BByy;U={*5E
zR8P>T?e3vjl5dMa$9DHnvphYaxM}z>6F-WQw!4R!C2KVC!G|-AB8QuruO{AiA}qa-
ziklI<ZzZYsWu_+e3P>|Juh%QI89CQfrxzKj>55<3f%ow&qURb!AEqIT=(z^54;43v
z+IV~F9nf9lFu@?|kM(-}1g?(UVJg;}5rd2{`F*<LJ50s>DQGLc!&H2kDteeH8ChgX
z`eO!2Y!K7V-5=XA7P&KPE|nCV0~>n<Kc-E;;BfLH-e4&JWKSl00bLoqj%FkOW$GD7
zaIl#ql_oxpxYz4AL{}tXmVLdnvDx%JM#%O(5!WCs1k|FKh`$KLL3R+~jxHwt7;&%H
zdFuRGrmAtUgJrTa(p8;hs(KsHKA))3vrN%EFzvIgDL$RJ*9+%GZZ}ow)e&tM{mP~3
zs%|$`)u^bc>UL9A9q|G0Yb@_Daes`h*v1Md?e*#lQ6j%I73*D;2Ta9(Pgnd)Q}MZq
zo2l?iQ_)SthnOjLkFA(x_}fDHNfXt}EOSjoz3H~4+moiEJJS_e$UhMGhHli@z8crN
zFSVxF_b6s3;;W{ZUt(K-%~UV!>{MKBTOV_5+11yv{>61h1Dg$9$&B|;@bwbSJX7Hg
zhX<(|zaGQ~Y!aWGXx1Ztbe}HJiI_(7WHmqK>JrZ%;p;%hA3LCnY8+v5k%dQ3VMlec
zFP-@&U<Vh&*8V9b_fF#8(C!e!KhxLSI|(CN7Bgt3N2Ce?zr;3wR?z$a)BIVc3V)1k
z{A^!`L$2|&eVr1y#?SF}SoB7^@o$-u$I;61KJ(C@<`2TE?zoZsO#-2#uk!p!zD`gt
z1_T79|M(C3daY;~alf)1V`fH5sUUa{a2CafnxXhmGZcT*j6T0Hd0Hz<sq<)b;Ya*Z
zDDi@A^942Zg0EMYN=%#ArQ3YLw7DhS=8MhRe6d-ZE1QvJr6Y?s^h)G}zrok5QR7Vg
zZ>H<tVCru}-1cc>v-&qStN*Xf`t(=VCvWIT)(n4gM6X<}GJ`r7hP5=C91+d>r|X{_
z(Msfxw!=C(BCc}7Iyqu_s*m9*n>Ut{mWyosQsM)rQfTnmhzA<&LHHRGkDh#Wf5k=C
zw`|-+w<@Y#zs)@X<QV9OkW~Ja5xpN~rzBUH1xR0MkiMC?CCZfn(sn9bX^_5`T+5AD
zM#9{9WhCH6Z|Dq!u0J)RH_t3t7Q^+HEK^Mj&!t<K+Kenyn~`N|GqTvc6eTTLZ2X_Z
z2QE*OWvU^|IGVF$nQF*#sf`OKQRx;%MHU-fLlm<7O8h@9qSxdsS$t-KMS7Y+x`4PP
z%d}=>nP!mI<g#R$){HFE(q!q?Lqg4NOV-oMQcdN`6|NO>#4%?n9@>^13h#mi>qxLI
zf!C~_VYemz*kRj1{~C%hr6b4qy@^c*$m>^zG#j7b;E!q}!~8{n^q)uCo#ghPLEv$L
z9VM{pE<8aHSgCJ7-gO|`1mbm$LN>SU*g-vCe%moeH3Zv^V*2#uw;f3)bFl50*A331
zLcj7G;AaMj9Fgy^B1b;E%~-9tA)k%k0Z&@;*=>hE){v=tcb<Hx|DXC#ft;biIfn#f
znnu7<a|DxalE8NOA2_f(9N4o0J4)kObttc03T&I-|L?>%3nWD#pJDI+4uRtpc!j_%
z1d2t`)rVQWWBW4vDC+jd4nIuZnBkq|O&ETlJW0u3^{hO>#zQY}K4<u7bD9u#<M9L)
zTRyTIjY|@a5H|iMaZ3oh@dya9l?tnc`n2du@qqZ{rY;1;FO>u=zqCIBj0H9;YCs-$
zARh?C>-B|3+ipShUTI8otMZ48MR*HxU{`|@2cdQgvQY8R7UUh9pWcFWWYn#mYquch
z5g)h>ESmNp50YdUdOfXnq*eAN2Eq9Zu<66y1cc!)vdOd?4ZZQI(*VEnNVvmtlig@M
z2C&7*ZZvLY{4F=xjmB%l!yAo0419Q_VR&m0)hC6@A7Y)T-|`lK2AvcE@0f8%!Uc@4
z+m8S}=mNxaupiN@xZ)?j@>wddYS7o)j~K+3QSC?}_G#<^>ODbYeS*f>J8n&~#qG-5
z2=-vRqSu1UDC}2W0e4%X+3m{nhdH9z?Mgpb$`Z|PSDqklInQoa{ITK9iWu-jRZjQ4
zQ>a=}tyh+$+98MYXGV7g`K7|Vf0iNV<>VN0&J~E)YcZV&b}N-fkzi=IA&sZqt^5vH
zJGgdtvR(1eZlw?&Z@ybGZN~=i97JtjVB0<kFw^$M1ZaC$E_rrCQwivDW`bY&x@M!<
zN7@a|&A{5W?S^KB+S=2G<{T>7&4y;E+JH{s4b5uBLmQfpiJP%68OWCg)r+dEYRVZZ
zp47+ngn%XV)Isz>VC%Ami#;OOM23q)e2(vW>1Z|B7wKj2d4|eG3D;A*FS?bwY)|dJ
z=u^cFmF>Q00kgyF^`|&h*?p1TC*Mw!e&xgIs_ee#5kSNHqAd6~yf3<fxanN=V5F0<
zo*ti19j0@yk!gmhfq?DYI>5FG?3}m(`OJY7!2KY#>_GDD4ofe$&m+yR%<1C#XLncw
zfer7l&LY0+9o7`p+^em6Yj;?BTV5-QUwLi1V!Ok-4^T@uyTf{$c=H{WVaF*{pvR1n
zU)fG<1<X!juh*C?(t{1yFxP<x)9u&|SX<_jZO1~6BJK@+WPggj8lO<i#hj+!UAj8S
z)6xd)atiHk16C|0V=0y8QCVb-MfK+tGDGr+n)G_<$Scr~bXkDakJizyojF!NdL3Ac
zu06KByT8d#>qmDo-!t?hohdA!nkM~dgM@-%mFH+k4^7dJmIGq=AfIV#@ES<KvP#j3
zNIQWA`q7yV<T`<PopXKif@9f3x;gFU%N)xtpc<zim8NU>GRLy*r54y@S>3TvVFb@*
zTEUFqvHH<3z}J$`>O-d?2kdmT@jnx9K|iWE3GGDv|I~jU<P4dPJvt!MIRq><A2`_#
z8~Rb4h7H(v9M~@fc9h05cO>&uwV@xip}JK9$s+Kn0{;Z!kYfmZMBowv#iA(2C`K=r
zel(Ui`q3%!#ta`UZ^G~+<&^-~>y>P(wg<DiWTHGuMrE#Dx=}W)esn(-TS8cUXfTq_
z62iu>A>M+1)csVB`l%58Xrt@lYk(Sl`Ivy^m*Uf4bq2ucNBbim4al(sK=C|D0IMJA
z{tK%gJtS?y2y2^jA+UDrtbVjX@sNJh8%b$VwnwyA5D)7|)x-x50*fa7$V22Av9X#~
z#|yzgKdL3eAh?x)FuY9|TKz~jb6EZ8j6)qpRzJ!f;xMxM(OSigaJTwVSHxymKPo4_
zlYZ2l>dS=6A7X>4-!RPs02*`#A>O=WiWyf;im-mPUCWU@uboS_)sGse;NPYnRZ;C+
zA@*r(74?Soqngnz>PHuAMYPAcy1vBfM?W~s5zXpH9TCNL7_ELZTX91)s~_bRJI-rK
zKRSin6IFR0gt?TeoAje=$g-oml>91T9_U9;kYmXCXMuRVR#7<6kLHepp-J;ATcLSb
zcC-3X4x-WGY4xKs6c6b~R}ybQKiWuzQhJ<z^aH?5+xHWo?J2Fvv-**)bg}x;-_vbd
z{pgQs%dooDk0K|~)}HjEX;iWs{pdWhuRXE3e$-(^bNy%_akDP;K8st#)r+dE)s!<#
z`2#X-PY75-k2?nyLSSkADB7eST`3N==f=9U#_C5ytd@x!vii|$)Ma~W^`pT^T1#cC
zAN`5A*Q>P{%j!qE_r^0K?e%n3RzKPXXjnfw?PTHxJA01&B5~8Xd1!BWS=2Z^{vdUj
z&h<Ja=-e;@wsR{08zitmKN{;mt`msYYm#&Xs~@d6->DZz9AWUMe^x(Q0Bl%4dW86{
z^`q6Qxz`Oo6<hsCxB6K9=*Q`bt$q|A=?G`_qyEHO(2vGZ!FY8d(2q(0bNbPoR-{|4
zr@GWGFMj1K>2|DsbXB??3%QiIH*_0+=tsI_Xe&X#a(FK%d0NtsYALiw{b)9oX;wS^
zsQovBA?Zl~vb+Jk{r@u0+H|SWc+>7LXt(!u{gm+{38w(s`#KH;ZFC;d;|2hXVCMK0
zu%8=yiRVZ^`Xay<o9N$614DPjY2d-AZc55Em3LvgU_=6`I$h~_YCv=1YVBCXB@+CH
zO#E9WpObguI(fg5_%ZXSPN)7y`eUP?_+yXs$KZ`Yl;e%&5qehCV;tz;WE2?xcJl<T
zf-(~g3Zp=w&%sQwAg7Wly<Xqd61>$squC1R5^(b?-*MQIBW(X=u#s`qR`b-Th(&p@
zs*3!#DS0RHVN>CahbYL|bR^$A^tfykEexw7{e>X?3j_Xw(npNA2tx|eM@$7j1-xGK
zTc?rHWl|QIbNU3N3y>*b!L{?;A~T417@1p$538Zk!4woSw$c5+DP*>geg^5?(nxwE
z23_LXe|P_M`?|!c$`S)`Gju`wCsR?l{Y#05+pi%$EE@*+L$mfzVR80`4I=%ujP}=F
z>e~M(2kLJz<F<~(5=!`$L;D8plcT{Xr=s2%Y1rqXcM}_Y4ZZUJ5fh|x^>pA9Q_C~N
zlAEb2U=mr_oCs8F89eslwn5MT+yLs1F5BD#>E=E+&D93YeQqDk0%V)pZkkiBn)|}k
z(v{rg5UNTy*XuKe)Q_2A*Zp4_X20^_BVCtbhQFkhs7o=!T^FR=h-axw%2gY!Of55s
z^_@pm?Wn}HbJ8Lb3=f@rPcAL=&C(@f517V&m2RxBX{?G0`k3caN1A7+PbzL65gloo
zUq`&Rc|w)U(y{#K#O*VxWL9u6Zz<5<VAl}^W?%`!DijA~4Wq=-BthOAG}nG>kk(aa
zR72MzNm`SsJUK6tauu*co^3^Zc~)EUvZA$6>}bx^YfQ;skblY)ic2iYOy&j(<*KBh
zotdI)?RhHP8yzVY(T!?LO>^&)VT_4vhP182r42+!s*25uO6u6Cl%bKbt%{zea?u4_
zzCW_ei;mK>xafk--~YyCUi9=Hlp6tH-?cRIFkq5K3)X)hX#{Q>kOk|A$e!oO$oF`t
zcByx2_T?7;R}J{+tf;QB5X=-h*ON?*Q4qI=avuX}Iyc?xDXSxkzHW%K{rX+MX8k%F
zghKtArD#*XezUjz`m_2~P9wKc{a*B|I_THE20Wu*t26p_nyh$rx7`3UGM`YU|1l)}
zjYfx`AdVP4unf;69ypeO5|1a~d8f&MSNGvnnzH@+lRJT=3FHpHlz>0_xKgqanl|G%
zO&OGyWv_10vjX*3Dm{awzp9aW1X_(Fa0h|W3jBh=)dc!hPxid;1I(a??5;MFx-c^}
z+5XB5IPWx>3Qr>WCWCW>T78M6`BXjpeFFaI6Q0BywMpSI!)109|6Kozy`D!<Ci1>`
zO}G7N1L#+NG9Vc9$opdQ_o>H>dE|ZZ@|mc>X3QhCijF|-Jl$B?)ar5Jg+xahi;;R&
z8d)&$o5$thHwbnunf-+A!mH6;@FUs&vqyoh(7W$!0z&sq1%zH9`hw}n7y<(Ye}=kn
zBe7G~m%+>daTZLlEM1~%m<}Z>Z04^wTCJ4=TcxBeNqS})`<1FzW2+Sqd;xl~X{?yQ
zK!Kaa<`O$)?KOMVSl<D3>tvc}K8~fNPS`1RHmTR{l)6QP2~su5t+gIz<lfJBN=0ON
z%XUglg6qpW)jNsQ+RW7CLQ<RI>UI9hfzateYl5v4SNqWGLGw7#nteZL9v+geryM41
zt@R!<j~KfT&!d8eO$B2v#nS5Y$e8P{p3L*7h}U@*f-^GR7i0K8PFFtNJO;CsPd87h
zZRO=AY%4D}&$_+N_aGr72UzqDJKCXlKnT49Lg?ABt>M5BdTlLw2Cs^UL33VY><%#M
z2FATiuGhm@>qd%AtcNnjyPyoBF0@c|rPqvXkZNPJTwRs984CE7mvJg#wV5_X5nTo&
zS#73`Q9NH{Q)CoTN@{K_Wj|sM9@-jfwcARWE1HRw*Rtgl_jZZC%JE45o}l?8nf;3h
zw7Y;n9)UB_Df`C=+=*x!DEKo55PR%m><Eep<b8+0DFim(K)o8-dDmN0#K;SgA9J$Q
z|7OyTy@bFt0#_<<C4mM7E+BC3rBVl`@w^h?W=zv}8L2~eN?k|l*qu_dzw3FI1*vJX
z(Y^ynot~MRTtli_O2c{mBw&l_L827|SrO4^kBu089qf!?{a68s+WpZ>jPM;q;FO8e
z>9r9TV<S_kR7)r+V#4*`Vb7@QK8>7vEM;CK?E)441A*HV_zi(a75F8A7YPg${26Z&
z+d^#I`vf-6Ah3Zz@0px-3_%o+qk)n^z<ok0D>_PPDaF1}QX@(8Ng6hnl+{Yfg_*Nh
zvxY4t<(En+AmyK=oU)|cnf{H9Obc)iB!ky?D;;|ja3?Cd1N>}LJh_T^8h9MI)i!1J
zolAU6Q#`qXcp7-k_aGt!aW%)j&-*5!_yFR4Lh+@<hlb+I!0hy<cydYz6YtFJ43P&!
zF<#`!$U^|0us>bz-;cinmeBq^2pplnK?F`CaGZlbqlA<xq>LI$AS*g3hf2ItCo`m4
z{8pMq?Ks0c5wGuDa^5qk;q`SHsatnST}NsT^Q<|GuZBqyL28;E`({r?gWM@~0I8#P
zO3l8J#c`*42a!5;r_@QL{&1(%K@7-}o$8%P>f@QI$qG`NPaUuCWCY3jOvqD{*IDk`
zVRF(`^S!>y$!R}0lM-7<Jz}TSqA3jJPN}7&o)x5~sg|rJwK;B`p3Z^`W|?*2Uf}Jk
zDzl_~6qzHnSuZlcq_X79R?xopG+PRX*ZKFbQe=S<zy3x_+a+s(k-BzOSzsirT~%z@
zt_eRjlGf|hF+vTiObxo@*zD>nk00g)_$pIX6%1zu_$pIf%~ei-+xUFQYX$f#rrJIb
z3L86?iq}ldFVpRQ>RrvvI2bo_N^HNO@b{ld``PsbUL(+;z_SFp!iW8TM_>_wzT4-b
z!f+zeoGYKZ)$@KEq)Mt;ZD9+kt9DB5cpG1b*eP{9soOH^P0l8@Sxa6&EoV#S0W8Ef
zMDGydcaqkfiP8T@1g=qFHi0J<m_}d}^WZEA?9G(xnN7LdjI6F9-N@?C6p*a$JB@%8
z<p~6i**HHftDBv^ln^Un!26cY_Phr{pc#sNdqUP{cS<cG^_|SrvnxrJ`Tu7o$DQs3
zhSjH*-ohG%9@Oo4wK3N0w#G!J_-c>MmS5rzH9Iakdg@I9>>0a+9pYg7CK<$w4P00Z
zO(6Bgol@tLx?rc&Wem)(c1m4K>JvMqZYTB4ol;l*fbB?-s>Q^z%yv?__|;IfDYZA_
zmd`9uztgG5RFNt%yVK#AAzy?l?Kqvb2v*Tm;iH&ce&y{{)L)C+Pc+z%68QhPdmr$+
zva0U?-sHAqrU3&Jpg@qoM5$1Qv}7O*k;x2&7Krqo`!5-|FafGoDVP}wgdwyQq7*2S
zN`$C^8<>I>@@j>ERRdP6P$2LYjZ$6;M2%9lYG15cvC8lJS?lhzPudQO;`2Vwug~oH
ze$QHKuf6u#f6hMl-rT$K9+6LojEmg%8IgRs#=EXN-mb!Y`Eh%l_ruun7XE1w-3s`V
zKfZcg|H<z%elJM$ZM>{kH9hY9g|2r#P<+?xB>Y!ht^XGP*8|TN*U7Ox@N7D)X{kw<
zpMA$|YaV#srb?Lyo~KW&dEi;mW#)mWbKeyYJoU^2&%a5T(4|vqYm_ei<(@&s%LfxK
z?{9Xi<A6G1R!cvxWMK8TKOd}al+rrC6RR!seSTVd0ap4-X$8KO&W>Y7=Vu{w^-mz=
z<)J^#^NduMkh-q6Z+cfQ$9OQXhbul}NfAE`U6Ja%VxXvK?~>X(L3<a*LUR-HV$HoD
zf<5OSYwmh&pf_V~&Am)l+jIBX91m-;wGlG4@twKcqMB~`C(F{i<iPs>K@n~CgIcxW
z`Q(Da@y-5w^n9{#ot!tHPqyA3oPRgZC+}r;HJ?vDoqG7*JfFNr{{BnPC%@dGp#1rS
zujp@oICFk_d$_&%^U3Fw-|X|rm^Rt$^T{XP6mD<+eDXovWo|vAaenGEbf42Fo*vq|
zSp)PniTy2`Wi@qyY4fPoQJL6iK2&>>jppM;+-&zR>a|kxzOD65!R*#x_Chmbd3OD>
zh6A%lx4uG=Z#^a1A<Py<TC{y_Jtp$!+MBi>5jmjE;b!c2F6-(sT78ujk={8@=^~dK
z&E`91wRrIR(U$ewRGF2zMa$5lOhj^9m}aNnt^EeGPqn-mvmek{{1j#n6M5h}MD8zg
z6p|PDc`X@x-|F;x)Vu3dZ!-U*!F}H^$cp`}BI55`ZB{s&Fng<inDy>p^0Sz@tJ(MI
zh=t9$mSe%yF9y5c!fp$5c3EblnEhkR(6iLgk4yF?%w8aJyB62&J4LoWL;qW+5xN=M
zov+l@n64`OMW%jD<V_;Wzpf!ZF8wXfl+8ONdGJg#;4}B?)f`&sZLyTyEQR%{DxzAK
zq|2%KoekA`m1LHU(Ie{S2G!cp@=Ce1nja4}ze>$pcSwDf=H^xL-z0j*iT|ZaQXNP7
zo07g%GiLj;r2hHC@IdE(u&Be5r*u@k7^kflc!aN3EsOA-B2Ak~b#MloH@VG1uvs=6
zi@E(nY8smdw>*}7GC{r>>>l(>!PTjGB?PlayQ^Mlthpj4&HfiYpxqRs(=D$IzFrXw
z-+<v3Zkm0+qUZH?nJu<_5i@R$zknGx%TGYKeSQPN4fXL_8rzS2P%mNHmR`0qiq0!+
z?{-gK&uyN>Y~c^y`;KZI;QbRV-P<)CZjx+kN&l<J&(>#&+zq)!<Yz=~#&+jjy1G|a
zLoX6p*UCI>_UYiS>M<90XIr+*o#p2fIADhVp-67~tQG;cY0grdpR%zPLTtJ1oiYwX
zdZii13hTmid9j5b81YlZd73;d(O=NytjJGlL2vyPk<W_U_F<9csbb{AdX<zw{ZvuV
zinbUZBcf9Ue_ziJmiVdSaXX~_vP6lrxBWd{lH0!^*!eB}?_&s8Mb>|d|LauoN*x#d
zRMEenjcPqR>|Z^5&8gz+s+2iZOeraumr=KB2gsZ%er)bLoGNy{w|QPTqqYvvrN8{-
z4#msVeBS$--Fk_LpDNCLRI?nbzdaYMUKOm~i`5qTzVMs6%VX7+A5q|2>Fj4Qqw{|U
zp{tv;?kz7rA#yYJmXKf5)%M=s)-gcivG!DfA3If0y?LsjJ^nCyh4wCdDm3>6oYUMt
zL$H6kHVkX7E^;&G*4)Q+wY}{=o8wdwTeDL|_iwE^Rs0oxnV^?NbgK9#Vr#zY`K;%J
z8~^v{RPj13mT;;#m^%M%P8C0<7{jUJk<Sg`eQ!<`7ZuTe=~VGA>lBoqD)?ca!o!*K
zf4y_<sp66EUwf+f<OkNCD!%`NYflxApXcVGaelkH8BY~=O6<3gvudh?mysXU`Z1Z<
zoS%`_Msq$j8`BYT6K305zZ%R=1hcQ18OyWh6WVexdvxnbMZWd>m5lrA&a(AEB5#DO
z7r95biLKv~`NOq8+>HIs$4R`XtICr_`hQ>KheZk^cGKASyIOMi{b);lNR?Tcf2zf5
zQRcNCb6c2ZXHMjD{JpnM6<^1U4<9^A+O0n&@*&7eMQ;C?$gs$DTB7Fu%<t)(%t3fE
z|2x6`FGy+bKPuw4!2VAvHq4r*ia!b_e~F2^n)?H7-`JdMS^p#QK&1Z?>>j2yn%lyh
zJtMO*%>J?Eeb1BG$0d7;v|E2e<b5Kyzh7kQFY13|T530AyYn-;`iib9e=IWihaz7U
znfxOSF@LW+rS^9Il_YP~nA%7D&VEWi3Pvl<Q^kj*us(fGM77$q%huHV&VN*`zmd$c
zvFp?7rZhTLd?s|^Nx##qSr*CNIwJK}Dz<1cyi%fPjD68h6%Rmqe@VYA>GnxU{Zo7Q
zajNK0FAmaH^Hgy@w9~E$*X%`~I(QVD=BeUwQduvaV>UiPzMyA9Y#!Y5dPQJq-yQ4@
zVrK~%_}@whX3bN@2ZG6`%$4`Q?K3)Ka>PH~@|oakH5gvPa0@rh{?BUTz-+PQu{+fy
zx5f=07vW~v2jTYlLI^k1_lj&^_`Ke$+kWjkcRW?_?K1tJ(-7nR6D_Zn_uC&T+197&
zf1kzS6GhHJ_(H9J6}cJPozK_R!?Xm4wu`K5-EloRwEP@g(m>$uY|Fa|mTB21OUvU9
z5uJFn2)IrE2d9cI8HXXg?^6Ze3sYa#O{tY#>~&?e^bZoffF{2!@><9S#rJ*)e|Z1<
zBDdWrqCXYA?TLnk+n#3FcE@(%9f|%|{Yh1xkmFH>oc~(uM~bS>7Z*HQJH*yEi984L
zI+53i+!9QO8j`deE)IRju+lpxAN2I_Q0D#rWBWN4>7Zxt|36zz+&r$N-A)*{6VvSk
zcst?VPVm;1Ikj^;oip2=g!&nYEZi-GyP~FM<R-t``og3c?ki3-!+jToa6c(>GiJ?D
zhtg2n{`jg;?LC(?($^}`oHbRE=`ou6o7PjIsTEovGo2b>YwD#UH)GapYDe1C(Q7p2
zFElrk5}Udt(^E8csr5-EIc5-knigoP5t{liO<~q-YFpY=_n-Wyd$n7pD>SvfFc+Ho
zgV5BUho(BTJKv01v#G(fshO*rYCXJ|8SB==zqMZ}w8_=+C9Moy<Zmc+Fm37AO>%Ah
z8ip`hKPPfaFtr9-4=?ObTkMmQD`r>oUAJZ)$JIjaNz9HDGQC9St}9qu^P#QJhPM7n
z<Yr8o?JUN2&RwG&f8jbiUTW&`<1}%Leb|Yg30$#t`R1BV3(wS6AkF*4@2C6i6DHbq
z{ljKCrfYl8HUD(`NY$6Q<_(1Wtp(jAa{uglefV$Ct~Z`k?t1Wdn|%XD%i%)bp$F*l
z_U2_<-y?L&$v>lc+1^)ppf0yHFFX2pu`d720^hXMa=5ealUzQlz&EP39Nzf+SHE~q
zF2BQCYB{`Pz&?!h?B?arz~{BE=bzKOEZ)kGN!?u4p+}!?dYSd+DT>a9`1F_k(~y#X
zv(g;m7fWeF{1ym9{CSaEf@yP3jWkEN-g{X-Y=rf4U&)@r^wOX9l5|lX*80ocRQx{*
zT~W9~H$+{tH(J$gp=z^I8*@l|Pod@Tplw0S5{tO-mFCB=4i%2bn@yB|3K3tYvxG&w
zN#vGb+Kf0XxO#7od|Vmvnz`~CwWb%~H9Ls#%NDgZ$g84c^T`Bxct`H0BdYXGuduGQ
zs2#A`-{)*rn(($sv+F<Tvw77x%UwmaZu1)JT1TS0oAyfa{GiyCQ7kL3uMCQ@sOVkr
zUaxE28-=;+c_)ksAHNUOzNu3mGGs|Smv1iPM>PG9GWv&=-=C7`X(akhB3~A{?HwZA
zs~U!d+dgF2cH8TO>%YbS8(F^dHzg_RK=zEKuj=JDrTUTbyYr-^FO@XcyKvT0)Ot9l
zlR)#4zV-09=KiKnXi2ti`T<$-lb)M}`lzdF>v{L3QqY^%$%lWCY!fT<gIwAN$?Wn=
zy0oX^)*s?MJ{HOLjbGET%2Sr_Rf~FQqj;lcFt2eGZ+x~!P#?=xbQ<e6J#dy8b76^@
zDNKrVktb0F__htAy#&}JuO8q%BO$<E0^FiDJ-}W99Ocpiw9B{Y(gWN=fWNKF?b|W|
zZuxHp_)YC7o<V*D)dPIQ9U(x=;5UfKK4NGod&sE}pj|#gmzfNX>2mv6Ccyj3VAp>#
zgW89h8RXYlJ;22@K+E8}iO2%9lr5zJ+U38b0a^xs@G}Z<HWT1|W$-^4;3MwUDsH}|
z{4a{@yL(G{ST}+2mh#h{A0D{Bo41tj!Gpi0%+J=^*GJEOy{=T*pSJm1%4Kyr`<C)!
zb=>yX-2E-($DIyO$NrXb*B95mrTkT0-`cAi$Hx^TPs@K~ufdP#A;pi;hrXW6?U26Z
zE3K<Cv19blN^8gH52R*Of2x<pFneub!wZ^bCxh9lnOP23_3(q)_QKC$c9UGT=wWB;
zV?=I)JVfLG<a&|c6|uwo<X`AuO}%%w{$z0f13F|{6weg#hn-E|&~qkc@AN-_e`zpz
z4JPht<2k*lfX!dDel)mxOR)PGc3YT*ZGWW)<Oj*@8?BF5&bR)pWPgU)pNaJRvB;N1
zUIAGW`I1PDS6+9k-XQhfVlTSh{U<WuMc4O0c+vIK5MFfsN0Du-=lw<3W^hOTM*9S{
z4;D(a%0tT&za+vdO*=($!y|vD&jLL{Z!b$9UY>2qJ!e5;z7FA+OkB3tZrR|H8(U<>
zrlsvIZ|@}QqMUoq#Xt87pZks#>}_hR@RWIl>aW52Yr=(G?h&7EQLJxd7tD9P@Vi|i
z&uLTT=BF-Rq}t#8r!GFt3iTzzFFGIR;5FMax^{`YTxrWLk=wqqc8Qd<xSnua`EBtf
zvQ0BS`>Bg{D_SB4G$<>IF)oo;N$fLf=<oEj!=Qbo^?omE4%)ra+MxY@YF50U2r+wY
z;ih2rr@<_*^^@B|4$pp5a~QMjh2Ov|k?c{@ZhfZ6Pe7h3@)5`rMA|g&wnPRm>Se7P
zRPWubZwu~UE2Ty8iz2>67XDE;Ud)<H<Tr!K=P+?sNB&7`9-F^tJri7gE!bVJd6V11
zJ~aK$dZ`ApZ?rz|PBqk_aGosf)^#G|kZ;NAlaRj`dA!zsjh7KFs@@Fs-eRvHd`fbA
z1>u_zUO{+-R=d4|@NAK7v;XR^AT)#9{Vk=D+6N1-qE(j28>zq&xmP4Nyz&1kQ$2cj
zPx{Of*())B5&Lly|0kBnf`)<$fA<|LWR}R7LiHCE(k1fTztruJpBdNaYjQq&RFVF(
zM8Bs<Z_Dctp^t-~kXmPoaBcc${iR+z2nxLsc2|o`+t=|!<vMxF)5BlfoaT~p+W2u*
z@V}L~zx}Pm&v5<dcA4Ja{(9kFUHjikJYXH)y!3mz_P>>Qfa!Ix^S_nou)me~y426N
zFK>O|I+|)ZT)+8@(*Cq(YJl=LSe1X1jTS_{)BgP7C%&Px_?+U~rucXUdANzcEb;aQ
ziAjV;LmwBA-v4yqadK>bI?$S{|G8qyf59GG&dD01{On6*@Ps!*U2|T}o@!Bj!M-M5
zUwrz)Z<Cq7wu=00yLzmO^-n7$`P<h$@g<tdlJ3H2maEM#|IwGD`H0$k-Z{DdCkEje
z>v-gP4cGQ1;oH`|P5R&9+P)_InPz`U*ZjT5cI(-#+UlRIFUQ@n?q>PjudADLo!<4t
z430|loY8OlpSwInHasJ|O6gdUteKA1SO1H>3?{J_bK$G@fBxj>MX%QXTJ5WL`Sp44
z){EZFvGe;FZ+?p2g?Dagk+5GAHFr`%W>S9kl$z7G%C`1HzN$cegzxli?dL)BU%BL2
zvh}H-mhr>>+CE*{`ZPS;qKoZk<fi#|9@_g$1oqRacjw#nzt$IE#t+|*3iGpn_)<CJ
z3ECAuqWXSFuM_2KxwI493u)^8uGL?$yok#$>T;B)=hizp18WM7^6=a`>Q{wPo}F7?
z>{o50JUX|&#IM>%d2()jsXsV(jPl^zy33!NJGbvvc)SG10~k+yCHwSIxDD!*uYWq#
zZ)`o>zFyebdbkbj@K?gxdAijzfZi??6nGuOp8(|XMPE~(J}i6HNOM@;dcA};EC*8I
zonItdHY|rE^kKPkS7uoLUER+NOP6l`nPIs_m-^7J56cU5v3*W%)(p#?f6U0+fSi?X
zRK3!g`O!54@(R_=49G8W83*K3t_=h7O<n$v3`nnj>*RlCK<Z!A{K@ZL&)ObPD;q5d
z-&7KOrSD$PN`KV(u+o2GJ(FaRYg_3*xt^8&Vy<nazs&64pzG&z&d$HwJm-tsx5@cy
zUu<)V1Cb^bYr_v${7I*-G{)^uQTwewCXf91$F2F?OJ?t{^^@<E$miX4#P*V3D@a;?
zoJ$qZbwvqY@&wJJwpR_hRCC{?1H<x=-=7~g@qvd+{85EG@O>Q;zqu*SDGLMh^!=Sp
z$%twV98eJX_ckTt@;-1IlG9B|$HOGq*)GXfnvyZCqX8bl^Z&Og;Wvo~KCEE!mzxrP
z!Fb@w1oinA59);Wy@4OX&)1p~e${y3P9*=(l<<blz;COU`G0Rp&TWun6wl9ZbwB*(
z@xUkO*UOrcF<sbK{nviHd9S#iEY$scPhq!2{^HAZ&k{AW*9Wt<+`!v$w5jlRGvh^-
z>s}trjs&yoa|8D$g3X1GnHev!TsJK`@Hf1=wx#fS6Y~Pgb=(K7kv|KyTXF-tuanu$
zg^Om!OD@;_A+?9a^6y!<VK*V}QXua1A!O}+>mFm`5yXTv@E!)`1M8k@;v(V~+^^Zz
z^CYu-<oeve`8JvT>bg-gyQGG%d%Ebrb)0+W*S*HX+ft{0OIyd*{hW#WgSee-`CiGI
zPG2(4uKLIYv*Oi{>)s*ylE<lX>mxsFQXZI1n#(^h{{s)WVMFT!9`S$&<{z}aLsO%r
zC%0k4(>JuX$^Id^)(70O;b|M5t-&ue<%(_H4f)mwY}kM%FO9w*Jec)s2Hfw4eAKml
zpS)51x*yB|*FQM_*oQs)2C8jXXOi}O-mmZfXk9;14jzCF7T?$Ow2lkC#cQpsd-e^q
zqA$G+m->55TG5}rSX}EuT%D@X=HXN0!I>~MLmpDdg!#}-^2Rrs>o-3vcx&=usXx1X
zcqRflc*IT00`BQhw`HPhUD~2v9MeUbz3=bKTs*2-b6u?2-K?qJ>3GqsX%~-a*3<>#
zcB3xol<9h+PGA1IK@;HzZ_3~LFi%W$t}p8MPU&^7Y|sq(;Kp~|ZpqenEr)EiXc{~&
zbEz%(@!62q)Y}{*r`{7{>|EaT<~QUu$r!*VzU2-1T+7D8x656xi}eWb$o!TYO8M$T
zM>gDHN#43Hx8(+EJ}Ilw(Kh2(4sPC{Iy#%hY*6PZ?)DdMf7li^*nf4*#PQTj!18p<
z2F1shSv@T#6JG<FOPT#}bhf7ZPrtr74<D%P-%3=pF-Y*((Jeg)Sf}LWc8Fd;^)|8G
zrjT<F%r`@Rre9(6tScLQr;pQi?;|EVn!VQoYmxJ3XD-!&=LAEVdG1ZkfYR|E>Lbyr
z_9M;A;ziY-*X(!ma;KR|US#;T++f3(WX8rOeo0xdS*btp+F+wyxn9QPq?%0yq13XK
z^>pW9S^`jyWbCzS@1T9%yPJK}v?t~lY*5Y^wEEilzGi4%cvCLB7E+xKeW}J4Z$@)x
z>Tj)v$aH553z`^SZ2Of)_a&K(NpAmiTjb~tXd}%Paym>jOw*KT`^Es^(dcS}ZZk-L
zV34F9kmwN{55O^%wH`1SGlK*O2GIkO<7Q9<^u&6F2MkV`K>`GW=)oi!V7e(7QCS-U
z1{=*F0fIsFfMk~$6oEY|?g3`sG?Oa=d`YJ(V9P3M6X?)wc5RzT-pI{2R|IB_R)M1~
z1?F7}oOCH*U)7eY0>8s~Bv%BMj8=iKyA<Htv+}tr(8dWUR|L9LJRH~#R{%pss{m6%
z=0L@zz=%tMx=Vpkmje7og&I^w?O*I>61zD}H;-9|62LoDi5*H}hlXQ^lGvePI&{(c
zmH>1kpDP31Miaok1w2;)HmS7c?rLd3`cz~M&{LB`yhq8^v6o`(HDX`1*h_%NUW>7p
zV(hgTdnv|VBletyPy#&m8sGt!03V53468(RyHxVIS~kL7i=_<sIE?__m2#{z66)Y0
zr_DfP3(Od;0+(D0Ty`nY&XHUnlND?>S_KAN3XHfE*zHo_v`c|Lohao27&KZ1hFl7a
zxD?psQed}BuZ}y3aaV}jBTRs9Yqb(1Oo)(g-pJ=FF~WohCtNxyIOr6ZR%y-c-QR$C
zCn~@tm3%G%`V|<fCuzXEOBJAK5hwJ6;N2!0|D+9H3Gm*fBN<1f9D6rR?~d9~lmQ==
zVIXJWlmR-M&kX~;E(PeUq(I%JfVVmvVw%0Cf4WQ0R6X`;IP^-=Y;}*R7VFevom#Au
zc9bShs^oJeVA*H|IA^pB@C`f~Fr2Pf@FjrUYpv!RVG!0c2sh>%w7AUzE&~ihYwnf%
z8=?7NmyP@C$xdsTsp=WHa;o|eSMhw`Q*~LMHd{Q`%39Q3D?e!IpY|u9&D>OgZlfi@
zomYsW?oxokZOz@iKfU?JmWtmwU~0DM_ODe6%o(i$M_mfcyA)V-DZro6Xuk)}xfCey
zY?`YAokokmv`fP<#8#6w)$vv<fcsCP|4Q_qME{lOKf!;W`L6(jDz=Ov-YzE%`$xM6
zRWt<w*QOIRMpcec4HMNd6%7mEy&eY6x)ktU4+H#JkZb|>pDr3MkD0az@Vh&iB^9*^
z+Vecj=c)jIeBwI_%&Voh*;uVawT)J-0(2WK1IsQ2&bbue7erffcN=z#x90Rg2nfxf
zh|QHl24i#O*oQQOi;95f`Sq&Y_U(r^I>c!|T=$AUH*;MVe@*84p!mI+>jiN>yAkTs
zftAcPd{yN^xxKmRyjpx!?lCtG8Eb^#L*38=@^?Z-Gagu0@dFX;j4OcEQ~~>ER{)n%
z1+1Odn{<;D@YgTy3O3*hppq(JyIcY6NfoehR{*@Y?XF-4Tmej`ifn(jS#$}oWVB9a
zJmxx4?lli}0EfDr0XWOsA>Evj8LwUfLS{;h=&Y1YK&gT2esfX+LO)9ln0wbN`Th^@
z9#J{#q-;*yHl1bsMpJ=Tm~<8u@JmRUlO@{AD(VGr#0)D(1!tWC7mSuK2`;-7=rvDe
zfDd2mP6O~kYb{w|mrM5uyw!B?h%uF7OzF&z+H%yUD?eyka=i`Io2``*fKXa<<NF&B
zZ+#@To}S$ZhL20LPYXI!no~`z#}z<tst9?f=A??U1@QT8(Ir8*RZ9=O7#=ij3BZ%~
z$>4^|9VRLQ3lBnD19*ekV}bF@O__5l)rPEE0$g?qwDB5X?ymg}$f$~<0`>$sWXk39
zg40gV3)-#m1n5+;Q#_>GFZMSeBPwzU><V(oq|1RrE^lo>X8dA*19C=1m4OwP=Npjo
zezCs+xuhZ^fM2Py&OkO<3KF0%$RVRH2gs7yXVY6(R$6jf8X%uU)s!bUd{jo1bR2O?
zI#!*Mj-16&Z5IqVrJv(Y>8B4?^|<JgOV0={Iwj(Ei>wL|DAN=ibn(?O_F9ZS)W!Q!
z^DAh&zY*-RQ-bwahKa@Nr;CKkgVtgZIHcm!3O4HsU?Ek&R$T#HOck(>PMR+Q-74-1
zHsA_?-v)C<=mbGbs%Ttk_LNg#Sw%yZZ$MW3qNM?$HECKK5Z;beWuRTfYCvdN7cC74
zU(;zCNPo~khWw(n0U<nmHUAOY9u=)hAOv4ZPkl)G9*jW|7*O%v!S=WUIF>4cYih1|
zYrsXL72vW<fp+sy2YOUm^<~u!NUzBg8X0m56jjv6{S62$W_m(%tLC@_xZ@JA$!gu5
zZ$R8}3CE)<ncWC~$4yiO`2DoC<A}jUGf05TDvEc115%K+ZhHU~GjUPttcq?105x%2
zZUi42aud1kiQHo(dra!fO+qShxnypO0Kdq#HZ%-2nLz?zp!Py_E{7h9s0i@OY-_7y
z&}9Y*(4%5Ue@L&%O8^x!J>!yh)g%H=IR!2ntpogOTc!?|gC;5h{G{62P%x;QK?ykI
z6qr_N&AmF`I3hyD%-HSH<sK6aj|(u(973YDigrS!H8+-TKqk$!2zUdMr+Jg`qUkF@
zyWVBgQ$S0Dw;MNy3kW|TrTad=&vq=xAqy@CP6RoGA8M0*ww);x)d6=gG0}jyX+4-8
zl!zaL((Mp9s&Zp)Vq!Y~l!xo6dV9~rKAlu=g+ICH(XY!r`kvgQ2M2n((k|idg4Hhq
z{CeBk{9l$dCus|>qY67!l*(;_A*Ue}>du;|2=GH~Yh58Z?*;(Bw6@j&$)JknCBUzm
zU2Ra2rX_bcv}zUhdL>{|MT5Do0XgY%U`Ln9TN;od6(+x6)aCmc5L%Qx_@>?kb5ReX
zHd%G4C><@}CY8+0BDgUXvNa`KZE~=~Oe<r8ITcKf3C}h;ctIsI4>I2J8E^TFi+sjK
z9v3U-qMpX99&Pkq0sM^H+LY4e0W&B87-ZHFm(wOH0{o!b+Ugh_RmqMBmZwydN#Kl%
zjR<7p_nRD;Rgt`<0hx0-u;B824G1k}Mud9XR5B^A>vBv*`D_Iz)~X5aq>9w}RbjuI
z=D}TNS~)4W*c2DkUatz~;5KVNU6~ngxs115#zijU!d&&4i*!Wj(Jm7efmM~YDaByQ
z3`zh7nGxY~@zItP;FOA2hfO}l6u^{<D`4}k0QhMXSHRA=0=SqeV7qTLSHK<>uK^o#
z1+X_&z{XtxOr#3fL015WQbm}c^ry@ElK>}-*6GZ+g;odVj3&SlmjXv!3LIC_L1144
zvgmSvo@lOE*DQ*pAZRmM2RdB}^c$@K11fS?Xh3$Dybg>8Ib@f~YXEuCO^qzjVNu|K
zig|(1bKR|48rhELx-l*RZ7L+W)PQ*!N~GbGb)iHTyqOZs;4U*OE-H(cRn%7ihwF8W
zxbEK{-U!Y!)}vCl%XLfcF3a)(`G$vo8GWAgH}(0TKc>3JRkT&bflAj%&=zucoyj*a
zSTfrLz@00CGkU_$uV|G67gc<+!MY!73ShH}D`0zE0gR;z*a24nlc@qW=L+CRs(_tv
z1#mJ|!1zJF%-%zw=Pl5L(D*AJ4Ky(EgU~v#Vl)BHspvd7(SUR{JtqyK->sqw#5>`1
zQZVBbATHJ2*MKaz93U)`kThURt^nFC)&%HOQQdnQ5c=R1viUx1-6#Pe-=zlZfQ4TI
z4yjPH)PPO70+>w|Fgm8G1<*6E0o&^eU@}#}4!Q!EP8G1Dt^gKN1<VJc6nd~(fu2!e
z$`bVDCcje8!f&cYgZ6ZDz*Ku5arUdgLqg$K+G?T)Q_*0Vxl_-jnJ5!57CLV)2|V`n
z=p7A9(XbQ^(@sXiI@;6bu?{fC+E!W`nZce&2ixC`h}%r`Q>4LbPWIS*dh{Xe<3B_%
zioi(~hPK#%jXmBJz=Vn`V24}*%%lp~8CL*jQw8k2D}W2B0(RLI0DnZ~ZNT^q%FL=H
z&_xS0A+$?Qfg$ry2PTXrz_Lrv3eGvDwTn&x+OVY;8%yU7jm=vNB_L#_WLYVij}lN<
z@s$7@bp@~|Rlp9o0to3UHDD{Q0Eo_A8MDrp3W5$5SHL_g>Fl|zK#wXymIzTUHF=oW
zL9cZY)R`qR_c+fUOM!5XsK7%**(DNewHSh_Xt2yI5h9#Z(bxe;ReVrkN1tE{U_r$d
zu;Z=(7E=Z6v@3wln?eoPMisRI@MECvD)gHm=B;J|gtn3fY}FM&aG5k<_{lu8;^dHu
zwmo3lXdQ6ZC7cnX3;?g5P9mxwF>M(LF_bNaQ?39)4CPD=={|y!9u>~r;1T1mFMuSp
zCHH#6V{#;30BH$1NKD8>Vg^-*&TwkrU6s(W2kBiFd#~fJ_^t>3=QFnO<0{v(MZV~|
z*I(%e`3aTKCj6A!UezXfTvEAK8)1m9r3?K#FTZov|GR@ImyzXzki49-;VuG8Dn5f?
zXI%kYNENV+PxLt_=vDC=us&A+gQ)^mb_Ku>#(E9dE>{41QUz?v6~J_=fX%o9;Kyax
zPI&s$tD@-(oHJS{W{;pwn}^Ip9l)V%0i0zv1w4865`YVuDm7qjW?KS60!j^-w^GXX
zQ}5hJ;oj2?3-4}Q&f1nUw&~pOlkIVp7R^=gg!6q2(V3>4pe{E#arCQTA94>TjM1i?
z439NAIN|*D;DM$bBuA<{5#~!KmV73b{lw&x=T$lcXCliJAqgzx&}8Dw6ECs4CKGj@
z=m%0wrVsf{AM*5tet7*%kMfxw?aTBipXt%-!;pLJ&_8~?x9>?dyMaL!pJ1?Ut^kHo
z1?-S3fT>ggn{frekNK{htF%>7(fkAIPLBxoY&GeG;DFOf!D*va;H*nm1UYM>+9v39
z+9T*Snh@N$OMwZO5*guS_IP6Hw*X4OfQrv{m<L%RvIUjQlU3*f?`~i<U|wr9>kZUG
zVtb|Sv&wZ~NF_Y6!Kr*b%j>RO7f*3q<6#3bo&QZ3eDM>?o}$Vo*?3>m=P|S=RJ4`>
z3=6pl&AnjjSHT&rboF6g1U9MoFu``a0vJmbuvu4Rog9%PWfX92dIzM5In$N^EcEhn
zOCy?=f}?i%-KfHmg8&Ab{A&F~KI-{}OaDj9$5qrDU}HbD26U--$6%GGnj%|`Ul39J
zK=H{&fx3#l(g2xtIWQOGkVTgRCxaZa;&R|zkVCqjV*Y_175Ue@9wM9kVqXI?s-k#+
zT|o|+bUARy<t+`!lwa&?KxS1`8JG)l$fC=E6G09+>vCWv$RPzwU;?zMSSBEYE(f*+
zIb_V`z<7{DJl{z+-zSu4-kJm_ZYJEyLBXWutU_8(I3<&-PDx&eg<9znRGgBPai?Tu
z#_62kxKny~#wndT=M<nXEMCwjOXcbqdo4!qLi)tSO!F?d`nW|nOt5F266`T+YM1~{
zJ0$>bX*f>A;m|0*M>3+K`JbB>4$22S{0n+t!@*+hiYCx;o8Lv?fQnCi*rY3f6R84r
z(iK4OEujXiPescK;P<`VRfs3HmEe8FoFu>{6?<%jbf}^(3JnNOb+Nty*`cC|3XHnE
zr2#qM7lj67CTQkFjt33oj9;v8Kvq=bD;wL01ylmi5`27b6A8aJuHFHQD&9L7zlSRY
za8bn-u*<Fh_-XOA`M~9bxlDjVM(e;46+LI_?JE&)HKCnV6$K4kQc+^`kwlTpexbJ)
zMQA9~Gg>(yvF=2Gw^9O*s%US`Hz3|hDYjCg6?ZHX$a(8biGH21HqxD#{w+$xhql7M
zj4a)8&&msKnWY<5=cGz@#s<A!9|`KrTa$Eb)fz4W{G|HYgkr!C39I)22AM>l?J!Zf
zSJ3Aaz}P;vIV$3{%Ap%vcHfGlBG9Aajlxd5B5S)x_G%PxZR+W=L<Or*ignWzV%#%m
z?Esrpyd7A@6+k^z<eLAe*&(S~1u)3;n#)BO0cV{8ows3F2Z~11#c)*G1(od3Ae&cF
z4WOw`M-~s8o`Jdu^r?9GunVpLE~g6E#%)#u=uv4VR&1LqfYDR|TXqF-CRM=Bx&l~9
z6|hxT0OwK#?4m1xOQ|B){6~Kd-cEE0u-ST0r!%Wgfp+td03Al_K&MNA9u+OpeGSMa
zmjm=fi3G-63hZ?$aKNR&5u-KWsEX~3kOh<1fu$gaoHlt4ATR2`ir}16;Jk`?fzb0c
zZ#~fQJu2ERfW0aVOQ`|#G?Yj~pDN0RE_gE~n!#P>$UCY!yH(Uz0Egiq8=PmXm!uw7
zvNi4Ur1!iEJd8<3Z==xE2X(GX_B|>(9K?Z2Z_z>P?=WD{Z?*|Qb8FvvpeL1Q;j9RZ
zs`&JTUEFR8;F5|fU{gCx0Zgm70(ROJz;dd9@r%J~16WNJunVpLE~X0D!Dm~I&}{-8
zu|N|-8?tH%P*KrcWTF9?Rw10E0b5eh%vctjaSG6^O;^Z86|VprutpPLn~J@M03jH+
z%Eq(9;wb?kais?AoF%RVgv9AnoVvQ~3ZSjou-@$w^WLW0<jgY_fE+O|aJak4L+e4$
z>T0S*gSKDpS5>G@8s=2s^zd?%UumoA!BjL@W}LRGA{M$+g}jO4&SOt+0MW1%4NK85
z?IeZ=&0`&HPC2GM0r}SmwKOsVG0_MEapmj#_?a?4MSviEM$-H>=T{6SJ-gD0bI-9U
z2k_0;?gVyl$P~aK6<5IKTmj6d3fMVU0OwN$?2;>h%c%m^_9NCt7#HF>Z}B8VaKWl2
z0LC_bW3BX-My<0}s|18z=$$QHO_+}oa7cw-=$$RGDOUiqsRHIPr31EEPR^*<ToPVx
z@(^>-Gl81w%mi9`uJ%1SrS`n=c#~glHiSHQ3bv{qOhtob#wigV^2`C#Dn2@}>E~HW
zfjJddz>c^AIGQS8i>?52J3|d)y3+nt5VS`{GhBk0v6=}G+DaO*)2;x5Oa0wr(@*9E
zgOhO;-6?<rM(cpPF5!$AWdIPy6^WQKZ5aqLlr4q@R{$Y~awdj!=@LVS3NNXHd<!=(
zk%J_Zm(IaiIYJK75^|83kT>&^+bml;6JFj99n;Iy`72)v$L~zW7JfwKTDHiKx{eQb
zef#0rm*yp(R|##x7u@!$Hp%00m20&ThUl8QW(Uv6?;-2|-RacL$U+({FAFwaMc}xK
zPe#}&R{&>Ig)wbT%sD}qir0X3y8_spDqy#|0vJpcu%at~kyHVja0PH6Rlp`)0US&f
zp+k&wmxY}G%SP+O>=D#ybKE@C0UT<o131e}TReI75@6l7eF=6^MYA0U2`DvS-byLk
z&r*Xn-Fv!W;oWV^S=(~PHl6$3vOS`rm$viZyz~7G(aENqpw2ZparCHQA94>TjG?BS
z4A+|+-0gfHxTh%x$&u>5KIAtOi^bH8WgqC1hZoK>ky(T!&|kXF#A)#ot7|e*TlAY!
zO{Nbvd76E&zR(Y^pXrhHtl6X2XL@8kYxZa&4EfrZ)cK9`ZXH=QyMfIrKD%MPt^oQ|
z1#H|Ez(lHmO}YX&m?}apX=_kL^AFhJbV@Lyv6pnWV2{%=!J^SBaLT1ig7YrDDBwe?
z`a^*ZL6^~l;C8tb*zHmxBb>}0Pb@taKnd8SLcdE5m<L%RvN@H^6GP|%ugYPy$-LHR
z)*GmW&UQ)LZI$alze;!#fm1pAk~-ITxaLdhN2T->RXSzkeHHP4Xy;Y5mH`a?CAVO^
z_60av;g8le;y}BKk2q|bD}bR?0ULKkXcH%gRFqM`wejpD(UfURfNK?+|GOa3Wfe{t
zwArJQJ#l387F|;xs++rM4+pq7LKrpRl8W~Q*86-@gnC3VWz`a3vtHFy^Z?()Y{xjr
zxXXcwAcxGj9GDAo$fC=ElR*x-<Z>XVVB|mFfE4^<Ujs6rq9B05Acu^)9N6vhmIh>x
zU+il@##K}qm<V#njLU)9Acq`xIj|VykQJ8$t3eLwy2Jbf-71zL$dJo{N{~Z5-{~YE
z-?J*biVluwY3M<DmtfR#Qz5OhPRZm6rzG#ZQ<B$f(NzWo6{lonuhR*^v{QPx;FM0C
zbPCWH)+>0?#o0OGG4@)F-UV&3{x5dH)zcQ%Fu@*oO0b8_=P&`xJ0$>bY50<;dzGdC
z+pG-qsW9iqgk92P=YP=qvJDn%7cnj?HouENUBxFpY}6INY^s3GxdLc^L8t-iP|<z>
zET)POZ)_{U`=U8XfMpd;i<SoDyk8U=5S&W0z5(e`(L@CXT&~ASk-A?L8j!s~Ga)h^
zG>`?qSl@sws>oM1wm!9|EgC@U+juZQa!8Nk>K!nn;)#MCf1xRWWffPz&bk6vd{Izj
zU5=Q`1lVn~3>;9=%ewgn#9K{hXHG>y14oROfs-x;&ZyW90Xgdz`x_9N&-9n>)FoDb
z0dKnmOsd#x>kx0dMBCm<32?`HZ5^^?T`bYtIcp=`pXv3iM0#yKJxXU}Aq~03rg!G<
zCGjJwmz~E!uh%AmI`i5(9Xn|a7l9pjUX^A^H%hAB0~llzA?*dLUha^l)3jv(V|#6V
zP{eC-RIq<s=0<T;1PT=0^@|PIv8E#D|F9iWQKNusQ%`3lS~YDc)=g80aqh+5j-WvC
zcEoyJ0raPeW~0{3dDT{{zy+tkWfj|l@kT|v$Tj~Vm{CzZ;J8!Zg3&s#`6Xr$>P$*B
zrIH;qWCvArm;jpUP{Ta*nU^9kprXH;*x!H*x*Qk_@^O)ga1p!^hC4~36aC#BPPVD2
z55S~~`WV0CAsA~G(MVlIe;KhK#5OazqGbtByUg;g{h(W>BgN%G70n1>O2tPi1dG92
z%^(4SLHxp`Xi&-;#5eMyK{;!n$NuI&e4el-ioi(~j{(M4%PKfvDOJE$T>+d^S(kg|
zzkj>60lny&;GWCNE&^tD1@~D4uaf|sFSWe4G$5N)G#<cam**Rh0hbpABQ9@gKz7Ny
z?19}Xwy8m0<MMIAA*b2aJ5-ZfG}xu04g=jP>-5>EEj<lruWJCBZ)%{=aLqQs4yQ%I
zZWX+O6>GEz)K%8$@16R38c>g{NMr}120E#tNPvS;1NANx0n$k$p*!trjBcz~3w(AF
zPG5B0%Qc*AuFt*F^l%c&!C&7aZ?B=G84gClIXxLsgPQ69;TLkR{8BFMi0%Nr4Z1Sn
zRsiv9LwrgD;*qD@7}3wFsGGpRk6k%8Fqkug1Xwa!29{OiRyTi<3oZw8KiZVHi9AIP
zGwTv>)FolyMHMv-TvB0FG}h39DocZp4wdG3LA%Xm5$I8AYM`531N24>)Wb;6b$D%8
z(One4Yaw^H(zsb{vw0~2eJaZ6Q_{gDKYVelA_LC;_?79xV4E2vz=+WjFlw|sCfKVY
zw=E6Gl*voLT#z3XS(fii=5S11G6znpC<<UkrI|VC5!c}3SW}~!4n1Kmi@-^hX6B%$
zTmzhr8t9i?6DA;D=T($B0I#08C9x&5EdfNoCUd0foau|e=G|9j4uiijg9Hc$ai2Xe
zX}hYa*WH31ry(%x`&|S~sI1+`F?gC8BtS5T{s$zjn?Z3*u-9qukNrUx0Y_EV`p4j{
zW{?2EAo@Qf>ATFJI43ybH2BB<tc!rkPtZ|4JNQ4ee0i*PR=~A-bckB7TZ(n{Ko+&9
zt!^3cy6MBn35o8zT{JlhrPwLxQCXK8*Ut4A=qA?;3EXSCz_{G)T42g(4VZQ*aKxn{
z&S+SfNws>J!2e<VC96;bw*4f@r~*SOYli~cQ)Zh0*z1U6h_Sx)=j^_#{g$HNTGns8
zk#ADveihBYP#u5!T?CvrS_LkutPKm>F*8U2><J6RcuiQ*Zz=k%W&OsmPOI{YN+v98
z{ADI82sWv#jU|U98nmYdonqHE$42un7>I@>VBcrjA~2xht-;1z0ZgX~*t{!%lc^%O
z9F^q1Ruf;VD#`}1`{hu*{NVr4E}1p~#`mDD0Mkaxz-Fsc=@Se%1>945=Zx)?Vms-Q
zjM{S4ri%_&2h4Nvpx}^GU`|B`>U;w-?-wnNC6VQzft(GR(63bqCSPH_2BwWxff<(q
z-9Kfy0G?#D2n@LtxYMP;m`i~-x)iv0*P3j`Rufu1WKC6Kt4VCN7F$hXtCiSl5?igr
zRufvCwg4)?ywMtP(r6hNA0w<9aK>l_xad;gl1qV3>p}^bH(CJ}jh2@Lt43>pcQ<`j
zpu26>#}eS$bWme5%5exrVlv7x86za4$Kwacf_8hL=u&_zNDAzADd4T9cZLh;z}pbe
z9BWS>x)AfR&x}IlzcC8qo<rb_injvuJXZix>57=t3b`e*u81kFgcQ3XOl5}I$F_?1
z^D0`v(O<fjgP}IgdIQrH6}y1^xz$SmT$nsKv5RbbCoI1;fTr!`gV=a2*3&mFX6t#J
zHrqVT%w$S$T_H}6Zow%$c!dY2qY4!p^*H2HbSa&SY3GBXbtRbE1;)!Nb^-a4igs&&
z$+M>O!3{5<t64%4jqRly8iwN*SOp+PAGT2KKRLRgK{_3(!b6kUWDxDk?k1ulaKLC4
zIH*E{#RhEJ6h&ahXcc(kE3GEbXS50oxfB@Mi$N8*(`XSGb187prNFF;HwgQ6R{*Ds
zR)Nzl1unT1xa?Bk;H#`bpz>-94j46B1zzS-V9ce!n_LRax)k_`OM#Ov1-{}^VDD?K
zHQ=pAi@>Z)fseQpIO$U0D=r02>y)Gf0q2btfr~B$F1ZxA>{6g}zx53$8m$5qmjWX$
z1zze>V7E(wJuU@S-e56=^%18;!ju@d;T{H<7Cr}=5}Rz86Tk<580dE?u)~I>0x$t=
z#mAYD#F;S6OxSDI3BdU4xhzhDglTZXq{D#EhzhV|(gZkfv;r_IJkmHn66Qxi6T`m9
z6T&QM_D5{c#x((a>I^eqcDWSr`7#Vlx)hi)It)y!_?P{PFoE1T?3ju+2w>6ZFmO`E
zDnQPdJONgX4g=>^%mh++P4L+vwlW^BU`#?8?rT5}+6+s8X`{mcGtx{T$4s68i$;e5
zrl*-e&X_y_R*en=9rrX%ARAS@m#~$fg3P@>s9?ub%rS)N?zLdcHm@syuYqz{18&1I
z@Cly)gEn)A0VciMFwuQ>4+CQ=nn3`w+ik9%;H9|d)v|kD$@V<o-AZwHt1-d1*#s{E
zLpI@RfbVXlIHzmO=>uj^0(?%_;+!tUt*ypH_N}cHx3*fGx+SKrZ*4VTqs@;J;8V30
zb~$>gPi0Es8(k@GbhR-_eWNSIjjqP*^o_0*H@X@V(l@#iu&U{%n-*}sIR{G(7?Vv3
zz<0n>+yQG$Gv5JAaR;n1vwR0E0gNuUMuBf|C7@sfSOXYn?-tAlxfTbx6b4yNvLn3F
z_N_ADO^n1Q$~58IUV6%#m0^#K?Fc)F=XHckvg&k5WXbt<JwkQno}_W&jl@8%;j|RC
zC58Fj4D9!OD7`l|dh<Uxs-CFYcN|L3U@c~_7BiR*WgM1DOj{+chhf&kAr(Di0-YK#
zdqo`L>!cFbNr`k$tH_#(&!#F0TrfHec#6uTsME%N80c1M&Amon1S-<wa-h#>8SsP-
zvoMO<lJ!NEz!{?zfQ?$x%znK;-LEa`uw$#Cd?T}G?{9=X+swkQZDyH$dw(PB+h!Ja
zZZpg5-TNDv-Fkn6-Fj6;nE=ik9R@mIXHuZc=rFL&rNEF&fxRvTrd<lm7)`pg>kq1^
z^E(84obDCOIL+K6^cPQBUmdo-N&vgQ`lEMCMA!t>pO!|r0cf9R3e{D3%T~bVU?yQd
zh?A%omti%|r(&E>Rpyf~{$gBv#kh@D<2G81+h{dzqs6$5R^v8WWE=H~Rb^uN##xOU
z=YRF+NUr?uSOk1gRmsTJ2fw(!sv$M>yiHx^p#Y@&%@yI%R^m=kVPX&YYzCOoeDoyF
z><Uw9LPL%i^x>~C{EV<X$6>347{a>McFM}&Tp=2!sA!lRqF2``h1K-myAOG*wb*Jc
zwpzQo)yk?O^+6m4SY7JfIe~i`#?ub#$}n)$Xc?GyDR5jxQ+0m>Lh`ggV!P$5+bzc4
z{&yyi$5@TMt;SZ<xiP3I>q{Yfn+q{TZFUR4TAReVn1qKAb-A^1wP`V$7K5ptj)LJK
zO(<rProp11c{7faI!=z%uoexkb$7udQ&b-TPiNzSv~o38uEti@gyWTa8{pmvLVG@y
zDq57Hz)2NW1LzSyA75ux5RV+tBZLY(^s`%zdQ`%Py5apQ57JB7_U2{g8|mwk@5$H(
z9|UvA<oDQnp!4Egifnz(uW5fs?S^Y&=+RL*TyGNJmAM`hpUGSw5nsw&hjv%fcKp3p
z+F4NvZ?nSxLFHO~X;%y#7L(V7->7meTjHI|*uw91+x=JOXhHJh8C&@0-1e$`u1bDU
zCBzHAta7awa?O7`q$ihp5#@-0<}z;-<kVX>z0Br?=$a?oT=*vg-_*<9qCHkU0o+r%
zF$8U!rp9Y>T~F$21fw>+h2)aplLPO{8!a|q)o2wsufh?#*no9RVp9crjTV7EmjXLn
z3JkdvxYMOT=g*i2;IT%Fz<^7Eoh}7-xfGaiDR9uGz%RQLm{svOVMkp7%p0u&$6X36
zx)iAYto0k%WwZ*6yA(L!QsAUZfy*uh+TLUyfOex*;FwE+nS<78V9sa}IO0;^m`i~L
z74Haa(G|dnQ~_IZ1#mi5z|Oh?SV<MI`8Qh-!0#I^0%u$b{Jl$o+*`~Rc&O1LFy&HU
z#-+flN;C6fLx-#;u*YZ-m~bg@z@@;fOM!+<fjJfT2RrgM^9LL?S_I}@3LJAOaMGo~
zX%%+@TXhBS4WmWioQm7P+JDX(0)|vvkzF72wkQ%{!Dt2WrBY&XTy!amqsJzE3Glg}
z#JOLIb3ci5zcQey=yN}bbHBpe-)(a>0S+211BYA+%owczECrp1_cyX@B5ANDiZ)>r
zfC;V>39!edfY0*^FzHg@kkJY-<x*hArNFF9feS{<0P7<B8WOz2Rzm_DF<Jr^Tna22
ztt<(aodV~K-T_>4X`809ucr#&izoq@<T~buxo*F5!E8Ta^Ev^Rj8*_<yqQ4Gn>+z7
z8La?Je=~t}s_+J^pxbB#7*#Qo-6AXuyMVAP6wMJq$6GDkz)_=j0LNSkoN+0z;!>c^
z*2En^htUeq?^0mUrGPKHJAl0=Ed##nD!`;k6JXkC8DQz@rMG+|tU;SQVHJk)vvuf|
zjtF*WwOA#{kYBvM0hv?@l@5tdxia5?%-V(C!hsyI3;hfUgk{V}S_BJ5%K!^EI17u|
znhncXvF>Yxg&Ztd$`{PZ9RN!?sIrT>U~9Dm`0A;J)uTYNYo}yu#}iqLi7b&wlBOq%
zkUP~3nPc}THOL#m$|l4tn-H<v5HCT>CL7;Ti?0m$UNQ{y+qO~${O&po6kQ7V-E|n)
zsG{dzfUQLj55S;H0k#%N;|^1fJIpXU3~7*uY&Oc4jU`tAJ8Z=d10zPuz%G{pdtD0n
z{xS^so>2za925r7Wh=Z4_#QDF_lPokgb%}T9ENfnhT%92<?Jx%4?i^wOf$6t_-rc!
zJ~+d1aLU=iDL3Na42QvCqt98wNA?KDR9bSkH$YGRNT1TuuYwr#?2pt%$u(k9z=qnA
zdqx9f8%0hZS1k!6?0CM-jVx*lIi-U2itv1s7qmyPryvJ6s^}yM>`<3mb8SD=h`Yc@
zSQ#b{-8rF%t{%>~u@1AFvdJlVVT%(DOIS4P$!9|?R<FhCwOG9ttEZEmK)m`$tUf~Z
zf^W!ef_bNaZ_^`}MROKj1?V<9(j)MoE3wr|Y_)QA&_!CEvpY!ka7F;$Y8Ch|9-KUu
zYK)~CV@aPG*;*%knjR8hq4cs7{zua^Y;>8?h|X%!SuHxd?+qzBOUDLhmsGSF0PPA%
z8?nB0SY+J7ECUBzzP|zSo>XGv>7Fhxr)5B=%nO8NXSbfP{(R4FX~byK=bG5HYV=;E
zYbRCobOO+VAK^k<QiPWD1QyzH8(QJuCmVqM*cD-(oNsnp8IJz$d*8UaS}j()@6=yi
zEuk8*>f{kZ_SCdCuC}hmM((?>p&FgsJcZ{X(68cshV5_#P)rrDiYtJTQ~{fG1#mD`
zz@}XR%%qBJ5JgLT0$em&2fE*G!vXY~hdOa>Gg>7Q8r7dk0CkrFG@)E&{d@HifD1ZV
zYQT1zZ3&>7D?-g3YWR}HkaSDA$!t@<XopN&0Wd7&_UccOgRNf$XShFZ9*V#j75lXd
z$T`0#G$3t<{kT%RQD289zEMR31azxdCCDZf<^gu05j+<p=cX^{avH294Te-Mnzjg>
zGFk<eTng-d2cD|Hn2Jvg*x<A&fFTuEzz(_sm`W9}6RrR*r3zT*yUZ0ZpyIAzMOS14
zKKAq2CP2kPs{kHlLR{U}N(C4+ngAYDg)lmP0S^^m!e{~<bm^4fs8e9xXaX#`6j*+z
z#Q=DOm289~7FG!e87nnlJr+(0=vDD~2J3SL5K>uc#8j5DsVp_<!?f1`=2hGk?4&Dz
zkYjz(j;`7*{1QNSy$0-nD*!t03fQzOfVorw^Zb;6^Gbo&fPLHYQUVxDSHK=?<5&Vn
zm@Be58?~I3fsnJZ<;;h$420B_GpQ+OQ&YCocm~SZ4CuEW(+rfe87Md6(3cOYKOqBh
zm3Fk8?P$3XJ6g_mRNu&*cC?)BXgOV&tT*pylI>`c>8Q=s(9tB*(Inf^B-7C(+tDP`
z(Inf^B-7C(+flhnJDOxWnpj6K+K48A4{kBrXMGd8`rM_W6$$t_7qi`upS(Y<?oVpj
z@@ebvFUT@qfU#F|pj*SGuYcG_CPtb(%sk|wda%{j7)(WjrD!lbAtzxy6fNqw(OhYx
zPv%w9j@d=*T0+;TYVvGNpLSK?l!`VO;Jnc)K=V51>`Pmh$<+?77|#37Z-_tUH}sLW
z>8OWA_H%p$z;xGc&Ol=#iq#d{Y%sJwV#@H_MVtpom<J{gPS#`vH{I4=g*D^trCmnr
zd(ssX^}C;hp>?*En2yj3QV{wJ57yb#Y*c*9Dw%1BsLMn}0Bs>RraOBWGm<tvL!BZp
zW3&d$sSr!C0Xt@jBGC6snAd=c(IPP7Qs9tFfhiSt0$Xtfko#qG0u+oEfsHN&`dtci
z%$hCGX|xEObSbdpQeghQW(yoMS_Ce?-=sk91JEMS{wpR0I*b;9?xQ9JdW;r<O)dpC
zyA(M3L9+$sjTV7pE(I1`3Y>Q-aKWX(-ecwg7&lr3>c3&q>>&BbBylVf#^RI>OTGIS
z6|9Ozen2qjbeCYa(K4{nvS05N_z>2CZ6-~C9Y*WGkV^qZ)Lxr{)LjlRpgM*Db1nsr
z7_9@xTna239R@BNEdxFWhJiL4?F6_%#oB`~6MR9yj;U~J5*#;LXHNJ;Na92oW+D{c
zZMHy{iawLMuK_u#;vQjB?=dT2M#ZckzibzGO*9~LDqaP~FAQ>{5Ok|3)bR#nLB*|L
zt17Yrn2WA}E!eC~fbsVQ1#C)1HGm76r(Of*leZ2OZ1N@mv({~3LpCQ9;DCyPdPM^=
zr77lCuxXoj2{5Ok-rm!I+-nzi-P3?DnY{|^m<lNu95*@)oKkTc*s_YX2=Qs202fs>
zLx8FIPysfhBB#I}&35+$^VN_56Dq0<Od3sqV=8VAJK+kTT`R^FuufY)3BXcvMRqk!
z+HIo*_`<5Nu;w)*bU!;GIHHjjJuX;udRlPYMzyjeIPH`HUYRr7i-Jo|+cmmFHlCGH
z!7ita@`O`HdFqH&J0dvlbV+d9>8jwI)60Uh8hnKlr$Z%9hZ57_lFf_?bD>j3FU$h{
zHZ3a5gx$Yt9wr16HZB!r1j8r4jMnB4866a?I=v`px1p+Z3K%)rGHU0XUKX_fFOzl&
zb~_ytOgNns6l{<x8wFiXdj)+?cL*4G`Hh2KnU-YErAGxm%$3uk7hTF2Z&XpW&4OO1
zLxPIa>{yT4SeF6P!>b}`mda$wciU>HgW<T>0VY&<kDT8sfcw<R<Uc(OoRxM;(<pm1
z%*gVgfw&oGwz4Fv-DA6U31HXOU&ZQ{9kxBc3g%tuzF3W$VKv?gtL!w)8}&Qv8=~}^
zTbyXGz?XTIwe1VI%Bp2ZWWXA{B1f^+N^G@at$r`p5F4h(m@fQJET_!EiTS9IkN<Gt
zc)}`SGgOcy?Em!|`ra*^IKbsNz~y*jEpub#4yt_|IBm2H?9xW5+d)eM!p&6Mc;=qE
zFTJORS4Fw2vb)L-;Ld9GGq>1#(pzk(6mGI+$u4}!Hsl1jY_tUA<}5^Dv(YlpYqSLP
z8BKse6}j8jfNXO)aMoxE*k}_n0eo(j!;L(|6>jAg7u)=_?f7M2)@TAO8!Z9nRO~PK
zA?ICwNP9jv2Bid8Pzepdxlu?3_|mp}fbVVzQ@Kw?2EeF_f+;j0EP0EJN#3V|k${7P
z8D&lociRc#pl%qUX*hQcRRX3}tP-SopxBo^Q0z+&6z-wWh)0TYTsq~<A>!`FvYh!I
zROVhZq!QZaX2hLHceikiu+DJf;jR<x!coGM;RIn9oFNX`u9g6-7dhiz!+Ape0*<R#
zzaZRvtSaP`iY7e3-6*sNKVzyguxd0pFYx<S3Ak+1GElIaR0-ftCXaw0TFTo*xsxdv
zfQ>h_lWYECaq?iK=NQ0`#WmLH)z3%qPEd<?f?B*2)Z)%pV^T0edb$JVjb<Nd;{Bn<
zcDL8MREzhAT8J<lyLmhfr*6HO$2#q_B{TxCg!nih%Y;P%2hZ9f7zv92ahUb+IPFJb
zKSsjj#3IhEkvL~Y7<?b`5k{P&1;(I{{zx3-kuauM#6ca2gE|rh6$?hyhjJv0AL5XX
zjm^gtoeWwSkYyG4m3qy^pcW0<u&L@+%>GCcMHx*JCmOa0(XhxxIrWhg(Xfz2!@>~_
z%SLpM;`h<CyFHnbG|Yd|Fy%$VtQ5UE!pgOe$prfy@8GcumDq(V53b&uO6*M~Mpz-N
zD^7ngadu<z#MzF0T=8gu0ZT@Uz-bk&^?eP<faSIf>`<{sLx|_xw&kO~4Fk+iGl|ic
z;{c>P89S#oFn<6l#{nqE0mwY^lw<eGaRAb7LC&rofLfd)w%|S7TFh@PMp%mx)?!j?
zF~VAmuofe<1@BX&79*_12y1bQq&os(ol()WFYMNxs8h2Op7x-r*Srtv%o3QCb-(7a
zYU~R&f-Gak=5a)YUvlYwzs6Q2`>QTNugnE?CW+j8*>g0p+1<zp(>;9(s>Y|FDkDg8
zWWb$=<cPAnu(gPC6FBdbjh$UV(hz%WDtm6EssAU>UNP=UjJrbIS3hNiE^u`5Y}viQ
zvsH`Ps>N*8Vzz2ATea9~Ew);V*-Gb5%vO<s8L)vV($tjGX~C>hfCpE$-}nGqB$zHc
zIuyGFo179C53#m|3kx=)#Wn$hi<ls1Z5)e4w#mk^xLGjZG~{FIUKy%rLILwC+7PZw
z?*S_k6g0b-k0G$^+|20n8GSzZ?@--tmGHUs&5D<m8m_}*cev)+n`s%YgP+~<!MIr*
z%4WMI>+Yb=W%PNn-PEUXj5OO-KWTEWiYToebUG`TbGjfn?ev`Bl2ah}Yne})zdHT`
zYY1amHdM*H`>|V94ykAl$W_!aItLH`f?oSUP-nJ=$zRvaUqv-q&I@y1yCu{Pdi5o!
zMT53eN!rv*6!WfrMbd&^Rf0NG`?ONFs-l#)@IuLE6?pI-^m_R=s57tOx9g>y6Drxh
z23e+&aMsr@!{OY|aa9gB?9rLMCmPyIKyFxxhUx1W(a?_jobc6Nc)?Jo*6?znpHJ5}
zqK`Cj(MK&tRf~q{8s{m5+mQl2rG}QRv2?#g+k7SuNsATI=Z8!-c#fG+xh^-BYrXY)
zf2#DVQ@W3AlY3@Da28~l>Bhl(;3GBzfgLKmj#zBKMqB}mrV7|DR{*<H1#H?Cz)Y%u
z9dQM4G*yJS2x8RsnFJ_&n0V?yuhA+nXdddsRWVv65*n2)u*anUO=#q@{=Iq$zy+Nw
zStrNMwggbk6`|&c8g4U#q*u`IG^?#!gcSfo{|rg6UHgd=+@CTJMc|x@eK-Vi$u9~G
z$i@YK8sd{8-Qt^6G-g1ridBO2t1v6GpD4j|r{tO?*l%_ktTS_m%A=+&0%wd?fwL|J
z_I?acRbWEJrv_~3H%$SIsJH?)<qBXXRlrWU0>~W?HDF!8ZLWZAD((t4;);-M0zUCk
zY!hJALaP8CWkOt=t(6MkAtrzaRUwRxYEiFa0h2}(V9KR4f@4mB1)~YD>{8(DZ&?h0
zM_9>5xXZ#S0U=|h2CUa2D**#4KF?r-t^i1&D_|aV2_SM;z-Cpn=>rR?0=DD|AmmtI
zdZw5=E&LKdcik22peq16-)uu{))m0fQ~~q+lz@v$f!BcD&xWf6FqW=>J<$~a33Ej@
zXL~GXWgz5CpZ3s|4`CSysVO&NYRcKvlpCbRGf>WEKp*N*te$~#HUs5G9QyK<Y(fU)
zD(z@F+tG3(cC?)BXt@zPTF!Pfexiiw>m5z99o45j(vI3(4IND~9Zj+wO)?!#vK`g?
z>1jukY)6w!N0V$v<tpuHlI>_>9lh)`9q_>|X8W92pL=X@6Trv0nC*Uii+@GkpVqR~
z{U|+T1zF}8a6rk}tZ{77A2^VST}>Wl9`Z1Cf~~g3U@96cGdH=ld(PU8CO8W=_OS>|
z=#gE-t|fGBTaagK`n0P8r&YAU02hr`0Y=6?Q4(60$<+?77|sxecDxvb<(D8>M=`%4
zetRvd8D{ol69m9?*KW>0<60CyS8TJv(E5%k!*3UH9wcENm^?VKi_j_DY_j$$tQl`F
z?J`<lkylLA?|u@7*4L&Z^nw(G{=$QGHZ|Rf@2pB@8Y1d3Q4v79_7f!}ZT5GlQv~LW
z)_|ib#8Pa)j+>$g4165(8c;V{1V&v7OuH1AQE?}*bFKi|K4DIPcB4h0+oiyuOM#8Q
zYqmg_(IT+qQefGoz`{wh1&$jn0=dta6et)i0v(?<DbQ)O2=si;q`)SlMPRc_fnJva
z$3Jhjz@pJ2aKfd)NtXg`Uocys-DnXQST-pzXtW5_T^i;fgXANV#IZ;ii_<nN^-YV4
zP(>rZO|Zl19>JK=GSF?=ulEal2<yO*NfV%Gv<_5U3NWJfG8<%<%K-*d$1vciOM!W#
zb>O&5fwM-3fr5=|8SptU40M<@0Un`Z?Ln9cz93-7RkViyCydsa6Fw1=I1z@K2<<1#
z7U)s2SNkBxRNNzM=J(7Bm{Tz;$h~%<Pn1B8s(2Mx&nK-4ut`OsjyE8SDsBZkucA-^
z=AtWLi#970VB!yg0yeFp8o<R<K>_p0TL;=~@+JVY*1f`tHYXEcQbj?%q5+xH#B(dy
z5u1$(a7;zLy{7^Bh+XItB@iaFSAqFlPJmM?`WpmbS;g9bteQLlnA~0$)?w4U3~V%-
z07q5a26n;~K=E`?z(!P*4xme`!E3;JY;7a}tHu?uZKfy#L#YB*F+~E@Q-$(s|5#gx
zRCEpne3?~PW(y~fR!#}#HSVG(1Sg%I5uC6wt}F}AIAyrc{l3{=7UXQKE1iO(jc#R^
zV7F7o{D4!&eEQQ??WkbU>1n~T({qCJPIH<OD=G>nPL4{P93>{l1)C?8f@X$qaur~s
zin<95*nFulMRqTlvkAe3jbvp?;DcRZP<<FHj9tHtR%J*q=aex#?(~#k<Nr2in*@DM
z2LyGedjtzkPYK#>ge#qb9;f|+0jF^aR7NG4bm_EU-sys1^B1kPKEc8t89gOfa=Ic|
zb$Us_)KSiuHk+NsIa9Hjp#L!$#%(f`0nc4E=B`Zcm_s^pggO`=@H)VxO85W@+~-zi
zfYQcRrJd0{%bp}Nvf$sgaNoN#J74;m06Y6$+vH0ChW?S0uuHD}07_4~jaK8{S&etj
zDjO3MOFazRj41u)jwsqE@Li$GBx$q3uQEwUs0>(uSL7(RT8XVztko0L`5rAY_E$Nh
z3;z@A?b<6Vrlvw_{==2!xwDn!x%>a$$_i6A4tqHcdpX{n%k3I{Zo}H>fip(Sz#i?d
zy2G?IAl#94)X3bJ^;reUxE+Ug+u>}=vIDq1Tm8&^`kwSY9V&%8wOO)x=WO#%fP&Ey
z(B@L0&uAIwH(CM)j3&Si6}j8jfDE}DST$M#x^0>!fX~=+I1Plj!g;{r;_fhGH;OVa
zXEXuM7%c(kRqSIakP9xK(j9~QiBbX_R|yTkxxYvS_=2}vhwpg_v$|hJ2EZ;A1yg81
z*a$2#=6k;iMgmSBW|TRG+-=8@gSxqdrr~pTqbUO%MywK~c`DhLJ(cWBPbKc5(1_=f
za^^6i&!Wf!H!Ot%Tu=#(#xqEn8y9yi-3ftXD%L)PV~F((a!MuC=U&B)DqP3gQ<)PA
zx2T|k?^aP1z+R)tguriNCE$=r%K-N@#lmfkdzxsE?q}T7<e^J@DYq;OD%`t5OWeo$
zRJ3{k-+t5ckEG%7W3|KaM{><``^Wm^0ZR{mfFG}GEY+)@v*InH7H<)?c#EjTeXz#7
zV372b2weSW6mJ~0c;l$W8%Hff*nUF&SK%=i^vz;~rP^hyXaryt*}H$5_pA#zxMJ&I
zB&-9(VdBH%%pZyU7-4>L0>T3HxjGW3%}5wwEaDK4#33FDLyScn<B>SVBaE>hUq%3i
z8{;^nBVkAplNkn6AIgctI1-Z7-FyhrL86smI;#S|Qm?5M)S^Kfc3a)K**Hn9C}ZqT
zB-OBYNE%kZC`U(9B^nl+D2s@7BigRX%#sleOGK0jO(#Xe>=eB^mddpc*o5^RZ|yPI
zN(}bObFRm2w_r929T|wbd5jIKOwy~vvU`iC$Tsa$ibo3yST=eGFlh6x3=FB*QzgU`
zYMb%AZ@vIi(oAB&<(S=cE7NWevs;eYO*f$CcH!AA$LyA`?nW(+w5?_jtQM13i?P&V
zEVVe&wHQk+#!`zTU5g`Ki?O5&n*df+G*8#<(LH6OrV~7kwW-%c4eHFCC8U0veCaff
zqGIsD7I0KWZ{Fs6bfi740>4tP#09lz&~g)H=g{<IlC=4(<|&A+KvL#8T^D7Zb4w82
zD_|!OofgbHT@bM3C1t6T8_}zqs>G)5<5)<m-?OKz7;Gg5TZzF|zMDs@&>M~;p14}<
zO)Vy_786(NR9-xBwHQk+#!`#1)MDb&Sro^p7@I26)D9b?B2TJQPNxO4P6^<&Q-G&c
zc3B=(c`${8r&V-oToEwNh>5pLMdEHjpHrS&cQ}oq7YTjQr6D!bpVI76(KG{&sc7ZL
zPo1nv(55-ZEDfHrGd82Qa|5$W`rtm-sk%KX;Zr2^jOXxheM0t3!*Cr^8m@z*J@Ua2
z(soE}Hja$mj#+KWVm1!i-K?U1o^LiON^AYL2+Bi(qSIZ115RfIN1X!4RP_CZdHdeP
zYkcZtQhKUrFhbxP|4`>36>TN?f)*JI4SuCwdr44dwv|4;POwcyHCktd$C^CU4tn(^
zs6~UeTS@5iMC6%w^(MbkuPQ;Esm<gYQc)UPXNAX_Jk$<)y~G>Tnb-L{^n%Yxm26*w
zEYnCh%4_f8SmS53>QM#CcAnXhqG2T(R-$2gYmA0=nm=Z@(=xzoiMln0mlXZby1o&8
zq=}0@YO%3eG)$K}4;k$93N#%2voTB4eEJSaixtu*g-kYhOgW%ppE}uoy=F@zRGiYy
zWt%#{Ot?~(nQnDWuZD_5K<61~nj5r}rcHpeMymjZ{=#K&9zB(!r?lf}4_WmxaQu&H
z=lQ^r3ZBXh*zrGch2X%Kf&z9(MKyrXc6>*7N-n(@);5lGa$ga6hte=G%=7|7y;pW@
ze=xO+(4&detL4VMR)T3JO?dPkRng8^sMRCQP%{HOBJD1f_4*hYzo!YGwClUC;~FO?
zRa$e`eY=6Hiy38~ax$V4D!0jhyERn?I#l$Sq&L<?$e89yNZk6I`zL!-t^$a#O<!B<
zzuOtQeM!B!pW4;70(i%+l}rpPW>^I<)Ytv)2nm7*pXbsHT`PaoCJh?1X~C};Edlr4
zc&O8odrgi?ZfW^Hr%S{j8BieGLMD)hIfOg}h&y+2tpGce_D88GB><zKSVLX3E~*Am
zE)`XRXhI?%mRblP;{)xIiY5zyq2}V^{$Oes!PQvmsuJ{>*~q+LGRS+EAk!w}ooO=|
zk`pWkO<e`36jDVkc=$&(cWSM>)3lq%q+L`|J7)w}tiPab$&KftI!#+pt2d|8%BgF7
zjoJoP1eS~r1IsGxAzG(mGyjL?hk-d2SHLd20+{?tP{1y#WWN53hUzNX`~h#MmTf4>
zG*rtrlr(7Qk~LHVLPPrGN7_&=q>_e4tf3O%VXW!zF4L9)w7yYhtM^KyiJSwyewxj8
zHQ%8UzHu48Q>9JGU%TX2z8tbv{r}i|8}PWU`p$o5t|BIhNCi=d0&3BMN|i*Kk!>Xi
zs!-XH6L~bY$I=)CRk0N7Wt7OWu*ZoK<QEhr5k+m4R_uz_*rK>aw5FKivcibgZC&cN
zZV|1Uh$5(4)Yfgyq6V=wAYi}WbG~Qp9oZ?+fA@KI_uu>I=yQJOci!Lbz31LJm)SoJ
zgO11yPnw#^MM;lWVK5MgZ^0n(29mV^d(uTfyNiK#m+1@gi#B#%VRb$O{kQ;0(>XAI
z(y7=uwGz~_C*=;g1tMXU^e-}!6p@9o{eiX<Rzb|>6tq=-(S#ssU~CB5x~zi8<P@|`
zSOqbaQ_yzBDu}B&h08E=*KRV=O1Rv$9;fY;RS+(Bt;cCAHBq(_E_bcRX**&S1e3O%
zg|@3!;gT&uB$tg-u3_gP(g|k@b7pd08M5R{rZ$M%VemNS^x@;QRTzoGF6cc9SBxBj
zo+6=xhR(D9q736MGM-xq>-pKPV9fr9Lg~5Kcy1-+ITQ5kUk@;?2IDzJ+z(@OO<T%H
z!CcdOEevu^&=YeV^z7%Fp6iU~7Q%Xdwkzn_&ow>Q8_%tTJZFNQ{aiC+{l;^O*b8HG
zP1~@Mg1M&m4jAN`peN=!=-JOTJ$D(;Erj*_Y*)~;pKE%~7|*SQJZFNQ{aiC+Q^s?O
z_$3&dYuaXv6wEcfkHa9>1U)g=LC=1!>3PC<ZXvAaXS;%){an-Yr19KJ$a5y>+0QjI
zmb}Dlq=<GHJIZN$%ikIW(FS7`w2fH>F`iS<Hf0sW(VT*|Q&vHI+*o%IvoJPR+AbSK
zide}hXe;`%$p=viV?)qZVHHGWPC;9(RS<PK1#N9sK`iDJv@Kf&@ik-JL0pBg$r;;{
z$wvVYg|Q0SO00q?%_(SGwhCe;r=YF$?@Uxg8H|mJwkoS2YI6$O8m)pz<`lHGTLsaT
zQ_xoT_a+UZ9>%6YThc0sv7Cao^HxDz$SG*MXcfdlPC;AAWs?R`3S-lt?TS?p%Q*#Y
z6aQ#J5R))A1Z~q+L7d1bXbb(52|*Olm<t@*>aBuk%qfiRpG}AYAPQqc&{kv>L~%|*
z+pk|SA&8SOHUw>_t%8`%DQKIs3gT=|LEAa2AkOC$w9Q)uaWSW$?aNj{Eaeomtyl#S
z`ijdHZIv(>vP8yLz!wjW=__Ue*g=f{HT|{|6UMrONM16o{xEM34s*Qfi*c8MK}h0=
zv9=Hs)|KGM_OPScaa!!SZV!&@9mhGY=U@;GVTX7N2lZ9!N|c%b*FuyTYdgVlY$B(n
z%DNME&YhNe>rN~hYYSmVaC>kBV{<zwR*j!_g5%aiPfHODvPf{)8h2V&tvgX{hFJ?y
zVXW;OmG#!jahSGNj=UjjC5B-T-4n-YsnpoP-h8le#Nh&xaD!^c@yn2k{=q1Sa${{L
zDy%C}WCm9|$63^jniirB21!MZ)6!+#i7Dq!3kMV)FCRKi%Z$^|GV3(7tirgblN@Rs
zRmdx`s-d>yIBgtNP!JqPIGqvm)|FT=)^=jrbmta=1I^^sjX0MW#~g<jT7%%YLG%Pi
z3S8ZQF`+qRH~?H|)BiOD&Y2<5Ld+X$nplA0=x#YqTca5TX^w*Q-!S@g2he4$gFxE!
z(llYuhAkWzwi~C}jjK!}ra7%PSSy=$(OTJ<tVzVnO0;#A_Uo#Jbv0wkl_u;g)WSNr
zWL*h6J+$}}LYh-RDNNu3pMySaO4CZX6M5@#e}uONM>u}9fZU&i!TJcnamy=^;P}OL
zHe9cmLDNcbMA1`lWMO|yxZ13@y5?jRw;pFfZ0=iwlUwU?mWAyWSi_q{uBTwQgE^Tp
zjj(eJn1JE-<Yc4C@y=O{$Rab!c5*~=(Bb}w)mdu#+fHH<shEArX_<myBz_0WUG%ey
zT!2AGBiK!N{m-3;T$c&d^dx4_29wcYQ_WqnhjchSVq@J?4Xe{msSMbNGQ>ihg`wRY
zPLCi?9SB_p-=|<uZ!B`9>1M5N27zm3ZgyyOV>M96e(<y(JnaWh`@z$G@Z62KAH2m6
zo}0grO+R>UrnqkAQ-1IiQ$KIYks^4tVb8v_UH7`fPbKANGWXzs@lC>Tr_Ux$SHWFB
zogOolQ^V@2zXtWU1cMNfwQd1#<(PRdz|b2nYF1=#!(iu>8w?)s>jnIJ0l%J0%1z^J
zUqoZ)j#fA2!S#C%BR__;A48fk{Gc<6A5#ls%EF*A30|#X`Ykw43r`(zCv0|uGjzdm
zmti|Y7X(Ir`?ZBmF`*y)0@0?M@~bK3QnfwFpE*-2sE8lnQYwS|u#l*EKlU|^;ELh<
zeUa+E*5eL8(j6|#wxSA;2Yp|+O8l^Eit9q2z!Z2AhMn;eIBsS@zh65&`n6LBx;Urj
zqOY>(DWVL<)+TMY|BF!&r7%`OTa#4~$((|=Hme}oa|+r9t%BHZtUHJy7#k~XGe(gj
zPUjS~U9bvbA*Y~i$tsA;IR$MiRzY0NDQGKw!4!!&3S$$e?UYpzA2-$=#4L>UL)$r{
zND=3A3feAO1+kD*(01x;COP6XjE#!61*;$ya|+t7SOu|?QyANdiK+l7g0WH2R%R7M
zMNUE6id7I-a|+s`UpG+^jW9MU+R|1*wB;1Ebyx+_l~d3*{Xb1q#0eN16>UTRY81pU
zj8)K9cGW0|au}<it;#Bhnw)~RajPIEathkcTLm$nQ_yz$8zv267RIJQ+j*-XF60!n
z&07U=F{hwy@3%};#2}1~ingp(5JNcyZNpYU9LXtY8?y>xJg1=Tm#l&~np4nr(kh7A
zoPxGXRzZ}nx?H&#fn)llx$N3OB>x9X&`zX`bq5hLgT9@^ym;Aor~&MVZx4?69mh*C
zZYp6A3DIDzEkw$?5**|>TO2x0iyh+a!6Clm_z)DsFo=ejG1eB2?^)|gELc}!(Yg{G
z(k60Ru2^^Cs&l7h)w&ZL&^TKWb}+XG2Q%(hp_ns%+6fL}6Fn^#tUJLGY}{#?GXt}o
zm^aoIV#&I4fUa6Ahhzy1ipfD(X{|&ZjJYYJWeJ9zX~%Il43S}uK{vj39M3|Uf`NiK
zX{_zUDeFp1nE}|&AvbA;Tnn)TgPcc>)3R*ci3$u3<4#MB5pa`8ORdw;(&#j_jKR1&
zuL;;Wz>p>4q=pJ=6t=TDi8hWZcq2HDaLyqnziC{FqsH1!beZnlLU5p&9J&$blIED>
zC_<bB#|^634IdMP1Bk=H1qlv_Q8OS~hzVm&6H_p3g_h&SX2wLCW1_^2iF7$oVXYh<
zC8mp|2|H3+N@2A<InADY8Lf(&2u`xA*2>n+nC42eJz1IXz<RV5l=dsAg%#9q%9SSU
z)YHO(Pgz&OP8Kcx^pNI+FmF8sOI%_~(@MD0I({w=$!5JZILKSgAn!NDYb7{zc?%dE
z!mVZqpETp6mEfQ<H<KWT6l)SUld##Wx4Jg83KqoXzBM@2;X7eau-yXpFlpqo4TkrL
zq@AO7HlYzxFucVh3rvo84q@nBFvD*r2PMZH?h{#^i>B-CB-)UQxlg2}9fpy(3S++*
zH~pf8VBc^zhpwLlZVuC$Kyl3#W{p;uoDPRwY)+59>eR40ZJRRA(9HP}7~0qB5yYtj
zp%+oTgQl#lEGOp?)SH_*U_G6i6<XaGg{vE&fjahMO8YUT{g~2zOld!+v>#L2<=Bs@
zg)!MVuZ6JLYxg5<_an_sAsEMgq`4agKhl(+y%b|goAHz)zK_ckKf#n=ij<#V%9Y|G
z2IV+93fsb|gYDw<Xbh(gw96cFGl*FjA#yi*&Mk1keG*>UFcZ@oFNcoE?k4JBaNqAf
za}j0z?lZGHXY=4Id~Vi9`%-1+nN~MF!u5L&IX{N9A48fkaN0rdC%&)Q$B(InF@?;W
z*Fx|*4^uU^mw|<68dM-*vm2bv3y!-C+u6JzFiYgRh@Vi33H{)gmNwm#Uri~ODyOWJ
zN%N#BeTtZcu?pJ$&5N)V<cEbs&HJ&hX$05te7`SJ-Pd~D;YYf|W!YAge^1G1uUjR4
z*fqs<>11$D9)w|MJOQRq+F-|Ydh~0j4s>x&<qc*!PZ1q3w$f<JSOw9aQ_wbK6~u5(
zLEEHN5NC4=+7_&WDE_uf!xiCsdSH+`7~J_1myPu;E;zO2#%Tv(wQWJI4cp>}ecQF#
zR$sf*X=@Oj4ST(GscC{K#yfN7t(Dh)DZIYovCwOd)3pl*!zX;4mLo8jIf*Ije)#w_
zEWd7r@bPo7TrdJYRzr&|MZ3!hW6Z$Zwl*#Mx(rqQR&76p?y_RlE~ys@eHtNcdb#=a
zB%D4DgBo{PppSy@7$>6GSX+rom?+0!Lw!ZraY{8tnIdXoY?q>~&MJudoWiBh1eYV$
z12KlwF_jS~jWw4QdYmyHcMzvxn8c3bw9Q)u!C+PqOrpbhXdxJyS4F{CT5_>a6O6`x
zqThsYHkwvHnrD;2Xj%i&Jev$g<3H<fS2X+y7ULO)!7O_OU{tXB1!`dwwn}n6pW*2l
ztwg+dg)waLcj<9w9dOlJiB*^g-n5KDR{;}vr|BGodE<ni5rjh}VbdJ0CaHbiXm=1+
zn;SX4w#8}L5Pl6VAk3->o@-S`(Pa`z5xvH`gUG_zKIBrT-v;Y}7&O+m63(yxt_J-!
z84oRl_1hNo>t~C8lg4i=!Nl1Mf|>A}Zyeew<2gkv8f)%Ci`wJHX$N7oxeD^NEl!(X
zLDL9x&IHd@5TmGyuoY57+*o%I^)UGrM88q%fv7Xqw-U~;UqSR+Y&^6O)^A(TuU|p*
zTVnjS5=@*G6wHKQK}_m?<2gm7Ve)h7d)N{5;AhSE&=U0E=g0TZ8uZ}jp$uKdJ~$|F
zoyTOv2}f_hAb^=K#O(BvP^bYW4bujbfpN!0=&P>de(J_hsQe~Oc`y|>V={!Pg>lF7
z9hmA~iTiYzDHwO8Uxo8FOcrJcW*BA^W(=kYnNGr_VcK9iU<P5LKkPzdf`I)T%z2m#
zF!L}AFpDrpe*~+2Ff%YGVNS!GgK2-YAATA3XgN+BuSFhU+|dTNc9;&BqW^-ty#{j(
zj5|)jZ5HOdbk4n^0%eD(f?0rBfmwxdN8^v8Trl%6!>@zCA47e^oP)Ul<Bn<Q${?Q(
z=-Mis7V*M<6=oG?=1zo%xd7vilDn{S3^NUryc=~6a{{Kg3h~0YqZ0N>m>HOp)kqJf
zJm$2x8-n{~m@6>T(7B@ye(GUP!kiBHKOINCz%<q18VtrAbL&vY>rpow&_`h0QBaHe
zhbe+7g{g$8gK<ad9<)8oILrjhBuvA-PK$P_Lp{PAfl0r?cR%&x$QR7zdgL8u1?DQu
zD$LA%zQ0BIS%N8sdkIV_%sCi$WZ#4|U{+xYegb_PW*){J?Hkc=U=|v2bq(W=b8tHk
za{*>(6VkXJ`G9dp8SE7>wJ_AVV`4MP2r~uK_yGDJOa{gsCt*JYQ}-ak!Av%xU0_yV
zR$<&x1Uq$0FitnN#c7dt0(A{j1+xIN0<#L^j)rEW4|4%#D2aB4nT1(}iEeeiP-n0o
zftiGv+J?Nq6m9qQ^Kicivj8&=ojWSvrxIogW;)=18q@p<nA#oaUoh^N!CFLHE7D7&
z|H8QAGVE7imSI+5igrQ|<BqB~BQBT>Oh3#ZOj+*A0e$AJh!>_ErY3hijJ&p^zrmdU
zDbxYXMVJMcMVPU-yV$YD3P0yymSI+4uELyvA9tj8A%2)em?fBk4zwSPJBoIr@4=M7
zRKirj)WFoj)WNu;1NJVM4B3S?ff<K!$7$GSVWQoL3#JsN45kLA7N(BualUb10>9^A
zmSIBBxuXq!+F@p3PQ%Q?%)!jVT!dL5d!29O1#$*v0%jV<9g7)^J(w#n%P^rn)HO`*
zcm!<)Qvy>7<BrL_NE>Eh5cLJ)jt<zfFc;nd9gI7U?n7VRk94w#|51z=n1aVpr!ez}
z&?jJ0htUQw8JIzsOCv5c>hJ*afH0Sa5atQg8_Xq`>4Rt|7<V+l594?7IQJ!_a|LGf
zov3exVY+M6nHcu<bMUvwJRL#3!36U&FMrf0rC$c!(FD75KMlJ(+y~~}*X8+TcYc@M
zeUyFlXV7n9+?Uy1IQO}6_pNb$U3?LS9}~X}a}|c)(sqaYR5-uI9rWk)?!(gVOVQ5V
zeSdlWS=80fJ6E(P?DH`0o2TxBr|xT~&gaQV^g|ea4wPRb<##tLVcg+9yvc8Jh63*W
zu=5LD?(=BQ|3$bhz_{;mId}IhF86UQ=kC6L#E+`197nyt@N*^nkOe=v<32o6@*$i*
zXE5$yPW>9j4-CIv!=2N!r*N)<;U>=Ra35*m7eV+H5O=swRk*J=Fdcrn!F{*EeYC-S
zvB7<=fjhvv-Sr1Qf;kWAxpeu72KRji_i+aIWrke3$51aYjK2%UeS5*_t5EJ5827OS
z=kC6wP>Q-JgK?izaC&|nU<t-;-Ou`Pc`ibp-Nyme=6w=*<`)#)2LasI09?GIA4J`s
zK>hwY<`cx@{5$;u^ouZVH+|>N=^2*0-@Bdd`7r?2A?uDGt#iBPJO3T<+Xdrx#dqPH
zzV<rdR}fFfZy;WnG|Iv@aR=SIV7OWR_4IBV`lXLzJi@rW=v{d3#$OEMHk^06%{%>h
z<mUp6+fv@`C-3y^w^10kfxL5f`?R}F+T9NAIX(J!Jxl`(`=HyS-Rb#hmT?%jk-Bqt
z+l0G)zn#0=P1|jBn{)pyv>%My!PaeG>-Mg7{<x>}IT&v4%DrW|i)sx_?wCa#!ElGw
zXuv%SJ2y~s+uJ$+i*UOH<F-q4?rxjQ+26)o1mh035f!(#S^Yh@{yyf0bC|PWxc8CU
z{-yMfalZN!oQq-3{weYc6a6!^Ax!;6Tyw#+!??q3mBSraxa*2L7S5s{{Vv8T40j80
zyQ#PhHr(zSqezFFk+^*|_$%!5Fx+mS1jcQrQHC_DV3IK00LC3|7Y)XjfpJ@9IDH+`
zu7_bd+%Ll&ZfA@#l)W6rZGYkP+`{29jN4yfS@qyHaR}y-+c#ukxao!4v*0xB6`w;r
z!Z7dd82b$B^AF(<W#ldz&cD+yLVpRy?Q^hJ&#>H=z~#s7Z}4L2b-`~2#_d<&!nyQZ
z`167Mo<N?9{~TinrT}>l=AZ5*Fx+O~dV04(z~o<Go`-R}1i18Ae`PRks{pqTfYZAl
z`A>cp;bGh_{hgluv<SxiwBNbAU(mas&(9zY_9b`lckm4`jWFyB?$`59&ptQ~<9_z;
z+!s-P{-T;c-d=!lKTdY~OVBUD@CV9u(7S`b2X2Sq&yxAOV0T=FeU<WaxbA~-M+WwO
z82&VOG2njod87~He$MLr&wn2E^H=CYF#NeCf6B<;TDs%xmyll=zT(GMsNLay&EQ_P
zZNG&19mXAeRd^D{y-w@irFD9~%1Sr)A}Zes<xBYP-BR~rsq;VjcNpI^@WZ!D-K(Qc
z&u~>R?)_2c&R6uyVE7W~5{&sR49enO{&fDL0XLSFFZV6L@TE<@wc`%=l3`H40zd9>
z@AUC?`$ZVO*vB`Y-EjnQ@r4FH-r}nU?r`q_x#!dF;k489k$M`&J)w4wpPinMWa;Lf
z$GXS5?h&hdzUm&2x^N9E=*uwf3F=xs!_UIF=cO(j-)fnG;e*h@f5n^yGXdismO6iv
z0XLSJ54a{^_{6e&)%n7?1OE6>E~q~VKkjhPwfIiTGz=eZ@l64DlzkiFVJcuMVQOLc
z?1j%l_$b32=f8vg@LlL(xB%{sP3yRBcm`r5{H<GF8Vcip02A)-dngn?uzz11mU!>(
z-SN(Sd#d~U1`Z5W_YNHB?tG{((-W_a)y4Y;cK09X>PAEC>Cf(cB(|Hut$kPDp27Y+
zhk^Z8+@J00>h6hUkb0<lXs|Q8t9vNhy>FniA8xtuLA#C1C<i+CbZ0vsvf5DS2E>8K
zP~Q%POSZ+M&sN7Djz=nP9rLYT(a5c#NI|6V82%UZ(8_;>#+IO4g4P>ojqsm$jIwtI
z|H2~(=Z%MZZmo_z>D?UjUKM!_R)gW#bF8qd*~=v2Nw2KOD~&G2y+IR$i8pKl7kZDz
zyqiX>f5vvk_+aeeGlkyGiMZDtvs(I(^dP{QcyjCA&GC3`-0O?QlMgq0MG3Dw=6&jL
z%)2GweKee4R%*N-iZq1d4CFn*NW)dl-V<>0elpga+2cJPyXVO-#=T;bo_8a&5H3WL
zkNH_dxo(Vkk3GjYY+cY{q4`1UU~_8!7kY0_cyEt2|Ef0>yZ1@&hoj|j?^Ow}KheCy
zyCvo&V$I&iJ>{!7vT1F;9%oifw5Sa4(YzFIie2My-7K&G2~<y_$$Py?Dc&1-&8<&Y
z$E&IFo``v+3GWe=?gbX1$Nn$$UiL!V8(=ku3loK7$>!)!j^69NBj$Z8+*49jv(0-=
z<lb<+xoSf->*MW-YVWl%?=6XDuQKMf#qMIbySx~hYG=Z`b)-3-?7KT2k9+%K2;;pH
z?yWJeEP?tkk=-15And&wu9-x0^Y)zYhfMl+J^WO&_oFeik@xBt+dk>-?eWSJ-Vep@
z@oo%zkHuog?~O-4!t58?9&~Zk2<RC%p2@Xdp?Av*8E@aQOmC*wdj%5P7t3U-<LkW}
z(M$>Ba%<w&c>L~l-W}0;uQ$=_y(U`zOuW{6N5bn!n9|(T6Wdy~-TO=^;e7&K>$aFT
z81srFZ({FeMR^s``sBisy<5HR=bGbl53Z|5US-Le9$aW@`?*5z^&`pWy$4v`2*~Wh
z?MFwN(IPG0nZtDP-Rq83du=1=nDMHb=3n$~?de4pp1akHKNt5}V!d8fkJmf$flS7G
zdCdE%5%AS9?*MoYLschgA`Q1Qg~I0wqp$t%-aRqzfrM9*@QTl5K8Z3!e=6RaJeoW_
z*1LJbw(vUd7WO<Z8}nXvW?N0<b+359yXl2@-&&34yD>TuuTD}`8uKzS@0Bqxn}}D}
zRMnX5+U|m3wtvL?p=h=lU2HKMi>;e`n5lb@nKA9%WCkyLV8jf?>QTfzgxY@Tv6^br
zG1v8acf8>B_S7_2ANF3|1NELna$Ow#wI;qLj@}z@USCyBYt1@uZ!BKjT%Cz~e-c9D
zB;y0gDrDd}R2K491HX4C<JG9PC%s!nPzZ$mWW0LR`w@%>3V%80eK(Xa4NzzXyvZb+
zsvtVSJW}=|Z7-*tgD@P;8s|dHm$tw!*lCEmo@g6qsQ<v|&}!b9gUsx@crv+;i4^t}
z*xA(klQ1UMf(Y~D{nnwFb%tvU^8BI5o5MI)6ol73X+oiQ-iRMi!f#;@>^JwYjjf0{
zy$^*G2=$ML64f<|XCj=4w3Wi~j}Kuo<ruKO3!CEA-fLo*-r`9Uv+dYV)>Lzt=6qoU
zp@MDC7%3ceehYi!7`a|&0#h(Ld$V_fle7HgN_HFipbGYgE7xr-RzFJhNHt<82=9Q{
zWAhZPH(9$U*^NF|#DbWjg$qpqBMmQiHCE)}SmB&M_wL^4kN0{%)>FN~Mz@zmi4>Yi
zu&~N|tOt$B|2HN^n;-OckFZPs7^81CQ+u?sH@d&q`=od5+7di_5OcbU@YRSb!?OpO
zf#nEF(QixPjT~fz|71?0kwTT^UQ?21jOrT^+t1dP<rzP&uUB*EKbq)gK@{VPIbr*S
zd9;ToMf1P;LHK(5;0V(F6%S|WI0qv7mHCfT#O--!h`9H#S{~izW#~5MyntThD)sqc
zlz<iIeaLeK{rqq&@@96P4|<qedk{q`*}VNulL8Ck6-IyJpgWr&H=liiweYbUR8$xB
zXP>}%28zGBA>q9_X6E3|1kWL*F>~hWP2g-{B2_2EWHGqrY~;PloOL=AcRhSpmw(nl
zqVF|{{`1;I-}?m4M@aP9!i4wMn0L21F>&@q4PTqwLy5b*qMqiYH`Jr^)LnOZx51t<
zqXuWG+i>bzhw~Ipm2N2NbY(ML^`u7J!sD!j4;Mz-!rqUdqWAJ*j}24U>n!Gs)t8WX
zrtkrHFilbDebI#eATs^h#Fn`Ckn_Y5cT*4MP@UsSs%!2x6Umd&x44u){CJO=@cBa5
zgdcvKef7JAJ=OOpf8QEPq~P>5bHZY_aJKPcBc}Iw?-=nOKjxK>tgG5mdzbgep_tdq
z)1xUsf-}tWP^6L7I{gxMCwq2-^Po8gdd0>k0w}G28bazUocCW}lIP}q<|P<C%^yfE
zcn`nO+;?}4w>M$1KH>fM!#&<-k@DPOrOOC-vQ6-0YcCE=Uxr&<Pqmj$WVTe}3X%UG
z#R-uo*!Usu&K@)#^VqxfsL85E2JBv80)=6;h2C!rxk~%<To!+02+fTA9c;qXfy}=r
zn!tHFTJE*lLZc}IG1@b?btwFRm}}~wM{{QXw>+3rzC4)8{ZU&5J%x(T=-d^7^@xcP
zmPp}-=xZ?=KK$4jWcb~<o_ip%9rAA)`HRs+pVxOxt@5$QT#-K;b*=KT$JkH49!05b
zv~2A6xX2XnUmtaI#Mg5H-(v!fvbr9LZp1~%MGfV`-MkjrjA=K#4jK6}!+P((G0>O(
z@ljlK!SPpa#Hi$@%81hWtnvF>jI$(q;Vye45oY7w6s_OmPj#*hKk;aE0`Yw5#t~cy
z|67+e&-1e8VP5_`(c}G9mb2!6o{`z`2T;}KymOuNF?$!U03uCswBz?YF*7QAy7e9(
z@lViu82B#sfwkx7g!fWhL3AYkgU-v}wC8329J=<boL`>r=k#o%<XQKo1j@wIG|FO6
z`PZDF6PSruk|)h+|3A;n-v8gu%;xTsb7*h$Exnr1{#|EgT&VHP-1DDj=Ktr;%#UD#
z_`m+l?A;W3ow-=}4?Z!YZhrr9GuI9!aM2yFT33bt%^SAFx8Lgh0~RE|F#8~`Dt6zC
zbIE5TBkMWVyjS&X^*Uo%F5D7-pr&fw-MCDzj(cy%<>75uSBc$=1(8R?Td{D5MJ|{}
zuyFST7NQ=Db-tq7-Z<GyyJi#HZT33$VT)HA6{5E(aWTQJ8+wIYqw*Nui*Lsz>{f42
z%(E*BNTPS^-3+lVl6^&deX~~*^WK{Hfm7pE>%T8G)XHBTOw{xyqi?C%mV=2d(Nh@5
zDqjqXK2;g-reo&ZhI>zzFoGqp=6kW;*?SKbQ)_xJdhZIOHDXV_zb}4gf#*GQ;Mn%6
zyEjzTbZ(EE%iw#x#}mz}M63}sCwp-l@x8ntbLT@Nw?1F(-F)m;-cUu%s!?GNE?*11
zQ->q#!}qdzu!0+pY`Qg*`NilPN3lv*72eKkyjR3{U$w2O8Y@a~O5Aa1Jr|0*616PL
zjmMJBST;iYLQJf?=eE0h`f9wFVKD;9gwgy=&D&}kb%R|yHpMpg2V5z~mG6d_^?;gp
z>(i+-TbjMU3}I#Z-PId#(_zDyRfgPx>y~IeJlz+I_j)gn)P$RP_ZLsT&yT*)t!mnE
zSi!*(?Mu-a-;Cwmn~!-f#VzN13$T`g)j_PezdEqy?yXCBzkL{2O8XPu&mYDD>i-C#
zNZw0FunzyS9`CN`Qgsd1K>f7rozlO#5Wlt8+rtv0n1x=iTY$Gc*tp$&CXQS7IQnj{
z_wK_Z5E9-Uus_PA=MEwlrz5at7Q7ShL@B;;18#V+{N(K$@qP^VOK(khe-w&ThLOcL
zLSwT3a3cPs*M~sSH+r9g*N<U^s_M4w@N$5We(GQX3;HFr_9P;8cX(fnMBBU%9!x~v
zb{x)?VRKLZxk$AB&h63H+duDR3GXzbI*`aTdv`>(g}20Oj(fL7v*43n(Xoe<y-Dvq
zSoHILjSD)>-lxO3<7iAonvgD*t)lluU%$c2_ISr5J@Moi*1)|FA5M6GKOFnOCsT3n
z^B!vbZbW~^`{u#Kr#2(e4c>icBKO|zRm8ksJlsS1Y^dk>A+DI>_9D)Q6nBL&C~7cC
z;;8^E4>x0e;G!_sIMM59M-6=jH@dK7^DUo=94o2n$*>FjC@!Zn-YwDcYVQN#7#0B5
zH{XesGjze{5A}HWVX^r)4<~wSyf1|UP0uL`y|^6t-i7M$`^1QuPE1c9DfBj>v;%QW
zir%qs!uwm)U>uFO6QSY>?@te*b<uha;fvn8!_T2}JsQKm(ZlG`-p$c$d@gPhz$!d$
zr?A-4?0qF<a<?aebzM9jVX{~=!c{->{I*1Vv&~5Um^pq3L*RX3JW;{oFp|b(;(Y~K
zc|2NfM(4J0<aKwz^&3ycA7HV(#W3pa1bj?~qxEs`4qI+qEmdQgX)C=%8th{)Q`o{P
zrdnfH5v|L`@7tw%o%aie(W|gn^>e7AUq-5U+VY3t5$}_S5>?*u$79LpA7g|xV|k`J
zQQI7;d71Yz&Q0ETZ-{xni3a<FAynxvVLj(5ghvl}=5Y+E@u-<+ytnpv6GJ0?(MP@C
zIeg}ocD{@CMjp5=6D>P}WgRZOp$@+^%*CYQ9;}MNZN@tWw}oLY1$hHK==@yV+n)JU
z9P=I~L#*`k@5UD(cHx$pOCp>F`|L7qZpH5eN3ND<7O@Ozx`}rpqBXzg588^=V&(?3
znECz)^Yi6{=2Tc1E3{AEicN=dGi$5XR=oFP#Wdo5@gQ#q<1bY62Jo9^S^G-|Z9ABb
zfF)X-?QdjaZuQcuN_g)-oY;aTA3S2Slde@4_BMOJ3XPd$-8!5%gu#YLb|8VHkrAZ%
z)r07izr|M8dT7=3nzeGH^L`;>SH~H-cjaJ@m&IIDiU&srj&UBw`an<fbruNz`JlgK
z|K8lP@IN0^&HY9s!O41iU_cgb$Ys{8-ycJdEjt$XdN7^t@4-E=x8JqFXUwAT??=$;
zCZER&@%Rc)NBYr~9$T|ukG0ZUl~AF#&tI+Y@mK3vy25Sze;0iB#b(X<110{#A-hKU
zd<2(7c4Y=Dj=!zNt-`0-Vjnem`E|4#E+-DfB5&h*@UNmT-+@W18;^x!HFx3xVh^AG
zz5Go4!Q5HlfpBIIW`=!d5b&=KMY9O@^+Sp1<9tF}!zKRjhOi9fy$g@vp1>UGU5G@p
zRbF=jvq;Q)Fy`HkdFE4b_TXDlY@9W`tudUJQ2-<reT*lJzYQ_fKO4qK#8Sh}c>Gin
ziP;mx<H+4Y<jkE&XZ8^L?B|i?k02WltoQx`!}8Y;!S|~Wyf<3Mc^dxS#_YU~<$POg
z+g-^joR{ISF3}qul#fmH@h1A%6!7sG#QceaXPUh~Lc158i9UgAC$0ee@*#G`FPWPA
zWjxr4c$dQ%3S5BpM#Go|K604D8GRM1&lqoKP{C%w{dW;(9cQ-(6W+Pd8ShsPC+sQq
zQ*4tDnOWhRd|2c?ZAR3$`JgE7eFE$BM-Gqh%;inMzC0Z3`^)|~PY&?<-H>8m#WeOx
zbYaHzWvC+FpPS@=!zKTx;Y9RJXv?>t7Qch%q-o5_9~edx{0t)fmk^uu%Lfw}w0Itf
z&^I$92Ux<QV@UrD<NaEQ%gm|hN9`H*SvX~IZN|hti0N|=B18G(TeoFCmGnM@hVhPu
z6Q5?tZccBvGs-?jS$fPHIuqyE&K%>y^~)1D?R#Iw$?vaFNn9-cBjoUha87tfPv7xm
ze>}z0Exf<?FggPQd@jVeK6*INWZw++(36=lAL%jY=^^w5rvB51&GPtF#EJ8A8_vs#
zN7$OEGsN|66W5c6nX&JLj(N96Dom*Vff_Ysd*RTC_YqXmUtoIv82ZDLyl7et;p*;>
z-kI>8hRercK8woxDEMDc3w$s)8BQc;%?TLiw5<212NOwe;b7wb@G}DECVye@f77Xf
z^=c+CbB-ze&r<`t-v9fj22LyX)PNg-fA^{30!HEglV=9Jb9Hm#|KnK!liC+??`6(6
z-}f2ePMqgHa`**vR`{Rq)EVK@!4XaQb`qS7jCen1PHq>?tQkB%Al2*{o*BH?Mo*fl
z(fdO?GbS+&j_7RR-FJ*rJ3X7}xFivO@cp0K40#Wy;k9RnU%~kRbM>(ZGV}uG(_@@P
zKX;u;77<*;44pd-{Zj4}^js*KO`6-j|AS5?P3CN|8XCcEmpyCXoPsiZAd=v!hWAsk
z_`Bl0eYn@odOPuuJBI&TnxA~iyYq#o@8WH2EzXQDc%M9+co%NEYe(?T2VNX%#8skK
zAH&nkX>Vi9`-vF-n^5<?(DE>DCu829;S%iQhhy)GAMeAX*yzda>+i09(p-6W)9DML
z*xgt<%3!7E%{^Wm=Ta|&i)Nf+d9uaoP3&t=;ePwMZFkjT6=nk;w;}1;qj-I6UGKxs
zA8M|~MGc=&)>N&(ySE0f{xnA$yc=;V^TPAZP-1mwd*T6DklBs6PQ#rk%87(eg=0_G
zRK=T{zZRXubEFi`+;|uhz0a=Nec}*rD8k+RXV&yk5uXdcaJ(1idR(gZ;+7O%vF7pF
z$a7d&N^Hdg_8-P$$LK^Kyl`3Rro^cC#spqK?0jy=G#($PGI*T}Z;2(0hn~b3Z>;_t
zS?|Z&jR~)-hvE7Xxbi@5wl(9KbG#Y1awAwK`@`%=^V}oNbKZd-L-gABy#%k__0(MF
zhT@~ck+i!N`&{nzi;oU-u3s+T{nL8$dW(0-yzKD#f<*MKri8dgWogZwU6XOaN={_k
ztzPzp<8h2hD3R_v5s$HbwE&kw#`Y}TyfG8EyZOh}{EZ{HEJ91fy*ga-O&v~rA@9u$
z??m{F_v~T2Z14{FC{8pdosUBAV~2S?e$R8wI7>HgH!BF}tlu1tBzPV6PX+cq#WWJ`
z`fziX)=GglfPs5EmkD;rcwal1u(zCF;fpEWFL*KUN;r}Vd)s?>bM=wKSoy$GK@!Ub
z9Mtcmr=RtDqCbN7IG~7QrPy3Ic;7fQ65R+dPY(0R_&96VTX8S8JmXnUFJLJ_HS?}_
z;ws<N(HC+p@hhe!{@#l`WUlt!XR`D~@0eKtKzw5!t^*PKH-~$;7=YWBI}^=YYoGLr
zaap<-w=ZYSE4X1^O}e*0kVLr9bX@bV%KJ9v%CPqplhjiMk+<P`ek0bk!U?mc!8dgZ
zy|H(idv@;|fx3)ng(H`L*V^C7wf4w6b>;tguLr9a39eo+eeYS^3Vj@x&{&vgPt<sy
zz)J7e9>WWX2e2sd^KtK^h0pzGkF{@Kg}<*JTVtM)fA22KDXogHa{b@kQ|-kAhMnn5
zi{Tg0r6xFjyr&8<1pjw-Uvmbzez!#?-V=T9mC0?*nE0_2S%Y;&tg<Jte8!hU_QjHT
zS+2SoFRIpTsb04&&c{nt<}p*%x+V}$CKCPT@xc?Z{u-?1W2!$eqN%ozMKy~#=79wl
zW%z2`-b8QnQ#j3>I{e(NNO)bfeYF*f9k`7y!VB!N67Tb&o*s^6`^xN=!jZyc?`SX2
zzn?yQ3^N86KXx?FZNIxF-o&?(cg8*y-+ot(S>XBUO!Tc=YL4Tii#H{XZLP+Wg_q*&
zS%cR#U!K529F$<)IzG|TflyVr3HH2ItZ0=y?A?r4vwQH8Z9EPQb$F@y2|N`mA4z--
zi@9yy`wsVfAKp;2-@-em@pv*4!EYu8_U_x$*}scFOW4|(-JR*)zj6QWzP`|bfxg{)
zySjHh^mw*=SN8G2?vQ-$-`zQo>I-d3?|LvDdZ@2={VuxP-_@DzZ0+8i?b|yL>Ko|G
zw$gF$K(>1zyRFstw=tXD&#*12jV+;_=?8YLyEnOc*XC{ahjwQ=_ia0{$M@RQJ#;_Z
zTDp5e`}>|iCJ?XvnZ>RH*`B&x-2=#A-$3uKf&HQW&TQYnx?S15JF`9O?qve^Z{NCg
zW9Yyj^3|Q%yT8w7Y=7#&L;Zcbw{+QL)~Nl`C|wn~Gn?Jl_t1fC_nSNW4|J#ZJ`&p5
zx@%+W{adz}oFlbuJGX`g_jTiEA$<egU7H88ec8vip-My9y|y~{^bM>J;opXksY{a*
z>pa;#(3{OL!^zDX8`nF_24|@anX>ln-?nFec3*aVzPQ0u_2z-yp|(B!TTtse2Ob&N
z``7?nOx4i&!R{<7rEZJr&Z*ESw)$NWHt*QEG1(gG+uu6axjWa|gZuXO@9kxg`vy$u
zT}mz<SM}Y2)<7ko4r~^XPOx$6(6LMwZClm7NSmVG9!X{Qg__^8i@B_`&E=Xm&=c?9
zyJru&nBQv}yLb09kEzam`@2EP$b(DORV3?oV{4i|ThY0;_pGfsHtN>abW7Ux`@UWz
z+pR9n3JEkH@>sWP_oJQIMkZ(7;9F}$93lhV`%Ks0x-t2{_Li+KUiN$RadiEMy7#Tk
zd1!wY{nvSAEE_q1`u7g>mSZ%qejY`%9CYkLtvfcYZ6A~!Wi-RWG)cGVG8~;L)3j`#
zzHGL?TjN+g|G?lNa<i{{|AGFj?Q^d3QOX0|Y#X)0b-O(>vpwCkxy5<f|483pYiMIS
z-LhrV&h+L`Z+F&pkSzmU-9veK2n>A0v$^g5q$wO{i~%zWQk}is`~9Bd^6$D}D4yB7
zr#n8_7vH~o*Z%H(k8X%}?(HAi(;qj#)(Q<~_pRf<^?9i#`%HDB!UwuKQNi6I)$Hbh
zE*7`H`_b-xW+au|*&5oiZ40ut?f&hJTedxz8<ZH(8~jL3naxOdIpb7y00NujMaCrt
z;FbZ@abMT^P^W3@K<k*s@8tZPoBeV%j21P0-_-^?3+Cwq1N+f)ySq$x;aq}A83ogb
z*==WNcIQDiNxBFE{o6V14$SflgQA$KVRy_+sBb^#9Dh`@a#3{~x2A~J?a5GnDOfS4
zrcmTHQ!TThLSmqHnM&E(ITS2+YVU!8u5I*($kQzww<P^WfUD7{x2~D-d8XQ#e~#Fn
z*}E^BUz&$HO%GsB^3IWFD4=_=9?X3E046>RoBeAN&B>;S*BvlMV@FBffXT2GT+R3S
zXD;+mG~WPzbBHEj^}Ey=Y`+`-YvwZy^PYWs_oPBQw>59u{+4ZK)>q%;$?DDS%*HOV
zE6@k?<qfW@tB=;2SdF9K*m=#-x_RpstHQO#?nhF6>CSx^{kcrLb`11HH5Gi>$xZ{{
z+OC1tzQ2W2q#Loe7TNK;_wD9s!A^a3o7q0y?ree!gq+7DYSLZ-alGVR#qgrToUGkB
zV?D;EJq_c$D_d=7?_l>pUL2Z1_hvKb3drKtE!!|*V5T0}%ZhTTyW*Lwn8~#+*K707
z39b(?ht~{obiZ_GuPu;&vUWkPIcXt3Ej&y3=R>ums$@;iMI8n^2S<RNd=byK?c3V6
zCROxY)>RS|cT4N`U3GQ$ykXZm8}~JN$u)w?ked|O-Fuy@6<4Hd+Ufe0b=^_sm)Z<5
zG$IOQniVvS3fB6)gV&zfy~(~kDBeSHoI$eYH^RB$!63PjfGTO)+!orsxBtMN0iDj_
zmV5x7FdL%X%?QvntvuvrO_m~eYSx9bf10?qMuJ_A*)-!+m5*}aWMw*EGM#G~b3)L#
zz%P*dyZv&yt0-g_r?y<XnMs1vhOGg6mEdL@Ud`6#B6q!6*Lpcmxl4A}d``m|zi<D8
z-MA|1>`!Advlq>XaG+atbN}{jZ{FOJ##MxCH+Kz^+TOY)y=D8hT!q<d8CNHP$+CN(
z3+H-X3#RsWAL!bP8O5GoI5M|w+`2i`*@K%37m{_9v=;*I5}zJ7BEj5@wLfsl6f8~f
zs@FD0P-{9n$4}lF#I$-~0@6spiG>q8yyO06Q(tyZ=ODAOW9MdEvbvgFb1H+ram#~S
z(wGnTb-!bGpKaaz!J*4(-gB|}HsRiGKc-4{Nq=(Ow3%t8Hn-frEuE`*SCm}ptSR<8
zmm5=aS@eE;brE#-&j<FTzh<)YXDwZDnM(>y`uQgf<m>+JNwhmG=o*`FMfl*ho#pqJ
z<G1{=_2t!jI`{3)+=n0gKYA~Op8ma^*=qdQ|2~wjiw=Va?t8Rn5Vmap{_3v2&VJmm
z-iI9l%By?JtG6Qp{Is9)8{SY}-P1j^yL*tgjp(Slp>^Ga?Wj99)2?f;i*gr+YTEo#
z<mNqGo(1d4jlw{G2wVy?O>~c7<y_O9<j3}v?YUbQwGCSTaa<rENshTzG@!X9vA2Pn
z>|MB-MskhqMzy&IGqXYN_GVoOmm$!HGM!!b;~p`04qRIou7qn&C0%=icWCBjibX>n
zbE&(KflCAD<R$`BmAL>$3JiXGvlOUKcUjPS|Hf_GFt2ReZVKfh*oG<&-QTz|y-~MP
zTa&wZcW6)Bn3T<h^8wsaG-9>Gbp{ujwT^S5Sr-Tm_IKhA!qlca%Q$~&Gxs_P8w5Uh
z|NU<)uWaeuKlo5z=YZ|Y)$7+C+Bev@0cPEu)+w~H23tjRa`%c*_;s+}aBrxvFdDuw
zd{gA*1tsCz!nb>+;XA^wjJ(P#3;zgTI}H`V+jnu`fx+-CMK3inoXio$|B`?`3Hzp7
z3Puqu=bnbW{W|Wa;C4O#+#V$8pXu|!OHiR%u*^u<!w1`5q+uFwDIG0*>V~Hap7F*a
zKO4^Jy9%&(jc4>v7LMNVRKe5UGeJG~{jIX$udAQD5&MWBO~jw4cje{&zbT{7FYhQa
z+-}^Xqrvnpy)+kJUVckeo+CemJ%?a#x}|uu;3>Q#@{C`Wnquq^gtBZ3mi67?Tw7#r
z#XeaG>++U{g?U)p7N>5*UQ_V5=@#VeDL;J0E3l_aApAV!G2<`4Y;Ct=ZyUHbs*PRV
z>tGo-{{6g{L*{V~x^k13^3mv1FL}D~nH$Cm-tGN#<UQe#3%_&+_924bO@XqzvT#4;
z6m*Tsvva=;_jJI$9CjY{ufl#yrvA%DU-DGp(>FX*Fy_5G^3!n2rN=#%ZTX5uy{95i
zQ&$edV*<MG6`p%6uMM9o3v@H4-}!O7K0E$e#EpKL*Jsg=PR~7%&)Gif_Yvq_nYp(y
zo=WBF-??*7V}7s3)sf4~(KyOu+|@1^A5K?=y>A8)SMnA=pH6pl11bXHf_<@^m4oAG
zEyf|ru<4d->$k{yF?$t{BfQJsr8i<PDWtWwKQ7+q`i<>pE_~)q*nbJ(oy<Ln#}T)S
zue||#2SHxj4^taoyzZ|yqApC`m$=zr3`ykbp8E$MF?FA>cWH88;Oo^r_XECO-H)Nu
zzF6Itw!C=VkEO9+74p>-XqR%xJcf3D@4Dwczrnhn`$+^uxz^VG+}p2T_f5O<>;6=S
z?dz@{>N>Aq_f-#Jjz&_O0{M3BHwqo?PM(0=1=+>90{H|Q!{yQWn}R30JGs8c&Y>>c
zVy~SWFrPiixz@Q?Wv=f&4EHLNN9(^Fb{;cuKM8KSWz8HF7%$x4m-A3=jtZP>PCz%4
zuiJFXj6bfE4_{yJ%C!Q0Ey6pQdj=nc?B<1YkZt|spNpLT%pUYX_%Dayu>`r;^!2=R
zW8*F5-2ciREAPNLqnKmpnld-uQt8KaX#{)A;au04Ki+>f3}3Fkxrc5t5(+)A=DadB
zfiZyOT$+{7VxO+U7fG|m_m}!_s0+;RFP1l#F87+fUb-_Mx9Os|=BPW3@|bk<<}8+>
z#^tT;4954rk*4$4ei38P%o7!(H$D}8`X$d4j@|I?f}i%@gC5v;OPfoxWC7<&Gw#-;
zx#<>e_iv7sFW5OH@4O!9$5+4T`fI_@hT+MTyW&gNcTc^D`|uifmq&iS{Om2)Z(HYw
z`{2zQKiBpp*Z;Vu+cHYz>WE+KLGiCQo=o3z;kZXz8vdNj&&AO0;^8M)y3nsS-Ey6}
z-gHZi3&(H3(C*|}$?kl{FO{TBeu|$g;29rvTn?EBzXs9)t~sBvz8hS8{N6|~{v(oI
z{QS_zi^b26X}nncu08pI3&!Q<u~2OP<9o2c0^*6CVaD0^b@#`zSnLSJxRM@<J+yy+
zD7LX>YYcAmNxc>Ox`wQ{Z?E-ARaf^z2YPq)4fO0q1jgR^&_nyWAGJQMOaI>8L9ugR
z=K!CU$iI{P*tp>0w8&;Cwp)+XVgq}#-7(x><F2@K_aio+xkXsS=*Q8sk9ST#z=6vw
zv?@OfXpdTeA0Kf?fh@Qj4B=8f)FAoj?Oy2AbSOl3`li1q%#TXOkTu6xATBz%nD2(2
z{=b($OlKwxy01AHpX=9jaQVZf4gC#{7+*LK!QT)fcj-BQKMsAc9C%YaG!1_&2kXF<
zV;k%Y>(Z?#42PEKNr#Is0XZ1ol}~x08aU7^%je?5<wPzou!c%rgD(bUXtRgQ=bIr0
z<170EFLd^eHolvnbMf`S?!qvJC0v>Byn!}*INcCLXQ$>3xS0Cj73+upoh}P|Fx|!P
zdiYwGP4}gsOZS;T7+6D#_#}5ZEjnC$PeKmHcO?)XZqah_{a4ss7)G&*_;M3;KsOVx
z(_hK6k<bIU_I8Jh;{+Un>8>JOwgcPa<uI-sr(tIp_Aef9`@KkL<Ym^*|J2d^j_CX?
z{zW8oC*0iO{GEpb?e4hYqU$-<#pxCxqPq<S{RN7Vi-S$%!q9IW;>+Ut!5u6IkIOK@
z@)n?k%jn1~FXuv6UKS1M=8ltp9SMCSC;4eH&0x-J{w@+KuC&)s`=DTa>=#Tk7+=Fn
zy-+(lsE%OXof{c+F9`k1cY``FPs{j&DNrs51(Gnav2XHV8{;h+V|V|&P+&m7(ZdMG
zt$W}oG<C$VNf?HwK9%zkHtD4UGUqqS?J&;&$$*~uI~9=EOAf|=HK3<|oc48uLmMRr
z<4@;`W%I)|9DCUFrCZZsembCVYdS7}jkyN3;d#Gm4_n@afXw`Gy~pVvgT<`@x%iH{
z&WH3&d*rIw##bAVsh<kSPeXQVMlQZ-tRdOM#usISn8U_bACMW}bU=O|WVgoT;ycgI
zX%6MjWReaxzM9-PvU>j;RAF=f;nt*Fd>w22p9;voi&))SmGgh9$RuvkW76fWlOp}+
zA-gp!=f4!!h4!%dsSn6sg~F|AIsa80fab9Nxvu48TqcFwI+yd`AJ8*D3jw(p{@uD4
z{Z~PD>s~H=w#1L$gb&CZFDG+@%I1gbWA?x&)DWLrFJpY{%Wj>_#ovf^GUuQ1&jjQi
z_;>4Q&VL%~XF>m5Pjm8q_;>4T&i|2sp7BowWGoAX+`1e6zZbGwYjfcjv99LgXLzo&
zIr*32->tjR|0&3Bt&Q^UKz3_vl({D6*48M00kT_1qx{d1-P#%De}(MU$tZK}WC<5-
zTpOdzs;(+mb|5o<Z2_73{(ww9zg1=r8@?$ZQ=bjU48IVNspogj?16i8<j1YYx%`}c
zt*@v5iV9z5e02etdVT}V9yUK2PO|2(<+%`$8GbP!Gd#bMW)B-aUFplz``<+4M**$O
z^+A{4@iqSW-86gH_@cQJzReH6r54oJ-Q~+n?`S|~eoqEu>iMlTd)W9(t9+Sy|J!T$
zawGEV)+=3plWY8s24tppH6Sy-scJud>dRujOuhdtH=Iw9o?8cX>9w!%&+oa}BOH1d
z{@wbh^S==H^^Bk2d9z12^e*^!Yo^ZsVD19Q*6(CMW_~XOWX8vD#MvVp`bDO%bygSO
zRIRV4f3CIKBOLk&{X^#3tMk7U(9=J^C+GY#{po;Az5i`F+kWG9@~-h$^#))5G}7ZY
z=eU;0^!^I6TgP?j7yY>JpYaa{WTszHpRf17J*WPO^<R6ae+FcRUkJ#IpX<f;z<h)J
zxb<V^hv$B`ZtU_m^(Nmx!}B|L_OR*K@aD@L;Sg>M&A0EyAu~Mv``^N|{@WUiXZ*AJ
z_JI7O2v2zhT9^JrK+pJQ0&+e4yY*`4e`+H<nZw3^E+Cuw2*`|YXp_7nKh&QN$kbm7
z$kaF9@B63T|27{!7mfV5HFB4qs?GWS`Tah7*z`^WWX9L{K)!xHAX8uaV7|UFAe;OI
zWaf8ti|?O${~Led(A$w;w`TA1JGaI^zXNCwo8P*C%=q|iz@WaX*_Ww5ACOJ`2W0B`
z?Ld3j_zSlBGWGtq1jC`d$gg{b;PP9y#{XbIW_n8jnemNo^W&#Jy4{zl=d%cVgw0p)
z-LnaoUQ<9%|NK6o^ZyI1&y;;;;ryS2?DX`{?-n}wL-6mOV>tiqExw-qj|61qcQznX
z&u<>uBOLlP(@)!VL>FInr?01fKL4;sIP|CR@1BP^|7Qbw`seo%oqwi39FVE^zm;g)
zFY{J;*Z7Wd@xvUL|B#-0w!-vQAiHNPF8#|t>HBB=N!|>ZL;d5Ye3^RxTZ&eHd5zxx
z7NgbAzCAxYpW)bpKj%Y!AiMdi6ta7k<MKDO%lFUp`Q1i)*!YV(e7O?gPeC4o6T{O#
zWqVlvwVl39J)aHPBOKa*@a|cWOTRy$r~lD_{2=_hXGrwF9kP3F<id|X<j2qOe2!#~
zaOffUch8la|K)(5{`s8A`9A>v?zxlmKeXG|(|@|lm)U<N12Xk|K4p(^=%*2%dtT+@
zYwY&*^k3fN%Z#rsAXCrhTlNTtrV*ce-sR$33h3$oY_IR1@ht>o>iK-k9^uf(5ubZr
z=Hjc&_<Dx-j~h&T^EsM5!lB<oc=ue*g&zv&nI507IsbnF|L%Dk{r??g_neLL*CD%S
zYA(L%K0iF;<8w88ghPclSa}8x&VS>>zMlU1oXsBL(5>+Ap1V2!R|0za=W{pb|26RM
zp2N}qddTiM9OX@r-E%k>-_=L_@Qg3h@5}A*@1D!i|6$1Pxtt4MKH&Rj_|bsO_LvLE
z)R*t|{Zl_R=*!geyQ208hkgd>xo3PXy{dh_p8necGUGcNkg4alN9|$9dq+T~emo#E
ze8mBIM|r6q3&_-;3dq#++oble@uwd1W$I4{WQNZU<?9y$GWF5N^Y#4!*@S;0Uq2I&
zsh@jizP^0em#M!RkeNSz6V)Cz|7Gv;W$IG_nc+tRGWC}OGW821_-77Ve|+}p<l|^h
z%6t~<+OzCQU(fhv0y5*99L?94Jmt&OF9l?VZ+bdkU;B(NQ-2~LGkn#%^YteKGWE6Z
z$=6Q>Wa`iJWMvLp-pc`*`i7sCTK&oYRx8#kP#^BOv#XCIYy2+<WX9L_bNTUI4ak3j
z_}ueq#`jgo?s>I~zw6oj@cizpJ#70g24vRP@XzP#mjg2O>0ij#9|_3Rmrv&F>)-3k
zCjNlT@>TxVeEs==Onvgd<?H#J-5%l4cTisU+})LTCZK0}{I0C?&-g9}Wa`JJq(=Qw
zzZj6IkG?NoKNOIuFa5=Qee#!lnR<S=)*d$gile?v{kee5^c&xwub&CX)Q67c>$?In
z^{M0e`qKfK`l0E3{bE3-zUc$``jY{f`hs81*VhGP>dQZvuOAJ_)K~pVzWzc$roQx7
z^Yya<nfmO9^7SP=xthb)??gam{nmU~YPIjtfJ}Y;ujT9ePx><T{PwIpZ2WTpnfmhq
z*_7`$eE-z*d$RVh;Y&X1%hV4A<d+rVe*9zT^AUf(oPcZ(JKuzU)0dfECLlAu=*NBi
zU5L-USHkhJ6|#G;#EqBiY2QD?F9c-9e<dJOKmJ?3f9h8QGW8vw$k&etWa_K_d%nJL
z)|aUt4akhY=9BsQ`G8D)`b@r_@5I<69C|Ct>)w%Z<vkV9Gd+G+*7;|A%K@4CiBCzb
z{<9R2sV|<(*B=SU)R%ucU!VSMU#6blt+j{kA638O%hX>8$jo2zY`*?fK&C$WyZL&4
zlhz(K{<h!qWyU`jkQx5S@8|260y6cfbNPCHQ`a6g{^%e0GUKlg$P8ccnS4FJ4{Hw_
zzUI6yGyHr&X85u{%Gb{YWa@|hIA34-C%#PmL_lWzH5c;rM+36S|DWdTFMigSslODE
z8Gq<=`Feg6*B-WfivgM8`F+`-{#-z&zVa`8eINR>dzZ`g=i&ulPyc*}%O2s-A^3Oi
zbUFWvU-0$x&-c0Pf$MMhckg#O|I1(W_4Lp8yX+AT9fN=OzL)b~{v}^e|9tPu9#{{C
zfA=1k^Pddp>7Va|Isc!AfA@Zv^FI{O(?8!6bN>Gf{@r_H&i{#kp8om%nDc)L{@wdz
z&VT5yeLem2`?2=0?Kd5esc*O>wdRNUfJ}YrZ}Rmg0y6cDf19uG|FSPrzZj6&zmiM&
z`cna!`kBAW*H`|%FH>Lt558>T56IM4UC!5E2*}je{bRnK->0>Qt)KKi`7+~Q3CIlJ
z@Xz^reuvf`HvE-<%<$t^^7U<B@n!1$Z{CJOFQ7f$yML}d&#v*$@7LPHrq>aW8DHqD
zQmZ{D0y6c*%lZ1QfJ}YCzvSzyUhrk=j|ODcN72{v^@9PK`mU9H{Zc@t{`}YT^_l<a
z%hb;XWTxNtulf3O0hxM!7uO!PelA`0W$KT7!<QL<!8d)GdVc@b9ya``fJ}YrTlxCp
zRbQsw|JH6e6n+Wn``frCfxBzZ#_#0&=lhoSu<4DV-JHz$_@1Scncvd^nR>o=8PuN*
z$kg*a%%DEXhyLcU*JFGa)5(l~Fd#EL-@^>*hXXS8d@nPo9}CFT^F7U=em)>m&v!M0
z`nrfOQ_uG_on96LzNy9h`bRWWjQTdm4SZS@4gD}>*jWXXe~dE5n3Fe9h8dK8BkfUN
z-U0d2jrQFrhVO#hRU8W4Y@&#U_Caog3@;}BLy%LDZ4%MYGmx)B2^jseurvnzzaMg4
zK>jd2qR?gX|8dAQukiEpdyog=-{p56a_UxJ{u{_;f$(2}TzrSGM-f8PxBK$TAs>0A
zFTWP@rI-0~E#$K$zT5=44)MG4wLxwO$Qj5@0eJ{=3Nm2I|0FDJkX?QK9ON#@u0G!n
zc@T1e{GWiFh3rZGHONDdUHN|(@?`{e@)sbtz0{Y#4*C2ozKm#chi6vHaw5_w@&(wu
z5F!d3Ug(Dc67{I4z~PxU27L!F_sa<D=7nBi`YW1GN2#+IdbwW-S!Zue@Ag8shhEN#
z)4_P|Tq8F?cJGD195ucTvU}f~@=rl_?|V~z6ta8YoAS><cJFmlo`LM%>!y4TvU{(a
z@<qt*U2e)tkllORl*4E%_ue+;S3`F1ZBt$c*}bbx`F_amy==<<_q{7Rxp#y4d3;4z
z{tq+*zt+s{bMYeEF3GEY`@g~c6m;!xUjsiq<!_|}qWdLkz$uB}olDHUWu4oWLy9#&
zqLu44J1aPMf71}TxF7UNyzV9m(&aWSk$mlsjs2a&^jl~b(rkPqVa>19O~vU4;JzJu
zBjj%q6_lX7?(fFe{ER&BC&AL09|Svv`|a@BMsn`_mGs(Qw7X^s`e8dc`PznZnl&xu
zoUduBoWgG_=j0m8$=7Wyr_42%bGW9xf(kX5bIRXqW=)fsN?coM#?jSSPH@$gb4a4D
zjBss58Rs>%WZbT)BJ1kckC9#F7~#4#V>G#HG14`4l5-9In%~xjQLU*8x3$7`whg+@
z-X0nO`CBl!D$jQ{iRC-FJumFf$8#GoKs0+`1svQCE-r-Y@Tj8A+L*|0vX!?(MNq(w
z7Wp$;ZlAf_?j~+*V~}W{f*7{d$i~*YIV*3EgIM4GeVwrl)=RDP!v2Ci4_v+Ydr!&5
z-wDFi5<}!Ahl%2PJ44v?UT@R$_t8;;xgdUuroyj@eO-;)H6yT9k&S!ZIve@A_5QXg
zD2r`4Ki=zZHL_-}1Gk%mBEBcLy@Yl#aeB84jFYVzZRH%~A+R5bUxOxNzL?iH>hgCM
z;i#~?`UJOEGabV1QsAcNoa`*y5O#m;^|kkG;MNWP)-h%~5p9y_wic;#7R>0mok%uq
z_U*~d{w6DHHVCs7?NZHkf}Df1n9W)2W{}Q_JI!3X+gM)la@&su!?<1(bn`cdh}G7<
z{@%c55wUyjxu-TL-&=d{JuI3wHKEnTM0;S@DoEUy1HcYZxeasjGUz+6&6Tgo3t+a_
zaoc6C4MXLwU1leVT?Ymp!=`1sb`K8j8r)ZNedl#+_R+GtYOT9>v)xt;;`R4XgksAN
zv?=Akx#5vwGl^nb9Qw`MLIm=IFS^%dPI>K4N*F$CqP8x<$bCOM^LN;UB8BVc$fk(-
z4Km4P0+R2Xll&b-1g1$e&op4?JFj%-J{V-1*e-U6U1CP;7y0`MhFcUbiA&;T@rt-C
zu83E~RgpJGjE}#wAg9F>;*5AwJSCnM&AY7#Hz)b5cuqVoat{T@KQCSs7sN&JlDH&Z
z7O#lQ;)-}xTow6y5T;Wn){6~dqu3-S#gv#9+eE$-!uUGGE-@qai-TfT91@4cBjTty
zCXR~};-ol@dvB(DLYxs#il@ZW;;c9)o)yoD=fw*m@BJD7MR7q~6fcQO;$`uQxGb)S
zSH)G4H|>nSK;-XgC^v|WBG&}yo)lAJTI3o5_3dJZ*d=n!fck!s>o1hEBG(Wo4~s{{
zQE^Nh7bnC?aY{TY^7lTB?}9il@?Mti3*w^4^&h(P-j=*9UJ;kY6_M*b^tUSV_dt}p
z#EfX(DS`W-Wd2@{{)WV1@rXDoj)~*qgg7ZqiATk0@q{=do)r1}Bc^*=oE7K9v*J1N
zym&#J7cYtn;-Yv-ToNyfSHxv;MZ7Amid=?a{tCpXh;5OKd$Cv|mWpLg#`+J#mx<+K
zg;*(8i8W%aSSRv#QH+P{Z)8>+5{Jbj;;1+#j*AoGq&OuW6{p1$;*5AwJSCnMXT>@3
ztawg5FJ2Jm#fu_;uf_5ViNoR%aa0@=$HfV8Qk)Wxiqql=aYj5To)S-sv*Mh{bw}pw
zoOoWmAkK>yMgA^~{+q<4m=e=so7gUPh+Sev>=y^ctT-eNi$}y!aZDT+C&Wo{N<1n~
zizh_>{*2`q701MJaYCFFtIDna8nITa6YIqWu~BRilVVCti~ZuDm=%Y_VeyDKDvpWc
z;)FOUPKigwY4L<OBc2pbiKoR`aZWrdo)gcD7sPq-qPQR~ikHMC@v?YDTozZvtKzB{
z`Y*Qr3&g0%-^sBZlVVCti)~`N*dca_8L?j+6#4r)#=9t95|_lw;uUdOToJE|t77Oi
z%D)&Di^O8FL@X7{#B#AhtQ4!n8nITa6YIqWu~BRilVVCti)~`N*dca_8L?j+6tg0K
zZ^-&PC!QBCi1Xq_aY0-ZFNsUyW$}u*EUt)G#Z{3TQZW4jF)9{`#bSwADwc`mB7Yaj
zc<RLlu~BRilVVCti)~`N*dca_8L?j+6tm)xI4m9!N5wI5T$~Um#VPTqI4zzKXT+1@
zDe<&8E6#~$#dG3$@q#!nUKIJeQPy9-I4EYtA#qqdB94k<;<z{=PKs0FQE^&4A<l>=
z#Z%&GaaNoY&x+^7^CExW%5q#1m&D8B6>(Wy5wD7?V(4}1mts^b5{tzWu~aM*%f$+@
zQmhhd#9FaVtQQ-^MzKjuiYYNIwu$Xxhu9@%#C~y5%!)%IfBzfV6bbQny{yLxaZ;QT
zkBZac32{a|DV`Efi?iaKcvd_oo)<5O^WsHuL0l9siA&;T@rt-C@^{EAPmx$GmWZWd
znOH7Xh?QcMSR>Yobz;5PAU29kVp2?rX|YXg7dyl*F(dYigJM=35{Jbj;;1+#j*AoG
zq&OuW6{p1$B7djN`l}Zk#7416Oo}NnEw+j6Vu#ozX2gDRP|S)$;;?u`92LjJadASN
z6sJV~o}A@4C7u>%#X0e;cuqVoUJ&QSi{gT~C|(km#LMCpaamjuuZpW;=x&?O0x>EU
ziN#`xSSpr@<zj_cDOQO!Vy##w){6~dqu3<!_x6!Zkr01J&w5OWX|YXg7dyl*F(dYi
zgJM=35{Jbj;#F}~3{|Us#Hd&#7K<ffsaPhKixpy}SS8kowPKxEFE)scVw0E@Q({_d
z6WhfOu}jQ|{o<gQ6^F!O@rXDoj)~*qgg7a39|E>lhu9@%#C~y5%!)(euy{lq701MJ
zaYCFFr^KV;w0J_C5xMUH^S3Bo5|_lw;uUdOToJE|t0Fh2VtfT+R4fvU#S*bpEECJc
z3b9hG5^Ka-u}-WP8^lJD`!p~=S#d}l7LSOd;+QxtPKeykf$_|X7sUl}QM@EBiI>GI
z;<C6RUKLlx(0bLM7!`}eVzERl70bkOu|ljAtHc_yR;&~2#Rd^y6Eo#)5|d&|Op9$|
zyVxP(14Jf#M&y1KtiQ|R6>(Wy5wD7?V(1>#hZq%$#A2~TEEUVda<M|J6syD<u~w`T
z>%|7KQEU>EBKO%~xlV{P;z{w8cv_ql=ftz(Iq|%BL7W#aiVNbRcu8CmFN;^iWpPEk
zDz1v5dsV+;R4fvU#S*bpEECJc3b9hG5^Ka-u}-WPxep2JZ$g|Dr^KV;w0J_C5l@Pz
z#M9!eI47PJ&xz;73*x+ZQCtug#Y^Incv-w6E{iMTRdH1ey+QRXM#UnrSS%4s#WJy6
ztPm?j?!&_RD;7({Qn5@d7c0a{u}Z8FYsEUTUThE>#U?Q+ro^<^Cbo+mVwac^`$g^-
z!*W!LRbq`;E7pniVuRQyHi=0wC8otTv0dyCyTpvxFAj=XaY!5%kBFn<m^dy@h?C-!
zcvPGgPlz+(N%53;TAUT<#Is`bK3ji9VzF2vmWpL!xmY1qidABbSS!|v^<snAC^m^n
zF(szOHnCmo5WB>T*e?!>S#d}l7LSOd;+QxtPKcA@lz3E}7Ed_+n{53Z6{p1$;*5Aw
zJSCnMXT>@3tawg5FJ2Jm#f##CxF}u{m&D8B6>(Wy5wD8e*NEe&R;&~2#RjoaY!Z`V
zN=%DwV!PNOc8M9WUmO&(;*dBj9uY^yF>zd+5GTbc@u)a0o)Blmlj14yv^XoyiD$)g
z;(76cIMHD1Z&I8RkBZac38&wvej`qcC&U@?q<Bg^EzXK_;#qM)Tof;fOX6kminuJU
zh*!l`F|^6%vp|fBMPjj7B9@9}V!2o$R*F?(jaVzziS=TG*eEuMNiij+#Wt~B>=3)e
zjMy&@idpfrI4jPHXT@{kdGUfcFJ2TE#6^+&XhkA;z9%Ndl$aLV#CEYm>=H9#zc?sn
z#UXK6JR**YW8%0tAx?@@;!$y0JR#1AC&g3ZX>nGZ6VHn0#Pi|>abCPAE{KcbC6W7z
zvHohrTCq;77aPPzu}Q>RekOcM#OGj*+$Oe*9b%W55&OkKF)I#<!{QNfR2&n>#S`L;
zcv3tio)%}tIq|G`PCPGO5a-2<;)1v+UJ{qY%i<MrSzHmXimPJi0b5@MVpJ>=i^USL
zR4fzA#R{=ftP*R)TCq;77aK(G566CRQCtug#Y^Incv-w6E{iMTRdH1eJ*aYuQL#uY
z7E8oZu}mx%E5u5%N~{sNkDZwh#H5%K(_)+0E_R4rVn*y22gR&7Bo2#5#8Gif92Y0V
zNpVU%Do%?h#2N9VcuG7i&Wdy5S@E2BUc4aAix<TOaZ$V^a-YA*rbvkU_pu(&is!`h
z;stSDyeKY+i{d45NxUpx5tqdk@v68gh7vX(1!7bz5{tzWu~aM*%SG-t$nw;S4Pv9%
zBqqg_m=@c_cCkb35;J1II4EYtA#qqdB94k<;<z{=PKs0FQE^&4A<l>=#Z%&GaaNoY
z&x+^7^Wp_@Uc4xBKStJHM(h^{#jH3a4vR;`QE^Nh7bnC?aY{TYPKzhR8S$ieN<1yj
zigV&w@tn9IE{d1LCGoO&MO+qF#H-?}$W7l_F9l*$EE0>w60uY)6U)U4u~MuOYs6Zy
zPOKLj#7416Oo}NnEw+j6Vu#ozX2gDRP|S+lS2MCH65@WDW;}@vVx!n3CdHJP7Td&j
zu|w<<Gh)BU{WqE3W$}u*EUt)G#Z@u1&4w!wqhgU*ES89+VwqSjR*02il~^OzigjYW
z*dR8FO=40^iD|J-Y!^GkE-@qai-TfT91@4cBO>=3W&I_^l$aLV#CEacf3bJ}@vV;c
z<Hzsz^qdpt1UG^@im)OmatJc=nK+6b;s|0of@}*qIx@mCvWc@GCL;)nn%IJFy6LQ}
zv$EQ<t)`~4&Wf5IdbXmrvTn<)cE0a-?pMx<e%NQ9J$xUJ?;qbj9_{mfU)OcN@9Vnm
zpXupIFp3@6i7||00+X1+G-fc1In1NJzp3_b7)Njv$8a1ca1y6*8fS18=dg_PXq?FL
zfi|?Gi4JVUCUjymy08V^sPD(B<BMPvJFpXD7{>%AQQx;!^9<q;mT(wHa1_UI94BxR
zr*Il)a2DsVjPq!m%>1DZ?P#I{8?gzU*o-c0K{tBPi$3&YE4E<(gBU`6Us|2N5)R`C
zj^Y@O;{;CP6i(v|&f*-FaUPA2Ghb*!JDTXgMr=YSHlqvm{d9F)DNJJqvzWs?c40Rb
zu!ud_i+$LS12~97Si)f(!BHH;ah$+OoWg0G!C9QcGR~uMD)Wmrw4;d*Y(#y(VV%ED
zjA0xTn8XyOF@ssmVII4%8w*&(9_+<F?8gBd#33x<Fpl6Tj^Q{?;3Q7rG|u2G&S4qn
z(KwBHMt#3!oxd5J#W^hFJnDzvX!{1Vp&d<hU?Vo66PwY6E$BuMdeMh|Y{fQgIK%3f
z4ee;60~@gko!E>nY(Y1A(2G9wV=J~{0D~C9b_`<#qu7C+7{fRwFo`KlV+OOB!#s9j
zHx_UjXK)thu#EF)oXK&3HngLO4s66GbYe5Qum#=dK`;8ykFD5-0SsaY+cAt0jA93N
zVhrP$z$B(HU9CUMnvW!=FpU|^Vh;1zh22=dBKBY}_F+E`;2;iR35Rh6M{x|t(TrH*
za9|@gp%a_Yg)Qht4|>suer&}y3}6sL*p6Y0U=%yB6Jr?11ST<sY0O|2bC}02?8X8X
zu?Krm-=AHtk1>?bm#oAIOkxW4{n+bQ)f@Ug>#Dwgx~`wZ6s9qQS<GP`yRaJzSi~Oe
z#XjuE0UX33Ea5PY;3$saI8NXsPT@4p;4IEz8Rt<y<XGpU0c~hU6CK!yP3S~<o0&=;
z7q*}qJ?KRr`mq(;Fo3~o{n=LjHVj}8L)eaCj9?TyuoGh##{?!Zg=x%S7IT=#F6_nv
z7O@9=u@C!k00(ghOE`=pIErI9juSYEQ#g$?IE!;w#(6Z(;rKus+R;P@HewU%=K<*P
zHH|Yki*s1Uc{I*tyJ$l@n&`krY(ghCqYGQmjUM!(5B=DRZ5Y5HhOiyO7{MrZU?;{f
zjtNX+3e%XuEaoteUD%BUEMgD#VjuS701l#l?n1p@FHt}DKx6$p1GNqH^9nScMg6>i
zdfDIeXmna}1KQAzCOWVYo6w2P=)x9sqX)g{LqE1+8wN0lA#BGmMlg!{c?debW^`c-
zy3vDP^r0VHu?+(l#1OV)7$X?P4(!Aj#xa3OOrd^mgN|beOE`=pIErI9juSYEQ#g$?
zIE!;w#(6X@<oG}v+R;P@HewU%=S%1~y0L&o?7?2_!+spVK^(#o4&w-p;uz}ZRp|EJ
z=s_>~(2uRyh5-y>2=#L=G;axqaRf(k499T-Cvgg=aRz5`4$C-?#>MOxw4ohMbYLSk
zp%eA<ICLCQ?7&WpVH^{f#1y76gZeohn%9Lb=td8E(T9F)#WoCJ5JT9GVT@oDJFpXD
z7{>%AF@<T=&l}Nk^y2^y;t-Z_7)Njv$8a1ca1y6*8fS18=dg_PXk5y1fHt(FiTb%H
zI*t&wV;CbC#SZMm7{)PyNlalHGnmC3=CKRAv4BPF!Cve`{rnakM*@?W!Zc<ui#g0=
z7j|O-i`av`*oXZ%fP*-MB^<^P9K|uz&zaG2*wI7>HewSxu^C<1f^PJn7k%i*R&2un
z1~G)~7{&-ju><3mu|F`0DNJJqvzWs?c40Rbu!#D(IyzrNSi)f(!BHH;ah$+OoWg0G
z!C9QcGR~uswEEG2HngLO4s66G)X)FXam=IfMe?By?P#I{8&N+eNb@+c8C}?dZuFoR
zedxzlY{LMiF@ssmVII4%8w*&(9_+<F?8gBd#33x<Fpl6Tj^Q{?;3Q5}%h$?$t*STl
z^NuR>hRx{07IdQrz34+fwqhFwFo+>+$1p}PiXGUAF^ppZlbFIZW-yC6%wrdJV*!h(
zpYx>i(uLhvz#{fwFZN+S4&WdTVF`zE1V?cU$8iEDaSEq#24`^&%Q%n5Ro1u~(1vz2
zaSEq#24`^&%Q%n5)#OJT+R;P@HewSxu^C<1f^PJn7k%i*R`gtB^~Z}o^kXZwVE}^|
z!gdT}1f$r2ofyM7CNPO9Ok)PKn8Q4FVK)}A<yvceZuFoRedxzlY{LKsF@)_H#t25S
z13NK>aZF$mQ<%mKW-*6(?80s=U=e#zKMzgMQ!o0^kFD5-0SsaY+cAt0jA93NVhrP$
zz$B(HjTy{h4)ds=+ot0f!BHH;ah$+OoI?GaHeElB8O&l1^Vo&mSimCoU@!JzKMvp^
z4q*w0aRf(k499T-Cvgg=aR&8s=5%~vj9?TyuoGh##{?!Zg=x%S7IT=#F6_nv7O@9=
zu@C!k00(ghOE`=pIErI9juSYEQ#g$?IE!<rpR=d)*MXfF!#E}|i78BD2D6yMJa%C>
z7O;pt*o%GGj{`V}Ls&xnJU|`CBu?Qp&fqN0VHxMqxXH@XfHt(Fi4JVUCUjymy08V^
z=s_>~(2uRyh5-y>2-`7?5sYF7c47?Un7~<_!!pjJaWnIRHngLO4s66GbYe5Qum#=d
zK`;8ykFD5-0Suyku4CnThZ)Rb4)fTB-B`dP_FymeVLuMwAP!*(hj9c)aSX?C0w-|_
zr*Q^naSqEkk4B#Tgf_IJi4JVUCe+Wp)cNycE4E<(gBZeg3}XbN*nyoG!#F0;b*r`g
z7IdQrz34+fwqhFwFo+>+$1p}PiXGUAF^ppZlbFIZW-yC6%wrdJV*!iUgT2^?{WySw
zID{qC&mFB_Rd49$iRymr#XjuE0UX33Ea5PY;3(?nkZRr;oW(gT<2)K&R{I9Dp&d<h
zU?Vo66PwY6E$BuMdeMh|Y{fPVU=Tytj$w>o6g#jJV;IK-CNYI+oWMz(!fBkrS)9W%
z&ZBWV^NRZUuDV~6n8Gw>FpD|NV;6Q~0gKp!z1WBSIDmsVge4rt5gf%a9LEWq#3`J{
z8JxvAEaN;HcQ8L_Lpz%2K>hq%oxdQ4upPq~!6<fMC&n<22~1)N)0n|5<}i<4*o_4&
zVh{GBeon8B!-XyAMh|+?hkk6uHVj}8L)eaCj9?TyuoGh##{?!Zg=x%S7IT=#F6_nv
z7O@9=u@C!k00(gh^>d7M{@O5rK@4F#hB1Os?7&WpVH^{f#1y76gIUaB9=os`3s^+`
zyk#9n1KQAzCOWVYo6w2P=)x9sqX)g{LqE1+8wN0lA#BGmMo>Q&TE`K>b_`<#qu7C+
z7{fRwFo`KlV+OOB!#s9jHx{snJ=lwVm?&7|NMZ`pn87UOFppi>jRh=X5B6do_TvB!
z;t-Z_7)Njv$8a3=bGCJV1TcspY{xK0Fp3@6i7||00+X1+G-fc1Im}}hc4GmH*n<sU
zx5i;ZJDTXgMr=YSHlqt$(2X9{&lT7CYDO2fpc_5tMIZXH727a?K@4F#hB1Os?7&Wp
zVH^{f#1yvNYmLK=9`vFQ{n(0a7{DNgupPq~!6<fMC&n<22~1)N)0n|5<}i<4*o_4&
zVh{FWANJz_4&o4&a2Ol!v*xb}o!E>nY(Y1A(2G9wV=J~{0D~C9b_`<#qu7C+7{fRw
zFo`KlV+OOB!#s9jHx{snJ=lwV*pKo1t@%q}5>uGQ3}!KhdF;Y&EMO6PuowHV9|v#{
zhp>dhID(@%hT}MalQ@ObID@k|hh>~cqsN+;2DG6aP0V2)yRaJzSi~Oe#XjuE0UX33
zEa5PY;3$saI8NXsPT@4p;4IEz8RyaXCi8$cw4;d*Y{VvXVl%q11-r3;MeM;|?8AN>
zz(E|s5)R`Cj^Y@O;{;CP6i(v|&f*-FaUP9tF;8eiJDTXgMr=YSHlqt$(2XASVrQ?l
z-5AC(fk{kZ8Z(&1L3LHVQNot*Sb5#(K`;8ykFD5-0SsaY+cAue2d(WiViP*C8C}?d
zZuFoRedxzlY{LKsF@)_H#t25S13NK>am;<!8b=<xup0|l#2)O$KJ3Q<9K<0k;V_Qi
zD30McPT(X?;WW<REY4vW=dt4<YkZv;!#E}|i78BD2D6yMJa%C>7O;pt*o%GGj{`V}
zLs-IL9Klf>!*QIzNu0uIoWWU~!!pjJ@jYw48Zh2(#R*Je3e%XuEaoteUD%BUEMgD#
zVjuS701o01mT(wHa1_UI24`^&%Q%n5!;BwoXh#zr*oaN&#AbA13%b#RUi6_KTd@rT
z7{m~^V;CbC#SZMm7{)PyNlalHGdPdNBg_xl(2gcLuo0WkiOuN37IdQrz34+fwqhFw
zFo+>+$1r9whk5M6ZY*FCd$1S#upb9-5QngY!#IMYIELdmfs;6e(>Q~(IEQ7NN8|hK
zC$ym*O>|%*HlY)n(S@x8R^B!YU=Tytj$w>o6g#jJV;IK-CNYKXA6VP>pcj4U$5w2^
z00uFH?HI-gMzI4sF@|wWU=mZ9#tddLhk5M6ZY*FCd$1S#upb9-5QngY!#IMWM`ixx
zd8tp8-$V4{01o01mT(wHa1_UI9A|M3%Q%n553TJspbhP4q5~VT37y!CE^I+JdeDnL
z^kXZwVE}^|!gdT}1f$r2ofyM7CNPO9Ok)PKIEB+VgR?k?Wt>N2ka<NL+A)P`%wQIC
zn8z;c#sU_x2Yay(`*8pVaR^H|j3YRTV>pfzIEhm@jWallb6CcCG#+Dq(1vz2(SeQF
zgrUc+_1iIw5sYF7c47?Un7|~aFpU|^Vh;1zh22=dBKBY}_F+G^{Ky)I8$IYnANsKs
z+c1DZ3}HKlF@jO-z)p-|921zt6s9qQS<GP`yRaJzSi~Oe#XjuE0UX33Ea5N)hOGGu
zVhGzYj1i1t2X<l%<CwrCrZ9~e%wi7n*oEC#z#{fwFWR24#$iVj9oUFX=)`7pVGFv^
zgI@HZA6u~v0~o{*wqqD07{v~3|FJcWFh($n9oUI6jAH_mn8Gw>FpD|NV;6Q~0gKp!
zz1WBSIDo02SmQ`z2D6yMJa%C>7O;pt*o%GGj{`V}Ls-IL9Klf>!*QIzNeq^(afGlP
z!x+IRc3>yQFpddKVhYok!7S!5k6qY}1uS9@_F^B}e#-fQCOWVYo6w2P=)x9sqX)g%
z{4;AiE^I+JdeDnL^kXZwVE}^|!gdT}1f$r2ofyM7CNPO9Orv|)8ixnH=tDoYVjBi9
zh#_ppFh($n9oUI6jAH_mn8Gw>FpD|NV;6Q~0gKp!z1WBSIDmsVge4rt5o~(Wnm;Et
zqYGQmjUM!(5B=DRZ5Y5HhOiyO7{MrZU?;{fjtNX+3e%XuEaoteUD%BUEMgD#VjuS7
z049E6&0i8zn8pldF^75V!fq^J5qq!~`>-Dea1e*Egu^(3qd11+IDwNmh0{2Lvp9!k
zoJZp+Yd#v#hITa3fjP`$7j|O-i`av`*oXZ%fP*-MB^<^P9K|sl#|fOoDV)X`oW(gT
z<2)K8%m>=gjwU*=5u4D7&FI1w?8X8Xu?Ksx5BqTd2XP2XIE*7WieosA6F7-eIE^zn
zi*s1Uc{HA8p3sJNG|_>L*o01OMi;iA8$Ia7v1eqvtLlvjG=4=t(1vz2(SeQFgif5m
zNu0uIoWWU~!!pjJ@hts88``mi!#IMYIELdmfs;6e(>Q~(IEQ7NN8{J@3vFme6CK!y
zP3XjCoOn_4$$pr`DV)YxbpFn27r+D-(Ri7Dp$+Y5q5~VT37y!CE^I+JdeDnL^kXZw
zVE}^|!gdT}1f$r2ofyM7CNPO9Ok)NMSi~Oe#XjuE0UX33Ea5PY;3$saI8NXsPT@4p
z;4IEz8RyZMWWS;f?P#I{8?gzU*o-c0K{tBPi#{C1F&xJUoWv=d#u=Q&IV|Hm8tWJz
z+R%<BI<OI&(233H!WML+2fgS+Kel2U2C#@d*o%GGj{`V}Ls-IL9Klf>!*QIzNu0uI
zoWWU~!!pjJ@e1>bHngLO4s66GbYe5Qum#=dK`;8ykDaet{fJ>46PUylrZIzA%wZn8
zup0|l#2)O$KJ3Q<9K<0k;V_QiD30Mc2Bxg>1u=x}7{&-ju>(6XhH*?_5>uGQ3}!Kh
zdF;Y&EMO6Pu(ukox5m+neb|o!IEX`7!eJc2Q5?f@oWMz(!fBkrS)9W%&ZF^rj&HP~
z9Zhs#BQ~KEo6+|NE1w@*u?+(l#1OV)7$X?P4(!Aj#xa3OOko-`n8h6Cu?xGgfJN-V
zUhKnu9Kb;w!V(VS2#(?yj$_NTHGgjOpcj4U$5w2^00uFH?HI-gMzI4sF@|wWU=mZ9
z#tddLhk5M6ZY*FCd$1S#upb9-5QngY!{~j@nm-@<u@&1efI$pZecf8W9m5#GD0W~c
z#xRZvOkxVtn87UOFppi>jRh=X5B6do_TvB!;t-Z_7)Njv$8a1ca1y6*8fS18{cl+F
z*NSZzz#xXO9m5#GD0W~c#xRZvOkxVtn87UOFppi>jRl;+S)9W%&Z9A7jkf`9Xh#zr
z*oaN&#AbA13%b#RUi6_KTd@rT7{m~^V;CbC#SZMm7{)PyNlalHGuZy7%!|Ap8&d1#
zee-Y_M{pF!a2zLa5~pw)XK)thu#EF){E_{GHngLO4s66GbYe5Qum#=dK`;8ykFD5-
z5sYF7c47?Un7|~aFpU|^Vh;1zh22=dBKBY}_F+E`;2;iR35Rh6M{x|taRMiC3a4=f
zXK@b8IFGqMS^G7QUD%BUEMgD#VjuS701o01mT(wHa1_UI94BxRr*Il)a2DsVjPq#B
za@?W~?HI)l?8F$xF@Z@;VHz`-#T@3b3%jv^MeM;|?8AN>z(E|s5)R`Cj^Y@O;{;CP
z6i(v|&f*-FaUPAgta)vD+tQ65^r8>_*oti!z#xXO9m5#GD0W~c#xRZvOkxVtn87UO
zFpphm|Fbnd6CK!yP3XjCbYTm+(Su&}p&whZ4Fed&5Vm6&BN)XF?5vj0S>x!yPK;q3
z6PUylrZIzA%wZn8up0|l#2)O$KJ3Q<9K<0k;V_QiD30McPT(XC|HT^r2#(?yj^hMQ
z;uKEf49?;lmT?}9zgpXCKpWc8L<crv6FRXOUD$$d^q?1g=*L!U!vF>`gzXr{2u5)L
z2XP2XIE*7WieosA6F7-eIE^zni*s1Uc{KjU{Gtu*Xrcofu?d~nj4o_JH+s;EKJ;TN
zwqXE+7{U?`;|Px87>?rvPF5{j<DJ53oWWU~!!pjJ@ptA6ZD>am9oUFX=)`7pVGFv^
zgI@HZA6u~v0~o{*wqqD07{w0k#2Cggfk|w5#~Qy4?P#I{8?gzU*o-c0K{tBPi$3&Y
zE4E<(gBZeg3}XbN*oXZ%fP*-MB^<^P9K|sl#|fOoDV)X`oW(gT<2)Mw;5b7Y+R;P@
zHewSxu^C<1f^PJn7k%i*R&2unn)A{>c|Fzlu3<FA<=-1OSZ0j6N_iG@*rje>XLPGu
z)folVQD+p@edT?1)NSjGepO$mp{-8hKhzm^_4PW#ROMWZsXNpeNmbfsa8!M>&KOf?
z>x^+#+I#E8raHqfHho@R0Ls_if(=b<L?^n?U88Z4e2yovAKNg9?HIuhj9~&(n86%&
zVF7!v4+n4vhjA3gaT2F-7RxBpY|R6j*oaPap&PyE$2JUNJ4UbrW0=4cW-y0cSim0a
z!vP$^VI0MAoWyCI#WEUl3{;K-G;1_2t~VSSFExxt%A1It#LdJmVmErxk8K#lc8p*L
z#xQ{?%wP_?uz)?-hXXi-!#IlLIEm9Zi)AzxF+XTxBRbKAZuFub+c1dj7{LyVp&@f#
zzq-z7P+RH@o4UQcU%9%{FidqH!*Hnk$^KCflWUObHw>qGguFk5+A8ncqaI=yE$Tnz
z^BB}a4a1`zBi9GjBcF4v9%~qW^*DJy4x6}4-oHrQT;4B5U1AvRswwY}scvH!5z3?L
zE_FtSx}AJ3qUx+OVycWMuF7~4s*ES8%6L+$j3=$icrvPtC#%YMa;l6cugZA3R2fgV
zD&r}rGM=I;<LOalJiY1~!{}2_FpSB~M7ds0;WW<REY6`JW7qZ#XhS=i=)gv7LMJw(
z3tP~Q9!#h*Pf1ngDW%FhrB#`yj4Jb#Rb`%Xs?1Yfm3it?WuCfKnWus(^Hfx2o_bW7
zr(RX&sZW)8>Q|37i~&{lduh2S%fqVd_Yqb0`=~1WeN2`8K2G_BD*Js>mHj@Y%6^|#
z|6FIxs2A25v+5~^F{fT>7-jWxc|UgbONJca;*IkDLh2oIe^T$1V)br0?$vAMxK|g|
z8I5XAj(hbRhT&ANmg8PMQI31{BspGX3_7o2RpvFK%DhHZnb!_=A30uCnb(*q^BPxW
zUK6U!Yf_bYO{p@kX;tPmqsqKyRhieED)X9GWnR0~<77W<A<De=s8ZIe%DnceGOzur
z%<BN<gR0EykSg<9Qe|F;RhicjRpxb6m3bXgWnRZsnb!$b=5<n)d7V;aUZ+)=*BMpj
zbyk&mol|9A%c{)lyeji*Y$?jTHmEYMHdW>|CVj3q>y5bjT{*AS`(&QfXJww$5t%3T
z8JQ>b6`3dX4Vfo(M&?PKm3dNMkmFai$#asrPUcOWlX+8rEAytFEc2#@WPDqR(vK-s
z`Z29aKW0?v$E+&-m{X-6WmWnyuS!3RtwrfagE}kYQ>7nvRr+D7(hr9!{b*FBA5E(C
z!>LL?g0k;)zl2oTFYT)Am#`}PC8ElHiK?<+I@BBGxKm}n#8lZYaaHz9LY4iJRAs-U
z)SS$xD*Gj)%6`eJC(3-PC&}kDI7I13NtJ#KtJ04VRr)ciN<YR_>BqP#{g_atACs!|
zV@j2NOsmq58CCi*t4crSROv@qm43{t(hp->QTpMQV^+^Qk1FS#SC#Y5r>>Oyj4J0{
ztGb`OKbm@&+;>#J%%^&U+;>zt@7h&4@4~8_cM<hanNL;DyAIVO^Qi`9KGhTCIw;%J
zeiT*dM~^Dsy{h!1PnCZ3tJ04FRr)cgN<W5F=|@SGehjOJ$b72Ok5N_nF{VmC##QOZ
zgev`*RHYy04x;qKp-Mj*RjF%Ir5{dJ`q8XPKU}KxqeYc|xK-(gN0okf)k9=HRq2Oc
zm439U(vLP(`Vmmq$b72OkJJiL`jJ+p9~o8pkyWK1IaT_RSEV0as`R5<m3|ad=|@qO
ze)Oo)k6u;!(Wf3N^QlTd22|<CpeonHA@w+!za2%n9*(MVJseY)$o#3M%%3X9^d#j|
zs$37JRoS;Qs<Y0JRgC&`>-F|w)OXe!TcI3=l~{&t)XOv7uIl;q#=evviZYZ+yEZ%?
zPs6kDeEdA7@ix>;rEdR0{2~4te}}K(Ur=7ARo0W2h*p1bcU+18g|h1^?M}f@;%D&-
zcop7=ci}hj5wywNXunr2viu}ofNSx3d<37t7jYW@g7pnnzAdo{_rinmNc=R$@KQ|T
zTFl_}n8!P?fcIf9K7<4KIF|4iIEv5V1ipgP_(z<>chFdDje7~&acgYEov|7BMmHXe
zK3s)u*p6r7+1QD3T#Gm0UHAb00RM*X;vzY*^tjjzx5RC6N8A-%csyQ&-@pfP65qgg
z@qne)_CAK6!`tx}_#7_P=X&Yi*0?jCjA!9m{2u-YXYn7nbTccT58Lp3{5iggmFIog
ze&zXItUS+)KDnl8zfQulFou=qc&V>Ehl`cxZt)M)Z?oK5e+BM}``|&UoU?1xj(X!P
z%0EN-TFP(0Td2RA`T@#+iceAh8|wc^`9H8uF04A9<*IDA@_a4ZU8%8n2=zx$e;VcI
zQ+_GsIm!#zhYzcge~9>}s%+;)d<&P#JwnTO!UOSWRo1^8E6?K+KSulu{EaH>|4Eg8
zZ@?|LuwsWQ>+M49Ql)*1dY<f8%8$Y|cq&FzX&+UkeT?!i;99&6Z&Iaw<@JF0IPtGk
z=||=HUCRGT`z2dSx%7KG+)<Twdl2uVO8X=5R6I|Wc9#&RiEmIP-`)5i{s>E|toLhG
z#<Py{->b5ndE8p=)f(@iO8b?>$ElM4bUYs`uN$P@<;0cO2@+Rc7f7DUbHBt7XuZT!
zs>E;OKPlf<ZuDC2RHfaas%-CAJPprMrQLbN7ZP7ae1$6O-+~X|<EpIpB=M`N<o`1+
z(&v7OE3X%%-S!%byQz}TM|}WKr2Z_t6qC3Xuf@D7`EMsK5`UAppZHPYpQ^Immnr`f
zZotL*`at?;s?u(6Rr2po`Ju#z6CX=ld0ivxovyL0cM0W}(e5hZuMl_PHz@xmalb0-
z|B~|G;j7fYjqj?`ZhME-zddnZRr=vkr9MpgmngrA^1CT7QvMJ=MtSA+kK}oc_>a{8
zop=NB5`7&b+xdtp?N{RQc#bObcRul@#FrDVRb~Ba@OJ78)Zb6}6O{jq@-dvn4XT`f
zo9pWt*`7m{{_Lnq{(~q#l=8~!D5<Z!E)wIEUrzg5XnzOgJy^mqd{LGBe^F(-?@(@&
z*9yA*X53$udJpm8#I36Ido|@D%A<HOuElFr$(vJUyWgVxLCPP)%Ih!L-iyR<;M=OK
zXKxgxek)b-?ShBl(bOMD{Bh#bRq1bp^7ARb9KV9MV?mYt_p7qqCn*0J<zx6V<!=+$
z>+3LCZ*x`F+f$YP9)ibU<#n61J56KhS109{s<Pf?lz)ZtoAEB{@1g$Nls|%xsgn0?
z+<+c^T_)v6U_h1aoTEzrF2$?yI#t@=rAoVdRO#n;secqp)DKfXPWd`~gZe*F{}0L=
z^!1%=cXQkhcTr_~$EvdZQ;095{tCPS^QyGFPnGq)rAj{^rT!=QH1)rt{w2zPk8i4y
zr>shzrA=16wJQDG4G+Loc#JCRokV=9D%(Gs_ySe(T}1hpD8B}8P-Xo)RB6{wc?rkx
zc~#m?5x++KcU9JVSC#E<zLO~Z-42^nsduZg{$a#%;<b1a<+rMm=i9_3>YpKgO_ltA
z$IW)O;w@Ck--LTo-lEF(R}lw@gQ{#NO!?W^sY;&DtFqpWl;4Bj#Ya?WH>^s#5moYy
zQ@;+URcZHURoZR7izxly33pSa-i^oL@pv+xhG(m?{&~cg5MM@o74h||Z0{yj`t^0n
zAHavH{{i*Ss?v{_DF2%(+ga+g+#YvQrJYNa{HrKGhVqk$PbK~o@%gH>zfhI_TtRsT
zZ=(KI>c39;1Ne|C+kH%xJin!Ug7QBQ&k(<Zi+7dwGLGe{tiPQq>$@rU<5AR~O8x1o
z^z&TmFQ)!W)OS(dgWsY4Vd`I^ynZ)pdt0m0j~#J0Rr<3p^~X?tDxQm-s<gXImHuQY
zzg4X_j5{d*7Ukc=$JBbcZ>X}~)097lFR7Au>yKFOf+74QcB=J;akVP_zZLJp2UN-P
zm@4g_P-T0+qW%S(qJEnCGUav6R^H{RtiPoy>+eW;GwzEA<Ke2bKTnnIUqXBX^>^cg
z*sn^vpQ*CmFI3si3)H`gZ&Lpj_3u)?WOr#V<KJABJdLX4*^~GH>Q~`O_$fSBmGv$n
z{=6#Nzl!*JRr1|L`PV4FA0Jd@{YO=4H%9ps&f(uxY1goaDE-|`m3RkL*4s&y?e0tc
z!RVtts7m|OiSxu?$A>6?M3p>G6Hih9C*sZalzQ3z4!9TYr%HYw9z%IRmHvH-xRW@h
z%65{JUxis!^4zA%df%n|3H%j4r%JnNRocy{lCMmCol9crr%jc1+o;lRU&{XrS5Y6t
zbMdoyF<ypOsgn0A#J3RNL3}UqcU0NlL#p)a$CN*XzoGtl>fctSpYKw>{a)5~_QXT*
zzf@`0rb_-#QGPDv7ZHD+crEdDs<gjBmHymKc@I8B{Ug->nDVFaSyi_Ck}7%rM)^GD
zOZS#?nHRe%?N;FKl<z})uqx{ZDUaaU)PJ7(%T?*;HPqis{nw};pnMpAN&RoAf0y#z
z_OZ5ifGYhv3|Fbr&*P~-hw@ACGRnV7+>PH*Wxa1vU!r^rr*IDcuF80KY!O$<^PVc}
z@2g6=kN6l>`gc5WJM|Y)z80^c{wCtvRGFu55<f`%1o6*R+0H1wpvv~w6K_yuyIbyS
z=}@J97vg4B@*hm>BMz#P_cT@7pG|y)D*0}}JoR@I7gfpk2=O5Cs4DqhP_=)=8&t`+
z`F@sLt5Uxc@jmEQW&PFEhlnqrK8aUSpC!Hn?^b2~Z&N=&{4Dj8xSsl1;(y|z{jK#K
zxU(w#+@1JvRmRau`3b}!;<Jb^#5m<&#_K7+S(W*_hq#CO@2S%N9}_=K{j<a`tE=jb
zHz|KxmG+HpQTn-?D)C{e^z&H!1g^zvRB87R{zR3$&k)b5lJ6bjZB|Mw`F6vVcp9Fi
zO1`h)ovP%!pLh_TQ6<lds*Hb%_)RRUl4tn=R=e$0iJOTJCSFZ^5}uAx{ERB=U4ge?
zFaAiCeoUz{&OcJV^gye8JKP=jR;8VX_!#07iBD5yduOULt_vvtJf`qkyk3=dw-I-%
zvi>lRQ2!$JQ}`zS75|}1o(7L7<JnA=JS*`SJOeMrYw>P;7@xv*IH$_E_d3Y(AUqMT
z#+z{%$Iv*~TF-?Cs?xvXRq5{;_*uM2mF<0z_-a+!e?^sX-a+{{uooZ3M^$O}6XFq7
z*8dIu4qs8F-P@}4;~&^?h!t;+TdT6Z3qOV-JP%WN8{Vl({s&aa-;a;s&+sW#^8X%R
zS7p6-s9)r@*0<xfxI&e7A0cj0CC@>4C>}@siK?_ellarbG2%;z*Aic&O1>iYV+ntS
z>+mi7CvNdkYyF*ZKl~W3!3cgqm3dl=*I|zOyNG+#Rr2rbls}0t<6m(3q1N_y#Y6CT
z{4{<6Z@_!;hxiPx#|^mcVOIWq@CZB=&r{_%z7y}q349IbRGH^3e4>nhXWS1DR3*>H
zh}Yn$s;qaqD*N?(%H#M&yc(}lrTsnleS8{U#lNHZUsijED*2mL>EFJ1FdmL=s^kx-
z(*9J+BlsD-2tTh%`!4(rmhc5EWAn$X_CY)clXw&M;Nv)kucL9em1jFV5<jlW_|C!(
zOi-UxWn9-#p2It-{|@m_@HeXLx0k6eQ@+%1ZD%{&QI&SP6MKnQ5g(_@Je{D*_RpmJ
zT>KpMmr$Rk{Hu5y^><SL0OkGo82${OQe``1#Lug;{iR1(E?1>~g(~y)5p2PO@K9CS
z9ZB4#N}fwFP5D<bugW|;iNC?OaF111{ejqlaV+34{#va!j5k&3=exN1kygC5D%;zM
zcsEu0>mmM_D(kPJ{3Oax$Fr&b4E0~2d@W|F&rx5X{G0d?{t$;$+5VHn&#JQh7jX)w
zRcTjNWn6WwmdjOXzojbmyHM`Jm3Sx~sY?4}RB3-I<q<rO`U|MPjPftz_0-=){nsgf
z03W9Q2h=}F`Lj5Q>#6@E@!wSGmvNNkVpaOLwJPJ?k@8(A--mJ!9!7Z^@rkPBJB9MI
zDZc>YlwV1FwJPmzBkm@C44+V?KTlKt9Im5&J@s!<{thla+RD3`D(ml{%6N9e7V6#9
z`zSvOPo(}7>d&V90!&b!q&`deE%-IOAA409=X3aiD*gHs^<}I(#_H!1RqD4SUZJj%
z>y|2c_M-ly)UU!e>Mz9Gv6uRX@p1em_0OuZy_YEeJ-$VKLz~pg{Oy4IsB%6Zq)LC*
zP<{q>;^$OpcRBI(#9hSqsIvaOs%*cX^2hM!)IUZ23zWZ#Z&Lpj^>wQykMwgHZi7v@
zt18>sn|Oa!wtohGlKL3+U%<6^9p+TYb35_ZRLS!czCih___`|du*<QQ``|H{#B1?!
z{006McRtQqe=k+Gccd!gJsCfZ9ja{aV&a4<{rw7YUX}H`DDR>CyZA%ue?<K=l#k;p
z)c>CPzf!&dZ2_xaTj6%9Y=0MGmnz#|iHG9HRB5+Hm2sVlpQQe5>Mx=EOLz_D@OD-5
z-=#{vZ&UsV4pCpCew6a(af<qB>dTbZ9dGq(xhna$RCQdGyYOH<jQUpM<5gMj<9Ist
z9n^o0@=GYclJc+Mjg)_l_<mLLJwW*nDKFtKDE}?-gevXdBz~KCn>AMX_Nt8MBdW}Q
z3m!uKVbmW(c@R&h{w(S*q&$IZslS@~n<&2%@2CC&>VHUi34clbv(&#r`5QQg@1p+g
zwT`m|-Kvc1C{@O_22aH>^=A{u)KzlbQYFt7)ZajT7k-WUpW>fT{}x@hvm70`6Sk?6
zH%xpsUVs-<pT&Mv`u`mDlf<tP|4o&A|Db&NiPrWVxD)QCN}fYhY5yrahw@8R>Gu_w
z!LL&Pbye1T8h=IkI#t$t9si7F>Nh{hTF;9<Rr(Q7WxZ4IO#C$U301atFaCh~ALCOv
zO8x7&?a9`9JE*dq-BsDnes~D_s6R=S?IcyXZeBxtEAc(5tbZTzcZr|CU*S6Zy()SB
zf(;=n-UfHWm3RW4iJw)a-&d%z-Ha;z>n6Szzk}bSegyxFi%zlDI~3QblJ8WE;MvrF
z3Gc-h@DJ)L`FDHby*_T`Jy@0URm3L{pHAFC94G!F@wbVGRO!!?SbwS&FI8o{jl??>
ze^ixuJ(4&~{rPwqUZG06Yl*K{CEr7;^!Ekorzn3{m44XUEq6qxDtY!M-d~kGC##a@
za_X<5{A;S@`8E#X6RPBSig;9&Jaek#Y5Ig!zlSR2hpUoj4W5CYQYB9(@#j=&e~T)4
z9;5z`_zv!Wnzfz}k5Og4PpYz=&*7DLwJO`Wk@z0GPnF|xfcVF%<oOxp&r$v|zDE6<
z)W1vllGCm2nyRetP$h3O<@@5ncsRDH(mtR{`!MBa<Au~;O#Ky<XYgj~Z=?Qx%KPw9
z>K~{6mz4h&C-F6WTb2I&Rh9nKg+-aqWw;GC;jXH*ccVv@^;)Sv9#5wJJiHS}a8i~1
zv(*`vJK;%q7M`cd_R^~KE00C|rYd>*iA(sTD*bwqc)colUZec)l-HkW<+ZC)Z>qAM
zlk&arK<W>n{us)G_zC<Jp07&23suQ?1?3sMiTYcq|2pLl;3L#OO8qY=|24iu{W|L3
zqWm3Pbe3#a=F5)Ts?whwROwGM<@@5ncsRDI(*9&TRh9M5r9Ot2QvX$a9RGw%BUYXj
zs`O_M;zNlKCq7n{{dgkr`P9cKznnNld>!$fSfKnte3bHEs?zUYQ~o>3XYegm#<}Q|
zR{w0O#QUhypM!~yA`YrDjwtbk)L%w?74hAwv@25nAaOtOkBCde&k(<aZ{Vyd{r@NN
zqEAUI{o5XWs`T?{;uDEaCq9QbMtqGb{mN2)EAgGg_YyyZ-&gAm;~7=9^E~l1@!P88
ztNXO2iMwF4D(fA9eq4iLJP#9Uy}Yhd<$X(jP5DcdPZPgQ{4Vj*sI}hCs`Te0s%&>(
z;sc0%#H(?QD%*=te;)A{h`+2#zMJqK?8Apu+0IY!SNJl%iT}XO&bGF<mn!eG5>;jW
z3n{-=mF-<m`R&ACBmO4wcZh#LJfg}t8qTrund&O}y({q^#BO3A@zKO56Q4nR9`S|5
zN#ZMsuP45lxIla_@k7MlCoT~`N&Fn~i^S8!ZxX*lyn)z$t~H*mRGF`xi9bT@CO(LG
z74fOWQQ|KVUq^f|@k7Le#7`2xN<2&a4)M|s`lD)ph+V`75uZRDCO(JwV&X3ne}%Y6
z+(-N<@z03+?zFbM$K#eu4DlTKe;TUn|DU5ny-@zHjkuZEMeHN?6U*avrM*1PRq}Ka
z$B5I!8R9%~7jZxF0Pz^{IPn~DnONS^$m*Xe{g(e)T#4Ppt;B7_QQ{8b6mgokKwKo&
z_rKBc_Y)5jj}T81PZ8_;-DvwcVw?0yW4kKfPGWr@8;yO$e&PsmlsHM8BF+<c5%&`J
z5swm&5zi3M5}S*x{y0=AYaw<M>-)xNe*?t&J~0}15@(3B#0BCa@c{84@fh(q@htHi
zvAw~{Z>rKCH?fD<Puxn}P8=qV5yy#B#A)Ijah|w`xR<!{|8Qk|!^Bh6SN^}P^rvC5
z)jyjmaTBqV*hB0k4iblmEB`N6^2dlX)Mtr%iTj8LiHC^Ch{uU%h-ZoCiS<9EYya%3
zY|kWaCa(NHS*iCEw^AP@4iQI)qr?f~Byol~OWZ}=P25M^PdrRKLOe-4MclBI`BkNV
zPU2=_KXEH@gg8nZBaRcNh||Oc;v#V$aX;}G@i_53v0<Y>s?29Iv6t9K+(sNAjuBVh
zcSy!ldEX#ezw*985?9_ANaB9l57E9vJViWBY~Re<zNyOk9%3(XJ8_seL7XJc5$B0}
zh<k~Lh)cxd#1q8x#Ktn_L)G~puKfRFi9N*a)Q5>Xh&zcB#7W`;agn(4{y;iE#6#4V
zh$o0AiH+q}e;QPoACuTY>?Cd`_7VGuBg9eS#AiD%y0G)?{Vv?!S@~M&IncB6K+i#5
zkJGu*?RMAvJlG>;2YbB-NTGa1mR)gF;OM$Kx$yH<XSj?_k^D~Wr<IDuo(e9b$=JbI
zK6Jz@rhnhp41Zx=y-`@VwGn>R{?^_4=RB{^NV^gFo{;Yj`PO@AO1|g+m*0cZUjB#c
zt7hu4=|1<}>vh?1r`Kz2bKbSS)x2r_B4=Tp&3)JUE6vp8BI!rd(9P>J($=?O|8?@$
zwy!oC#<HZuQnzv4n8ecOjd4g~c?X@1ajV4Mn%E=pAvLk-&P!iTepTjZMU!#jt8z<N
z)+B8VV{&7T!=%0TvoeI5A6v@2#j5ibDXd!*EUa6`-0doJr}uNcH;>A9H_I9?{LV_5
zjwvSF=yl$`eyR4)nO?84Df3ZpN^a(3vCL6c`d6J3c~)AMl65L`!a8w@ZSTpEd(Rkk
zoshJtjIm}rOBQTL=c>A$w>NB9=31~Fofqw+PKjJ9-t#5fsC+dHUAbwFWPTROJUN-8
zLuHQiSwQda|H-#ZT4g;OYOcnAGgpvy5mAo^9fuw#)_5#+?seW<&70Tjv1ng;w;Y>m
zCzr@RsLspQGM8nUr{y}|ay;w$GZI(!2eFU5ru)77VJlg;ByB7EfwsC$&0o9SqO`fv
zylS$#&Bd}_Udnc@*=BWLyx;nr3)Yt*FAGcAo;B;g-+I0U>-}1effgy-s%AYoC*Sks
zByyn}%SZ0}+SYP@89BMeq-1<CISzt%t=IY6Udrv_mZBU-%NEYl9#YmV+qLHD+V$lx
zKQ^snSM~Z}&4X2*j7U3w;nk+0Th=d@eP@$nda2B3gZq(<$MP0(uGjg~uh@*xt8*JR
ztf;oBuA}3w&h?~>*}Y&J%@S{Kq+c=I);4wSwJ!{{@;;%}ach}F#<lS}!8xGg-tm7J
z_x93ebisM5W7T79P|A0g<=X2+?J-j)$EnU)?XjxIO<LCbNX>fx>bR+sV=i1X7kb>Z
z%KFVU>%ZS|qwBe9)_Yp!uu0ad>?f`_)wv4GLR7wE6zDOsajqhAoXC7_BisF-j*%Ut
zjh-j9=aL@ZI#)T_cAdK*$5?8*g);5;!t1J@C)NEfk6_CpvfiGup3bpN&d<GB_dRna
z$Cu8#ULW+@tj9_<#|w<RHpgD%sE$9uLQ2&8N$q`j1=mTxUMJ<m(D!%L??!ahltpWn
ztL>`l^It-~GykGZwXNpXc{63+`eiH!%JK)@r|W9&)7hGF>%K@yyid)#dQYmCxzzc$
z8|i7yACfknnl`NxA6ygb{pX;X`2FtHPH9u!=bBUZjjGd{)*m%rTe^>U#gKipz1;5?
z$@7i;bNlQ1%&O0g3%{c^<?)*3h3yu`1!-HB?-BXd=Tn`_o#pw(A@`1zm9eZ{uW^Ii
z3+miQzM{__4epf8v$0~%<ajeva=fMFzmHh!E^ON(ZHE`M-TwpH?jmiw7qoSMKwG(%
zuZS&ZyB}?JUmYOJhTH1@!fUiVx-Rod8*5)!ZL0mRZm-(MYEIo(Iu|v&NEWR!y$<O8
zaW8R8QSS{hog42B@|azDUOUWPSftmr7CF8Q_oSSwsmeWD^DdI(P0vkTHl@CyaxQPG
zuWna!OWQ^Avb%Ck7FT$s{gMUkt7ER+_TS_j*W3%Y{XgYi{2}DtO8UK>^m&JWbB_G)
z)6d#DYL@z?3;N}dGTVZ(>e$rfa!zf{`Q()IsY`C;qw-zC0o1bp&394SA0peW?!Tb)
zL$4pT``4(c_tq@G-+r2r{bYZi@#`3B_rK0*b^k9M_xt7jclQ5QW?_-uJN1|rSLk)k
zkn_8)dTjDsxbe7>_LaQa&Xi-irmgl@zqHQ_@00qxpxcnCTk(GPH@zlT?@jUyv`nwb
zm1nt)uL0ise5%hV3tuN_`<Pr`EBE~c_db0#tmdDU`F1YIU%hY2EoS3a^>u=dXRG%)
z2e)0Y&;OHsp!-ygm30mo&wqR7a_X2*dR1P6Rjw!ctf9wR<vQm4a^+gBW7cbk&y@Lc
z$}y<dXSvR7L%BJWTi+~odj7~?5xrXHENtbFI)nA!|2ikX*YoeYUSA(I`0rZ3N6o#y
zMJ7ex8}`Ha4*oClc>hJ)h}7x(+}bxCtCi=Y+UuT-W2$mJ=UlADKAji#qn1_A>1r-L
zH}zg<m*ZU9y|H1#>ka;|uGh8~%x`$TdayW#?p|-#eL1A(j<MpS%zv-6*EV_#mG$+w
zJTunE<hd+TSSPOq7Huy3RL=`>MdO0!z9sTJkf<KF{@^QmuhHi~eGOr_uUg+A=V-Zd
zyj$nS#&cBi>N%><EQVjt(M@f28%t}>4c&%5r&Q04w`4tst|#mKUizM`4p7XqtYeY6
zsN9qE`d+;z9r_`h57pfIjH|iD6*>;Po(t@QI_KI~>^1k&|Kz;W?QARC(DP5u`4xJe
z1Wmo4<kkmj&XwA0`Uh=CuO+p|njUAGr+O^aOkw3X&})hOdbe`Eiz_64RgXh`uG;29
zn8Od_`9xnARQs>b5UvINs*b7p+`5AM>`J-MI^|-P<l9xVTrKmyPg%7tAa!B+?)(>R
zs%<rQ^%+*r6YKTBre|1vp09I%`IQEq3-vkCdS<uU=y7E|<6E)b`>bbtE3WSE>h)Le
zla+I$^7}Wd&BE(vbw0LbKK7LPXp#dh`aa*GnlfL_^82-2Sk^4<t7DIv?|n9}KEnnU
zlvkg5^;uZg{h;S%9cQDoseN8vI8NRF|2K}a13%z6+g8p~x#m>vlg+X$&k>t`C$r!_
zsn^NM^Q7)4?sL_-YSB4y%GkM2R_Cfwj`7Nz{EPeIhcVt=7o1nSeZY9D$5HjXa>;R&
zkcTLJUu=CZwiL@6f7sueTYn#-*D*b3wyQl><T}|Zb6B~z=<|fTuvO)ECm-<IOOK_d
zf8$uv<4MO{9q(>3-VS-um*G1u>UTB%Fx9-Z`$b=0?XqCMRIdda@3C?X*WWw;tJhb0
z%<5~PM)BWyo%nvQfol7u&u|*o-jnn-(84mE%j%cj=cK-Juh!pFRqxdc*LlD3{X4H8
zs=4*tsOEMq=;MEq`~S7M(`WPQ`1be^#;5b8$HsQze|l^zmwr_5(RyrXyztoAY(ZJ|
zxKOnZ3ty+nE%m>@4&k}FdLNY2Wm(t8bK3fM1^qV$eeIR5>4!eg*eQR%*L=0Vzg;Xj
zgOaoM-zuuF$=>hvT<!00UzGDuuQ9djR>xU=Jtr>@Dqng&$UIffhuVF*#e#YIPmb9S
z%DwrAkXxTqtG|C;A#<hs?mhRw1^Y;U&)HG4kM#GBIzOt-;P=b&?BAr<b7@!m{IAak
z)w$I6rkPu>|GuVkZpe1!cO6@8S-B@z|3<3&N!#fJcU#lE@n>~T^m$kNtk1i8oK~NA
z%@1L2s@stBv$BoqdAjUF$o>D%kxkdV|JTov>Tw|F{Ci&4Ri0Pm_|@NkY$?Zt{tl$}
zI{888y53tCzOLJNV9UY>{cVE$Zt8W{uJSt+`PTPKY~wpfnU?>%-(G3E@ZT1iWPI@j
z=k_6-gI?6<w%Wfv(BEBG&i#M!_YBRlPW3t<ul*~p0p$K7&)xt1Jg?3}qp5RLnbXQM
zwJER5^>-x>`L6uFMH*VqNY=f{)O$iro#yH5>q&X*)NiH2@_?mA<s|;L?YpUn+!!?0
zzo$|&@(TfNFBh@O-;U_#Zpo^Z&)ZV<?_Ja|>ig<z?30USrCxr~QmMy&QS+wdmyTLK
zi3zzWYpkDdqz;P@NPqJ3i+_#v^NZAW+1ctSdgPaM8W*rnZm1e}%j-4OCO3UGi)EaV
zXKpPYl$)!npBtlgV;Pfj@z-*Fzg{)Gqt*YQ926S&qHQN@o`ys%Z{FE5CF*$N@{ccC
zK8h_)EAAF`eha%=aS2;bI5PB!;8DiOpEx;m)ba8cFQ=>utUglS4q#1ab?6iF{`R3z
zVD-r%<EX$<$4i;~zsb-Mq17j>kxdxm@;xlyL-IW!-!jC?-|h5?MfqNRd@!*3s8-{o
zqfR_!^+~cIUq`QQuPhvOd{EOHN63G03Le>dMCb@<zvjrmDXm8ttB+Z8!bwNT|0%bM
zjWx%IPB`wUH7D!(EE}s^Pde&oDXA#st0jA-&#RBBv?HYvK19w*UD0T$)4%bm+eTiw
zyetQ!eoe|G=vRHi;?G<VHx@N4)j!c#RA(EIqi|8fV*O*(hE6%s7Ig-snbbcn^@}f(
zAGZ2fLW-8`BrWSNlFrNWH{=+uzgU+Wj0Trh#I-L=&H76RwSKvDr2g}|Xe_y2Qr9PR
zxnaq7wEPRYY+F+Kd(g`clx4eNYxuFanFbBFY5U8+tc$DV)TsZ`OR~85ZaIqr^;dnX
zPBLzxEv}Z2E|ujeZE{VWl$cAN)a;qPWw~)l<*z}nTO-R&Oa3k`>u-=hl{cJAHkUm0
zxwW#~yyRV7_eTBuTGx^zbVRpko0cW7NaFfiHIIAA7j^meXJy&5B&*AJJuKP0OU{s)
zslP}6;la1$5}CL9`;L}n{}Q*%eEkEvOUu?JquQod2i3Nu@>hx9*5%bk!>PJLN)y={
zekebeY5V78VR_|;&d>77k0~jWHZKdCJzH7SV!O`5JMz7`{#c}YOFulNQoNP)v{GDW
zWz|tE$SMi7Rb`_(K?|xYTb4HNY8#!DO>Lwmq&3<RoyPanTu@!-zW3BD*YPdaGFkiQ
zm7f_2witPDtICkIOj_w7XKQ#!Tm5ZgE1eE&Vk%|YUK+hC^|l6`T3f@ouHce+x4N}y
zg-Y3BQX!4@6KoA0`MIcm={a)H*cy(IU^6YTHEbq7w`^!|=+R^zFI&9A+(r%#LqE6M
zs52MqzBBjMmCcoM<TscflZK1U8)e5YF~2WAmzsNOPIE+RH#6Us<z?nEvb@|pQ8L)g
zU&vv%x%rxuY+-sN|CZ+AviD4LCt2Rgd`=F~t<6W}=QiemY}a94F5BAHyiL~K&b(Yo
zwm0=pMjOq7l<#2vQ%Y8teks|}?3d9unO8}+oy_Z`pF5jBkmX&>v!vE(o+}x4HMf^G
zyP4mVK77RdocwGye=B)*H}zv>_AsxN?e1ybEXyu4F3WqFVd>}I=HZfUA9GjPR*Si>
zl<#YvE<g7(SIN))&28kT+uTXotTf-0<pazIWm^ZDcgngR^GovcAoC#E?!o4NN#;Y$
zr(~pFvn<>FsQFJRKh%6yX6Z0<Sl03xi}jOd8XHd44>DTvko;(9KSq8UOFkiu8qR2u
z#fBy8B}K!TyUVg|$(53#A)@8>CBKy}Hhfac%_XzC{3%^_SV#L2l4g13hZb5#Qsto2
z(@u81?s8j$ZnxnAnYf0iRdBo%Z1u7f)a|fXSFF=N@!tAO*{T$@%knny3(v1s8jjy<
z%jYW%N2PMxO2g;1-FB6BFKE?vvG_$s-HW>Q?asa+YSc}z_-Ui=rAl|UDr=t2>MDtL
zmSt;;o7HXF;<8HRHkDM%>ombOm0b4fvLxHQ&dOFNlTo+A%GS9t+lrcOJJw`ts%DU$
z?NnWsY&(-}nP%I^%J%5SZ2Qz?YpKb$Z#9Et+poGT+4i@xIex1nEma0uFNv)gD{Y#w
zpKhA5pKY44pKqG6VQY*NvK#9Tw|W(nMAnQQUehaoO|Ooq_C$KMs=6$_I+8J7uD!ak
zzS6C)ZOnFK{igZ9sZwdp|IPKA=09IumTb4wTYcM1`}TD!+swvnU$4pbjhbx5Y6j`s
zz13yOb|2a9)xJGyWjj>PFKeWa)@1u(O}4>m2FdnVby>1KPPT2dZ!cNdG8?nKRFmy@
zHQ8RSW{_-?)n&=Hj%<E8uj_8L_QG=;v)x*=7jCQB3tiQjmu$CJmnGXB?1gV@-=1iw
z?1g5zj#(ppqG8is_;IDu+6zBv*t8c))n&={(*|oVJfYd%u(DmWG20t8*=B08y;;p5
zefwi|S+f0!Y~R;x&s*7sHfDRiCff@&*<P$>kZcpxWy$su*-nt7qVAtowk_m3X^r%s
zHQ6@QWHT0T8fjg1S+dnHwnnNSi&poPwNLd=^{s4A)$G%entl3obw5hqepy|XY|pSy
zzaUq}y5|>F_QJO|W_y0oroHe&rPA69FD}~Dw~6Yqj&zaLx9@AV&sifaZ_M_&nvq^q
zGt!Hzb0vL?SC=K*CCpo|+%D=?TG@`4Wox7>YqA|slkLE22Fd2BE=#t9$ab&x?N}>Y
zeq**{YqA|zlPyrqAlZ(uE=#sGWRpv>{6~2!+bbKhg=?~%QIqY=Y6i)6R&`mjMacFU
zJ+t1n_Nm)m9qHRO`}F@*_C9b{RaO80y>mfFK}EqthjLU@7+@F#6blOk6mWz)_YOKH
z1;~to4S#}B2Sp`C#YDxTq?#NmEJ`XWo}#3pBEzH}N-8W$>hUQ`N=i)Xq56H^d#!!W
zK@h*c`{M9k|MuEz@AK!LbMBdYU(T%4{c$}i+bdC4w!iy2oyykR#n$N^NwzMTb=ozv
zPLGM}QQ3}-va(hBI-N_lOD)^BB-^E#Y-2Ln#>NcFHZID_cA00pg=|wS+ZnpRwRJir
zlkKWZwyR?XWowGEvR&iZmXK|>Wt){`o1MvaV<y{sVg_Yvjk2=M@oe{#?N-b7)g;@k
znQXUZvMr7ol<oE?E888O?E_?cz_NAGrMr#vflRjLnQRZn49fOUl$Gsa&$fnaTP<5D
z$+k6<?deRmAI1#I_DqzOZJTFX#3{~K?MS{l$@bOEk^F0!Bl*U7^j5a7M_Jjv;YV`a
zZ_pW!W&2B#?N^y>yE55+9WyA~Z=$Sh&wDoAO~~b6wQM7GtHb8))l9YnnQZ@v8I<jx
zQC7D9^K564t<v_a_b1sZGkex?nLX?HxHl<Vw<s%Hci*%6lkIfNwlm3gdM4W$nQT=t
zgR=FBva-F|vkf6zon_<4@NA@YnQTKc*)E6~lx=8~m2H@3)7w-o|3jO%wj|pRGxPRL
zX5O~Nxl*<tMOoQ??DKXp*)Fx(zMEvbG*jD{Ol@OhJ<2vN%F1?`*EX7L@3w3`w7J+w
z-<`=eEt73}%%E&DqO5G!dA12;n`hbHon)Jr$u>We?Y%LBvMq?RvMuy%=WF8fODx;E
zB-@fqw)bVS-4!z^+uc!CwxyP>*ZpLBJiMLq`{8!R`*?cB`)OQujqn-XOYItAt&2+Z
z+3-$!+WSIP1oPq+WWM8Z-N@@5E;^Qwkk{$q!sC6!>F!zX^l-&+7un{chKq)~Q7={o
zsZ>e_|EJ{)ehBuUd?U5wKXIS3SIv{@3LP9$;Wk-j%aZG}M*qDzU+${+Duhzu<$U?g
z`C{P_{?PQampCnXkwPf8ua<nrT|HyLFH-P*N@E4@C63!zR`8#xumv>~{1;U2u~@+`
zQE(T%d%uN(cT3@w@0!0@=|iFX<#8%dF;|qiGdC)Bnu0>rI$@>iiktL*L&eSd-%9UO
zt+GOdHuED!<f^}^#`$8{eYgu;sU_d>5#2vME3A%U*vW2DpJ#{l(GVgBtB$k73Mqvh
z>|yjUz;e)^GhM5sG3<2bXa>U&`J*mwMCR|#_fa2VWMkw^1%}AAUhd2hiXEw-FaR1c
z#B^|Hu9KgKmV&?faQ|NUd1xv4`yJ-*(^rEEzPiJFx#||y^6BAyhnwPTOZkpRbvxOn
z<@E6G^nTT8({e_L%;{{{rll&pGmS$J)6ysCOHJ3byg9sE{aAXK7XBWbD)MhH3{@Xt
zHvS@KDljdlv7XNvum5gRP~V#rkndagjO4BbHuQ66>ryooGF*{;_J;A5DsIsz8!FoM
ze^FbA9KDt6kb%E8qB~nDdBa_~V{^wb@am5-C96aJ>B_)&8ss}Zr90_1C9A`fj91S#
zC7%e9-$D;t$|u7VoUEPSrsPvWf3NA9k~LvU9+w`bg!>iKRYrbG;WG6RX5#yDrUFy)
z7g=&=z98v(1%*LPmE|>CN?)y~d!xVkFn^z^@`tt@Sq^QRtG-Lqn13-0hL1yROSnfL
z9N4g548!iOD*_w#-Vk{gdKmVf!!Un_ZbyKi57&A1dEuD#QW$o{BQ|ROK%Lu&`L10?
zs*5n#I~AJ>jC!psx<#h-f1QFt<up3tA)rxFA!5nvMC7U;V1&nob9z4LnI2Z`CEDX`
zgvW(5|EJWajqvyo`2u<vVYhJBf1%EwZG_!}&d=CO*NQzMTnTKEem+OJwb~*^sh0ep
zF8my27+IxGtx|y@o+nGL4}ZTNieGBQA97r--b~#OhidjHFq}tr>`3Z<IMh8>iLCAw
zA@W9@+gRO?ggW^tU#t5AR<{n7R`&-(-RDT}N8S8g&kE{(vP&qH-||fbYJON2?I+Fb
zmnVh0ZhTIr%Cw)1(7B&Y=SkuA+vgQ~UO1xm2$A`Q^TK4F94?FVC2bsf8$QLfvTZ6o
z!)3BIm0W-Jj+IK@8j?S!<W;L=`mwUsd`d#Tq3R35S$dzY`nrT`5w=M9f`kF<)UvNy
zhL|76n3rNq58f`x(iefe7fBe%B*d2aKZK!UPX*?HCVKVfE+U@_vNz^C+V#0v)o*3u
zgS#4Tx2nK@2p=FpS8ep$5KflxX9)xPsbwgTm=p9iS3^t}y(@Qypju3xhP0PTA4Gkz
zVg60|P#2CwsG-1o1LbjVk`F7bywmh?Ue#ckW|H@95>(#h!pCV|mhcONX%Y@d7_c;!
zM@(<M#ncdE<q>o-CQn1!E2W3>V#ECTRvwN}9zv!(-T?UwmCZii@pa0(U8cE2-7i7q
zeMtBv%|9VwkdDt)pO?T7>kil+%OmFdxQO|Ej5(IWDOsuz$XhER)E8Uk-)8mU2=xVl
z>7xx3$PH9J-Q5x@<aa!)ekjvqxodtVK^5*6_yOH2e%<~=j%I(Cz)$23;O~CI`Xy$v
zEH%W~1QIkKlcyo=Qt4s)iw*NX3uR$Xgv|VLM>eMej;-FmQyrg&JWkp(**zPo1_;m7
z{2~dbb08Wc;jIz|^i#`F9Wn2erG^-*jv#&oH>M%&!_sZ*^M?6)n?4+&JcLYn+~=LD
z*rqUfAJ&J(RWoE-Pxu@Oe<FO5gnX&$9-$li_ahR<Nf@xid&x$$#E5$l$njAGvOXmt
zR2SRjAFBvO;YbBmE^YMc&z)mFqTe3sd!J6ftG+1HA87ETgv;5Te<0y;gl8pm)h1f=
zyaXMc&RMHwBWOg(WHw$x<{%LAVFc2A6@kP%B!puu?*p{Xf7MFF5lRdKCDKOkefw11
zyVXT_bKnSj#P`0U(uD{P%twmI_2;%WPa)WrQmxPBtNta^ztm05aZ0Q$<y7G!Hled5
zycc1Rgbzp<uud(*mO{*zWvL;?wiJS%#pG#7`v>V^UBrg@AJ{-~gn=StwiND@^Kir}
z4ItmKnewiXiRTQeu9k2I!b}O@LzpMwO-%f45-yTZyIJjme<o)9ABcW_6E@`dIRaVt
zO9-pspnBX%kAJc1aD?iDz-pk4Uj4cA&O;k@;hdqNT5%tdsUL+tE@36Ymn85Du2o!X
zR1)*Fga;)I<`0Z?EXZ9hrH;5dV(ReM(Y}ssVa8%)eto`<OF8?GTJ#CtYNg?dELY9@
zME?G8k-|eHN~?L>BG{Yn{o!)vkJ9a&;Qb-;oU`IN!2{v)Wh{Dl1705V7U}jD{9w48
z(MCRGi?TENTz@_<;6asbp|7tfw(1Wu-HY(Dgl{1HN5X!DZaQNfdbU>bX%duZa9_Rc
zvJKrB!)}l_gz+n?RfMfVAk{hql7Cx5n3mW&|1&!)!4Xzf5SSj?XpgB>H!IXd*dLb5
z63=rR!Ucj~Ft#cxM67(Bh+Ka@(BOHTsfx&Vl<04`Oh1)SGg^Z7m@9?u=g4u5gv$_G
zB-|ijz$PDUh`CRe8e(jZA!scoPea;G(!)Sw!~6joD2^~tgv=hpCnP*3G%J+%66M`3
z)31qoSc1y?m~fh=yy`O&8YI+wMS|AF0M1^*{!GXMJcNYmJf=M+A?XJdVQazL<^N#C
z;RwYcWQyYh7fylNLvbHu2tSdDpL?zPwS;5OmGDOiLlIt)(2kJT`PwrQ1}u;D5%X${
z>3yEZT#P`TD-p;%T|%fZw#;|y8VbXa3T!8|(W^fn<M3QnbEvV7($19WeR9_fke~^?
zNO+P2V<fzSW3mJ$FsGeRE%dG`!<){RhY*`Ui)oKZNP3YXLV2-W{y971;0Wa*WG0YL
zg?QMjH5B(#ikl--6H$vKsJMHCCushN1pReMuIl3wM)cG4)yL|HX_6(xEJ7fLUpuWL
z3qNxj@_t7`s4uq6|Dh1d!jTG0A8qvN&nHbhhSnpmYC0CMj-Hh1cXHSKK!PfKR`_Ut
zIi8pBB*Kdlc1ak({fc2qQ$viVt<+gVknJBt4XjD?khflXs4%w7KVX|6j!+>&W(N7}
zipS&js+W96FV^C5I$vBu_^A@Q50G${g!do}lCT`%VhNv@Fn~Xa8bO7`ScL>xg+x84
zs2Vb9q-5r|LPLeIW&Sd&5J#vGAyXlrhw<Q^tz&+=w~B|4_-)aenG%$Dp0GrE)ol{K
zfpDLM69%ci4Qd&-Kw<{T5@IGH5Hk;fEO#T2_rnrGeX(V}$?C%q>I(wvm^OO#=QB1Q
zDO@Tg-*FY&*yA#NjRs$mFsN3-Hzizy@U(<=2tSkXBMG(p)Gqk{5&iuJyT2ZR9IXgs
zeZPe8uH08WR<c#ivHEa?`hq}xw9%_SpW5-Lqs<^c9$fXZOy82b=06fNgWbC8`H(s}
zPLps2!Z{KilQ3Y7T80@U=36o5`52QMqF}Q0LLl$?62c6|mie6RB{)KbL7+m~P$8cL
z@(|{JDfy1D<BgVSJPod-TZC&Qyo%5wq4xz6-Yel^2?O}!tC4D3LyT>O1ld+d)O!_G
zLne)t%#TP9HO7|tQ>{iEp+<zvR>-G|JRZ6|RCqCa>BBO8pQw*n-p>fVhsyC42_=MY
zOIRpj0DmYI=8%{V%2Gp&l}FG9OrD0c{Lp16FE-3KSa~=?c?g;E__&g%R&5jf73KX}
zrauz(M+qACE5Z~VOseuH=zSI81PQ%{t2}O!gz|_PB}<5zfk4b%2xR#%0(n0xA=DRJ
z=3A^j9HG7-u!?D;SARYN<#}2=Pq>xi%K({vD0j_85>(+Bq05DGOqTF=gli>ClQ3YG
zT80XVxl@)JVr&8lT8+umkamOgP+)ABzu5}J5eh`eOdy}B@|drcclrQDEs}{}#;mzV
zg35bDIO!reJ}zMb!e=G$8<zvN#PW!FzbrMxSa}5TLzgiPX}>K!louQ3@3Zo7gz^wF
z<?$gcPaoU*eUkEiAk%K5o|T~To)_wMD6V=@LMOtj61rWi@_OjHEX*D;7s(Q0nh=Ot
zgg}-D5y-n*LZ~mc%zw=4!x8EW0_&GHtY1F(<+*5^z;_N*+^I5sNA8-lB&fnc!vB%r
zVhO|FDq)<2t0W9q6DuU<W?5>8u?ZyTQB0nOv`<J61;&Q?pIL!8LV*aG3FMPx9@n-B
zJV<#nW!gs6JP9iAHetlu<hW150|+0K@T!CX`_wW_ATj6YNE2elA`sJpK$b-a<XtWy
z)E8UkpR#)ZI6{3vU;=5w1oG)L50cw4@DGC&_a&J=PlIntIOh@xPfNHN;b#(lE}`bP
z5_GC{PPN_&9-|Q<)o=HZw<8d80|II8Lm=_v62cqFQguq}{L5A%j!<F{D3LbYS6AQ`
zb#e5o?CL%q(L-&He3i{d=R7MvRT24)du!F-e`NZxx~b`QQdk+M36<}V;~WW>A`F%=
zQ^J6DwG1nRn7d`EA;z{9g4SU2G^E`qJ*<n^FyF<_DshB?B4oA|K8xoOek+e3x30QU
zrss&dMuN7L7NO@TIo>PbN`%`b%#|=;M=Xz+hh(WC#>yk;i<mqOX}>2ulouQ3Pqp%J
zgz^wF<?-P@SNt1u%-$=574<QhULgE465csl!dE10MEJIZvo4kJjD$NSgpX7DseSmU
zbzsGZ2FuAMbSF`Xz<S>*OK$K|#a2t$P9Popo<KVICjuQ*jnP5}BN3>kC?VIURZYXz
z(jiUTg59uh5K8ew$y|RPFW@gEniZ4p_y8vsf0SviGSs{xLDQYrwzQViCrJ1mj?*P*
zvmdZe4a3GjNMWozgoN4lnD&^2q<s}(`=z(bzuhJqM;JUpX0mx&fj`@@ZGj*5uDVDj
z{w$(qj06=oS-6wtd<4KxI#%5v;g=Ey)T?D*4J*X_Q<fTHY+E3xYFwIzw1cIG@?yjM
zFKnO05z0fzl*i)_{56RkH2QGza*s^<8xdX1NO%h2;}ZBu#j4LrSR|q5za((bDCTuj
ziZK!Ly%_Ra1VWC#Tmoro5J=1~7KVeyT6Ie6{5x&_aD)Pbz{W!xZZw>!bAEMk^n=D&
zMTH3U!G?0!XV<y@Je$EE%-EWElA%5;(|grT&GQnpCSDYtppaK3{4YY`WIc2}UTdO5
zEyJ21<~&(yh_N+6(B+ss4Qa2H9@a!`n17EA6h{~+LS{|yum^v~W99LS=T&^%vY4nr
z5>(#B!dGcNPQpHf1_>umP<aPpdBhBnrG^+QkDwAJPea=4rHArj!~9|^4@W2uAyXbt
zj|{A~hb8hI{4jdeJelqz{5A>SLAX!CpAkMN;rxjbIwg#kFrZm&!~795OO_g9tU!YJ
zDa0BQX`Cefxb#q9Y?y!03d9i#M937#11TNqqzfBW$CI3&a*yX*g#SRoE`*;-sJ%kM
zuO<8(VUL7i^?G-lrFI{u6)}yngqYhAh*^g~o^1$Z{*#0Y_>ic}SsD?&ZVq)}PX)GQ
zn&@EGrns<;q9q42e=20?Cn}VoZ&&_gi+Rd->{c<u!b1~%!$*AiVs0p(Gv$YL-J+mA
zA*icPe=TT84C=0RlRH&*|I?V^)4Hh9S?9^pwXj6K<7gD3-WH>d%?-ctSVf&vAEK&>
z8W5v6j}N)J=7txJQ`ET&Lex&8_^JBg3oB(ke_61~Xl;kjq}cwC1#7>=y8n1t2W$w|
z_Lw15^R#TCpUT|uIn2hOUxuh{M15Uih<YhT9g`crR+F2r%jq1uYoRw$&&xUdtb(i;
zyeU}cAJW4B*+LKcDbsgR-LR1%YAaDy5{ExZ+Y3v<x;eHT{xhl>F)LVk*R+0KVx7P3
zj$mDxSj)t|ePyt+FNb*?&Nq?gM}IC@mnYV{y2(0rbFg+`4YPR-YvQt>2kZJIb||sq
z_Xg`4tjx&p;ly51q0{)Tg}TJrg&HRH4%Veu!@T^S*kWz4>Imi5Dz=W&*kEl=GJJ&C
zDenwctz3)E<xkF^dt%RSg%hhzJUM^LF+EPxyFlMuw{CCmR!~sEMV&Hrc~h=%;#<4D
zt=oj2s;p<eaALP^sClW!oRIiNXiUfU%%{G}la!4%$DNl0$Df)%|MUqxY1XZ4uyoJo
zO+Vo*>4TNvL}G|IsY@nPkACW<&j~s_)~a{)-IYYup@LJoS_NI{LVvhZsKk%b%Y(b6
z!KZp~DC<og9F)_t!OX{~-j7}yD$x@$arhOQqtnw?sAs%6Kcpw|P2H{u^;C7u4e5!e
z&;57hHOD$Sy#KCzuA=uNmujni3*n{wl+zU6m2sYFQHa&q!5vb<SzdyMMdq`;1Xs`L
zrhFvmJ1m)s3iWlaRG$o5otJ4P@A;X+LnZyPrRfr+)(4hML`@i(nhxluah;-FZeS*d
zR^FhDs-3x(x^x<2(G*xm2EC<e%(;{EAG-8(v<ou*D#_5={5wvMEBTOF7?zm@RWaO0
ztJTM7!;3v3pW|EX?1VPgXm<O5S@1RhcF;m@akox{O<KC-Ud}gkB88i?xdu?J#T-cC
z6gk(RkmNOAQa)D#?LjPpB|$8KRY5F**h?w&vc(*LL!y#^9cBf)%nDvGE7)sRu-~lU
zpjm-cU(8lt>ZJPcXkxAiY#=2?C$Bb1`CJ(+(ZZn1ok%OR$N@eT#1hz~#bS^)Yf%hf
z5avMIu0;;8D{&z0)*=UBDAodLpB6d5!Nh?iD-J;U)&hHcEta4kJq+b<b(tD=x=gow
zT&AZ3E|Z*$w2d!pHj$0h-eEr7lu~a)>P<EaaxK%M%@FWy{b~zVnicT<{<4C#W(C{L
z3U-<m>^3XlCwi0@jNn}%*9iDQ9$5iTX=W;=mNlVG16Zd;8~sV02=u}%HgqCc=7yNr
z93;1lhm3B8;<dd38^={(y;;HbAYKJ_m=)|cE3n>5vA2Bgs<f+Qv!wXdp-mZB(kb8t
zvjQt`N?dWYS*3-QNm098rc*+*D>*Hsc=TCJ0~^vZlNljx7fv*CMZm8MXbphwW(7UW
z3VN9p@aqGL1=VH+MYDn?vx4bn1<hs!JTj{cV6j=j7PEq_W(Cb%LTsEW>h2r74WOSE
zZ5xX_5$M}C0VK=Z5Hp*D<lD65a}9vx=E&yf50JH`02|emG+!y^%jc$~$x1Pqtl3O`
zLZ&jXOjm(MvjUr+t3az+fsOg9Y^JF)vl$SHJG)8Dl8v&oE-8swlL#m)vty-!4QcJk
zCPCUYVYZ84LlCb48_fzfnH6j?E7)dMu*0li6sN|yYrxnb7QuA0#=$i!knXfb0NvRd
zL9%2GF_}5YXGxAwdMPH!=bF+CrI<n1w0W}6Qo~9uI#L7L<#Shq&1MBQ#;emYmUqZ%
zg<PE-P56Z?ttujMXIB+ZMcZhL)baY$k_I-U1t;UBXUv&(OHUoaR0QkH3)Y(zY%nX>
zWLB`ntYDj2!9lZv9M>tiBH(%9Blg<Rp+LH`m4w6tlUl8SEanJONYc>7^O++~VLFgf
zOsTz!d>cc)60nk|fZb*V<W_9jMJaZX*)PezJOq{jiFG6gTg?h=n8_YUo6TBSmGp@_
zyIPmYMzNYCI?v1(1!U$c4QxoOOjavt`5iCzUSX%T1-r}&cAFLKGb`9{R*>VmNoz}}
z3t}S}W>&xx(V3dkUK?VswnpgqV9475$YKtp5g|zfAm5?uFilyCDK*FBdm-d20W0|`
zP#KbyfR%hz+C?dLp$u^wA^*mZsSHT0H4OHc6<Gc$;DA|y4L&(aZ;*)+HDPp_nI#)w
zW9%{wY)ETM)*M+^g+UYn&u(XC7;jxLHGr{N!U+vRvlg2?q)l41%K*N&!W>AJ@sR%b
z6$`yhf$AU@K|iyCQDz0Pmr^Ivd~<+yE%Z|AL|S4Fuq=oru)?fhm07`Rvx2o|1vY?U
zb^xVL2CzNE6v3V#CP!apr%y1IK|d{2RPIC?VGh9ad>Su^!zqX1v|0>k*J6#47MlYs
zOB_hc%>h;=4x|oqfVGJOX`MO1p2QKi4MxycRt^dM#HB7T6IZ%S_BAe(kSy6l2)0dH
zwApNPcV-Jpy$z{1*&4_-ox3}^B4`d`3ACCO@B<&3KG0!Su-dF(t69M|vx5C*1^ncP
zGJtCCpyi5y9{`aR3^Xg?PYYxPMYDn?vjQG_QU);Htf1MffFHC|2GD9&FyE}8&8(o^
ztYEQO!E&?4wZtqf4?}1G4B7TCq>bhPjM^MXFPH-`aC0E_2-zC|V>btqb$iIl*%wx9
z3E(BR)S0boZwM%Z7*IYWV7_`}b7A$>DFrf<+vqY=O3Umfg}<mp(+mjFgdTm8Xk&p5
z1iof0s4GI6B3P+~u@sY1vFxw_urmoj+HDT-LgGN$Zw|m8SR9^mYX~TTn6lJ~w8tDE
zwoE5>rL5~iKpDiA<<N4MIY2C?+=;Z;93ZAlR|P4zYhjwnx6kFcF4svvVzJqPBi57+
z@E+Q;HhR-LL)Nq-n2I2dEnO4T-dBrOKH#rNY+jLy<^cT3$e|NX%ibZN1Y*llC(>AR
zfY>sfa9UP|fHH^y>GTm$t%d0$TfNJ1RBzZrrcp9G*p50N>R6&hQvsH0u@NJMudT=x
z!N$Z9>!D?v7VS15wk&lbtu_aUEz_x>WpfB9gBXxb1p$k-FcoB5>vHV+4SUEmN~Qwa
zQ3pgF2efD^z(FlG6+!AA99@J;E#^S#Z4S^UaUcye2jDMf4&9FEYj5bQ1Y%#MPNeRk
zWeLQTrB0-3bAXsKomEoq2r0`TrYwh)Jax~#HX)W@?nLTg4iNh)hrarn1H``46+~bA
zwXlNdsF$LUNzu>cxU%>oqazMA8*s$JvjN^)vNp*|&zapG6D#hp^%wInj@4Qe0M=-+
zwSu(49DtuJG6&LTbAT<018JK%0Dq@sEszeF1MpW#hpu^wSQ`RLAof-2MA~Z(5L>1z
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

diff --git a/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/BSD/libexpat.a b/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/BSD/libexpat.a
deleted file mode 100644
index 7994b76c86ebbfeb40347e115034b70e40d1bd2e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 396228
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
K|2Y=P@Bal;8knB|

diff --git a/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Darwin/libexpat.a b/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Darwin/libexpat.a
deleted file mode 100644
index 5b0037760bdee327f45bc5ff65d760cacae89cfd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 513008
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
XP!w;3tw=3(F<eWNvb7F}&iMQPg<CJN

diff --git a/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Linux_i686/libexpat.a b/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Linux_i686/libexpat.a
deleted file mode 100644
index 58672792f27777c43744eb852d1afea88641975c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 512592
zcmeFadwf*Yxj#IUj4<lhJ!-_LsU37`L(S1dbJ_&bHjo6O1dN1RYgDL#LXALS52B(>
z*fW^b<!CHuZL2LkwLP}AJ+vx~pf+5bfwo$Ns(5MD*4Eh$R>X>k)%?ESXYH9>L{HCq
zexJ|#{_*CMnZ54oS<iZI>sf2B8C^Gb=@kn;f6Td&p?_7?mDM$${rAsQR!1V0k~R1{
z5;?Exv!5|F<{abm`7ZYPg4_T94{%WQ?vDTQXJpayK73|RX}P?0?$TxRmQI_uY@Y37
zyltM{wCIY(9SawIMdBuZ;?jBZ21Of|&YNq`yL`%&52Q_P`#_Q;G_A1bEnPIXvuTmN
z(7whrYFd%(8O!FGwDHTD=Pv5#oVRrRQqw<jCN5q&Z{b%KHBN7ovVd^fJUg~@(bTr-
zOBXKb8~_|;mp0C|=jMw|n7hnCJ!zgjINY{m-W3byFPzsg-nN%6{Bq2m*RVLY$c!IF
zFBnL_U{S}s75V0xI_F(AZ;|Z*m``o9=PtF6oYl0b<H#8e3+67Jdj&8;Xot1ex^(ds
z^Oh|G{x4Xx%w8J1!d|#|(XcWNi?2EYBn=&Ct!>_sDhQAtkq<~eBDZng{JF8t;R7F<
z+O%Q`CN7VZ#>H3I*DRUWIPZ$iVW0~nAD#_BK0I^Aq9vr(4nssoXng8odoIy+q^!AD
z&0Dr)?iC*j)6|bB0H{7H8{J}9i#q0ZE?zWm*m#E${<L}X|Hb?~{e#-uu3WfeNq*GB
zs?S(-<)Xz`FUqs*uw0M&j(`qOe&@nv_7QSE6uGmn>O4Ymu<hKd2DmyeHUM_>++_>e
z=5`vk67HT5n?HZvQlSxY<UmYv4ei*Amq^SMgItPT<%x!TJ!YdDVBC%^%O^H1UAlN_
z!{Uwtzc<8|E(NnrxW=A0z{KcvQ2J1&U$i7<H!NOc&s$Lt1YX&eg^T7*ja~KS0nojS
zhQ*z+s}>E)qL`F67THq(OQ%3LW!_a&=5}^2z9Ju+Hg8C@AX`0#@*0=YGORWTDNh=c
z%j}u+fPlq|Oo2fO7c82;SQ0VJi4f4SrSn=a$39Hl410c!&<OA&v8vAuMB5f#JMW_T
z!zhX6E?BhCK0-2@XL}a_S4O1g)x}kvCadZ*N6KSsc{*k5GR=6Bs2Kl{W~ou~nICM}
z<PL7yqzrC+pv<trctw{k?p!S71WH*b=z<I$oHUe&eZCb}buOVGI%l!5Vm#aB-)n1!
z+AdX<m7l4GJyTVC{(0x&8Hvm}W>r(mM8Dq;6UO}ceZ{_kn9tX~ut+kh<-6Q>ny=I=
zX&$;U8qo1FRN2;(vd{8a8^djh-LVsLvr`*c!s+uPDY4sbjvqcQ_C~7Nzv(z6=Soxe
zpT+#{i~FsOt$q}9w)j!(bQDv+jb+p0`;TEp{O~dMiTT{vpVP&@OSYMQT8o^%qTJ5h
zaXo|oW~e7;&1_TKoP90vYny$lC0e2F=o~Al(OGRz55BF$_wcQID*$w=F<Pe@qtVo?
zfSMkSq^3tJ@GPI-qZ=wT0?LjCRYep<>U2XTvH}Q(F=!@*`e)Q3$bu17q}wVGsbiTj
zyO0~y4FMI1_P4dNj2c;MM=N6YINMt;x$N>ww=r!@8pQ%E#$KdoKD#H?8zFe{D85mO
zkktWLLdUMl-AnrW`%}w(&c1fl9&J&3tc}y73u^D+0MT5lN~@L8>AF^RMrW(Xx~E6a
zwGv^prF&%97Y2Zth>U)0rU`YVmk^+u!||hTK$WqhV1HXkqo^RGF<OQab;^(LGN&)#
z96D$DS&~xJdor5PfCSiX)$AG_JKNj0dGp*KO|p|7J+U>}XP+RI-cir0KveC|PI|w;
zpDF01LpAwSQB|Mw$cuos$hxi1$@-la&&>V6(396&0Bz-ZF#h<;=()aL(x}~qybe`U
z)#uv8jiE1-KLYty;!-4IEFG17s@82a_)B#Y!>Jx(TM5pI828VBNa%USteNU5Lr>Pm
zMqqfYV7Mh(-rX2ISNnmYYAf+LF}qnXyEq`I8krHk0fuW3pMzpVZndh80>42-1N}3D
z$f;2?z$3t9#qtsqs8J&YlLa~e-X0RXHMAuAti%KCs4bvMqW!yAT>2`)cZVQta{+1F
zTY$GqfH)Fc0Z%2w(+>!Use*2*`h*?_@DzJ7-#Pirz=V`uqFjm!UUWlUvJb<ET8Vd%
z5x=3?XCLQ|B`$^U)kts<i59~Ranv3M8Sbe;Gzi>O8$^(cYB2FbSO^db0eWn-+k?8M
zc312_w8Md->1uVdbEwE(=o~7xlD8N#B2s{kfw9Rr2(Nvy2T=exOar20GJpdu`II0O
z(~-N|z@OSI6yfkY^;6P_8zoH;6KCcz0lezA*5q!xQwDGV#8s_8(R;J8cR^}s&Yeaw
zBOWKWCU;tiW)DO)sO$wO>z>ODj7J(8CPI+L>1K1qBw+>)qdeOMeYRN}OB2u8SAgZW
z{+ffyeR_V6dT-BPmD}~w(Y|`0eMaq8I~2dRKVpwa7e$<{ekTp7d^#$foSJ+v{?4f7
zyO7d-D$<adcrNCm!m(9-tYWR}8?!ZCWTswi&Hck;tkgrFLRY?-D&1D~oU^Y)*9U>%
zPv}v4Vpx}aTLGc1K|LZ9xP!%<ZT{NJf>*zknHZAj_L5636FEMt{-}I?R4`4j+N+Xk
z;*L~R2lM?4Z<gpVW}$@hah`4{F(s1+)q&XSm}z7k|ABPVPLH#%4DvIq@8|&LAUI1z
zaF%MP7jTl}{(`4oyMf=%z4)%(y6ifA-`xnMF7)fo_amToDa`^`{-(_TMzY^NM}LR4
zuWaA^&ocj;`noXEMqb%prlx<sR4*$@9*h;Mwh%C`+QMpCNoKsL)XaEtr!O-;Y#xFr
zNYpSSY6&E2sk6OoTaRALt}&u>uI#J9I1K}Z!Ha48@+W>k2$eu*V0LGD^p^=l<HbH-
z|ICmSt<K0`A}F5wz0l{HKL7z+UMvFrnnHpB``8SMfcW15z4fB4es>{TT<-JmKVz2q
z{meFJUxmJh7`$?K86YatNkZx0rGt8Qz<DR2EOmLnUWU=s>-rLXteO;37ll)y_?DN7
z{Kr;3r&BVjK5ZW#vd0NLlftQz?|=$Yp&rnGqdIWqK{g#gq#iKhQI=f=P>LU5)!NHL
zdU@&9J2R7l1lQSKA)*R;ygk|o($puaS@^Ox2D^^|iK`Qt9<TA)r+DNnc1k`I8L_`-
zCdmwBCdqu{TjWSv10b0)wGHGFfu@WmcSFmTd-}B=b73V;0xtCApn7~vdfd{0b<@uP
zls<9H7EIi+sinc%w3YZYigdlxk4dp^xdGXmf&riJ*FJnb%rB3OWoE6!TPUCw1axs~
zQBb#q)Ck=WR_B9DOUG=@D-_r%*?$5f$U>1ZTT_jrf~p~uYWzGN!CrLdQ&)yD@G?+T
z1QZp8jxNW*s2@@lN2}LUGlIDrJv}>4AEU;q6P>L=QrTo<qX7S=i(>TP-+FdinE7p?
zRBN!fJ^*rd`U-vJZj*Uz4(j@_>jPXyZxpE$RYM>(A!rn2@w9-#P#Qu4pR^WqXQQ+?
zFVN-}vM$h(sy;e3H3;=A>aR5baq|*!QLL5(hQg9+tSo>5pxod<dwFdh(9I#jS35aq
zpJ{Cz(M|hPO%5Rl#!U3Z{zeQ>4m;ZekW`STd$WG9K%&n+N>2{u9z!}c=e7a+pib9^
z#N1pNrHM0%wq)wc5N4-57h?S_?@9e8-9W`(4w?ypdT0xTQ78Z<**~+cb|tLD-RRrd
zUMD1siruI<s5Joh5cE);r@4p9V-bg?;Eo8G1a;dnbU;(78$#n6f_7<IOmg5`x+sM)
zeZSb@C_37}cNB`|_Ez=fUL=0<_$tZ7OF=>Fmq6~teF&j>A%&{G<U#wml(U{`2eNkp
zNy^EB)>2LnDGnr)a@HY~aTbsS8G_Q~Gv5Rdk^vhaqXC4^N40s>m`9y?)SE}6c{H0x
zi+Qw~$8__UZ659BF~>YQ%wvIhbeac-12`_RGYu;w!HM&Mzl@VG0ff2>p_{yrYA96=
zWtoO3<C%tXc{sE4<8#^zp}In-z7T3GgqjPXmO`kt5Ss3V(#{-)(#~8yGR_@^5_c9t
zT!HZ~BNmGZ(P}ZF@<NC<D*w_>HA4Q3Q&Y(5EQIVrC|(HdH}%lLKMSFM6hhAz%Dw1?
z(y%|JAD54ev#(HMzZWtZc-Z<4=61TRYhPsm60m+HDEF%=2rBhX>dt5sX+0S~2)f_d
z5~zJ9_9odz-+qYgC!*!Z<{yGA=>;pipl}+EykuYOES-ol9j%A-Iw?(yVOQ@7sMNKc
zeS`J3>B~Yw;ULrgJ<ytKhywdd@kjQt?M?i$kCKPJ$uz=M6S%Ggw*E~54}!t|-RLKk
z?`KU9s#W!=+lf0Q5)O4cQJPD7(GC9OZY#kxOuk*{Iu(lc(*!QdFZ}ZQS3Oo(p|tm+
z8DD&}zz6xh1dL{Q2Rf5kh&OuA7NXHUN@}F0V*v?k8_#+?Wvz*48RE@&mg3onXGv;p
z1XG7lSesSQN=UFyNHAH{1O&GyJMa5X>2vx%fwiB=FHgR}=sDI|8Ex@fi3`w(UQ1Tu
zI8S8Ej@Bg)T8YIBYhp+pNNw(AXFK{Yj+owHT-W*2>JWO%j)KXI8Od0QyIIBA&Z5o^
zhFhYIG_=VXre4ZnL+GOU?4^yY{LEpg3>EwpW;9~(6vH+qkE=AZY8Uvl2r}yPKN4C%
z_%NPYKg4>{Y;vc43MlH>T;7gQyL4Cu6%>8!AIf3Dj1)vYOnXLPWH=)*n@}H0@vnd~
z$X(q4C1NFBL$Zf#SM61G(W--0{n?XWhaGk~CJ^?G(}CLQ_-YjNJDbU6ek*wwr0@XC
zxi=$P(5K0MD_M)W?w63-Q`PV8<P&J9Pxj64u@X+9OMPKuZF8f23G(Wc$d%p`k?D>`
z1#g;OP2G2-X?j%cr!}(p9Wza_2|X<3b6=q*ll5WML3cHpQKBT=?<1H`2Sf>W&<UD&
z%}T66820lm>M&H)pSY~LPtd=XEkgC2089sRC#c`RUO7)amD~xuuVo46&<O*m|7gTp
z$*BMgO1Vx6iMwAYz&S%biWL^EzUxDvp+>Be>wWM_fS#+Nh%0Na58K!2rjk_Is>IGz
z;11fAD%{;1P_u*fg-%n*FC)*Jk3Gr$8&1`+lG;)BzgIn%3-&na5W-`)K6*EH0OrNd
z^`*h&bFu%7UwgDK_I(A5>`v<8^n{>4w_!f?euXq>cx$;2sHsbpeIXUtOxwK?^029d
zyxZLpEmdMBxAccGvNCHUQXq-Os!PMFsRYAun?VJb+vZGDIEdNFSHn_a4x&S<p+@X?
zu*IrT#akeo^`G&#Is5AL3Fy5XC~Bn<1UvWW_}CRz;%k@**i=|-f6A8tLEk0u>CsO;
zh=8x^Ily_EbHJ~j-o*I)9=HI*RlA*cqpOataePOi^17|+odinRCpqta9POOuTXk%W
z^GV4<44AVv22RIZY)37Q@-!@2NAIdZkM?Lx*Qb2F)X%YC-lD>@mo|@}5N*bePV6*A
z{s?T8>)sUrCEmLi-+t#g5TBKpk8thfrPfU$1oR~1;#tjddQw<jUV`<25g?vXMElO#
zxSCC1N=NEh;qJy$>3gcsO#yYTx+tV31>>LhS&4N3L|xAYr|Tj$DWJwea96O;-yuif
zY3-n#q~vj~5BSkY`6+#G?;4$k#0qM7%Q)%d#nreQGc*b_6u;Jgm6c3_bK=()by~^m
z5VAH-D6U&%C03#xOvJ_!Kx{YW0paA8$WQFHlJt62J?9?8Lwb%=wxIpUQFowL?W0!m
zVzi!Vg3banlYCNbr34716Cfr)XA0W#Vxc$?+cJg3S*0Rk0Nb@_IDTzlnU!?GVDW2@
z^7Yb*U?t`v!+jEIJ!}mGScc^Oi@8?KU^$I6bfmBjK?g`CJtJ#U*bcJw6&}10kNvGB
zy@1*0T1X?`4A|!tx*ihFN*qSEp3s=87!M)!YX8iLa-nTj9_2%I&y3~T^1gqF?0VEn
zJje>py_{?+NM{2>6C3^Ti=YMQM|HS=W)yh>;Q_S;xGT#pGxgK<_1SC|`1HKIonj*N
zx7BNHRM&d61}$<Tw8&Ap6MKg04;IOYX$=^B;@rtd|BPY@k8BgV#|uF`s6&JGE)uHx
zFHwiY4M@FmWveuke9hhiIO{Q8kgI7xIH;;f=+v*-wAf?LzOb%uB=T-UlKxU-Y7M~#
zrAAVrZ>7pE8S_Hbb3kAAhBuACx4)8o^A!wwVgRaDNONYR{w_z8e9m5}Z<j$2$n8_r
z9+BI(%Xp=2_Pv>d%B&&2`IlK!81I^a@rKo2jCULS%2FIem&3Rs9M}Hr-vNZP-78|&
zpVGQo!=7^MAW!$zfq5$+w(G%9l@#$XX=<Q-ngMz>jL))+Q;NcUrC^2oA_!^GS+J!@
zq&}1~MiA`>(0&-yTBdXq1)V<2IduB+Xz$S|=jmT`#0`l`;I0~-)Ib=C9}IrpC8*L9
z-~2KjzFvqoUu-w@JI#|ytj5ybx}0`_9rbL2y($z{Z)8VenBtXmj04#I7J-neK~&XP
z-{;#Mfp)Fra<DEuouCJ$IV5rJx^s{^wBbkKPe6C|fVj-_xe5yCbDbeR*VoCp;$*s?
zGBt0kcz`_umIh(>8J?sQK<pZO%+PKo{S6uDBKMsh8HW25x!3rSAJ47v6pqj%{hewL
z^f8<+n1R?Aa@U)Aog4-ijU4lYe+yRaaJ~2+RSnTpb&a~RoV*7^T)|9*tTZ<LvVcAf
zv{<jNE7fgLC*x05j~%xxV4sVsx}iK(VU5{U`{)hZA#^BhKof!f6M%|Opmc3pD0T~$
z(7CUFP#=@u;1{6NUEn9Y&c04`JY7!+ihyi^$EXhp<yJBX+{4I^194RcX|{^JHzAy!
z5Ezk}5UfW!grN_mj5bESA}g^4i{*R#Dzk|hR`O0n-xhC*m5d{-o~Y{E;uam;TJ+{m
zt>hG>IDdvsScd?}V!EaZfucMfs&-TlydDepHcYUfq_-liYA-hLavZUq7F16&;Jof1
zo!RnAk^Z#*J;}H;8V6i@LRgiN+=(5y?u&Gwh7#iAgaGOg{2^)rJYif$Y!e+9kJTep
zP=D5$5b}dAo$Z}!zu=3RAld2G#wzVoZzi4tidyZ6Iw13VL^xRjRm!S%0*Z3=7?`V7
z`<z$(qxYy6)SJkTs9kUG-jXfCW=$nZwvMK^tOEU_LL?QSQuX<_>hoYo&ebEvmd2uq
z=ddmyp<+RlJGv)<NufK6PIGQ$9y2y*=TsKv#%UZmSh#}wLY3CW3j>bp-}Bn&N1ey~
z>Q$h#_R#X9i&sX=$7FK1_TcL#mBGR@jvm#M#1vPu7<3t+hIMu^HUi;&`VAY&GP{R7
z02ecQ0WQg<m?L*j2V8gU;=YSu3Sd56?&SQK9^kwjBDg;c8rg<*5o$v;9eElswZKAh
zw~T<hM{r)QKnGi1EplG-!z!p}T2()&zVhweC_B4HSN8%(D>y;=V>)bYgpbTV8T1eO
zdDYO*E+kgH3d~Rdmjg4iX^mBm-ZlD3Zcf$%H&4Q}d(2O{lL|Rbt<U}h$gPOj`c3T?
zYt64P#$t?h%np+sdx;RLDqREy9S6I}O3JdBNV_<!AZ@47l_s|B<>)k`PVK%hAib&y
z%xOInup^`OOhB~fRbaauoH6=0>L~#7IO#7{mqe#<e~!~rpogu*DG*r#)Byo%`M()}
za!;j4`rL;g59en_f}=7;WU9nZk&yc<+8MLM9fSECvm^I2Qvj&U6uC=~pJs9Y{7wBn
zcLt(Z`HVy#U~hKpzKf){cLVK2GZF579PJeLH?WV5nXN1APt?o)1a(xiZfH+k*E+6Y
zHs%=<cmS=jt3JPKXy=%LA3VylZq6uWEAc8vTF*VpD7h`QhOU@Y8x5`yvXEYpootrY
zuzMatlJ<>5VSBW0n1fbT7Nl1PNnH>1)kq!bY;Q69{(5q|nmotzjo44cSNUQ5-+~s*
z?*F6l!(*+)?-8%st<vQCtu)(5frx%mHx}mt>PF>GC0!W*t9WB;-&d2{t;Dxcsdn=0
z*k5HZD`Bai(wXQlw+HRO9{^5<crVM&rJ02Yc?wi`T-9stWS}yyH{0DmfhXdtieMU(
z!Q-onVH#g5p}-<5*(RZ*V4Pkcp%Gkq#8-_N8(RuVc}>?g+Q914K)UH@zk2{piCh9?
zc3s-<10Mjs3P7wU&q=k_0i~SZ>_4#t)@^fYvE~ZET5W50e}$@;I@K`8y_Z2w(T||O
zxjJIc9NEudjVHFUkKB!HHg(a+L2cfHHqo5B6s2k3rbQ#RXff9@Gjme6Q{iHM7C=6H
zB6TyT8Iv0Us_3062bMap`^sHdx}asNAG^~1^xtDE`t0SW)P9#<7}<)p62CwY6D?92
zcFI1q27i2`{}AfeV1@MwpKc1pjvdz&w#UX-V3)DFwkc>Oy08PD_C-jLO`%-Gn+JC5
zZTx4mk6_9u>qem{0IzYsj3F7k8UUz5tmG=91-qW=c8WoF38H{!h@SNTHsvou0riNK
zZA4J)9Jmkq+bYmm_jq*X9E!v~E}+Lo=^3GMGs0HlIuw;1&&1bQ3EluvT+Sh%l{gM{
zted~c^p)U%DWO!!NbqHa+LJp?;I%f61d|)OeL+nLS&3-?wRTD{_E(k7rvGZ@_Z+05
za_)&9-PVYStx;vsF}wVSfk=wvK!00hqEBtHPZ5}a!&X!<J61D7?z1EpQ!f=d8HY@G
zd;+aRvm-n_J`QwY{Xr%GS<!UBUv|aYKnJKuuc3!bt=Uc}Kn_k{E7o)gF+xx!zNw4F
zt>iuUMm~|1SZB&s#8;dFG^{MdA}H77#dJMZV^)&*M%NX3LVz_t$0%03YHRVu!SwhD
z_#MQkXqR)S`u3O64dhrbTLW>3*{?`XipZAh0mNO6FYvdq9B*Jm>?sJK3ik;{?-zSB
zzG<}qnyl^to#Z^Z_o5K?ZL--5UKWw@0EpD>M54-qD@wEHA(<eRLY#aH_;%M3y=%e%
z8+P9P06h|aP#U+-*J~;yId+%(7nA~A9=&}`5cUFOxS_XRCb+*xoCuEhb_sBapQDm{
z8KCm2SyJsD6mzEoA}^IP*h+qbsh=;TZU}?^nRGUida(!r{Uh3YEJO1V@(@w*2S3Rj
zS;z#O3^H0n-(CXXGi&&bf9y*xNHr`V?_wURsq+?tx*-pmkydGzb_msBJ;b9;w40WQ
zl)yPC9_9e8_RlC0NfBB8DQJTVkrTB)r^xUQSMg+qbes2SLT=oNUV4hJZ$w+rU3P85
z5-V{I($c<TL}}Tef#zJQASaq3Ctd};p#PfeI?NVU63<I_90k@2<ZFqO>rMBuBp`0~
z<OEka!}6`<TqJt3VWyW4&jhK*v<JG6_h#8cEL3}s84~wH^b9g=vtc|Bth#JUz*1YR
z#1(9eqIzutbv@QQijp^b2&-Z;hDz(z8<2p539Gr3h53N*_zmQxUm>Jt;uM3GIG;hX
zYyA=s;?%U`ph0*XO4Ab~GzTj%17V!9z$2t5mcTgV_$lCndV;NJ6``V)xB=~;3YLD-
z02T_MLTjT#n(lVu_;$ZeVm9ln!z$Z9L*(Nd$bs~08IXQ2AjP`*QWmyx!mG_zZ~HSt
z^mP&RIrMd#Z6!W~Vzq5cL|@lrfA^x1e2qv&MI1ITe2W3rWd949YOAm~72YmTxVPs}
z>Dq|M<ni?iZ^C}aG*(>hwfc7^G}!KgCZj?yG&P`mC|mTzpnnI@ff^Orm%%AShR8Ip
zX?F$!d3Z?1WL}SqleNej%+q5K_mHQaGUx-{oai;xOWw^_eV^=l2kXDN;UtbB-4OA)
zMCbe-vmUH~ZmtI|xkhh<NNd&)%dQ93GFWp6T_Xqv3_;0ohd7{M+Mk^4TlGr(VQ~<|
zMkV_m<h;k4ob45AhgovMt~%8JAbkh6o9z2V!2XMK=>1=eu%CxCYlH_q3w@J)1{NOb
zu!h>Ac6jz1{0x;`M!|bM(BJ^Ps83%AV5KvlnFg17%s3Bn$I=cndqYne=LlFl1n7eh
z?*Yt!w@O?~r%1BzhVz|6A$zKG=wq>+wNJ$!^;{FNhX7;?%)=^<pD^q)gA)487y3%F
zZxe@Y|A|AY<d#^A3g&hxI0s!+-kW{Zu;f;>C#S^dt5^kJ1xl9LS7L-Ms>rx>D#w7b
zDA5QhaSY_NgHCbEDGoetA|9;-t*m6<F9TL$0Ybp%FGqMs3C$+hUcoK)mAbI6l*j8<
zwQC!Pqx|l9sI}=#H072fg!3{_oBf3IjC2+e0d$rC0xV=kr6$)QR*EIasqQaP%cD;@
zu{DZZau*U|O~+o-=faGveami6O>PCk!|M0Bk{)X#&J#ZB?}jDkuYC(PyZy=9hS{;K
zI+Pv%N3vq<IKY@Uov;pWXwUr?^9R`*#!|wbWtI>yVo?{!;!%RKyfJ$&_MIS-9ub4q
zj>4M77)yAN3Cf+oB`F2bzOb~+o^ESbZF6!@ry5$bea{<NKtqfDu0y}@<bcG>3hSE)
zsH+lWQ?4Gxn4+krfZDTOV8`$U&rY?KU^6&LxeBPL4zu6-yJV*AapP*>pJ|Yl%6?Gl
zk<PiG-_+EAIso$<rokf2HnhqU^Lwfe0u7+M88RQ<p{5ozG6xh=2}E>2&T=1to2V6h
zV!o<VC2Nr#t!?KyNXpF~eZI3T0Gvg!LB#WDwR^3^USvo*R?x5OQJ9M5m<o&sYJ+wK
zTBnk&#(<(In%(i5<ia%j7;}wQxQ|^P%GOCuD<Rv*Q%h76-CpO6gPmn1;w<tTtcbW8
zIuQjiJM@zSa4WHmnb;fR9>mO2?9ZHl*8Ywep+x+VWR~igWnRXUUPekXK$jCobCBIl
zqY*r#yXg!oc>-pU{;!sS$tE44Gjx;tPF}7~3hAjqJrgFOy)3!&hFSh6z-~3_am;!h
ztmpi`skQM$?Bp1-eG|vS?6Ybo1!FE?{Q9$EzKzh6Lb+$yU!Hi4J&49IOLf>{!F~Xs
z{}aT%nh{V<LHFMP;h^>5cr*l5d+S5{0W|1-6-A5!^z0|^{7g?41MkHrzn$)Fm1DMp
zDZ}@$VN+{m`^FqAutU!FQo!cP)3s~?DR57_p91-M_(=BY3%ORhFl>*AUxT&MsM-sI
z_9<osiE{xLhD?39fe_C9ndcLCq1RA$^)mu~NNq6+bEo|=G*#7Ss-m#N^MSHosUC;*
zx6<%bs+YV1UYe~Ric-mVrU@o$Hs)ZuvrYC3)w9~lUSvE4u>GvW$s<5|2mxbdJlVuE
z!^v(oMYAKxl>jC(pdfc?5Kb%CcS#!5Gie!KlN!+eEnkDMF4QYW4xNNI`=Hb@Yvrj2
z)}tM8R3%Z3C+VNh2%l)b0&<B8yll%W0sp)De089|HA0YZ5+Do7ppVTyYuFz?uXl^l
zst+qr*i$X&H(lTFhd7DoV$>*CfnVwr2LO5He<yxT2&MjpUgFmU&CZH_0Re}88jok4
zUQsgc6F9I70~K(zre*=vXsjB0G?WwSX=iI_+?W1gCC)$z3fukgd!eB0uAo1j)DP<M
z;-3PBWQ*<{h1E|s+q_@6E=gNZN*>Do^*xis?NMzquufNjU*PzvPSRL}zgyDnuf?xB
z8lXEYS?mB+Mfj@pW3UWF>4vDOMZj*?cX7DxgAj5(NG;bF2UB$$xL4>owYgJOk=+Tx
zf|M9(B{pFwALuZ4OQBimjcv#7#!%}pgAsDuU2(z(F;c_{2xAQmwRsS2!NGnmJ02Gn
zR<aTkK~(A)&V0@?Y&WjNu@dJZ8836x?pV1W#W4le&3jNC=R(m7ltEeUd^5&L{Y5$q
zk{}P4W5>DVL7eSWjSmLkYXgZ#AVS8q^FV$NM>4S_RdPux(1TN`weeN`zSxU;K@b~X
z&*+PBCfG`R8HM849PP9JBYr&$sS&yex}Y9xLaqiNWeO`ExJR-lzeEh#--motIJmJg
zzr_YR5I_RI;EB-+eGFvrS;+r2cZTwtZug&sh>xUUZCn*_U&2gNPTnuQsAm*Of}E87
z1&mr^kp^_`o1VM?FVJf8!S9Q6rdFZ}FvGzO;^NyT5#RzgyLz|>Ww3j|QA13p9wu9%
z%ju||-=*q+pBN0^?xf4N<chk@hS!4J$IU#XC-(b*<FX=7DnxymmHM7(jW%kzuD&CF
zLw`|hFX(lFdIL$b^<5M!tmjFTY#3fFT_3=|D4kX;K`^mkB#(mot(&_*AsB3R6>a<0
z+?hQKe`}n_&qDNP{9FeLwO9SN_J$Jc=BXs8nc>>xJsjW0lCiPhqw9`t97f76{R0hh
zgt&u!2nB`nT&_}_zOWJrwdKWt@SYJ|Fhpn2J&y6%yD`QZCF$19^I#DpRrZz9ehsGs
zJc1+&Hn$Gh7<ZX^|JOlGMeS{}DonnKnKYtJ2P&1gKin6PmPsZ6Efh<?dk&)MN&S9z
zBFlo11((3EcPt*!N>2H4oGyf|jVW=s+{XFz_w6~v%y(E9CW6|v=MdbCpwYMD?-X@Q
zNo&p782Ml#k@*i?l0OZSya_ESZ{#pVfE^`i=q?JHJ`3{@)sk{0T*CiIl`Kz{^x&jY
zV-Ys6fy!*Cc1P?D^iYAS{qBtfhMNE<3%cP#%KjJ=K{)?{1&(Zf&sNXoZL{}`F)kWq
z8}j21?;|%@iSNI|!fGo{@<Ag04Sk`Bq(-Xy9h9r;gWov<KDnNoM%?izH*~5?9FY|1
z3H`p62Rts)BQTPa%(|&Hq)%X`P+@F;)j*dGXcu^_^ZZk{lD6st^M8FBWEZBo%u0-A
ziTg!M>eH=_#SkZOP9Kav%xyWyT#?RL1y$|VBQ;ItvV7@_O4MZm1z9+=L`@A>9fTbo
zINuy3ev9Q&fhzy5ag$1|o38^`rJ73xdkVX^u=T;rCH*t_npLSl60s8BB+0RToS(R;
zRHJ#S5TFF*gP2ZPo9kpJ>4wG70xXM*!m;Ds%g_P#jYS|&L%6m%6ng`OB5Fk_m&J5f
z!&V1qSVP!WAsBl#SEP0zYIsdO0Y3yPcL(vt-okf19#tu7B2%a8T`W-^Lv!u=Hqsb+
zXa|s;Z$E|MRFD1>)?zKuIip{I^#T*E2M|`Ls#k6KTM>p?;XhD&jFqHaJnl;YD{(Ud
zSefAc6GQ%R^>S0Ko_k@hj^2esbJoUPwNGFFWfJR{r~Gf{HYi~-_c0KRkuL5pJucNn
zm>wDZC7@VqV+d!|{fV8ix7^8yr;}u`;@&yvl59hUc6VdmJ$XCkX_seQbV`)-(jfLk
z$Bwc`<<9W(!GOS>q{co547@HP!F>gAaQ*Wc)XnV!-Fh^GDeJTwfEx(^+xDX8?l4HF
z#()fT&GAHA;xa+($zlK-5om2Z84?j)JkN5#-yF{{z<jIQ1U#{7Hlg*3;s-bf4z`c{
z>hp#atz-ojqyPYK>J_;^;}EH@Ku|_+L@+NwD1-pX&;NUc;~OYL4k>}6N!|{`0NrJt
z)kuHSNF2?3{}A{VWGf_Fg1MwfqeWJt#)tI<CAl9WZUpobj}Hjw#N~uVM7y=|V=f&z
zz<%E9i=Z!``(wDN!RXWVckV<q`5a&aPo~gep36>mzXlMkjY(oM)$&;uFB6|TOgt{-
zg9HtnA|r7>hv9&`(R4E#0bJS70VZy=>>8jO9x%j&75t}<%~F|}ID&i=Dq0)wjNXf9
zZ8t?e2^)IzTyL=o1!5(h2Lb6jDgY0_jbiPGM>)26*P}c|u`0GUq6$>}dn$vxIxi1?
zu6BKA^lsB^2-pYQe3er?5&g3QKxsS09$vxdI|^qRmtU%<v|<eHurW@?nE`eHkB%6W
zBOjIFv3yjSzE!bKz6hx3{Wu%mj~Mrn+V#5VJ*-#MwVlJuucSa1@Xtmd5Y71ulWW%R
zgz9j<Kk3bVj>0;2vn)ff31|E>d=C?gt=AP!iM>G4I;oCI;dWU1@#~u*Jb!{yFnUr&
ze$bc=J*iR#3@ZyBO*o)C@C>EA0bm;We(fyUIUPWK{;gV^k%Ky$MeDOV`J9#fHrq`I
zCJn-S(Yw#B!Q_(<370tqfp%!!zX;4$*WOkG<XDNLu$S9=9Lony`GHLP6@6DH3h7ym
zx>y-eD`#|oS`Wm#mLNY>-HLG^=${qA3l>)LGz=KSkmG>nEU^$HwVSMZnrfV%v2W;c
zD{(Pk_f(>8gQNfFw3qNo3r4H4hULN%uTerNq+`L{cv*L(^^65r=ANiWfa0kXngkzs
zWdsi6fWB=7L7s}&Us!Es0Pcndn4~TY#J1@qdnPE4Q;jEt81fS$vk(H33RIYV0V`(r
zbrgj@xwH<*POLyAzKYYi7MO#4D9;^h^e&7Cb-Zq>NUe*m2R;E>hi<CmNDOTk=2v>4
zWrZp9@Hj%x7(UBpRC_?MY>jnlx5mEho{IiWe@#MO#4T8f&Y2*FMiwRJ(&+sdgFe)B
z>HPKNw{B`C;vax-59Le|aAm4R$lPFrM4875Fbv*>WAM#w#zc7$Z4n$|@g{^b$x?J&
ze-TLNQD%W!h{8JT>lGJJVK(<>VRH`$Q97)|W$fOJ;5tlss(sK1Ad&Nsxt}87#?Rrk
zb*O)qIO)Ghxnt(!WhlOs4YT}!P?{L8K!?twkQn$g${4&6xS{;~%u{A$n^4B|2zk(Z
zJg^D=ard)zkB{V38V<uF$(y<l5h&sZGUBM%oGtq?o1y*@o*^myh_nvIA`f|%j2UC`
ztj0`31-kd))viNIm{7F^G7Vv-Wg1HO0J~wOinU=q-fc@&7h&Q%bVJk;3is=_auDF0
z+<Dk%#VR_Am*FZ-(9=<v=eVX}5rA``@DQX*cuu7fC&g4-IZljqM(1F0l|ogt7ban$
z8DU3Jmhi!YXsL-&;fXO@@JfFNtenc&x9HDTlkrkeDAiDbw`KDJlRLYCR6__bz|6f|
zTou@ep)zdZIyX^HO1O>dbo3~%_6_F!)ZKy{uI4EAA$5<=oh<V><eX@d#WG12;~xny
zBhCWGGNN@&h|4Jcxx1nN3_aW#U5^BHsQB_mFi{6{jaNoJ3mjv8df300(C^QFe<$e#
z16p7ud<At5&gp<2lJ0=G1;9rjKYAJTSH+uYCI7Raa!p|m0jE$`3?P8Z%fT3Eg1-oh
zlo{2Kc^2e*IW)bfRozsBnHXAlD7s)w$Bw~86T&|q#21?B7{J+)@RfWnBMVRBBo=fZ
z!I*p0Hr=!UAcggb@IMTOlmgF4U%Uy)$Yi__4Z6jvr+4Kg@D}$PG(tWQy_DCN|3$%3
zP+{dzFh+U4#I?e3={9SqbQ3B%nz*G}`z8gvl^nyku`b}Xy2&X0Q`{)bAWsfT|Gi*A
zA6B2Vj*KYIm-S<B>mcm0p41%?v<Qh9P2E991VZI*8FIXK=##h*z2RgW&aV|WlqGiB
zCqQ1n=I(~^%$;4>-f!g1;kFW+?*`y-d}=RR8z^F*WaepDy)=lUsm9F`a3cqsTFExe
zq`wb}viCPbgwgEn(U&&@A?+R|qG-*SXZ_D$xvH?PKb(CsEwl`$;b&-dV!>hd6x1_$
zXGR00BGbK75!kz(Fh@;jw-O@(cj43l50mq~peU%=Y~-FrhMrhP^>Dld;S9n1z?jMS
z!_}yY*`Zygn^rI#ekU$NxC-$>RS%*k_w0iJfaGr_WtY(myp)Rjg9AT`1OF$<Xh31I
zH5?Kdt_q%hi~4+n-yMYxdbDZw5hSu%_dgI2IqkJ`Q{F@kjCq1<PmPOGXqLFwqc%rg
z4>20Q0f$49|AZlJ4k$dtM(#gL1~ovHiQjSD1u}<e>~?XCvv7lgm8jytJcIaEbto@F
zpn1n^!q`q=_7u58;crKt`yv+m4fD*9wz2IGV(PgEQS3jNcXcb_e}E%DV!yv&$=i_)
zlHf`OOLQ<aNT%4NMG9#RQ7dr`D8T89sD^U)9PmTcPV6ydvwy_Qa-J`PgTwtHz9_tU
zVLJKL`R;9uH!Wd)j7w8)@25J5q;HuOkd@d6x-rY9amELh$RQ=|`<%X&MZjJ0hsj9(
z)LoSRX62}-@lZe`^2x6C&hCC7_~!p&6q{>+pb^_IIKZc#&V54P%y#qzVJwtS;SNlY
zzU+5RL$+;}r?F>%$oi~ri|oXVF#zSZ4@ekqS#hen6-OP+8JJ!kdO&yFbngXdKKDmV
zF=W36vzaG*fH+|Ad<JFUUgYUQ)RlVri*@?qMnVqy<DvW(v+LHFx=n@*tqxyaqm?*;
zm>b9KH|%03`(ww~?y(Z@adb??i&C$Hcp-eAz=5CBhaz>YAT?BQKkCoo<s5s0H_%fc
z&y3S!(DIxGMtkV_v!LgtUz@e%2&^Q$nmdPf6ZYnAR$yS_3R8w@!Wr=0t3K(zPna(X
zm`SOEyTMG#Q=VTS@h9YaJ?~}DVDw1#3iOVFN4UC`_vb|I=YEAHdNXkeoVMswxCM|B
zw83mqZ>T>RT-L*qsW+lcpYEgsaNNHZzb@jlU-=-ewxaj6ZxF6d0~JYUhD7b_2kqq<
zkmKWgvFBwnbGP^M?34TLH$W#LhI$y1!%S-sg4zjDj0nMek}GquYB2MWY}X?gAp#uX
zk0=hLQ}=a9JyizRZi)L<v;c&VP$JoBh2r+HUQzB&tH<4iteh`)_CT?hy<(>qCQv<|
zXS;98sL62Ngo(kEKT+}qc66|-iirrrU5!Ub!x6}}1C6>SIg~R4jE*fPsb|`7xe+9!
z^P`6i>HL-w+zjgv2FUvC*S$P35=`F3$m>0c*qeqH42rT}_R8sjHh8LO*!$IOxLRpn
zsl03lK@jndRhYLq@!lL@<`R%cjDmR5il*B!s$k0P&AuS^t9>lCHF0r((Z_4KMou+^
zvtKr@m34i{wKnGWLCyX?9k`XSWO$?{3Tmtd8<&G3YrNwk@=^)%a77BtZ5&%iSeCV|
zWacs@Cr5B31LxW?Y91fC90xJLpl~dkvm6^HLy^kM>?9p&f|fg*feI0p#BkAd6y2Ij
zF9iO<@5SJB8Qw9j>{C^_-B5Ds4M7ve{mrek7Ge+UwN%~C;Uc@<Ib4j!%B<uyBo@HP
zs_OXMxAOMY;P-eEgp+UaxL2dJ*xlwm7oI5bDtP`U;>+O3;EO=R(NVycygv?+Ie;m8
z@Zb<>#lc<Rhg(-TS!3{Xp5SLqDS(c&cvxZa>L}+qJLi3XJ`5}IM_wiZ?a!+3Mi3AS
zad;WA4*&w*SpBY7K6YDP-*fBK!?MD5IO{sNVkF=03tqc0jp!d6IwP=)&3!x}W&sbp
z`-WR^y#Iz5W|U%`Re=eaDO+XssVK&`a=9f~f-Jcr$Izvriq<I@HL5VrLt%-B-Y}3z
z)N<S06(69`gW(T$Kb$q-(Edo~*eaXn_6T7P+|!fiiwl1%ygk4d2Ef96mtohRxBQ^X
z6rCtGh629|z%9kFD)M0D-?$GLE)C*sa2$-e^gf|X9#Fydpk1!@^O!ZP70(@D3$$d8
zIKduNV1{?Nd>?+VkSV@vs!)k3j{DzGBm1hMk|Ea+K_M34r@N>{-%*Kv0lRncoO&8)
zpUq`{1JZH9hg!n|IN|FzXKB6Lb+CBXYid~ayA}BEo?N0A2h?>T+zF#64ZRh_pN+2?
z?ZX^Y#I8+|%5Hv{oNfeFg}$Awz^0&5@hNd;1+ZwXcvTQ|J`hw_i%nDeICHaHv6Z+L
z1$pFHw*}Sh>|Nh3gFy7V3;;(hn2A=*Lg6+$?qgJ7n(Fi#=^a-+K-rX2%wxd9h<pLC
z+?;L(IO4NF5$^8P0oVXovI6lS-a3U$-JgZr^0{B491!{&^QxK^$_UHGmm!A&gZ$Qw
zM!ik7{#Lvvgs2#!$sc2SjJo8N4mke-|20mSscl{R#In;gD6Nf&XdgPN-Aq3=)(H3G
z0Vq1*j=I`PJk8PGM-=dER7-S0%JCrraF-~)eY?OpOv9a<_&Dix^Ln=7MGZ?VA*JBM
zS5d-11h=UA*Rl=ZYc|^HfZ}uxea>2Q6YI)5j3?!raE%*#Z?^vDAk6%kJu^S>T;p=J
zd!_4?=@Ki04Fm)|D|pR`b)d8VWVO}hxqnX%;T-iS3}*t~z_ga1;njKjS#^^c#SV7@
z%PyziyAzgs51t(Xp5O91Sr>hXo!}<IuI<F5If}R(*Ml%7(%bmQJv@vMH&<@AxX5z9
z?GeG5+txEqFpiz@GK||HisLIvd{*LRsBaG{581#R=p_K{-A~Felod2s#39*_qg&@N
zBzz|d07?O`94e(9arkEq9Gk?tnh%=Ds}+Z<_LNbuaL<^_8=PH8EOr6}r)H&<7=v9B
z%yVbjR}p`3J$eF!Gs*W(9APd&I}mdlnB)!E2KtG6*|>l+mkZUzIj4f9Fxz~^urvN3
zEBovY?bM+oSU+FV7d2|^h=Bk}OJ~n&^t**6`GjAQQ`J^`E(s}n<}cViD+&p<mg3Q=
zC$y^xbF|#ZL#XJ+HhcqrMhAd?7zys3_{xJ>Ag(vDcwv?AAk*;6nH&wEiT4VeR-%LT
zJXkS)iFE@`j;xt6`kOv&N?@uY$nxn{T76}@l~!M=Zsp2Lcpgt9im)|?i%dr&JLq}r
zy&Fc@v>Rf(03sdlLe#I<?jx$O|Mm*poC>dG##bX<aN4~(jv%bxq(u^F=p<YL2E7X*
zIlO;hP`#jhpWBF*aX#;GNL;yAq8f1+e}~JUKvIE6u@v#S5v0X8%MCs7Mc{G|&YQLI
z7lb9<WgwE9d)U>b%x{q8>NEt^ZyvlG9MiQmfx;<gKj4OdiXxKbeiUoS8x?C8AV;;9
zaQ@P(9prmR3mc?`a3dU$g{Dx9(!4>;<u-Pd3}Yz9(v8uqZJ5r)y-;B8uc*Z&p7<pJ
zGbH7`!0#&Y^1Ob(kd#vo2&}{i&bPcXpK+Rz!apJwH^*!s@J^$b=>8Wch3tS0XcqD?
zVS1}%Zx=P1o(5C0>GL|TPc~*HzQLBH&p|yIqT{^!VxzT|8Q&Q@S!NWD#evyOoF^a~
z?y(X?1hE+36lYzm*Vww2?41x8D{xO7v2;-*yqyLg;I6aDWd^nvU@f456>37*W35(s
z<6s|a$vkn?oU8HeYWyHRn-8~&`z@4m4u1@95+l~*$rpDrJuXHjz(NwGwl_Opc-cz!
zF;gU<dnSVb-cX8=j)z{4Y78M|e=D}O5;nw3RD?_jrwb$YdlSBbbN^9t=tsoVhtJW|
zzciu-FHNE)5jXeWiza2F(B14olcm;@R@}1($nA4*?~uz$8d`GELP)RWj0=~qCA}fU
zTSk@a;mKVO8KFbYoR%vcV5OaeRmI5MNzg+>{L{|eXkg&phmXGU!QDyst+Xv-f{d3$
zCj?PC8xA6PO~5o_sBQYNn<zf&KBNB$T!KR_Ohu4R!-f*6i^OkjR9yhglX)<0R^++B
zO8lJo0rSHp_yYvh)(@33-|sV0<{VI#C&cWd4H^GG6gP=mIm-Yt{-DSyD{(bY=)DDY
zL<YSTeS2iA8)kEy%Rn9Zd3Vow8xfCC2P?};im~r;q|#X&As-HppfeJ?@ib?I1(@Uh
zmhQ@dlJ>J6cdH$0Kz|l(5Tb@a1F{K3f!R>CV<?l&|Fsc}6dgD=NCLt(!#J9*omS!|
z+=Hga&r##s2f;9DC=76%Gr{rnW3mx3_e^}{*MZ)s3;Oqb**{fsHJ+8Y7G0*DIp`jA
z-ogj|(&mCYvo8hc3v%wa^wB!hGsN37h`GJ^G7aDkJ2vnmD3IJv(}b6FFOxQ!?Ehl;
zC)$~gq8^*r<8{LvSS4dYk_%M1$phCIwGHmkj;Jo`B&QYipq&EV^<Zst40#W|#0Br<
zV4r>z?e+f!KUWPRnj>0SJ4h!25ee?+^df(_tjqmOrW!93j6l2D-~A^9-cN}IBkhdt
zbCYPqAnE}i%Dn-4$3!1ubTQS?0R35svFy{clxW>!ACoCY=M16BPIOP&QWJ22h*)#-
zvS{KOkDNSB)4=`o#P4wuBR?5Zwv}#<5@TZ(%!O7SSRZOj;kD{*^e%Hgtt4H~?l<v;
z$y`A@$0*$O2!YypM-41*F+iay_d;>b&b|e-V1(r0?mvOFuI%HPx=xO*c=g?E0%|kk
z12SOB1h8O{3r^hZ=N>aM=qIF5vTji4i(_XvjN4c8>yeEmeyo9Toa-%O(%*Ft8`W`q
z;|<K@Q3Uzr0|sPFj=5cl@MCe}bH~BTlS|IoM|{(Iq+ulYqr6@lN0`#GF)uyPy#59k
zc;=jNhq{#!eJe+dzB{fAeO(5pzrlg|pTM<zuz|)0@SdqO*g@i0y#aZ+pjWRZpg{QS
zRG?d7Rfp@~5rLsD)Ba0NyOhPDJG7k&#8ZJToI&C`PwjB}N)V=uNO?(MAq1I%#^A|$
zh=@m1XcV?J8U?S-CIExEO~z;#4&zU+UXSX&j6lYa+Yjs+oBnxHYQvn2@VS%{K4FLi
zwwey&BUy@%{=^7GvbmLf308;uG#bUas=#OcK|m!0miPyQAI@?sq%mBUL`uWzS>d`H
zavVm-vjqQRxq^fF&`XdlA+dTtu>bFVhiYr^O6J>iEaN1K5yGjKlYH0+l*3|sv(G{h
z>$PGu(xU~VaStRO;1ty?vQb~KLf6|kGKBn=F*}gg!uvEFP8%r@vwz_Vxff96Cffq3
zMu=rRvC@@iDW9G`7B1!~7;rJI4|p&>Y)NG18Gv!ZK1qs1*j-LXH{`0o=N=^44c9Oi
zKOnrAd=PJ`xu>9__$l+Hj4xMcZU<~VHvVNWt^08{yxh}5+bHdDDYGa1e#hw2Li7)e
zUP0A5SQegx?h48&5n)VIA#HL|oNrg3iQSF(SS*p&8yWz{cVP$6lfUoarkYO3$35yT
zIGa}F&*Kl?Lzx)D1`7Nks5EY3F!nNDpr_3G+7AVi+1wBLGzt60d(lDe(IJ%31DCzq
zM+KipM4k>-?=U1!Zo^R~6mefBF77w`w)vHRVk%nrK;@>vl@s@p+<=oz7bOk<GF_A(
z{7ZMO$G6`-lg;oFeEWlrpGkM}00CT4;7$5923$OJbJDeRScRe~Beb(e-(}|c3btsN
znG5EvIA>zKn31nxo|=%0dF>VX`6w43gPb0?lq7z*0-Mf!4+($^Re7Ed`wI}#<Fp7(
z^xaqxoQ+pb|N1}a=kF}O^=?4vj4j47JQ3lUBKos2+3O(6(!Q1MRU`x9$o0s;<OKm;
z!JCqpFajtFM6ty8L7<Wr7or00q=6_Nlc@*cAio|`236N>#hC~drhv@Ui*1srhp2}*
z`4_|`$0iftbNQas5RhW~kkG>!!>Ro^wZoN-J^w5#?&9DwJ|eCFak2x2-3EN+=>si$
z4jwCUHq#rhg{*1O>9y^K&~X-u?~N7iAj0d@yunxnqDIDNzjv=;#7=^ix9<{vgd<&x
zO-IE19x<7&ax3vqpe=rQs+DjNz*r!C;L!liq7XZR6XP5&G1Vz=wHTbDO^&Ep5*+0a
zD-O3@Kz2ade$2gwLd5XHV0+HJgi=W~aU9h#yPp;y#h!Jxwt{L_fJ|0E0t1AVdFJ8i
ziI(U}-1qS+k^`V@aZ-%kWXO3Phs~O(l6^8`5?3)1bj03t{T$R=VSHd8fo_yv0pcQL
z?8n3P`9C$d_6Z?!*u?JF;2s~q^%aQaas3J?T5$ab1UMS(<$wf<?X!sGPeTUrDEa>q
z*I@`Q;QAQ%I0S~RgWWeNSJnndQ_dgoUAxtCf)d-sZxVMPjP==ijum@@E^OPq*)iXh
zk#>&)RSMov&KN|PnC1dIH><$cnGI9Vn0U@=@`69(191(a{I8-__X2#0-i5<;1x;6(
z{q-n_ek+jaS(LQcnCRXO-6HzONHpy6eA@jb%E3>0HL6^}Mn6O3qan4wdvzBop$(CK
z32|@_+L19nZs8?v;LOHtGVVOIfW^yle;-Z`D?yK$ZK6iOP{Xy;I1@qo!T6O3KQngh
z6Tu}*e5#VD_nr{0{$cUI<RMxu#-gbt6Cig88|8aB*C!33j5HAe+#ohSc>lBM2bVUn
zAyaXNtR))J9o>bdiNly06I#Pb`UtOZ#rHW((mmdN^Pn>>B+{fu=AP@QXM;D`t!DMA
zoiKU@l1}rM@HmG9sb<{p9PV7iXgdE5&-k?wsKHwSqW6B#9@NDtp1q{_I&0mQ?D0T5
zYklz*p#N|9l6BtSvA5Wv-c`TH4{oqGG<O&2VTigVOJ<+=o~eHWv&H48M9R5Av{mrJ
zJ^)4F?h%1VoT0<ycaTK&xPruDNX5MoX$FI()NMytc^#1MfVmDUaV)!}c`j~RHUrF2
zLS)<jOYrNt+y0V8xdBf=@*sNA7q_d6=cMaLL$HgbS1*Pg1n=hO0iX|7HP%?&6VA|U
zX&+J*fA((}!zg^ge%6u*GiU_jXuIG+*Rr^a{I?Etu#_l5FmH*wi2#b~anKj~=8bIm
z*-dVyx6t^-H!wKJlgc|-<;^nBgFO>4Q?RDv(vY4|nw}8x16yHUY)Hj1;R9Z2tb52<
zZA&nW*(lD*N#L-r*u?Qo2BPFEKnm{uT@CPz$KEXm;SlG8T%R8LJ;HtZXM-o<GLS>Y
zAlW?*Bp+YlzsO1+N4rxTl;fOx*hM0P@3e0WR+T12NiOU}NyluF9(iCz(#=9&t)*!y
z2BB&846%%8IOdz(DAhmMY+TYmve_pIqgXv%GCRrdVHU^{-$dQ`wP%3AZbOPWBzQMo
z4V>T88$n6;4ur{Pkxj3F0j=a?u<tkh5kYqwE&V(NVteF>6qw}wP$b9-^aG2j&%KJC
zaiCmSL{EUn+jj5aatvvPp$E^9m0b82<Tc2W<1z**TR?Yg4tlQO$aOD8rYywWzp|Lu
zLw>&9%Sq!PPiteB%zsy$qYI&^vHr6Uf6E;7xt1g$^Wt6%`RL_-&&zEe$UP0Y=Ae{4
z(8|?bx$1#(Umj@Xi(c-ifn2`38Q+{0>?D&MLoopx%@9^6KKEpVHk{;!@gV#hm{wGW
z*Z~0oI@H%0(O(y}00D7j$*p1uYjro${l6hjeQE-H2%q?KUNE&ndwcim^3Y*@iZ8|E
z><^YXyaTER`|8c!`5zlOSQH|)aPlXNOFiYxgLeP|8;uacG&%ra3pkVpl-XA|`{{3F
zeJ=re95g}))o5Jq*8SJclZ<$T4EW!lCy6WpJ^TyjNk+h5WA-J{|NrKE$H#jJ7=E$B
zobNc@Ti_6kVW&FQVu~^N;m0)c_ebJpRN%fIsF{wMjX)1Cn`};TFmj(Uax0KBbPk|-
zx7^Ty^F&tSJD6vffP<%G5HR2o^@cIN!;k=c|3!qTca#iP*%dDcd>^<y(zCC<S&p5Y
z+$lThayxaq+<d%~de(WTU$)lm&B>h`0`>#WJMV88VI{u`MCa~--Dn1Z;SCG|YkeDU
zdxX^%w_)&n;JnIzcfRQ0W}@9nt|8HTzpy~@?$=HUm<TiSSu^<cSZe+&1i|yYVn3Q{
zFOK=ws@<?LPe+*A51w=)UiP)i?Q3!fhqu+>unLCV3ZQ12UnJyR@=tIaSBLbXfSwxi
zyTyxw@f$`%&OVOx6wlJ&_7t;FGtO@soS~@JFC!lrJaYAy^dOY*FwK)VN+Z`z<0#Ek
zAcbckab`!!AqVYLA_<q=tIZ6U-b8rZN28%?x4{F?8=13*IEsDSR{Y|eIW}h~i6;>|
z2^XFV@Z{N<4ka#}8Gr^TIl}oIhcH9b)Ip#ap+ef^86EFf3Rlt<5bm;Gge)oNVIgkd
zv5pZdbT6-EJK3K-53}JYP>)oSi@+%ZJZhtF&(svKu)sqU6gNzC4ahByhNIwHGUh}O
zM}r7gh8@{2u(wa5xA{G1&kU%UA-A+ZxcT=}dAi5@MN02C*Q||2skQrwZdgdEwc=&M
zkp#Mh7{<+%IK&&M3&pM&YCrq}nQ5^Qw5F+G>;ynpqF(h3>+I)#D1tGNu8;WRUjX^D
zpz}h%df&4)*m&$t_p?YA`mXz&UQ27jK5N`sW2Rh-SU2y7!`sYC@^HtiT!u)#9w$}`
ze(naP@-?nTnD0;l5>)emlbWd+g^N{xa5o_XK1*@Yi8N9h##POzn(t(iKXtXgE@Za=
z!f0-yk;mTsvV<pJZUoR%j&f1cKTd(dhnYR`8`RXX#ZKY2EE!*|H>$7)qd`c%u{eHF
zZc1t`2ZN;pcYyh;079{Q?j*di4SCC-NWvNN*i>{NzH2#7gmZ(;aA#oNr9U>H$MQE@
zmLVy}-|j5SUVW>vBIY2;vm(xifFV9{JriG0S8u!jgb4)uo8>2Y<ttg<n}U(<S41Wy
z?=U=G>i&irgvCp};{HN$_bN8u)S7)5SRqKjJT4-Cku?PO?v44%&p~66^tMZ$4CW6A
z=Fbaw_bbIouh6*V-mewKEF7COXz=bolADt@&4Kg54PqpDf`s`<KN*g?uHEY21=Pwr
zkLJZkS={7)W+pn%FI9bV13NDgs@Jzr_`n5;-vTi|5U79E$&`ckh5DOI5bDt*)F?fZ
z?<kGd-&=u{+(?-R{Jsp_;a>{KFBKe6-((h$a3C|W0{HW(U$M3wQ0d&m`o;>$#9d^!
zRI-Jmj9;TQsG7|$107H|GDF`;LID;|*SAPl0o+%*iw<)9d<=g<2<4crZ`{u=u=JQ!
zqHp{s!l-ks{^mcJD(4Gsxm${n-7&fkeNXU4DR#?4D3-aAh54s%?3MTiFP;%MGINqU
zGdGfl`G?=x>672t8T|W3H?k#=L!&yBkycnTbK{OeOWO;fJ};F0DTqt|ssqu~Bp#73
z)0dUteW_H1Q=7Artw=Zc#`}gEG`A*!Cev$VZI!)+DHBVwH_Ed-yGovQ*{ku?Q>W9}
zUV{cSe`6SLVlz0kGc&Q3VCjhqG85-8l$qGh2Szt>HUl2MN=(0l$2YN4uc6Y)OkBW%
znTadR!!{2n0wk^>1Mx4j=1vm;yz3eAW^B#f2xp|BfmGrgiOk|(W)1CY{^3_HOaP$`
zh0r}-D7_|*kUzbqiwWs9TxIwQ#9Uv3E;Vr4AI2LmwSUChP2|F2kjv{hYz3mu=AJd|
zG1#A}CQf(vu;9d226rG>xPM&ELkGpM<Q|TG5pX*%z305+w?B^dBHqg7hc}BfcCr8m
zzmA0S|IYT{CHURMj3gN-gB$#pY#a7ILjFEXtPglvcw`Y~YP0ZUzdfFI-AIafJt<0L
zw&8Se1uk$p6>=?xmxjWmeq0C$1^yPExN<KG!;{5ucp7g2ZPlBX0A9TM18)^W{L9^I
z96-2%3i47fk+Z63WIqV}4P&<eU#L)-ukf6{k8B7jaY~QAA;7CJ1Q>;L^zXCZ{#aJu
zC%k;nKHcE=!^(O1YEqzN`C+i^SOg1ev-JQ_-$(A?yJ_EG%%RM}&3xpQ6n@*5=)lcZ
zbv?C*><aa0Zlv>Qp!Ri$s~PaU*azUg0Qfn)1BP_aLMd?+u6;fB0uCGB+?{8stivF9
z={k9qXP3#dE_<asTeClq=Ys5a@B})`fW#OEOyoM<fXJH<aS?i9oboo4)KHPny=hR%
zybxmx1tGS!AjDw7*5g+`J!0;Eu|U<rIbMUpFedCSf-1<Lcb5B(ad{!s#6Qp_whHjg
zAMD`!dZby<5q|S>5`S!zMruPzra`<)nT80EjP1XbC=_N0o^#gawv3XI8uta$1Nrm@
z>>VvfsiT;r8Y(s3CZaRw^Xv)X6i%?qvLWM;a`=bW0rw6N;Q)0RH!4eH1eX$OSZNXt
z@qxdzvlq>bPCNTd>@_|z4zX)OJzgm7tYc{K*)hs|Q)ojWbZ;S)m+xxx{YV@9gK3oQ
zrd~mwAK^Fa)aKuzT=q#wVDQJs27WQ`6X0b2ejC?~25!HnrC&yhwXq3z5OYw@_A>be
zpG%G22bv#3J`gA~5W5=pT4V&3gvFzRK?JDq=2u$@@1ZQiPZ05^fbh#J;A`oN({KNE
z=&o6&zJx7_c?9_~2&Mr@ke;b;WwA{Cbn}>F9_{8an-8_3BU5h_Lw%=7H~OL8HnAn9
z)XH>yAitZJhlM$4Ae@GuFH>K}Sf)N=9s-|Q5lz=uAhFUUR+~pTA8JKSy1pKHjV7_#
zJnBqdi|5iz$GasxeiI+~%fx$30HK5zQoZXWr=Y{)cX~PL_<DvivN32vck_Y2O#FTm
zK&YUs;u{KS_jsXnJdTjx9P`6zztv1PeBsJvVP(;(=VSuhgD~-oy~_m>7e`owVUZSK
z758LVeV(5H??-{bs`FWRf8lg2U{8ls<SMZe1R@PWczAZ?KDnR><%4W0UvHpXnfD@F
z-d=>Y=)E~{uWZBUB&D&QQKP5S>FcY}QB*h8!?rKOjo?_hmFg+YNQ~&F79>{a8T|db
zay_LTiIuu(4ic;N3>*f6!)ppxv30ts6N&YD#u6kpBBdG87CmK!Zd$2tivvpMA$dWA
zp0`$=;#{HBblf$^5PZ+LaSI`RDSeaeIyD;rqQD&8#G@4*xM`}IAjfQEFVLxdCc9H7
zOAzXw9=#SNC_#|DM5p$fZ2OeHGch*rHX4+=4%v7$;0jpa-rZHHo1!<f8f*-+yV1Q)
z5>hilSsQ+2z`z@!N@$0jifWp1^J-kFT2ZZ9YY>a5<~kIrP_6Zdm8<4P#41&5Gh)@M
zxdpKr)!K?!ooa4JtX{RwL99_VcOcfRS{ESJqMADqYgMgu#!pwx+;E+(T34#>I8nn_
z|8e~oE`#h;rK*Q0L|TXHCJK?WK=lxXs++jO-h>COst?ru9lzJdHSiLf58g0%Eh?;3
z_fQXa_Yk#AyiRo!bI7v0dx%Z6zeIHt#j1xW$DRz?gzj%1KJ<Q_1AaW9sX~7V*U&Yl
zs-4<5t;7yyBQf=`v`D`N-(~A-b+*zYQKp`Ry+b4J-*EXQ;@Qt8#oEI4!JkA`h)mKp
z?#e%uP2I*ET<L&xnt*?brLjL%3fQ80X}O+InF_3_O{39LEAbS8X19g}Izg`R24dDD
zPG32Sl;=JL`weQ3<$_pxqi`g9HhRGC6yhaeyfchegc48Z3&XmpeO%LQTxta0vgcPg
zQ8l#-#L0w#D~3GWC<l1T*&138q4n%j>tsOqJ=f_dU~Oy&c2B~K0Ju8AzTMi`c69fw
zqdA1Gt&~%>yR76q=zb4`lv%+}g74Ypf|cXoa3_@LX=S*}uyz-iq7u7QoD<>};={Y_
z0T2Mwb<S3vD6GL$R_j{2%f7&(Ckx=ebMmN`%TZa(z+FnXPd9Mmr)2r#2Dng|>yG&n
z#N{7$g#8sT$coO^a&%Rm{p(s_abl2fd85)!H8G?nhOuBAR34@E(V&3rgHje|CtJVy
z2b>M?4<s2u@aaV*&X#h_T6yjq+RLC1{~xm_0c>1>j7;75ae#u$aWN)b@L9@Nb4tfe
z4PAdJIx9^Drs-Mu@zNxl^8Zl>R_DRx3{j*;vbF5L38N!3lmd>DZayZJu=VMsK`c~N
z2EDKe{8;JzXEA`Ts%d^!<GR>NE4iM_3!u6Oy+=7p+>DEf2*{6-l__{gve_>2=zxBR
z{d}=5(wEsLlk!~&#F6XOnc~&?xS8B2aw@R-=Ack_7rzmSON8HubV-EY`8_(>sX=7D
z<nY@Z;Z$9BOZXmqt1f=))%Qx6-&zg}C^_(?&2G8(R$W&wvmrXNt=QY9D<tkEn4eH@
zrOy-DL*FX{3Ou0-X<D^28^!qn47kMoDFmxGuh~_r*dTt6q^aHgHgqBoS&|CWa}OVe
z_cU6p6H9Q6lbc_tOLM)o#9NOr?kPu*P6<F74ux6&&JMWma8D3r((x?N>OYG1aK0|n
z%{VqJ{Xh$Z6BFQUp$^1bwdPo208$mo*w95A3Iu!cniyZN4Cz~CJ^APNoWuTDfa}HX
zZ}F9zO1wVq!A&RHYAN;Nd(I)heH<VlLEpBTLif$#>q+F&=@!(%S~yX{_Q*Gl9e`82
zVi)3K>>$y`6)l!a<;J@YS)2VckPDtYN6D#gXM3<0fcWxo4E%cipd8qli1E(v!g^Wy
zk1s$~)31rghs6^^<A7JSRs*aMbmUNbM8<+KAz$Dhh@&9-ABdaZksOHE56f>faSuO6
z;iA8m59_aaSbY>^e_s7`oQe>Kp<9R5ACm9?(0tW89iXEB*~98{?qs~vhxLzwL&n=a
zEIwxle5#d4iqZap4{N_;SbY>6(thW#_>z44q#tUg05+AkscCk;gI@z5gXUvJzP!*Q
zOcQ~p=MV~Q1EYBMCKAnfd*aOK8HiKR4UTsYi&HQnAG;gamK(%JxF!o6qPl2<2noL_
zfaLr8(DJlBK3E?7QVw3J9Q0o9(I|-ba;-!b5Ky(y@&_E%{>k$D%QYH53Jl4Q%b>dT
z%P5?hT$+*BdJ%?qz8nwLP==dwASFT&a<Xf}h1}XwWO3PDhNrn7Hs7z`TJvMnX20wD
z=w9mcr}P~t=KYc=mkhXnjXNn?I>6aFnobyQ|FmiY5$=&-mb1P5l5P1H<*nod7!BN?
z#1R<?>*V=}W&{8f#g1q0c#(@HX|yCs1D-rH>9moMN=e|QV;*Y+o3#I?Nt+a6Fb#aU
zUsFyx5k$={7}BsTiXxtG1BB?!*RbEG#r9q`OcvamAtLb*obX>~-*`<rrrRPKXvMvB
z_&JEi>!;{tr8wAmT~NI>=8ZA$Q6d*3z3V;tELMF5?*u+M=Dk|iy5;+50De05&%ca7
zW<o?4|6qUOcek{;MrO$G)(+sMvM={6{e7G};sdDr4gJ|&TiD^4L$zC0@lBhuuGhqA
zQWrJO6HI?9aPHfGq;{938^++jvecgiiMaEDIHL!~98gcij(LPtWj_1|Yad^ESR7JR
zdl`F)Kdl=|)v^dU^J0}gds(pSeHrQJbXys`f@8Lh+3!C9<4f!gucx5$99Cs#qwaM<
z|9<}=|Jx+a>q=c0HcOB6n0ttb1tza6^&cW!k0Z;BlnBC^z(2Aq<%hZNq>L<sZCGA!
zQG+?-r6at^p0^EF7v|2smh(0b0M{lD4sb|pnL3p0?{>&K^B?hp5&jdMsQqa31HWj3
z_Y=4*f$Q>N(D3*EMjDR&au8?-bLrvqdoXw3ka;?o`vK<3hK|A6Lhi4Sr(b55Hjvec
zbkA-8@Vu6S2RFF2&Vw8gc<p$&qYMjfmvu1*V0WV25jMp2i)3;S?dV}BlgBQ~W5d53
z=M0LiWC^Eyt#G!SOPK#i5!bvSurOQEMts0vgb?nB(!{(;PwsP=0??^YZxzr<S;9ZV
zS?)u~2HzPplMUUUaL({+od1F65dF>D6@t1)I1G2a)Zwld{7~sm`xD*|gV`5m;-vCV
zqLr#XqvvtST{IKVv$$}+h+R|C@B_uZiH|llCC)ln^cdN@EiZ4qt#$ikGnZ#b1tWMi
zBJ4{w43?=puLf}nULrnlaR-=b7@}tu5PkKP-Y&a98N2F#Cr6Jc$G{P-oJam1)qudx
z-A200<H$V+C2&57=ZK=%wK@gDA%b7-0y?xHQe7NSeg{8l0(&*2utLW(c-BaHLJZ&;
zi1NAvq1n8BiADliX2-L?#D0vRQLx#_vnP}nPl#^oMbG_%^C|m~e}eu7OODwEbM%zm
zZ|@$xYa8a*2p~@$w~2!Ox-_^GPWK61=bZ=+2#wi-^`<%&qY2}O;g9!z2S!wanK7{s
z%y}f5pS<6u)Q~Hhs5XRMyKCvE&4Gy2edGa7Daw(70xA^kzZlYkeH)tB4$FWIOVJ)Y
z=Vj1}c?DF^A7x<C|7-o-$^O_L`sCE~2)@bP#B+T~|BJ)+cZTMNJ~SU_GlL}S)rb3E
z%<ECk=SQ^Ph7N+dwH3B}qwcN%cp#-y^%uS0fWz2>`shpCzb^FTvzA*dbvKcyd*~2l
zkxSg|C_wpLP~drc3H_&9@!tEVaC|0^Tn{o7zRvS~FNMHhdk*C@qUP}$2l{}QHi&QE
z)_~Dly>mvOJX6eH9HOWQpY`}Kyu^z$?f=W4O2Bsy#8wMFJMdxnMK8{@!Jk9S2geRh
z`+p<60B|fh1=h*G_?hFCy9du!eER;ydTf7}S2m2LF5{JW;wMynherE+Pvg^#@N9e-
z9{#CBy5GyIITN`1kaEN8{ojnU|2}wfD)I5-vmT$g7iN6$XEx%W_0kyL@u{KtgUkL;
z!n@E`5W5=d@u_KmhQufP1)s099&mY|zVSXEKf6#S`#IqF^FH4Oe8MQV0G|!`?8WEB
zacF0T&-eN)?Apx+KO%h9OrP(1e4fGQ-;lNspBumE^PO>t&$ket*YHtuK{H?W`QB*5
z56n!5)o>|v?`1yU+Bs+wpP#q;e6x^NiswpvZo%h2@cAv$p2cSe>OPIn-|%_M`>egf
z=ld}}hvu2jJM(=$e*T0$_9Fc>r1SH0eC96j`S#=U)yn}3`di=O^Zf*$2T=BHq~8Tt
zT9J1tK6e1VYthGgeEtn(8ZkzGx>5E=)Bd$j#4B5hXBZzJK4<zG8plr`@4KK8|I?Z#
zn(sDW)70q~O#h;JT+r0!n>uCsMU$JR=ATHoX!`i+7hE*8+*j^fiMEdLx4^cSj6L_<
ztFONLoU6}2XYtanoI86;%ehsxwKeB1ntRo}WlQE>G0*qGLg!UhR{kH--UB}BB8~t5
z&hBP+SvE@`5Tb%E1f;hFBoT~YLJ>g$8y1un1f@v;!Gh>nITd2%tcafF)D!Gy#j~8}
zS-?}zf*N~Q?24$r_ve}KE`js@|KI=h=f&>MQ|Fmyo|$=OzO$P?i)YW8Q{U%zlr}-Z
zv)6x%|4tpCjvi6BVC>}i^)u%jbKru>3l`RgdiwE62nC}<m~IVb@mk93d|ub`%JO=M
zmu^&k%&V5yFTBLJidU&47WnMO=T<(4@Tt{m60b9ODHl6}*Ri}l;-#Mo)f{^eFVQdI
z^%q|H8mqq3em$>mdG(E=?Em3k9NNE-;eSBt6lk}gvc$enfqyYx->Xa^$wv~sJN}zB
zbBg>u5BJpdo*LAff3h9+%69F#Xzt8u+3wx=YnpY7=S^O4bb0T7z551p7cR)oot~Xt
zH+$~<B|-g?ISVE)&eqMJKX-mGXKuD`R^9BnISaDW=PsNxEm$~b>a4l-b<?s7<{no!
zC!mrAGbhi=PMtA%{^Y3(>gETtXV%Z2ykP1Ku}nTDn6_}<teI0MFR05-Ua(;P%qa^O
z)CI>boO4`u@^rYf)8<ZHXxhVC&_Ati`ph{<Q|HVDOM>}zQy0?Di|Rr|c7EOTy7_f;
zh_%U>I(5eUxpU?&tl!2SQZX<)W#*j8^OxjE)H-MG33C9a&Yec!Y-@{+nQVRC)CDu=
z&I$51&8*MPnY$p11LsVeJZtWpIwYpZ3)y)XF>`S+dtv<oW0BQUXHA}8m!p{T=V$8|
z*3YYhHcgJIr@f|cJ0yl=Cr_C>e?iD37zfO($Adxr%oFS8PVcIKuffCJnj%JfjA*q7
z)dt3M!2Smfn{d$4`y6%<V_ca1nG;m!33an(^_o6+{%joEb>^H!lV=eK)`i`InX_iq
z9YY^tBEwj{;$7dw)AT|Ux8~&Yot~YuaP}1XKG>eGZZXQ{pgGhxb54^WU`-t}Iy-lM
zb^&Zz@4m_MzximgxqZIHWf%xSuHUlwbn49MGieGMrKPDfoi>vWo=@B?2m*^@vCW%5
zcWPa|=8No(X64(4{R`(XFpxxdt_vAHb=h9od9&&!*VhpwbpPb+l!eFOo_TZ|by%Q=
zMtGxkbR~W{eqmj`)K0Hsx*|}7nK{3%UJXzO5-anhPsR?@;0&fto};eA%X5xV#S0e5
z`ng2D*(PAd<ofKCx?>j3(Hx*=&&Ev5ojrN}aSP{JyLaeR_;&Qz4)GEEZih4pAge2k
znS2Ozt?y>lEu6w|&(35?%h?}}0a5dw{~iA@Iu^<6HnOr^nZUYb^W$quT{b_&rYUIr
zFl2~N#`+l=Sh*F*O8EP~_07S=rW(T`Yx=fnCx`GRG-b_K$0VSsk}B!Iu!`-gt`D|e
z?hg-{q}{p_=J0dVEd2WJ4*&MhuM_hx5-XTFXF(8MsPan#d5^^sr|zPUf)ULAF_*jw
zkys?rwU^O4wiYrzmaoCbA_Xs!x5bhL-AeV5*r_8QvBaOy68)r%w^gK7K|w4Y)2<1r
zBML#@$XXE_a|)Pv>?Yn5BF1BP@}7+D)fIuGgo!@Wj^fc)ypd(5;5aFZCR<XR#dN}7
z<f1+Coj#=)kA1~^v#Wcs!a4UZcRFiWstS~Q&Yi<Yq%24^kWRbjLok+_gDGx<(@|)o
zESahh^G5e_vA}fdyH0@rc594Un(9WS?xm2qUFt+EbN>mc+0@_gjC;jBZOolgm(p_g
zYDn#x`Y{Xmnw!cp87b?Tn$Q>U^$_fvdKi=4CU-_NQTwMRsNOf+Is+?HTWE)S)4gcm
z;MAq)aBsP-1`bIL#w)JTb)qXGWwj}N>)O5T`WiSg^=c8|J8pjiN2dm=-gn*M298Y~
z)*0|UH{HO4QeX52eBZ4ya6;-ynel=9#K0p{hpK@ex()<Fq-;`ZCnW?QxdRQHmU@JI
z%6;sPHgHDjHBmot#~C;)^{S|!y7LX3m-<G|`OGz%uNI`XD)0Z?J!aI!soLEDzi?ye
z*htyQsR11TzjSkHcC>7nOTE<=c(c3K;4@qb?!bNJuE)%1**Pv%O2K{Y{$up>Txuk-
z>b`L+Ir52?t#qkt2~+p2>r8J(%Pw}Qdcog?^!Hrq`8L4cJGnVp_K`~sQM-SzXo{A7
z=291AfPW0(&t2-=p1?m@NJYywV~^UpC4|3qsp0B^pF{XZm%38&Tisx@cdJWPDvo|}
zdlPiDFOvGPJ@BvYJ0dk&wknbuFZyrpR-zzUc4Z`GJE0(=sEn4aj-)0qPMr(k>m#Wr
z6%dgSzA2LWheAFY`PuZ{8c8*(J+Tm88%Y)8XIBu>Xo;5H6-k{Yf5#()2Jn56)WK2U
zL`2VCqh$|9Qol()8S(yEA4#1k{mnx7@kpv#_M}4isYvQ!CJ@&=grA9|zS1yChwz3-
z>PtmzVF<q%Nu8mf%tRb&qGhi{Qn&98+#-@NcvB?xC^LsE3hiw~UhQoe!f#`b=&d4!
z#{XU<HATTz9P0lllKNYB;MS31qkk4jy{-1O3E|C=R9B6Hl1MRO5H0&QlG?WrxNQjk
z7)f2N_$Uqivo(?$A^+_Z!powmL5jDXL->qn>IwqS?GibHFd#mosgrsDw~Op#^`93_
z^%A{(#3r+{mC;mE@wjVbnEC%=^eKKiMp_a!#6vVSN%oaRK4uuu|IyTQOa!h|2;Ub?
zWi-oojx0C%4bjw7^6%~u&Fayz7o({w6<=K<cNzRjG<CD=?;2?|cvCbL72GYdfsbfe
zV>C6aCvcC@zaL=_!_@T*;g6%Kmg?VLkxj<`Su}N17PwE?p3PAf0RlMQPVH$P+m%^A
z-b=BZK7$4X>DPF3>2>sBBxrsyu8GC>xE+n@ySj;dKLRe@g(gMP1$0C-{S$tRrQ-~;
zf^`2Zn$vgVnM8Uu<0+Xwg9)x#`ZDyV(jA#rny1r*PdYu5Mii!dF;`^L<LJN^>5YVW
zQMxU`(K3A&E^n3YiKB|sE10=jr!Sz!Ht7gFCFy_~+ot>Cw$k*iXxJ%z1vBH$>Gzl+
zc1iEWd%N@+>};Pt9~*W}*HPnc>2u-CrUzhWhja^uNXK*wtSw7l3AI!DUpw&_AibJ~
z?w$^?r%U=Qy0vT2yc;TF@w!I2;0j#e(hL_G|9nR^{v?1{dI1quklu@OJZN6rRRVJg
zFe7~=ZVb}n6aeWxXmKQ62bC_U#o+kaMer0>)7IAUbF~s>O5l$#m%CXTGb5-X{zugu
zDT`&k#?JV8e!)s+zC>I6e8mt8W9A$@6~AC6Dk5b?th<V(cuXclE11UOm!3#59$UtH
z3!6xb&Vi#yQ$~@bpk2vF!eVfgByPABI3Bx$_ZBvFH<2*0ZEu~C528Ov>i&03>LZhi
zG7ff>GTxTy_~Uy(%>07@ia#-&qMG}W?09mrL9xtfU4Z^kZ%{I5Wz)4di)c8Mm=t)d
zBz!#~X*7ryPNIf}`54O4w+MjvQ?e@hFr6CTx`JXnb_wq-+%3E}F;*ZnHL`dVK^G6)
zL&p7>ack+{#vK%2t==ebjmGkUu_ztb#!_SrFOG>X<&vsCmf^jH<q1vrRAW&5Bry>$
zvMP(GsBepHd5XvOF&SkKCKD7t+7)VRqZVJIE+{iAiq9k@<K5kSt7)-GDUH~nCLaOb
zwsROU@c~}bAeHxZYfbtdlUCNzL|QW2q<v{yNcdJ<DBC8x?@h~A)1qXhiI(jpOiNIF
zd>XOYt{1HFSOxDbEUEdQVnOk>YV3*T*5cXSDWB?Hcc*&pJa>X=I)(REPIfEnF>OKd
zp-czyweC;GaZR2>nNLw;zKPqL85CcrxP8<d-8vnM^Nb0T+svLkFNptaWo5RPOZC<;
z%~+O9O=lj9|Kh4)jh3B}Ox>$k_%%#B&PfI(GOZibwu>nI7TPLy-|{tJafmpIugFsT
z%{`Bq#V=~kD2f~jJ|3IGyKm&lc|o&YAoN;3O8YR;$Ko~7n*h>^#UQ;EluLgNB9fk@
zX+78}86OqZnv?3>0?GZNr;A9tE@}lhI;!-9X(=eaP3;_G%1W~=^|AP@=vHZd7VCm^
zLxD8cQj9QB$KQ)qpgz@7^WXbXHCZ|z*3|hy2*y&Am@wlXhF~%%o~0&!WLirT-BiU_
z(G{pke?Vsk>DH__E<INBWcng7(e!V0d@TJ8CKjaMV6}*+huE654~moN{TZ6g(sk6C
zl1V}ANtyHxZ*dpfn-7^}({02^G&8k}sL@!p8JxtE&wxlg0$98+)x={l85CWzJErtp
z3A(Tkt86kcPiaEtWLOgOUozn!b2}C#>OB+-qNn1a#Db3yZ&{RBG*SGjJaK}098)sW
z2=ByV55+Q?AQDSFl+1L+$%zwHA?rX8y^0P<oYW2-(M{5^w4P#NDP1-?apojCG84~&
zKI>YFQY|%!v)36^l(_}pCeC@?pwi5lEQ9=YY_gq5S-Z?LC`zo@#h`5F&wYVb>UVA<
zWt}qL5<Q8A$p&@J%we8QT;e%<X6|JkPh9GC_RZ`i=uhVuXaCHhs_&}ftiH<3YL?){
zwRah9aOQoPf5TS>4avM9Z{Om>r8cuwa<{IuMvu&_pd%Bvd1&7tdN1i?Vwsf2W5@IE
zhl6$-MfRp97ulN<L6|P(BQb;K#bZL3$W8Kyjl-yiAI-ro)TajRpbvSm`TFFx9q3jm
zOmF9z<fCm&km4X(*&bD{-Hz13Nb<lD+mUQ#DH0BO1y4LS7@&naeS0=*v2ZXbCRr4X
z?XP(@xx+iga1wxPxxHUtys!NZui-v`0B<87@z`i9e?~dsi}zF9X>6jv?WQ4jMh^&a
zCx>gCC5Y!l!bp*_(TJ;)ig#BmB;5~4?i@?D{wo2TUd6CEHT@fMLHbtcE}ddvMABzR
zH01YW9*d<PC29)NOJqm-74V7lXAF>JdNgs@EIpXGNu>wk#OCSqm?F~YdZY@|li<vx
z-)@H6(tl;x7NvJ##%Y;uK`pJ)*LK99^s8B=p}Qd4CfyYqO44bT+qUUhB&?<BDFoe4
z>9)*jJEuEf>@Mk!VA`c0qsI2>ndsRy{Qw$vOW#T@+4R>~*dg7XWwvAba2!&Wp504n
z=r`2fIsFOIzI%Etdb*^SBil87TyL!n8^Cl=zsBU+BYhYXUC;E>jJ#gy?-;4Q(<xfo
zC%qp&?wg*9{(k9oyqBkEC4!(L{W&e|pB{|Vfb`qgzel<omJCdP52i9bfW@gQ{W#@4
z(=Wh3D1Apf2nGj*SJ8~p<e@ESYvu(iPEM$zsHx-No<I`^(i_T7D>bto<p*do^BpUH
za+0T|Gh=XOa<ZotWv-wrl2bg?Ivg!ZQj6?OcprpoR8lYy6YBqXOh!b1Vs=SR6JnSB
zh8-5TBecA=jJb)kWTGZcca$<%ObntkX@ooaV8E8G-Q>slY_}+IQ&dnBPDYoTIxK9$
zGem@&MysGDGb8bctMgF09Zx?3H+_T2DZzf4Qaq+A<1w91C6?gK=&roEV@?2WnRKT&
zBRbp73%L0Lg6i6FI2^b$JjA^JG&Q+1KY&=MET^4Y`3EF2^JtoDxK*KziMl4^F1*8_
zSY|1nbQgIjnOR0qxQl-=TDslB`7;A|iQgX-Wi%7GOG7Vb4r9OLF7r@nP^c=B?sC=P
zJ$8khsOn^hyHZ<it?lucEQ-fk^IrHW!I5^Ks5&q7sjn-v_%kg6iiADo^Ur;Hkjz}F
z4*9}E%}^E9qH-TPqCE*tw@Rwxu_V~&LyR+bm1=BR>aIBrRJ-~G^8>d!XWV&osk_!g
zG4H1}9!h5VBj&F2Elm5?U+<x!%rguL_vg?TL3ALa-QCa${q6M(s;|5IXUdsc`RE=M
z<%o^il;5iuRGUsyFxU+dg@y&$-((<bZo4T9rw8u-<;K}5b4p)0AMjAuj4nsG2faIc
z($4dc+2x?2BiK!-*s_y*<aP#**SJ2{&c|i%qq%l|rMmy_txsllRi8hWYv=h{pvOID
zQDy~Gh<n0Atuse6blj63D$TsfsB{1DP`gZf+4Yp~m25^4>Hg`V4w)y^@~1u2k^Q5(
z^IvJKY}w8|+nG+bU8;Mo=`Phh-*lJiHu!pynQ4l`jX7&yBgotf9xBRoSFQi{Q0vTN
z>f0ARR2oDFQIC7+erhfJ8hg_2)jHLDZXeLEsi;1(0sFd_iM6Ze#P&F&C_U>-spKv?
z<s=HWk`rP7QjokM5)t;+yL@JDXYzH8DoSHB+55JKVt%~76Sk$@JjLR>KIYSz`%&%Q
z3rCxu9^UuULu+bRrP1RR3Ll(BF&^8A-j3d=zWY+a-!kpK8ps~69gjlX*D9&@XVrh-
zc+bZ&$~fJ(VeP2c3$DZ#DSkNx<+}o4^!%`l&&*g>9{1yc7KB0OQb9j?D3-ZHrf$h8
zie7~Z_wyJ@m%3j*le7i&ubv|u&cB7jIn_f0IB?#^WGY$!=xiHB@TbOT%tk`6D79Y}
zFzTc<QYJ_2L#cSKLMZ0`NO`9RUEGy3(o+A_@K3nci2~Z5dRPm3G6Y+v=Bgu_g<#jz
z7mAfs2o6s1S86%IbUJa1l#NaGmn^@AWZ;aH2A|7>=fRv$pVJMvWeA_<QfF#PZ56_&
zyVPq6y*45I2bbDcK~`dwu~BoW<H<W*sk1IDTjf#*DvEXv`B%GC3r*O&SgWFC*Spjj
ztt0K+K+K4i-Q-d!b!+<&zSX4~G{ANZ;k7RHSItMenGZSdb*aaR6_<6Dc!~2~hZi;K
zct_!`dYJ1vxL@(*Ze3_tsVj4L$e)`byH4TrjUZK#2J9Syv6Ky*-HlVvRZdl>c5ymF
zRxiFMi@N4}u}*>8%^K)?aTI*<m}aWt(-d0WoiN2us^LA|%amK$ak!4iiyASr$qF7O
z*-x8_hwc4qjE~0@%JEpWVH~RCF-3CrF17x%)@F=bi|ae+P)rz=ZOQwrwa%V9*l_u*
zwZ=<_v(<;6`?3w3&s!^;J1moLKW{CYI&#H;;n!NhS#}8uI<j7V(^_5)I(1&IIXBuy
z#Lio=$;H|jCD{E~E$SQFI`^_Fwb0wxR^=|UnQ}I^)u_jKMc?i-H0Rz8Z$KW`g|+|g
zwpJ47-8oK${O-dP6pz5!3(gJ^h3F$~t^AvM?vb_?;8Ck2A|9&(NJuWbR;$62ZJiPj
zcU)ffNt5l=ae?xbf3_8sO1|aIZK9IZVl>k?ndzN6V%ytoHPMAK?;0SXbGstcyTrLo
z2&oOdOLTN^t?gZ+)^;{?`<BSIP95t4S5czQLAF@Fnt*I4B1*CoOt!-#8Zr|~)K#Wu
zLK8iQZ__g|)RR3~!~c`!7F4dBEZKMDC(RqFrGsTipETDD<pbiA=9-?mSO)ZIbL;q+
zV))bMlI{8zt#+R`A4$3M|J4<uZm+2w-!&hDM5nH|D>Qy+J_TUc{}yk0fvMYQOme@P
zT>H-JvDLY>8r}IP%?S}-eo;$K)XE*F1g;>h{Gj73?#sA%T0s{^V|iN3i@IM7wwS32
zwwQGa5|xw_VmFGcGfMj)F`jbvIo{k=;W!fDU3gXNMnt-BTS8Q&*B$N$;jV7I#^YI#
ze7W;%b=qnhN1ZR%oOo?(8RTPZjqwNBYecv|tfoErw6Es=Ce_^Eq?!ksRO8ED^+TpQ
z$j;GB#Kuofb4t&>x<pb|cT~FOnkDt5s8i=3G=iEZ<$=y8^X}5Ve6uEy!lYJ#(2+YE
z0Gzdjao@J?Kmd1pUj4pp8$onoknY=d6an6GM&R~qD<(vwdPrMu(JP2_sqZI*_`1}W
z=ZZmAA?U`3BXeCgXZm>4-N8onc$*D6*m67GG;~<3gnNA3o>Zmz=pZYV?SXjbb3{7C
z5DYU+nr<d_PHB2N#+Uyfo*8Y2A>OI;z6Ah_4Cp*gW}jffozGLiE%pMYbcx58$%7}h
zRr=Sd^AJtu%Z#bxv4K0y*NfilOr?$wN4y6%V43feha-(pgY1*aYD(Mq3A+bz?#ZQX
zMD9?i`3fps)^XYbf@|kC;^}NY*rkoeYNyUNpm%Mf0o{>K*v-&Hx8|MfmH6EKT;lbA
zDg8%lz5lty^gn>{Zfl8V*$$Vg=YJ`&dAdep{?`)CqJFvx+G@J$+)eX>YpZ%Y|6R64
ztlX*dCv<^JwAGU6jZ1o_GI_XJTUA{4EN?#ii;WnRy_Lsw_n2@xE%%TH?{}~yw036S
zRL7kVwq!jyjBm*az9oBUWj(>qms*u5i^t~66PnDIOKiR@tApkZJ+;JIv!4uIR`M_K
zLD>pXpI4JslxVT^oGU%&N6H@?N))gJ7E!m>&Yrys*4Z5F`S0-j=7Kv*UY2GW^dz4N
zziw|-QHfDJwn;^;?Aa0xgz7>+d8b&IeLz$fHX^S69a6YPnz9)M)}F<l@%TLBp2cGH
zQ`DZtHbvP|zh|+nAC`v?DwYa(h$vt7%iG{$^?v6mnm($F^;k2=9-0NHN&0Hm=c}o)
zImOR@waIPjhFQ5oFG&qgDt+<lMkc+wpVhqA!{!yzX})={Tk|xBY_jHg+upEpho2lW
zZx(J-)>!D3-J+2ABvf{IUfCykWuG=t_E{5UpEptVrB}B5&vb#iFzVd-c|{jS8*xDg
z+lO8l)jHBiYtAKBWWoMB<G@XfIk#RS#x~KG8{epjF^QYVBtvulbRHgY{d})M3<$d*
zvLNP4iP;{OZ}qbdj5Gv2@kY7zRHPx+(>kjn1d~0?C;f}%lSo54=(V@j+_PG{BJ`am
z#r$&zptLty&a(BP5>y|uigOIQS{!}<9ffT}Yqt{M6x{p<pRV2R9DkWD8(KGlSP!AM
zt$7=4G1@)i)o!%q=sX~Aorkf!93c*0I5-=i)&IrTGV>PrDmHZme#zi}0{4Ff#_p)E
z*o`6X-fFF?e}ga}0J%qGK@eG}k65%}WSq}rWRbvhw4qkPIp6@#CA3D-8-<+7jkGz+
z2gNezucNM5&FsT~@y&7;AY(xKW<?4$PF4W-tJmBSweWZn*f%U@p+m#G+Y5|Lr}XHe
z0E`!EWJMa16}C@E8gp?BXLAXZ*{=|lK^MVvMarlnfV^*-o31*+=9{#^e*mt0593>5
zv$>((+z>fIAIWG#AaA524Mzr5`_evj^d4@kyyM14;C16*<v4O@`F}~;MsFjGCl_!p
zALZ^tI>I|+NxBivuW5pJ#))Y;<B>$p87HOHdus@F?~IevYv9j2;}j$3ow3w1Gn}Eu
zE;H6w5cQ2c&3JzhY>hqL;3<UeAf|=D`){QQJqyzNufejq&w<MorOPn9;w-|%{WYxz
z$w#C(X)UEmi+CL=qJ`2OX@$~N5G#j67!SexXz>$^G#r%k-(JT;ws@-E1?R|<i^PmK
z<;U>~t-X$gVmyOyhx-*?x5LwiEbxZ(T^OZ$20Q~AttdZ|kEH8I-Fp#3&u>?Elg^tE
zRE-F$+^#wfr3c`C_d^@E4Eoo+9-;!*yBmFC2U9<^Q7*X`lZOWMPX^5tgwwYebfG4e
zzQ6M3u5HUM7$@=iH&}O!)L2G!tz}ew(g?DSU1v$l5kNuTiAo!8ZR>_0bONsv!MfFX
z!COu6<xudiCKzGx1$`4eVBFl+Eko!LULC-?X5FdLHc*>w19b{W8UD3xn{EawUyJb9
z=<j2Duy2i^hkC)Fr+D+&Er$JB*kI2>B~GW8T4J-FioVBV8Et%SQ)M=LonG1q=WvjH
zEO|PkRLRprf@ibuI<r(qDX#<iz&lHGaPS52;5I0$;dKVOD(q<UdSiBsgrNUCC{OXK
zux;;3qqK%H;0}<AvS?}<{T}rCi4o`S;5!d=)@EMiFuCP;$lG^^*_SK=Zd6isry0;i
z@MuhNca`dP$w=THZ_`3|cd2AG@}{BP-BY^Kz?g5{eb&13;U3%zF=aK!Ls!rKvveQ=
z4?yZOm3`9FR*xP%Rh<Tx97g;_8;;bZLY&*=!jv1M(*CRA(2bP6>*o{h50*-=8>`t?
z#>Ha_#69(=huuD<mgK6TH>VgcntG1xNn@<%_bF9wF$iRNBgXuMX+!>luicSmjXT79
zb7HBs)#t!A;3SmTcv^%;wh9=7HXjPd8rzMqRhW|FOvw|#RTnkmYe0YU9T8bbRfFh&
zQ0xE`D<D~~`hFXmUp|6?3%g<t$9ig_E^laY*27<SbG{WVtrgdU)VkWzyz#NreF^`i
zw8;--mZ4X*7vtc|cA+RbomYFgX?(AoOPneD2Be>PU8!c?N)qkfmZn8YHPfC0>}OsN
z)Bn|dP^Q{;Mpsy4rEWnF6|7a$Pjk_R34YbIWg{(bRLuxQ^M+na9JoEap(`P7;&mf+
zx=-?k?qP=hAj2#T*uxC%O+Mre9cYFg0PGF*unfH(W%Ayuc|(~}qu;pktWbQ6%LQCe
zrP~-y9oXv+$_PeAT_c2{1j;<ryG6Zmo(=Ai(MFu}49I>Ls|6#Y>b4(&t6iEeB@qF8
z!fX}PBT?NNtithNVF~y8)zNTzuhPAaRbj|P>o0bSx@i4MeI{LB6pd6A+~sqMvDmVR
ze(EIqcJGt3=dME8a|1|k&s~MG=MCUNeTlyzmu6wVw@_6@8{RuX8;AQWGZ?HHND5n^
ztB?72eWCO=XCMrH7viIsw%11#Sdj+kyWX<T*7pJHz?!vksq&)}FoIF3=feX>?M{_P
zgqaXxuhEJgD0Nr$%UOMdS)F0^?WeD1!mT;*C}73+k(R7{0o21%8xPa3L(Jtzg=x{~
ziv1*ew6%EYPBeBn8%H<EvZ_eK*dcblJ~`w*sA3EgftzBWt`b%pj-%XElRg@Fh#fIc
zGfP-Y_t81sH+1o6Mz{NGp)P&bECKfwy!|!HbmUcg7MM~L_iqJMDog{I(O~#juIG_2
zAvnbLHdk57@5T<3>iKwO5@dHn;YDx^m+DykebH<BpAO}6UZ(q4>0S=BQW)vJ+Uu@t
z4&pi_6-^5XKRv<LAb;3!mX!HKHmFiv3SmF^B%uDPEG*(Yx}WuA;D>G!P4s6PIv+&@
zYlP3%K5r?FG)w?$7ik#HM-~tB(Mic*<uo+)ktUzGRG$beTSggftXHQxg6exi(sWOX
z(qz;at?~_MOT9s{oIzMxwWQ^?T+?TnW~QwfK`>%BJkm%LHKjdB*&S3)U-hGO4gRXx
zi^7*G>`UPY=Eva&Qy`p%Pqxq4@Y#IEx9I(vrsditVE%zX`C>Y%6-sNDgLxlJF!&5A
zThD8_(3gU4!Es&f8VVgL4EQr7+7)YdLQvkRKImB93FIb^3?j)%n62a1fXVGj2I~N1
z+_Vae+yiVWX;95R6!uqPe+pMq7=AbfnLXV;W3?ai`6-0j?<l0Q6dY;}RiTi=-72)D
z(4qs&`FwZ^q5(<WzSmRiG;*CGIt#IhV*A0rF^P4@mLz8Iqn`Zy333D4f>A>vy5V14
z0*_X?PVgAkX8a^GL{NDFv;iJ(OIzhphz|3Jz>N+n7Xlv=!csTjLa#fpa2#<ARjvl}
zB6GzOs&>Ejr}ay~uIfnPObT06XrOR#8UDD60{$3vGoPdG*4v}J4U?XG(6gFO<GA#F
zX%XuRWK8&W6{PN26;wehdS{UMYo%)+pjzoWP6g>amx7JjDr~z?dhc#sYt|80H%fSe
zgf$sF0Mwr|!(ak08?ax3;a}xr*mO8T8ijtxq+zS6T0`Y@PqB2!Mv*pCKFsBw%4Vor
zwVgEB>h@qI{lI@oTS_${9#nUQMQO_OdEsDynql2%6@-aMmF}hFwsf}f%MCD{L^ncw
zm=MtX=sNF#;~K&K6R74h3Oh0B*ZfG~KnlZSM5TJBh|gh?{sw7%v6fTkv}DC_eoo{z
z6{JMB-%M@uF1S?uwbIZH$h_a3`U54m|7!i@09Z9=j)&O4KZNnTtOpheqi2{Sh0&Dx
z7cl&*ZY4In^)bR)ix=5iY<YpEpcCX!Smdo=Jd1DxRIPanfZ1pbV9rez{-K)&J}TEN
z_D|K;!!(VR!oH2)Wnk`<WpS%URNxw|b4yw&(Ta4<<u50CxFI}dIjL26%rdByHV?6-
za9PN5q~D~T)`}{FfoP~~#RB*!u5CIh^OJc{eJ*4f{kmAfP3Ab8kl%r#A@kjTQ95G3
zI<E!hZzof=FO-}M{Diy+JAx5<mM{<6&P;=MV3k{k=<q&Z<6HE8P1ADiATWB)J4j!(
zt{n-q4yg7Z3a_a!i9&IArr)v9uSQetY%q2k>T@ay1DGDU7bu^5n<e|{&_9b6hw@p6
z4!5?7fcYNiH=vqG7Ps}lwhRT$sh>cJZ_)cTwL62G3$c72^^U8g-fm#BBys!b>Be7C
z`w}lVwe3C-Yc2;j31ZC!6jo8_pW~>#9?V)W1d$eUEM}7y5ZC3aP<=Kg)ec1UbFkD7
zrLaYXF%%9XO0BX{gzuTWc#d#;uCg~ET4ilm)BEQ*tg<m+kknI>XOa3&lE<}uS(49y
zTLHP|Q3`9sH)yT=emK?r9k6yfg`ZTIPobJjuy!eh#VRbPa36*8r;s>AW?u&8Gm);N
z@Ee8Ea?O`4B%5L3nS{BeYv0h)11Ss=#jHFDh<}wA!hQ_e<QI*!s<j|C{3%4(6clrP
zp@s=&rK3Hoasu@TbOR9z<TybG1INjTJ=!=OqbrP-bqIn#QLEc`P%a1EqfH~6{{|WE
zF4|}tG?Db9-~ABWz&306xC}VlT^LNP_<e7cJrdanxsUFH?Ab<Dbtf69u%{%0>~Y9Z
zz~#v(X~~}A3*2G$fchTLgSvw5!$X^ihI$E9^@6P5jGP3w<|p=1L3Jlg*D$&{hh)FZ
z0#QF$UUQXW6tf97(W%XNr%K;@2=_B4j@BDt(5&}rPJ!*t{G?U=5=3clhF`48P<vPH
zlo}4Qt+^X)mDp^tA~dnR=eJ&499q~^ez2VdCYsnN@nGOA7DG46A4IEDPG?T~n6|q|
z_sVt5sNzOApCM839W%-vCv;-@>SvD>M%g2UvA}*CxSyR)&ja=y<zXES+6lmDd%B>b
zK|77vzgVX+Pr^ND2tDAZ)v@6L_XIz!jw{x*s>Gpu89YA?&h_fq#oAp>Vr{6f+Zg8*
z>(SFv!4-ux;@sku2tEqjXDZMBmKWaz_$J`sU1|3uUKdK2?FRm7PdeJ~0UV)sxEvte
zeSxb+!l*#iq^nF}T(aSjQ!jSO-*&dKun?t{<H|_?Q6>*7{i<FLLf!nZkP4n!A19D*
zf}~FVC`aN{oBeRZ5Z}Fh^W9tZFg544!>XoyJ?)=C*X(UK=8i5_H<9uymM58)#$s?E
zPIo37G!3Zo_Ku8t_+-9T2itB`zXSFw#`d8`8LxdqRd)<)T3zMy^vwz}_*U_u9j98Y
zb0I!Ce4Y?g?}IMw?{5!lVWHEI;N1?OtCW&8)$1R(Z-m<(w?~74AIEWdqmRRt^tKK;
z&&PPzc1SJ`8;cw9fYxpwhi_XPo(bIV<o0mBV?pyEaF1W;IrnZDMBxPSz6DxKrrrvR
z!w)PDwVe3=|IqsXY{5e!h<|Jj{2X|H<&kb_>k`tT@>l490&Mb!h2L2nWlVuSQolE$
z8sPFE#)-k+Fxvd{vqjUx5PYO=wMg9rTpcAFQlNZT9R|v13lzG$x+^3FN?Y{Mdx?ez
zPmPyt)`3N|{tTT<1kMLbOq8JVGWffQmww{JqUzSJK_D+9>p6n*u9)=~SbP8-*t$so
z9i%6wK|iJ?1<=6;4Fjrt9<^t96O;mn0n`Xq0kp~}K7cw=VSc(BNuO5!gw7YdNrBIw
zw?&YDe4)4xs%PO`h0r&?9(&S5MXJun(1|;$t{S={X5g!(bkv-TJ?G#TSb{fs&7lSE
zYkJH-SDTY*q>(HedagFtzPpist~M_O!-VhnOqlRh+>eN>H|qJ!1AdZP5ON>sPiq!t
zv|il`*@wcSjJ)|0aOG^wcy@?&i`G>Q9}NzTo<&NRAcwt_cQ36DM_8cQBp6tv)iUCn
z)`&n~5~60zAFky-xu!*$HZ8h+(_-5<tsvJlZ)?JA{S0-!sY&DRLFD)_Z)Wguz~v)}
zpMMX9V3TH9Mvq`Gg;0Gdd0bBtk2@gdXBx5v+cpJNFGAK>R?zy!Ynvk<L>tlylrAuQ
zEm_SmmMP~LY*A}Ldvi{*i6!qITo{blko7Lvix7GQbKF00OU*lA*D$Pxe?cL>Meo-%
zE!S=V^AZfTaVEMfp*Ls}?W-*Y+83yHHwwp4sMZx%1@@V!RqIXw_Z6^4=UpBbZWY7R
z*8ffg`eIscY}9WE_&0Ej!_v=7oo;pvf&2`wl~m_msL9QGpO-em`4mV$>wRH|uD=Pk
z)8Q}e&^0?Gx7uztIG+}MZI1(nLiY2}H+EKiG;p8!bxa@Mma6WHfUA$Ca?L|ashcK7
zu~8Gv_NTN8*y^+4RKsrzITzZL6sd3R$Ev#6jr5Bcvsl&NVONyOZ+`l)MKrP~Hby-n
zl|goV0nKjjPu*QXEsu<BmTqrn&bkrM-YoCJ%+%ga`GXOC>6{JdevBmfAGE;zJd8fy
z2kc*lQrMru8!8-5VJn5<IzWkU(fc(`%eC{tjK;uP{tRgFoC?b+w5N6Ds|kmVsI9#W
z%t2skucL6a3b#{ukixKPmWKiy*9b4STpq&s;bXzYzuuo>FepjWYA1sD1#Wa^fs@j?
z9u3v7R4+hUhtlr?<f7}U5ck72T-D!0T*wm)ei6h6y!uF8BkGpJUG@47Y~@3!aV0Dx
zUx3ApAFc4p;<X9jUH7&%TY#@ZvSu@d2UK{ELIR2E>98qkmjZ;<R^1-ra%Ke8dxkY$
z--K%dI7JCumbog!8EY9%B-trUlMnJ~axglMdp^Je%Vbfk?eNyy{5L$SvhOxV`r94p
zbqwgnT+^BA+`{45`wiIhfogxF@CJop;wyz`l{8it9+l(z1>ztfM~U?Ssj=q?GV>cf
z(h3G7!6}HFJ_Mj<UBl@MX$7xtsB<4kXMeB<t1yAW3JN2qQE+32kLDx3Meo-PA7W*_
zUo*U`mGyqj@OD<#`!!W_P@9_{7<56f=YVD?TAs4yY$enuS<2R`;=T9JO%KacjaYoq
zh}`tBJf&6Wk0YV?FM{)rsWs4V0q)_74VEm^Ll3*$d0tAFJ6QmIGJZiy$#}<onJw(j
z*@~2Ahy4ZHo%NNe&S<+?@GcNsLrUNA{zmYbN#F~O-e(lBeP84vgJ<nWfRdnIY|w3j
z7{!+ubkArYyK{PJO3%oKj6t?MhOWyzw_y81&8n1c-W-SZ73bkE_b2<!n5Tft@1r-r
zk`Y($4B@eqzQ~t20N8FiKb6u}aA)B1(m21OgD?E~|Jx}oUhdEe+s3?;(*2ETVjD|g
z5p3EHeqd%?0Xi6~04QOHxgRgLIb}V*0ZNTJ`F$1C!$ri<I7LN``gjmfjXHQNh5k9|
zTE)mzFjbZ4%Iz&|a*Q>ccPa^>k{)6(8Ed$b%#MHMi}|>MR(j)O&CU3+V|8quU~|@r
zmy0#8(P{J|RjT9ZOI6T;^?DU_g#D%pI@I1up?^-$&aQVJ$Dq(j^(dWE|G%G5+d221
z2-!Ke3jC{F&^HL~#7xFh*c7`wQGFJ89s0cNX?`W}97+k42>k<JXazD+n$7ZK3^aZv
zjlY?=>N9O};L4iwyNbbdDjaklc<+!dp+iQ?Ay2Y}-2lmT@eX+eUUSI5RggnIP(cp)
zNd-A1&5#=;A#+9tp#R^_2+BV~Uw6egp){nqM$Z5gSJ<Plq0J8jUM2V?TJ82RdJmB0
z*#t*z5@X>z!Y*T90D8~_(005rvAJS;&w~KDiFQ<T{TY=pKo!lKq3CE+{1kBcN+eEV
z#8ucO*Cow|QDfJGf$ak9iN-h)xc`6H=#<hueRMPTRIBn_@O^YUcbS1#0-{k@9<J9I
z<{rSj=K95p+aXl##@v*fy*Q_U@kbb+4H;(`<FjI1+J6Ve>LM^&DD;z(wpfJQVa`Pu
z2L4Fb;$T}!ap#V;@pvCg{N;gR&Gj=hjb`rPOHlq1uPaer@gNh0yUj-QH;_I1Uv0jK
zA42S|gRx##kb@RBTz_i3;igmL9m|UPcM1l)3r&kcE@X30#A4!skd8I1(nuZr?Ep5_
zdvGsMQ<rW2uC}SFf*Pt55VX>7@NF&NRG@5ZP+bOEF8Il#bGskgBy5*Uje>EzTq@RZ
zt4$YieU|x*%5d~RB`z6<6}n{eY;)cC9)}H8CsR@GcsACsQbt#A?BfkM5%z6;;1l)S
zCX*o>RHhil7mH~JR|M6X6}1-s-K)_2rSZ!+9;5jW=`orR{fMsCA(Ng9e&D%tUTv~R
z45|-cN)u0l=*B3UGRAqE<bA9rVAYcDV$dvNb0*Km1lePhsw;?;Tw@DP2o?n_`tjIl
zZS=k$VhKH&h{q05QQx4<###|03)|TB4;Nul_qR9~wrM0n{q^e;{Pk=52FKzyb|rdm
z)Vd{Yw1kxX4PAP$f3lq<cATXzC7j~F2~+lINc&?G+IharP(R;JDg9OM3+yU4_eR0r
zVEB&QR=Tl`PPiEQN2$Vl{e|2OwDDR-+FW|q?Q&QyH@G(`ldm`w_&w$~cc0zu{}kA7
zCH|IFu243Ctpj!3Z&!A;F}6FV4}@UMUv_-ZF7a||=Px@xlvGQ(a_aMj^-1Lo6Vc>v
z`2F3u|0&pR_&sKD2FnJG)iAYZC(m0AgFyOC=ms-yA#nLhm`1Wb`AufV*6BYTPKSTa
zUd=9WLd->kj<c93q8x!(3|QxLZz-u!8LppI7n0QGo{;!G$O-tSd@U8d#{$sDz7;X9
zna0SiROBlj-%M-l_kyeB?gN`CMQL^fg1QT}D}ohYb%8Le*&4KUgHUlvTj1FSj|c9*
zdI%TNhC;BfTFh&vCE#2!-na{l#~XY-aCs3k_ZGF;u9KbIY&neILl|%m8fb|&#Xw(s
zC?Dz#wPC39!C@TKz^+P6q)z=5v|G_^idHy1n`?a}2F(V!oR>YD>n_ZRK+A;Dv$><d
z@UQZuA>4^TP+rDW)%{>lzI%Cy%Q=y1gGhba46N@NR9^s(9DUagd_m<GP@WK063M<n
zWn=`|Kpv3|2AszN@AYB9;NF9|aLB9Ec${LlIV)1S&8Z)j9xw@lv0{gO)1Z(1sY(OA
zUEURkwqe!mV*~K-=IQmwR@m2)AG0oM1onOZxb=POi3pBG@G@0udFIAuItLyJp~Ajm
z@q)oifqmZkZwrc>frIiHNZyX57UhqdDPMh1_{#KNG#$KmrVh|Fdvyid;&L9YiK0db
z`8G&B&i&OR15J9{TBfKDs_qVb+;jv``!Z^uMuYvm*!@$w7yCT*_fIlv^i$y8i{s6U
zpF<e17f7^k3noEC5$+2H{{f<YJp3a0ki|Zpx(l?)t@d)b-J(x-T+3Hc+gc_dzvLB|
zmkN&pwv+jIGtFC5fbAqc(JZH{T)+2JbP#-Ypw!!j+$Q)c4<lFkmb%q^9cGphF1KOz
zwpQCQf^KG&|A>;#R6gXLc7*&OtK5wpeFU@Z0f==?f!(WF&1~Q=(LG3r+9g1}kEU=Y
zg+o<npzs}q@=4II!>HOdU}`2&xRt_e3e}s@r$na#GN!~DR<nRs%_Vem>CeK|Q3j!Q
zv{OcseerVVws{)%8tr5+MM;gew{KD)tEZ+V2UEerR8TURg0?gRRCtlXNEP0sFrC6a
zI%zl)eYZ*H1#LPZSEG}LJ0T8QsW$1D;Zq<CZLzO6X-~NFhE|^+V#jWW9mVP)^QSk(
zR!tAFdFf!7T6G&LZlW@GeH;CVytS(Jl(1F%QwYk}LvBfb)P9EPXMw8yp2GDMtPTG_
z!)v@)&OSoJIJKew#t><3cui`8>Z?b2yME2trEI0@i4bdcS^iRW!8TK)=6?dHH-}_<
zU_=<<LFGgcV>}|4BM`dPI`Gi8<2aGr*tqhzvauSan)u#;s?_XCPmTJ+E=%^5o`xw}
z_{?S@UAI4-LzVd&6rYXwqs^fNKdHbEHWU3w0|%dtLHbSpBqV<z|8p~cAV0GDLhw3X
z|H10D8Dsn!a82@`V88+pm@GpX1XNP3HP<G%OKpNHnVK6}m)XebFL*TZ=~mhNq~Tm~
zLMz}uHPezl0{Re3S}$*=Bq`D`(yn@(w-2MVIc#g2t;1MbPU_+9e<g(bdD(Jut}uTA
zS}Tl}lZU{_w!X;zQx0Heyu)gKU6jhVh6ce~;C&<H^LiTbC0O;yZy`kkJzVCEzB}r*
z7<HkwlH6`FY8YwWXA-OWBU8wKulj>0*Z5P;*@$aqdo6hvwtRs>1MKkA7L@$VR(aSU
z&X!bDex}SVG|D-+%K=@r+_-}^LG=$%bYtVu|DybZj?*oV*Z+%hOgOo34JnpJ`&A%N
z<E!3kGW+jH<V<-DIi0)7Cx&Yo6}zyd*nJwf=gF-6Gmx7sF=Wl`aX;;LH|J74pZWbI
z1d}~_Wue{@W`1cuLEmQI;JN^X)nB1q3GzKCRxdCV+<4bdZVC_Q^I4dk@mFOqMbGby
zxoC`Tpr}Q`!09DawAkC6g=rr)1=q^vC&<0L&5Lt3``Z9Z%*a>a@kXDxz0oJ-jP|MJ
zDVAEs>WFPiJ(q^uv&u&jmrJR{H|{KJTqS%}A7h3dXEbe??M4aO$<VGs$l}cQr@9aU
z#L_t{sQL?JW#JYtJ{x6e2g-5zCmsX)Grrtd-|Dfncr;VwA=K^8BJK079=m<3$C=$v
z!{b{$e*0D*m}|9f<-xgDdM6xWPWTRC{`NMB9+g-F%)*>$)`0bp6)n~PvphGMh0XL0
z7;$_V$66TuG_P*cF}%}}9DV-*EU`6Q_xm_m9Dap;CWqf>pXu5=`J4^+Fo~~1bP|2Q
zcMFRVt`XBRh&7VBMg^&PSOw{QgTf&3kCK)HRk6hg9d;t+w>x6AMIu4fxhKT_;SLF6
z1);hXdG`txdH43uxz`Vb0inafui5Rfy>|!Zyz677%3@{OF${zZnl%s}LGiYD(M6g6
zF%Wi#`F97xx<c$b+J8}N2u$DeI)N&j5+85#(dkBpOn&fA3crUH+B`V~!@)Zx{90Bx
zc&DYcp?N?y{{hX~NgW$zR2sbF=&q)Hegb^=!lz(9UwoPX!*H>%(8c7S>H}ER^S@6H
z2I^M3d%)kr3)tbTAm@KojrxRC%wOYwpp_a`JOkL$#Rpm`U7RGij`h<$*h-7jZNL?}
z+36m(dv_lSw#ynGE|>{y1N;%A4-#x?<@#1?_z{Aq?}GfJt@O*$OMnM&#-g!UbQ{L_
zf%2N&;=2uEWif<vAkehjL&<0Z&*yEZb75i_^f^cSUdJPN(9(6f-I$7$oK{~?4GNDp
zq=@J=*9D%F8PYhD+`o`k1O_ZZseI{1avX7u*5)4JbFpHo^3TP3<e!W6u;*eywnG-i
zS4y3}kK<&MKeu?LRG#(c7O&aEz>fCd?{)iDQRmBA!oA7L9qosr-YC@`xASobxi|fT
zwmp|=B(3((o>yYrZu2<V!#(c#Ik^s8ol!MwkIkJeTx(Cmr=mtTE7#cb<Hvyfymejp
zG&<;Q-;KQ99zX9jix9Wo`*TPRpTpmfdsywy9&XGi79tHrLnf7C!(TFQVMRgo`WUnO
zUJA8aGv6BK24QY#4(6|!W^=`Jt1yp>=k`p-F#00jkn<E0>oR4Axm%dSb_a83rmJBd
z6y{_(<nGK~hIvewgR#Qhn;CByed}+CuAIBSWezoreo}PE1*-jl%q+vaAxz75U>?dG
zZ<vpTc`Oa);mjh#d<e#$sXUs|naX;c;?GnbGcOd(2DUSm#|^$xuzus%J&|clu!hj`
z{r|<>=ti_?%a&vRvx_PJr^N)u=Rv)?Q!Z$=|0lAud#kwwNx8o3a|1#ZgL;A7Xg%?&
z;ChX-7tGfqFl}&ew4KB2zR4OV`iYc%TPRcp&L_n8hoFS*uMi3GxLs7qrO-nsLe)1-
zgYxy%HgO7#zNHZD<*gK~(FN}X!xY(f!}f|CR^Dn1JT;xcjY9h%A#3{qO$4gli^4n=
z_NA~=g@Y-qRbeuP4HT+sCo!ODZPVG<jf*whWk<CHkG?sfuV`Y_fMa0><fsTTMsB9M
zjTlhzZa0is*+Sv=1zHCc(Nlgqdr=F`Pi>W}?nHjB{lQ~MP+hd%9)|m?I^5B5<9ujp
zK<A!&D(M+;gz|cf&=f&_jOv=HsJH2=vZbc0?oz++G@o3iAm&@6W!UDLpy~wZ9e4k4
zT0>GbM)Tj|OWSE!qG5#HTcbbqcfUIFIyql!w1sNji(0F8hOmA1le@^l4G>ISmlx__
zLSrR#A0F6Vs9$JhFn9?H^%uojVQz)KO5_Gu^h`yt@<Irot9|m3B~syJYxiTS{{~sX
zl|<G&Y}drK^bCCll0}wnQaZCvO~N|2bBjaZwN1(*D(JsAgu{8+CgnU~Mgff#Mw^uN
zVAKhVk-eGxsN(DlN($|#l;4Erf4d-4B==ZF(zRL@^(cBIS5cb<sI8sh|45lt)I*r@
zU?%XgijD@uzhQcim|_LgpZRc^qH5~2hl!^^w}*+3s-TC7pR1sUiS5{0+5^RdRnUR@
zQVN5l!5${w2vjv3ow<jJTF~=HqkfIiV+E?Oz6~~g`D-5a%I9{cmz9X;E=p4EG%p>g
zFB+q-;3!xt`_h8bJ$I35sb0dIpc8}3gjLwDjs{hig~%MjA4NWfw{|04c89n4TrJg6
z<o%f2|KAY4RwtYVW`i*A0DUBkx+S*AyjA`YZJa!vZn5z=)y88-XoCVK5kDTM+jtxU
zviekN(s(=&3A5w>ay&kb9L*2MV=1a%P@T3He!)UvlGI;7+N@x_+N<Agrpt}V`{9uZ
zzgzvbNhrJpVOyZ`N-7*ezxWF8unPH$u^fRM=PPUh5rw~7;p6aZU!h(1!=B%-%}$7a
zJ(5!|vO3qb<r(O<Zn=*d`)5FQ=VjgUoG?2BWrb0<XyEa0@L3@Ahy9*K*e?h{ODzal
z=+%FQAU8eetyXyWa15&Mf}}A^W5|IRc4KM!Ap}^Tx><osw9=J>YIJx{BwOkDb(~=P
zfud%XoSg#PXU<|mH)WaLm7-^2G^Wt#w*y!Ii+oGpIj=&uDkG4qqO1_Q8s_2r2r)wj
z|1=3hSi$~?K*jl4jm?&-{qJb2DutjHA=#ugKEfq*E-%-v<@3mzE8jt=|FI##T=}Cg
zCxThV%Us!WG400#Gw{GJBvgL(FSm(i6twDl;MA?R2*jo)^AuUjO=Ll-joo(kp4C!P
zz6@RGN|&8hzu7_!Sca})%C@^qW#WRtec0kScxsZk<06PPTOmG3q3TpP!h=i_RS<oM
zt($xLc58;nO)B1HdorM}=5?oP{96RgZ?)8-{tLPW)M{?f{8G!7USG0&oI#_%?dS@M
zeo*zA3ED5gE3bqE^HYT|pMcrS%lvc<82$}jiE}se>P(*LyL)2G&JfOoUUeA+b$8g+
z!Qj)V;&WaT#cfYj_HDTw?pvh)-jL`C`?svznP|3Z%J0KLgK4!7z%wiawnFk#&6zE=
z^iMqzo;OjPg7I-xU<>yRws1cNvBLH(H?~yr@G@}KmoVjyueIJ(PXnQVdWTPJ-fmzA
z)hoejNVi45h1`zQSU6oXdHcuWnx?;-MHfrJ&tn6=Adyo!H?`Z3QDn#S2--7|9}Mwx
zzHM8IG_<S7Lf3KD$-ZWW&31iWxg7d+p*#Z8@AooIe$yfuR8BvTi=w$|`0BOsHQUNZ
zo-fQ!tlG-dK`aKpr`9I{w?Wo{Su2{@bR>jxZuPZ?cyCsC`nDmOW6<%d+`a#f3_-O{
zG)0=_Njvn!!4rH>T%Qx%u_t~%!K+j@a+hTI<}Qw})H3*Z4(9RKKvs!O9&VEL1l7Hm
zmvvEQtFQ0B{Qnd5^la0s?PBFT=F=V?ZlZ@;z2iDDvemc)#Ii$}<$Uw6NuFn(=lO5v
ztzfp%LFP)&u%k`Y4>N0MT3!1;=s$<_4gZ5al##BCWQ*t)yo!_G%S1GVq<mOwcU`@h
zacqYV9v8^8|BgsIu&OL%OpVC#C9@>gRHs39s*wNpxqEd*nCD!alT-3DZpY-O>IfD;
z-H4ECZS!>la%6ZLqTb(z(1`QjhR`n7z764mg!a|;i-g+98nPfryq802FKft1koXDY
zHi~wzMu`WBV#@YrinMPvN-{|FqHIWQT@9Jw8id&M6m3|I(kw_EDT*wzw}EZDF@Im|
z4+F9s1gz$@nF-Dfq~MRJF3vR4Dvqdhui%n!GanvMUAq0={<7TO-XB^1DWuNwCoz}X
zcC`ITOl^mwy(KT}TsuM8?#OZ_q})M_Cam1OAwNNdcg#nuFZ1^9d_1!^THQ;C4SxZw
z4lLia&)D#f>@zw1Tl?hCZggS=g?pI9KSJWiLPTFLe4Jv9m@a}?BdI%7keZDuNbhC}
zgTy~dS`Jjj?j#(_g77rrZ+EolAZP=AvZ@8d&;8+F7RIZ1wKy5v*%Z8IKTkKpnLqsd
zV*A6tFSkGZ+r0hZ-`95dHwcB*Q&Ff*<1u{ZCez<J{Hr=2x~#?N;lOHoCqEb%k7M01
z9}BDD{R_L~{blh~3f|&jxmeIS&~WSCbKvmjKqIyfhLPI`!>EuNez|r(3x<agu6&ca
zcBP8n2?jFC>Ryl(3?sy1iQn%B#DMGmr;cDmA^oL8g_G%<9;eWz78Hi>23E1s!#-of
z2iRwF_)z;y*N)-yY`BL>ye|@6Gl+gtxEW0~V)`@08c98_g4DdLg6UmKtcZV<v>Z4E
zY5U>|EqV=c#YzmEZ&7ey578AG!NBjBn%%elgmoF{sd%9S+T13#kG>ziZ52k2#^iUF
zH0Qtf@_h(~=WRdazUb@|o}cV2_6XGZv)3)gy+p8`y?XdM!FGE0v(X<FY&p?ZJ9~Xw
zu${gBVrQ?v0S{h@c^~mA<K;(u!oEP&{!}{oPLRK-y;=z@KVcY;=JD^l5Som2#pX6L
z+;-|ZSb8Vmhvj+QS<}6jbhm*p1%d)7d{#wPVmF4uO2)y_q>^o4$Jxe~Ci<&C$3h+M
z%Gxm2nl3-K@zye3brK9>%rlXE*;nW=z+Y7g9}7jh({cCv-_o9k6<tZCCt|ewfPCB^
zm*3w;ojGI~uw8h#-|mO40`_Nz584H_ErRLohm2Zw8k>U&MAve3_Tehoqjr^SG3e@d
zL1`Ua%qRAR*Y&+un<ki5OIWUQ*BtncD;gK0@m37;+l^=K(%K)<IZW4ZGqA7K0C>Mm
zIXreZc{4=2irevY3c89rMg?8PU7~`n;{KV!APL%4T+#nOU&Vb6A-k8X0!=)H`qjiE
z_-xw5reE9DG+g}#3~J)M93#!FekE-8nN5-3fYe>i%R}VC4b19o=&kKMRNV_U-C}&v
zvnfGQB4D>$!;_bK{&;!S&0!s8oqU_!r30?JC*pr;m&=Pm=elNK?u!gmlSZt|GR07x
zHgH>LrMn51n#aJ-`2!sw@)3}pQU^R7nV2K~6XF3gAlU4n+W6W7CKW^{6`(d4t2h(=
zkK*}zq<^kl`y+(!kgi?;rQhY$j829SArcHd3)}(VhDvN21^ylE9>G8Es;K=W*lGy>
zVLdE71Ke|@41Q+1D%uFE*0hU@j9EKY=B5h!?U-w#x|6pVk&3_cg1kDaCpVch3B5)d
zb}%~q1+E*6aUTd{^&6o7fv}aAyE$630C*CFni&)>rqKTrC|~ocJq^r_VE8w<JA1rx
zUiA?CRJGPByI=Huq;wys(|EbNqqo6iil5CXc4wh@Jk-N^nc^N`=m_n6wL|?;9r3s5
zSCZ7uw^{<1K)6E!Is>a0W)09y!sxK&MpNN+h%Kue;r{3Vil*ZUNqhnn!JnpMi!fh<
z`H`3D=zX@#2!`ng%=dw9taLmWy@z7Wec(nzuhF0ESxRA$sI`v)T?u5jm?X0wFW0Z+
zBGs!~Om{*Izoat>9FCiT-1Dk(1LT(=kJfD^$t_cT6(#<b&vgXA&AjZEPup`O>RWd%
zoU6n+w4?<^Yu!-jgPxK>@=hI4|ND_$FL`<APfg^nL8wvk`;;7*lfPFIPXN8e%XB;|
z%nLxT2qPWtT(hD2Xb}3=@iBZdD0KKyeSC;J+2f*%&Tv8Xk`TEv$JjckJ}tyupTl(x
zs?;DUG-ZRSq-p>d{hXRGI>Bca(2wgK;=X0RagRpb`9O^{uHVU=m|~af1mH)>qtQlG
z<VVS)_B&^clB(wLY8KK!_NQ!K>!I$0HfT6D=Jf39RF>Pb(fHUYIfci@LWLF2bb)VH
zOylg><%Is@9f4=ZG|uh;E-zwOK7%2;MqY1hpMc)yd<MjPRIlXaPKiAXM~%Md{R_kz
z{V~y^KjP~gN9|o;s=#nAbSV;=Hf-}#-WBy9Anb?SAFSSo#Ar2q3U3ml-HKS2qSdeg
zs@1SXHRL#&)L@bsr20y7W$f^rWZ8M4<QNM5a~w@1hv^6Vk3njP=AtWNS5mAA+Vhnf
zNq!4)l?wXnuNx^05?gI^=wAZa?KlZflJF5F%2jQ&#LuUoJAYj%u=9ZB7GA$XuPsG*
zENB}pqAZs1#BjJQ2hqUGhRa2gCM@p&p`Y(;#b+*59}00@JkE#e6CrX?j*(D(HpCr}
z!*va+UkY(kbGX5*gOpcO$zqR-F4{oN?}y0qbI6bA&Tj;$I~g+Ys4@wz3wi9x!0-@h
zQF>pLiEJq>uCT-v5_axW$o3=Mh4v%e9f`CS_AB1Oo_8mqzZ7we=w3z?@5f5_PaNTH
zS;j!ICF3RgJIG&M0Nhux`*K8oVWDmX@C%aukI|n4?rFa{@rwN&WyVs)vIykYBGSFj
zN<w`lzE>p`HH8q~h^UV1APl$~q}muwee2-W-_*F2oa{N}W#!Quq1HSN?g@Bn9;WaG
z1<xjyIBHx)^tl|{n1+yT5rtrw2IW{-ZlZSAI=U0Z8g<D_PzMQF+X(axkX8H&^j~?o
zRwY@KTg5Fe3^jJ5;Mv5|iDb(amy8gb%-U0IGIXr5ZK5QWy~WnLWRBRr1vgb}pHNto
zXA{d2Vrx@!NsjH@9NU$7HnE%_wvrOA#(8b)a%_+1*~D^@*xHu7n`3)5$M#vC?Q&S2
z5ZlfrDOzJDxr;)zZ7Bo;CW5!%OFjrVcopD!UPE~KPW;F^u{+E|uL4<rc|iXEIz2HS
z$aiVrg352eOxuQu1=Y=gG+QqfHrz$pHO!&?z?_Gk%Cjh_Ml+zE8lC{S0?N?gr{md^
z0)4eaf7NV)`(S69@vINyu@GnS(m|Kfa-aA-Yf-8h-h%i!3u0#Y9u~vTht%W&lC%M%
zv83m_ejQ<p>o*b&O2=4KTxa<H>}#Bd%oV)$#tm*ozREx6t87_j%y(fiRqnlDHY4!H
zh)#VX4Rfk4Lv&r(&fFtqOI^9P0?Q$8ZCAvv@pY|+`7vI{sjf}=x~|F9RrSdK)F#6Z
zcGt_67o#@fH^7@^LAgxI{&^0*vOiq#VzkjL4SLxA=cU|g=so#z2qyjbe#Mv{yO@Zu
zzYp+gRCCTAmjLTGF5GJd-ywKq4EXiv8FblCg2%{|P0@A0dtD0LS?zoys+;wv3r=gq
zz8TfuDgK9G`<>&)Xr~k@>Se$iTSI?4+86j>!Os>0zZ=~j_)5Y0L!|Eg=;6Tc3SJfk
z{vfKq6Wo0j@R1bUM^XL7-{S?hY76{v^g!VI1W%T}PoqZz|0Z}-58%(E#{m!j6Y!L7
zz+Xi5$9m5f{O=aPo1>2bzbN=+wg0Q=*fh_d2-}Jo9f7}z&c&=Lg4dP;e;d6P_-4Ti
z`T&0yy&khR3qGn9@b}UGKp%Jo@aJmp4^chBTPpbdmcTzn&!MxP5PU>W;4KEHt_1#g
zC*Ys$@8BLF_)E2atM%8#g6~p$e~oU!zJ~-4i2(oR|ETR%z>BEZx!CFCO(O)aYY&`=
z9Y}qb0S|uv52PVyu(RalgSvIh2lY`^X>eM1Y#6Zv=fT#(v<`|Ij?#E;)$F&vq-TA*
zb#*~Wal^Mu<2y4|Z|OiDbS9fBb$o4X1TCx4aQ%?lYC2Kqcr}Gm3WuwZrf@NZL7U;P
z9R&2W&^ZZ97^H59{B%mmmzZP;!*175P{J^k0^4@T3t+1qjfN{g)lQ)BHwyOS14AG!
zlZIs_11b7Mdj_RBl9`B_%~C_^3angl44*VR*6`U<&QmS|($-j$oTa6?jlcgft60NF
zaQWos23S|CrsXA9P&8XxtPX9hqQIB2A<sRFdXL4#$)IW%QCP0R=@jm!U`F4Ge4|t~
zlzc|f8(n~4a|z4n?_tI0@1V-OQt)Q<=B2)~{MJ49131gLyHl+lmm1hR$EyZbj{=g0
zBXd}<A=dCCn&|5A2eo1i(ouE%x%nNucaU%TB?uQO+;1znl%nsZYs04ROM!13LH>}P
zPwh$?dOWDw%PCx_!VMH2P~i>=uTn4{tU=LO>AbUKGez%%e^Gjsm-!&N#(eM|u-X+z
zd%okUBS30b{~R{gu5<h~r|?HO!f#v-3c083$er^-&XauqJg7b<<i2ow?s&u2rSY=u
zJ#YM1z$XiD%JG}$<qcW*Y7U#TFs##J%bs6)BL}R(`L>!aQr92A@X~LAwBb|H$uXb4
zQi=(TQ|p{D(>rh~s?ix#{UPMeb0*AKyM(okIU#2LB%SnUsZB?u)4cvz!+RE5wt=cX
z5~AjZD?HH_*W4Uoi{I}~5!H7grj`E=i4k0;G^pAP`Y%kGLM2pB*|G?~E9gE{_umq8
zTI9O&Qcmy<qJGzRORNz)$q86v@9GWbx|siQBRCJ|)q(JE{ZQ@M*X7uIoGG>IY+__R
zr=A~n2k}VEO+xClu%2V{f{)|{Kh%oyi2a>BFL-@h5KqP2N`!6=1+UEuK9v*fNy6|{
z48xT_VC~BcV7D=5TiUgVCH_c8E^EKc%Wllc_C|JNOvgT7!BO=b><Xp)26=+JK<mz1
zG5b=kww1f^lBe3k>YM&nP8qpYraRp4$CLmCSvY%y-23IZ-*3V_yA9l*dhWh(4hp%K
z<hei1b06kj#4z_0n`*cY3^^aobN-a$^cTvv#FR<k5dXO2=a>=+zC=rZ)N1966u3#~
zm=)^TlGhU{2>adZi57%<5R63;OcuC#2%Q`XR`BWFkjx4C8k-gP8WjOYsYfyeZW+wy
zg@UTt3ubbHJzhw|*P=i<j*o!B3cNN2ZY9iDhJt_23%1!_u%tlAkQcnJJA&;B+-jI_
z4F%uK3%1){uzi8DCNDTlX-8RsTMP4Jq2TW4<xDNh3*Ju$yG{j4ukudrT%hdAJNa57
z!1XL}8_=;S)N^!RPtWc3^vdbMSAXb;V0nRSMCh|nP#b^mtMZ(ncXCBoqnvy(8wOWd
z;5H)^ML<ESg90yDnG^I*t}0OC=bPNRJ%U3DToKGVrI28XZLSv_vc2HYCW3QzMQ~(+
z>x)oLC^$YZI5ID2zS_57dQ)GGDp-~G)$p$98CT%OqT|R=&mZ%8#%-@>d`=Hd&N6P@
zp+qu5vqHhg^MZ%w1ih~&gf+@npDG!hNF*b4awzyqUT|Vg(EIAB0wu-XS7oG^ZW@t{
z(0QTY9v9?%HEnyrx&md-Uhu7s2p&fyBXnITxHK<#Twc(8HLE~rc0R6V7bwg2aW#oW
z$1NZ}(eYrY=ia=Y1>5UcnA1a(T?D}s3*35yo(Tmv=LJv933^|h6xJwT6%`=3j7Uak
zQz+PNMXt%qa)RDhrxj=e;G0~y8-iyO$q0QG3Qoxjp1r-`IR)A&c)@cS#_j?l8KD@x
zqJX?IFL*&tu=nKo{5`=73N-WAUdP*E?ooBmWrQ+P?Lx_y@{*V3B)zSx3bYyVRgTpd
zxVpe)5!xdZY`-$s$g8&(yrw|A76f}--UqSOW`XaXgSBMcSm1`B<A6}lA$dJF=JlK|
z-`rH7-HtclPE2usWegy6bSStYFZkEI;5|LyyS+f$A}=@rQ{3H*0fgp;f=}fI@6HR_
z+<H%e_D^20US58XF@Vsip`c^A_rw0d?FAny&_+vw6WkD)@b>~+<CY=#=TNvhFZ}ns
z@VVXLeXKycC@*|=9K=R1ycWTiLgAD0!W;9#N0KSI7Yekck}!wWa`&Nee^`y+!F26Z
zdfs)sFlYCn@kV10dd||1UmP0ON{lo%o2&<u{>KIni?0D&d_CK@DYEPExQ@Yh2d*5?
z(D)6TEF-jwJzPsJ4JvN{uM;ou>1h2bF5f&0W?fb}gWdDw6k!Igax3EQ9F$MO#OCN3
zhf>$~qMVs4wl{M{&dfoJ$(}0oyXEdG!~IdlozWHe8iW4{Jh(UgJA>C#7*erZp?i}N
zw?M2K58>f3-P5Lu(Zd70g+V(?$vBTr%a&nZf62?Riu0(^-4$PsvEBX*e6rH8yG`E$
z;K4eC{E$}`<Gm%18SyrVRS!a#$adb`bOI^{oB_rlrO`?rKU8Bj6<DVgQQ<!@`W<9l
zmSYhgY@2djt{VcI3e+idneV|(1)U8{`X0=I>GGA>{l09vVP}+$j?3HSH;`JtNF@r0
zhas9J;k_&js{Ra`?0wDCa@PlSetcjNGEQ+AR5$RxF3U-b*nGcM4usqileej~h#0U8
zJUAZ>43E~mP}AsxbOW@p=+F#yG_w8~dZTszSZwWAPbDzx6k$Cu?%Gwk(yv}zqI)Cu
z79{t0-d(@ug2zW~kWkbfcq37}8iBii$Hp(zj=YVBySbXCIwjl?c+cUr6k%7*v6JtQ
zPKicr(Rtv+*2X9jJ#xe&WPk@zb_LOM3+R5yHiofQ5N&}FwZsbGvQjdd+Fd{Voc8QG
zlH9;dP(p~98oTG!I!M%_a)Mi~K<Sb2zd48ED|pFqXXowek!VCxdy)xmih8|Y!aWUU
zHJlHG+;``>`!(S%#5PxzusLfzobQI*@4@XmrOLSP!4Y&qwhin<6Hbx18P-m)y(Ax%
zUz+0|YWzFhgwJdQ4o&DDuV$KOI+(BrlW4m{UAlk5y@a;DXu6PBC4z1a+Pug2H*K_R
z!0`~}GJB+Ph$}CHZ-SRy4e2*t(<J+syzGR$?AuLc4|BT`7H&$y1+cc{C1-w}7n_n3
z>v2n=@#*q3_8%!$e&M$v@K5t5xSQ26GZHqRWg+$pbyZ)MGk->2mo<JyqG#ZBiFG?&
zFSi6S$Lksb@vu<WwRv50a=LojuZ+$~oa1$Qzs?C&Cy$h5UNz?0Wfmm?{k1+VNVrKb
z93QIxIIn)e_Uaep)E_C<ygv50?ww8`PE5FE5MJQ5Qf}XivrZo{Cz_(qKu)|xqPn=O
zlT+pk9aIMgJd?xbFhs3>6wRHJa8Kg$M(98DQnxIX+Kp&{sPFo8ygA@2d`aNti3^|=
zL{~H3f)dFIwvp2{NJ#D|w@Nv{172%DOXIwxb%Og^^*x_(704CI2O;Hs<osVn+L#b6
zU4G3)v3|Vz^1{y7dn5OH!j&*r_C;ooP)_iWmg>Vd68$I_L?>Y_<GLL{Vk4SL^d^#-
z$mP)vl<m%^j)g<Jhdi(R=hnysP^h43i9IMD&5y!@SBE>NKcH2lV$p4STf`fGCh1D*
zPEL33LQ(Zb-Fp{v+~-coqNR;Jd%zhY+uLpk*x$2<u`}f<uHWu3?i?~6?e<VN`zrOL
z7rx5QDE3uOw!c)F;FofRbNbbsBBN@-45qqgm|2=td!jC;cx%mM4FWi>ggy3v!-ITr
zQ5<^18X=~+@4IoU_*>_kF0K>}1c!-p9LTT3Dkr<2(Uck!@mA{bPm!sf;>NK9OZ0Pm
zQxM%#+zGfo!Jlt8aFQ!#AS7ovr)<FcYN|VTXUy&4HEHH<;$hQS=eCd+Hm`NgoaWzT
zmG@!b{tszy0v}a%{&7!o$9RDe2Z%dr1Y1!d35qKT;tmPo%!DMMXjPVgD?$ROm0&={
zrAiccWl*thU{TS(A}Up@xU@xUmAX{4)Z$u;wzbvT_xC-|Ju?@u|9{{2y`RsM-|s%#
zdCs}#o_l99bEiki54!j27IfdGdykTyC21Y~(mfO1x((?TXtoC1CxY&Wb{pJnxDH7&
z(s$P}-c~N^Gk|I9A0~iMM<UUsS4q&l+g6I&szkc3+gOUNhW9$St13xi?M6<lseZEd
zRyVhCQ3ZYXC`#Fh+IG8=y;At=#S0Df=v7k8(G%nFUYL7D^{O#Fqe@PNGPYB~keV!^
z2Gt^V*h2}c)R!F#g}JhKidt|xJ11k!?V>iw<T|d>{SI~Rs$PV}%65xfT{*iKdgyXi
zRB9k7h}tXMVC=C~VW_lX3@Q|?m+{?7=-!^)G>?8DgA1gOKP+ak9D6B8)K9$&Saj{J
z>h_N9s>k~jV~6+R;1BJ3!x3(j_bnDus<{5eoa_!L#<{4nD5^5%rfF1F>_Dk@t2d9j
z-r5=%YfEnXbt`Esqp$lHizR$eH_g<Z>iz+jb(Dx|3A?<bBvIP6^9Yr6P%(Mb6<^fB
z=1#^#j1Ck%bW8uJ98F8Uja_5S5mu|PM30hdX=jK}f#I-N2W1-?D_FaSTNte!v8#Td
znd(P(8{>}sky|AO_M%t%r70sv<C0U;-sKqQqCCe|M!`dUmxj3@nTA7p>qyo?^m&G&
zYt)+&@wED94MR4tmm4y@wPn+Yu{_@Tb=?su@?_%m>ZJ~)=%3u?<Hn)EIv4qm@~QL+
zuCnB?RB>M0{D_Ka`aWAUcbelii(-gJ$JLun(lK$H3-QzUge@$7=uYGq4evE5#XKHc
z=(H~R1+JgcR>LP(CbsAY>2*!B<easGQZ?>$Ii=8Ex4k0OsRflgzs>KoO_SCr+qi<C
zLWlP<zwrg7f=xA{pmI&HeoM+FrHR%gIL&wn&W!ZnMUh_MHsW*-nkY$RfFq3pb&?=4
zr6dm-YkFXk*F#!O544-UG!LN}rPN=yk?%N3Ng@km9c>`n8KwoMnwDG^j+@(fLD4Cp
zbKnBwA*g#|^eIqxTktffe+t9P!TmL-gGB2(M+RvJ19*V(G<cwK{i9Y3i183S*mx4m
zNn9dGgBi-fQO46?qwy5jWIO~%8&87#7P?EM>fA;bpOt9P0E#O~Gyt@lOz4xed034z
zWB}Tg56~<zAJ}+j$N;n>AJ>Hb(8^1al0*)mdnJiR-%B#&Tq`4;AqP;od;s4{E)P4?
z8FGNN(x{AXqZMk^(FU-VCOSt%*2L2y2Rd`}$&tAv(d@0i5_wIc5&;q@c<3bI6c>~M
zqMSqJ;kGyQH*#fGxox)m=16p~lVC+@H0F?g5)9zm-Vl%cxgvBhfbC>2Ni+d_NNk{C
zPnrQBM{L5+R@hZ8Lk{TStPOzAkjuj?tZ;k?d)$R(fn8l#BjCfbF3cKk1fF+3S-_GN
z4#OA9fQN>!Fed1}at&kv%t3-@jYZocDR*)in~UWYj?JU8{=r4(UMaMf^RZ7x2{~ME
z6wHN_c%4-5OBi+V1LGn12jeO5L*r@i6XWIJ2|;xDASX&ViNUeP)8I+QQ{c(QL+}*i
zN$_TgJNF<9%}@^BVLT1qX*>lkHXefa7*B#fm$*cb=gd$J{=#?~eBO8pe8G4Kt~Q<o
z-;}sSkhNwg2Y+Wg4ZdYO1-@-O1lJi)f*(m-A_yOOVT`~pjHkiB7*By4jfddZ#*^S}
z$tV$Ik%UCx?Z(sK9mZ4OoyJ4(9^*;yONpxp@((kVga0(12EQ?$0>3pLf{Cqcx`02H
zxI})st<#)vKS7ts0L%ofbij`!c9Oz4vN8a76$~(rlnej|!6IOcybQoQ1p~}|h$ztj
zd|5ES7#T$XJT1sl!RV<Bz`qIx7~PQ}-kBYgNUI*eRMv_E_|D|=Fs7yqfbUE$5Br4~
z0N<Hh9>&yB1mHW9%fpxoG623axjc+RD+Ay=lgq<iGXwBvM{@uNQ0{>5VlH3oVpF_}
zySp~C09mwB3@c{Kl8tde?W2-%t#VNrATp2g=CpL2>$-q2Je;kf3<&3&C_}&*BTA>4
z^P+T<Su0xXSo80tVG2rHtiQ1M^-|2qF1(SZ78|80PG?;rX^In4l%_bPL}`kXLbTXa
z<Hyo4!=)`YRam)W<1;!oD5HI^YnAg@mp%hzB)U`kv6~@h_#G;H$nQ|wYkr67*83gm
z`^N83;r$Yq&9_z}MNe022AD3<5jtvwj?^eOi!;Dvci^VgfYTiBJj!Q?^=E9XKZUE(
zZ24d0Vp@}6hw%`cV>|`UHJ%1PHeL>X66wKDji<oRjECUo#*^Si<K@0S+J9G~3pjv_
zox<KZer1>Odh-SF&`JA$JHG53n}FX)g2eRpJmf>ue@_Cv$*5-|+X@KsjSeltA=t%u
z3OvMk1$bzr2L~Gu!5ZT_bkU}LzGbM60l4TK_MX;x?@Ar+ji5wzejo8F=UiC2hHCe4
ziAqa?M;Q;n;l@*7tMLl3Ez*P2jfdb2<ApNGJwl=~0bEq3_uRBhd^3_#m3gXgqH`{k
zIa|9IIkV=NkpIarnjrtR6i<OGjaPtAMtblm<01I8@j{v8=ASew6Tn?-JAmh=WnL!D
z&CVfri{N%gn}CN*`>^0~(*k7B1oH>u8tq0gUUi>TQGi#ilImFr#{@iE?-PqxfK!Yo
z!M{cNc-*`4S4V(v9Bl&5k*9S8c7;R-0$5xyz#cUN@La(F`_v2ojcz(7zf=ReIEMzZ
z;}E+x_R#K+oT_jySyoVGeCd6pI?{O+4!JK+z3~N!`hbMq&@7QKMh=aKrNXU@r@%7f
zX|Rj&a_}aJZb()+a&u$=Z!w+*`4tmp7I>TS5L{$D34S7Ri6Ebvp&b0ocpCiNcnbWp
z@eusNcws8itKJfI6fkq~{vUHsXU+kbITX2kd{io&Ll&TJT@HbT5`43H7<I@1_$1jv
zl5M4>m%6&)OP!*=+%ml$DeJpl_iVNuCG#i=C+<bUtDSq{DCV?#mQytWvmMR-M8E)R
z7WzEY@uh?V3O=WIy2Y!()y9+Hy<JTokLxA9h75Sb(FWib5}T<o-ZRy-1b*mf1|VB(
zvR<Iwo6HJWThn|~i3!RxMWVI<K0_Dl!4U0^ajGofKEjb`1g?>k>e5RcFH7{&8hFjo
z!hOR#+Wo6peT&Of#DfwB1zc`C1Rpn^0{>t<4X%&$;2({L;0EJK@EhZ4@H^uv@ZZKm
zFroJ%X*XWWO6k>kfb<$U;6sTGG>kkl0HiR(mPv9XdDr<i0fZ_wK<lw_B}++Ej6>sL
zsW32}0?Ul2LH?nk;>*FY5}l!I962d6fF~PIgYH9II@Q5bOdo=$8c%{3NL(VwEHjjY
z?Z(sKY~v~LBI6<0VZ1P$3GH{6sLufPXw(3jvQdMPUj~2_n+_*Qc5@Cn;ABUe0G}k6
zhqX9E4xmO2F5vUU)(>g-at>L*YA&unJQTE3!n6RdHy(md8?OLYMS5_x@g(?;@d`g1
z$ak|uV*uc;t^z-oSXW`h$q)~_)2VU*R(y-yAg?)O;||3oZk-(7m(US#z3~wI$ao4I
zqJNLcrvg08cnTb9JOmFnUO2Gi{)a@J0&rLD0G^v3KYSB<=a^dr0qJyXeAZ1nm60(k
zp=K~=JOmq!r@#}9r@=QRT%1D4+Q<O@&UgxZ%XkRBZ9EC`d}bHy$DImJmZ)a{v8oop
z-FoH&W9Khn?#Y>n9KiD%^sd!&Ga$6FX*c(j<{<uKn#cenB)Z$4uXm?x<6GkwNf-uj
zuJI7O*mw$@XFLu5#CSQ_JMDV)g(JIaM~TY8-HfNf-HoTf3gaQjcamusJibSi2$GSI
z2+SH!gE`|Vu)%l;^35F*fp7JU62-fCjY`!J02HSg1neQPafZ>D48SOf8DM0Loi7X-
z-<H=b19o!xngE|qZ)a+6xETPSFPDc+mFR#1vm|!FVE38<s8gF}faP2TO#sE1A>Kdt
z4Y@=XuzDKf_2_+489s6KGy=Y!tgFYGZ3Lc{kUg7+eJ#<w3b0?)Y&H)&Ng@N_>nW}V
zcSVE3Ee!3>lEA^sB{~iO$51y-ltRmR_zI+^`4=KJ_ygBsGq9JV8Gx~oGcZO%4$ux*
z;mry^6nddPn(z72B-}R#rww`rKTJqUxK9W71OCWn9ehGLX&U^wL>&Z}usY1&-@&HM
zJ6NU$<xLH=Pd;CV)SLHkvU&T8zEpF}+hk(eV?o}};H`BaGkvA-Zh>67xT-QhPe*gW
z_NE1To7Ts~9Lu+~cBqbdu9h5dxuaR&D$@cBOzSho9Qi!vX4Z95y)WT(2G<)8!9N;L
zfgc)AgC7|$2lwgaPXASo?5iEt5wO4UG&sO`3am69g4M>8;4}&AwIk=5p&UHlcpALG
zcnajhq-rb#XB$s~UrJmeKLB*`Yl-FwK*KtjfGP>6UnUQ8pH59Q0v8qxFfuA4o-cH&
z9N?4WT$1r-0M3@!(g9m+24Gde0DIdE01a)r*igH*m5sNRjkT4Hx0THo+sek<%I1r0
zW#erX7m~DE-^&$~@hLTAzSne<PeZvgMR=_9Y^W2AH0nL?((YqURS3Scpla}5{KvRN
z!o&ml&oPG++{$<gEHj=4`B6gV7x;ighk1=7KZ^|DGUI9RLE|a#A>$$Vu<<1LsKh0L
ztTaP8_@wbP_>}P!__Xm5TxC27-nxC1DBi_AWzZ-B*KJ4jouk2}5~%^g;>#Ta)6GTY
z0Ls<m^HtmQpl+I%!B=4hUq@`Zl5dFf%>q#sW5KnqiYzeDsu&9%FVTxUAS$l#ZYlj3
zBw-f(Tw$-e3_0Ip%p;w7V1B&tCW)@wz`c%UDDV}d#J?yhO$^L~<Rb6)CA&x=WYIv?
zgZE3i>VpQy?cG_wpk(JfX@4aNo$lPk&aS%uE&IpvZc>Z7o&ghF<5L~}L|pfH$ub6J
zA2%4y0Au6yr-`&WeFk8VlxEAitMhZ!3bpEf#+NAifi#T2D1$&Vble{Ysr}fC`m{T!
z6)UE2S}l_5b_wSYc!%*2ywi9J{HgIYc)#&-@R}Xmj9ujjzwyY)1zvAF4c=fp1>R^p
z1Q!`kf_F;XnhW`<8Op(Xji<r;jHkf+jfdbe<4N$B5|;?F#th})tH#sdYsORHZ;XfF
z>&6SOWf-0ZBs$Rm_al~x2H++MCrl;}qfiYrutXB_9#PjtCB5_P(YTBN`7O#H6Ixj1
zTF3#<IGO?WaA8dVS?uhDz32=%fWGKv1MsPfuL4PJ`Lcjdl66H{k}TjOi|hEKa=%&@
zohz=Rgu?xXeWgUFIPkusjdAP$*(K6jml!`^Td{awf(Gt?9bn%mHGJmk$N;3*3Pvas
zB(|6_o_je}1~A7apXO!7p6jg5#NK7pTMvl>G!}*RY`ApCJGTswb2JAunHCspTAwH8
zIBHAlI;q~5a880B7!Sce8c%^6jHkhl9i4v#c(L&`c!}{8c&YIaoM$`<-etT3yvKMN
zyw`XNyw7+D^6(341D`Tp;d@5ypGb7V05q%l3DA;FeHb}q0PZgsU?h|wp09^f<p7@~
zmxtYM27oY|PVvaVIb;DJnT<te<B`SL|D_6VR|qrSmlU7<*khS-rRi+mJKLTw1ov1M
zynAjF_u|C&t!of`zSwwduf}>yG`;}IbloUAHv3lhiLA-Q^hH6eDfYb2q4F8(GUNb$
z@mXgyaExhzoN0Yb%<-r#t*fMZR>JfEkK8F*j3L7$7{KxRq_<n8eO@BJbdjA&@L)Nq
z-+UeXIQfbmFL2+hDb9|bvhMC2Gr-;w{qOhOJW*r)&gml4{LWn>%l*zuk(d3>8j-br
zr;FO!(Uqud)gt@*9bfMhDbAJ9A#kek5S(T_1-2SbgXbA92LpW>)C~Zni$saa!LG*B
zU^n9_Fl9Uh)5en^kEe5qAlsXv9NfWp8r;!%3gk!N)mRAbY`k#2qgQhzy5j<<M+-2I
z1tO!U?>^RBoMYo#g71vtNZQzPi{mP1Z3bSHlqII^Sk|{B54XT(0;w%_4^#|ndZpml
zgd-h_of0@MmgtoDtl*fzaXaT&xYw!B?j8~j8Q8~o2=diw=~LjI#?#<l#>>GYd%KaI
zT>?2q!XX2XHJ%2C8Bc-3jfY^J@g&&1dz8qJCY4Q=XxIUKbeDK*J7k<hdcfkOkH-yn
zaakaWTkPUSy0|P5#Vszx{Z`I@l59gGWqrf4fxV~bh8Go2H`7r7KHt*gMrFIzC2j!v
z^6kz<^A80380{~pG`dXiCkgkZr|YXAt$ZP0Yn9+bM>87)?l-se=uHht4~Y)q(E=)t
z-^iaDm6Oyhdr6*{t>j^Qy~Oq_>>VOT2DABrdO-0{OEjvB+ab?NwAKNyI{mrrc?f-$
zJ|2gvEb-5el{D}5%cXn8xn_z{g^6~NhK3q-(a2CI6~c=>>n!+QFW<#(M03F1j%I)d
zB}sj(xFQcD-`0uFd)jrZ@;+%n;WHN$zEILXB4IGWZzMW9fzTbM%=Uua9c=_SfSPW=
zL8jePEe~?Nsm_DrB=X=mJ{hS&JCHeFnml|BeipmIXCCw5R}C`2^In651|M>%>Em%^
z^@HzI`+eVOzwhIIq%^HARfen=8wLK`gYrxH{@ucSQdI9rTqhuZb@oCh=V-7x-GF6*
zsHGqInsxYp<m-j|w1i#a!Ww|f9Bl^3pvD%p`xI`+=Wshd$xq~dy^CxBqR4yVk@vL6
zBJXLBN51PKn*ky<h4jna`|TN@WTx;LVv97*{mjK@0OEC#@D+;|V+xm!?c}ttb1V!V
zQ>@XcGR*>h&qNCWX}U^8eZ7BGBZ0GKfgTb!dmw#GA9p2@pB-dlmGS%D@9#>Pa-li0
zY*yJRiWn#1n&Gg57WJM{sYocn0M6bcG9;pn$XOCq4}9im6A;MV?u20nNOUy=E|l0y
z$1n8Kk-b~Y2;3pDDA+e<0GicuF^WBEiCrM6<SN&E4j?aya;}A|T%sI6m>Ck$R*cNX
zBeSu{Y&^1f4}F#zvMx9HE^A_qE(<fg^Yr@95={?aqeO3mZ<v*b(W8PVJJy-P?D?G%
zzwbJe0j!NiQqnIiZOaNVg%_mv%W=8I0FOD^3_N36;B`l{07-R{j`CUIJ}o>EZF{IG
zjvI^XVBrW!Y~4FHQpGQ1^yVT7(+2D?9)fd>r@%{$r@<?XmxG^3H2>B)@@ZrMKQo>N
zKR2EN|7<)2zc8KzFX$5`g3OX|GXu68PlL0Kr@)Jhhu}QpNwDJwQKCe&(Zx=QCO$wx
znv4MLYNie=>&pCQk49t!IwVCSdt{DHWAff2(Fg;NINAW<xaq{j_g?3a1+2!-r`zK-
z5~-u<5^Zq4&6HH<N@^Y{pxavPsO7Il59+I<yr<KiC$I_&uep{g+{()Mvedv(-{`Mp
ze$6$M0X~qpPpZ=DH-2XyH8e=#EDa*#{LV~~3;hl?UF&xii!AXwlz5nAlMlgOF2$`9
z9TVVgM+<j3OSJotS%H((Gu1tU9xjaduZ4e&_)Z#bdXA6p8@@dFx|{l2*0-Z%K}mIG
z-Wwa0be!d%BA8(mIN#Ci!-{-FqVj+z9W9hMOuN)1tIxQXb`Nu^9B{0}U6{T76GlV1
z<EP%wq<deYG#^A}Q98wQGh@l;Yq!(&PoMG-E-)T~HyBTWHyclbw;3-7`~Hw>TEB2)
zPwjAOfj=;w27hQg1@2`$1p66Jf;=VNCGy>(vd1MV7I@FmCZIy@8iAGV5Mu380UOva
zGC@v~=$ry9d+ggYWWU#?%mGxR_0$(-CzvlQ_6m=%M_pJJ*xrRT<G8=kj9`k<3j|;9
zMc!trIoDOwe0fw&?8f5GLZ${1l1*2IVP)Z@-g$O**U;$t0nm?v&5zWRivOi6Dg)4%
zrt2`U#x<G&2t^%_qB*7w$Y5%$Y4A+BqXsFvG;wGiToUQQpG)Kp?CmmF=Rs@b=)&pn
za~0&CrjW=1QEf+oLtTa(5Y={+uZ^P|xsLXSPqmNs_J7F!twaR?T~)JN0x14azmpRg
z>vuR9m-(GVBKP{8RU*&(otH&k_dCz%;PG7iO;(q!rRd>~Y6jTL(ZcClsog<l1<0To
z$T45(dfW7w;BQ6)j-^Bny9$0_6ks@Xz<qB&QkHKe@e};l+JDbw&#a5g(b0I-WiPBA
z)yg$c!bKR|&v*##Z#)GKGM)wxGF}c|BGGxd%8|<=19-XdG<b#a6nLfa5S(v339gX1
zM35)UP!6s%o(7*Zo&ujT9)hclC&4!*E)nD{Gn9jG8&8Ap7*B!k8V|wW8&CSNrHc(t
zr{}E*&y;8&z4<up(kY#-KM_!t=(7S6$IfAL5U<#?1oMm%^E0EwykgWRU#H#oB^(;?
z1LGn12jeMlz40{oC*$SdiTgwY0XbR1+6(^3cp5y#cnUn#cnD51o&<aD8zqA9tO^o=
z<;K(CcE(fS_QpeS7vo8=TH+3k@8VX<o|b4>_7aRTdYWLa(RqSSqiY3$62yj|UXnuR
zezKS<M@IUfg_%@TA?gc=E!W>Des@_FKNkF<r3WY#wXgJMCA!1q%mB+B&5?6o7gTut
zM&LjftP@JOpYaepz<3Hg(0Cd=#CSRQsKkvC<nhP=t}vbkpD>;RR~iq&RmPLx_Wh$o
zklqrG8n~<RG`O4b6u7(b5Uens1ZyRm95uRlj6_EQI8~BNOqu`VJPhyROE5oths#1I
zv}^%SO6-+QP47HA)Fm50lLeb^KepVFiZRf-NF==wEjkwdU-B1OdpT<cYd@pDq6=kZ
z$TS^DV~&l*G=*18Llt+VgwqgQV!Rq$7U{uPBE4^bxYHyWCE#918-b+~yC;DW7n_rW
zO?IjrfOXUR`JzKM?ofQad7MISa~T?n`3qNzvt_x!Su?;Tj%I<o9BnSf6mI6PkY$0h
zW`G+UZNl+k(*n<%)^~r6c3+h+Y~Y*5L+~x*De!IMY4G>P%fX=1&AN4tbkPpe7wl?0
z4R$l00#n9AFl{^uPLpW*u5)C%8Op&K#?#<T<0<ew;~_ZPcoKY8;u6KX_=ZZ=5eBv$
z;LigX-Z~FP*$cdQ$j2@u2jHYtrf@xB&<NH$f&kspMFiMJ!aT_4VU#HYaDKr6BVp{a
z^MUehr$k#N8m>)Vn}iN1?m~ZA-2GaV0gjw$=dj`~^c)G_`5+gq&5P|X5~uYjI^N-}
zl$e_nkZ!5R!@&8*M}W6V)a&H}T9L~L-yisYO1I2X3<HVPp#Y+B9p=NvN_UQ#f$tn`
zq=!36boK##9nAogAg!+;c6ts`=m^UMG&@?jzZ<AsMpO$D$q#X9nt-TNqy4a{Q=|Qm
z$=es&^Z##xRwY>AD#!o~YiXh_eYcQ-(fB+guo^SeSng`f01N`ozL>Y=`Jn}Q)!uU1
z-$i7p{sE(L>)}q714cU90F0IdiD~V5h>dQ89}2DQS4eBQ3fECuGRNlPVJNIfYh-;@
z;#L>o8^%L$+bXB80DBq_!5xh!!99#ufO{Gb!M%+a?*C}#eTl{mAdSiedP!^%hY>3S
z(9h8fKsNL7BlM1v{KMtT0b9#K!?K~o+yCF>s#fqg31a~A0Ce#R@ajnK^WuBFMEw97
zBvu$~f*AnfHm#V*vz$W?@D9a)($AN+Q$iWw0^=cgo$(ZSqwzF&i}7;sulu=Wb$$ut
zYl#w-ga0s|2LEY11%6{Z1QYvP!{Bxjt<UpIAiJ2M9Nf)#8r<D@3al_5g8hsq!RHT+
z68X`ii%&{4dcY(#tR(^XOrrN1u55>VD=EHh$6ilmlP9o;q-bPsj2VIJ2E~o+^*O*r
z0#y>%2IMPAF%5go2Rct+=D~3zdvhcz060{=Dn_z*yhKKTE*FjQe!t}UodaxK)Y-WG
z6=%-^M^%%r37`wiqii0wK_UY{#bzkh-bC#bWQJmCO};cU_-22uww`m%HUMiRL85Ja
zDTErewiezhcvHG}B|3BfjcP2Hv_rm@NDu6-3Y;Etv_yJfxT85B>iv>J?>|+(jg}hd
zqHgQrxJ3U%PQf?Y)L7ikM2Om5+)h`cOvV2}R~FrGbnaJZq*Tt0?S9DIPAvAuLKO_g
zDT?O;`>60Q5{)&m{XjPsL&3Qc-Br(5btQRr?v^O){C3ECiGqNQl7b^UUrU^0M*Wy=
zotobcx!mo{D9J;vk`&_DiB66Au0xyw1uK)kzeLArD99O5FtQVMe}224JampzAsWW{
z?(i`j7(nK_E7H$&x8r9LUVbV$gP%$375Yt-2CO@XamZbzY>Onsfy*RPFF7QU_#a8^
z{~8=QKl;~bprTP-&>kDP1?{_PI1ZJN4;(Jh1REh>P(=aO6FfSFw>WhJgYk?6^{c}7
zB<jGG?fYslSPpc}84`^PJ`BZ}s6XH=iL&=pw|0==0xomiY@%B)M%}zy{i1*J2HtnH
z=_^4`ol%+_@v)pH)gn{-ku29h?C7Rm28bsAJ@LtZkDL7c)wa5DPdmiMJ3~FR>hzF@
zUGo`$0q>%J{hyoYGd<BKPc<~}T&W>CnTr3%ZB(+;B<cx3ZaL3ye^H6vb$Oe8x164A
zvn0B01}=3p3*0Pm|5Am}R+yNPP!amnf$w(w?7OUZ{1?TK|Dtw|Zge^<YL89uMgM7n
zFZxdtd{H|Se5$&k+84D$u94{M(f_4Y7dsp&XN@1S*z{jiSUWD&^mx>!$jgGai~`Z9
zUD?j5z&ugHE896V900d7LF8<SrXaxhIK3YlpGJ0{M3fYE6dL?dh!S*IE+2lDX3^zt
zLN$05yVp2X2Dn4xtyoSu)+o{9CAXn?fo)(7?PceR&-9GKZFL-&FRn%d^Q=bIlG4PC
zBzS-%_Hyc%3j0#Rc?6cZW;0y`WYdiE$wYlySf)udIK@vZp{$gYCe97PgCzO{(t`G~
zL3_5%3(ETR4dd~VYx4VD3wNurrivG7uhf;^r#x7#9V3ZVxwU%ABCRz!Nw1lua3A9B
z3c-AgL=+h5JX^hEqUhP+6Y0=+bJ3c^N^opBEm|9kv4yg|mErehxX=B3bei!M2z)sh
z@S^X)f-j5h9Jk1304`YF6Vnm{_nemKv)`W6%gg%Y7fbgma{)Gdj|<l%mg3kz7K<nj
zp4Y_=0V*=aK44W;<u>opCMTB97Vo+qD$8R_)m?pwP<Wa|6Zdh|wpOC}1?`;E%iY4*
zyob(cE}3%S0`QvAHw9%nKc(#^*xRVDg&8r!4i|8NM0Z{D14wkizP0^CHFky@kQ{KI
zYg<mV9bKbubxRmaf;%JpMabo%nCL=qYdb4Vw3gl49$V^*XAvdQe3%$`ZX*2m&U@y4
z`$Y|9+#>0g7}&NTSWx2JP%t(&E^3s9H}UYj=IZ;3L|4F%1+{Kmn}Dd#iwonbWQ*Gw
z;D5M5ZUVlMxCaC|qDGX56+G(x;`ReI$dhcKS<DwZngMJa+Li@=92CkZ+~?NGCV*>S
zY<Wtns$Q<Z!s63gyZf37uqo0x6r_HoEY6B1YUdzvU*?OHhd(H&eJ$`}F&SSBYCm!b
z<=2C3)kXs|(wb|axz8lhG9)$$8;Y$p_}1j$8x!@1U)1N{U6t<Ts;$n0CrNZ3wg@b1
zhE#oRK;uDC7f1M(RP=~g2MX^sy{qu;TzJ-puPdmUyy{i;;yu@)9QE$z4oTqzK1V&j
z&<#RCb$>MXVrz!K&5iZ$e-!jv7nlJ)kZ68=I}5@EO*_Tc09)&dy`5dWfj*8FitbQ#
z47(cSlKZbsM`Vo(epSNDckp%NA^4{86u8!S8vMQSa`4H)6w|t>1hPuP%XjeS#?#<4
z##7+4#zSzm@g(@R#3h2fV}^3@UE^u+_r_D;d&Wa>o$(~teQ1;j(nCT;U{B*|u$S=^
zSZ+K7cQl>^Z?BIMC8CY7>a7+ulE45*n}LCjHUjS*>EA+u{X-&mfONc&%@i&|<g>_}
zk8~?iF)-%?ojzWN#bte*y+SSqW_{qMFP*<ri(Or<4FJ8+zpvMq`tAgY8S6`Zhun*5
z-+-HN<p0q1r~#l27w#L|WL9=p@*dU}u${HFq!dCTInQnXSmX<draoXpF1_z+%z0k>
zSMs1KImcR@S8%4*cGrwP$^n@x(dYwFi!0k>k;SK_j*-Via|X_ksACu8pA-4D-(hmC
z_dBIEdZ$t1+-?*3ncw-P$e;YqhqZDU61hzixxnw-EAp`4Ngt+HXcCw0G?8=t&ix|G
z{m$zm@A{oTifr^d+YQyxl(+=_MTYvFCl1%;P2wzrG<t_g+|Gj{&-k7BN9#H%ahCPR
zXqA?@okX;Kregmg(SUl@5H&)69gs&A`?N&#OhsNR5#0zJ3(WvKI@)kao!&B($iZhC
zs4O)uQz5yZd0bTdL5p8t<`o)mDmLC!Y`m$ETgPmcoE3Z&K{rWs(+MyuP{;BY-a5+5
z{)nVYVp_klDT&?#_sl1v&6{-hhR3TC&F1;-Td4=Txn5)ehQ{fAeQw8B=yrU@N24?v
zD4bWgkt__wNl~(7qAm8FrL&}+CQ%G<zN0x{mT7^xruFT_9Dlr}^|u-+TS_~Rs?ii?
zUNbz;3YpgMopeZ#kifsy@$9AlvcP={Db4r_iK+tjlBlN}W_kNoQcQC8CPw{q1?nb)
z`Lcq^l4z<{(xGmm6pr8rYI~`RaVNgTG!$bRh#BN!3Nvbi{BthGEuy=)c5*;pNsyS@
zo`(!Hy|0el22%kiN}Maink`(&dq_1wqK^9LGu58eSt$JzsW|U7*Ez*FxbbPP0sr6T
z;M2<gYik2I*`og?;4ml=XB3?mWz0@ATBT#sAdz;U&a>k;J=Z=~rq3)XU`d;bNt=pE
zn@IYYOWFi*z}>tpw$MaFCrO;1=9*k{O{WMr({)Jw`1Dn{Ra+Rc<D;y4ZM3VBkXMwP
zq!OigOVh}j!4)F*I;v6OZ4#Y{I9k(Lnm$_+dv!HI85c;R|4%~iE$%{>4lh`LCi+5g
z7y5?VZQ@^_P>S11(^k8*NrO>lihQ_eeN1#+arbbQf1YHsf0NP;#+KJ_^!+pm9DGWm
zId;2Rr4UiyQ#|}A!~HP-RGC&q+13c(lV~dV110J`Z-_j#91=hYdO?BX7}sjEcchSu
zC3-)sCJ$i%^tO|}gwwYs?}wnE@JFhki02`+EU|IqC@FoU-}ixj-^U%No{yH$%?ZMp
zZX^m5t1dFf-b+}kB9AvO2K^*AZwdiRWo1OwTaG&=k=mCdHI)#E+8;HkIe526YG0fm
z4_~y;;`jekr}(sGRD=&v3$ez01C;oft2PTzt<JW4+I@{~$5-Zd;*q$=OQ8Y3?}Pll
zk4q|sIL#FrdC;i0zNI4Ykd^tp)+p1Q+>Dsd3-?jK`Q9jRZPl$zr$qC+m&RpBNo-|(
zMHj1ck8mxrUa^$MrtuGD8RV>mb>(#h{75R^00MvPcy-=KqxVf;DI0f2n_gaTmG%ya
zssQeDGzUCjT41?peWsY>k}a)&mWp;_mB+8R*Xk<weOKJ`6vDk){3^Rl<NTl-YdsB8
z_^9y^{MvX0_>V{rCiK#lmwDj!#w);`jfdba#*@B7e^Fc)>0*bXLc4t<H}G-e)!?c~
z4<2!xYp&X-B5szmcP7F6B)T@N5SVN64YO0F!$qxPe#Pio!Fr=TlzUG}tgMe@K`qt(
zg4#{38SOSm=s);t<JI7rNDqD)>A|lfJ-F9M>kQb>coM9S^x%j{?>kJJ3tf)RB>0>}
zhn{B4wb<b+q`SkJGnm&K{Yp@-r0NoF)fg?L*KUKvbxGK1yaK#2(u2Q<^x#X8-sd=9
z`!7mj<4DMTPSprlL}$uJV1CG%n}Nt2#?337xe18Oh3Q1}GtS%qL}nkHSR>u561oJw
zVLSx4JKpIl!0nBP;Eu+VV5RX2a6jWAxWDm28QrzNha}eRq1rt%as!_?UIDI-^x$73
zJ@~gs@9UqV{YNEA`-0$)M!l8W#6Uvlz|Yy|gK3a2A_I7}-nwyycw|2rm<NJCINAjK
zSz_-gz{V?3XB5!pXa*o%>>i9VDkZv90)KL}8Su$+`C_u>VzOK@S>d*zm@G>&ob3&V
zVp!IPZTe2cD7nAw+HNei*64fOD$DuKngMXs>Nf(<?@SHQ2x=d-SUOy!8@sn`k$r63
zZf$1jB6Dm8{6LZKNpy-9D{5$$<K+@L0ydb1`=?$~9bi`AD2Xn=#sBQjm!ea`F$WhI
z55XIZr@$MHr@=+W%fStLwV|o7tOW9rM2X75kBz6nPmHI)PmPD*7siv|-y|*(<Xbb8
zga0y~2EQ|&0{?A11i4?N2jK2gqC|dB>EZ(t4G{2w{568WXA*s=WN4YbsNOrz9u3L}
zkgI59?-AV($_P9yDH_?U8|REbPEs_ocdauv1K*x*EeN`v0c{2-TB+kDKjBKw0U1|S
zbEn|fMvLV%)A&)AAD}tCswg(qJgktva8@uRKXv)DfaPyIqmaL`n7@(y_nt)3#+L;n
zT>eIYHZ+-*w-+00q<eJ8>5DBF&Kp`@C(#*@1b27+$z3U+dpbtIlcs$^U>(j;&;*GV
zg-ZkrjNT-8L_)USlXVf4$fH^?)aZTZ=#5@U?7sVHHT#-GqXbZeKH|2%6hcCkzOvnC
zmJ<!wq>6q2>eq6%nbgF*VREvB$(2aaB?6l;O^o0IjexWZ1#cNWOSk$NH<(QTW2hkp
ztn{V})dQO?O+cBOEsemmGhMO=1vYUCuNvM^Sqz~1@K`%!sVgiCFq%$Z9M&wOOVLgb
zInq_11sG?ihgh$&%S0Iu9VdV>cP<bsI}0%CPG21UEJq<4#>d+IM8E4~-I7Uk0EeCQ
zBfWzmDNXF32hVYQzdZP^L~R1=oci1(xKXkzGf>}w*TE_4`&da?pRy6VIlfrDZ}PVB
zDn~-rzfZD~x#xc^Do0s;G5s_c`%0t&qH$c_&TNbZZ+SZ-#(`J&mbY{0qv2cL9vhJ5
z?Xgi<-X81v@^;@E(`}IAxzDF561#i;Xtd#^+(EMk4&Eqn4MUh+7?@s%X->hxqa3f!
zgXczikSXYbnS|psWe8vvJ{@uJCC97t;O`_Z05V962La%pCC&ipH`)x~0LQEI;GZHr
z_-UjEJI0tlc&X#nd2r_wOb_nvcy%7!^~9(#NFNDD5B!HNn^XjT=XiA<Y}P8}s)IZ)
z!3kvfA{d<KCf&e1_!Gyg^War(b`8vf=bU2xmkG0{S{|^;alIB7UM6vkL2{>=6WHvy
zKJg?xQ{tQ;{oG_6m<I<quJIBMkMtmumP)~16D%pXi^L^@+!PtWg^pL}!3QMH338;C
z3;GYT9FrCNvBWt+wmQq4z<!Qb=fQCj=LGruY;yv?bX=b?5&kREgFSUp(E`Z1PRoA2
z=QK^nN@6G6tI;6Gu6%Dw#aSI&um7dpE;<AX1UM?LD4*D`+gd|LbHZ4|#V=dN>|<kg
z%@o^wlc~hiWhG@t?KbruEgX4oWwqvH(c;ZHJwhVN3e55=>K%6yJH|N{7L*y$p^SBT
zXPp6kBr(-vniRi~#8gkp<K<1g4$vtwN}{JP#NJ^)Oq!!5iUsN%%>g4#3lJ6?&zR$g
zEv-{qbZ;(EM&MK}nJmsLGy{6LBi%XdY#m(|cJ#jY)$+r4)AEjz<~WIx0Xau=K$B?!
z!eZsc97k<w-CZ^9=gP|hM@uvr*3N?bx3!YvK#AV_n^ZP6(L2u$3A&(|@m!*;`1v{S
zTb5|kXZ-p&*Tdzif&rp*<LO5sfxFc-ZCz=srV+968xb475k8VY8;EA_s#`<vDY~U&
zL(#FJ=%^FGwqumBNfMh@&+2fqq;7hUek1Mg+!V<GA2^x=J~S=xscC)knB)2_t;ed3
z<0QIy0=l|IyK~qH(Yh0#H|?@N;#>=7%>ubEmZ)%Gt;C)0<2C&*muzzKFILXw5;+6U
zI+_JSot~Sxa&6dCOaG?5?=DTbL<xYM9nAr|nHC@{HbrBOy|=V-v;43N$N(!G)hc3J
zpw(;#x4;!T+(WwuIaL<ONVer3w5+dgVYs=8eb{by8TXK|%7Qq@jxhI9FG)1=zQLEZ
z`<7D`8r)IWszW6T1Tqqh)H}0$h`+FHI#Q?0ZJI>^=R2AMW|<b?G8h}FnB$MPv_2!%
z8W)fOxH>X7ZqY%$TcYxSpGo3VW-r|$+p8SzzT7sbsKR3R(hb}-hi*a?P6`}{N|YMF
znbgG~cdK3Mf|>xkW)|1EqjXKZRH6jHjS>yr+QQI1H&Hhxl1+zhtu*gT6a{?jXb$+?
zv;bkTp^G_wx~267Esei$3ugxSMAAhcLEdlAsoVnlak)iTt0&zRD+9bJ(Mz2*fw#XT
z#Rp~wHaNR7Kt7Xbg|xeBA8@*c^n8gr0x-giAD2SAap)YzRbohV$T)O%uh2P+`-6Vb
zRb#x6C5u>Yj=33+AL8qk_a<uw_}tMPt$ZcXAo)f_Y2#suD7PInA?jNYrGb}C>$~x1
zCA61Tg>&NfkxDPzb;gA?d*{7##T31rEa43XFfY+N6{{Rs6dAnp3EIC<q5%S~cIM*$
zo^ij^=~|QE`^GE44Urz)?p)Vi1-P^Eq;KLS*>{poO?VX{|CHzjBw!K6w?tiL7tvf=
zNZ1+1qq{nD6A(og+9SHBGdBQ{*#{>or0Xkj!y~-acm;S{r1#F_w11@}R{A3C-Wj=p
zL#MjYUE|0w?T{C|&l`L)B0qDHok?(j9CSZ+xZoOz=2H?RE_R#tK@_DD2ue9?7U(Z=
z7Ys6tcKQr3-q9>D#k9c1rUkAtEpUfveTmDo`>=#QfIpn(cm-H(JPDo@>A^{n9=ssZ
zgFlY+KKEP7w?U$goEDj5!@93jM@Tdy06a7xDIbiv&Y7Em$Xu8am~+nD1VrY-jKF+?
zGdBQ{+2>BomTr!OUV~TZ{>Z&u44E&%0FG;m3_f(JybqK?$Ls3I9y@f8$ohdq7dPNj
zi83Yde8>f5eV)f;y1=O#i+Ku{;Ll`5tpOSPl8`dsJ{o%u7oBO633F^@?~wIUXKgO#
zF5I3yEX(T_3w$8aoGQNGx}B08WC?+cWE1-oDbAHJMBr58A=qX-1<o{{1}`*T4z8c>
zhIEx9f6|T;m4h3Mr@@bmr@)Vmhu{~+li<-aqC}8-35mcF#?#<&##7)(;~|(ao&@{N
zj1u|brHhwHG^PN>=>;J0iA3vf^f-3*Xi!GrcuCR79+_h=9m#v8%bNrK?r0Ox%{9>s
z(0xrQa?=4(GF@pDxIv;1M3>|t)<To7e2#K4PCBVbKu<-Br8LGJW2M||r2y}{@Mgk$
zx$tJfCmNk1uu_^AidyT<KItD6{*}v=@v1pWbFIsm0Z6WiJeurBC;^=G<b{))#PFAd
zzn17Id?NVVC_uA#_(r-*M>gHkd{vr1QH*@H=QG+~Jffd`lpE+T(QU`Fz{keUCZC-9
zS#O5>#PE1p->stWrrp}ySM$TWiu$avSyL=vV61?Fu>uAb3aHk|40NNTN2dr6G#-K@
zj8}lUNDq!So&--cUICtLJOn2hPlDGPukanA%^Hcu3?QYd2O1>yuQeEXWB^(m%>ZOH
zAD=tc_5UW!m(i+3vm|ASDTyxs-nB3!i=?|<!g>WRHXed^8Bc*fHJ%3VHC_&`khq&E
z$P<wPTxmQFK50A!K4m-vpEjNZFTEg21eqscy#g;Yo(3;Bo&v8h9)edIPl9hsTt&X?
zzfktqBw8zgUgx=k;jKGq_Xnl|_Hi@^3@|NFV_F}xMrpQnswTiP=DhVyS^wbL%K;xd
zngu>HE%2>r<1v<|*{g^(uR>-Dv{DKy$PrSFbfsi~oTE9Q(X_yL)B4QBFoJql0<gjB
zbjaYv-mD;{1s58;I0{ZCX6St^AFmf0iL$;@_#<Fu-{N%&x<#Us0Jy`^9Pm@q0!vKm
zV`7erx3q4MipJHBe!^?hGNg!=5&MO&j}`QVYb670bTkM2&9uO`ruAjS9KYJqdc^rw
zhCbGwDpa8_X=^Z2g(95M=Ocottl8*`6!q4lWo?jb_USzzqzhYlEUk8YAVGE@we~9g
z)vk#QaD${&Up>25_>idq4t0EW{tr=i6{CDxmqlIB&mF8u<b5vN^FBAoCoj<v$6<v;
zFXe!z9L)f)nAXR{99M2>eYV)@hT_A)e<AJ5)(-HRqdDLW(*p09*0&RLe0@vnIyL>i
zgcT9|(0B;;{;|`i!Cj4qV1@A{IKX%stTrBk1C1AM!iQ@A@JI(9VLSwnG@b&FGM)yH
zHC_&m(t8$eor5$=STMmR<7u$jcnTbCJOocLo&-;lxI~bX%}@^h$aoq&#dr!l)p!V=
zW;_YDOEy_~$EeJS60In}WJfc=*%EyR*5S>Lca8=ZOXPizV7XC$&{k;oS*OYXFFV=<
z{MNL;6a3Mrk2yuVWR0z8Q?<L$sT#Z&stcT|5t#326JU;wamUNd5x7F4F;846+%o7B
z951BpCLoaDoD_ym-3;vQXcMrn1dsm0YNu`n#yDD7AXX{uYEl>9JfJ0xyY37CJG7nd
z$Z$krHw<`w>4KYpSRLIrZH3+cE+wA3STOLP3vZM4ONnkIQ~Ba-(T*QpJmyHYPE30z
zD68H(&kiB(SHQLJqx^n65I+sIcZn^jGi4#uR*4KBrrtcrEvY`t?QHI$Pp)32(JBn6
z-}io<N`8xLJ_jt6=pjcAe`@^4_Y0|z_13o)Uwf(Va*3A6p9ubsY`)>yI=UB0G;5OJ
zT;m~lsqqwex$!jk6XWIJQL|laHF&J?a&VaOG&tON3am38f*IpU@CxJA;C$odV5jjk
zc#ZKCc&+geywP|P{FU))@KxjG;A_Uy;BSnlz}Jn3;9BEJu)f3km54UR={AYZ8GvqS
zegO3nyS;`{rwqV?f&q4`Gh_g2kPq-%i3P)GG&bvsZRTimr*^E(fNwLGhn*mi0q||+
z^2IiDwE3j@0JK7z#it_`8_LoU$40Md0pC#8HN;@c0QiQov4*lV^t$-~zH`}pv2%@y
zXuCrV-6zq20*AY>2HN|H(c1-9bq3%dY8e8^rZC`eH)0LI(Gu1^zuglxps$Ce@-*?d
z#H}3O<9dxGb5dhR3rq*m8s)JA(HwW|DytqKsoPT+<?8jW_Iz!&=gTusQc;@Oe34tL
zNOzy>)BozftpmrX4&9N)>d;=S4(-M2&|a(#?QL3z6uyoV)Tvg927$39O4M6Vl4`sp
z8hNv3y!Cqmyh>xCTRiXhol+1hZR{4zYh&&0dC?Xn6jg<G58Kkqt90Ot_qHc)>E~7Q
z>sKgm#+H6wCBK@2-_4Pqx-qw83vH|$cdEY}8#fL8AWYE!Op~zcf;Stl25*V<-glAq
z?~HWdGsY{xXCuA$U8DV1BOUmf@eurt@f7&F@ih3B@p5qJWfZDUazYN5sK9dY2;*t+
zNaHE+DB~eG%y<%fUg8o#UNA#BxY~Fce9?Fce93qSt}&hj!^@*YkS-D`0=pVdgWZg$
zz?AV2OdC&v6%tpGAFKD(-}GGOb0hGoMDN0`p9T4y(`SIARfN++PLaqTnBZszcv<3H
zAZtwzSd&T_Z}Po4^r1Qr{!60M3FxM#SiL}6>ZNyBs`Y!M)qD3VNo?P%^Q&29JLfUv
zEI)9fgcy*vzBk6V{gt}=cZu2qXvckZ+Bc{Ud^L*($mT3Qt+T|_<Sr&nGcZx2TdDQ4
z%K8o>c!ESG27-ejx=l3pu~Xt3wf~(fB?nm7+YXLZ@@b(G-31*SE9BF{Se9zgwsPZ_
z1)?N1u_PPfNorzAieK~WqR5m>k^u--*H<}0chvPS3R#>bmgb8>EosH}a%plvl;*j3
zns4K2o+}(OHSldA%?^s)*`>(>QJU59G+)Qltd6Jox{zi!#qQzKWPm8mEAce5+ha%i
zm3W%j?fyvrK(YN?nj8?NSrbn)H=brqJWcVt@%<HB<<ew<D9t<ZH1pzV-ifCvertYz
z#UAL=WPm8mx_Fu^<7w8#(-faGbf{u$U78#arCA?OGe4eYeLT(l!q^<H*by#G7KqYp
zh^JW)PqQJOW<ep%(TY9ZrO5zMnor|tZj7h-G@hpTWR2m9ZFFgJK$PZ-c$!<|X}*Z3
zxwTNusfulJX|h0+=IeNxMe#IW$I~n-q&Y*e=ejf*AWHLXJk8>Gns4K2ivJ{QQ|tvU
zO%90C%r1dMr>1@*OXnzOq)yG*C9zYp_@K28#m;kSvOtt(ZamGBc$&HKG{wg#Ua8ot
zU78FKrI{B`vn-xwUOdgR!q{A^*qdFN91x|sGM;96Jk6EyG{uh%->%rZU79QqrCD1F
ziN@x!c$&4Pv9T$B@R~G-y0yFkU@cF&wVWIiB)Z>bCFgQ0>Q{2}@yo>hO7ftqB?C}`
z*6d`gl$C{2FvKcZSs0f`6uHtR$pKM^mKQpte?`^Bj`i|Fe=zt;NHWxQr>WS1COW`9
zLhN<bDmgyyTFU}aYo7+bW+fdOYwgp(*Nnlp_L3rBaY-^jlw?7?<fCFq7Q{<F$|reS
zk)OIGIUq{%Sz$h?!FrN3x`UAes72HLv%<{4$LHgw;!Bq=3q<+8i1%y+`I=q6ED+`U
zBHqanKHota&I9G7x8}LTr}7iD!-y6Xeo_<^@z5rBG;#o0+>M0K;C6hp-m{3u)w;M0
z5XF5vD;D?dEFZVY<&$EW!@5BOh}77)iA>3GA14>zo}c;AyX8w2`Flz9wfS2w(ZrNQ
zZ~Q=CmZ-OL+j%F*C*174c1oewdMbmycP<hQqVD4KMRea4Wif@%;@o{<e(d#D(W5%4
z3jOf=KFII;xC_<XRTACk0oOR1_13es+iF%|riAzPe=4*A(>K>OSa-MqEB@Q{blJZr
z%xCrCQIGl+augJsd-|$<V}9TJaSXne=(cgB27I(c9RfNXExat<SG)V06*y3$ms%xx
z$Z)4G^u3s~p_?q0sNp)%c-Jpf*R|RKn~#E<7%peS)&e5sNf)9ZU%k&6b-z6CvlSGZ
zd;0!+N5Aj=&bm}@j7WIt@R0BciDrNCR<=xvZ6z8dpvOFDlTR00{WhrTzq!gY4qQxO
zjD9DJ#Wq(dg&&w=p2EPtDo<Q=gucgGttEG$M6XYh;Bm%7Fcay)F_9iTA=3LkFVp^m
zkq%sLJOtl1o(A8K^xy{LN${`6)8IG8LojiL)ddE|(_oqL5Zu~$GG5ECT#n8pxK5&>
z2546AD{Ux+d?2y^-EAm^e=E_-lLWU?PR00?UtB5n6ElNJNzA-XyYD-*{)Z%7Z#)Da
zy~_2V8vGyQA^4c_B=~pZ)!^60Loji5)O+DJ#;d`!@eth6coNJSuLegM55Y#`g%R38
zxwDekT22=(a7_=)gLgS|hUzT3__2yplx<v;5&TBt{tpC6%#TVIcI%7`ei$E=!wV99
zB5XI=vl3C@G~D?pkzPml={q~jqnKm%c=VGlx)C5znI4}zL*ED>8xj06aWd}%Dy2Et
zY1?Mc%)^FDbU^{ky)ChO!F`^zS38Fc@VcYTz<Uxcy&?EdQv+q{pJo9-S7R@mNq#yW
z`Vzu))d!y@(SQS2I@&}I3vBWwUoX`ylCAZ*jcK92*uc&oC0Z4LKgDf6D6PhONjQPQ
zS;niu*^wUXc8&9?2Ghoq;0ux7=X+hgpGefVrz3N0vagXUxRy+v4tEik8R#9U!TzQO
z21IJG#?(M<qy~>SHIRwaz8cy~nJx)pk9}UA-K;aWCc#n0LvV`mYVh1h56(261iv$0
z4gTAB2qqTTfP#k^ul6O;=CjUsU>^KT!Uz>yizmxa>5jDUBsk7^1voy^gYzQ2Z(^19
z*EwCM!#{|}PS-EA`xj?!O@cdL=c*0C3gbzzZ=?tJjP$+<a_r)Coer_bnyA+9{!s{c
zmGKJjnn>?cEz<s-kq-RMcm??HNbh}TU$1{-NtmtRPmPD*vPciU5b41+ksf?C(u1!>
z`grd9ovt$hzAVv!0bYsJAYri?y-vGdMP~4yW(K~A)V_h<BBgGpu$U$eyun-b{aw-O
z65RwzE|mCf_ds{@l2ar%NN$$gCRr%CU2>1)Dap?z&q`KHUYD$sd?@)y^10+|$<1o|
zHc4J`k7TXnOUc&~-TfwhEb$xu(<6O9=|^m4pI@f+Msk}ZFY((w;txw6k^E0gKcI{5
zBqWo%>fdCN+a-%7ej6g&gOb&fwGzL<tL1l!gjl~#>8>Lqd0R4lTd!4LdgvXkp1PBk
zye0A5RPmc7w@H2x(|;uXsieA>@=K;kW=cMld@1qUquXnZ-$9dAa+kz!hlqclez^3f
zNjCTYQo8mXHDM)BN&L2t`1k3*l)ic=z40y?zq9w&X)nG~vI^ZUTE->YN&JR=v1HwU
zupc4c&n5gic(}XbCHqMZku*#ER;P&@_wo9Zcm00-v(mpH`K4ro<j<0psEuu7dC`9<
z;m5<blihE7ROr$pxka)}lGsD_Nc@(mF#G2E>*T{P5Z@``*M<4nUw%NC-|-#UN9UD<
zAM53pmHEM5|0~Hp@At*?d%*|y)!f@tZAunN_*LAmB|H7Ves9;u-=m!PdYjk3DnEX;
zlwbVJNJdKz?x)YjNGkXCURs>w$FGTgB>U>U^uKu7Uy<-ToN>Qa+2=++<ncZ})4Y9j
z{z!J&SMx^Vx5LHxjl4R^NJ&;QT5^HpVaY3!pucWBB%!22QY-NrznsQzi~Upbon)&4
zvQ#QY5=!`ivni5kk~Yaa$+Hr_;m?m!eJuH0^0g!$@BPx!S4jFv@b}wU;`~???Nms7
zJKm0t_BU@AeP7AmG5b~GizM;-KHR)-QQ{q|^aVl59+JKieprcLQ}WvoUEBGcnX!^n
zB;zHMBxgw0OEyS8k$f%r$v~~U5`Nv}GYLP<k=WlJch5uqPm%cF2=MuzQQYQvPEp)A
z$z;hHl5-`*A20FSFTW>l`|t7d?GsD;ew(zPF5D7+|6`+MJK1)Y@Su5q@566A13qq#
z>pzOcc|C1hH%RkPIrtG3|ETX}2iq@f_(yH~=WP49PQ~%~bAEV)cptaszld9{m@oc6
z#9gPDyyR}l{gQ_yk4RQZ{(X?v6SYnIJ09YzRBf`|BJnZ5lHZq-e@J-FxbL5j7^=S1
zOGZlk^YVE@x!-tdJP(L}L&5{}87JEG+X2eSSnxn?a{H~%V2!7QhhaZ0SuOdkgomnz
zL+#nrY2l8Nbw?`dC|#55h0#Vl&%IqXMCaULI=5uMQR266$Wx<vH&oZ4!}Y54XraVE
zQ<ew!^7PJ2>hvaz#BUeKze94d<Z8)HlJ2qiM6}&0{ZA$LOJ0@u?H#qbp;mjUg_^Ea
zJ3OwHhj|W_`0WV!oEr1<`l-_0BDqa+KlW%N=S=l=zWP94{6^m=N$5LI?4yrsB|N0G
zBI=`Wn}=5JF|63<_;~Isf8zZUO@01)#rQZLIm+`(2Wq^Im-w-Z=kZS|{XW0%6mz(a
zA&)$qBZ<e2i`wx|>GbVip!SvyFUEQO)zaT8S&UucH+&zGtdj5$P`|}>)Xy>JX^ehj
z43|lGq9SADH|Ea4ntzN9WA8Vfgt$WTl;j=B?<E@~e%mO%tKxQ-3}F678;|DO@i^s_
z93k-=&wKl+<UYv*l7}RZN_aNhQxgA7I`7W|c6eCPjS?OM^Eb&i5}pFHNa7zb;r)3?
z3lC^{^+)#Pitp1Ob&A*OD>;o?!<#f`C+pr?;vY2OJ^uNB*oi$$!V^UnN&Ln$CwM~3
zqSJKFOZ@hOG5X}FgvU#qAn_agQc2eqdoF>0)_{M|z~+Ab`43)CTo1{PlHL-YZ_rn=
zkAw#|@W_P|C4L)lg4#M!HJoA3Ch_`Hqz}GFKV3SW48XViD<nJ|fbWg_4cljuOOy{E
zzdd@g?zeO-LXB;O#BVpBs&zx-LJq!B?6>l9T1zB6(~9qc*U3g(e&fsN`$z^weqMjn
z=@#R^8QnuMLnY+q8_^}_=y*u{_mqDw{+h&ZeChUY628v+orLf0mPz=6Zg+|QVzBq;
zTckrIM@Wv5)JaB4`1)p(#DBBY`}55^zK^z4QaW9IpP@G>B!25D-Hwu>lJ_NiC6Mo4
zog(qRi^Nw+`pxuFs!jWRvCaE=3txFUNy7J&_$rd$_$mzFQc0YrcO)f#<7*-hNgk6t
zBUvqZNAi0K-`()r|K?MAzK*k`TH-gp2{HEq`>q4uVDMYL^rIzwi{Y{F(cdB+Ux4r%
z-(leU33o{Dl`N60kgSyOO#^bo^DmGNfAoB9!EgUtj`!sMM@dP{pO3^}FX3b9e8Syt
ze6IUN$;%Qx#qPJ33-!jK#D9F+e|q@)>=($-Z*V@Ce7A&8AN%d<S!!Q$tAr0#`YkhC
zug4@ONKTckl??1i6t=31bxSMZKU-Zd)7l`}K{82lkHl|rzY+4~gGT%l?Ig)~$t20M
zlHW=my+n^JmHfB)_y@7y;QuK<|IzZB_oH3@f3{E(x5FQnJR*5q;<vcY*UNu~=r8{=
z@mt*QX~lmd;U849Bps3~B*gg*eureS<er#5uJhwkJ<r;Tk8j-X0mZ*8;r~9n$`^mX
z-Ey_gGfBmKdrR5tS9j_?5Xl#kuOwefzLg}d(VOKG|5orSaoz^@+rU1&&()<wv$^D(
z?%U{ZiFktjGbf*xs5)m#Yt__ARpTd2Z$0OnGp9{x9WbzRVAa%f&S|Y`n>MvdK2<H_
z##K$;|KI}$9690a*5exnoH_aIwwYCfDi5mMuWIty<IZdwKOy0qqn)bLCbv%8M59}|
zv(B7y>eOiyD#y|EwAS(CCrqrIq{<Sl=S`U~O*9aleAWc9q~0x>Ipx&WA5ECqI$`SB
zr=BUDf}GB%vbCObMuAT~=S<>U;;EC*ZV^`wHKOW`pE_;YgsH8@^;%iY>gu-qhb6u8
z!J5*E+a1#P@!ILZ`J;m#Vb2$X^Xh`OnxI={RsBcxwZZudgCSwf(&2L^KmBI7UG4q#
z;h22b*>d_tVM}n%{FdNnQ%d`kyc3*1@%DY|&OEba=CG=^u(N(xeM_**ik1_DQ^SRG
z+rmBShu2nz3tECM3&)PCY6)h%F?Li-{eYll;rN!8;Lo$(STgpsIg`(9Ic#{<>EVlQ
z!Lx~umZ1CS;DPq}bC+J8KRtLRu_Ab?y+&9gtZ;Znt8xY93xl(2f?k!u_|aoW1-&bS
zQ&$ALPYh1033eMD3}09~K$Ua}dj{uKQhVq0!QnN*o+~D_to><lUd;i)(D~Ev9}}Du
zcBqc`5-ScmDHz+)7Mu`nTpCn_9l;YlO9z!4w=_IGQJO3%t1D|!NAnj2U21|EmF{m%
zkgCI0zqB?ucXV)f5LS%nKSY|+HvYWHpQ|ouyCbf=2xTpQCY-P|IBb1eRa@0n1NYs(
zw%$Q-aY<|2ggf62dWNHijGr^6{>8TGZ9@jv4hbI!P78Z38oa1~b#>5XVsL&~=jfRm
z|2Uwf`u?DQSku{Z=!ksnp;fg(kILb-18QsMgojP2y}C9WJbuWb`%e!hEvz4W;+HEA
z$&YOdwrveQpVd)2_)RxNOM-1SRt->5bTjC&Bph?%-2T;*YEL+{dT`Z<0pSVPOm7?-
zObI6jr*0fjRaHHq_N6at2iIy6gbN2$4H-OX@Q~W3Nx}9jW*s_Y@Es#nf<|PA)?m_T
zX4C()ulUO49_{`<kgs)P6rA7j^+EdwlWUd^o)iA?-tdVt7?zS?dPmSzEzPJ2x>N@H
zgq1B}pShjR^ypuLtD8DH^S_(WGWGPo<b$0y29s)9+BV;6+w$6KYug;c^KETmtr7QE
ze-^d1Ey@RXmxpyrpI5V`^Z0Z1@wY5px-{5+_0pANg2@YC9ME!r)PdfE(%%{UIo9nT
zQ9r$9-<F_t{q+8Gf}7e)`<4V<R|nHq)X$xB@x^$QwYtBh!_&bwb-`gB!O`obV00gT
z^XXZqj|xxPd;du*pBfjA+-JYZ;j&<-H-ZPtJ6a};d}ZINVRr>DoUt%iQC^wP2fq+I
zb;Z&kvwELkkmmV{mtG7G3`g%9Jk<V1aA3!qZ{~Gc&7Ra0p1AM8U|dab^2Xqx)?j$p
zbDyBLb!9eqynMd0p02De)idQa>U;3S84Fv2=emb=Hy*69))~|>be|!^s|OFMt{)Tp
zXnuV-U`E(0*m?fN!KpRD?xTZ=9YL46Arr#sFVzOqmJDwT%kLXf6?}Y_Li@}QPOc34
ztf&vV&krVrb-|9KgO<u*=Z)cEb84HPUH)=Qu-}Sc<dR^&(Lr`}Tl0SP6Y_I!47#r#
zT>Ir8r`Kz$47s+pvpUR&Uj>i0x8`qudcT8%(`$mA>w<0_L0d<#e`}Zz#;pja&#evi
z&`Bwu`sSeDiZ=&TRfoMM)b7`w58h3`vFyQ?w&C^R9s{Z-wG5x!6#jMJfz@Mz`^v(e
z>i<kPs=qvMVX(YxwEF+DSeuIPRvDbNWJpte(DRM(q`AuvdHIn2_r7GG{S>&MZ1wFe
z4BK77ALP8yg}pB}bw2*vyb)Ye_C|19+s4wqz4DVM%n7xc?%ffjRs{87Yp`p_%uzv)
zx|U$n!nUwav&LZOR%vFe(CW7^*g2d(p(QvyoF6vc)E4y7N;7g}aPb)%uif{!V3+xA
zw+|RH_^?oC@z}}{I?0YWi8JlR<L3nF*1=<fGnNF~RR*{3wxspALoQy~HelYtBc{JN
zpz8Esa_NC3El)gNJ0RGhE*KPcgjK_9UkYp24w$Z$bm8#&!BxZSJ2CfOF<{d8A$NvT
z!m6OTvOb&;?7O-}<3ByzK74cNv45<uKUnRK7^9I4Yr_L{NjNJw?~NCO5v{=ibwPb)
zmCJHK-N-BVyLaH!IrUZldODb17o=9dSU+Z1)e#Mc&${Fn1ILH;^;N;~>w`VR)xkEc
z!SQv$LE#(0F|EPxE-2lrq;0}m?tIX@wVW2$@b^ppxJ9UHa$B%!>$+go%!$H<!aAy%
z6YM=P7!xjRaqdC)h10)yfSBL}w+aV)&u8y`{#5a2aEtzyma*!TmT8%<(?m*#b*um{
z)?XW>-oVM3OUiUPPL>Sg4{K9N*oVJOZhzoxLFwIE>qajNzP=z_y>vqGi$tAf;>6%l
z&C!=zCkD@H|1VwZf?u`Pg`L6Nl8#ADX9a(q)e-E|v4A9H3(H)oW%J8|>AE0&kO=43
z2j9$EIH{>6xTIu#@b_6Y!DS_t!M|oL8Gl0Xuf)XQ^7i#@m#%cdE6NsiLaqzOtOkRA
z8-Xo*S{Cf6US7QKK-d4W6=lCVG@Lv)?0hQdvOX+d8KmEM`=d`f>%%AK1oyU+qcj*0
zuK$%IP3~Bf2C1-8w*pIOplqT32CK`0kzqwJbK)s23}`Z_UZ~6C=t)g?PihLfE}7In
zn7HKDpeAg6@${BEwQSGG1l>1k#%LfqN>(%lT~^#4e5IjyHPJESsbGNmeRN0gbbGiY
z_&l-k#5v(UO+mL6!7=NDmF+8BtE<bNR@qw5=5(DHT%@V>?=Gu_qsI)dY8lWHbe*_(
z>C)+g>w_+(RVDSWs0XcW^W6Acui;xA%qv-V_x=Y_st#^haAkYAVrg^maw6<#MyJc0
zZcI9ck31wiqdwRxTyoMAEy2?Eh2iy0!M0)Lgy1)=OIqg+J8nX-(~{uKy0BNh%jD)(
z*&vreH%sM}!IafQM~&!za&UfSkgELKl>LIUI&@dlYod<jiW%(}53ddmToR0&I3R4v
z2fgZoo$Ts2y6naJ0cYxr|DLQ>#CNc;tsQp2<h(BUtwTr6?SH*%Vxm?Gt?#WtpUR-6
z=4ZjD+bmqrKlo_tiNSR<M+cwibh&9}UC^~AnBE$`cw*;YYMZMDR|P#c2Iti1ejqqE
zta;$jA>oh_Girmg>w=y&!P%9;4okG6DEhpP;Fnu#7$=Mvw&-VCID>Awa8G<fh18!F
zUU>My18RertAn{e?g-{3D|8Nw?g(Be=?GTMs=FxYNa|=_Sa<%?&Z%?81kcQ>>vRi;
z{w!^~cyMj~9WPF(pERSbZEn!5Mt_F{oh5a;>#M5`=9jbvU(V`K2`6_1my~V{uFy&F
z*OG}Ng10WL3+^rrCl0nw+%zj39ZanWx>p7tmxPtI!6mb5jvHJXe4!c^onBg95|mHm
z1P;o=%Chju$6E$h?H>H0+lrlAA9$euVW$N%bVpGW_G+Hq|JvaBvqvut{@QzDaML&~
z=9<^t>w<G@f^AiHeb8;<amUUGRdBF<I6pXeV=!!DaIn_%`R!VabczqH3l6C{U~1S`
zle7E8r|VywQ2R8;@qszP9qsFb-|JoI-v)1{H<tD(4<0@ztemS=(cMo^4B9G{y(&m8
z>_28quw3~L4i|=N`&XZF$mD$|2ZvV%YZCfF*!I!EZxa)>SpPqaod;l4Rr>ZPa}X~C
z5doD|)S!S!NkUOt0)!-xNjC`)5Dg)jOaf_UX6Vg?=Gqcut(YL9vPzJ3EeIA?QKKS@
zihwS<s9>*P!M1+Sd(LxbCPVQ1kA~m8?>YDM^PY0gy<?hht!^Yc(wzOyl5eV`4}BVg
z%#@s?svIWy6BO8;5pjBQ1QX+LRv$%_sP#)^Lb4;G9^dw>6;7YJYP0Gar>5nj;82o1
zVTj{kgt~11a$*J|kHTatRaKX$t5elb8R?bBr~Uh2*S4$2m!?`V&9m2e(sp<T>CP|<
zqpD8XZu$3S`A23*#&oWcZ~YtM-Qv~RKDxc?hqAnPNn?W*gCfS94g-ou5>YyN2O>bD
zKKsa?&z?*1mdTYrG&}p8eSEomEmu##Y`hj>l{~CoU1D`Dom{uv8Z$6m+iLZGPh$%=
z6h(_?$c7s*3%WA`w*y4^g+r81OOFJj<?B@W#}%u!z2x6p<_+3?bc}0Inhv%>b!_~j
z+~voFcGOrnN3@S?|A=eqnlY0Ppc$u)j<-C{zTG5{2zAHOmiC+5?;d1|-;5^H#6_2g
z&W&5d80r4LM%AfS)zp@9&7l1G)|@-ADAAGl+N(878+E0t2O_j>uzIOgw9#X&BWkYC
zqerIp$6DH_-=jLTyy|K=sIN6f^WcA6r7q9h4SASQdHibRv9zaRmOpn~d3{ar<y3bq
zML|EX#Mv)mvD)Npv8Jg@_IuM^F={z1vGy^rQEge^>>IIvHP$)HH_UFDqYgM*)aJ!U
z{MJQj%}r{Zs*T4KtL&BU_p13Nm#eoI)vE_o?bVn=sUH?wjcQLsi*-(OQ@l6L*}MB_
zb%s^4;}v!P;+Cy->Roj2pO&;dH)~|wa<3=e-(cN0+P}&hug)xyOnln@Nc&hnCOxGi
zM+_YUBR^ke{|D3|hjUOwd>s~XsfZE*TgTUoM%uS5wQ9FmgQi+J&9Iox{@s@EP=^;E
zv0fXH;b~T1M4$ugSiVJl?r>ffq3&6VTqA|Yutt2sS)%^!IELwSiQ40cRwowKHlg3{
zKd3s_&bre-w13$s|D3Vcj*U+nu|ak6jTtqqc}09mJl1z5)(_1ttS39iVL4_sEN@nC
z^~B22ow-$Ji3c#Ne5lBZTL4=<W`$?U_h_abx5uhmzN6W?)$c#5{@L>wJU=Tl@qfeg
zZ0m`Mh<XX%c3|E5Vo~FI|M4{UTx8tN|9wj~Tj#tYxh#14d;cIA+Ocpxj?q(UG(z3t
zwDPYXC9T%k-q-$PuW5$S?b8}Y%U351!pCZ?)wNlDx7gY~%KBu$;8OL~MXBo686^j@
z)B<13Yze1*N&7w5uivuem1gym!;%p{;?ZWcB?9B~z0zFNgG+0h)vag=M;1H#L@aMo
z4>+x^$JK3%t*B=8NQAY&Ssip(o14{s{qNmNto==}{!N48XQ@e0|1F{g6ZWr{__nAW
zJyK`AW2G05!-hji>Damy6y(dW@$MM)Qkk_KnS2DxnirSsPgg~a&FaG*+K{!&k5~H^
z!f-v>uCb{h1*6Q%3sdL7##+5b$3HyP`rb+(HLkjJOnmb_5|&5Z*Uou4dfitG;}m|E
zZb8#jb$DTFDK1F+BmUv5)UPGJb<!XI)1y&c>QmP=s>A5i5$cT|o1K@QX?<yZtX6wU
z(v~~>_JGdnYCWj_>5=IQ{GV{6LG~IHKPAmMq<hvT^%jh0b3vSc?8vby#kY0B_Dr`s
z-RiYo^|GQ<nwqS5HP_0YmnS3pEX*a+--Gol#hNP`IxGgZt7OZ!C1rcM8%q~;ffeo2
zmmFK`nXbx=4QpT9UY&U?N6o8^xm;D(Vjl&AbB+~f?N9S(S~oYPx%7WtRld2`ptv;W
zu<lti)yus~)Kk}(WZh>Si62zw+Mb32NUuYhl74Nn#;I33S@meGB`22Op6>RKEiM~7
zJU(HhXU^b>8J9bw&o;B3#`dqLt!cpG!b-(LM|E_@M@+@EB>I3Csega&W?6!JO4LQQ
zs<1@;#iu-}>Y~)ySn~O>^odCu-JtrnSjSyDF!gc!?S3oWO7vr?_tCuVv#^}=#`rg=
zX|<~1^xETkXt3f6)F<=u8|Ey(UN=q*cO8y72X>!)YlEshrb?`?sNbg3>a7e{y!tT$
zjdDKbt2ZsRj;S9VW`@<$zRCI&i@1hYny`$6)th!q`K;~g^+mdIW9({gHCG_#>H;(q
zbr|DI^8vMY0fyhx@-eg52B}VBAHDp#<?4ea+s9*jtWq6XWW~LLTNl!2_P1|V-*#<L
z^%W)0EN^I5)11)}>b=vjYM+0s*{U1lDfKi>p4FtbJM&ZK_?xYF29%Y0reNRZ)%E_L
z?3ITkq!&gztGmaAy_7u)IeBWnm2ah~sM@lt)d36}e=jeY;<tMDpH<ep1r7Zj^x+0i
z+GJ0unuK}G%V$ZvJ1R@mOJ_B@GuMhGlJ)%;l}E6+D8Xh@ew|u*7K|WFkKS4k*KaBt
z3l5~Y{ND6HUhe7EqCP4wd3Je2L$fowht*A7^w2aq{W>hf=Qd+L)?z)YMp|8)RLPN7
zEI$TJwWUj{db6s;nl`W$t8TObkGe~loepG9eYgN?+%y!1zX_{O2~w>%O;$e(tZ08z
zEdFo85EHHbxv)gN-p<rsYJ0!O8FQ}Mc1AwZyur><L(LKE`vcay{fCrJ^{D3;BN@}0
z)W0IkMY<%d16KE@=JG=If|4oWrlrSLNt9NPrsk)uZZ1#!ffcS8*^`TCz+hHvMek7;
zw_I&?JBYP!!<2aS&>1DO8cI{fc-(1aWdp2kPpdsO)@B!aDf)gSN_*B3^~U1HQB6&C
zQp4(8J^w&c*kZXhEcZAEoU3+8qF27FZG3gTb@nK0#nKE<nz|eF*(1(;S;)J_xYGv3
z$IPDTOzm;CD&MZwFK$uC+c&C1^I?N5KP>MtWNq3Pl2B=@2hnc!bg5O_F^_+#OQW-Q
zw=tuxYfz8)oV_E|+Y6+*ATjr}v!V{@vc`_kM@yumIitHRKiZ@|#U%NqC5_e`^}&Kv
zbe;SLOefEEd$11pz>#ltJJ7Vc+CO(iGPbp?=4n4!-K;u~`fVZRY-_rruD-zrYXiSH
zFFQx4YJd9!J5+~yk9E|o4xMSWAkRNao*$~NSC1mi>W%q6^+<c4dJEgh&F$kLr)v2P
zEHoZzpZYx<tkmUbg6gZYuzsnGQ(s{BS-v>?o*j&$W4$}=x)`gMTRmxF(WB?lntFA%
zRqw*q=yK~o+AV&MdL{ys^b*-~b6P#*UsZ+u&G}YW|DYIEp0D;r9NYPJle$A$wU}|O
zaCw@n*yU>3Ld;o~pVnwiMFFnB1XKOE2s=cl!M1)fAfr^Bz|vqf#(k_i%}6Qs!-?f^
zhyAKU?fOSz24N_AW|7r+&^joI#smjp^h8Cdx0b-}99E5{o9sb1d9<qJd)-TBmu42u
zhxc|WN_tAWc=gm$EA@ajNXwQuM@E>=_lkrF1Eg+h*V4RYbQ+phvg%lCb$dlUyf|Oo
zbylkSxU$5W)qhqgwhFed7w_$@C<ASz^mMUU6t~JhZWXop|KJN=mHOI=sRu^-kC$v$
zpDb=vKSx;gOm+ljYOsmO=uK$U$DR3VzjJf?<X3gXB`}L=Ftu+w_FI3!4&qabq<=cC
zm(|}D_JMxa7Ffi+i>;Qusu2eB;zk&5Z1L$XxM6;Yny{JUVK?U$-LalLcG5t1(~`}h
z1DZ8f?QvSs*1LCSSlv+HXGh=mQIqr1?&#vi;J047$9R?p*6m$4W2txjQmaMcSoP|C
zP3bB6znVLnvekmrkU!s}>gNuYFHz0Uw-P)n;_JrV?;LQpUZ!AxHiKlR#%1fBBhSVb
zl^!h5!{~zH{D7)<Cc+$@X8DHnZ%{9{uUF5_*9p73Zi_B8)|y^_==##%aNi_-Oz{}y
z$L9S0*kUaEwP!Qi*UOAiYK9f{Oo&$3c#0^3b+5zvSaf=cmLB_`GM7l!VEI>;L=k%8
z_>dN5^V%sh4vYs`acXe1sxoD0q74SC9w@I@hq~okukC<s#1j5*<(95%^;EZGsvm5V
zg!C+STBMOXKeqmf-30lDxldPhXevCEuD{*7VDJU%T6Dm=8R}4kmD;<1Nrt+h5&O-a
zEio}_cAV9H>LhhmW0oJob?lX%kEc%Bs0vCBLV0oH4$MURZRQ00F08KAoJRcHq`Zx?
zQ&7`5L~nb)GX?9KekC&S{d-Cy=8pYK)U%6y@#X5fMJ;pP{%Lh}s!`QG62Al+6xckG
zZ3?WKbP&EFGPzeDFY>8-RSE7hr~`|9P3z~Bx|`JTX(j6BKKbhrFzzL&&!_p+&%H5|
zQAg@x)R&7=)mC)`7eA>!nqtNE#j+r7)xnJBK{Ms%&3xbe*qga4!s_bFSW&jn)1Zpu
zO5+<w#g0%Hq!wX{n07C=%~Z$j@owC^O1t-8DyL+cagRw=SC*_d-(ypo|A8`%Xy4NQ
zUG-q!67|m1IQ412RGq)^N8>R^PxY%$oJV8;nzN-&J}cGc=_SwZXlU56qp8{NjZrUN
zQoBQak#9x47F$yqi@QD;U(YJ>&uMCcRqRxPX?!IXSDjn*&9>C0^~f#q3ukrTWj<uS
zsi{!^s}4;r(ajP!IsQ}UZ@yo>+UJN`fnxc!PaL*vrlpQr?|Bv*qH0Q<x-434T)G*X
zy0Iv_w;V^ds+%us(f4tN>wi^2T$<nS8G(QN!GF~Ii{emMKDn=>K3G(Or0A%n{J)s$
zQ<uOlOvSRiF(OS(vNn%NyDkkA@HzGIR<n8>i<ZW@rSYRiXO7AonK?3RWY!4$1-_-H
zrN@s^B_-<I+RUQN;*7H48O8A7AAaS`teM%@%B~1@qo<{+Q6;L<myK0?ss9iE&S%on
zQsT$BPW@lJCoR*}zf>0IrDgs!|C+QS&(vATv(nt9AFJO{XLVCk!Bn)z9nS5l4pX7u
z+ogg&(5GHnoEoE^TAbR96_tA4i2-YVt-l<tDO>GZT%taK*E<(t7pvoDwE?b8F>3eX
zRO{k_V;YvnW3ME(R2uF5PAs1f!CY^2)~orAy#6~}|0*``o>;hF)jNG2_2uGPiAG=c
z*c|Jrv7_S$d19=C&P#f@V(QfVBWm@u{py!KK2&C$`niuU#=36I(fHBVtM4MPI$OKM
zigsT57w52Zt&CS*dF_=Q_^7?;C0lU?Xq}_Z+AkZwQR?^J*wMJmN<BVs3`X9oj_trA
zUQNf4d0}nyEAL|Xz-{G-wCAES^D^E`_6%7Wk$%v6J)&;vpoZ&H>(UOS&mKK>*?JhA
z1@*(Wc59lY|Hp=0M4I2q>h@E&6Z*fO17bv4nm7KC{`b9r5`Ka{Ap8_jmzGXlwhjOR
zMPv+mr)m1@z(K4c|8TUVW~%Pi5r6KOxut4O+y+nlI4gZ%X}KymqGGl?2XuQ?<%=1V
z6$0j7^Xi+_plCH|yBg4_CdaA%(aK-1P~n&6*TGKZd+t%^l&JDJY$xx=Ep^<A`+nNw
z*numT$Esm1R{S%#BWC%UN}G_kfu*xto}+^r;zz4a$Mi;#9?WCXJcD9}#A0Xn9II}P
zJ05e(A7C`98=F+qlI<AQaK|HVz`ZdsgGybPnU`Rj$<hlP><(ZSj07U|PaP#YR{S_I
zL;kx~-MchDQ7woY?HMmwi?PN$onkdLs1Cl;LHCqm8H%m+W9rt3V-XEVNqR#QHnmju
z)b&$Ub$$~zX_~O5bKmUL3^-hXo$Ae_)?4cbmJWMV&GM;p@~_ZkGz&Q|6+3<Iu_kp!
zNnBc*rI&~)&VfBpnGtDC{;Bv^7o-_~JUe3E#ZM(m$zq=q8@#K$G4CFw++@A-wCCaY
zPg}{mBhsvY=)XE^zA!4y-}Hr=A9bHK?ZP!bMyP?Qbvt6p)L9WfMqFvduT+;rINRfh
zNSSv+8O~ie<`kCu-N}{3j{J=Dg2cS3*~tY7_+hJx0vrS>^UY6k7nP?JRu-4LYoM!e
zSKwbi4q7A?`U>?W*$Fub83oCid9J*v1rTywnG*{V(x)U$&BgJIn(8XAqp-ZZs>oZm
z!0nKK3Ve=2IS`^RaV6(EX1m?h*)>%~Zm$;yJG38hca)dmXh>msZc$-nrMt%K@Yj@O
z7FHk-Utx{UQQ`Oc#=DVdM@m9&N<m)2`1IrgS6*_CPE~GRLf)j@f~+)0jax@wP*POs
zsK)V^#Bz6Gjia>CTbfrmv)pY&ce%R)`OTAPD++W35|y{Qu*e-+0#ZgfS%@evIX|x;
zDLFCSfx;+uc-+3^kRT-V0&iit&rwuWIR~dw95pCHL@MQ&<Sr@n!>OiluEde<uJrgy
zb)u7Va<Xy?CS@k3XXPd*6(lAl<Ruj3CMV{(vND4ycA-=<acss>R9IB%F3xn%9bf2m
zJA6>(nvyA~tdg&l#f9Znm2SKC!~-I8RD#*Q8dFS2cV+P@vzlF4Q&^F#+X24n+R00p
zSdf{Jk?g1{FLqTLx5?6kqzn>#zM8U`exDn^vll2TyJ<`spYBR5a3!IDi+#loeN@P#
zLYHV#mT7#MS((X>guJ{Q*Z4_!$@;tyT8y`-u%sm2J;z-xMe0LcNib-e!6?0n#de!)
z6`(5<jUqE4y&!ke_}t_?$4q}&c`=FzCz>RUxw;5gdv;k>RimH+IS8btKzENo!$lG3
zHsqLDR#}Xu>t&iushsk9S5i*$1S!8smAVj$jsMVgR*mCMRUT=GKDV5!3e=DzH!&eI
z6OFu}AUh{H4_$5o+KV)hf&w)4>Z%%_-M%UcN^0Ehyh2ZUnb#-LCG)72i7v-o!rUg*
zcpMe;kp=fWeNro!@XRc9BMDnqN@aG9yQFNMTe4YHRUsY5F0bOMBEQHcXdOV}m6H-O
z^URe}lF9nG*JO0$vMTh%8uuI%+;~%Vl0e;j!)ih<b?Kz($}-(LcT#S4a%NJpv?Umr
zG9QApoAjj0*_Bmu(K3swq)zM<p43{<L@QZTXhU9|X0(OOwz`f^zwVr_%*3pm9CS%o
zyu_>|*gEv5x!F~7VIH-0sj8lzi%wAK$uuEKkJJq_*IgvZw9}KFmFv>|x~LS*v4+j9
zO=CJKGd(#sw*V$BGbtfmx(CWi(wr+MwW7dNQ{}JbceI$c<1_h3?h18b`Dd1w6`=@V
z3-s|jbZ^uht#Fm;mJ`r?5>02zKyN8`n4avYD4ajjomVy6U5WTjN1xy>^!aPt#;|8*
z<YlELXQDZJ#m<SfNOB~nCuiV#-GgA+E8Us?ikT=hU8`<1ByVZ17|dW%w<-(iG2*0q
zcAG8}l40?4k_$3inFYD7Y0277$mrwsRn=gClfldwDzx5G7`7thTt+dwM$nW_Hg{qy
z(S__rT3J<7QCN;_XWIn`3+st0gE^Aa*=d-R=|ba3E|`*-l8{r77fg9#7K{-}fu$is
z8LhO*cuh@JjcGnc)@?2)IX5|HG6n?n_zAB30>nf^6EJ>y;0lzFODu$p#R-9d*)Bib
z3)u->l_gaUcV&_E9JDBQ2D>;UG-Df+s)}Sh4z*9>XpdGh3MS;psBh9|3cMJ@p6==5
zb)wrh-d|FJ>P9@3-U4)x>T)+aU7^osIyc5zZ=pw8GfW?60<KETAN;L)jTtl&F{Z;V
z7Q5kIHJ^3kbyQ+B&2?8h$_u?d-K#>%a8l;@tVx-65hB;p9P&`PGV{U2LfW4L!%~t7
zGh|K?th{WO$(lA7ftHYtwrs42UHd4FiOHr7dfn(CVi#PMWu}RsNb@Vo!^=_%`cJHL
zpk{+3QNT1$PDr1WjB@k2E2@WNBPtm$WSkFNWV&rZVpc|WdNPL8f&z0?wxFc2tXz9@
zWx^IEq@&k}MaA{u>7yAaXx+{NL$=HZyk(wBcX5<-EvaSO(u9YkJ1|p}J2f{iIYXud
z!S*EI^t>vlN}807nL|PzCZ>UDfw;CcTqGq=NSKtK7vfWFWw0#5I$%Lga(2*hVouhi
z>;gUeD#*&tlWZj8r}Wt6i|t_^MTAM;1XvYhIVmqm{AD|0N~<c|F~v1iF=#`xeO1*l
z-l76bl;;eIDXc0-na1eD&5k17c(u9q`p{Z^GABkXG|YO4b@(eoi&IaRSxRUrXn*Ax
z(!)!(Rey(|C*qmOlQ|=9H7C+}l+I>mbtp-n-^^b0+*GVYC8l>~Y|yr|42>LSP7fBz
zbI^a#al~*`6jbI`yNk+7%G`QP(xs{GM)>MMs;sS6A;-^AJi2S+=(w(TnJd^+1)WMn
zm@Q|^&49tL?n-}!HtD)0aC#jwrL-$MThF9*$P>`ib5qdFeKPqsk!d5FnPnU0T(cyS
zT1{*{%fWQJXtpj5y)1H6NS{Lq$UKWyNYAx&AJ8o{WS%n97{L6Ba#+JjzLF8a;x#iB
zQ*yJ*s;k|c5!$A>LXW;hGQH(2A~;ZEIKtveuWl;JD#y?FxxLx$nndY^B^;C`CA#)8
zcwiI>bfN-dI&|t0#_ZNsjANKimA*Q7ou2<osJ6wE@iuFM3`_;-GUSOx6%$laR%4rD
zSbBSD0JC3QY>%kWqY9-Ng$xVmV6A6yIar{{B1d8{<BqIDGF-VC33-Vr+VUelSx3#3
zoao*a$hO@K>?ufg`lQ@ow)E6i{GwVC{WX}0`J@yRtNa+$**|ph#O&K`Quj#Hs$c_P
z2~Mh)YI}kZSZV4ZfTLTm?xmMF+%oQm)M)`q#T%HLnHEPA9P~x2AR{}L<wa<TXtB9%
zwI9hHy5y;s8)CrzY}g&|%G6U`Bnz_>l!iU&#@Dc#Vw(+Y59p>t!<v%iN=y!xyghtm
z2UdodjOa<bEO+#<nJaU*kO@&pXt~K(PQn~K8S75$4iuK_QW7gAI~T=mO}PUN0xdb+
zl^e1)(d~uZ#f!%VL$5}7rt8W~0SizVA~R%|<tma9%u(n75@=<1Cz1YB;L4nkrTufU
zD<h}2B4u9Kguz!hie$<PBZ2zB3Q!EQTQ?k7$VzW;8Hm1)S-LFg#Ry|Hg@u_t=x4Yq
za?GZOw1`ReW=-oAfG%Pz*>$tRW`bT|!@EofbsYqA73}!I<?mEk_UK7dsovBGTXjjq
z$VBK6WzvX&F1fsdjRaddUbhUO2n+K=m<w!3aiS=brUaP6N~{WHITcKf-Hmm}4R(h>
z?FPDgMmBz&UDPN7Gh!ro8M7>TeT5z=1bf{WX5(~LO%K;|$s$hixjYTcnM48O5I!cO
z2+(8#RTg@MX;8Y==`jUY%fJ!pMFI_*kxP+Gtf|5e^SI}leTOoyS+huSBd*Y9%Z#Ei
z!?MDV*-Li`H>_qvrE~Aflr?4|=B{}OIe8Afv<b{aF!*EoTO*CEqM%I1dd}R@-PmHv
zDhu4@#n_aAM?ImKBO60fz*v={t%WrF#GozEgZC-c7}~APA}sUb5@Q)1<I}Se)3o(F
z)#?}JBZbS#3(R88P}0WwD$@)Q7!q8S)&4*yL3c9~AiaE$ei>+gLv-d$fH0Q{IaBRD
zQG4knfl0A(7}R?jm1uw&g;=e)y$Rl;vNE%ofH{1H9s+a=;Xa{skYaT6N_QX((`oH$
zsIIB<RTWji5QZ30saw<bWi=n{M4^^S=D^%VfHkPZJ_SsROg8MUVRDr_H8U?E-ysj;
zVfU=k1ZEpI78o~uWb#~5R#b!K<*7?-D7OH$d6RUSXt1$rw(Gb^NWrd0y6m$|%$yXJ
z7^NRcj2aR<c*x+`!Iww%%fXr>rO;>egD$@;YEXsGU+Iq5qe58`#KM}Q()hB=M_ds#
z$P+avYe>`}JT(~asq~K=88xWHJ+H`JEn6bqKm%&Cz1amRrpUH1*o&JmAuByeR$P@{
z+x*Jp*X#v{_h+;KsS5-lb{!LL36wk4I`fW_nyLyZ^~_wErWtn(+_nivGe!X6Te1>L
z$iQgN?F&yfN$7)UJSJYQ5K!}#UQwDotTMFeGQGoLHzQ*P0^1zrRaLY7)jDNG2FPz)
zhR3e?T>nfjw$)@rhuyGO5Vpw(*88N)w9Kq2nZbQE@m+>x28|2yj%0=#S-C!JmW~nH
z-s%bTP6wuA*zJ;eQuTZoLm69Jb>Cpm2rR7iELT>>!6bzSEh}wZe{Qqw&N{d4uBj?}
z!P3^?!fi5RX|#vH$R@J_Kb8pSj@U*qc2oP12=(gN9lYCMs*`=xEI10Xu^z7}GMn7m
z_WjwiuA<O8TW7_Dfdar*xxK+!S~$m@fk~L7%sbIcw9KxFp0`#P%5>T6ieLaL(zT4a
ze}b$@bdYHBA(Lv`R27>YrQG@6GF>SZRdb|ul<KKOjSS93n2Dphu~}bI5-=iY`>^<}
z>#d?d_Uc>Br)3g|t(-(`#p*OjpTm+!ue%E}GO#fyQ~S`Cmz<xCEnTdQq%$Tv3ahIF
z-2|<>twk#)Qzj4C2t*#Z*@f8(vY{u57>=bQOX84bndHNG%Y7fS>m6L-%eWex%7?ZF
zS(oY?NMc!F*!>li+%!dtGc|_PopQ!+o92+knO>U(Gw#a73ec5QV76<6t7+^?h^HLv
z-(r4bmfayUe$#!#gkj&pJvY!pk#kwcB!=8sk#%Sr8?9#klU`PV*(TSzW@}cW4K^9s
zS_|1GHhsk0Xl&g}<+60W=9O<K6n#gms0!8wQ(MuEx4Wwj<fL69E`@n@>v@;i3<+s3
z9GJ|$CmIbloYCKSZP-NEHV1kWI>+4c!^$qO{ixeWNeL{Z8O+VH6E+$4Qr~^Vh9-(o
zMr8D3SxaJ130p`$b9)gJK-;9+_Y?KH$;_N(8df9Q*XG8VUK*o)qW)xumAm{LigXh^
z*(6~U(o3aQrb)7D8g;7??vy(loE)HDPBG0xXE~LN-kg!UE@t!6E@|6T6=Wo5WaUid
ztuNYp46q@4$Bv@%Dz6(8XAE0*VVTs^yIl~c-h&OP{P796F)O?Jdfk1B)o<`-t-YTt
zTS7VR61L`QeZPovWnG#&n`R-5jlLq7E|Wwv&kuUBJ9Q3Lzb;H%^`46?p~@<%aYv^t
zFjbXHun?@OnO~sWAj+g5*N;2uj%;*+tcf&rSoWEl>%k}z#%JZg7V<u+*?U4aZ9N&p
z>_K*nby3)sP1{U+*f+^<ZL8&mP=(odtI#{*0n_1~kG;?ejL>CrPeP}~9`|Kf2y6A?
zuKRItWtyBhDI=s4YuBKS$SMeKHN$daYAdtpV3zfe7reb@b`*T>lVgU7YkO*k792JK
zkkG|EOBZZ&Mu{zZyJrS6MAKq6=Cu8)lpPmTo;|z7V1yvUZtZ(z3ptpbkYWj&OiQCJ
z^TMb0Z8s)8pT&8G@l*3~979j_PG0+A?&Q_&$5$myp%QmC<YvpY{z4hRWWcA{)Xe~U
zC}Mr#1hd7G2{jh7mepxM5uxnbnm`5$B~XvSO5~j;gpZL`@41R^v!{|FyPS5|ZI?Wz
z8+lc-APU{Jt@KKMf~APv#q9KiL>PF{;pUGZI5;JS4#<+plUe}oGx}@vNF-N=HCVmB
zfUaKVMXN{Q6_#V5l|v0M_g*=V6X<WPR#0X%<_$2pIqAg<UJA=Gw<(^VDBII=zbUvx
zz&=nh?)S(`S8#{|t+!QRFi0Gq^bvr<S+s<0ClzfcS7y*MR$<sr!Wj<9mtD`C0!bt%
zl>{bKP@-X&wXYfLvv3O^V`r<?o;I8zb%4VTd17NSaYM~+ty!`|5nR3aPkD$!QpYyQ
zIVcimrXF_Th88DADVZuWTdgffaEmffmF%i|7fS9#N}1^OI?oTaF`((;Sa%+b?q(yU
zIBZv9wtK$&T7Bq6mx66T+Ug(f>N2cif@2ugNp8u(DP|ynp-*pNq6ed*?5~n3Gos>X
z!zA1}nw%WEd!cuGWK&Y|msJuLfh?zFKEYk3ki%VO_ss+xJTT?bvryA@9WpM;Ua>t-
z(ktnZ1`xPkV|FhCO$ePPP!mZ!ITSPx$@bX{ETRTqfflM)Q8K5pOEt%h^9q&N?=p9y
z%@QUMdT=so5|2B_xbvO~Q($V{;jhLZ;?CyLlVDONCgaXKhDEz^=o_Ol0!TxH71w4H
zhEwdd+;`FUZ6qVGE6IV$b6Kl%RpN}1JVV=9*~r5}0uy7-o5jG%R;D(B-cp?Z(WepY
z`-wVfx|Q4WLzos+z4ui23D}(ruGDrN&8f{Pyrd~~zO6^OHd?&)XAT1C{cth+vM%GE
zuAKanr5aWm+#NjiJqigbw7cq@Av0}u4QbeLlb!mCa=F>2XBt?<npatw`LG->)S>Y7
zN-}OIa&I8mt7HKem}B!yWU#(rh7tm2EcAv!nKy7WL<WUZ*jv3m)eBOwc*vH$rvsC0
z*7Ig8OV)eXUevL!XDI`F=8I!MBDQ6#?E^Tag`wL;I%uyxh^TKijBudPb#-%%gf<v@
zE7#a+vmoKD$F}u>i0z#)dwC!me*s6c$0%lA>rfwUj>gq`i7A~!uC%SZ%xOi21q|EY
z(eoxWxFWLz)&=02n3;vMKXO)5&Xky>W0$&BkT@}>Wqkz}6mlL(ua@jdI@$^<KJ>Or
z>-y7IqbmlsQjxfjx|7yvXTzilYZe!bMsPl6CU*9g8=9lu;F6&uBd`f0W<bYeT06Q5
z&cK-an)<+u3>ngc#jJ$QIrY@ejAL!i6Iq~vX}8F1>PUFVn#nfDMP?Eg><)4TH+jvr
zG1_~u^*YKiq?F4b6f&=nOH89pz!q|%Z9<EyOj#o<{?<2pQNlX^ZCaihG)4PPuqhy8
zJWzz@m<Q@4tW@BHV;ug9z)3rE&s^U<6Kkk%eQA@d%Lhj{Ou$ktlO4vUwz>@>Ti{4G
zwv1(IqL*lLC|4FcqUKSK(CMxOteXVaZ6~*hnRcd-{?_{sA$v&L$Oos0a-Z64sg?2Y
ztJ%usG(-j%S75^xGiBKr!~BQN#byIb8y1;K=E@OUR2?!e_lxwHj@hJa!<M>hU@Yx>
z_QpU-+yAqB#^yv)wmr{hr!&Xj<bXN4DF<=WI0AQJ#Ej-<W8z&fDaRE&32Yw|!e)5L
z(Hn1|w&kV{_tvDeVa#aOS!nM6&mKeI*ma&hym(Tplv#>ymL|Eu9n$JR`<L?7t^HJ1
zUq%GIWC?8>Qug{XBw4Q(WPQpF4VpgfER7Pq6qe7N)j@{Zw5O+@<p+XsWBDtm@n)8p
zbIUR(H4`#D^J%?mH^<Dg%8Pa4WFDsXF>Mo3T;&Qq0fF`+=|=?8wPw0~bKUMr$*v<8
zN4n*ZU{+STv_f&#g{8MXQnCGCkT3y@fdWkD?4vjinWp4A91{~0M@99+4WP^ZzxRI}
zj_!OdX2gOVN5mp4;`~nS+O5WWBfCJ~lWviu$g%hnw`)b0)Y+<YItx0!(79bQJmKZi
z`gg_fqE5$G;-1jiTH#FW+-a3c=-g#xyM)f&>rPAVJi~cM$IjgoUg+E<;ib-<5?=0X
zCA`?VT|(rvHnig<?tb{&gui7-*H!p)BzB&WRCn5yE89(2r6#O!Iu~_(@#UA0h?Gdj
zE;#SQ-(kGba-F=@Ql}vykcLD%4OMN%wgB2Bq%0{UWl51!p-ns~y;*I9kR0iPc0!on
z36akG+Xx~#(wWwV?<C3d2>h)>UYDKbaMa*?cs_JlI!jRWVWkMKQeFq8oZ90@sQ|fl
zrPM>6O70w0jWT}$W&ToUyb@IVZHICi2fxEl@;mz^zp?PU41V#VbcTzv)#3VE`Rxto
z>F~P~ey=cf7L`=jE_J1vu*&JYy`!!#)NVHXEth(-@FrIvB%g_aHj~(SoU^`-(oRGH
zp4^g5{t@Q42=gfuckINv)3R5#TZI=NIk&U5=yD#0DBIypt6Mvow%e+#y3Fbr%v54z
zZs$&D1*YUA-Ep`MKkeqI1wzuT+dA7>w)4t1(v7x$a)WX>q7Y0y!mLM_cuBktv(AYs
zE9;0@P5YL*eGGmM!%v}<TdTTNlbpc>J0x$1;WxXp!_imD0e)9GQC}++%C@fEgw8uH
z^c}RI7jV@}h~s7Hhq@p4K;u|;Cf=efdDML<*pHdFYUeF&<SivqT^iAb9tJ|}Lp8!Z
z+!b%;W_nJt4^r0&ZCpP-(wPW#c-N9jlyF<5F?SE`^TG7$zLMBETX({f?M_?4q7?9!
zXZ%H>|E)g<Z&eSZ_as{~&iM%v7H%I>A|+hWCWhFO<jAW}_L_uvRwJIn=i;s6_#R$Q
ziJhaIccGdPSV%Qp9j2KODQ#mf!r9paZ)KMBqAX!2Q&zT1S>a4srJTiV`KSwNzrVq6
z^?CTk0em-g9LyVS^*HBW+bnc6f$$8&h9H=1^!KRqVN0Ywbh`-)GqLls2-Q<sNO%Cc
z%q0(N5yp&*5RSBO)En}Uy0TrW?!2p*g$b;8u`kPdIq=Ni$?*kj{S3r*a=klmXd@95
z5w6(G9;c%p_A$R=7SjH;P14~ecCL1=Y%^TlZt`(`>}B{R2ZVKsav0~75hT16k|JSr
zPD*WRWY)=ErQPpDJckiab{p-J?S7oo*G4=OBb^Vm5s^KP_kit`UuQa_b-1l<^5Qna
zO^S3*hB~~TO65x3RwLYT1MzlyDVM~~v8Ha(J~5O#GlG^`^0p3s_rmY-KpG~<I3AjY
z8LE#orSRC0h@v*qhRT&Rd@tcf<JW8?4QQj<#?FV0MP0O;5a}{s%-krd1Ii)B;lK|y
z;04;9qh@2&l(db2z8?B3kgt&T5w!h@o$K)qQq@K(k|QTE$)T13bC+@iRgZA@j>4~W
zbZHfCFwYY@ua9v4x6NR4p*^{otLS!Z_!he<Wr1H6b!<(;uQbVbyDXgJIp9o;oZQ*M
ze5jqHH=GB;FCMpbTrBmW>#kk;N|l1~e2E#)QNGf5@?<Q<FPr>^@7mu=m0s6Q{1qF2
z36Vt|Uw8?FO>$(F`2vkr==tSZxjxh3zz+_{^_Vwk8@5WJnapGpnHX7N=6vuX`Dnp4
zdvQ&XTw~{BDYG#?kPQc#ljD2%9hZf-_KRPHKcUXfN0~h@sW7QAVfU6ghQYkW<Xh&R
zut%JGzQF`xE+g$C8-DArgx?DxX#1zfp<w-`blw`FQra3JlOiXuU9_GTJE9QOCWISR
z4O@rrNHgrZo#tXam5POWH~g%JpZ{yQMM+ql5H2S3`iB)-l|_LLSIV|G{H%wcjwb(N
zk7Z2J_2ImZ`A7SeIcqljZpDOkw}c&5cg`vFn;KccZ)uUarWz%l8*%M2{6fe_EN2(y
zY^&7Dc9^pr3zo7O@3+BkHGVN<8|OePWL`ttK)XLqdD<FgFd4V|UuZd_{stlqUCuy%
z$FG32YDX|=7EBCm1IBc1B~qnHNPUlk|Ml=cyp4I1ZGYRI0;(2goBh?axjPW<Vf@+#
zno^)WcbUWXoEVv5+bBuHF8Cd{2y^n*Wf5F+p}nXx+KO$wo}`>?Gw|yW2)Acv)CYc9
z<F(d#(`}h!V61ww?J{17yd}TTdU28*i43$c;B`S<s}WarEq=8S-{sRCf9s&DhHii;
zU~fFIL!y5S`t{IXV)Ri3(3j);Zs_+ypN%om^u4gT#{}tnCGFcNb_^Ix+E7o3oY#g{
zY^S6-4)f!vzv`unq(t}AZ0KU4>n{pzho;N&I5E;CR@7YQgP$4j(@Xr|qw^14J#;;d
zO54G8&~1fois*D$D0&au;>5@deoKx_G_66x*^6ts+@O~wIwa8@fi5accLKWDFkL5j
z9tT}FeWgiP6m&D7LwD0332zwwsSeYnK({PRHyyhAFkLlt>%(-*q1y^wXuNkow>Qk+
zX6O!w>2^Z*ZP>N@pzCsD>+n8>E;dZ}8+6&wh32ixS;%jgt~YemVY(5}Eeq47Lst)7
zXg+2@w>8Y454xRUy4BF_4b!cI?r@lHD|FvNC;dP^$bw@RbX{(0osWaiML~z9i~fke
zFQFR;9jZQ{b6_o&9j5CJ-Hb4u{9<i&m@W>wWzb=o90)HPx~(BPnGY00cNjXq*mbt!
zSm&EGW(kq@FrA{Cv`oTMBInb<$+)l)*UK-nKWxSYS<~2S`Q;oJWZJ6NyL;hRel+|^
z<5%XF!LceUFp6OAZ^j+DP|61HS98eEaWBJn`3%HgPw295#V^E)!cO;eCL8l-O#k(=
zT;{e|ayioBUw#xjMf_vz!?Ht`(>nZ8xYff=(kUN_a}jjwp~G@Xe?(Ugo%}$ywr!B3
z@V5~<`9<qt_-@isCN>45k+CUaGg{zBe%5-X_|fC8N?GZ2X1xS2;{K_`1$RA<4RhD|
z?+#D5;n$GldVECJ6S}A{T`Y9tptJ3?_)CIrMu<O|E9OJD47wbAH)(cDno}dE2wagE
zbK1$Z%i!-Y{DqdmTId|N>+LJKTBl_bbX}ke_4hP%u_68((cbwLcvKPe)fkrA-*6`+
zTAy!>)*HsrGre9%v?yz;jKWZ^#LxY}Nvn-G%=j#J&-8n+zmGFl(dK*M%$ayIL#V5q
z<ki8_18yLCu+L5Zwj}Wy59PQwZM!0BM|6>Sh|&>_8zb&$Y~telz1+Ohfx1ia^rYOv
z{=a{)jCM#@z%p5X#^K-4U-gzckdKrrmL7pm><Xu&2gZG=XSrU+E(?Fs*F}~ofqdqn
z{6jzDPd)?iC;tC`{)WMigy+Pce3l_R`Gs!#6U8sFU}*YMRy*~couuzH{MqRfdn4fu
z!JmBkHNxK6fkPHI`AZ{he<RkzzS)U|n}jF+t|0;a*>oRpHw8fa$Y&b<LeqC*jnh$j
zl_@{b+v%Hy@AftL>ew_U!ts=3fFIj!5oG(jI29&EI5PfDPa$rYdbWyp#@9|qJ#<no
zo$zPJdjr0QhPUOb2uBoj_Q!Tx1x08+zD0P_MkG8;uL9xSh41z?`0Ch$@LIacH}kRG
zHbb<(i_2}O>B}!Re&k=<Z4<tS#_RaTsoRglD>li_$2MLg?Lj`TUF>u`YzvSjJo$Tp
zw4LVUIvs<cvp=@K-B8$R5V!l_FZ5%(9fnfA+pZhoZ@1Vfek6VJIfTE^d|1fGPP8k@
z$2s`3^C5W(X>N|{Qm5l{=<JUjZ)lw2wzk6Qh{Ygs9==PPlklW|B+k(AcFl7-W=R9!
z#}3byZHDUGIllYD)(cguk`XyH29etZ=1xcw$|geF5lPRrl>3AA`1^|T2yhu9mHRm2
zKlG!}lV$8Yj6#-sH{w1;{G)%=fFhU41+Wj&&qbE@KMwM6%GZO-AdjVtAun(bLi|4f
z*}m5x@;@Nj_X$Ma4%xmJAo45XADOEKMBWG5`|~0nfo$)^i!5^mdkrqKLKf})cai@B
z+1^(dxgTVEKV0OoQY2_scK)vv8Ts!6MBqyi<UWvPdqL#6knR0xx&Btj_CB)6_d>S!
zgGK%aWP8t7<d+~v!T8I5t;qWz+k3Af%UaytUlsWTWP4v!<PNAOd!JL}3nAP4ks=Ql
z_W@=fQDo^}_Wqy9Ga=i1d?GIpIoj;aiF}h>A7kb%BL5w-z3(RSKgItjvtK6iGm!1Q
z9g*LHZ13HO{263>ze{8bP1@em61fj#d+$o*@girMJr$9!fo$(HiChKQ-tQ549%OqD
zLu9$1vr(6=sjp3tAApP|3fI#d+aPa-3~2d9e0e0q{cXsPLzX42`2QI4(;@OtkY9i-
z{a@TW;`?s=$=EA$Pki4O;vR$VpW#o6Mcfnc-QNF^^yWkUB*eWO-`~SuNBUoe@Af{F
z&L3oZZ%E`#knQ~+k#|A1_i04_H)MN%MdU+}XP`Y_#_+#{Z0|XUd+0}@6n=*L_3(c-
z{ddLp_4wOJ`67Iufx;C#BKZsbC|xQ+jcR47r4Gc31wSfa-HcA@5irzUEM4%U0<&kM
zQ-PJBEla9{9~D@g8J$AM9~6>g34K_YJTXk35++xN$*aO-DJ%OU;cpF-pAVB?36l?m
z$)APE--gLQgvq~#$<h(*{j;v9u`ZD9eJ_!tAlrLeBF8|sKa&3RFgZ6&zA8+Xwqbwd
z`h}3~eJ2V37RdIVlgJw&+j~tS{}Zyk$0YKbknN9zcO0_4CnWA?pyS&6K_XuS+1~pR
z`3lJPzK_TgAlrLBBIiKva)VhnihK>^s1SKE<k%4TZ;;19#&Qo!`v}LwkY_-ases5Y
zL9Pyw{|k9pi2N($`Vjdd7?SlN^5u}XLbk)thP*e#UGDE34v}w${B4N;jgY(C7`%Qb
z<k%4TUC7yx?ezW(+1`(l^q&JmR~_O$9J0L+Bknnn>qEk;guFGx|1FU1y%+Jn1@hhy
z_g5j?doJSsIplBQE>k^`&wwGc_gX~04006qHe_xm@<hnvAfHLO5VF0$BJK+z&j@i}
z3)$XR5%-56FN1p@UcU>ny`LiP`yd~NyX>Wid<3$+HzM*e$o5Ct<1diy{Sa|)7m56?
zK^$-sxf^7Ak3;0%knKGTkw-$dKN6nYAGP-}#62Ify@w%kHDr7LLgdwu?Y#?;*Fm=T
zDMWr;uIIjl$a^7Uk)SQ9$VVYZg~-PtkAp1pX>oUULjFVCJ40RuIfw4OARmS->s#?Z
z7_z;$Ao6&~_P&D1Qy|-W3L=O8PH)(YX9DlKO2;DJ8}>fQ@Pl4quSp498#w<QI2;-F
z%2oTgtsDlozn^pfG2|_s;!nT#BJA|Ih<wmdzJ|Ul250i{$ge(-iIa>cJ?vfD<~vJx
z=FxtR!5p&>JQEOIhO^Vru_5m+ibgEH=%KCN&lx>zaO_C)K7hdCJm>}w{?jKE&5Jwj
z!+zlpcC>nS)Fk5yJTfHD;Tvgq_`6rzeBMR}V~!u1=Nm#!{P83w4jzXnTOR{#>!hWL
zeq{LTZ^Is6G`<GMI?7Idxqwbopp138OtB6g8h9o{zmbPelNHI<*2ynhG6zvx9d^ZA
zm0BIc<k|I*oVIdqmD!<T*S2yT@@J0nytX{{7K|ov&N=V^jy?ez^k645_@ad9VM9g^
zH_y@NH_(VY!pN>95k}eqp2><HHZ&HkQr^(0Uo4v|ior%<9zzkukPrplxh$%oM#YB(
zL^G_FMtiy(4Z?oOn!8#&4R@U4jaNaBaxz`KjtG0Lo#?JO=?M!v|2W@@)_HQd7=5cM
z2z_!vpM!@VIU9S@Q?Tfvfk*$_dS!0((BUX)zI-xz=!jv1?YE|RAzePieq+SRPX@??
zC6cD#S^85w9z~DgPffM0mPe)W6oMoh)aPcyWcc7icyI`Lv;|UVdW<)DE0{d|hqpn%
z<e9fn%b{Bx0Uk(3r`CsXahN-pk$}5-&f(7<>*h&%JjtTp_#h|FCH*+bEGY~2N4~=&
z7<KS%4B<K{fj|oQpra^~TXk2H0o(ci^4vz-FM*PfTc0Qw4T>ZD0WqoruVSIB&qT|2
z`|viupXxyxI-m3+AO;uq<N~!g@_o{y9`*$%J!?saHXoj#8~a$>k9^qIw|@1Ztqn21
z_5pA@=|r~mFc#f$-uq8n!yb9yHLbNFFJeFio#JUTxagFe+8GHswd0>Ze}=&ET#bH%
za_9+urZzC(x8bJK^k*KBsy}o7)5m#Q^^D*{y@8&63U_(v*RH%%Jr0N*hZ(N0YG;dW
zBg+`o%iDOV8A61a$79=VTmsY4h8BI@emqXPz1VpsI|Yy51l}60O#&Zm5O?X3<}nA@
zOZ|o!(Q04j`rv~;;s9e9eA@}HXLP7MdF0~c_vRvs;8UBt=A_r%oUAv`)KTB+1!JxK
z$}F63jA-r9>e+K~5=+eqj(JtLDDfN>9~z~Er@;d+=7FOz@9@ZOW<Mk?zIC>8^_vHD
zVM*T$ypdIV2vO)4NsAKY5&F;#?wMgzE&}V#BJAl2Wv%MOCjT+=8?1dI;OBSHiF-@q
zuvT$ScR2ow8#B(UvDO14aKkDBi_Zw$=)GAu1M4wip~G=C7O@iUJhCgcqa^&#dO(kG
z)3B%#_kW&e^nH4QGqFE;f#LC9#{K<^Ar~RNeT{tRQX@az--PoX_HQGQt}leeh!30d
z63^=+4R0T1_}XZ5eeZb4ZtQVl(_YeXGbrJ&PB-$V48z7u!=^05J>*qa8u<k*`Xv3Y
zk-twe@`!xHBBVjwuSeR1>&Q*y8z@83A13!8?;^iPeo3B>w26K#@+Rq>QD!)BmeCKb
zFwCwryo&s~+W7P1=7?P9tTFt9yuxebF+Rg%WC3n+NPN|xvjq1dgdT@um9W&|7_<y5
zcR218BJKyk2(Vd*xE~W%IUN5Iccfu_EjZiZxK)U>>>!6+4}VVVH-O^)rO=OdMSapO
z#yzthdfZptCPbO;Z2<4V83Q5Y#x=%Yr?rNq!VYK$!Ze3tDY+bU-iPxQSf7h~1n&Kc
z`(PpDP6)@j&Y?e&u6Fn)#FmgIn!jcjvOC#>>`6wEy~%#$Kr)sbMvfrk$Z=#6nL?s@
z>iDzCJTjj|v(oM}NHiBMqslZ<Wt!Ebk3_X<{UUN1xtv^0-bmJyYsovvb>w<-Be{v(
zOl~C~Be#)HlRL>>WDB{Q+)M5w50Zz-!{ib2Q}RplTk?DI1o;~&+c3KRNsH`6b|Jfy
zJ;<J96p5do)8WWHHwkYb8B5AD9-<#X#*yPl+=AEcDP%e+XYb{@JTjl0PR<~U$x^bM
ztR{WrJaQ4aj9gBxCT}F`$+hGi<T`RaxslvNZYH;qkCEHRr^%h<F0zH(P3|T4kq5~`
z<YDp%`6>A&`7QZ9d4l|nbf9c?{gW2iiR?mlCwq`R$tbcn*^eAZ$}?>e{xEU`8ApyI
zlgJb@oy;cl$b51-IfE=FajRd)S58)wJ`%U?wfiD+8M&NXP2Nb>lWWO4$aUm;awEBk
z+)QpIA0xMsPm?>zU1STno7_w8BM*{?$iw6j@>B9l@>}wI@&x%C=}@eHQtsJGeRU$c
zkljf+w<PX8$tbcn*^eAZ#*)Lx5u`ldC*h1ElgJb@oy;cl$b51-IfE=FOUZJwn)H$L
z$VKEbayhx0ypgOY*OGUT>&W%wMsgFmncPY~Ms6dYCU=s%$QE)pxtH8W9wZNuhsh)4
zr{tI9x8(Qa3Gz2m27alBcBDmiBD;{?NqKfr*FPCW_9pw01Ibu&7&(HBBgc_RWD1#1
zW|MiO+(Vc6r;{_tVzQJhC*_$)@$Vz&k&DP><Z^N~c_Ud*t|jjv*OBYVjkxzJ^Q%qd
zW>W3}M_?}f80Br`)8tNa7uh0&|J{`LlKaSmbU#G-Fy$lUr__H*S?(E2y1u7;g0eiH
zDDgOOPgU5Cw8&0ETqpO8h25#|LG~o0$lgNu>qibGW65Dc#5017Bgc`&LR?=>E+SWx
z^4y}h1CEF*%{|PB$>v^`5X&uxQ0`qxeP2NK5@M|~i0)V(X@3c13MoY)*W-UpEK@X#
z$=M{96Iwr?TtePT>iHo8d7Sc2@-=cl`2l&1bjWy&>&_%EBnOdkWEwe*EF<TUtH|5P
z`$;|jK=?0Eev|xw)bj+m|3SGk%23jC0XdKyO{S7l$x?DIxsv=FsmDizCufQz+~>(R
z$q&h6q*Lq@{B<QSCWnx6c1YZF$eCmfSxc@VH;|8#&y#PGACkvNdFEBePhLz8A;*(B
z<V>=LtR>fw8^}k==gBw856NSsQ~IampS+kHLXIbM$eCmfSxc@VH;|8#&y#PGACkvN
z{4%GBpS+kHLXIbM$eCmfSx4SX-bJn_A0V5_r^x5X7s=PiH^>9zd*nytXXH2J59F_8
z1kPSad7e(n*%6Vuk$)lO42kIbkORoU<Zv>cOe9@o7CDK$iYz2OWCiIZ=aWmx732+M
z19>}n4|yN?cXBKFH2FN)Lhd2=k?)cpkYAC<$)CwT$o7^gpR>pd$N}U?aw0j2l(Q>R
zt{cdMWGC61fc`wPAGv^BK|V^pP5w^y!5Iv>elVFuUPXGyJIVXWFUX4{&GmWY46>ZO
zncPKwM*d88=wz->Ca)yx$a?ZNaviyWe3bkb`3CtO`8oM5`6Jo>3={9!WN&g9DbG$y
zxnz*J<W#bNbd$5mYstCfVzQ3Bp1hOXL_SHrNxn~hM*cvm&L&-5$v)&zGJ(t@uOZ7w
zAGwUYnUv=lCBF}m+sK#5edLGax8(oGPG_3y&m;ShSCC0$4p~S>oMo<)XWJzHzT_x!
z965oM=h(zw4w+A0Ll%>>$ZB#9xrnSK<=Hj~?`Co>c^A2!e1P0cK1yyQpC#paHwo`m
zaxb}`JVbs-eoB5#eoy{F;$V;tuRYm`>`L|^FC=@D{mEGJ3R0enlk|-zQ^-s*kDNx%
zAWO({vWA>TE+Lnbe<kb5+sJj~267Ym2)ToNg*-qWC6AL4IOHe!7)M@1R**N6cafXO
zLuAM9=K8bAUStdzPo|L`(oZfY>&Zs)De^_~E%F2M8?pl?+>-wD$kC*WoI<)uFIh|8
zNj^wEPQF0?m;8!6`y3PBCFEdoESW)GMV66s$ra?S<h|rp@&)n@^1tL)<ga9hb4@zV
zCHs<t$#^o2TtwbN-b21jeop>Mp5McSe;JubP9}@V8uB`FExCc*N<K&KA>Sj9la}0<
zn(T0#OZFu%CzHrrawb_r){<+;4dkQb^W>Z4hvYHRd7g>CD|s=QM&^?qat^tITua_Z
zK1aSr%JUbJzaiupGL@W6&Lk_z+sXULe~{0S?~$kXG~u63_9DlUSCZxA0`gvR7x^Cf
z1K9}+SV?yuayXetW|1D!OWsdDO1?*aPX0(b@sNuSpDZO8kZZ_?$S25ulOK>jlV@FI
z!n=@+C0*nsvXHDK7n8S;Tgi9GFUX%r6=mW%lk889Co{>bNDt{Hmy$P-caV>gyT~`l
zkH~Mx(|eityOV>-L^6xKiu90Paw&NOc?Y?X+)DmRo^i2>?=NH@GLFn3r;@YDxnv!A
zH~Ap>Px3?ZdouD86W;~o<>XY-P1cah$$D}V`55^x@-6ZQGNQMMr!yHvjwdt8tH?6a
zPu@(fBR7%%B3~Ce@$3@$KJ^{?usq3LLip=LUM9@JGjL=onJq+r%ooD{baDpWXVKkH
zc?EeZ`JgZl_kV>5X9x8=DZfT}uMpwyBj2I>5xRdy{h57@ze|J&FNX3^a<~xrNT7Q<
z<>_Q0_2rb8QND$2B>ztLr^uJd-E==d`4Ht#D1RwLKDu3M7%N0N<0y|KlY~fTCf%n}
zE+Z?cpHKNF%InC-sDFy`F3PV^-beWzA<F-K>OZ6YXYzk^KfRwxXICN8b*>QkIG^lI
z_ZYelqdu3snw(2sN3I}m7b4tsl(&+5$xnqSr*A2LPo5CsI_G7^{R|=G^U2G|7`hJ^
zBHg3Ov2=IQJ&*ECvXuI2A+Gb0^XOhn_nRo+P2NlW--WoYnfwRcchLPM%KON7gs6|N
zC?BV+`a_R=brhl;&JiNq^T-S7-jD7>DJPOS<P^Hkr0fwQoY|z0?n~*ug8J*po9TWh
z-5aUjLj4nzx0BBbk?t0{zeV{V<&P+TO8GeD6O>OMVDj5bh;aG}k>37f9QA2rHuW{+
z9P)M{%I!YN50VcH5$@x3-%0sJA?jfd^@qq$=>DY;>G(wmf1L-KaJmT*&xMpP5yIc)
zLikIjK9%~bh45cSxq`e_h;%Ka`%21d$vcGz_aVAJL3um*tWe6G?r%~4h&)c7KFEY~
zJ~^Ju6(U^)l#57@5aC`+_eGR%B-fE!g-GAK<QGDOcbxK1<gY@6cUrV@?;?bJHsvVF
zeS`>aG&z}^D@3?;lvj~A2ocWT=)Ruv{gk&-eq4xp*-rgFA>uhmeknva-%<XBbjBEe
zUC2Q~q+=xIcrrnV>(l5ynetVXODOxu`P8o_Zzng<{Xxo4kS~&Z>Haq5!<3IwJ|RTD
zej_`@nsl8dg#K*uLh3J}d?|@17<4{H2vJ@MLgY7>?o+6*pnNU4K#2S=rCdkeNc~#M
z8_DO${bbZ&T#xkOfeFnt(nBsKH;@mI4+#<PHu7KOtK_ewytG5|bA}N9y9p8BxnytZ
z2a!XlpGZz6uO<tHISxk^Igh-Kyo<b#+)O@BK1;qL?12759u*>8pOHTba~zIeDR&rZ
z-20GMkQ2x$WEojOUMoa6OUcz_1Njdj;(c6*a(a>aJ>&uMFnLr6e_vDniIf)!Njx2d
z2=5Fb{9Qo(#gqq7#-lFU-!L+s`ee#ik#*#q<kRF{@?%n6Zo)gAj1(e0e<3d>2apLu
zq%&EV=WtA-{u<IlR+D}q{4JrpN{H)kp#E;^*HgcdY^MHE%1@BbQU5aK&&mIhXIx>z
z?<+(<976dDa+DDHOA=1Tyqt11<)uQTcRA%oy5A>6x}PTxkw21Mh8y>RB%U@h^&~`m
z)5roL!Y`$KExCYPO7|NnHwY1L6Zr(WoqSe^@OP7MlgG%Pgov-*2;=VzA;LS0>_vTl
zGKTu0WE}O0lyig#uYmee@>+6%5aBN&Z>Iisavk;S$-h(o80Bqb3-xc12ZV_CFy+t4
zW8|-7yOHpR^5`Ih|8po`MD`OReFNz}g8Bq<0`*yxrwHM{lw3{TN&Z7P+2MGG^1sLz
zg-FN0>HaR|&&hA7|Aq2jMj8M8$U#DcJA!h&5c$cXoJV;kWseZ)Ttq%ZK104sb{uW|
zT}Y-15zl1G)5vRtNPj8ay_D<7)zsfg`9AVV>ffNeUx;-7hx#9=|Al%LXX5WHM10*S
zUr6~9%F&eL$?-zucLJFuL_Vg`y@2v8%2h)6zm?obK1Y5={vt$r&yNR@p3BH+A+Ap%
z^T{%@p4>{lDMWhSr~D!Lu@K>YOZQ(XM~*T2E<#*)KIJINqbQH1oJu*1@-)f?lxI<{
zqC7{4^e+@5f6J-AMTqn?ksImWO!sZnKSQ~N^6Nr`_bJ(9tdaYXqlJiPx)9;dBCF`W
zg1nP_n0$-;o@_tPgxf=ia_LREA30En@UNhIAz4i>r28_;cTs+bd_;(R>>-Z}5zil#
zRf2IpU5I$j62d)>oJ{>yluIbjraXu8LZOs9^|w&JR*3ljN$w+$ljn>#?&pyg3XzV1
zWCl5zyh@08iYZr+HA1Juv66h8Y!M<q`zRkI4+#;^$8`UWazvuhpGC%!mkSZjILg`N
zB%u@YC~^z=mJt4rk{y$bzs_V=A>xlBFC&MLx#V=xP0kV`|8prXBd;gd2$7!Kgz&dX
zn2mSCQ+`s2c%P;G8s)u0Tz7;#L3T(s`ZLJ$gt-19%CSPklSDa%GJdRE`@5PfA!iGv
zyvPRfesVwgt`OmVDn$An6U=q(NK1%xoI_qj_M`hiA+C?3K7n!?-3!PC<Px%0h;Zx4
zJIS}{{)rIvdYtl4<gY?pciKeb-bDyGitIyuEal57Cz01sUqrc*vX}A_%5{`)rhF^q
zM#}e5-a`3l@>TL(^1njl<8#X2Q2vGTACx<$n0%ZmM0xfQ;<`(y??-tk<q<;oOQ1fB
zoJRKox?f9qp-|cbc?0!p$$Q9$$;Zg2gt+b*@+InDqx^#q>G+=z>Fwe&{=1V=Le$S?
z<PdT+nMAsTh$n-bO#N(O2h2yv8>nAPt`p+A$H)WZF(J}*S}KV6I|?D6DMUJZ32|K?
z>IVzqZxoqGrjwJ%X+nfkM0uXD1D-!4@1Xu(@*yGoKTY{xLd3tD@*9*7QT{*(|Hmnx
zpnQ57^hn>?<at7b(}!|@A+8%r{TS*KDQ8m76(ZkL$P()P<RT%$xta2<LioR*`X{M>
zn)*FtM7r_UU5M-dB1HOn3z6;tbdMoN&^?jvDU@?5=L-?9kGzMxmwZTw@E;c<{O#1g
zLH<HsngMsDXQUAR#t0E^4!My08~FnH329{-{{zVBLd081t|Zrx|0PwH@pq;W@pU85
z6(SwI=suA0V9Ifn)5!|z7m>G7e>dd^C_ha33CcT!$oEd_U!(p%<YBshM)&Wj|5=Fi
z4#8L;bO{m8)k36urV#nBpj<<FG38nz{NF(RZPedQ`2org3laV!<YRPyj_$iC|C{nY
zA;Nu+`cJ9<N{DcNB`>+s$d{7Cg-CZC<#D8o`b^3>q<-!c{);Gk$-BwN$(P6j<Wcf7
z@|Y0i^t%w@Iq@gy>?1@zMhfvaMhJf{%2UZ}gz)E~dkyt-Dc4e7L*5~T|A#1V6(YWu
z$p4UkkmuwY{}%}ne}5s|VuZMEC^>@eiF8k)-c6Q~3+cX$@>(I%bB_?=Z=!oM<!zK-
zCU*<r|82S-rv9i9>G^>?3x34kc|wFcPzd)}>f?mSM*`(k%DLopvXJhTl;@I*ga~g9
zxry9NJ}pG}FOshb@pq8&2ju7Eaq>4I!gWkC>>@-sXA9wWA>}@FA5C6KddMYYtq|9(
z5h9$s$$P2aLitH@rx5Y)BHt$8AwLu%oX;r#L3TwM%XNLp;bbORPToWQLx^;}AVhdA
z)bA#bkSE9vQ%v~h2yxv-Lb&x8;`$iMqbQH1oJu*1@-)f?lxu`Y_Z%U@T}k&FsK150
zgZg_Y-%CD3{i8x$zl-v#bU#cw@=ZMb$gyN1IZ23oOru;$-b`*HpC=EIzmq+u;(C-v
zKOyonkc<@~+);FQksfjmd7TjcRtj<bljL5yAEJDiJR*euuj&3fX-zZwo<gMO3d*A?
zrwUO{xs<P=yM8_&@h%k^Y$RWzzc(rGC*Kt!{v&ihPX3Sju2-4(dy%7s@IOw7@C(Qr
z$Xm!;h4A+;@>S~h2$AmhssDuhmi(FgpAi16=_a1;WFH~QV=(2*$&o_Dmq_;<vYK2<
z{#6Knw+NB`o#Z=oKT7#C@+%?y|3vrpS3^epy~&~E7@@>3M7Xobo5?LgT(_O_v*hza
zT(_I<2Phw+{0ZeRDgQ+IH_E49W3KNcMEK`Y?n(Jl$^$76ryNIlBIR@;(w$8fQ(s2;
zdU6Z-KKX?Z@%~PBFEDanGL@W3R*?&Zh;J!bCqy~iME5%=Zz7){-zMJ`BHqu)6XfYL
zjJ~@N>x92h?n`+9<q?$QDW_7-qCA~)A>~TSUdqcTub{k!^6iv2QvN&TCn)cr+(P+v
z%I{MCT!?b`hWcM9|3SH9p>aP`i2R>N`69}Fg(%knl!s6rPI)Xjf%-Hd`dJ?J1wzDM
zOu33Oejr$fJCD4P`Uc96kWUE_-t$7FZ$I_#QvbP7@<;gu<%pR^-;wM__9S}=oj5;4
zUL!<29wFkX5hC2V)Gwlb74<g?otXa$(JppTep85W{v$*<9}5xA7j%y-g6zaT5Sc<=
zDTM#&LijJFez6eYt)zPc-EX7&qvR9hb3%mksu1D)oBFTG4#m(T{&UImg$RFu5dLGS
zA4bMgKc4agGK=~tLR>#Xh<ImHUrl+L5b-S+!k>OW3*xzx`g_O+gwQ`s`4Ms(^}8sy
z2ocUf>OUYqCy$fAk*B#$xE+PKt{deZLZoXfc`aE--a&35A0?j`BAqW&evRBm{X3N3
zBR{78Ya!zQNr-Zicg9FKrwgI)B!vE4>U#<$eL}RaJjyeL@IPA!|8s;0XCd92$hU;>
zcSs0-p9taaOS*UQKt}k<q>G#?guiPj&m?D4UrpIZE~b73<?G3NsNX>O8FG&h>H2`~
z9}AJb?<oIBIil30<1F$VA^i2C+*gS7k0Pg#SCPd+_^%QoKR)W~$+hH0y8oSWGx-Gd
zJ19R#wot!Uh<v;wL_9~R|4fK<sWQW!Lip<=guhrJ(le6o@pR9ielmF#-OI_pk~fpL
z3lZK1A;No*`fcRX<ZimZLHTX+ed<4={0aFj^(QF*MxHjy#MecL_|6t0pMA;x<WM2f
zHAV=3iPTRd)9F5i?$-!WJ|608sGm!@mhvhg;=6%dOZO(aZ>0PP<;R5Z|04Mj*<-fR
z_ao!UtI5UWMsgo{oa|O^t{+BbkriaUumkqnC_hfVNWMq@PM%R=!W&3tlh=|B<Uhza
z$Y06GN^|{iGKHKiL^_sH{u}uqxu^>6sHfFJl+%r5y%6<w7u{bZ_mN-I{kRa<b*(mx
zBgc_RLWEO8E~I{`5cPcv^>>i>k`IxO2;uK3q0}R}Ux;*nNcm&(b0OmUp6=>e<F6MP
zOO6)8-#8({EhSgeeJ$lX$aO;ae}L}KQht;22js8RJ8De07m+DsDOpZd3v;lZA|Isw
zVIlIpgZf?M>*Rj&KSKCBDnvfMBTw@hxr-3x)RS@)*;|<7z|V0R_o-wl>81NT%5{`i
zQ@)k*9hC2*yovHZDQ~0v0_7GV(z%;FO#M;H|08?*jK6+loDk_vpj<@WKt4vkCq#Zf
zqx=>5oe<amO854DBS#A1{~XGF$zkM3VIIyUQqC44{qxBi=)P8naGHdOXA|8w)BS1c
zUnKXC2gt+ZQ6b{{nzEV$8U43Ad5I9=4<v^Qk)G+~wd6|jZnBwtoBTvL+2Qz^>^Rqi
z)0yllL_AUCWz-K6B7O1HkEec$5b2yrxrD4FYsiH{gu9ILTJj$9AtBQB1m*4IvqD_g
zLiYpY$K-c(|B-UUJmbH;5a~US@+Cr)*QMl8>f^`+>XXS#>L*j4MivQ?&Puw^qka*2
zBlUkH@1nkue31G_DL)}ZI$xsxHR}IO9;E&~${&!QQ~x97UxWy!<9rb1b*2#c?MC*b
zz8B>_WHj}oD31{$oJ{JckkhGmQ?3*u{2H>B`kRE=nCA--&b`z>B!vGh)bF7D9N8j7
zy7y5&D8%)jQvVg@A1VJTM0kIY)&g^VcOmpWgt)#R^@FG%Opc;{EagNpo%%e=rQ~9=
zfxMr5lH4mqyEsJoFnL6Xe0@##-^or3O*;Duaa}a!A><W8TsM~PndDUJuc2H<xl)My
zE~9+C5an<ac@OmukPlP;2)T{==P17}M0op!NZ$u^|AOw{kbh8bErLI!_Y5K8J&Qb#
z`aYB|BS%s{o}5U18kt9Z0p%hg(&MFm5xIi=E8TCUyiSO8tfzh}^-qz{(ftK-FZJ(G
zeou(_KBxRO`I8X&{DX40#U`G9WE`1I7L)VIo5_2~N6B46l=GM53F?0%9ZO8S9fk0B
zHs$ju_o3XM^5v9Wl=CQ06(V0Vsjr~EMu_rSL0(VZN%sxpX6m<+JE?z#e2e-6Ld5e4
z^<Pr{f%5-^h|jsyu&WT|dOq2Q`pd|X)Q>0A{~vpA0v}~{^^eb%5Fq$Oi4ZhO&{2Y7
zO_XXzqJ&K;MnyqHfr@=C)fOv-XF@~_gEIqp8b;&RVqHqBwP<a%R%2WW6M}4R2rj`D
zaLdD>;+_O0|L^zS^GqfoASf;G`~Up%`P`i6Zs(qR?z#7#d+st4K1Sda3BOX{ObMSQ
zaDjwZ3;ctG-!1ST68^ZrIthP9;42dTw!lUS-zM-I2~P{@dUPj5{SFg&q`>}!Xup#P
zQQuP~e5k;&0)H-WuE0uxw+sBUz<&_}-!k#n3tT7R?+E-@;I|Tg%sid1kPvkKSYUt<
zbPbpI3j|J=_?yIkm-zoA@GpeO_mIRdmGHO4zg7Gn3;c`_>A#Wq?$^VQdK@NjfWSe7
zNEZ<Q2=V_!{Nu!bvG^|+|CQo5#ea?XBjUHjf2;U!7yrHDzhC^1ivJ1muMqzl@xLto
zjpBb#{I>YN5P!4yePLanu7s#>w)p#q-!J|F;vXdbfcQs<|0m)fC;p4Yf4TUt6u&9{
zYs4QBza{=##eci_?-l?3;(t{9Pl$ho_}7U4W$|wm|9j%M#s7u)o5k;oNc{;}fARMb
zzhC?V2t9azP2fm@6#}m(#Q1VEA>`u@f%gjhyTC^Xk?tw+uMqe=A@IK>@tY-ltHA9N
z{;l}aqq-b}5czr%0<T~E`2q_GK~ItR&lPx$!0QN+FGh%TzY}<;gx@dzM+814a0MaC
zT}_Dm8^!;Yzz+z4?<4W|nXl8IC~&esQ(!qE@Kh2a-%SF4FX8u!|L+281TGV}nh^9n
zM+iJ`iGQ=et%Sh)srb7r(CL3H@P7o}BJh5JuM2Dx*sD_K8zu1P0`C;~FM-bzLY_8=
z|22W{N%)rn-Im6eCa^0Z=<G>|{6`5qS>Rwo)N_cyQVE|ZaGF3<;>!g_CHx+N4@vmH
z1U^oPa_c01qxj#J_)jJLTk*SptLZq15Onqxc)Wz4D6m+<&k=aBgijXuO9{VLU|7Nz
z2)tFo?-5up@L7p}QQ(^ro)GwrKwp)nGeh8^grN7w0#BFlp#sm9@W}#yEwD`DXA4{)
z;lC63SAh>n{J#XoCHzH!n*=sW{5FBj5}vV8)0Z!>fDr9HNZ?QjA0zNGfmcfWRRU*A
z_#XuRS;FrV_%8`xE^vduHzfWYf!ic}hrrC3rZ1Zibma&<M#2XP94By+#Pj#;nEomW
zpCd3P@HUCRUEqBZzEa=|624yGI}-k}z*d1>ZqVg)7nnnc_U<pRNMMP?j}UmigijF|
z5?Cqm3kBXT;Y$QQA+S#3pAooT!aoz(BH=p)cE3^6b(p~81)fX@KAkF1y{8ZQ$4dO=
z0;fs*bb;4N`0okPkM9=$eG>nGz{e$grNGw&z9aGP3fwN?tpX3K*7Wuj*q;z|9xt#+
z!p{;oLEsdLzg*yNBs?VWCV{t0{9OVcknkr2t`)dm;$Ic`u7rOk(0h}n(;x(WJq6}T
z_=y5b1eQwt7=e=|e44=P1X>aw6L=FL_<V=NKOu0nzzq`LApUp7-$)3$TsLcYh(JFf
z+POgdg9H{4UVwMP2oXPp5cAv5#Xp_!0{qsa_(S545~3VS;LQ?$m&E^B!q*6VUf_B{
zl=Bwh1+Z(2|0D5#MhLuL32c@4Znx<41|j162|S4q_|6djFo9<hUZ8(hlJVC{y5AC_
zez%DKZb^3!A@D8}_=dm_1hxn~<W`;TC_>=<k@!y%I7Grn6Qca{#D9tSFBAV&gedPf
z0)rB-ewPAxZ;*7iOZeTAu14TWiGM-->jl0_h;lbc{3il;3ha6t;=AH~0z#CZOL#W+
zwFDMP{6s>~@e4wv`<1|Q3AY5^CgHaWyidX(7g#Uhs|3C*;qMTF&JV=@nZ$o3utnm1
zzteOWgh-z){-XsB5?DeAI!6c`MTqnlNc?3IK3)8C#2*qEAw>EcB>pZ5e^C67ioaIi
zGZOx?z;`A53-R;!JxPyG;K79BVP_V2qJ)=-zf}BV1WuOlYX$yR!tW9P-^Blrz^5hr
zb@3;}|GD_T7Px~D^-No&>B%C5|4>5Ed%VCQ5`VV%&l5OF!hb=CeAC2#4I$*}Hu3+7
z5cvKg@F59*O8m<NJ}2QH3jAEczZU4b9eBXEg9(BEEb)&M|E1y&3H*b=dV%W&elGCf
zKWKa>3p`)oRDnT(Hwe5-;DZ9=0=EdXrvTp=>@NuHdYSew75IX{w*_AOGaY}Wz-t7a
zO#K3Qh70`lAGN<i;0*#tEY{)U9QY^gzg%FtOZ&43!T(-v4fEjlz&}XfIDroeY!J8@
z>6z|Lff@K#`2<c8SSgUdufX^WuZAT8ZxzUQ{29-8_X%@-8kz#16X;LV;R^-6EYO7t
zG2b|Wiv+F^nA=6iPZGF7U~Yz#BXF_6CV_s)67d!byj7sDn+`7!I6>edfzJtS5}4mz
zr{}x4#P^^;{)RC9zDy1C1&$L~E%0f9**$c+5d!ZNxLRP|K{|e+z{LXjek;paC$PlO
z{&51!1uhi0Sm4V78wGwNFbjf1e13sN0!sx>5oijm6nLk=hXt+>*dTD5K-a+<f40DU
zfyDyH2)tZixxj@2`A#e8dsN_RfqZY3;oAlJ4$=M`fdd7W2;}>xOn-&IB?4a-nAuau
z=LsAmaGJo7z*`0K-BIFuPT)3ync0Fz;2?pc1WppjcSf0ik-!H9#s!vNHO;*GS3kP?
z#6101IH+Jy(WyT^rQoEzyaE-Z{}&b%oHA%oUfxNkoLm$*g%MM_%^g{KrrV7UEq`v8
z*VX28xk9Zd7=MG*|9n@D`jr6XQU40#^|2a$#h&g@FxIH?7&W8a*7EQsZ+xrA9S?8m
zV$}R0J{J1m+VJMS@vUj$E$*1F!M(he1#Q?g@o3*|@pEy^K4u=v{Fk^j4v+PE_+4+^
zCZGEaAUdWMiNjkAqb8EI3$pr7kUe_r9_cw}f6~(t+3x89Z#=5rku~Ms`l;2Z?_r@G
zpP1)`H^)QGakEEg$0noZ0=IckWPSNj6F;wy>3W1({#Z@^lx+)diHBO^=6i+liHS|s
zp&cKYCnHGVWcYK1@x%vHt3$Kh%go~hX)Q4V-)j>S|7gQk_V0;Ps}pzW<_k6dd)7^b
z@#@3_l0e!sye-$7<Ik>|<IlII`E#nK`TdsZ&#E&0dDbL<X5d>RvIEU%)Qoh6=A@T)
zD?24N*&Qo$1>P}pjT)~CGv=RxB;k5@;GJMX&{vJ~53I#F?XnI_3`TmRW<+{vD=ml+
zCDhYu8qgSS@)$SVf~?k7YkTYOuE1ApvNswx|6Db~KhVlAj8Cnu0udl43j}6^xSa5c
zTqQ?L5q`#P<=0}+cO@EPBi(@}BXY5#^+I=OPOs8#L2qoNhlE%jo$8UP)w*1-al_%s
za;K?sebKlPIkvU6l^F`-)^UkQ8=Y?Bh6L-P=)7E|_b~leJ6l^5FEAar64+rxHX;>x
z<u0CVL^mN41O!$Yk>v;uUFSK&h^|1OrritL^AT?ML7~+Se+D9i_!I|n6bJ1l<N@6c
z;U>_14?VAwU!)sEL~lY!xZY=93CQ{(ou^`%PD7qX<H3K1>%I0*+Tu~4iAg-H5AiTQ
zT<@{_F<mYGwb~W<U;7QeOn%{`)&3>E(4cMd6Ie@0u{KbCtmi2`lqe(86(ftaQuTGT
zeYi2LIHxQN+|2`b4@(Tya%t4WAr%u?Yc<S(fWSs0@;qpQcqy(FA7Vt_g1@+r5%~)s
zSd(Yv6vjIfjq2EJx9Ud}+)9N6qmxs-G5;|XBqW@cSjuW#;10ZGL?)}G!`;Q@M#RE5
z<r>BP8WmQ>Wue#IsN`YwfOV=J1|t<)VG3aET1ZcDArV`L*_R_zwWZR5&pjpG1eK0b
z6P<ztiS@d^Ivx6fk}u$!q|%`m7||lK`yl*N{fB&dI>{$RRZ(HwrU)WFyvl87ASuJ~
zZ57o*sd3p2h*kWs8V58fy2A*zT1fdgl!Rg;pCTl@%4e@(TAj{Qaj8x-Mx`-t3a|3o
z_qWBnD~9O!Qo-?eg~MY<o$@#uyoD+_el0r`F<oyhUxB2byhEN^s8$#<>^vu5Y`7;-
zXVw`tV=?WF>s1=wniFbqm-SG*_OSlnQfj?{jpm(g0%IO;Tz@ko8gq)>#)1VZ4G0Rp
zY0uRBRQXS{YZ0SZR`0fQRN?kt5VTkF{RHaXUcUR3<*9brjc`(aw7lmbtL8(hyt1<z
zHSOdTD`73~XzIk@K$gOvRoe^Ui96ue^5cwW?d0)6`)bzpQ8iB{<?M4ZI91Mq5&Nu;
z=^(eyO1c!eoq%Na;hKNC9_(S#Z&&GlXP>O&+vG48i0qG?_7pj+xVpUz<{%ek@XPk;
zJQZi9%Apb2j(E!A^X=2QEBdyV$JHvG$Nr0xPRrX=ct!qDV5>cze$5~m&n~o{xoEug
z>R9X9@U~1$I(dO+vu9GUdXyP@n)^t}bD|H%?RBmG+qNb7fO`8mIE7baPW<Vmlj{SG
zv9WG*y0sy(M)yNKj#pfiI)(?=VEj%jQR9n@->0@4zwd{HCo0?G-4(rcydJxQ7RT+M
zqegn%PRt9uW}d1@$ueq&V>V1LJ+iC|dJEGSOH0#Bp9ICO+Qad0!<KnlTn81D7|~IP
zOuSzEJ~>m2e=HANz=-avDur%f`m-^zX8>=OmFov{asw|Ikv_m=eMU8BPEP5eWxc}7
zF`@=Pu?#hNC63YjHfkp2VE(_$k4b@e1Fss9briAQDp?iqu^6BS=b$%Py)nSI57guO
ztHI|$L{@CPyM44hqq((pYIS(I2jhA4D%Rl|{0lGl(mxrWD!&??IbJUJF?=M`osWN@
zCpsMvcmr$A3yhj`!L<yfLyY%;NNO4OcqY)|!t^EZhF7{(oOP;Q1aCF{RFvV*hhI;g
zNAe59N~@iXf70=_K27}#d<B2=!2mz1mcy=t8I>x}Kr;9Xq9cP955oy>Xvg7YeaYsv
zLEGUU(-RN!Q$>PYz5#B}A-C1M8hADMGU{d(`x^)BXl*TAA8zVp+`2rx)!lDhqHbz6
z;va3ROX4B;?^V1oA~?N*VW|^-BrNjV7g%dVf6B^{f8;m(=i*cIdm?L0etQ^x3e!=}
z9R8ugd2Gw}^xJ>=+Tq<%NUV9sF{1jyi^h*-&z$7<Lmec~@&XAXk_I6}FD-1PsArTN
zs;8gG$BJ~NrDn`ZI6Brga0N^rnA%S<E@}Nrje9BjRqz$|%|~=R=IOt&HB`LlR*$i7
z-mK#>ZdN7ZrElKGzR8hT@dKklV5@mCdu8!tv(VaLk4DtgY8^gQh4%|$(C{GHN$`4#
zCk8iSMo%n~{EX<MBF+fLQFgS|^oKuj+nEXvdXE~K)ZhcY>v69a;&hE`j{|*nI{aEL
z$WO%NfT6h*pm5wBPPhXN=Hz7@As|N>LDm{Ir3aOU?XIEb!^(~bwfN1VP)mt<GFl+d
z8tKAHg+ra9&-!-5`(Hov`KtH3Sa$G`ub*+{d0fGxLhompt3xea&0~N+P#?U1qFT=|
zm-HvBUjC}%Vu>xz<gP2xetf=2(WQj|V=V=Mg0O0YAJ!xa!31|~3|5%+pgFy?FfRDR
zwwJ{B=JFF=$EbN$>crq#wo$XD)gQ}(p-R$6TZ1nL8mCrYXIOQ0n|<C=h|9q%hh`$@
zC2mDR3YNs5s>7{rBeDuC3p8GLN4V7!{9Q6%=$cHImFYKgs*3%Ai+pC+(2hJKGJ!&v
z=?6;C43zMqlOzeV&t?;$-?Vy+NMA$-8jXbyDJgGD%u2&X1O&P^HrrXZtIEgp%y(8N
z`Cxl$%lCG2UPQfnqu!`tXEpbsyC(}%`rw|^dodg&(_e!^z$esa7QUPb(rF*^Zvkim
zy|IfJkA%^4@d3#ksCc<@ME6XW{UU<Empzy3!Elo-*Nq(2MC;lGTL)>dU#0G+#!JRb
zEyQrv)*??JlIu}W1Fa20LH3i4)|~F(3e6fDAXL3dtrpdqb|o@&OwZ=pUHS<~AD#o8
zM)X2_LXvuL4p5c1#u*ukTJ+E5?!wk&?T$uD$_euIFrr7mm%y6q61NhvJK%Lv8a2%r
zY%_q-7XZY#j!59rw7!W|9_M9rJx=hMYL#Q2A8zuQxmZt{P#)B}yC4qBgK3t-a3Os1
z6klfkr1&?rsF*9*h}d9oOK7&|>foD&Nb5C?+v4FycX-oLDnG(byDV6TWLE{BVgk=}
zC&97xs0V}G(}Rl@hCe6_Go1wep%)l6hdg{nsO1+%WHw|S@h#Jw=wjyQa7J^%ILw6@
z){L5NM$JY{oJW?16KSCxIb}y0HLjvMvpXk>BaHbt+Ujx!Bj%TRlLLX&F9*XC+Pi3D
z@I+<!YB6e@pl5@yfxs5lQj`%qM70jZZj?J5_Y^&AhSj*3<WmlK4OB%~-A+}cCpNRZ
zq%u|*rzW<^6+h94{1OQ;_|bkOHQ|hhk+@rAjX5yT5bTpUT>7~}sv~*^>P_Ei8D;_n
zJL77g!MHUJWgP*kK4Yzyj2cWI(8h!zJ-9STrq}h~l&pWa&J6<x<g3n?SgD{_t((Jj
zo<t4&<HtUQ!G-fgH|k4=mZe+kCjJ!q$I{Y_QtRyvA6TEx+w4lubD1Ba{)q-X-DIOS
z)F-o`_v8i|X7ov%CF4NV`93fSNdpbm`M#M2YW`8{zO+zF+N@1R&3fqDBQVxW{o`)v
zGH#uG#!J=Y8s!*s07G9lyBjs-Q02}j?Pd<P))lT#+^6O#RSt$Tcj9+#ehgRc#QZit
zh7q?~Fk*fl<4MF(U#)*oQO(7)<L68TIm@r=i%T-rO9M6z*dC~>=oZWN1~$wXhV-Do
zZ#7t-TDg9OR|`*NAMiD>F8C>Q*Z~dhmF{}0uN8EKSNQal2YzoQ@tBu}wT3svi$mte
ziCWf6=IcDAkWW(zUv3puKYx{5>D8Z^g91%v!Bk@@grCzwkJ3<cx)Gt?5^C;Zo*QaT
zGY3qy4#N=13HP($I@Rx?;9G7~CC|!AopzNtzuOlQUH5K!c=M318>d>`kTvl;&HvbF
zPv8Zv&mr~icBy;!5TvQwoY@s6kMc4-KTwcQg{OCYc3uLTQZ8%bymwn6WOa78(2H+|
zo^Jrwsn#W6xX%ti_#scDP-3Qo0X>J<>NW#|rrkaS$)+lO5Vg-y4KhjT0{*IW=(DTL
zBOp6aD~_n@9<a?U)V1<pa($K6-AWI>t11cmqSvwq)P<Yf6(3tKg|`fe+v(x8q41h`
zWkw}LDDJVmRq4oUr6(Rt@?Q&YF4`au<@&3<f$hP=5=S!LsL4m_sn&5+cvo5nTV6B0
z>fk_2@B>w#rWb}X(A<`Pqzef8B#wZ*h<u=R+$#G>*RJ`)+kB9_Toj#$e&nz6(DHc?
z+808WI9ay~j3h=F`-ZN_8lw{XzAmnodJZ1v&o}2(c7x)90<42kKQQW7Mh!Klj8IFL
zvQ@De`PS#59bRKTc1=|-s@W$G_%i&hr(&qJ0Veu*0)5nDy%m0bla;7E5=-UHL*j|_
z@S2eIR^1j)`1w%fxgHeJ^%ZMt<#=~^r58*u4BoEf41`-AN6^84kd-XJU9qVhvhee9
z;On}zvR75Mzw%sQ@>nM+YeoBf-ijs2x5W!0thay>ndZIE{e-Ts&_=v9{JyuY#S>n;
zy|NegD7bHdYSg{&LsJ9$cy|nIJgoAs@L*QAw#K(o2D(D)g$Tzz$WXW0({*hn5^aTu
zAg*$}H@wnkooqivZA1;Mj{QKbPjvgRZD3bNQ|DEAs(M=ATAvQ68}Lf_{ha~3;vl2u
z*RA3An=Cuj++dajwwr}mw4cBMF_8hj^bE9^eL)f$##Q%zM%TuvVB2z#Sw*RYY`BAO
zIBbO6gg^Eqo=O>?_OpCo>KWz!fARrAXfGca+5Us_vGcp-Bj2bgaqpviaPAlkIfHP*
zOwa8djQhC*RxfdzMtIXsBl0$a+^a1F8Z|@Rk$4aa1Ln{!rQK$oibZr6Zsbhj6b!kG
zgMvQA{bxb1qJ_GW!PFxa#&8o>#PflzIyTg!=Dz^K&7oYS88rowH-f*I_W?U<XwIoX
zjuE@`R3MM#;{<^2R_qUYe9i=`6LIUaP|MC4UvS>Vt`0Yt^tkGz^H#iv$tJPL@p~#>
z#?+Ch4A<v}cJ!b1l-6&?CGm%L>@=>w6jKQ?Vq>D4GcO4Ju&k~`A+e!8dno56&XCZ3
ztPExK(Pgu~sNZ1nEAnU7<{Ganhz@?fCp4$GvLOxSh(L;IM^d>QeMidiRQxP9)N8-R
zwTi-brDyOo43&-MIHTrbETVqniM(M%*CL)Q!1mHI4n0GCilGIeYtmf7^w2fFGt4el
zqy0O?X-d;UsoG_F1wq;v@GQSjmsY!uUut{jaeS$A!`rg3pOfpio~7B33kGcKWEzoT
zG$M6fqvoW@nqWWcQ!FRYT1Bu5q=lMuj0GG7^(y)cFt^%zF?L>lsJXu}{{ckI`;d*y
zOv~cfOO4xUNE#d1Y<-FyW3`&z@L{z0@7yIeM{(xdU_{m;hl*+|b_Ov(Co0XCVrLE4
zMNWVqXn7g1A-n@tntPEM49K>yal<J_Y>Sv`GQ%sfpjR^;WRvPYL?s(7e{kYe$g{@x
zbP}KSeC!-ukDHNH&nl$i@7$wy>S3#TSUWd-5FMl|5!RJZCPKwm&G6rV>uq#;=SFmk
zT*BZ-k3|9CQK%Ub$u_e8hrzQwfgL8+OJ0|Gv``wb2PE-mdU*my<27n#c!&f0SbrtK
z(z^;u`vmJ^qkVyAjR=Vd&4#>S$#O6@RkBJ$Er*yt3bphxFH=0rfT4I52q<i|hdXj1
zbnPHrB#sGnKj4myy~s(Y!ZA%{>HVh=!V5pLx$CLvLmtw={eaLlZddRIdzPxDkGrR@
zF%*=UJro_>-Wq}+)Cucrv!FEmaSrKl&)O6lolZ3OsSI6QMszr^q*TX<(C%nlKM?=*
zmXWa_kKelZUrX^uv^xUT!X~+&*}41=+N1pUF%~=mHt5Fq292>F<bOF3ey98o(M4X4
zlTB@M1^K@dnH3NBDE}4ZN!fp0<WJ*Uoy6zJe_6#|%l-n9{SjbowU&EY;@jx+&aKpP
z|1$=+llu*582c9p*2JrQE_*QinyxFbsR^n4J5sgJcPWzCCrUo5Nm;dO-^qm_$R92B
zx_q$@1U@xKsD6pT)y;u5qMDBj<HJfrJ9^COYt-y$_5V8q(yh{2pAUEzBSyt6DVKuu
zLa=V4svp*zf%@1r9&?J-oM=o*@2xnC3+Gp`pP}-5Dozd8c@xjTzXLPRj3-nz(cds7
zX!|MVDWfL9sp>90Rh57Oj7y4PiH5*Vvj{pr$E(3=mVvEjC}tTC_IG^PB77X{Zcith
zJHfjXo7Kin;x?&3Qr^F7f2SFo;r7EN;8QR!xzBSfTluBnht59FkEMTep7qY!f`wdS
zlNwL;zRxCB1M?*JeQ>;UxBEWWcX$ulIQ9x6zeTc8g`P>zMIB`~#wWWm3AN6Lfzb}4
zb&>BuEDvPwCGl7I@5JndeIifF_z$C_eVE!O+TH#Vad3{t{>>Di)w3h_ee@ngX;P4q
z{L8{bnL%}f%TN@VsoHds+RV!1{>>+;4D8=wAE&=&<7S7ACpq$^`M8;Ud`Iz-`#DA3
zoqis8)tuS3_v1s^wCt(LP01hllK3m~fe#IBbxLf2e>GP-*atdzmwlke)IQJ>R3e*v
zV;$P?+MBT_qngG%ZV%03bL&mBjq{gg+r>$?Df<PP#XSe?H&|;2EdOe`8(Pat;mteU
zb%E7JWRx0f$0#djPGo&B5SnvjX~rxlqvMW*c6i$oaDn;4SmWNna~P;6*F<$jq=#h1
zGCH!}ToqoPA8P48Ym2rTJ(tV}t<H;-)D+ifxz+gO90oPUf9mkq6`p`?M0jolt7I>z
zLI0fK3GJ9{nozVjf+>D8-Sb8ymP}_J!*oc((F^CbsApb;Ppt>amI>{dMAk3(uh<p7
z!1Lx96q1HQCLr7w+A%SB2ey8~@pQW{vMRk0$!v3gBrDX(aIQ%0y~We98FVT)gSbzw
z=yC=qY_y0ybAk^<apF|*dLZWZlqjgjp$7J)EKQ}~b$`ecPI$0CG*Zn?)uD2?%RB^n
zRmw&X>D+bS2>i(6))DM@CBYZiUiBP5(G0GXeV}&xN3YBN(P7*_f~mJ_aJ9oejAM#E
z7<e8~xQr<En(D;g+mCOce<_Pln}*yk(l(;xei7_?T;^ju&GnORD7TlxmWeS#DY$b6
zmxe#_a<D#ZmZ`N^%nH+B^_OC-X6S1(FRqS$6&$yl{i4w@D|!?WFy7wd^zS;z(P>bS
zXFa2*wg%#a9Ph-o$FD)Lq=WLy?0Vap<7eY_+fav;9T6wRFjOD=u{*Jkaw_s8VLgxq
zms%_9KJa->|G-cMwwjb3Ffg9GP|etddKf8Jo|)-d%IzlyQxk-PbVTMVJjTMlfQ(eB
zK#jBSWWT_PSha&n&ve{xS|!L*({rQ5zB?s7=)4hO+?eSN(pANI*lE|=IcV%lnf+0v
zCxhSIrvh6$*{2$vMmu65QnOw5kPZf5uiX{toZTq&$I;%Yg<p~7pJIQ++3%S_%TRK^
z$K-y`Xs`8|qRd{6gqrGDGM(Dz>5y(QH(ap&g8iLiP^Q}7ahlQ^*F8h=pT=)b;aB!d
zB&IwdeGl_x6$P3mBb46|(?LefY!4+9&B$|95LqptMh&EPF!C7@9_0f%O=drp_YzO+
zn*7R1{_f1$zpTr$BhUzmbxGMS2j!tT{_Z>bw1z)CBJub#sDiG<!^=1+Cho6B|C9Y8
zY)jdF-K$?x$I2oL5zWn_A>1tLRv35ohqzyaDSSKjbIjmY?CrRM?>T!o=Igue->Cf`
zS1``~gyzeP2p4Ff=HCP#QfTf6nqcrAwR*WLG~0J|@b{tFU0gw&Yz@s$PuXg!)_9Dl
z35mjvlM($DKR}8Ry-a<1t}>z=kBQ5Oo`WxD@uloWsqs-~`H{{t-H7^=Sq@WQzN?LB
zmipo<g!}4>l$1Ry5!e*_Anh({{)3T@7Cy^{k+voyc(zf4m8E$q);Vdk!RC}*hPHMi
zGP)jYz)4ElV2&^rd`;id(k@!jOWinn3o+Wf5L9N|{$*uF-MG-hE>!}OfT0pQQ@@=G
z{%G5UULdymAIrfd0>~TI_po2nIQ)6hv%!rPR@<~i$ELgCrA5?jZ3jlQ&ji{bi5O^$
zuogQ>)g7mp)Oe7@J4fSHt6GlGQlp4sY4e+q1><^7KcVJ#)LdZ9=h353bE^@ZpfJMT
zGtsyuuI7lc<X)XKpLMc7HVFG;M<n`bI!?<7_6GfmRBoR2#vWO^nzY^r3#L|gvQMT5
z7-_HZ)=N0T%{2n|`r2)r6|0Ri>~(S8P<neI_4Y%x-kys~72qe^ap%les<B>3JkI`%
z<-kLV&(!ChW+FX)Vp;HegtLd3-K=#EUHi1Z=25v{Ry%MacAf6G%^ZqxZVXP0Q=iY0
zbCqg;4SPo1U(3Ud4WWw~l((!z?U!*sOzq3fPzx5NkBsr?eYWwTa`f|2*lmN9Vz(`L
zI<zZnx4o$GwC%SoRs2$Zwcqv+%|AEW2<iW*)2pqzTd+=QKv)$RliGjw#ePZiB~DHa
z?P$N`<rcOF?Uxt3VZem(kp|4mbvXJbETX%&UxHE7DHNUCFMYU)BK7`{*e?r``2R!p
zOB~vv{Sqgq_KW=z<HT>gd$wQtl>IX8KWo3lVSpJJPxoxUTnFav2m8%h48=-E##AQ7
z?$&-e2se+kyzC$Q<)S1$$9`kXzZvxGwGC(g+b=zPvR@YA#+0r<IOP@l<$WZ0xAsfO
z3wG?zhe28lm?zMHIYlkLX~0|w)d!}cVE`Pb{uB1gfGb#Smt&HO%~s~i29yOABGr6Z
zf*@20=I+kSmw#0m(xEu;9BOK99Q)-72zTt4{rH_?zYHK>4}`&di3+yaBRaL;Yx|`m
zh#l?s?d+EgXpH?J|0(uMr`TQPe~4cEl;EaYJNf^C_RD*d_#FBF-(kNTap?ZHU-sd+
z8bx2>Jl4^E`5p>X^Xq@ret8W}pY@-0rzk?bT&}5dF1>^O60;2LmzZV#3--&yFkAOi
zC*#yP^?kHoK8;$io9(mxQqQF4qK^O9?U!UAl%-23WIR2l&Y|y{{W80^)6WmI{c^X>
zvfu2NSv;gUfl78q`(*@N*rWXtDmgQDv|lbs=KH?(OOMzu(R6#XUm~5dUwZe(ehFml
z?3X^VU*fpsp6r)QM*Ag_?VJ5FZNJzr&r!Nrb*RW?_H1vyRO2PrM;#8n4`diEnB8f?
zd{)m_ShT>7`NTfhF`sB}$6ToKz>ayZ!evCS<ecu@<J~*^B`(6XvtN$p<(ORzm@|_`
zo>4hYKinJpCC?poYQLQArU7$>p2HsnPTC)Lv0pO#p6!<^#eT70DonexUuruTsM$;V
zWxMp>-+q}yv-kE(p0nQ@`z038yV@^3duhM)?4|uOnQkxampoDm26tw^R81rHOOMzu
zm1TV&?U&v?+b_rU+3)sC%oVU-dTGBr%@ur~m+jRV^xfDmk*1DTu8#Igpn?6;tL&Fp
zy}*8%rtFvLV!!Ot!G3uf^m}e?!l;w9UwROx?U&x9{nCdp$9|c%tNoH$wEfbXv|lod
zwqK?t?U!7JIQGjfyR~1+{yCRfFa^U3l7Xfi&G`yiLGqCOm00uAY`IOTrNdx*;bHp)
z2KNy<J@Eb|66!thi=krR!1fND9I8a%Y2AX^yPT}Yy)(UK&iymm(Y`>VJL^Yft}N$y
z{Wp}kvPmqM2zoZSS_i>`xs)_3vtZJK$@2r)L%)xDUg4U=DuL?>bvY9bbIMWs_r~>;
zkww=v!mE8D8Z<9(>+m*<=20pN7R@tN2}z44&LKGyhhy*CjXm?oq&;(#JIE`RigFq>
zd%>WY##wA%?3q|I1Yz$|>xJY+fL-mGzfpQT_)i`;q3%4#uqS)wB3vkydC{?Fp5`*W
zFlV;eG0`#9MS(PBrrh<OKqJNv^fU7n6~BA?CC+wJpXW5)c0WMum*2F}u@Cl3bkI={
zKB(&dIs4^B)~fMi6KU0GIc(q<*xeQJ{LLS&?Ztg&dBb*IY^L*_$Sc}tzC5uI)^FLr
z?I<st%J}=9_B}7C{UU35T}#HimUqx~=JuS|(f~N;aCJyU+o|WZ@Fbp@<Lu8w*9UV$
zwF^se;Iq&At}r`SdvInZ+~QHbsntmLsM>H7`vQ#Nm!#n!83ZUDwvKZ1T=bZJ=!Z)W
z4z&z6i^5wAV!lw!H|+G*)-2cDBVe%5=5zC{Ctrm0r$kn~tLVbj6ZEf%w#@&_({X1{
z+rfj!sa>GK<`!e=#;{!wYCdHaF7WZDUN%nmsC!Yd;p@7tMtWV`KOj4a6?jr6Ho|*<
zBB4LlB(}8Kk4e8TNq<@j{pUls8;sra_7%ug6+nOKg#P#1(SJRRIlK=m^kWt{Ue5xZ
z(ZBus(r+vs<|!^Wi;4#u5gJLtjRmapA>`|bq3aYIj2q`O23OaXViRp}@Ll_ZZ^3!B
z&k!4pv!oYzS=A|H@g9t^^mWuY)N;zK!{v|!_5;B#;h|<LPP{@)*}%aUC)&3IS+%fM
z#aC={7=itc<#k(pY?O70dPqhzyt-8+H?|B!;XZk;H4f)Ws!hxVR<^&jdOAPq3gchb
z;g<$lgGXDd>zXo*nra@fG-~SVn$lv~>(tiJhE4L4P?(RvXtCS}eCK?BeD^ETdN$sT
z!?Gy6uCcFEz9KAz9-fx~P1p_|gjGcmw)zTi%%vE|`L~+C!mL>mNDm&FxD0aQ#!>!W
zIMg2-=CRUM{Mk6mTVjsniz$ys&MF6ArbgqzR}{Y%D1Q0;t-mL~s=Dj5j=f7`;|~6|
zBckBrki!+ZYJ+clG(Of^`BXYsZ}uyEqbmC@^J4IOd*e);{sHzLxG5dpkskcuDRj<O
zs{wbnL{Rko^m*H!Mpo-i|HA-PclzT1v55a620rS4l!1@>SJQ`A0b;yV{j|T9X;5(l
zWg_hg#_}E`&JrQWhm}g}*y6yWD#ARr@C~a0I20-=Mx&Uwf<+5CVBNqc7lQPaK-Sdw
zSPQ8))5F(}@R-XGz}Yw4)N1~-DmOX?$?(pRlK20m^nZy%Xzl19htb2K|KUk(^oLHX
zQzBM|E}`CdO2>$d@e)r$VWYVvj@x}sgQ@<7A;+sS@cpUJ>#OC3s4o!?rTdzX#1ADF
zM%fFXqi#2|BkQkuCDi<dc_@(biK*4N>ltdfan^Q>1E2G&?BnD#aFO-m__47|+&q2D
zcIE>pTE9D7-@1Rth%81pF5^?_JG|}I{gNZ8KR{{3kyPt2DtoL4@4dff{zlz<Kf#D_
zlLBvLJS6WJc`JU=?wyP)c^Cgq=5yXTI;-7X{6FD7yn6OQ^1Cbgw|ggJ0Po`SFdFnO
z$~%eB<A^>7#fzC*ZXj=2d>_Cb%OE^Lv&wufbgkzM98E?IEWSJwKn#<iOuQY_1C-mx
zGO<S3HeY6hnkSe>;Tt%VZT3)YGqJu}-I}B_8frer#3+4L@cl#v`0a$FfKYR(iFTQ0
zc7NENyq_6;Bd7&pm4_?RiS>yd)v14YyyOM6k2+)>M*_+N8k!5P(?WBy&>+zJuw#Nv
z-kiR)^M5wrb#;!e3W-rZ-(Py$h-iEA*%<YELQ`28uHzYao}=UBTZxRZYdtuNdYMsk
zHqehH`jMfQ6U>XP9f?J%eH30V&by+;{tmrS`8^f=`C7tVI1h(g9Je@3R>Gj!X6;bV
zafrS6gOqj}?hC9mw}-A(7agv}MTc%qOC*-z_$8VlT{VK$M{Tet_d_zQI*d5H&A@H{
zU=Q4<DxP5WF8m79XfM?qazHe^BBQ=q**SQ!R>knF%EdUJcaGUVwBxGatGs5RBc3&C
ze&WO77PJxmO*4&$-D-bd<xjlEb4N>b6Ll=2y?k`iUQn1W-~peG?UkSRUG0TgVJx;c
zJGR#%WNd3MpdU;0|E=~?8@tzHV|U-%t4Qram$<*Xy*w%H1$$&$d-+n@D{Vit*M%Ga
z@jg&^+cch0ehla4ta{AQC9!G#Au+-c{z<qpGYMf?oB*v-%zDsxWY$BB2@x#y4^hu)
z^e*dF74a`b-?Iw%XwWn@X`>&i_j!0Byr(PVGT*57&KyDP#L5!zJpm#;L6yW(cu}W)
zDY%f8EM?ZgN(wh@vg+n-CdS}Hfv=4Sul}R>kSboL{q}{7Lm}gKUx*Po10$X)$XHs3
z`OAo?9m}TEjmU98uIp$lm<pYx0|iFpd@3@x`Xem;B-RhwkJ2K>p?)L$V^H)M;iRr#
zo9+NEI&b}r1KUS`9cu1v%+CPAP|N8?bO<r)dIbuMNCCW>f5b~3W`cjEz+Wm=<BN42
z_^025gMK^$1&sPS%mP|LYPhMt5iQfC(?9{lAbOzHWSwMvZM|*PCx&qRGnRs|0G<*w
zB85oI)6MUM?V;i3K4rPF(d)v^UCXj#qc`B<aam@#<x(R$8mZ9k-inUxJOZ?hNH)PF
zp>vSGb$oFEd<fq5B$}W#af@z0kYg7?m*~jt=p6{O+ur#Q_VA=8>a=2-O0R`a=}l-D
zN+qW1lN_m3c5#tQ>m@BmMr0fCYUZX2=O{3DRFddjnH#;AG?H-pkNARK;0S`cas+?b
z2t|_6;ogahzi(0dZaT_{%wt_vz^C$sK&MK(3KEA&xCRl{PWxUJPkkJBgSSm$BUKF@
z5i|Wo5P*E>r|h!Dpfe+u9dgG9jPRS7ModV^bniI-bfnM3#eE#3v<CXI$}S>qz+!<V
zgupbt(N>zYem4*^S~1_$yN&{au7nJkw@~5MvWxT?tz&cfxL<djB46cLZ$xfN$#F+#
zIU+-u0)#+zPbH;5RtlE~-0VB0q!@4ns+6Thon(IjC3%p=QX}$n;J^(||Eb|k?}QtN
z;z`8?7Z7bkbwg;Rym?hrwNUp;H^M372tNkl(~loM0;mRZIvt^offlh|t?QAV$?$%F
zFc7I622$zQOl*v6rTubM<#@21{X{ifVlwYl&OtHVRPp2db1V<a4(YN<({z+U?{}3k
zNtF?tpt6kfms3*<ub8AI8|5Lq*lC!1J7KfQs~q{!HRgDgvJ@EH$e%o~&rmks`4B;T
z=d-bkAjbHfj+{u1RqqXuOR`bQx35J4nf95ELh%sF20J^lQprZ-0aR23Ke`@GqGyOz
z>fv4@h?SzX-=Z9#o&6ByQFwi`PW4Yj`%$imh*8!gB%?4;lp%T24y_j!2M}XoKdTgi
zz*n7m&+4lhqHTgO4?=CGd(RmGMALch7scX&t7$|=v*u3C{-oKUs`RftRf)rd)PpSJ
zJ7CFbp|&oY2WzQ+ZW{=)xqdFf@R4slgMtU45_w!jqXN89Uw|`+gZxJ1Y))TYL7*=-
zN-apPR??kOS?b5)W|SKc8j<pt{_b^~GrE2{ulcD@&;!&xk&3hDHMj1h?==uGuX!hi
z_uvqi9*u|^-v{|&WJOJVSe}o}#@$_<WOacsUi8uLK7hdRih*h!Gq2f&k-@wIN2j~F
zf_?BDRIqF4v@|0!lilmWtVE6;pLw(z1&k!6OQ8|Pc>UB@HOP;rB3MJzo9NMGgIE-r
ztpIj}{3_p*sJI`cwQkb;lS{kB&i^*l;+~a;vdo&Q3$u~WSC#3vdVwRwiN~ZoR_8_%
zo~^2b!qBxwW?61k9h(;<*$>tGRpdi#6xI&r$)R%3G9${R5>Vnk43VSnjm)spb;i%p
zplB~tLeb%w)k6>GZ%8;VdwgR4WY!tjN`61oQfx#GAgfMn)O4XdU5_Yl2^FrfKh^n2
zN0j3`f;d}YonTzgyUWm6?=D=U$mG$k#7#*&M&uC$fB~$Bz8hHPdLj*VvF}8LP6s-_
zs>2o2-y$U3?A3EfxET#pju7=An!dDjII{qetRL9^wKOQ8)B1qY6&qa|Uj7q%94%@b
zPg3L2s80N#)OarFJLJ#qEIuXw7nr?NyKEb%-q+1l@9XAUd|x+@{lJLW5dZe?kLIZN
zM+@X}+)m|GA95|~2ST+yFy+16ML^i${n6`CBlN%m%XxoPzaxtC2gkGYcJGZoowy$B
zJm=lp?h-!%mBQi!rlvdfwW3FrIa#N}eXDm7-|jt9eV563M^w{$XOdnR%<VCd7`^`Y
zf~%Rh)dd;<8_PM%jq4<lb@&X;b)SLvdx?CNeHt>z_`6HKD(1VCkJUyN;nS!&OYK$}
z$u|VASE0(9VYFE@Tt^`r+F#x?mG`9Ey{pSh&wSIAW2E!0u5rWXptk*+rW8`XX{z2w
z)A(?&?b&2H=Z#%H!5m)Yu{rhV_X3T``>Z?P5=3P`V2%y;8K^AU!FkUx%+Qqg42|eU
zh#pquc3&ivbZ)%&tI{}cK|iL_cx>MHR{d1t!~NA%dy5f`sdQeO_jaB6rvOA+MUa|I
zyNpt<<V@@<Nk1kps8@||eM~zTSdR$%bRd!NXCyqt@W}{QgA2wRo9~@bB4Mbo_*7=5
zeK10-uafJ1s&urujzTXPgh6uz#?*lrOG_}H6miw_w+tobp*dbWXMSqzYW;4~$9&Ix
zB$&A_G^b~2H)B5A9k0g(J`R3}a)F?<mR3~jc;`KHFQ36EapYjTystbQ*wMZXt+()f
z?%36M8QT0a^a13DGCde@Ac!jfVah-pUV&%JINU&Vw;PeC6>S$m1VKa48#{})FiS13
zx|5n%j(4aoawBUg9+YaZaEJ4{dodL9U0_rr@Uam&4R0z@grVbk^^@Did|b14F%ODA
z(VoMu!1B&hc=TOYL%$uX<XP1N@^>vR{OEd6CSq5s_s(BMOW1{!8<zK_5!r%NERXM<
z*RlD|@~|4uA~-ac@10Z6*HwVUtd%LG|EqG)|9d9O;d`2~tNHSEg!l9Hd(@~%Px5)1
z@R=3S?Qo*~Fj86D`HsA|;zPX6E<DFjvoZXP&mMs2Y8{Vq1~airqu=c`qKpqe<F(yw
z>D(26)M@1H&YQx|c<jxPuj<%^cq+@Br{8uryIQZ<>k*9hIL8zC6nZsy!Ux`iA4o%Y
zw+{hY?oabl!6HyE5y#uj$cQcyz(Xq>d<s8OW9~S#*H+xYz*8FQkU($7e8XB_?P1IE
zopEp))*Gi~XZ>9xpK>%3UF6}(L|%qXCMwQ0BA;U#EI!<b)B%bN^tQ`^9~tO(<mfio
zqwOgO7k;Askwf!>C5Km~p<UDq!7AH{_Q}b_VD7oe#C*OSgB}wf4xXr{Ki*DHCWd77
zOD5*rfRT@hKL)oF_hNL1Rk2)8LXH40h+{6)Rb9cVqNl7h$LRt7JgJw($Bh>w9SekP
z*Lv7hyW24Yp-Q-;1}c|e0@orv1_e{jex?aPQ$+bDrPg3BPUZoz{H+?D#~Fryr1E$Y
zYoi}g|A`)j<f`|X@eVz2!F)t%!t?#CsXK9-CI<88;Yq~fgqT-AGUtn5gKyvp<%5^j
zI!ebQSZ-?RSSUzeNjBO_bpO;wOGjUL+@{8^lYj~LB$Mc-Lc0cUwYmMElc3I_WD?y#
zsx_|yDK=lwbVd$v-eno~@gPT63dql7PBr)mhogKBTnWKo+nr2_GIEnCHDArwIkoWx
zd*J7-`ROPMuMR13FYXQ<78#5MbMU{ot8xABz*#=#_CoLt`%I){KUWtKZ>UGhYZ5eH
z&3WYMLr8-H{tZ^U>>lvw%Ay@^VR|(#P|hh7qadu1cb%4<U#CU&evwQ|-ZAYbq+^v&
zr{$!n)1rcdlWECBrroa6dUaY0X)%^Vzt1gfRYB~(*CJH^U_w&(&rHhDb~ZOIV7<yr
zM&vvvZK)S8{2gROZbRKd&4<o9$ogc%hgP$Gb}{(8j5|GTtajR3>P`@)*~F^EE>fM4
zl4qZ*xzmJ4JB=HH$z-er1`Sjs%ID(k{!TLfD8;$SWMpFOA|)|-Os3vk1--Fhe9vwK
z31{1JXB<nj?xi@S82%)aYW@6Na18WY%Z&wVNor~>;`ZYR;-)EZLFdj@FTjJ@_%Q}F
z%nOu74F68QJ_V@4D9oGKpwh4^TvRiS(~obJG@ism8V~9*U(z^Ta=N7PC90x0zVjrE
z3n>+OUiCz&2;NpSA}6Bu#sdD_4qjO_BEwXT(v4_K6YBFBUo7xc9Ahmf8IA<?a7b0>
zQEf7f^RU*JUci$JdRejpUuY!?$#@hSn(IBmi1tGpq>kd3z6Xx~fho`O4p<r9nP%L;
z$G&6dbuC=a-{={K-)hb=qR*ll`jTg0b?`&gJH53~JY4oqkynqPo?47g96`?}2|&_n
z55-sUp*T3kxneFFkwv2u*2+lGk0~LPt#)sG;ZZ2_kWljxM&w)N>t#g0zy}U1sEV>3
z?UN}(iY?%MH{{f;(H+q=*@8aJ7IjA(&$_(mv_Bbf4(fs4V&New%!zo^HM=;Ytg8q~
zVk73=amPR!+axbnWx)BYnsGfb+jb4LWEu-tXFZ;lBQ-S2T>AmkkRNzN)ah-T5rq9C
zXfzKxHOCW(U1~8Nx$OR5>GX;rcq_6?EhNBYXGw4hnm+&yO%qD?ou{)dQ5}LiYYz$q
zx=k>pJ^!U}Xe%VR5zN&ba)y+1!83A6^VEJ9h+wlQY-LBYUx6<v*$*-=#7=no2gO_5
zk9s(n2;GRklaVT$pP+qIH$uV%PD1vjpGrc94!-EF=s?1sItke^e=G?do$D?KqkSsd
zp8c2j4w7Wf@}o(TdF(8F#ZVizs?Se#rO~<_g*Ca18^1s<Bl^G>U_M6$%=}hQ`wn=M
zwN|EJ)S9X|N3O+!*Qb8?gZ+&5CYp0-7S`6KL1KR@p#2H9mtw9Nc0l#VM9ejVzwBu1
zI=n)p*ELoX%H3t9O}!5y2?@+P781yE@S7~xxt77_N<2$_{UYd-Mr5GU_qpWs@_^)h
z7z}VC&RePkXv3!aH@Qms!E%DqaRkK;ZKEEY?W+|bOch893JWkMlPjn|o}z@6&~_<1
z{s~6{wXUF^4vlFtUdjh9yxG1Cr}<oJttj<y^#0G2dWqAxpCTl7o@W{E6uPQ8HGc>i
zoT-^V>(kem|8q{~=kRT&1RD(JfE=ako+LhJ#H&;Iyb2$-YE#z(7zSo0(`!*RBL7tB
zeJXwG`h}!yLv1>0T_%K4YhCw(-GX2E@E+2ub!uR{h2LdL0JXjW-4l<Xb;Iutp&p@@
zLygD^_0iRc)U#%2Io#BC*$1(5YCS9MiL0V6y9sg#tpzLNY5qaA+?H2M&|T%izWWX*
ze_MJU9AJ9=J5qud*S1_X&s*yzcJHo<C!;T@`ba+95OLX8kRB~xn^aRJ*MnV)51)ne
zMO>0(^apPshv&I9V~^JDCV2V~PoA#VGTaAr*<KwFKH717S{JghccQOzwGaMa<Z{^`
zxB30_zuo3Pn*J9!HeBdhmP1b+J&xG%mnz!p*}vC$sRn1MTJVQ)v|7~HSa1zubw$ci
z5um|cZAj0LiDoU<#@Ka*4yVUESXeWl<vwO#LWZiO7@E4ZOX|}zvLyYjePS{xhNpKh
ze6(Tpw%)?7p_3ZXi4Zs2h2&t})M}eAM3Eo3fr$EJ;?z|HZMPGPQjQ(<;!#9XJI!Gp
zr^C!hCUdlzm`dhVCQ@DJCN`dy!`7Z!?Z8C54CgY~3+-PZgUEfD@jQ3U_&kX}t1Uh@
z)E#a;ggXS-%x1FI0jL;WDCx=8shf(%w=>uhb#B|mAcxb+J|&!Py@fRrhD5#~xphAK
zB|z%sXc@5k4wjuv&#F1;SE%$}`%i7@-S~Z=WLhe0PTEB(t;Y^Btr}Nbd*b);P&b?|
zQg#0obu^4WV8axx=h#`KA5UGcG@@zvv`=6?&T-*+fBSSKQFxX?rd#bFF|*=pds*zx
za14Q}Cp0sUj(1upfoVN<o>#|jY>Rgq`dJn4)A3IbnO?7-02ypsulK?$&Zw)gfFmVV
z?@`?aycDN?sGfZz(a3m-FuvSkUyHDS$>!U{ym;s!*-diF&SzWdQqM-I9QV~Yb|w*N
z5*|P<ZL0YIfmnC4w4;c*AN*gxquxtf29CAbSqP9mmyafa%s|r^iSZBGEsn`98^By|
zAd$8GctolWsq8<>*2gZHDk$dCa9x_t^VgI-5EU-{Fr#z(Rpn_D7W20dES+a&N*;94
z;tqLIh2{bfk7xIEzQM>>oMWC2t4Q=zNRcSj_keb-R3C*vj=H-Wa$6b{o76@)j1^aj
zT5zPX;C*V6oV~4en7UoA5_fRa{e1gAI0!yh2__Sy(DsW{IBRj%KN3fpQ)hgnFEOH2
z;@J>*i~^5q!h^vjurqkeGE@b+7y_1U<JWckYUI~Uetp2NEAfTL<d=O)&m?%XL_6ni
z^VEJq7WNbP{Mrl9dU8-*tji9DBv{YzI3I5`#Dlm%RtH&16FcI92x!sG|0bH>nODc~
zg*9Woj;!YEuGVV)3}|B-(zc!4jq2Y3HHWE#NJivdg^UxEfub(%P}Hl*qDmlC?B@es
z<;}7i4h4-6JoOV>P<N8Qc?6XwH@qT`zk9^@OYUVZ)sJIB->nLxI#irWpKqNUXozM<
z)$6mDYRjDZjXsuJ3nsQEZmk~hc6cYoaIUc-ntmQ(RNK1hT^lbsO%ovAl?9#dxo;+}
zcKD<1+`*0Nv~30VQT^OZ(W)2U+flz~fLGTL_7sFz@(tLD@+t;MS*O|DJR?1-JQ`IJ
zkEwBs={$4qm)~o&i9nBE>UYG_+xACh5&^8UD~(7#K8>1-aB%NDT=X=eO{i38PLEQ<
zSit=rtd4r{eBgT^s+#!S#*Nge^zY3zS>N)Pl2S0gggoRL)Z`aXe&{+c^wex*(7$-e
zbseh#lPre}>o|471GT*hiFqzi-tj{+jN4egkVO8DpuXFYq0Vcf+B4oG7IpH{!)i|O
z1U@$+lXODVWfU*1PO%!)<G6wsE%q)F@SVT=W&Lg3@RADg;<+90Q(g$H)a~FuJ}Ec4
z-TwWW-k%tWJa%u^shKa7G}zA}K-DVF{Z!P;z6vUU{yhSo{~o9IZ@HIS5P02)eC$KN
zXc({#Pi$wZC$<M5AeIYj?l5^@8?WZz=T&(+bA<Y#)D<K}-lyqSj2`wn*o?E{fqEnI
zj+!=j^QFjo$!fvY=tR)3e)AMRcBq@M7n^W<vOYX-IUVcMVk}Of1LMe#J|AwqPX2>W
zv`2zZL?2S<xk$~zVZy)2;m?!w;m_QGiY}cGJ@O0a$9ykwrO2JahXHw;3ise5tL}&8
zo&b&p&jt(8RA{a-I5TSYv6@szaO~ty6S+!{C$8~(9Zl8t(ONE)+<!}^qYmhOz15~3
z_PM}RHPQSTI$~^?&wdkWsMn72@pnWie4%n28GSTV?mHv+4~!Yi-QE6%$<Y2p2b+Yo
z(b{fdKjmBOr`Veqr#U@Ft<PqI-e1DbfGcgv#O^$8eHIv{@6__0EcLWChCcK;o<wtP
zxEx0=Y`hVTA=ZZh$_HClEb|kTm=P_GakRlp>*P9qLJjX-e}JO67a+s05v2uDkBjo_
zsmA>G5hPXUY4g!H?kkagy^qt==DTugT+n<$``k)F8|JlFKs>1zDSn|x{}X;~WK!?k
z#eV4tyk%kY^b573;-TT$XrW3>z`-nD62{VTE^5W|6d6{F`fVffk9=yt88;Bmr_%Up
z&}fMAL2CDE7^__j6+w}w@{mz$faIW3qSh9Wvg0Hf28GK>Cfh|aQdVu6I%QncLOAIJ
z)z}o)hj1zbWn#9O?bGxcQ4eH~Rw0x%?MJ2IkJ9)f3pvL8w-C+-SGxr*&}kqr#L*i#
z)H`sIC>gAa1~IQ8i53u_BOp&h*RiP%4X6*}M>1~sJqT>eaGykg@0E;j%DO?q(J%f7
zoMNL{cyrP&L%5cAU9ULmMOt?nVKtOvzw=JE6QsD+{s|L<V6a;~(#I#fc?U~Bne-mi
zmL%RInY28=5|U^&756WjgHZ)P`BYP@epx$Ze)csf`x;+gSMwjnmaddYzQ7)xj-qjY
z$6iO&sqL|h0jh3lEU_O-maYANgkPI2Z^Kve*7=klfz7Df^~%o76B2yw2u%DOYi1UJ
zo_V3mz6^P^p5ZzX>{u>cacMUZv2J(-5Zm4VhF~Wdd;;=V%bm`EMs&dxl!HLY{1=p<
zj#Xp2yBJb{d#g$a#RNCMFOenN{T=AaBn{0t8KtrmHRP;9c=RK@Gzx6&FbN~_Q-ye#
zHxehaaXD8ZAI5FEWUsxF$kF7$al9QC+z^HC#I3`7+FZA+1PYfuhJ6?!jqw8AB-D&;
zyp5<(s2Lh7x9DQS(kZn6=uUp%@k8(<9akqtQn-Ol3Dyz7rn+kE%6tkG=8sdH-fPs{
zuhg{Ww&&}ccX@{2i1Y$JDQY@oIW`*{I}1BqJ29MPL|{zwD1;a7Y`cGnE;a&z!mktU
z-$U1K<EjOp9&zR-zk>L}TkcB0`M`E}<A$FhD7^d-+<(BvwGqVw&}gki>u|@hsE-l7
z8eXh5xSV?__!di2mTPQ89fy4SeXCag-!F&cNDsXq6GM_OX-LFywCow=ezM88p<gos
z&2q3bxf&&2MtBnIYRV%Yd^N(4LALZ+qcQo=qjoAKSpUx6dEm%*Dw=51E~v>W&tRPB
zHKIHt!mjpn6sN{-t&dz$fQ8_p!F+5(Q`l}p-wa)cOANRL$)gGoF>Z}r33;E@P~3H9
zLz44HusR9Vx%g&!GCWPfQU6OA?nvcFSSHYeg0wmRc>8q(0Yw5FxjGfaa)eV$g9sjt
zD$ttEdGP@ZIY!M(vC&{hkrKEq5L(sGo>bz7AKvL3-->a1eJr~rIqKY|=E10sV&e$!
z6qKOr{~YSC*nL0bUhzd8=~9x7nUYVLvOOT(N4H7$6RNm6k?!JVs}3cLK{e|8x1M;*
zA<~$5^=6!b#?*Tp@6%)tp@NxRG=jf9hlYLu!Fq(AR+vKQ<H_K42u_s@9|mlZzdR23
zM9D4cC~~l!uVXn7K9Ha{S}^Wi$v9Z=KY}%eCtGsJ;=d`=7vE|$q9>u9I}TjS!Q>=%
z?nCI2bNWd*6AhVawR<8=e|5!Iax8us35p@dms5`Gky1$u^spO_l8FnW)rs~i*nc3M
z@W7z5ioW(z@+g9s6#{jK3_xm_yHkf#dQ><Vpb$n7P6o^Y)SE>!@TGZco{ZLB?hcMd
zlg}7gxJEV3hW9O7enIY}Sh>fl3+%vIdn{V9C5&;Ej}($O^OUfik8u}2z!+{m$Se#u
zA6oWr5%9rwCQ1p_xr66X5grY@MYD5~{k3@?a*b~O7*BXx%L56k5zAp<FI3poQ@g{d
z)Zkg&gK)Iq3mn-u=5rkyZauWDRth-Y{u}lkLM`v$T9C(Ba0)mdYI$?Uu}`4!UFs|w
zUIXAgEMq|#<C@=`afEtVSN*(PsHMTU{(OW#fez)eDLnX5s2TUDM|ahIC>gVE5f-a4
zK7bMtP8KiX7?&K&@(`h$yq7~%#;oC>#|XcKe#FwkpQ~Z@Nu>|$p=X-?Ad!?u`&TMw
zYjCaVkKDdi{W0-mTe(X<N82v<VT&#)zWk|OuH)E5U#lj{Qqx7?HM~6yf4C*XP=*C8
zRvOU!n(Rx72tslZpe#@-evQQm2}#^5OOJ|4Sazt8n{kjo$J&UeyrIMo^fwmWj_lkZ
zBCCz)!N7v`7=Pln7+QgcUZ+2P`I(fk)m_0K7*bUof^3?QR}q~|y9OSV5!k>A!d!x?
z@y%0xlpjCC<jnb9i?OSyD@#NBH<W4$25L%~Q|<6q_0ce6;ghPxccKHb$ETowgeia?
zDqcCR9Udcs*3%wFnvj-!C&kdNk<?`$C$y4JvM<>iK^!LSEl>w^jeJa{J2ZxzuV5q6
z;oI<~C}`ga1_CvNANR$mt{c(oRU6J`XE*~dqo;Aq%bE4F<gijONDCtRI?(?fNRwl=
zQL`5VvpEg|gb@%NwrOX@JHWx^#XDy#P4=_lsW{Q8X1$5dG;<UC%k47bm5`gxfYXx|
zL(8jCDIFdet$5Bi8UFEh70#~2eU4=2R}ucC>cW#K{<u*eeGMOl>s2S<K@ocu{%IE8
zkHnPPKLI8&-ztF%1x8XMXThWMUX}d%AACVp>`O79Qr9d&3-HGU5*(GxKXUQRmsQ?Y
z4Z+9j@%Tlk1!oTiv8fi^jd1)>CT^gpk953<>2RVeFw2~DB#3V7x7)E#C<9CyBb?6B
zpu@?Pk3bFUqy`@DD{8W9m_m>K&oYHm)ZIFqIsYX&760cW97o)6FrWno1OA{$#KC}z
z(cvJrYP?rHa3|ChHDHeM%sP*cs)W^u+T1Ynd`FC4YMbA2x2kW_jHl-J;6Ib3^hA+K
z%F|gsMCwT%D-Ul$Qzsr0q3NDV=i48%5%80rH?cw2!KdrHl3$oHTkWTlVUOU8sUAp%
zEKYv?F8Q@kQbh#LNyf}beqAAPQ<5R$CFEQ{5viW`P<T?#yMCuV7czoJ#P?*+y%oLI
zu~+^edoH%<&SO!#x92voD6H@I&7M2y$H?`+$)0=RGkdh>egk@;?frM{xoGF}lrFRz
zd+wd5d{28WUy#a%(8IEe^DjTZo{PDElzXr2xu^@qxgTuLeG^p{xzYCAyXybb_FNCd
zAMcIpHxat=XA!kMch0FGMeMnw@!q&GpNo1iPrR+vB(SI4Ee737+6=n$kxmWs(2<q^
zi_*LH-JXl(JM^$M=6&t$xi4$FewaNM&4u5_(e~USkQB$BYvR^q2Yap`(cl9o(Cd}j
zqvwp>+H>E+Al=cPi!0@@=cet2J@=z~Fjnts&jr1|^!}IZxhRXn@BX&uK7*M$)t>uE
zQV;3Wo(n2wix$_ZJy)Ga?P$;SXnQX1zWj&nx!D1B1!apBdoGM$v(p@{^ZVIz@yOkQ
zw&#|kUVCrPRWBvXmM8GvhnkVpTYi8&cN1(k{~>#B&S}s!_r;!DiwsG7?lPF!V98bX
zOUx_Z%bu&YFDIy_tU6P9kn?k-^N(z2(0v<AiOvkVD-lj5dwQEecd|C<Vi?y3-6;zD
zFzko48Fa5mHRxV1xS{K|GwA*j;o6{k9)>Us0x*4jw>=k+LBgKf<-cXm-MOnh7o<Ax
z>FsBGE+4F)tJt|{+Ql&E;`zb7wddvz{!iF*L%^D9wNt+<sqDE}rC^30rB=V^fg^ii
z&wU*$`R}sl=HZU;F7{m9I;K4r+pP!Mp6f>yu=b=m_itDZIp*AQKJ#nL-=g#o_Orb(
z=<?_FlEc@fNrP?#3{Y$5C7ix6-?X#m@@d!aY0tf8Z|%8Nwa^IK?79BaQ|N57=T;(E
zBm=(#+Nw-)vUdJq_S^@RJr{3R8qt%L($`_!S`H>B7vOF7-25{f+t_aGxeJki_S~QE
zKYQ+-=&G{lJl;;R=c;gLrN1Y8?!X~v?0vB3R%?5%8r0`0VLKng?*6jpo}}%$e5#7}
zTwvZyd#-m6_FTmM5PR;e!s30l=Z<oVL6>(0l|lD2HL!lSK{wB_a{f}~bPT$c(jOB~
zwb_L_vFCoI7b+BAt}?l#*sVRc8qKfGCO^=go4@G4Vb47TRfDM&b5y1p_Dh^8U)ghY
zZE4Salu}K5E_&{+2Hh%c&{Zc@Iy2}(-+@8bn`+P<x*LP;fL#r`y|h8sYj1{fp?T|V
zXVCo;22LHGpxu)cbZXF*qa8_uE_*|#2Hi%~w#{DrJ0Nuoy2!GR2HhqQy{kcYSSrrW
z4Z1^8ZL){3VlYK2gJK#yVt_o1iJb6{XzSFQmpm+%v<AL{aBa|?Nb#pZ_f>p|LH8_t
z+AHx-vv3I#)3Uc1Fp2pV39J$rPK_*sN9UcE{Q4Qbl-=W}m{O^1o&oV{v*_N9IJAZl
zeN*=*u+_2Xo<uoZa3{iH(KY9WTGFRh|6jM~dJm*M*ZY6Lo|}vNN0|^eK3T}~t@+sO
z%!UBxaRUHdaUhR9c7vvdqxB8R^Mtw3e`13mJi{>{cZUrMhNn9IT%_MvP^lzqL>Jyi
zDlI`euJgstyAW|Ox%;fOY8MHX^bMPEXxyiF>WvzUo9VI4wNam(So<3?;O&K4-Ui}J
zkv!^V;WZw-JjjAEG5ixTP#q!1z4euL+z<K|Vajf0O@?6<waY}!vQVpR)F=ms5uJB9
z^}he65)`V>0djpg5jLa5Gb(@8Aisj@Jnr0os?L^p2%!w{%w3%LNWR^3Z%u5*y9=lb
zYcUoGvr!9u-XIbLM%JPy=(2wdkM(M7JWn#0ovD9v%vx*I)G!wq0jBWO!l2KRn+%WX
zLj)&kECKx1Msx>;nXemc{zw=3tLqUO>eNH~^M*P8*x4RjA(-a(JNJe1I$?@^?mS@A
zcJE~R9v~T_k*Dtq@o7?=mpwu$H+a_({9mIqfwMi>vEvaU!&wtAC{mL*?-?#m(m^Kl
zA;!rr`{$?v@!<i7n;}lPB83A87BKVSO#H|!@FH2Qx<SChhpZ>_^Rg22^YEeMzZCgH
z*K%{To`V=(2o-U_oy)_G1^-ZiJo)S!4vq+(V+GG!7=dGBJ-i>sLrsur9IwJYuKsp@
z1a%m_{1H?++Ht?WE9XV<{raxl75MyWMF{8n@Bv=u#m4$@s-HLZI*OnD-a1_$p`V9_
z6#bC|n8rQU!$6!poRq2dV7(6(dQU*8M$fBwoudECb+TX1e7z;#mzWSxo_!1WhTVc7
zyw%E{at#pL>){PI;r328s7Epqkw+qyIuScSnnd(v#9vgzAz+;maU)Z>X@G@eeEiLg
zhkM%N0TjL!ZP|`wwqGL~n{O&0ez@Zs0GwmT^<h{v?u1A8+mYPR7!EI<j;TEc`IzNo
z@%zPpwD^w}zq&*Ox^q}gIwJA>m2c<FM`$00bUG(xjhdS|%y96z9J|bnlHI-Rm(<Ol
zOzF1NwNXCDog08MIocUfzPqXq%XU%s6>vrDCM<>YX&7@jtOux&*SK*IFxV>*<D9cc
zu*bOZ2n4Ho+7BSEFuqqS{sJULdxDzi4CJp>H!|`N$X=4oD)(eTN?!CW!`{4QXdaCl
zhUSs@86bU`7z#PBCh@5X+#mY`fZ8YU*w^9{5A3RrjB{07gfHNuLi)7K7pT<K>SFxh
z#Mz!1S;g;^4JyX-n>$b}`x8kxf+SQ!=>k5idQov6KIHiLYWQO`?lSmzk1wtcAIf-p
ztp`uJbcd{<v*1U%R`J1ITwrJ0;n7_qs$Ma`Q@ck2IYppA<BzH5d2iRLUqp8Fd5k`o
z0zxgg*R%ww@p=OqDb#|CP5+=Q0!cqXqV7-W8EL^hRYQ&qw~jz^WnV;)y&OmP*ay_`
z^CUf!T?KLbVSMScruX4XCC4-Jt?JzP;A}jT<$=!`LjFZEz^~L{aXv2{TN`950FK!3
zbPlO&QD_LS;22R}?vr<!v-pFkxa!0Ga11`ZORd*8Z25XQ@A??g;Xs7%bX@o;nYRT+
zmEayJn-hmdUNs_o-$|Y5IGS6_3el__g+%5R<WZM@s*#5^%>oL09k#+_qj0Ehrbk&}
zELDX{b#Q09+_LelwmwDYQEv}#_#iq+j`HTAK=#%F#B&k3gV$vuM}Qw3grfsU+SqiG
z_BLv$>$**S;XG+{3%)q2?QTfB`7e$n4jPFyf|4rsum_OOz8qBRpWF=dXrnz^HNu*y
z)tG!<ZcC1y$0slBA0s(yX!Dm+bbpA9CM9a(i4w!L>{mfoEfoG%`zaWdYSp!;fAULR
zd-^NB@a{c+U*HGnPf(%G<`(vD^rxaTb^qG``V)T56b0`e{pmSU`Tqm`Y1&y%J+%Im
zIm+?xo&NN~LWuZ2=ugV@B>Izg5Bk%>Bpsa3JJFwRg8q}DKNUfJ;?rClmDTul8bn&n
zH_YFO{`6Di$8+;-`V*IhRHr-YPuoe!cj`~r%}DA`*v(TvBENt2C-W_E8gz*Mv_$Do
zpnpH<Psdm({Q7_T(|*&RWVHJZ{b|Zi{uk&^%F?J6sH3Pr9ibE`9y=EWY9T(W?b|u4
zse6Qu{-iqcuKLp^R7&(G@BY-EydCu?{@9w<pVIb1e`0FUpRi%rUVp;T|9#P)LZkPi
z{-lPGN0suypL}RrR?g>}(!154_^Wa$`V)RYQ!7y0&`i51P{TS=pz7J4T7fFZph*jD
z@Ms=4*@FUgBl08_s27t8ly_ehsJ<vLsX&c)6sTNBfyyUoT7lw{HFPa2n^0faz>TV>
z!}g#+x$kxqsJydN6)4_yu>Yq`fm#eI90iK{Q@ky82mQ&bwBA(xi4)I!=AV<QK0TdO
zpB_o7PfPHHeiMybb>%08o90#=b9yU`Omlx!*OVUKJS4n29$piw^r(mRDo48=dksR+
zXfFKLlm1<r(_34SX+T|5W_b0cN)PW^4<Uv%q3|Xk2~`er*J2`cRgU(kcP|U$e3lHq
z6c*?2J{=NXy`7nu-AUdF3jH`$<!Enxwf?=OVpx*Kz@jt`OZ!QQ0@MR$r76cBA84Fg
zftQ2AbzQAqRXyFSVd=svpYXdY@pF{!!KHX%xo7aBs$PTfdkQ9g8_W}1xL`WyGnNkJ
zlOa#wAhNHj{ckVfh0=kIXnCF~pK^T9z`D7ISM^dqr-MEb8`teys~6tq9+<dM&+jXW
z)!XCMvffnu9j&-jadNWqgXh^aSy-#*ZEi*Bbxqx-BE&!S1Xn(OAxiOlss)Zst)^Eo
zT<|HrYYk@^*y^e+N2Aq)0rDQ|g@tkTi&WX*Og@6Kuq`PC`?I~cLUsCdpbBoA3X2>m
z?tyrQhJeTHi<JCXI2^)Dgj#aV4+6e<=H~E<Y<UVjHoR25GnEnh7nF2Y>~A=$?t<!_
zmAH_4K=cixvJrT~JLb;)l~EH`sN!ZuajxkL><B*2Wj$_NRl57cD<`|V)~_7ta!<96
z#4`usl^#4LmEp#H@p-La3M4oS|H18nRk=@wceDoYVdj-?_taJCIAVc}EAgCmVuiL-
zG&D9>t22I;btrxw#2y%K9D(-2`#c-*<9J3*y_M~kC6{X7Y(IWv%&7S-Z4fBN7t357
z%~s}4bBr#k7eJQP5WDpW{4$J7wSMJD7wEOm24bau?fAx6$Oo%|AVW#`fQCvBh;xBT
zEWgw>X7Hsd6Q<IexOxLhU(C0T>5tA-D>mFL=@Soc!sWKZDm{sXsy^7l$ylk7v{lvS
zGpuOOEJO~n!X~+c7jYq4VK%6F$*M4)zZe76a8;O(XXr0JMxwta;A^pp<x3;_YfAEq
z>tU*utHOM>OMgvszJ?bsegy5@uxfZo0VYt$gA(uLdF0wn<J!qz?UeED{NZgGpf%gd
z^`ioruw(jY2yVRa7L2s``L2S>;XhIGZOtrQ<#kO26~ldb3Jh8dW?Dy9At!Q$@nb#Y
zJ481npv*NEXtTlEOq7yE-pXn)7hRtv=fKatz!%oDYF(Hi5x}b<en7q<#^>irTRvdk
zMEmKx(7vhtD}Hgi`qY+yxRn03oB9QB?yP>yi~3FZkJT^!o%MV3&i3^SZ=+O^JLF&+
z*RVwZf41fGE9u9h#$8s1=A(!84zI|n2i(nH8H|l|++C&1NB?obO~Cg$IL0l3TLi}u
zgpR))L&xuRa1X;(!a4DTMOa`=f#cIqV_>4*Tem4C?Zfizz*HQ!ATA3XcRTQ}hT8!D
z-nfT5q~$`0`3O@T!xkZIJBI7kaEsvz;Ht&(dv6@mPm#0^?3j;f7H5EeaD31p4FBG^
zq7G^E#ZQ>(99#umK{MRJDXtpd)8WRzb&M-P7~M%Y2}oBCS1sQU1IFPR#NP;*gB#CI
z+V6rBkbVM=^4*R+qW}xw^2FbSutqq>?Ju_)xEg?;?h0(tJPtSpFdr@hu2JGv!>G6J
zAhbPT9^7`A1L(g3-*jW(Xd(znIOFIT?tByGBfd%E9GDu<uw${i)f3JIw;ua--^YzY
z-p(9xF+2x$?ku<rxOd_IKF)=_ojKxScoSSBTm#&6INH`1!`ZpojRK@AhrzoDa0+0P
z#O32VOZ*IToRimq4vqr>H-WC-i>m^pqdx>!3%5l4P8#}CofGar2giYc)u62b+e#0^
zO~9_yyMTM^LMiEIN<Igs;`j#XzE2qidF^Q_lJW>s9m^Vyw4^`PrP9FfGY_Df-hnpK
z*^$135O$zk2Kd*|4{`uE<|voz9l&xxI)3ksW7?UL)`6+{ZWeqU%SlbMyYGiP&@o8-
zgsG1C>k-B}q`HoH&qTTd<*w*Jo5Sx^8oMFQfpUvc_N7N_mjmdy41AA*E9xXJA7ONi
zOLYz&2RgV81e^fc4)bf*09Y&E3|kCWB>w4uW8~XOzbCi^X}2Haa$P2l+wCFwUIZAI
zZzukT!gauRet+%q0hb($c^7aIU?bc*IK~sEIwy|<neRZkQJ}AS0Qdx#4;McU^uy6V
z0g!Gw;{clg8SXfSJKuy4!x0C+9he%=Fyc;isqs!eraKTW59MYIZ13Fgr@GC@yIcp#
zeTlNOe*}8qwx0lV;rDdQk*_mHd<-Y<RM)Yb&hq}Z!bYL)V@_=Ea^X*Pqu@VKu0+bd
zLTF5-YhS*1M?Y~eE~5Z_6K)h7zw_Yu>e2mpP=_u<T+vDBw~Pm@mAFPgKD<MJs&n!>
z(7|ya;9}5rk+`z~>F6(kD~G#6{7xGBQ=Jp;KnKTxfMY=0qLVR>!sQHdx$XhnTUU~j
z{$$DLz*HRnM!N4)#`YBa#MdNc5T-iDd2u_R^ryO18u*=l039DuNu{kbUcUhP4wPHX
zHaZ1z0GEa9<9`G!0;J>j-Z-W`S<*T%HQxn-uVXo>X?FKLy#pOzNI8V5j`_n#%Q~dG
zj(F3N?m)Tx4zxM^PNi`z=sQqu3h3*LTmEzn_;%cCd}ko6N#dPw!bWk7OLYz&2d3uv
zZ-3{2_SeNN3Sg{;bNo~A-6U}Z_|8g+bJFY%UV*d^;~I27apiy|@;w0%KR=s{bJF|}
zSPgs!7i-rz7;_6;9Bu;K61ZwO#uKJGCyxV}??AZ>&^P7`@CmN*bns{h=!c^}2av9S
zad5S840jyEoo~YFaKyoH2d2g|jJQ)>YP^$==?;Y3gmPDxw0Cvzr@H@-y!QZ;s>uHS
z@9pks8fc(_aRdb!KqLtcBS;Wr2$GeV!2uK$5F`nLf(j~v8Pm#Oz_^2P%_1fYtC-z2
zp{T2CV$H4zMO@U?`G3Aux4LgPgR88+m*4w;`*}{EZ=G}M)TwamR^8BjHR&Bi_fWPs
zfa9Y-;~eU~owS5}HIe*DF5h9wEvKfu|EFY4sDI(WZ2BBon3|y9QIrbG?h(Woj_bGJ
zZN)Di(mkVc_UAkR32%Vffv*_!>*z-8wncwNR}*c^{`Z#OP5Cv^xWS(HYiK%l+oDD2
zYNBn~|K9TXlwT7S4Pl=B6%@y2Ths(yO|&ih-&?+gy46IbBRI!EokFw*d?~a5%GHJK
zek-1cze5kSwDAD0Q3SLBJ_LD>8g$NPdw7$;r~Eo{<vYGTet)k#V~ML?sil=8xpo@R
zGWZtg6G(a||8My-flv8$<jQyazb)gx$)BLEMdMk6Kq+X|xb342K|aTG{mea-@dgz_
zQOa2tkZ_nT%}G0*?3V>P@h~|XSLToC9c`ez#9^$};L<yJF25B0kO`J<gfD}dOyqch
zkA=4jbkpIlL(7nbDKUxuMYa}NnWGzaxaT#8He&NMdACKcqyH0hY7KT{0-57sAH&f7
z3;&NprIT$PjslBTL9Sk5zC1@R+u`Kh6%r4V%l8@bXQ1mLmAO51e2~}iTp!;Z;dw7Y
z&8KdEJ;sw?F+1+!cf1IF40?Uaw)-O7zBS=zgS?LC+Kfcs2D%YaxyQgoje@j`Wm{af
zD`~5m$mMyIHo6M>5PFvWxPUr|gdGhGbS@p{vOOPt?P-<^I||!5eELk!TRoj~349;u
z9!R>98J60^2Qv0^>3i~oWwNhF-Vfl9K#vhe*oV@&Bp+d!?C%WnIv&<5uAPpwG&bOC
z;h#V~X0aZEq<;pUI*Ma`Hpe(L7IOK*{8H>TqLb|gxEJEWB4@t@{f*EX$jOFK)?Cv6
z#_lEP2B;%Gw}(y+@;aXDqa3}XCSXVXL)gj0WgAZa5|(W-)GElQ^aN<e9M9_yslMId
zj$HkJiOaTQkXJlRE}v|iZzpr<xpNsmPzq98tbscUx6R5xAC@`01iB5BAs!}YD?8_V
zC3b5em-nh;s6W&VdgSQsqjo`F@i58XF35_G<+;T9#0I|*zCBbH<a0diV<vvR<Ct&Y
z3!qYHO+dn7N?{jHJ1qOJDMM-TFiAF+e2PCz;TVMX+<{a`Y^r;hT-_Xhj`(&IEhDz`
zXhYH55KRRC6<P!3>cV!H1vavC<or1vw*Nnk&mykM1(vqJH$a~(WUUCTfmQ~(!V|!x
zpFcjEhM+Hknm`+JbV`RQH*X*E>?nGM*i^SLxpr{;57_J|T1srgPGsJPnnF`)|80?v
z{vGs}*I+Z5K2tu&!#-M~lkYHv^}@2*QFIKk9d=SSEhnBZJ&nzdqEce3Smb%%2QezH
zwP4Y0P&iJ9Ps@?Zb~ANoh#&DVDbH-=pP$S#=Fo%COZ3V1(9if$KF7m8UO*?`VG8So
zWwWEG;bP*3)<X|MU5WKfxahMWE!i)TY!BN8DPI?K@*SpJf3n$8bm|iByPoEGXF>a(
zLcJL`1;|9VfR)arQ*vaoofG7BJe;R5dif4hST8J_9Yr09t@o*(w>$JHcnD*1d+06d
zpnQ&peLQ-G^)3I7!g}Fb$-krME#mT)a*jTWJv($A>GNq1k+7rBa?(!j?ETZZ22FnP
zFiC$b@(Ar9dJX;c(C5(m(1p+`kaV91bP0U#Gq<LhIda+m6T6q8+n}Y;Mr5MPA*FNa
zs2sU$j}Gh{59jHJ&O4WN?>Ss+fF^GzwG8q(9`@4<|LdT+&=9B)S{jgWm^S33olf?T
zQijsvVUn!fc{YC4!BIE{;eVgK<7gx0tL|ZPb#wemY<3h)B)0Lip{OK8Mc~V!rBJRe
zY&RpYk)0#w&+)MR|7kpixF-F<(lhW?(3%Ta&q7O~xq)t@Fm%=V+0+ER2YrHkRgO;S
zFy-d0N4_0JmlB)m7ADsYj!(d5N6}bf+oh8E5&Co)*X(|QUP5;}G_wYqz3DUMbv*3n
zYs!%CFopHPve{A8pSpKmo=t~SpD?Y!W=ByWvF&jo`}ZJ5#kCA9S_FmTba+&bT((bA
zhxY<5>_~a`!~a7U@%$uoE_5}0vOV+yew5Ggu#Z2YlkYHv^}@2*QS=XDd*Nc*06G_n
zksb{fJs6}V`z4ZX=WUSk`RL?3Ou7DKv!iI#C9JtG<C$Qn?h3{P<K-jb5uFHDI+x0F
zWU}oW<aIoprvYWicbLL@VcF~``jN7em-1{TG2Ra~WlU}l-HIROb3E*0`4!f;{5uNk
zg-;^?j-p$MYu#0xqoFEjKIubg6Opi^2XoR+?(AP?9E~Kuc$lOgB>Cl*Zh#*PJp|na
zO@_)K>HkbyiKaoZE4QY7bL6sp5W8!klc9s5N0Et+gp|&uzBzK)_7ChF59euwu5_iP
z1=m=<5q=M{o1jYr-NvhV|Myz1H$r2<OCgsp%vU1c5ZLZS-Zvq~g+;QTj-Pf=DO41c
zYvkZUNacnpT!!!mRXdKBQ2w$U%8l<E^gD{?(x$5^|Art&#r82WN8wmsKpswqZClch
ztI&&wNj6^v{+#^^(kBNpm9qufaGmG<1xjouEf4ZJ9`-X9UH=e;b;a8#PxfKEU&69&
z1vP?PIl0F~x9hnN7Eo>*)|8fQAtar6m?YawS+Ws!-1$*jZ5gKA_|+ymibhg)_;_{m
zhKpbPU)by@T5<#P&5hagF|sgS{3p-bQM50yy-XjE31SS#^;_^->L7dZFiAEO-^*^Y
zwB{Dei*9AyA^Q}1J<t`QTZw!ubm`4JHvqYOVZH%*VPIQ9-d#yME-aG$jrf@kEraF;
z<r+D7BBXM|6fQ$}_Z>)UDSKTG<;GV`J$DqXqD{XczK?<!6<gceG8B%rKJsunY&(fM
zY{Zv%m}Ik8;Lq9r4ZDXSS56P~g}3u;4KxJ2J@j&r&+)L2OVOPgqOk6mZImbbu-z|V
z*&Ys+L#~|MW8zrq<|wxfYf8&@A|#!7m?Y~K_!E|G*oV?;%P{4}uQu6HbOB|Dk5@Nu
zgzM0q_;(boy@O{|?#!mPs~E2#dJVjz=p<rmM2stf7{hV>7VMK>_TpiZ>}F)Y^w}_z
zwcTN?(R{{U63aS_(YnYQ@g7KH<~*n{A6<QDFmppg)+MAj)Z^Sx!1G5tQ)X@fJK>~u
zu8{SAD%rT%Zqa%z3R|{nz3VOwo2EYnjUx5yHfYwwd<ts#<Tr~oEBFO{v)!BhmQO*(
zxS-iC&2X(x4dqI-Ex9vK>$k4)f0jg|vAlS#1npI)Zn9qe1}WM%^J&!BqpicAooMrI
zfBfJ3L+@rjzrlHvOs@Y9@$-+r_zAqn_{GMvpjxi9>gvVh6X~;Q@z4C|E1$*Yo392N
zgu3W=MuRL$2Or<t5_OJpc*)<YtNG1KJS{%xr|JgY&+jUs&(H7j#jlI%ySlonDPJ%4
z4crh}^<w=|RyDV<gAa*XHeAL1vw^ZOpOdN=@8wOz(u7%E-5RK0F7-B4@pG;}Jt@e~
z_C>u7XDK~fX^!G%-iAAf?x!zgZ;nfA|Gd)rnLlsC(|ulR^7JEu=Ck2l8s?|3Oxox(
z>5@#^6isPce@w)S>v??x)g^5<{(SqadW9`=Osi#BlY<;PCDj6b&G%yO3;pdUQ;uKS
z<<wga-&456`^%EeMw;*=rnR!a8ibNjJoQzY@0-PhtE=Cg@K%c#8&tP=%Y>;PY;_;o
zBQC`p2>hA2(>+t&B801Jnf}SGY$m&@g)KAl-S<D}8-(-*PGo#!jqfG+U5rCfbzm(R
ze9ZW@jqOA#Q<Am+Vf>yLM7-_s`*SrT?7;%rg~qQAy=q!J_%MFIs;=%+9sSY@HdXiC
zt@=em{jy5q^~v>BJ(sL{kpc069lz_(>ggS}mbU%Uj^9m>?9277wEgp&F6g;-)#Ic;
zx8wKmr~54NmPl{M>*MeCndljPCS8(AS3mwD_Dbh|?D(y&MN^svv*WjV-wA!wqcvI`
zUHO<Dzdu*M+u)I(tNZ>O$@Q~!y1IpoRzg2l?-v>~Ev9D1QuXmoqr2?dtod%d;H{J5
z?rn1C|2=Z%|F-`>oBsz4>~~PVaa*^Zll(X9lhjVESs<-XveqbCpCHfu{7<h>6945V
z?>~IvIiFhkq$}zBDR60!UJ2h2;3dPk_DTb-g6DqbR-rqdb>Ob#-Ge->J+H70xD#W$
zGuC^tmxtE2V=XucVv1f%+9SP;)k9HJ?#0S!xC3@j`)3w?{|W85^<nPu@IN;Gcfk7m
zza0LF|1kXXa)y6=d&a-k0vpCdV?1vnD=N{32{!HergReTAVX82^A6^E8hjp9anPVn
zUH0*gJK~smGv*xS9dXp;Ia6jFHO-qhf6`G?Ce502)DhmoBj$NW&C&4?eE!G!_czUN
zJO3{Gum2nR*R{Lj|2yWl->3cm)2x=!@3{GG3CD>ynRWFP_*6?vrUhx&DIxyf93Q2e
zf86y6KjhQfLDwh3A^hKhS8=bvJD+oT5pBtud}R;j!k*y%oc9N?E`Uk~(tmxxod4IA
zfJv|I&3b}!e<|yRtrp8WsQokJ|39G}cYNfIi~q6tX$PGD|5K}H^gFKohmIQAsYj1)
zJv(*rDn@ncH)_Dpq2|2aBRISF-#-8&_BUPi-^@?H-}Te~cg`QV$H#xu{=eV(;rD6(
z+`9eWkp6Gl{}=b?ziEE@ecJ#3#`Wv}j`Q>H)Bc(H|39G}cYeq{CjWPwpa0)!|LbSD
z^<>On9^<moVs2I*mS?+Vk2RJ@VtF%;n(sxgCmDOSyS`(!`ozWZ)<$7|{66kqMq6^T
zEpHY(ed(`8pEs4SM11a9h~l3l`8tN{0bZoF7r%*e;`3}O=0$&!ay}OayjrRFaqDIO
zGkN333(CGX!NnKYR4jfO*Wuy|Z7LCuDs_Su5RukNFA;kKR9ngD@yey=lD+7N2EdcQ
z1?H{e{@{rC8UJ7t6Q4``@iSYordBEclF?Z`O)3??Q+}6DHmN4@rAnQ<)TEll2P)qM
z*P2ve{5$EEJ#13D$6Ik_FkbnoNwteNRZTCpmV3sBsnAQT&!YG{gcH9kg|A5KuJJFF
zy6ST*BCUJGhpGNo_cyxU@eZ_Y{Dw14sw7^_?c?|@ZLp8D9vHt%mbcpa4~ajd@@})K
zp<eU{1+zp>6R~gjuH!3PLxQVozSM|y%~vyI80`$J{i%TxC)G^F$m;1Us;)hTlZg=z
zbz(not9s?Q#iPt@v1+{>y(t@`8EGRmRmKR_AB;-DsD-msH>GpEpQWm+O4gN({A%Sy
z><JR}{W`Q@#)GZ6WEh-fzP~bN`=rg(D%Q-%6a}`u(I;YR<V36hT;HEwLk=T55d~I9
znH=-^jzwx6#dt}?P9afSl0<9>-wjIRdH&si)FU)`JnpL#7?r8Z)xWijD$;rc*6O&1
z7v&*M_~((K;U*nE&Ha~+uh;pu&HV+auK6-yH;OebVHnNz{Z%VDF!H&g#sdyPDe<Ez
z)L$(Hg~ShH6!{ORE26ERi^Rt(`Jhd%i^QiW`H)S%5{aM4fbjopldnhOXDIowO}-V0
zU!de8Hn|}Z|B|@<wKn-dBz~S;J!+GmMB*!ye9R_4k9bM_*_p_UzG|kL#NV*kDOM}~
zNBk80fm;t=!9wck7j&f&A_e;U!e~Jk<gtP?sZw6S1!~QLOZl!<&`}LvkWWOl3+}~H
zodP!CUfqJfbKoZn#xaZ4D~M|Z6ubv+P_T)jQw1;JvthwKOdE{~2H>Z0!7G%QUvLB^
z?o`kUTu|^4hvd!$*Wj~BK?K~ipcoIk6x>HyyB18sPqTtjTEBV0foOLt_z_8qg87tQ
zSkM3uEep=0Lahp3Mbf(9D{OZ6c8>YI{Kr+#t{lZ)!AR`Z`UQu;Huwccz&83`ld;$?
zsO7&KYe|@?OR2fPA*Nf<8aqo-`u~VMMKaoYV<gp`5d8OI8Whpi-$qhTsdL^pS);AD
zL{e8#N&kab7qw#REpacY@u^hM0m=OdWN<niObP_LJns~w1qYCSaluR)#w*x|rt%9q
z5PGEGM{u;D7C2UL63V=Sh-Nge>2wuXWhN#6Pk7kHjLIqv@m=PkF(bF>Qd!+%t)5R?
z-Quinu~yHLDRQW_s!LBBUy(zt)%;`7$qwlhFLIdRt~=p3a+sO<npQ9dBCBoggVMQI
zXL7I3<i5+~zFp<rCEI4L=+4MJZScwQDc1ZDS~k+$xBec$W;fLgi5%`WSK&1G<pw$N
z>}GHa6VPtHA}TDPg(8LiU&$M{7t34D@FJ~@N6&PGRHh5^yxJ<FxgHep6A@eJ78N>u
zh6L)h-Db^k&}({}DjPJ_J~YB_YpQjOD%Vtt)46|pQ#JQEUeb;9E}pixk(77qMly}k
z^dL<PL0wzXE5EI-f5x+`>yhc)+fmp3=!0}!pT*Pm)>V18QP<`Zbj;lywF96zbAc%Y
zNqW?Q)1xlHEe}6-s^{Mum3>PNy8EI!zu6(y37HvUjII=;(q9`mA13FVK-NahsBhk!
z>CRslD4$N3ye?GoOQDiqHn_!k%n1JasK$GX+ZmJoD;B>XZ?9UcW5R#U;Fc8lx+$>L
zWwe6-MpPr)Yu-#*-^jDo?!};LF-H^K8+pRE3I3k9zvMSlGylyz#cU2j|E;`CbG&V^
zISBoC@)T4noqYWbc{(q*Zh3^~w~CwUa+H_guC|&r5gRV}04BTp`zWlNVm6XXR5~Hw
zWTu4OOf%nP77uM={w=YBY4p|-zd(OiyChYxoN>Bj2@}a4dxHE$#)qn>&WOy9`Oo97
zt(hMesa$>9(OrvF0l(a9f4J&=n#rc~#R#aSRJCwt^PQ%A2Ow)pzSETND9CGnO&(@v
zo1CSjFM}?C{C?@2XDjD}$dvPJ<$MeB+Fz{!S7~yt41_<y{S(tUE0wc7X3ANqoLU5X
z?N=%13X^k#(j<?R=$>@W70S5+nR2dBPV;BG?e))~{`DrOZnVD)y`h|+k+Yp?pX-&=
zFIDSYuY9ylhmo{Nq>G)9H(*{sOCKz=rx|M<&E(w0OwPRQyr-F;yO=q-5*yUa(Zwbm
zsZ4Y-({!<!rX!Wf&T}vskC(mt(#Uaqmq(7}J<pGk9<!BnXL@t#R?;e@f6S83!^7i9
z@6MGLeT+0y5_VqmKQihf>w=R_9cE`cx2y}DY}SQNHZO%vHZPf4c+Jnz8DUl6;()Y^
zRUsFvLN4wMxwzB1=+Kb%k8HFq3TfT%ICivw@h`*oo~DI28h0lkv`xIxxcRHnripF3
zCBxCS@z+5cdtKB^b8)IqWQ*Sfm&HFJdkfp*uK|UWR{SAgg1{Sqjexz?8m9q@l<!r)
zxP<gxoEeL|0!9k71I!j^26zxa%eTR6XNt&b=gtQp9k`YBSfqz+C4Cp^+$`zwxQr6X
znYq%U)<`oYVdr)DSfh2molZSsdXF*x2HZa$g>B3EW@>GS!nWmnGo_AJ+O(xje?{81
z<*{Z8WpsDG2S-W#WXjZNdmE|tuG!K&^7q(EIvMGKSyI*RT%=QSrA2ok&G<C6E1`EH
zx7ylmME!5Z?>x<%`!I!d)zpr*4ed~u6N#<ut){m9l{N?GZKk#hN!x?drm3B+?Cn8i
zW8H?}W}o?9<WA#o6B#;Brhp_RWuj93Pea-&S6Xx}(kweVr#aI{<SskO>k;o!Ow8RG
z{QhdP+o|L(vr9`)C3nTv6Gjy_Hrl&QIz5%#9n;B%siai{S|f6=(RRNb*S-!#W|X|j
zSiCjGb~p-Q<O^H29xcB><<gw~WS%j%Wq*-f_7}!m88)`;FSE=3GP~@JM%&{#T<c$l
z55(&}^XDAtMSOG8ybCuywFlENt(opPf3FCwt8VSCNq?(=_vGM?>|xK%dM5twcz8+y
z*K6zo-Xl-*b-J<kFsI=gsJIQdtx2aFtF1XR(^$RE<QR*zH*qy5oX*v_|A2tA`m1vb
z3i}~fTGSV5mYvrjjwmwDMye<BPbGpw@#`N+q;?dJGm#EujN4H-&V+WZ(&m`6=?_VF
zI)%e2GTz1Nb@)s@yCP@@Jb%tu83y@{c_`6#+=}dWSYe#MhfSyYa(1bysoLRtRs7Pt
z_wAtBITpD*?>%BHxRb%^6?}!UU(jAkua_1)sGmYT2kP|?VvAg17eEx;%N%T1nsgu1
z-oE=Y$wms}=Jcxf6K<pFwECEk4zn<x)m?@0_2fI$syR)zG-<;0I%rc88Et*(9f*^O
zAkMQi{_R-X79DMzJ%+IBKC0DdlY3Vl%<Q^vCVjOY)a(FxkxQ&Qy-x90Xt$klmn6Gw
z!b@Ci*4rh<+u_)BZKB>?VbbR*ZM@s`3#7dcZRqOAwbr{{)M!qOdF-hCgYj;Iz1Dc|
zgV1*WwZ`2H(!I@rd%a0(wJ}qz_;B2u-t@+Y-tst0&Mr+md)PSpTiV&fCUcbA{9d2^
z)o?GwePydhj+RLMP3f#Jn5<_bv~j#>vOc1;8HVdjy4vXH%=02I#dVRZ+b(jg{}uQ9
z^ZX*-&Vvp@>Mx{yO#`9{I=9nc2CP3II047HE>yk&rb3^SrQ`fLrJg^~*JUw|#ZC*E
z6G*OC7geU1GCY5fuYE*ao>}O1seBDK+V-TqK6}wVeueMriPAq(_+X@dYx==7G#W+m
zG(sE3=<F~?8&5x>wqcAh*WU=Es|jO_ud8l*H{*v(6vx57uD<!@Hi|<`-We$S_F_o*
z3;j=sp`?%?j)C?$%JZlDV~FuhOo((cf%v!izV0t43GjQw{?!26UbngS>T25Sb`$8r
z<_s{?V7Hsn?jXIVX|Ov?gMDc9YOy<ve%IaTo#~Xe54(lczOHzcA)@rB`0}5kw<vHV
zbOK_(E@Q@){#179Pn*)e#KxBXwDI1wg)99T(@q0P+lG3^G}L6$ULVc3{>Q$r`?wcC
ze?aOVn=a|&?2<mQ9a88@`oxsfiL|Zfr>34`jb8Qq)aZ{V?e(eBd2Lq2Uq&gd8Kc)A
z^*aG<on}R{M&PW7JvYWWnFgH|u|q6jdwy0VYXCZJ%J#KQ_G(G%E}`UJ<2B#TinIYQ
zLb%_oImJq=z5R-Pbb-Vsu0XkuE}ht9>sDm&`rO6T>CcY%dJ6Y8=w`(JMd`R_XU9F;
z#cjJ{wu!rcYiel*!t97H52ufu*%1v{jvTMg8%*N<f{3pNeg-ha7m&vvp+nB>Z5Ct~
zv%nQ&n`c3G^DM}29;XeO$0k#|(>$xv&9lHX&nSepc@~75$0m+OX`06-zb8ra=<2+`
zFyiYWrRSj~G_!wKI_`zpaW8an+vZtl;%>5sYo3MK&9gAwJRMGDvF!G7dXD-tj-><1
z=g%Wyr)j&7JGCw8&_?bjrOotcH*)pcGrMH(<a&IBk81gWm<b}?^)IyEAS}HuFES?=
za`0~;5$WrX#H9FhWM`x8_YZ)#w@j94+F+#?ndlq!pHLS|{iM8j&Fja|xxL!GIQi{+
zwWDe2^j_`zw2R-eSDV4n?)GXMX~B;QdHa+A{iLR<&|WRYS=Y9r-J8Wa8a?NEo4%WL
z?p{sJ(1S^+iJD=vzlatwP0^gjG)+;aRy7UkG0XIj+0XuU&g=|lcE8N_R==Kx*;tuv
z@r!RF{e?`f0<`G_s017=a0XyCpugI6231nE*!2zgoHXmp0UO}{sNz>(?K_j<8Ngrw
zpANl}*aTayjpX|)hxa^m{@v*&v0JWN5ZWfOTdafja!q2>7n9D}a+$jJXvsmLN-T^n
z!=-7GpRqMfQd~p~W&nAVyHaMSMUBZ+G{)p|nRp#av@8lXPwTLKnfc)bRDOl#{m|xV
zY8Mk1SDo$V=`*E6o2Q}0E^fPdx{!44?rAN7WOh#*urM*|&%`$<#yf3{f7{y~0|fX3
zCwsR&(i;wqnFuyx;BO&7Gl`)M=6D;A-5wp<)u<U-zh-+hP@}AfsYicY9(geKKF&>h
z-HjX5Ui#-xulsALeH|oj7sbKTVQPvz!7fTKU<_jd`51G59RtmVSmQ3Ldp8&2uh~VJ
z5EtNHQ(<It>`a`S5dVN16XG=hug5E>^%v?7q7QGj9!1;pT@*Sf&1Nf-*=#k?oR?d#
zCfXean=QRy@<UtCdj&84qCz(o>}G4(K5i`7-PYSmo5|7cw$AJB#zKwTty@s{m`DM0
zp@Z?Q$+Bafj@Qpn*+KF!Iz6r$Db6#sZrUTLb$0-r@NYWM?YH!X%W7yCD*w$w7p&cH
z#e2G7?f$B_(xLs<Qqo)Pw^rzI4)$AmpQZu9y^W#&bW7L8HSV{L?S-@dyx%Iv%P;J=
z_Cfv8zS;Y&b9!g*w{9YB&nis3P1H~;^R6eKX{^7X44qZhGtKsp$y>H9KSn)3XBEGU
zJzHCrSZ>dzcZT{i2WrpOxRtAFq1zYP1J3T*;(gp`4(-{xs#k(No8C*hoZ0RU4E<Yi
zX3q?E&-S<dm~KLQw!wW#hxTlbkv7#^gO^gpesFv#K1}ucmIPyA2EY!N*D;$ev&C^^
za+Wi>Tqa(J`?Ws{c7J+V>Ko`bRDK=i7<<gtxcmDWoAB;$*M2TeyZbwowAW!y9Ph#I
zPp@IkhAu+mABT5aZM*yX0HJL}yZh6#+u6H6Gefo`|D~$UpKNV9V`lr)>u^UN@?dkQ
z*S+qC`l0vlOxMJ24*k-OX1=ytL-v(@KC4GoHimjD>`W&8o0P4bDb9vyH--%dxDf5e
zaIn&$jp2<(pV=6`L)y$$x=LCXio6mp#;56qpHP~)s^LJ|slR631(=*5v-jiuv;s2f
zBB{L&-5VeeF0<<~_ggq+j7Q}+Vji<W+U41@{aujuI(ywgE=apPYc|-;K<NwZJ#N6^
zBha%1msy@2gryy68_=y%qxbc{#KgqE0&VC((%*uwlS!~Vy9c$2f4#hT&67Slw>+yL
z=HI?NtHe)wd3I^q#cx@j&C&rKTuNU>3trD0{t*HCw=k#LR<xJWcN^kb(Jsdt4Rx((
z(~ps^X?eB<r=O@9Hv7$RX<Dk|u%Ia>0BnP<<+PoMV)nB?z?og>%$}Cn-s;x@oI2ad
zjOE!7(m%?iH(>AKfFi&&f!zUX0sYmk?WmHfrRCYVq_sR-3}<;Z57vDI8Kwa$0DL;M
zsf|srJX=M+b2!hOg3ce+)-{P;p52eo9-wwPcK89VNo@LB(lss5w&1i>l~@?v3zw!z
zk_Q4b&6WV{G_{s9r5+n|%d`2;<VKlr%`1*BSe`8-#^s#R-a_Sni_`G(Z2m|Ww_Ton
zuXJd6Hm20YZI@?Plg?e9EhCW3^6X12%;cm0gI=W=gXP(WoFszDhg%B@Ft~cH7f{x7
zQjC@p;0n%?zpy+z5*yUNWqGy{_xkT?mS?Bp+%)N9xG_!o8o=v*iB8EnNW#mrgeH+-
zd8YSc>To9AtPtmLru>EF+5V$kh`)My)`Qc%{?eM|SsR?25U<3I32_y`>v0ik{R{RX
z=)=pi7t!{tLZO2)cX{?A@~!IiP#p>imS=kZ=K;>*@8QL7*1?ShyFB~jL2fMA<=JOS
zhn8oTSGciI<MQl&)IAC*pa|Ncu+z)4?@`%7ax%Jg8YIE;tnKKa*82k($S<YP1((D1
z0@6Yj0b^15C!~Y5%d`A3E?B!f8>Vz<d3Fiut(Irc)y8|UJk#q=FP5-$#L%DG(RFc+
z%d^wQ;_N>!&%P$cUs#^Kiu&7wvzKR=9+JI0yN|S4zvy4AKT$)i%o|8>W{CU^W$3JO
zA<-vdm;}qS&8RcWGd-u{mS^j*jBwJ{@@#dwsx>ap^2fQ+99o`DtV7;ld8Vbui~;=o
zDTe;=Jx!~#+q28Fo5nNUgqCMb4<#L1p508^RBtX`bi0=2SzCOV>h(P=7z@(@cDP)M
zS&7Vo<=Jv)a=lEv4p(bs5-iX3F56?!8dUyGIQ@m?*}t&~FVFUv;NrB)v+1P04#(-V
z>@LpZxz9jur=jt8>g1|zmuFug3@^`iomk`YYzsbgJJ~JIdSd35XCJ7$g5{Zc8;`O^
zp!c;Lwl&$-@@xySYI&xY_6F_G-Fs#GIvt{2o;91~LbS`Xa-~Ddv%8EwvpoBhv{|05
z#p|;W%d?m8X?iMgc+gYL0CsuSgMxcOS<AD1rS>}1txrH#*gLPK*jxsUL*<uuCWv`m
zq+E~T$H?}a$JJ4rOikt*;nElr$z)9a7$q0CQI*7`$|OgS^t}DY(RluCQGX>SdJI|P
z{8fCLc0&>D`^~zRq{@m^#?Vgj{M&<MqT^g@Pf~X+xJ24rj?A5ty;vpWMfEy4C>G_W
zC_E9ZOo%6=l}XNR`#w<@>r3n{(p3s!kPRcc7bB}3l|b2sa*tKS9Zpvn-`e|f`pt!>
zp!I0{rI_2L*0<)qT<a;M&H4FTb7SsM(!Jy^@}0STR!Mr$jiiqtBTp(tcCyb34O)wA
z5i&0BM}9J<&5oet!ADV&X&bLYW4gr!p%*{T9E@*_{CY*%L7amy9K;i(!$E8zJ?M1`
z{AW%O8<9nDmI>mtsS2VqCD|Z`^wiW6w1j@0Y#?jPt1((gHaqNXL%3auZ3e%*Rj3gL
zCGtE^SFAz}(5(>Je(B2lobWmvoS@i^wvS3F=Q8Lg%JScH6-KME(tesMEL#ngVWfJ!
zfII)2m@K8$J(EqQLysp_G!;)=C5c5hv0q|R{sgnydWyD#erLx2!Irrat52be$>NV@
zPhff)t;&29q00Qhl=&VhTjsw_nbNAvpG=tzrc>s<S!H%OkcRYQc1UeR)qW`FEbRQ}
z(gnrLkUAQn3W}KlwVaeKD4wUvNvnctnKAPSsm^gcJ%*EX1&3<Euj9)bHc-R9bDm#>
zWG(bI8T`@3?$GP(ZZ6w9YI_BDri0rmdzlD0mh9b$qP(oT6GeH!-3c3Bu?cU+4CVw~
zj8u$W^Yo<fQbaWLDU3D$UR!@fvI+V(D*p+h>8dw7(5gF2W->V!CP=Tzdj(xybUr8L
zeYo+m*3@|x`krr-TT^KIZhhT(Y$c3kD_kYzNSWP}uqveeY4upt4l(zvykRV~pv5@z
zuiZO%Ml3ocn2Flykd6+K7p4@RADfa+C5G#fz36adidJqsdH7r}Izsm}qm`eZJbZ>1
zJ)jM_{L;<`<NjET%+<Mhrg!i~Dxv4WBJ-J<K0g_rid4?=MqGilDzscVcx3E&Egtit
z`tb{|=dCE!X;wk?_D6abmZo}(z4iw&K!cjC#rA~ZTtApe6pOS6(}nxrwPsCmKN8Qs
zu4dz~R?TK9M{dn#p$ymT06j6TU(2};(rMypauqK}xQY4{Uj@iNl6yNcI|q}o3^l*X
z$h#pomQw&c(WocK^?N(D+4{*-BertIYY;A#;p2dt00+wKb<F0<(=A5+KJo#wjBWBu
ztEj6UFHhm7_yA<HuscV--a&dLsp3xop9_2oSTvi=)d0>)ozErHBy7{eG%}9^_7<ea
z=Sqv7MVe*jjno6{C6swJ^gMq3XH{-nr0tKQls*8zyk9d|=@7n-marHQ|3TkX-bg*}
zy^75D9?1P$w0>JQs>QWAxZ2JE<O5C+XaV>cFrWi~zz@_Foj946(khW@W>InATnx4C
zoduv#^oaOcOv*=c7$Nef%Xc}_$4Lz^5Am1x(+%*_d3^1CG{Qpx@gMX}a38=Xl6h(=
zcec^`PsqV$q@R*1*6&;PJ_b-1uof_&0N{eVmy9bj!KG+d6I^Ei!ReXqx%iEgv4lh9
z=XJ+mKcr`n8gLMRmfIUvI)Sgv5)K8#f6zC<=~3nsnIArgdlmDsK8l@D@pz<tj|EHz
z#E%2a2TTDBSOOrp0p}SW8=#jim^uesXLzz~6};>Lz6P$Ng!Z_ufc$r&dV8+;2V}|P
z0bc@c5_k{r7eI+KEsv8qTKUN0(nf&e7jTLhiHEF%u!K}Xa|hE)q;for*`<UA>7r-0
zRp1&8^LL_~RA^shEAZp(t=b-rcAd2AqWu(fKh>b0s?$$(>!+HUdOt~)erkzsGA~ud
zx-0~!avuRq1<%FXgOLA0^xhspz4Q;OrlunVRKX_!CC)Uvf+J6)g7@GdtAb;<Rl$L(
zpbC7$7W#?`RRvGPj}2)fnmx-2>9gq2o<T^Lpfw@AAfS*2pF~K`G&`i1P!;Whhpdne
z`o)m;!+e4Y{WdyHg({@li(E*$d~%(%TcU5dkou!FAuShBNUH!P&NMqD{b6O%#dydH
zsdQT*nPH#;x2U7HM1OE0?RK&TiALtLXj4pIemr(*F9Ohj9D>$_be@1h`Ujw!%(BB7
zyqM{2GahD>H7leMHHTDG&heFHIHYF7AUbapCp1M@JGQ|^cP@pR=w1|1bngMW$t*j%
z&4`0TArC)8<fm5bXZcaL^jv~=Z?!=Wv=gOm95eMl8;vR9Q2~{(8PH88*(LNkh3>eD
z+@?zAG#`sp4m4FVOMvX7lJYt%N>NTPy8vBFW6U1wdB@<!U%MacqHCCM(f%D=aVqIo
zlBE0CoeF8YK;6$QP%l<m>lVLnY(1XyPcy4LwooM|&EmscaPj*E4|gUyJy{=b{oS*k
zomMs=IUq=;I@NASa$u0m@1$2`{rzKl>mgFvq|+|6f<GvxH=QDt&GtKP(k#y(5)?F~
zms!sZHOaoj(feh&9u}xe2Q8rGdiJra#3M~@W@2R~jteU|A4C3;v9GwmWSadFl%^x@
z5m5Vo0Vr{%rVk>OgU!U~olX}#iG!?BWe!riHO$P6OxrxC+h#N;^~#49$MXm%$mI1b
zMXFg*XJmTLFAFkzJjRbv%ucdyDaXVgguiMGS9T%)yx1!IneclMk_mr|fWkiwP~uFp
z!oNh}zlH-7Nmf}d{8;7Pi`m*TwVMi<nNLOjV2gc0#cDi1hAVGGTbe=@$zurp`pR^!
zAX}lb=s{jPbn~JY9*oD%XQA3RS9OI{Bkm4b?U>(I*q3BGKiA`Rrm&-_)Q!2SJESTa
z$dQs2-dz&&o~st|I%0BO>Sf=jW9lHih%}eHx*qp7Z8WMc4fY1YPG@i){~Dn4_)mt%
z2Gp)=&*M88o*eKY^7s$>t_tJQmgpDZpyV0ceg>6xMsgz(Uf$`<c#pR8+bA)PR|6p}
zNjFonU7okg+IY0n@tfXw1gS)Yo=b|h51tC|E+_s5HH}}I7cHgk=4!bYZ#|UZnpX*6
z(yjFTqHSFk8Le7GF(kqd2{u|}A}qvl?;yezB`(6EtO$#;A`DVNgk4;Oa`LMp?DA_O
z{3)7l!x9{i4<hW@&qcT$Z73(12v>1+^uK9CW^dPq6LEY}5aFBY2)CmR<>XgI_-op*
zeFu%JcTF!Z!SSCC<GKbT)c<$@I|B27*SqTG?~%1NSGC?%KMy_AXt~L=LCNy7I2oB|
z<Tluz_Qsf(0p8Q_ehuZ=zMRt{@5^?VrOb=k##~C<-UdYy{$>4HKWfubtPRZPSQKl!
zviI2l?QM<&lsJ2{v8h7BBPH^)4j&)N&&CZ|Zk|<cxoL4u;ARw{#F-m6S0G{jYD4z#
z$egv=>byVFB+Za5osG2BR?_Z=vPQ^~9*^G%NDtgfdKS_tTS;F;dP0_T9v(I!UAC2U
zS9<A&T<M6(NVN@pCeY|4RnD4!v>Ji4lh^aaz{1V?Sz538dz_LZw*~J7??2Gp)V|F;
zl4)N?zRf&<$<1!M-eUVQ^6ln1%~pfd&3BqdLl2q8Y2t^-A@k<U;=XXiYyMC@bc=&m
z$CjqOFE*32^}g6V{%gH2G1z)vVjd&*nwy)I^@9L++usFPKNMj7P=FR&7Y#xIHnIVl
z$d*M+pyx%#Z6>6a#N5$nz1HU4(MX9&wU%P6gL=>9aBIcr>F@@VaHOHVSgyZycxxt?
zh8bACZh_k?q7B^zZF^C+p}B%x@7!QHMrIuu><#UW+eX1#Ny#oc3U8Uf5MV-%w2c0F
zC?mN!aehtKVm)cm?L0sp;C_McF@OCJNM&Ez9`QF9FfVoktU4Uf8?YSEMV&irlIN|J
z-=`wy3?lQ1$l5Oh%mGXim<+gBU<^Qi@Y?yI$sA4?X9m!*NZ&=;Z7XSHisudAO4=Lg
zq%5fpl&MIM&y^NEf;3YSc3u~an`a4pW1PS@NAiXc-NVQZB)a0&fD;6609-3@IiT)x
zqLY2;Ur8NKYW!<}@23Oa0kogNweWTvA{PzD<~t-0Vl!wgl4+9Yw#C4UIJ{4%U+;l>
zNm?K2w-<9vtw3Vmz6zFw_F5jj$wbk4IND*@+iG~7k0E_XCSCMb(t*zF{0fmApHX)H
zp7dFnbWy92@u0c2n5|Kk{*#DnU7~4h^;FNhFJs^NHPTOq(m#;?TPS_#H16Pp(hF#k
ze`V4|ms7qA&g-H}UKfx<KXDUzD6*fLURSmDp=@)VYnXtpd>tyFYhg<iR+mG_a6cJW
zD&xbE^ObP{_(HV(W&w(q@%2|_Ivwy1pqp$<@8IhvQsq|y@}k-cv7-Ep?$-(QKK!Id
zhk5ZW!YaqLzD89ohWhhiEAzr_SETQ6C7p!y`>mvZN7`U$s2okBo$E8++iWGBhIHSp
zq+d<pB2Si7N6fBAFu1mo4o13YE9pl_FU*oEhI&)EDwHcN>WVboCW;lyzRVx%b1g?)
zi&Vq*r?AGpKA78z6S>|sEXQx>IY`@YCA|x2-z=$W`!}Q&TS<RJdStG&=bh8|{giH@
z(o9UzOicFfUDMqdUXjzxy2XD9FZSmePSaXt7qd<|%`7&|iRyGg`zs!&Ykk7ct1zG<
zm3GSZ^M|_=Nu`;l?YXGZ%*pm#WU)PwEH{(0*P#iHBF|YD`a!-YI9;b!FzXj`1=P;^
z&t=d0&l!(5Vq@-Ok~wSEf8Ndd_TiBi&5NiHT+RWc`du-LD|L!`aID`5j+9yit^Xk{
z)<aYm348_6zm^ui514W#?S9-*jDPI1MnvZ)kbV@F+FtiMe}$sDCdDpuc<_`$(|%lz
zgHd!2D>USamLN@=nnBn_XTn2{=H#Rrd>p-9HFy%)`Gi@lyDpCj+yVHPz;%ELS22-j
z&iUXNu0%tTbIf#e5ppx#JR+d!=2HPpH_1QJxBR8Wk@SLQh*xZA+RvCpJnzP8iqL&v
z-U7wypSiJj9ytpSTprJgzw=_G1-a6}<+CYAFIpdVt&m=I9b}EdCHm<SJI>|KM%s(l
zc^v7fq4Zg#j|-(EG}w9RwAOO8Zs%4=uh~l4AL*K{qzBP#FNUSj%JEcvDdLZ|7C(ge
zr>(@@3mDkuRtaqqu9%KV)0AHO@9Wb&b`!A<>(0cv4}IakGBRruaTK!9CZcv#)+Qph
z@)tG{FQE)=B062o0MQ+Z!uede)S&w4p#vEOdd#%RH2~d}=m)S?Yq4sQ!0L<loYhQc
zb)l>d)~$;*%vH}rk&W$%+uWxp);)`dWU4z9scQkcoiPwl;>^vxjPsCiq{>a|IMxbq
z_BFG!{5+xT^7FIvGweD}b+R=+rjrT+J_{eE^6}k;xG>dPiq=%?2APc*PN2GVa}WB=
zV6B`!S_NpJ^o;T)iyF0F^M&d&x7aT(byMK)wAlZyHs0N0|Jbzm-?G^MIS&_Zv0t~$
z1^D|c_TM9<?ON=wOc7PE*w=q_tT>y+4L#z&SK+4p8W;Oz*PCmzY@6(2|NR@dx@5M@
z>DB%q4YtKpRFC299Nm*{e&Qy+%;Q%}C~Jwjwng+BOw5o--OMo6NVg`>U~;2O21ftl
zOnPEsM$H(2*F^{9j|*7$%dBOzl9-F@&=fOe_A|<N1ik?*yAALWVE$^xXcM}#v;f0*
zNsVs>xa}lBd%$S`6X8w^+0(1r?}-d4C$o;lQ||&O!dn1d7Y(zkPGB=4v!^1uu~0l6
z*()*|514f~pcJtCJ%E9Li|-BGKe&ivxDNSF_y6SFx4aK4xgQ3w&!4qi%o#{#=i2w`
zW;&ClGO>|9a3Zyl&AP}p&eaXh?g`m-(VTJ#CF-soi`|Z+C`flgzml2mjqbVzpu435
z1$6)PYJk^eF=*<^tdf=S;m8Tfconk0qV31a?q2ade0lc+ZUPhny2-Zm6;gYXDt{D^
z7hN|7D;sXn68cr{K8ai{cWT%{a-f>e0a&w(F?&X4Z$+MQX6HMzTa1|w#097Dn4-)!
zM`oz|Z$b8&%&GwUJpi~6aNvW0vjC3)x)s$W!23wGdWc?s9B|YbfM)@h0|qTaKl&hS
z{)XfVY|P`ub5EtG(L{<OCg$5wn3%r;kn44H%?Y9OeRA#o=b#$TkxMV1M}|Z$z@^D~
zIZBiBaey~y2<q=u+(t5PLDb{=)2RgXs-!<6J^Nv1z%@wht55a^cgpN#Yfsw%8{#0M
zU!cOq*$}TJn<?l4Kwz`@Ovbfr&ayVO9tmvP0D_<&JB_N!W~azNHLAL3fU}z<JJTX3
zEah^Q%vxGki=D|;#+BDIpOLBcqvmY$6G3LB71Qe1TyZxuJG1|$1-51nQdqXF*#l*4
zd*;#IdPX4IiuF*I$M!QD5S2ZHuRNPG)OqZJiOJVPxuMH|n~;Uh;D1<awC*zC*^mCh
z8GQ6(S!eLoB+VIoBgJi0n|yTg=%D4UdOT?1rvTP!**Tn8>tXf9b<XN5XVv5htPXC)
zoU-&><`*ck@iVN<&HQ5B*zbo$v2NpEETDV-e*u&@b92ML;gfjry2#B2TokFWgufT{
z&-fXNjq!7ufc(4&=q6j^;|t@%RBH?^I7B|atH6aB5cQq{=$P#Y@J8%PDSE!)c=TE4
zXa#D{;Op@riyF0F^8;n)&fwqT#lC~`JDtH_)*Ru^;N8bM@4w{?K9y>w&*0CeUHm?0
z@ayomU1#voaiR*&;NJP{!>gG0=n?<ALx1rM{u(y+`CEGipZ?6&XYh&ic)x?gXYirV
zYE)^dT1r_9G$L9=r(j}+#KmYsXYflgSt*l&(Q}>2!<d*+^Oo_X1M=BFuvnE@%jhU#
zE`AQ#S29}*nEV{zZop120&WC+zn(FgV!2oPI;knIFmrzZShO6VXX!@)OoSieSN}Q7
z8N3d+t4xHoUIl2-76H628fLSXaXymSQ<3v!)`6ZlSZ2Ecz7}W%xal=O9I(slf%|hW
z<QUdGbGkpnxxWFWasMK~PLf|=#O)iI1!wTDoJqYmFtL%IQ_0aKn{|=9ovV(hjjN%u
z>!N3grc&ZWnLQNwLS}kgXuiz!0MSYTJyP@+fz6oj@polB645@yutXUjj`SXf_H1M$
z(e_&eD88DnGe{L*47eW9O}3?LNv$DOej6Y!I_uzcxYZX^oZNj9nJjlYJv=K1YS?c9
zwpK@6!pcl$Z$-{=W{utq%!&YB7afR0Rxm}$Y;&Zex?j%+jFZ_Uz~cfHfc0+yh5`n^
zO@QrE1h|mYpGb{A1JL&h!1(}OMHsXceUtInT!y6ZouDg9E~Tf@xHI_PC``=r0pwbT
z?p@`&o?JH}GsEagay4m4t|5^!l%}>V-VJgN0eFM-3&Rg8<7zT4Le%5f%ekcit&sH3
zNb@&v249NAzV)-MGk5{f&sAZ;8N4moOo;mff@+jr$+(tHa0XxQY*rZ?6ZG=SsH$vs
zip15Z>Y^8%-RH71XYgTvWRWGa;0#{pA3<^L0DO9Wu#AUIDss=aTc5!n=U7wC7ExIC
zxjFX?{wkwF57K2@<(|Qte#oG67sTGf>2JFrW)6FIL9ESTZnpm|7sT$;ln`7H(=YVj
zej^=CtN2$<bn|MB7sTGd#?Gtug4hoqxOuh4D`IDT#Avw!|93#Q5vg`d>&<Sd8kHS_
zucP}!-SlSk6--QTcKSHzs^I`@_Q^_6Bg_`YespFtoY`_?rl!31YK{q+4UU~W0Vhqc
zeM)9YK;9<+4{(UUx0pWwFk@=ub&O@@yCiyu@@Y(cFDo7PyMIdA<~`Y&H+bG3pvYDB
zR}%W8F(wr<v94BL&mfSi52M#RSJR!{nX>C*PG7iLDzlHHjV9vdHNv@0X3qjX5LgRn
z{ZGI>fMtL~wbgm=PdvhKBl*rTyPS10&@Sgk0qt^{eg@Dkr#B#o>0=7h&viwX#(JtS
zRd1^7RK3e(H~3Uq&ipXOVV_?E($e;DOc~1ID@if$u;JID*6$abvb8$mb>EHH%%iS3
zIpak3PJ|GGE5UD)`?n4JYp7HDO7L!zwrAkiu7itU;IAUkFYaU-ruzORlYepGkNZ4(
z;2;0hFAn_J*9`nO@&6Tc1CeG1{z<6pIB9Yd=LYr3o6+YnF@16~TGJ=bq|Msh%*IJ(
z3uE6pvyYrvgKy+bP5C}%O&Vi1IClKuIBAIO0JOz<fKvs&$LenaUjVvq3Zl5+HqKJY
zcS&@V@@ZrohtfoGHNX!1o9|$bh1|e@#F@M-6I-DTw{r?_jLnD9KRQ<*I=kq%GP`Ob
zCo$YCk=e)5y0m)ni^y7{Eq($pN#K6KN`cz}^)@r`wL)lpC!-W%;A?Sk0CKZ9SRkOq
z!6gD(9NZ5GVrsjJbA<|98Y@;|s^0su)4<>PJIn?@M$4I3jt|@OR*=pJ<1oz`z6|_x
zrPiCFCv2@|;7=en^B8qbP6qw~rFGdkp|4s^C_Fp#o?@Adu!Il>%m(=7{be*00~zrP
z!-3eCeTUh^*Qp2BPnL2J`N=$gC1ykJVx#{r()UdX#xI)SSs(jWNWJX0Lh5C|6;eMh
z>&Le02ilZ<D<oy!3b_OS`<Y)lZkVTHxLaDXhO$d2yO*w)_>E1r7qDZT`}yWYkHRfj
zR0n2ypJW#!9*?-^uH;l@?K2OmlzAuOX`GvPBBI_T|H~+jUkF|&!u~o)Ef+h&^SYi*
z7L=Tmy*W7SXrg<;{3Qdg2p#S>&qM!Dn|T!(?+r3f_Mi6A^w0C(#?4x!ZSUo31TKuA
z<Lo15OZx?7^Xyfp1CuBQ<k_brW1Y-T?+?t=Pw(sgfA@xH_YaJddc|e1sp8Gw(+>Qw
z^pL#wDdba9-4gkTXoE6i(BcQSl=t0j-|~3~8wL#547{FA?{V#7?@yQ4J)ZYsDyPR=
zwf>$_#3OK@n(xP{-V}d5-_hFUk&Gg0u@9sMn&NM!X`>B{q6FcfKyifMg^?5O;kUs_
zDZ<;J1Bu07GL>aKZ^HBtpyCz!jqGR-`><%NLXU$+d#)!J)gHr3GW*KIa&q=O5*MS3
zgM)=zHH4^N%|61vobTv3Q`9PKV)t?WQBfC8<GO>MgN=@p6AH7B(2ci)HfG=5F+b~1
zVfNjf!)(#Xic>gdqZ907OQ{My{~DcWQ~4EIvqvY{RFeul{Te;orkYjg;n(P7Tb;rR
zJ^LD+Vmo#B?uyL39zZALMfGM8qtc%7f~Q6+dCJbbjmX=H$>8n8RPc6UzIZBH*+e`)
zTG>pzNwl(1yjiqzcba61{|<vL=&2ON6+pJ9-m8Pc_EaIlJp#oM{#$B3+fzjd&xhVp
z^L3cM9X(a}BRw@77g;@ZgwNk`xIS8j_5)}?O#SXN{+IQUBFprV-jVvf`)IP?Srggx
zxS0nwQl9=RX{K7^Sz5zR4AbLT6T^&n*2FL~o;5KX85k$`Gr#dSJFXeWFYUQAes=@v
z*;g~n7zx3%!NFUvdbdn(y(YVJfV@TNQ;X@SzP>l@RW2kX{4WsYMfLJdZN)aNfU%Mo
z6`g6M2OwP;LwY(xD{*X7D;*U`doRO-zt}G_V*ST#ZT+uE?|e3g{93#f>s{R5oa$H<
z1(LOFk9)7sY3FKZa}bh#lB{#iSZ4J8lP1hJ14+pUB(G8t|LZ{FO-9l{l7BltY$1Ek
zQBcoEf}ofndY>Xc?*tP4y>##UB-s>5^aN?|XdaTE1IfhENd7FzAyMncn~LOd)$7PW
zqQ9y(=b62Z49+vPyxxDI`u^^*eu(T7(zROvjoD~tmhgICBuDLH(~X&)maaX>nJsc=
zb-doCieS&!1;$K|K-ZoP?7fk>$?p=o!HD(vb8VeRO(74u+!3$0E=u^_V$T~hJq}&_
z7UecS8vVz-4~$s<t!<r-RI6Q+_oESylUO13zDJ#MLtdj<s*wJH+x%sQDXT3qbAF9`
zy$7nSoAP=ZGrgx+duL$p{>-WVt$C$JtpDw{PWO;_Ro*lsp6A3#&Dkd*3!F|{q*=H5
z`Nm3*G}oR5oHm(2qs^~1Qaz+=q@Lf<Z&SZ<-Dv$?>o@cp`6)(4WOuJ_-TmrDHCq>W
z(fYmW?pt?gV@@7{oFMWV`_cM!>q_IJ;rE@LSr5j0t;T*v$1jf5HQ8(L;mJ##o&2`R
zp^cTTZk~}Oecz_*wIsb)UH&CVHnM0Cc*;|Pi`k}>yrGR%O2Z&FlI%!T3J=|wxcGAl
z8&^I#5;lD0*eMo@tDqg;n$afw$Bv2Cl+h&Zz$BY?rk--3kPA&+cgaip<dznRbo(^x
z8cH+|a^_`n?iS=U0k;TpnnYoclSDJ(Y)MjK8(pi6j<t7PpKWkwzi-mEM8-M)dtqzA
zlo<|Momx_7MSs(rZ8Nb)=;(H#B*nJhDqlRv*CAXP<I!n4X6h8d#h#%g1#}{*=Ak0e
zc0T)5pYf)?-0PfEeJ@g{vOnS?D`uzA-0#x3+^>j_t$VO({^C5ZOJha4cUZ&1GvpU-
zx4PtE<&|kR<>_wSUfe&~g#vrjrQ}AY?4DL3X|GJ<D$BlG)zh_H?~oxO_sJM$HOGFT
z5HRBf5?lX<bX$pyfGeV^75h2WNx4;9b|0p$WEvQjtF89WDa^$*NY$3XU@GJ_^n;oX
z$(Ro{{!5I}P-~=;hh;2m^q1J-F+7N#!&Tii!nKpiIG}S7ZF(>r80r%ay^(1HH#SPU
z2EA7%z(rn@#_=fY_`?2m<oTdXMkOnPz72vHt%1^|u^A|1Lh;dCV}m}CCCP(B?PiYD
zLuh?-7_pJ8YkHpdE!E^~WW%;RjbsBd4X79<gsUb2{|BHEHYxkaGmYnZ<M7U2_^3?l
zxV=zAF4sm=(z(nO6Uuc&I#)*Ha!oZ8C4**Ks0nCT^WkLR`Q~Q<Jx;1#%(L%bTP5dD
zkF$dp@#e?G2U?sE9}&o5<|A7+OmZeB_14aIF$U#g&Y--Cg!z>6T?VN%@k)ym;+F+-
znEA+dEJSHyQfHSY1C|aLl#4loOld2TUJa=<@mDNPh`$xcVdk@v@9Q8+6O%f-w3SG1
zhA2(U8DvV^fb<`bN)vDC8=Mf=U+zeb*nBqd{Ru>AVp3<9CW9}HLAjVS$dsnP<LMW8
z71!TUQ9?p|dLS2H6v)Mw1ak2^0=f8_Kra4pAQyiokc;cDf8?KF%x44X_XEB7g^V)v
zh2rMN7^$te{`*JrAe;Fq+ntPUWlVg3$oEExog9cSg5MHg@#i2KO6&zAKF08l4CaW(
z58A-{YPHBKXE6N@PSiU#QYA3f$V<h>Ik~_zC{A7;W~>ta7es!sqzSk(-BpF4*0vHc
z@!Ksf6kip{#q}3F;fgBXK#0i2t}t-4*d37VZJ`0=^S#kx<&aef$sr2YaPn6QG5*93
zfn-}=B{b72#O4_|O6)`^>dia3O5j41IA(E`fWol36~bK*ZpGd<aE#ddRw|a%^4S|D
zw!4AlV%@D&Y=o7H9b%<o^Q~0u3@a78&%iNax?U3Xj$d3Qu(zr27%??Q)Falz0kd2}
z;6%s<E_5SATw=FEQE%?aRRY@FSSz9TA>SJ#rZ%;TaI>mKe6LLG76U89TsM_fW!k7L
z(?%6)BikBfnbxStv_@H`H7YW#QKr_gRjqJUrEJw$mG!*}F@=pZ6Mcn?9;pjmy{(uz
z2ux?GdxV`^Vdu=);M9&%O}F;reBd_I(Php9Qs+PhLH?W&<`Dv;M@-Ss9~n>O8Be3+
zNk9FHftdP_!MV6f;9Mgw7gJ{<_p3s^x;WjdaSi#_ewB;GrMIrn=u8x&Gf|Ar)MvEw
z5jx0Dqi{9)wwlZ7Yi<o`S3(@}V%I}a`XDY~hia*q?c7l+{+|%-A*P-&?cu7DDXXSP
zJza8xm~vv`!!0fpFAe14`Zufaw4{8yL&PZ7!@$vEBOo0crBy;NlaGcGlMAbGp~*=R
zM7N7sC!>^YvXzRRZ{QfQyRB60Q3FSby=A3hpIWI{%oJQMwv&OQ#QGXIMr=4_CJlkd
zt$gdi$`qJ>zJ()7%+;>U)Xs)kmI<>W6J}W^%!*8yWtlK5GGUe}OtlZCxES;=TVF%!
z8S!r|PKfI!2=b)(7K>BjKUthFzAsk*)MMhkEzTG3V{uAck4?#scwdVX;w2Wx#Pv^K
z@)M3L4;ei#CUc^8xoii!d^y#z*~-OKI^#l2#&$BzWJ{l})Cx9RnOF~#ZIlf6w@_@j
zf#qWQ_g;<!G5ua8BTH;O#32-m3%qURV&6EqfGUc;t7kou`B2=O>m{mpscHf45K1eC
z@=#iMoJk*J?1c}98hP`)i+nsB=e24*!l0^I$d56$*0=D9CT;Typ9<BK_dMjwjjhcq
ze1%Edyu#N&HRZhnxtb>KSzF;pOxpSq{syWkujKy<*$S)4YO-~0=&^T*LX4l7_^}qJ
z#1{l|@pA&X__9DQep4V9Ulqv3_4jS~)JDR7khL@V%2+qJcK>wcU9hzlJ`Q`;!Z%@h
z>K21du!i^o_Js{KZYyKrDk3x*^v7+wpQoCL>%XXVREVz$<l@IAtz2Axt|ohN{pp+R
zUBL2pw#io+yAr+<qPS|<ZkPgF!-_228@9iN!(n4Bl-n~PPBJlZ^S^SL@vFal`@neB
z2FHAsVO42z%#Vrd|4RufA%3C7N%4y;PKlcz<@e_2i@$H>h2kGroG<>N#VPTREKZ7l
zY;i*T6N_Ww`b#=BhWPy!=ZimJaZ3C_i<9E!b!FldUu)$t@xNPK7*x+w{jM<ORK~<t
zK}-e@z@D>Ee;Aj5knRC%XW<~&a0^GlCK*_MB<vas#cnrn)L&sL7Z2fLRaC?)s>+l#
zrZrZ!fHCqo)npoT6U@5eGQ9n4K=cntV@3QuixcASTbvaCz~Yp6TP~JjpD(Vz!vv?q
z+gqFz?_hC4yvX91xc+}!dBqR2I3+&8;-vUQixcA0EslwwY;nH$VvAGaODs-`pJH)B
z{8Wos&}Hh{(a0)2ah1z?Kx|SV7MDxJV%9@usj1f5WLly!CT^}>d!=Hw!p9me=S=y@
zxWJ(h=PP+$WTBY#e2fdtljrZO=Y+W0mTnf46E=E@c$a2X!fHBHVsh$K!fF{*Vk*F?
zTq%0Gs}fRYi!Zl0A%3aFN%6}pPKjS>alZI?COz^NiXUomzW8Alr^F{%oD`pEaYB5$
z#W8XHnW6lI<GRn3QyCN2-!n1`iM7?OS8byN=32SfA}1HP%F4x7JGsECRxb8WCl{zo
z4EPso1mQngCD6hq7FP-E3t=SI-^$sK14i1!;wl02CtpnVzz3|{uM&9LCKgu-=no$8
zB=(Jy3q)uJ<YEmVQ%!-rtXyngBWHIhpr<8`k-!9q%wk6xIYt6{2+|k{TmoSvcD<7e
zyl3TN>I-8Z?u<uGXLP9&-^DcI7`6XM3)SS8Tc}ok*+Mn!4;HFnJ3#DM)qENXz)7%c
zEL3|{Tc`>*HQ|g=wT4=#;7_zrOfhSQ6Tiobw+^?+gsb{+xc!ovlhzcc--vmWM)F=6
z+XY?((PCozK(vfsCD7X@B2@w-Y$94EFa{!r*r8VLR|(9viAa^e0;dr;*=Yp+U=z_Q
zfeRsgiJ3prBq$fCp0K+U(y=SP+Tw)xT^1+BKeRX{{#hUw|J>q)_(qFk;(fUijL(#K
ziN#6reikRh%`;q-D}JJtr^HXPI4Qo!;)J;VxKnY4W7j{eYD+4vc$i_uz6iwPDi*O=
zf8(LjaCt{8W*t{Lzvi*SN34gKxSZ2|a#q{qDi>>P;25!HRw}lKm5S*?zUgU!-bP-o
z2oAJRtPC=TiNH)NcVVb&f+!N=ubL=I6-C@wmWnA7uI?<Z5@>4WVv5DcGeMOqs2*1C
zR|(jlN)^;NC^W#AkURxadyB8JI3d0^kc<B%kc;b|P{aKrAD0_hWla1&h$8NXJ!zq<
zsx0q>=*fh*O5ubfCToesRS4otS$gBmenMp>Ro1n}v|Q{4$h5J5Vx%iwHvPrwOOV1A
z|HR^i_{KmkuD@Z$CS9EJeF#w<u}>kpO%#%Gs3~Q;9->$=t1WX8=zm#TTJJIORu(73
zyIGtR-zSiZ_pmr7uKNu{##+sO<gY740Ak%C8<~)dLy^h$KqD#_v)XjqC|L%nZN$qh
zPKb}PI4ORo#VPUCfn5A9ixc8&ERKomuVnGbJZ(QJXNJ*N8m_z?m|}MaVsT|dTtlvy
zaz6-BHL;frEEhBX^Xrw0+5B0xTY`ngmbjv4Y>5S>CNiat3YWUj=1PiNr|Hhr-`O^_
z)r*NYvN$2$*y5ykzQrl=oh{B6pKEaw@uLH|_%Rlz#OGO@6rXQ#LVSV6F>(E+E=}CT
zg{`=H8d+sRT>8*a(1+weBN{ypHr>E<r83%4qtQ$;+RT}dWF@3gBEH<>g!qLPC&e$a
zI3>Q>;(YP%0=f9VEKZ7Vu{a^_6<Gh``k!9PqV4Tx8Tt>5EhhoE?72oG_I)50SGLfl
zn^3NVa;Zet5@JEFL?%~yR};#WQZB{JkQ57Yr82ojy9jSZ{f)6K6|<H{8(zmmRVvm5
zGFRyZhFZCp{tg)VNmT;pTDjO|R=%i8z}7C^CuN8xK#XUx!wpRLr~X6uYDhgMevQQm
z@oOzkieG1OO8oB@=Zn7?$i?5XI4S<N#R>5Z7RSW(f5qV*Q~7TgePv8serQFpcLK4v
zvW1TKP_Be>sYH5AEXb9}<VyEgC|6Rs6hEyZ7UW81a;1;*P_C46sYVPQu^?9}ldHn@
z^CPHb&4DHDMhnF@8JO+>{f%-%+bA*dMiwW;8(W+d&$l=wKHTDb@ezSs`~ZuS;s;us
z5FcrAdaa}~2O3#rOk93w2r+A#SrUd!6EamXbc9%7nm!H6bWey$G$}59=pIN&oswEX
z(r03Ur_4zJSsA23DPC@ILVT3PN%4a$PKlpualZI@fn5B2i<9Dius9)pfyL=IDJ6Zn
zkyXaTWkWY-Ofzi~GEK--#n2{V)@x=ZBGcKB+C*IXP@9C*DXA4CZ6X$UO1H@}WR;NG
zM0~l$3GoXpPKsY-aY}rJ#rfg~GyjvfiTEKF=ZlZCI3+&b;-vVY7AM3fS{xJC-($;<
z8|c^LdlyoiZpDT{X66!j+{(qGWJ4aQ5|EG3%0v2RjA@0~vj(Qm&8sQk4TxqFdkczi
zc~|@$DC!;U#XkqMGug_-IvO}iYy=eHe&=Cu{dG8A#8z0b;jdb;n1aLFa0RKHuA++L
z1&AYBOl70?Rdl}bP%gH!fuqFK9I_A(!dR>@PJ?hF7KGu8-)6;PK^VSx5XNE`hW_fi
ziwSLhOuX3Qg!tYTC&jy3oD%PDalZIUi<^jF9mvJ6u{b4ut;I?4>nu))-)M16{5Fe;
z)_xS%bR(-wh|3QL#r3dT0<pNVg(h<SqxhXh&5jek+Tw)xT^1+B@3uH4exJqp;tP3x
zMx#;u1dH><Pqa8Cev-vW@kJIV#Ftnc6W70*he!33`0j<AQ7SeQGNW4HeJdAhO*S*C
z1>_?%s-^$Lm{y2=W?*_$zf1w&LySkUe?uD8;y*)XR42(Y#AGWI8*bnzu~`s9Yw^kO
zi;cKU>^>{@#W!2An1a(lbU`Yo>o&#lCB%RfQ`x9J72VZ%C>QH);3zRQhb+W{Fiut&
z*FrcE3&Jq`c`FtR!Z2KIg_rcfrGIEIGcsm;c)7(1@lh5h#SgMLB|gUDeDSpwHxYj{
zkc&TNaZ3Dgi<9C{Sey{oKW@|aF>(D%e0UrvuBAp+nGlyBhVPTGX9KagvV}&q{sjId
zqh=!sf7#-M_<D<z;`-BXN=u1f+sxp6asBVO<l@&`oD{#o;)M8(7RSWDu{d9Rlf^0V
zZ!J!WZ?-rgzQy90cne;Hq^x}LLW@)4EiF!px3V}P-p=Bfc!kCJ;-f82iI1^3DL&TX
zg!n{@W8$A#oL;)C&6=CIDh*eCITeciDG-aRDu~6t3&i4z60ulo<G9jr1%O!W;6N;{
zvJtyuKt*@8&SK)jA&yJ2YYZ$^$$z&{td7ZFCf2~fQn8(_R4j-gCf?DC#SSvCRLq8R
zjNwOF3$c0DLhKYP75k%=id_vcImD_2?y+*Q2Mnwbd)P|F9)*mx!1IuOm@8H#{5Obd
z{sU$kB)uk8gH%J>4vVW5gw+hnCG4^ZyN1+%+HZuI1;sW&y1QKa=Uu9Vf3zwwd96#%
zIQOiZN$*_jK@sW$t;=DbTIjUPNUkuV(a*qamyC8=iJmpu^x}OZ(QYyk&yR_}x|<#C
z;;&mA6aT2t%AG6adjvT(5qk}?7fysewF<E>(h8viT9_PS<&e!GG{q{!W~3ED7g~kb
z<!Ob`CaVzpcUmFTj7W(}tRrO05bA0bVgu3&p%bk_?DVukNR<wquvF*cOx4Q89=A{x
z9$<ngS54lwQ0yy+2TV?`5^zD5R|z#Sp3B8tkmXfE-K|1Qp>ZYd<SKz-RxUQx$Z;!h
ztCfo>T8cZV$_qY<H)Vn>6I*TIC^5yXhAFEO`ny$#x$Y{f5;}xP8E0aySIVk{Y{R4n
zQ4eef87HHa?FS2Gc%tzzT5O4d=|f0)`WVA9F`Io%Ci@s=w|Ua@kQ~>y9yJ7RwlGS)
z8$+C5#B9^1%Tb;@V^}6;vsYxYS17y9lir)2hM_DtbWI`ZF=5wT!s-b%gRuL!e6*Qj
zQ#PQ>1$3E!Tjv?0JTIC&W5hISn0{QB1J&U(Af{$9bvgqiQWfg`ldHVoqhM-0dQ?n}
zM~?!n@#s+qzxE(eV3$M0C}u}Wx;Lc#wVpO&y9wgt8xw!ErNQ~)uUi}w|7$BN_kxe|
zJ%U_Q6YMo8n3_NzT7}rBX@$`Kcp-<_Fv#W*8gCV1lhO*IldM8)X<8w4w^fKeo>mAc
z((rsjpvReb%EcbHQ1RYp49mro&&&cD2j$_KrcACfvDF5S5_6U204Mc#s}OUQE~^qM
zH|2~Hb9F1L60(t|2Wby%2N@@$mF))$WjN1x7%jHIz;stDPak7gCT6pb$z&g+>^4v4
z0LQS7^{9qiZsBFHTPze?Wnj7-1(Rn*Vm5n4CVPdl+dSz5d>x{fAPp_?mn}|+ueUfU
zUf9~$q{R2II4R!N;)HlRi(}%`El!EgusA6`)8d5qT#IAkFI$|xhM~CHAY+h-$)z2L
zLX)jR?8vl2=zOaXyCAI)y38uXo=q!+)>(y^La=4HQKcZJ8G~{$S5|qI(5+S>whB_t
z@+zSRtU}C{RbC~e0@(M2z3*y7Wn!Hy6x-XtF=Dp(G8L$LF!hO9PwBy;I2$6?3@omW
z;T#~Q=8{-k?T=VY{v;N+&eBVxZ*lf-D9*!rde~1`PMOB!#D+P>h3TvYp&D(i6yOTT
zsf5)^jkx?`p7}c_^You<y~ZpKjE+W3KN_gUyk{F3C07eKav4KTUCY<#)OCc5&h>_Z
zp8!$K<6vi4=(HP1z7Odz5ud%g!71^%7RSV23gqIi2XgU$26FL@fn2<C8|x=rPQvIb
zW6j|mAcoAous#+Z54+OBYhgE9SPiRfd{xH8<u^3c<faFt>jv&4+1?OmV6i~$J9Qx*
zS{sk^W8$kV&KF-3$i?gIVQP>s-oWCR_^?18_BYhztBg&79}N-VX|OXad=U0$3mcJn
z9|!}n6632fCN96Bn#s))C|oniPBe~2i3RF(&E7@!xlyNYe3as}%oM^k1$eo|3Gq=D
zC&dr4I3<2aTU&AQaTce<$6K5fKh)xc_(Y3i;*VOKFaET}De-44PKy7<;)M7*i(}$H
zSe)JsEB5P6T$P3^299#E!;ERA;c|~y?5}}XT;347UXrs@th1Q-84y#jehFrsg&Sb+
zS-1uEgN0Gt>}Fh5bc7AEP^`?rQiXDsm5QBbrDAtjsn~;7s<_^?(tpA>TdA0>du9wP
z+_?}_Swh^_CVfJb+SaD1N>z9m;`mmet&P($r^9S4W9|jo0Mhg76zpf1Jmq3XL3&(R
zn^0ku$b{_LPTtoU(Wp$t(+dY_A2r(a3BYSden^vw;T9(%@TkQ}@tDOa@gj@!#k&M@
z@nVaU;(J@15bt4eOnjon`QlS8PKi&mI4M5e;)M8Ii(}%eEl!U*#opD(Dh>bt*n1Nw
zsmg0_zq?Oa9<<OFQE`f>h&a%IBT<M(j3QvH!R|r@#Q|tX5E>*J0l@*MNNXITkwS5Z
z5f$SQ#Tdur;*e-G;gZBD4w0A%(HL$L&Hwl8ecn0;ZSKvzpWj{Uzt&gF?enYsPWv6t
zsi6z%(K-SrCvHfw%<`htrk<RG11z~nMdMvk=sK6+dKp_AdR_HBOI`W{bDMj}i0CW>
z)MsBd++&*>nhq-oP=82D1FX-|<4S%)#+1M(UB~b#*9G{D>t^`8>z?qvU9D_y_<Pqq
z;U8Q#!#}z%z(2W;;VRcTxbf~@Pgq;T^_I2MnS;Z3p+{wKxXf;g5qG#B+#URg58Myd
z1V3UkwWWH%4l=6;@fG)ja_}QAb3f<|e#Cw52TR@GR6{)GPiEE-zm};n@TU74YlwIK
z$;=w!Z!%>9{|tV_7j`p0=qIyC5r?=R6oVfz-TmO);79z({osY*M=;`QH#^{eumK-b
zgHPK4wlQWsEW$R1=^&Sk%xsqo#?3AnjAvcaWu{(R;m^WfUDB;?7ET*I8RU}Sk8ufz
zneQ6HtK9wB7zbL6-i7)GVa<3K(qtW!Cxzl$sxLcRx2neqr@IWPzfxPTSbG)V3vx<R
zNN(0}4YozvncGjS`tX6%6F0or-Qa4OX054)xXGXBy-A7h`;&YP@e`Tm0sO}OO*O>d
z{YkEd=-EH13(?P?<Z6h6{7Jt4;=d?INyd(bW!EvRxGumWT{pw~UH60!B!2jy>jM0~
z>li-dItPF4x+i?abu)a`bpgKSI)-n!&cO>?EY6<r64%Y}Qr87|nd=zNcb$Wsu6x33
zT{pw)To>TCT*vTw*SRpEjMFTOrPD|sb*%*6y-p+H%MD(a@frdWncU!VtGLrhqjCdp
zuQN2)Kzrl7h8+BcOm`Zz^`uMil1!hPHP#Tz-A{WPSj9!q(_|aiPG-3g1I=IDLpalA
zXgkw%Ow)_3-g4S>nWkTmX}vbq5Z-i|rq{R1%7EsTWmYYXqf8uq-QQS4oG8m2ENLqx
zLTk0u5*RDv<FfEbbGDL`<jgmbsFtD5RGqr&_aqCI<0cuaAHL=~hAR_4d_VES)rmjE
zK^;rY*O`N_$~05I5&q~hoAVcPaXSWSMb}+GZrqSY<WAe_jI%W)Z580ZS=KUmR%U~Z
zAjVA38wTj9%<iPboa-2F@45hYNc^y$>l{4Ybs>a7eP58Nn_x$ozcYX$vl6m-X-DAz
zPpwZti(H3VYW*I2vYwtNBUm`cbqud|U4Yjlet4bh9Q?lP0({7I3?Ft~-_eij`4fo`
zKIuA!Pq{9@EeBdG&2TH%1-P~A81{CZgBQAP4g)|tf3x~Jjg-}e4s2stJB<{}+zL|a
z-@Q~0?r6zH@FkOFFvY##Z1;kh?gew)3%r41HmqK9v+5w-)2ahWSTXcc=?$Pl*+g!Y
zDnL)JPbdA1EqQWi$NC(}rv(6#<oe6a5WBW^MDSmi>6W$;(gXSHdFShSr}^~F9q~%n
zF}%uk0e;hUGdyt+b#(NEC%JBh<6Rfv1lKWacb$XZbKMi(=eil*@45gVa2>;kT<75H
zu6x2aTsOntxGumqUB_^x>m1x{504pc?z$On;kp2OxsG9P*Ex8n>-sAZ#_Uxak4_`~
z)ino9v?e=^bVY9PVB&^EDK~g4aYF)-8*FLqbsA|~?lAQ<{TFXK2RF3JO5g;OMIyM~
zC3x0k3B2H5@bB&gNensodv}AL)@~7aI8%%*<}QIfJqP%*d%>~p1;@+m^IgO=_k*)d
zwt|`N1?R~uH{x<x_%s-OtxT_bZxVb!O4$K<%m*Zfi~{?QVW1Q`6hnt{i<NhYOvfs?
zPZmB6MnB?7fLgo!H27U5FbCS=jPxBc$<RPiPpjr?n<w~`)K6qwms)DQz!F7!pGDk}
zgIDkAD;8eoItOpv+x?*-%FU8rJptFq{K|p4!xO+=^#oM+y{rW2A@dTbKAr$}sVAT+
zo&b)nC!p^41n_7*0riR}fZx{>P#<~%h}0Wz9JQZJ{Q$%22`D<PglwPpv96WDT$gk>
zvZ~AU<VKfZiOfC?MuZ^CHPi~3&QTD8EZ0zf^#nj@x)GRJLu_E7l)+Bs*QddVQ{4}U
zcCAl?nWGnETEk$9#ajWyO#e$Y)b*YK!gQ5tsI4rR3J9}Os-b*fDq&#OsP?>7(nhhR
zF3GsR)zAhGG+D})`PhR4Uc8zXuTtF0)XyO*{;5~a5;(<bY<pUG*(LCyt+zv&A6c0a
z@Zzm$@m7j^nbr{7FuBN~t!s@iW9TqlXl8<8K!-;trwvJL6q5|4BtxOhj!nx{DRYID
zsRCAwrY=mmBop3GrlT1!=~^I7wao0Np9WKLm%E2%y4*bk+U4#cgnxCD5ZF;N#Rz<*
z)Mta#f3>D1%6p%T`$u^7KBjxZ>s;sHCHuNR%mU?R$<NUwTq8@4CaGIJ0o+kfK&_`*
zR03=u^Af0SJOON9Pe2Xv1Tegwfa>rBFt?t7BGT-6qCoetc*<a|OX5AtGL`}5>=Z~V
zC}(^6f+}Hy3sbCu3J9In2G_IeJpqJHmujdU)=mY4zLjbykF*jRTBF+YR!JMhmbxV4
zo>oH}7;LgW)s*?zg9Bc?nij88+{;u$J5>CvSI$6|t;V*agi~FD$tLUVQ07NgrUblr
zYg)XO;$EgTv@>6>P8mxJUg<i9SGg|0H(WQv-zI+euIm`Cbe)6!23wuYa2MAFxU1_J
z4s@M^SGsP_#`TWs(INp<=?f9HqcST2>?ZRB)Zv~0j;JS~j`9R>X*~fo-xB~KcvaaT
zcD4*<5ZcnWmGta1PXLo;lq}a!XL|w&ZIx>%8pynaW$1q`)0zc;bO}B%Sq0vFi3aJ1
z@&d1^nvL^k%FGE2nHatB0zN05M#f)mKz-zfURhhH?0%K{fh>Gnil$N>V^rp0RzsK}
zS6&ruE>kW7tja<Xno-iH!Hu8(G&qc&KDeFrnNNcm%xUW=h@TPGr@>w@^J#Dx`7SFB
z6A_{d-6r_$Wa_}a!XYk0>OwtTBx9Sv{$KRv4F|f;!Op}FuS@*!yNMqzN&N8T#Gh?v
znYGiIdsTc-rX}-t;bWKks>B$XyeA6nE*}$~k!enIka{yqjcV4&coiC&!uNsISpi9M
zNNspSHN0gt>ho`L%6``4o^Xci9DFwM!xs`i++cstA1b82ZkFDe>mv@5DZ*jGS6rSW
zoa^!>;Ukxz!RqSFLF&!)jA{;)WqXEif0^zrK$08+X{gD!*pln_v(2h>6Kh02;3@WS
z9m7ps7hq4<&2XzB-a)vv>t?u(>jK=?bqssE&cX9s_k<U@Zie$*7vRONV>sV+4lZ@w
zGxUep$6H*TMq<z|2VbzPokpsc8(fmOA+^b!t?bKQSq^?hrjzzmVZO_S!p$xp5|+Ar
zN_fp=>+glU)!GU+F<B&(L){BTxfe`wFF41&#C3yvzbic8Uf_M75~6LO?*nC8_A&I{
z)Gvr6dv6BT=)z2y_BVmP<?>)v>akR(OL_p+P=6m~+Ql-KL5nPW8jPkz9mpX!wa+(K
zCGB|q#(~uHEVX{q^0-=jLdKy2pL89=r(74{)2^H0pI!Has}eta-*o}5b{)etu5+;8
zP+zgI#dR|r;JN?@x{l#s*E#q#*Y#CL>>pU&okr@>Is$_%Yp0Q7ndL>Pm%UUD{z<0g
zMMeEBXOY6=T!Is1d>RbBuKJ#(uH`c39x@`@@qqfmN4{t}tRz7FAqnl3)@Nz9T<6J{
z5;(_o4ClHoz>8fs!^>Rvgx@{D%JznLy6y=VyKaVexh}xFUB_^V>l}RHK(8mPE#g{a
z?R4f~{3Uu+2Hj<LTZ}l_{ost?N8IOr@KEq0e&K%bX7D4{Qw*vf^pIKoh*9nbrQk<Q
zbw4=U{Y^E*EPpbyhPXkdO2N(UZ>%A1_a`%Jh@~=R0*?hh;x+e!mBEk5YowGPG|Mbf
z#6Io^LxUf2f&0M~!H;0XRZm0mV89pKfDfv{^KGEo7_*mLGE7YhK+BtvInX78ae_+*
z;}Vy2nW<OadxY=1q+8Fpq$lsYB>1f@m^Ls}#;3us;_imzk;XXCV)QQ5H%M2>+AJr9
z;=fY2-j(S@+)jOIv2NARzU$T2w`JNlfV#C2qlV=1qMolYUuW)b;uc>fYZ>&HaUTK?
zb2n&}X?B`wh~xc9u7)_vpX6(Z%Vnwv+~oeI8sZUulB*$p9#Rl1LkgnlAZsQ4G`Lxg
zO=Rq7*u!-UH+5Zrr@3y1rzd`RhU*wkcAbMaxNe5uc3prsx{l#O*Eu+Pn8nZx$G9%Q
zv94n{&UFqR@46XIbX|b$u48zz>-y(E^mSirv(rfYT5@1g;)aANH&~FkA<@VUj<t&Q
zH8PP#<p$nfXR-ve;Z$lnuOSByk?A<6joB{2l`{K`7IBUHY42f|;3<<;@VtA$a`%GY
z$gB>;YV#LA6oy%F^(CJPC?=p|EN3|ls7yeY%Cr(2YX}dhOh6CHwDbT$Da))H;u-e?
z!ZLpvUzzw;y1%i8*xQ1tA0=nW<-<|UDP>1Xt%4Sl^@~rMu|&qcmRbU2%zjWz3(QUC
zz)D^98<NS&ai*2*$icf^$MB)V51&Z<@X5p<=9oGzF<)m6-X+r%-zz-oGMn=@xwsxf
zTG8PF$c-D)h}>yg>1P6&whFX$on<Y98)P=_2x83i{6#(enT#C{f9^Vl@4GI*)rlXj
zah-!h54N)PkAkW1Pcn5Ad?53;1yE#GLg+MkX-DAzPpwbDKjqrO3e<0~57g7cyulnC
z;W~!Lx-P)u5<eX0ItOREF2Gr?V>sJ&E(FH&^AaDN<2r_OT^HalT{pvDC4Ts8*D-v<
zbq*f#6&tMPY&%OWy|V#QR;LAcC2>QF$(=2AttaQ;TQZF*_{3xx>|uq9U_X;(@Fn+x
zgWL<ef%?4A{S`7+9i)3&bsz~VPQ$8iKuY~grcwpymDZ<|{w=fQ^z&PMPsy|ZK$0B#
zX<Zni@VJMCM4jEpMLjQ>Pv2D%k8~ZwR@Vi1f$L^CFY&{RUB_^~>m2NK-3+gFU4YlQ
zj^Vdl=R&Z=Qk7{U09ESN;1Yq{lG%*y<|+f~$!tf;jxks1xO!@R4Aa!gc%{-G%?phX
zs$^(niJm@dt|E9&=DQH}XHNjD>ItZiJpp`DPe3&tLhbeS(X6MN$n35_JkfOw+Y>)L
zIq}2Ei68zr@rP)sua8VkfHPzsEoz!40Lpnnwq!5MPzGa7mMAvWC7@Vlh-s~_jQc{k
zk0lqu7iH_|D@B9))Q}ZV0c~jt@&r#gNjTkQ2$foib)mb#ttLyrL#Yqs#r4$6{q@xP
zB)%xu&t!Hqi#r}_I)?pR=in}h9}Z0X@WR9&28;UMmT8zli;{gbQG3gj04TTiFjI1c
zl`Mm8EpLfpd%6S^%M3GRek)@@;9q5G0Q^ms3^Q_5D_8`Z%aRo24xZ9S=<hOwO0C2?
z&fQ?V$rA8T>cf0kJ+;zNPpuF0e7RngG0d>Xa35ya%XJR!p7`Ow#1Drget2-=4?|wm
z^Gf1_*SYQuzm@p2dB@AAK>{SNJquJe)-sd<nRM2kl+B#}>n!a`J;gE?0kvh`ZCR+N
zi)8c}u5{fS{x0!{xXAl}OmP8{*N%$}cUguqAQN$AGpBJqq|~LBxd^B&6W1y|{Xj-s
zaI?cq_lCV)=U~6Y4|hrYAztcOPd>#9NM1W$GJGu4Vg+O(-fZSH-n>#bk*T&Vg`Hf6
zwg&3yAQ|z(JzU3dPuB&wm+NM@uj`)h5!VCZ4-!9o)O9obq3Z&C%ykSOcU`{%4byY-
z=vo6jxiduCP?c}IB^SZTGOnxebXn9ey&*qS;&Pcf3$B)JtUUJF!k|89>F?0iG+iU-
z-JS=0PewiPL7CMP8YPA&EQ8*o6Q6b+!}nbm;OfK=KX6^|7InNJQ%ry?x)%yL*Phw8
zmG~#iP~Y7RBlIqZj2VLG$)bji#~Tszk_5OkB-DeK<Htz`_~nsFNyKm&Rl>7FLMS;~
zj(IYL3~rIF9VZ#SVHwIGWJp)tC2ME6QctO&T>Iuavxhvzwel2eA*dxP`LIkufo`Kd
z9TXWJwG3tOn9SQmz3vGhluV;t@n2<VR%4sU7%|w>bqqIiU4TcqZiYuEet3-Q7>;wD
zgTHj$3}1I$fN!{t;Y!yzxX0lZLvt7t;_55Ym;jp6+5%%_K4++Z_XO~pdIE|HGk50H
z*Gs081&lUXp@tJ(g0oDPf!AB1ruD3*3W!aX!B!@VU^^Kb4esb}&{w8^w56$rAe^=S
z1(&pgB|6CX>39I4gQXgZfl>kp9W2$-4%Tm84^#tRmNAjA&2<b%Cw@3D@x%FvA1+M%
z@TSBcCWE?*GEGKR80!*DliB+hh;#f&Qw>2K`~y5i{VQ6b9!k)zZig=xXexVWtf%+N
z=mGqm>li-Zx&SA9)t3sK=(+&gUB_^;>l{4Kbu+xkbpg(E9m9)V=iq~`>q~Ko+B{x9
z^&Xro^Yw>1*AoC`Jppx@Cjct+gfI|P`H)Pj5o~RFD_}2^RWRPYv~rev!7TTtO;l;(
z7V{RtZ8BCP{GPi3L1+P{-yR}{r!9sOU<9>a04)-)eiuZFp;7{%QBOcoV`hit^|Y6{
z%5B0}m!Zd`b~9J~CDY@2`jm|MhJSKhfU6QeEFEEa3b5=ty#y)!7c$Kac-v&@&%$3^
zf{j#2Ujc2ZA-44=xf-Is%ok~{hThi`n`#K!3W=c`RJXVM>Ni=w>N2E`)6?T+^a!5d
zI)>w27vSc)|5cu5xP|Ki?BzO!y<O+vAlJ=sU)KdV*mVrQ=sE`{xNgqIwTXNhC9tK;
z*CVRGCjiQN0&0jS04nr^Y?bZmidHaq&SV9=ZL$hBvl=S2va`u57~tNti7HJTY2G4e
zld*!~3GN02vDOM^xI3)15?};1FMt+(p`sWnCQP7FPe4&)W(7Z}N|srD<-Ah5TWbC7
zPEsGX)cOjZtQ=Ei%r{)%x&Rj@e%PoI%2P19uCHL~xPUwjMet3NrJ8W7OYlRPtzg7Y
z{E2?gO5#;nSfuE8J+Y~VXi{4tF-#oQy(3e<$?}QIklL&gn<Np!9<F1!nd<`V<+>Se
z?YbwNEYm&Q>_)_yNdlbWx*1M&U4R{~V>rWg4zAQ~qE&?WlT72+6aLwCGhF4m0N-~V
z!!@pRFn?rH5n_EA6~WkbGwkNN05@<Q!)Dhx_(PdRlpU+R6{=<qoM5s7rpbJ}p!QG{
zy3B#^nrs6vxfi@{vIthoyd;V+RT69{^90m%PXOnbYy<OUo(J`POQ?W{O|}7g;d!#%
z7-X@Rfp?=V+l_LKZd_z}+5kaQNx6n1QXK;z)SljevY@_dB}>3-uV!m6S?w)WNfqp6
zvIu;<D(QGt(*{d4$b{+c2!s(T)zT5FGC~Z7Mll_eDq}*ZnVXMYKIb?;_u%NbUJD;c
z#l(&dQ@E3YX9@lvtwbvRUs-TpRHR97#$<XkCiJFN=`4_L4b$}cc6guRee3Hl;|jT1
zj{_CD&NJXErkbvpHkx3MD+6G0aB)c&Nn5%|s_7zWOBYG~9(#9P433a#oI$%R6VWYt
z`mk($)oxL*r<QlM(29Tst$(~|@vNZ|Q_Wu{&WB`~YIw@<)T<%Vy{rSp34-taBDl!B
zWrAK{vX};~K>V?l>dHhxixx%bwLJ;t>`5pYcBz)y=&<e4nMoTR^42sB|LPv5{O7iD
zFIB^PsKRxgu(bBSvaU13H6}A$U9Ry*6!kA<nRyQ*nW^T;_mt%&#jjC6l72AD=rCRA
zP%ft#|Gzi`zQDRVItlXs?hJU_|MjITGjwAzLuWIP4BeQ_(A7_zFKOu3y|262qhZW5
z4Hh{K$f`LhhCPgC-q^Qj_FNK3eXHUR_03Wp93i@-g(@UN>Z$eAN}8(L{gH`fOeU5w
zA*<T4fk<K*lZmCvLHW#a7AmSAOkK1*>h*LKMsaW@t&PgGHYzg(dRN0Al>1LtZ>UV;
z5l*h;qQ35x`J5{K?8;1Qs!-E9Z=n7stM09|`(r{o41A{hT@H3;@`nF2tz&qmj^UX)
zhG&LQ@00suh&nSymRT|V>aH%ANv5U$R<xhGu+=XqM4Mcx!W`KJrHc#Hx-K*ahuc1l
z+QFd`bf(7#haQvHFQk==B#A?7B9xL0g(S0OJfmIryPSQB{ipZLndusn3D~BY&NAhp
zZFFe-aiu+B>3Y{)eA0CcpK@J*PrGi0&$#Xh|4rXC&})!YCYI?5FJ|B~uAAYrt_$!v
z*D-w2bq=ntL&YjWY#^f|xS{K2Sa4l{-Cf79*>w({t~&s$DBHys6{_x$fTwr<U{*H$
zT}v;6B>kba(%-lA5*VXkHG5#9j8`3{8tQ3J0MFMGQ1n72z(z7Jfx5#Jz>bPqzd!*9
zAhSG}A>z`kHSD0jCh9BGiyJ^r+~Kjgd`+rMzEQB7)n5cj*81tTLRo(;TVJ1G+pQr_
z`Y70L4V{N3_qd_j+m-aROrO00daf4g?-!6v|K&UKA(1Yle=gEX^gd|_>WV+ENb1V;
zwU$;jCR5dzOjTntRn=GV4^;gxWEvO1C}txJb0y#CFg@ry)4VF-kKoJv97v}4m`w38
zA*-sYNAilQTwj%Svwx1+MmE$uS?;M8nckZbcRY$HI|jmju5++6@x$v9Km5zlo<CdP
z1*%8u8uV5c1r7Sh{3SK&B2NHU)e}%unCa$is^ku<uLPQvLp?i^Dt>QGr+0SG={dgj
z8_x9A6JnZujK1_FQ@?WXIoAW>i-{lJe(c(Pq1-Jp^#wd+vJE^h^S+?wshnOmfvaVn
zfTBVrWaC(3m6U<kSD}Wt+zYyE)^uqCeN2`?i^&Q&*u9|SUT~Uw!MW}QOH5Y5GbW2*
zrF+3PV`;4dt~FT&H@Fu(XtE4;v))v|UM7oRUzz^cy0L~h$e+xrl_h*ws_8)Jg6$6m
z)(4^lmRavxK^WLlEghCpIxMZ}u$0naX-$WvlnzU4IxHoI#V131*&j4a8|;%v$<&O#
zU1X5ZuZs)~nsM<3lJ2XtA2y*O_;M!ravFRk4gSA9r#@wsFl8*UaxI;;3ehn!o`7O1
zG_!!o@Pu?)D$EZ3@q{oc*CoBzeaDzusK%a9bd1cNAWo3!XakdjKU>Yys!9tPFrNDO
zYnIi>I*~uKTxQyGp_0r!S%^e^2ysXfg=ehasf3Jtp(f-+hpgxj7lANp)`>7?_Jm41
zWcCDcwoKgv43+uAQnn|bu2Zpx8YQXkGaEq1us_mW_^BxkHTbNgl~h90Yfo3`4}A<p
z(V-wZl+2F95=D2Pj1v)_cpN?Kc-%z0o{#`vIVDL5kyG+*E7_TYt7JN^8<lrGndD|d
zQKn6kJ4rk>(eN^vPE+s=b5AvHJ<hYkJ!Gl{9Bi^!5@yM$aH;s1xm({9-gVh@yiR?Y
z%6&;#uiZ0mEDlIC+)Jj`!53wAY9Z((l{X}hI~Cf`ExgVG^>s|N^ulFgQg<O!cOg?p
z;nQ{K_@|0RC(v{oSRzwvG5n*u!Cw<Mq(SATy+>Sv)iMe~!cdM7g=7dq^0P76u#E5#
z0#%uHA91w%!5ouSaDjWl?J~=a_^$iGb0*6xgdWzB)@_9YT#gXVa0#w9Sp_~8#kBub
z`n=1D^r#9(nrsDUxfk3j^B<*Ytf3#1SyYH+nMCxPArbNWOd@){lai8%gJq%GBcz|p
zJV*ajrga5Yn5=@oxfkTdTi~Ft$yPAXy`bz~aGZO=DJIJ=2nSEF8kp`YWIA=gtupnm
zsfKt^=214)(9g(}53n38AL0}97XeGe#wRS2(96#*j|xllt2Ubzz^c$nGY+$fs{p1H
zH(caykSu89{q6=&$;b_d+i+C?V~iXA*v6m&7zf<Ymw$!v@P1Z8KgmHiKeBFCK(Zkl
zLN9fZU@M$`G6Pfrb7d5ScWbN54Ic1aZ{!4!JB$ol;UpV_fwgxOzHigkzFIph%BF@v
zHI~L0i+NBj6bpMrjTKn2EG=|cR_G8W`qSmKbwe@9P)afs%IxjXmX_w(YKje^-2-~4
zRe8adCaYj4nLZkwRYMS%a?`>zm*94jB|z_#fp&Malcod)$gGaf23|=6ucU!j(!lFu
zd!h#INuTTj3qKsL;rz-DOvtN#hpdtzXJ$0G-f*o^;V}n~(~YqV%?ZWvgkGeHOqS}H
z%z-<GMv~PxhF0ciQIS71gAN^L;}X2qN*d7r`FbM+&I2yd@Cs|9dby(crk@Qr3Y*xX
zuL2*mK{aB$RK|*AdEaYGJzbIGRP01qUN4FGX@B$tndTOJU8W<VP(#d?g?wmQ@1Yms
z_T9;;=`Z-x-h5jLDv0=|EEGiFZO_lL2GOfB>Hi_Um4eJSc=|5VgEG$#l%A4#PKO@M
zJbz63_003PrDJX0P+xcHL7C_KNRP1RJ^<*knRN7-nRN8|nRN90Ogfr_BeaKpCX<fl
zFbU~l;e1#9{*jHtWE&UsFJwLRA=sw}7(ZjSsTN-T(}@fq1Jq?AqxJH-5*eyB>q=zY
zwwHBTErU4NI_1Hm8OW}JXF!k3<V7>6UFBtP=VkJuFI`7o{8!30)r$PgppbBltY<?<
zL;f?V%+dE{{J<QW0L?sg6;hb5Yn4tp-7W^#ZQ7JeWnrnKISab$O_j;%_6XUzgmb0V
z@likMgD-P(;aVco#T-z=uhUWevXYjnAEFN{+pn!u5xgd|*H?%?x*u?<Y*KjPK{5BG
zG2!dtCNmVFMv5rD;Ce&j@|KL(2ypLHO%H^FUFYB<i61_m_~GHFdww|Dbq+2_{O~)8
zA8w)!sI7r;bJscebmGs(wVAckncGJ^CeiQ~nYsY(m)U(0f_TDx5&9{aW-JHalxhCK
z2B*0j_LAvM$GwH46E{5G-QbeM4ZrDb@Jix_>#1L=8+12W1wCX<`ZymxV!AU2UzI6(
z@K)l6e>8UqL}z$_u)9nFf?kPx2k|&_m%;o=p8Gv9o@|k9C^VZa?I#@I@)Ti`%WH%i
zTs|&5WwHpCnXH26+zVE?ceT*{Om7ZuAyaUmf8vJwx*HsxxM9`Z;AoR&aK6lD5YZ_M
zGl;%brm+I|nJj{z$heThf4Upwr&u(gS;ox6-CU1>d&`(^;kd*NPj)xBDsjUb-3^{g
z-0&Cf1{-MATJQ*#aR?s0Wk^I^kxBfP^dcD%!n<VZCHTI{BJdrNzK~_PZfvXWpc?e0
zTV=T(m$;!X-D+5_O$`UtSZb^*bc0q5i>aw$SgpGTZ3`K?zsQ844;Psw^gSZu95uwd
z)NHV=_ti#$k<RJbzg>-SW;`rc*upm`nkQtse+}zYGIU<@vl-jcjBRPg`fK2{#u6E4
z%5?K{o^YE>@RZ3C_?axs2>MT+1pbjpLT{<vqm==6lZ8^~p_Wty2g%sekbS4t33GwX
zTKx^7G|WocpGw-FO6WN2pJlGGVDvV!YFdFGjhzL^(#ecgTBwaeO_tgQl0tD>s6KLO
zp)!TumTAR-WC=Ib)?UI*HEP+?Dldb%CaYkcj8T9dT)pdQI~Cf=TcHX_f-`!dN*D&h
z$n<?P<<{0{fJv!BHfyHGWYMf;a>m)5o?H&eKB?)on07M}dhTM#O$g!fqS|@c!s^Ju
zyE_Q6qYqr-ItN?Ma(}kmUo6HVxItMoli(g1Z~ql*sDF3@SbthbKpi1d2{5*vfa*Ej
z62NGgSA|;b37}cgcmj&pGRufA?P$%G!I35_;Cz!+aFxk2@YpLvyVSfD;DJ{OwMC|v
zQs9dw%it7~RdA+z!R_w-p75ee@K2LPaGdp`3chKw2)-rbdu;IA?grmCSpnYrV(7j0
zXWI2jc2?Hdtdzhd)}1yGW~F4avVq0Z271dF%2ExrhbI8~=m{vFuD0xSm1<1a*)rWI
zg3DxH0(G+|07k<TP)*jUHqc$>2`Hb(w$Pcdn6zBm!}>uJ4lSb@ZmU!J-=rB~{M)NK
z)(o1V_T}5DS0(=V)Ee=HQR#YNgg6MaoLSVB5R@nUS1YB`<w~i99(X16<qesZ8=yO$
zkS?7H{b3n+Lb@O-VL^C8=xT4x{_eIAO6d|WG1<PZOP|eHOfweKjKz?V?eV<V$UM+5
z9aYTv4K6>Mv6yBorWxxsGNlL0^od1#4KczhDg&0B`57CA!JdRcuqUD8_9Qf(uG(rS
zsZA5gt+juupDj~a=S+kee3V1eYma$on|De=<LFQp9ZI4@`{B^Djxe+Tkl7PNlbv&A
zK;gA|OUcb;x?2Z3n`{NUnyiAu-3!<py1$!QOV>|*6hahQglTI1j0vg49g?$sxJWf$
zW(}3z5Xhp{5qgO0EpwHFYoPivNX82_xQFW)?&-P!_j26~_jTP9{@V3G_)6l3uexrA
zuemP3*Imc(4c9q%?Zp<uz-(Ndmfo3zx5zZStAuEV$$rAFE)NtAaydbmBGcKEyFgr$
zX!w9kb-W@h`<iEgKat4|{+zhsHfNg~>?or`IMUsqXzppo4%3}Ec)m;(f{V>P&3MH*
zUJLw=Oj*EPCR@P+?gdL_yex<D*S+8u#ox_#4gVxlCEx>-tzgU?&jF8@DF>J!)6e5H
z)et>wv^#Tf3z_nOZDh)mt08<w(iaM>l;dO?h#0PraZ(B|+rU;B*lTPsD>dO3m-h)<
zTgNJU2z$94A&hc)f^dOLkPK4{?{znW&|jTbbBw_-ACDN0bN5-oy)GXY{_b*<bJd7U
z<ywWR%hQGLxqL)8eWqo&TX@vv%fc^Q{z3SY%iJtwkg2klg<rV*z3^w3p9l>$50%Y@
zNiJsyz0R{@+Y3WoR)j}fz99VG<tCb%&17n#kI>iU5aCNMj})GA`Ml6)uI247T<o$Y
z+~o2}Vbb}Q;cLPRE|&{yTsB>xH*jTY?Hb`(mp>QYbomG2vI{N4)xte4e<VEP@+INt
zF5eUW;Iio=eUu<my#s{(T^=lqb~#P>nah>JdoCO1X>G|=YzLu_%l(8QF3Z9*E?*Mf
zcKJ6Uwk2F)HM4S6LtmlA<tSl{%gMqFmve+~xNJxsM`$HiY*80Mn=Jf$6X+8?i6wf8
zEz2TcmGYITDGl53FF=O6E>z}kSb<VFk#r7oAa&YasUOKtD$`FaW0`YpGfS<X&babx
z7x=rLvb(em3mibn!BgO*AvXM(L!-bZIYKKK|A}I9fD}H^x=fCWLgq*)WVU|&<q>Tr
z8#^?qF{Z_Tbz_H!RP6KFwRB09(WC!`4a}gaHOB07-OEgX>Sg@@-?nb3biJ+rCwrL{
zJHf6$MZkv98xt(vNitpTfNveYIN#`Q@S4o7l!$-0-(b6IT0^5)kf|21rOe*~XsV(6
zdlKM!$2%JEEA9qd`<nCy7aZ$uz;%#IetJDDrrV~>wmHu(Yh^IkWD#8GUT~Xx!JRT1
zfp@tZ+;6fBxKOH}Gi!*a+z&o9Sp@$fqXTdoyJVID7gN3F2WPn#Tw}5bxUSlb1frll
zYU7FcvMh`idW1{^3H+3r*1(=V)!pE0GOG*0RoaW^YUu5C&9%A_Ty;a;=&81Ai(rO~
zv4vO5LN@g4GW7=dJ}<M+|3hZYA~w+VIW&vzY1iu_;G*skNPN}(fGa%X58K=gj*(e*
z#6<UlN$#InLrk$JlbdRY88VH~y@KB{w1UUo3w|WCDiP1RA8=z~eiL@mv_=AV8KE=i
zKK18KH8eLF8V}&-Q~4s@N?dPu6-B^J27?Ljb2oU%+|!JYx*KpGVqtJIa-PhdJfV9F
zZZ*_UddE@b#)G>KdAWnw)$R<6`wHAXgh@jm>Pe%7BV2+bWmY}nc=NXc?l`pnd+A<*
zdka<Hplg3**Z(5m4nhTUH3at&RtwicP9J-MI7k+vKp!g8+;EF=q|9nSaKB-N5EEo-
z9Gq&h$bHCEmw;Om%Z=d1Bs77(M5cHFcjT(5A$f#50lfi~UX|OzeSo~_>CrY!8`v+I
zZQ&+B8Cd5&#ckmhK;Cc%AQ_tC44o|FrREwPQ@kQkP+Mwua|rO&0(O$$TMVj&wTeG1
zK6F@J=&-z~GAsuCVF_5CWERn3?$BXe&>_Ul6yElB%(rrYo-0#?fV-m1i(oSLvWz9*
zWvc0+TMadaYXNsooMRkUXwDsu7j!sJ(BU*dhkb<(>mD7JGCC|ZG-J+!LWc!}4l4rv
z>9};`5W<oqs?Y89OX!yBrB}&4Pv+$buPE5d%0QQrdwjM?a@QR?p$yr$f9aP~z}1xl
zl0JMQ(>^k&AKDE0TB8J44EgEXPhA3DpK<=ccijzmt;WR){?pxn*KM=|xk{+MV};{Q
zR>4%626*%w@j`RAUMxJ~k^$I8rgDJup2iuBUVc)7KC-A`n$B;HN{5Y15in48EFiw_
zevll5c{^~r+r}<}<m~a6;M=<&Ftk=rI>xPxan-Yc<j~30vIEX2Ya^!%rH#R4`O2G4
zb6Z%v@`kl58J4bOSh<p6;Yx;eE1AxCTUfR7hFA#Tr#8z~CSn^K+bZxmslOl!8JUnU
zW#~{*KNT5drAuk}_0nl-F-@(%)5(GOZ+;qZARa5r91NsBWvN9#Mj8$|vq6M=9Qo{p
z6!!$^a3Mg4fXSP@-N1QER&9!qGqXR)_@E6@5ik%eGzxtz)A|EBD_;gw<(G<ljrxx8
zwE&n5+eHn@gUYE<Q<6r}mPS#Zs0msg*V^tWf$L@ZKHtn5f~BJY3pWv&v7;2JbUY+y
z2Z8kDby|ps3U8OGU%|D{Y<;UhruT>0X8TxIt6+bV^=VEsmdWU;<xtH6Rk7HrDRTAs
zot3ROLh2$*Edeqr($OI&x*>UR>&3N<o^XNWJ_sG&T0ygsxqhL!b>Y4R&08Pr88o*a
zT))uVe{l1G{&YK94C{U=NaM;7+Lom07wkx>tov;pVpHDF=e-;{q{=?`H*gpb)f>ix
zw-(=!X^h%4bI_idgZ3~E<jKrIdu9&WGjq_MnS=Js9JGfvCna;O4HBA>46R6pMkGTU
zlA#I7(1K)WKr+-H`k|W=>Ypr=r2f7(g{>67z{a-~yddNL2EOKQ-YjDosT>XbNJb9G
zD`&ZZFRt{)=mE9#n6*~lJ~aMyckQJB4z`t50*A@?@#*p6RCj|Ji92+L3Z_~GWk6m0
zi^Wt%4Z2CC0!n4>S2xzv-sY+fRF}E7XrnW%zjFDO;O|XVd2cdrE4R9_aE43Xro7%I
zQ?SbAo_gEy%l6h|HGS)`8balL(iI+RQH>LqVj?u(Q1w%Tj4xQm5}*uyN(+_JLiLfX
zD&%&HzD%4wETS^lou?W}`*P;=^t*rf50U9xl<odC#7yETN?^lwnMjxEV3&!ZyALTC
z4uj08I!fiJSjTlbKJ^}uI^I&tfQ)pToa@`ND}#azH{96Wzz@60jiL2fnud8c6~zU@
zT`oVHT1r#vfh^OMykfIc>aGs#V4dh9wVbBb=k7eM`%c>eWwyYZE<?L%YAH>v*St_?
z&mudJ^((>R%uDEMM;|!bbq;=VnfpVnlzUpHkp`zKi*_KGCF3K>Vh#1YCxCyiC!n^w
z)JlN<GB1I8+Y>-PHR=hdCuJNO!W;Dj6tO8G8`=jJS{d}Q2rA%6lT~n{$ujWRD@1#V
zc`LvJuM+Af?giZ}xH8z!WEFhbz2GeO&Jh;61TUB@f&mt66`W+U2u_yqB@B3)yTL^!
zE5LhS487Ock#@a)>0nltS=US8XbZdzgjp%sto+Ioz$zJIT&kg(EYLPUA3Xu()76%p
zu2PNZ8X?m`55~y61Zs*W07k<TP%n7`c(tB@@_DRZGs0rx8W+|Nns8_t&2UpE`dX0@
zM!zqzX3z|^FW>Y_7z|WqjrhW-biFV_9Q2@^S=5yflqdXGE2YxqN~we%cqQ~@iA=Wx
zfbMugx^yb^hh^Xi>4K<)1>p%{JFHSy|KV#QUE(Ds+t+pdC`dCF(~QM5WBneI?eT4y
zj#TEsH$sUyKUJ2wFHSQS(~QM5W4%VEw5QCzSAf{cDk=k(ocS3WhQXeML9i#G<Mt%<
zJ6*NaP*R&Flv`{6)GwE5naVn6BGllc9GYHx%tJlAy%QQohqCBU5*=a=hn{tWnSEYn
zPY^H3boB-lUaPm1{H;vqG5D*=R`55IRj{p9&<fZb_9cvT{nSSxM4?5Prq<7xkV@Pk
zIopS-Y93<^m6ix($t($6_nE7H`D(aaIb?hZ!{|D05+m0Im~-6>*LU3$-syTET%7pf
zU9Owq-L4Dp9@jBk;yMQ>Y8n*7z%Uuab%LdL=HN7$hWBydWtVG&zqxGwhHiLd%CL`c
zkW6P!u2r0!Xn284Sr!Y|UEx{ajWW5xV~HF7!QJ44#0|HeZ@EEl8SnbQgH3nl;E^&_
z2#zxMG~;od-X@$OQx<Tp$yRWId%-0#UV_6FraN=puGA0OT;r9%AIek-c*<le*!?=s
z0SC#H1MDNy%krig;>`t~2fiy)9`Fa5z0-s68A-o{!Hf)$X=G#g9UJ=!lefqQw!*+p
zuu-c_5;|PY6@G6cQfX30ax$&$t%Pk{?jf|g1j#VP@H}@j2p_v-3^tV!1so_-b%zS)
zxtuRN@A6Gy+p8=?U!kANF9~y8UMdXzre&BZT<&s_aI4E72tRcBbK&x<E$<@XR+o<m
zkGcG*@S@A#3J2PhR1OnXx_n>gey!E8qj0Iqn(&Cr-w5xx{80GFWkD0Rkxbp}BV6V3
z+roz~KNgPqmSvbEoaypP;ehMSdzesjd7H4z<x9e`H&}*=!VNBO74CESs4({1mSKW0
z+vPRF^)43)x4L{pc+};~!bdI}Zq)s|OrdWk?Bene;U<?42}@nRD7@ryweX?K4YU#q
zGS#qy@GX}&3-`NxR#@SZ)y&FO-j9S&TyCS2Wp|mp2MWVo^4q4zx(r9oc3R0h+M+Ik
zzOwKo4D=qJ#1cK))?yK`O1t<HMpc=QvjU}XBIz9FKsw&`N+~pYl``FE8Oxk&@3;)9
zxR#r%Uf?;EXLo4>6fy@-fs=;V@MjK<0-IzzEnWP3ipc>|$Q%`g%#l#YZ2dwAgEo_m
z9h%f=(&E3mu|q^E_WA5ux}?hJ(f`5*X3*3cWA?f3WzJ~T%lQAlZQW4mdRzZb_A)DW
zAG`h(0UJg)Z!F#e>{3(&e$Doa^XcvecgyTbiFn@q;Ab)}_wW^WgWt)*r>5wSJqd8V
zqXgVcrpqkg+Q-L2u)n(j*Fi4%>GiOfZksaOrev43GN_m=f;RVp>Fx#R$Y=zf>uzwq
z$ui(VseaC^A+B;i_>svXcveOS;2+Ih23$<_njZ`|Sq2kK76I2)yOBV=;!m1th)uL%
z!)T$mvVB|xeo9SiU{CMwZg7~)>Oydp_Tsr3`h8Dqsv)@QhPu%Q+paAFuELBh94`ym
z(D%sH8{qrA%szicX3ZjgB@4}>-<D}I0T*@UQv?!Uuq$>EaD`|5VPAKH-DH*>v9J5V
z0q&n!LmXsJ^d$_$aGBaVPw+d2Rxsba;A)vwiMZbVfEx?*BVIOtE8s38bOz0>Mi>t?
zHyIia;OA4hs#}Ru?5?5+xXEBJ;aqovdFIw1QHhtk8*m?DVQ@22lG&3hb#K9~h8jxm
zILh33aMvL(cMyNKyNF_}TLEq#LXhZQc6(6VR_N^#>?E`55qp@w6>!I){l8M+-a^&C
zsGEbA?FOL;xPwr^Tn)i}gw?{ekkiMWAbRMIAw+@R!tNl7++y^RSq%v8H>?n1ADJ2l
z`<pCsA2Q4(;FiR4Be*dMO`wmKDPF)Gxhl$DmHl9AORvgp;XXib3#F$=+osyJe#vYL
zHv!5J?g1pjEr4XW1CR_&afTi!<E7>@9aFp_QBdzCX8|7tu#^1WVo)utRs3P`p~LDz
zhvh|;VKLwjO8^~a5gq0Z9mWM6LVQOj{`)e8#Q}P_M+mqp%Df0B<4Vg|0$!$?9=g>~
zW4IP@=fpY2afRmG;dnuZ^8_7E19aF|=&<h5VJV}-QbRN5EGTqXK<Ka{(4US=Hx3~z
zNuv7PUcZEHsa|@O-1E?><mCykDA>!&K$ntx{LGa)bV3=jao^z=N5IvU1Cl=cRHicy
z{7k0Jkgp-QV#rV57RV$4ug^Gt;P>4Pc&*083clcO!0R^Jfm|h2NsDH0kWBAGfnh$G
zqswBOxm%ACE_KNO{6VI2fMcG<8H|-OtvA5Zwl85Y+Xvgo6afQe#{y!M`$2LL=Iy|F
zRkN?^L2~xwYOIL&-4BvuC|66zxRo*9+0KL_NDiHxq(8y})<#YjN*ja8@|8E8=C-hS
z<qd0BGAv!muyQ5C!j%l`Rx+LOwy<jD4Y3fw0-Mb$6Y&R|h$`?oDSbMlR{ZENW$2K;
zhLRS3DGk3~I!!I6sl`y11Mylv4LA^6WSN73)T=DD2*^moA!jy-aE~LOy^!Lb039v_
z=+G#6leZf<Z^^1n5prhs2N^H4Au0k!jD<#_pID(H__@h4NbgGWHR{{W*8*TNY!_vt
zphite8bw<gMO(<YkH&YR%}xoNBC{`HAXqvYuy7NR89PdmO2<QTb`VHUUZ;hIsPHVA
z7JhK$)v1lGe^s_w-nLg2Y-qCd*^Ff}dTKeOo*~!Qt(qcNpNFk%y%AEUT51W9QIU=g
zInkjaZoSTv(GxC^+y|k<TPtWbGS@FOw=Uebpn2<qJ%i@<V`ZYb|KR4s@+1v~cC;AQ
z{Zf#|l_9h(Nz*kuQY!0yTZh<`_w#u#hYqQ-&;1P?21NCSap$c?e{;CAJ&cXUt35LZ
z?O`17XXc<iGY9RNIcU$!L3?Hn+C!TMBy+6|5}J_=tw@GOBtsjLp$W;*f@Elb44;|f
zR_Z@crb`F)e`FKeO7W_VZ!4(DxW9pSyPG%5SVk&G16SKB($`-_UOCGRd~u~WMi;21
zE3CEp_M!1n?#ik0o)$m}Y$@Zz_Pxbn?gqmXcjyci46_Q#fVxzwfy$^sH>p%Wsm%TA
z>&mst3RN4lYPq)P0?e>}*X4bJzc*Rsy~*Y7eO)-f7IBrgDNl9D6g=TFrybYBUMW=5
zw;rn@RNg23j<s6ut$2t_F%g<?sQRfv#+qd;0m{&)v`{H6R3FKm72IHpvrL?Cx&;4_
z=}Q=mpZ*dC{>>HmW?HxT9Y2%2zmnLp>qw^CbaEZZq0{r!2uDKZY~5BRshsm$75E#p
z^?s1LkENCY8R<MZSJ=>&!K*Ud@C|nZKk_Dr#v6+A9c9VINy1E*AvsMgrK$BmzNLw|
z%jT%`ny}hsD4V91)71J5mbChhw~bI{BYe+gD4V91($spplXbzID&uo7*uKzoZ#da?
z4xW3H`{6v-Ir#3)?uV;f=iniW+z*Scb8yS=xF3GObq?O0_#2W3arLtHJ9BWPOef{Z
z!lj8DUghrFggab*Pk6xP4~5rcIx2Iptaw!i_`7wXGY9`^?kd<=k!$UMZA@0co-*oy
zCz-nl&Pm+xMRS+I3Yq=Gsfa(w!mC>J2QsRH-8CF)4D^t33lArm?##glWr`U5)MOca
z<X#Zn;`Q|qx00zou!Af#i{90fz#f?-^nRWM4$35<M|cuALPmh_pj*97I6<a1!8DT<
zaE^PyZ1;i%GWrgGWbX1y!W%B%6Slq0Y6CmTLJ!bGEvXE~%4~oUr^rG+^fzQQ0<V!N
zIB=`U3b;o`4)}q&%b@%1Nv((rWT95{Q!<^N;3p<4U<0jL3k1O;4n@#YWhw$L&m^I*
zmk|N1$rK~FMP}6@?r=X~YnZ<wd9XL`u|3-v!+u)Zy5a)1iMDb>*e7y_ZG!tYC9_Y^
zVWXhgDJx~l4*J{f=xEqWWVet7PLU}KIM3Xj4Rgd-w3y`vzc*Q8sqb&Av<-|fSsE#@
zs+AY8eyJJ$&D|{H=VZ$9OW{qIe-V7aw1ovjIabUKHi2z`xy7BC<Cr;q)UyEQnJkcL
zRWpFO#0@vHac=|Lnk<FMBnPv}bf{oM^5AgVR>n_qL7$8w=M6*2FK_kH7!8nVo&lqp
z)750VTIh}a*w&Ae0PRT#%btV?*7{AZnkIgcOqGJ$WZ_dg^nISxkUUoC>D%TirAwoJ
z5lB;uX=?q21Kn6H(-oA^53-(=n8BGgYxQc#_(#iF241EuEn~CpW$MGXNVWaSYHSVX
zneOMpF(VmH4#}{;B^#1QTD&c@j40mqGUCkA<fWCirImIOQ!$OHNTpZXf-Hh(OjZEv
zQ_}#v{z_VZF|EITo1X?<P3y0weXgd(t7-9S=rbAHWI94lny3C;YJDn!<cK}#(^+*8
zk&|S}keb$ApTg8tpZ?oa=zc3$O1D$JK$==iQ|o1S)0(DA%~-nUTG?lt+b(JaEN}It
z5RS^s^rq$8((-Lx@6)t+eIhA-f;C?RMB+zuu10mU6^G^xu-~}8QFY!zD}v;N&(+pG
z;d8aLu`c>rO=GQ6VGpaY3X;CsLBgd#F9gDDys4a-QQ`E_sMskKMkt&0vj<f+)z7Xn
zps@EkuLHmzw3Ug<a~DHynhlT3l=EttHVqZ^lS%F`9O4p;G+AF0X_;bLrbrpjSRb+_
za@{A>(VBzbxx;jCxWsi1KKfnv!)2~>aOcJDhXY;b;Dw1F&QJXC=zBdsJkE6v{xR`~
zP7~K?YriuGFO}&w><;0%#0_6|_iu&Yxm+#$#pNf$7cAD!9K2GdI>7#S5=LhZ9w5^q
z0ADp(1jm@HfT=Pv!&}T<1dk+c*sQK;TZ3LQyH`N$E(^CL=sjgr1rL{L?Srzpry1`t
zt(zn9Bbg!w8{K6sfPG9>z%Uv0mBpjYT?8k{LbK>oJPAz6B%#mtBrqqFgucX+z!fq!
zC!BM)w+U~TsSn@*lNIoYd%@%G1+U476|Q%W^`?i=+vTppSd&FCUKV<QKG%}U;6|AZ
zFygzikPrP+8I8c@G6e_TF<AkBmXQPQxx~T%hs&&1#E)g6R&-9QQ_~AJGFbs5WmW{i
zA`V5+_sLWQJfBHI|58Q-@HLrY1aHZ#I>bu%1Ga|wvwP#uwr4wI*lx?c4X{nPOA7l$
z2SwN>xWhg{hmC?}r}VSk(FRVJ;qDOGEok^XnQ8=2n7gy#NpTxnrEOq0lO>k=Iqn6Q
zxc5?lRjn!j>zA70elodP#v9s-Y1>lR!R6ld1=AK54CPoczm};SU~X||<~U}KKlUtu
zc_s^FT2&G-m$=~(GP%LACQD&5$-!(g9m)|VgTra8jru_~=#x?8ykRK0`8-LSB-1<t
zM%8aVLvQS^GOtJo%$|g>>`91Vt((u+HSurBR4MqaEZlseS9?;3vX>(3Bhw9Jx-?3k
zO)aLW#gIxj_OS3vgg(b5Gx$TB%z8Cs>~E=M;APs<GB)d8rapXcDdSdlrnZLjOgA6l
zn2`)8hh*5_nY)v;cw1%}QM~JA#F?eZODk<lEA1ktVj5GCN`GO?v<SLcO%=fU)HDFE
zzmnEpOzW@Te5OHH)B3AvpQ~x{YFfO0mqNyCWI94lTBbIiv*t@6Ib!QKpCPLbB65-}
z874NZyFP`ft3Lg|RiO{9U@6^B^#W;XF-@(PJyn~IDm7#2o@-^FRb}!5mbdy+2uEdR
zdeic4Y5BIU_i0+ZK9Ll^*_tl`BJm?SSEIToWSTd?e&hN^)rVSWMUb5Ex!T$%e6E%@
zRt%$=##&8dtx{pdDy)K}uXd1dDahP>?x?4kQQ`E_sMskKMkq8z*3TYP*;GHf%7DV&
z>-6T63Nlf7?qbMIv*Ga*4a{<xHVqY>ER+1YaFI)JnaR>;%M{ZxMap=_`jD-XYrXH;
zB!Jjt32Z6jPb-Qw)XtVr1pQ2wz^?8EySo?c=U#BId%>aZ1!H7hHR=RU02i4oflJ&A
zYBJ9rx_62^|7zZa%6pSc7mpmg*>wyTxh}w4TsOnpUH62;?&E^c@uG=?^+Xl*gkN#p
z3=eT#fQPz{;c(Zv5cr*{kUUy+z>_;eYQqCcUMACLuH9;gXJxuzyd=Ei@~^_*Wy%uQ
z5SyqT%fFMv{`RDERQ)v$HU3nlO-AN!N|ywb>!wPQf4X#QJ*Bi#LpVM3bgQ*pMLj*v
zU0|BY5}4s$@C{ka$~kaIpKWS9yUr8Aw@jA6&F%%axHq)?xSl>CW6t2yu4DKk*9G`v
z*Uj)5*F9m6`>kw0xS8voaC6tqa0}N3*voYcw{)F@J3Q$1z#U!pgne8$!<}3gU|-iU
z+}U+~>R(k{@5(g59|(VQNh{mP<eeg1Y_j^T2fW_Q+4K|T-`G+sz@zLm?&WUajiw6<
zU%MxRNwW3zZJ0g!OljC*zMjyKUfqOoFDm9r5;wfTbpb9+{BUvNhj%6ZP{*lyK0~G+
zeOtKMWk_A3r}xU3S@=)aG0c76{UPr_J>N6&!E;;};OxW?FH8LJ^28tN7^&x@Ws2tO
z!W@?&b-tc<%7_NO?mC8VC;pIkm7af)_~1?tS-GCDuj~3;Z=*s@R<Q1}JfW`1a^E0(
zOV+%eK19sx)sL)QwnFxn>?2ut%w30ny>9yaR@O^4SazW7AF}XxXmh>Pk-Z@+Y!STr
z#VqO9Wbeqf=%rmQJ47~IHbOQ|w&Rv*{uR=n$ky9RUt5*!Cz~K^mz^S;EgQCVn!mRO
zU`JVB*<jflvfs(VW4`pYvSl*T!ej6k6o+h;tYJHS_9mMxt3RYSk}Z@ik;T2$cUgGM
z&7}Q9nzVtkqU^V_@EE+k+L5i2HSC~%$Y#ju59tkL^JG`b7Rr{$!s89;t#{O=P&QFE
zS@x1FJVr|&m-wfO(`EBy;qk-1`mjtkd}n<ZOcox!cTt_P(XwM?$I2$l!sF%LbSohH
zm2BhPgIDv}Uw`c<8{DG$WZ|(wzF)~&<RfjYY@F;w*#)u-Wf#lBqu&6%ew4MyhRed^
zje%N|vUg=`WD5uB6BJo^6s4=Oc{0+%W6d7A@!3;jCwp8ra4)S<S$N?4scf8llV!_f
zD>CWBq(j=HN!lv0d2fBvAq$T+()oSVj_h$+zkStTS$N=kRyJI|vTU4eawdJD^si+r
zWjha6oU$ur;n7QayTrezxUX!uEIelJueaD_@eo~CW#RG0P}M2x^(Czr*><vlvhcX-
zK)sHTT`zk<79Nui(pz4#vt+Yn@i6TtS$JG0-}SOpvNf_6r45qpEvw2#%Z`zS#~SIs
z%l;|rb#U-1-&gcE0kR8Z7s)zh*T}+S&qFj{vZ8FPEIclhzDIVy?8h1ZhtiFQYJOzf
z%EIFi=}EE<*@YSZLg_`a@5q*B{BKC-hbvZDU)ey}5LtMPK1};gHdVGn79N+3)V#^A
zlP!{k#|r6>Wlf`W{gZ`9{;O(3Hd;1T79I~Cp|vQBi~2}Z79Oo7-LA@J$mYqy1K;V1
zZ$(9OB8!gHILLk|3y)jMidXiK(#aPd&&kJCc)0S8$>hhko~)mIA+0@=PTD3i+Sw`N
zA1vQc*;LsQS$JI4s<q#y_GSFL?BT&bD!W2<;PL9)L|sv3>$U5QkqwZ2QO3U<7arlC
zX$}9-WB3Oa!@sT=%7y&lpE_K0g5r^df8y}O@mlw?;S;>wPq!2D^G}(De3vUP|IFXq
zlXWK{%f|Ih`Ja^WkHTgB<5fQV+lAB>9^qdv`#1HMf5tOB_;<&GZ*|7czl5_)7XBHW
zZ%x%YlZD68XKL-q__ty{k@3&HT#-rd-JussvL&*|Wxc0qZOg&~AOFU}IQjSo7Us(q
zX40Fd>)uwzukrIM|KSmSeV^aikIo8Sy?B=9C)4>QLVhqhJZ8%`S9YO{UyE*^q4Af^
zlXc3%W0}(Uk?2UiUKu~X0J-pM{zLRL&Q_c<+E^;%CmM&z_|?bolaKsh7{B+(4-g%3
zk^V+n7Jf9FAD0Xd>fKrO?jjo~+f%l#c7CC@R&>$c$l3Z3LH3kvne2D6f3^M1)E>Xf
z*sgl%Pk4l1WaNj;_%+7xQ+6{{_tmoSBX*mpe|==(=j+06*Tw2%=r6yv7=E%Y{9avX
zC;SFoZkGQ%UGQ(O=Y3@1SLQ;yA)RsOXX6-meq1g*!jG@<3%2LT!q2XSbbcKzq|vAF
z3u+;K;B3u-Y#-SHvhbT{4atMPUoTrATPzE|W!8{9!f#J8@BHdf_*E-@d+FH=bp4X?
zQ$7P^jMcd^erRe3Swm)BbXCtgs&Az%jCH7Q%!T?Mm~373E>hj!`BeS<tQ0@P#1Go@
zJ5u3Cq(VQ!?^cmMP!@h~>eKnUs)K%qpPi!L{LmD?GSyYQp}p|iQN%Jz7JdsV{18;g
zx3B67{SWo>b5Q)w6F*(Wk0~(@;er1!8Na>MReJatrSL0Bp&aw}BU$*Vr0`2fA^mKP
z=ee@*gGVn(zsVRUkMR2@{G8Ez8NY1OaA`<&A3tj{P`>?S<7AUF>2FBCDdPt)_+gFk
z2tRniPg}e!3y-ZY_g^dEkAIGng-22TimWQ*53~n=L)RYJXxZ_y@VHKC{9X3TvX!#%
z;15eDU!ik*zRJnQ$!Oye8GjWO{?ID?l@;I7=dbAa&TsD<H5als7x>?)^Y>igLA`&K
z{Rc6q{z$g2c5YQW-|3>gZPeCwva4j*$@p`uf3^Ma=Tn1KFZ~IR@HZs<?ErrO75;i8
z{B=e6yOG~q>wg2ow|e<XFW(gB@ASgoiiAHD>7zdLhbrMuL_#~%zd#oL<Rkd`>yQs+
zYh?V{M`$;sGw%GQM))g@;GdwnsFOb$9VrWc=@8QQkuRjtr|?G$A^o3ft4ZURm+>bF
z;m-_0`gr+Hk%hlC2!B2h(!<x*nRmWu9KJ}-*xYb~e|MSh&4%xfAEB}0yWQcN<NsMb
z530V0WnrvCef?G69<p`SJ5}p$hKz5BhX>!}=9|y_h6G>T4&U3(rt|e~(i@Z>zT*Aq
zd|lN+zr#1Z={Mi)=8N53#+x)qJ$&_=ShkUcuV07nUWd5WS3RNsq2AZ!<EzztTReQn
zIpoK`rHn5+ca<K#l^nj39Lh0oSIfdTkHgoFL;47f<>9jM?c(s&;*cJ`QZ{*^_M|L4
zR!Xmy4ZcZxK{k1je~m1p^WCU7WNYN-+kkx8Y51*rEht+k3tvzQ`AHuw<LgbNhX?v*
z8Q)KONEW`F6w<>ti^5lR!WVzS7kfg!cW?8r4PJ1&+K`3sw(!N4-DKfgEg^sStdp;;
ztdNCA_#AV_cU6yU$zuNmGo<seT<<$IE_dm5x{MFc=H0D(W!W3D@Yz_%Px^H-K3O9@
zJkW2-_-Jg6EPO5&(!&Qu;ZvgUnbUpu`d0-)zMYr&2f}<d^^7ch6vJmKr^&(xDj`3g
zOH7hYk$p`zOLo32e4ufaG@oXK2k%e!l(onv$$0zs#s@;GeqU)%okI=3kfX8j?;Ca3
z{~H^5qW?}i`Gkf6lO}fzn9@Grr18@`CQUkR>iCZSgIWd+m@;Wn$AD>5rwmY@0TWL=
zalpxY4&JB#u<>Vf98u|i+R0~3n=xRomVI0H7;y3#C!RL#r13fzPCu<<(y1*cQnTyh
zPCk9|X=^#onCefbcARw5_z5lT3anxLjLFA$95;SO$M`8{9Dka8_3~Nmby?yW$DcmF
z<M<OiRj)Bshpu)XH#GMAX#1u;Hr;O8nC+Vm5azA*EGo>|^qGdHT+@F1Z+rbOm!G5m
zuh0Lw&Cib%bjfMTZJ1v$CqF=<`7r&jM}G7&A(}8D|ADy4jYsMK>)n|joomWRmo>&M
z@xMnK&WW~NEO+C{)1sb>qf>`OTP_}19S|KdI@)@*{Q3N{xJN$fy&yU^?&yrp>KJ<d
zT|*~+Qz;wdseHqD#B!l&Sw5N=FBp3M4~Cw9b7$0JakR<miP2dLNV0rUta}DM;eXL`
zlNMXtJ0G1nKRRYXw9$g-p2m2{(Ejnz^M5z8|A6T1IZ^xSyW(>uMmx4pG&(&VAvRt-
zH{Of%siUJ~hRprJl8MpQj6=cN>HhXo>D;oIrsHM#_%^W{-EYdT&Y$1;8!6AZkw+90
z%LW!v4w)ySW0ytUS4SI-{%&;I>S@(z>eA@gAtU20CQhFgKde06qo*3)j)pDnjP8q)
zh~JwSZPXH-8h0qUiRKzFQJ52>DINN=9cwa)$dJ=;bu-oU!G}pqG_IH!6_3ev8r1Y<
ztD=45j%6c9&W(E5NJOU%iF%EQPMPyTwE3Lqj5+;>_P<=kH^@_0!TMw}_5sJ6TRuO3
z_Na;XPP(aeRrL49<?;McH%GfHh}wokEh7d*<z>+ht1lcdE*cy67!d8y5>?|NBcpyD
z(dgxq2R}bJ{_5api)C|%j=F2;fM`nGWA0Ebl^zrL|52l(Z5BjZ#}ncOs<H3t=%^vl
zZX*U96&)G(h&Eh3^6q$xk;=E{NEXn5=!E%R-3xQ0ojRgp-j1e^W|3{axFhPeG@7wE
z>edo%$6z)_<A&T74~TZ06OCn>ec2V3kCx6ejLW05(7w!a%k$Aj%cfrtO`1P_?)14)
zw*}MZ4*hDh!GisdQt@c>1rwu9SC1SyeB{ufBcmPSIg6(46_po6z2XJY#L>}!j_r<$
z&RiUg8xd_ae`3_LCE6fv8BiVl=%e4cI%;kj*hoBihQ4V+KI+rdxADp=<L&2Ob-#wI
zqw@!C2SjJY3yf23ay_qJRH}e>TMvp;I(YKYm*O7RMQ6T!WxQ#0NK7}@E|QOS(jZ4Y
zns#s8pMm_r?0EaA`vSwX1yS?jk@2P{#@j`kE_){WaYIu}W8>UtfX2HrKWdo}O_&pH
zIbZ!6)P8cbNjxMP+j8{D(HG*DXj+RrN5{Pn+%?*Le!SCfqdsxVbZ!5w$3}-t_$$%o
zlW?0_@`uOUMtiqJM=yxZRL$FWsQqYaOVo4usl6YW_V6>K4%_pJxfk{xqz!*~blUuA
zqt!#Bj?vL(amT=DgVoXW3Gp6Z-e<@M(PpcoQzt~dTB7zL12n8}58XYQuGP!)XsaR7
zv^o2K$-AGwCz`rE+OVmAqvrlM9dkPV^4psUDLUH*{t5K{{BJ1#>mPOK=$J5IsMgH1
zsC(Q)lRLNnC?z#coEvQ!FOMe7kG7jLabk4B(rNpzh`P<09&i7XedkUbFn;L%6Gt8p
zO`7n?$o<D(5Ixt>F(N)-)X;K!G<8nYy(OADB5H1lIy&wiu>a8gkD9AxHR6Lu9v*Pm
z`Oz09NZmQ0dVciJh6$|E=6uXq8QJ;4Y{wj_-8h1p?Le>%-JLv}G<}(6kV9|C|JG~j
zhhyW_`KEb|o7#%cH|=P7meb+&IM3Ff5Oc~#i}O0L|94x|T8NgOJ7>hm!$zJwanzM3
zD~!hcoE%$0DbF>=b8=1S=z*C-+$-l0J%4d#-1|dvU%;hH>zX4^6T5h*=Jkfg7G+sE
zvt!~>ngOe8vF+l;q2`+!N5^L?&$Bb<N4@7n<LGrE|91WxozeEAqqYS@7h0_o^12*F
zeMU#)7^gU|5t_Jc=wSl}TI%Zj-9y`xd=m#8-5C`YM8_|P&R!5b+W5AvG@E*2z0u9$
z)oSuIyQ1Zr`ZEhn`C;c*t%}9@rX4nw>P90Q%!#JQBkt98$O9g$a?@fC@1}gyu3m7z
z=&WTr`gGA$kGG0@C`<clU9(1>HnM**R0EgEIb!v1U$E=k#$?=jsa)mNozWNG?z}!a
zZrNSYS&Mb~nS1KQ=<JSopSzm+Z*o`ka1@X3BL2>Etplr?*6zW<>+ZqV>OF{NpF3YI
z|E<XuYql5D=SKzYWP-cqT<gXknpRItdT{x<3smaQO$(HI?YYaPKWbX7z;|CZWMrp}
z8xzx*pBoR=5rO2YwdDw%v}X)SE?9;9e5N;^uYA#~U++*Qi=qx)(~>rx__`ufhNkHD
zC@ivHew{^jhwdxR9#xFa)+ctfG9iC2{0jfOiT|}eq^n#!g3Fv`n3LDl4wYQ-k``_{
zn~Au8JvMLStZ3ua(H3)b6`ZK^Wa#-;kcBoNny^@h3D>dcgqGyG_%*vu9<TcVc~8q;
z1w(^<z1x04Od5ReYYf$&LW5haj=GIdgVk84jyEv9W#rw_3<Z!}AbXA;YR8)TNF-wx
z*!6Pth(|{r#eH4lp#0Lj3GFmpFTdc8jvMk$(&CD*jbOlZf1}*G1>%U(4N|nx;=7YT
zuZkuuy;~#m%df>`U6h}%t1fBL@g1GhlT4jMpA7ODuB^*6k&~B4r!W1~#dYVU)Aq8m
zWlqILU2I23V;9&Z*4?z<$d&h~iKs<fb-x%d9$Fpo=mnGepN%g+f(5Z^hAw}KXQAEh
zCKt&3@yZZs%W2(7HAU~uSe&epYt|2I<h>cJk=NIcdq>}&r3>H-4MU>i=Z}o<(Pi7#
z%TZTF<Kq#@mAl2bYusX2V_n=m1lnN~bOpDbtbGChal@Qw$}(M?=l@`K%`VNgsD5R>
zF&e!%+TVuI?$;ah?@(KQxt$Y9<oW3C85(X{h+e9PE??B0P0<uh)h*Go2c}3}6VI^=
z{IUV(MHTLeS@1S`dCt(r{DJ&`SN<36KHBbNCx&eCW=Z~V9vUa=#-N983@mLy{>p@Q
zw$`Fe{f0ZgAn%85!dkRpyzE2Es`b;?7F1*2x4ACCMBV7O2+7?1b-G@1L~q3l4v)5p
zd+%-Oy3u%DqG`{(-4}7A5$zU_PD*?-eZd+P`7=iXxuQ$Y(y?gjFL9XOOV85un(zE>
zA>Ti&sq?$NJ$CCapF4JuZc&t>@dt-KGiv;vch3FjaGvFL2<UDlsriNJbCOza>=tT%
zYx<D5uUfse+Z^s@C^YLY(PndcMjO~b>!t%AcR0}Qat15yi6I~O7M$ai=c5Ow$8W2m
z*ShJoRdV|iZKXS~^mZrS^h?pyW$_P(>bj`PnxZ?W>qIs6O1G912Sq>WSibhvR|hf4
zcJ&PhWA^IH=GE1=hfUG{yZZi1SKo^#Mt=3xDe|eSuU`6QuD&h*KfC(cF`MuF+^@cN
zF^S?H|E;TUhpxVU?*D)6-49$G*LmpuWe2MpgB5IJ8z(eb$0Q*MMk^WH*j^kYA$gHj
z(#Bd_E0<WvTEr5sq^-2b*g+BzYnwJSSvxePDMjmqxU^lzIORG-rYUVmyh%wzS}Nm|
zrnI3cZD=o5xDB_V$$g%g-@t<8Bsab7r}up?AEEC)GiUytGjnFnnc2Z=Z?eb#$DMs;
zf$y-|U9?A8;(x^HH%(RiU*q(fwokv-)y~^oapV0Lf8yy^E@J*qo_=*Fk<;%r|DQko
zT21%edNR1&=~vFhH|sb#UBCY6H@WsK`{Pc(-!W&mvU{(yj&nKvp4Bmzo_=Mh)A;)G
zx%0(GwQRoaO6n=uyL?L4RM~BRJtZ5vIGY(SK6=qQE7M?-v$B2Bm3>y0Ih#wn{8{<n
z%31mTulV<^oRwu`<YMH<pO$yHie$Afb6PeFz=(Tw<K?u>F@G}T+9c=Y&;k3rynO1E
z^RhPe{vGFK$>f(FyPyrhmK}|aPggx%6?pTlzq$WY*BXD9bMac&uHQD+%cbGj!0#Vw
z)tr~h$C6s@val{-<+}FGR=d}_a{G*qF-KR$%tY}W>mIDCdhGMYL-9%-P-kA}nQf6O
z*UkHltIirn;>H_8(vS66x%_wJ{EwUc@Y>lQUORj9y2ZTyd!5-|ud|S@)+daEUgIsY
z-2Or1p>$R4-nYNEN_M*)Rl8(`?!Mc&IrLWJ1Ba{bGuFqAaPR*8#-ruN&2k}cOq{xS
zkIR2c!g=$x16d#RLfpB|ywo+@FLdsFXunaKjxR``!8QAhlUj*6^<ww=2VEP!FR^rq
z8;g#!#+7d4WVzeOE8n-v_0}i$OOxPiv&-$;eC#hyJ?j4*|Eo{mZan5J$=SKj%KG%W
zNb`fn@tGf=KvwoEju~z1U*Wo`;dyD~=x3`7Ub~(Q^J+f#?AdkB(ra(oFU9-9nPh#{
ztH#xFY1BUN+Ns^K(X%I)jO(5CInqG-K(Ff$PBu24d|EpE;_p1Y$+$XX6oiaJ-iKV9
z9x|@nA=~ijiq2j8B1Zce*ERK3-*Yt^1s7#r(s+}mupX+@tuFUT*J+9S4fB$6vNdG(
z`le3{vW#QilP@>=rMLRM7yfW`)BB7!$^6ehbnh={FP!vcT@{k+Q(ca>C*FA0FC8zk
zth4_~%aYapw<}y{UohT(VdsZ-y7n7yIBa~=k$L)7BXuTi+;q{n-|M=2r*v-0@S9zk
zCyhNbX8f$-IooC2mo#p5U3|vaY$ba3A>)qo-LuB;ow4E<9+KiZ|M3$~8^3$zf-&g`
zJ^P^t6Ya*M=Z)t`(P(_hkukPPf2eE5ctt**KjW1SQ|UEIH{W8o%VjMx5=-NIfGN(&
zB8&|etM(a>NSBS?1o&%tx;44`9_fY*3{^F@`M=oS-tPa(7o<<fxZ$GlwbRmIls+=&
zJFb1r7|02I^ZBnl?|l2U&UaidjcTa|+Rr`z6{ASfoHKr2`aCbXzS1rYX1(8XUAeJ4
z{_^lSqvY^8<KzYByRLm+b}^}3PD`^_KYd>R(_1__R=!D}TjteQ8>MSf(*CXSXHMzf
z(C!00(B9yUG|CMf<7#Jh&c_;SrTe`yWPJ9FocznresJ;y<C+WYcW-E~l@+b6I$`|&
znRwOR4?fs@x7<uQZzV6f@bQ!9%n7$-q<`5snUP9)#(1O5q5fi5qwzI|>zZez@AyL1
z)5ag1aUGTe?v=P}N6t=J<1goDBs_oO@UNNS7tHXFP8>EKP5#*NvUh(bC;8s@xZayE
zuAb4Jet*_|l&9K_QdfDS@jk60*30cEZLD&G=M8d$r%yuX_l(-JC)$lacO0%t82z%n
z5>y?odfCXQHR^p{`cky2l{v`&S6erK-k_iJt<SmoS-J|Oi#1u5aA_Bkb))EwS+}mP
zux`ryoc07<scCP_JZ(HMW85S+5F(OC%^9OehWu)-)IsLWwVTY#uSexB#|7g-ukr4<
z-dua}OvrevwjAYVhO2y?vGJ_&lB~0NYt3j$x{e#qobe`%cgww(TZ}((q?=`$0;>v?
z2KRCMK3n6fG7GsuCwU-uZFI(m^)%=-@A<60$)@Yey|;BAYkumZ&woJgpndan-1yT|
zy|R!OoN?nuuk3%Wj4^ylmOUulfS)m%TxVsZ^!Xo`ZF{HlZ8^sN^s*kQSLMWWgX?^i
z-+1y&ukk%cMvjvQ;;tVW-#C5NcrmBfS#sTrGEzE5jh9c!?tE9fQ7E4ehm5y4kK{<=
zrnvE!PU#i?)Ty-d=ECP)uYB3~hSPa-&K;j}{lNNXT-|H@wyft(<;KBKyYv^GuexPt
zr2QFV*5N8QvnOs$opwH!ql2IRj<M5~akgIflt#{XU+elS<5}kgV_&cFTe5<EAM~~x
zf0--G`%bIZ_(vmce7rUE?Y>6iHKSKnrc73*wRcQDbxH5zzn<!KHQw=l=ew>lDto(z
zt8UrvHwtzbv7}KL*SSmY$OYpK$!7T|cRb_0Uy-wt22$>ykV@QHa+UF2M=v!^x#)bS
z93qamev*t_`SkN~=kDuV8=jW_-5Kdfb-pLZb-}MUW<QbBTV>pJ*7)7ilKXec{nTA@
zgVlN0^~NhXY2)*!<wnlNP*vi&Dr1xGOUw6J<+EH}xRdS1CRcftkv_woBg3V))aq@~
zeO-ce#xc1#|JrFO@V|CA-=1T<;o>bDBE}n}1geZmSz@>3+Mne}|Je(=xW948h(;sO
zYxK$*{EZHhJ8CI8<Tkj@-~FKR`7>u5Wq<9JkNe~{(4+B2<1rcE_~|N1-0S*byYaZ|
zyz_~i8=tNEgz*<S&fPgi$;Ga!ebUEr-lXw-)!jQky0by<rRo+LA4r;K+I(Hz^{%Au
z#bzJ-mDXqOjV9L_@6OceZ0?utny;PC7<YSR4Kr27A)PSS*rWM#h1K(!t6k%A80!c=
zt}{L=)&IH2yb0Gg8;x&Ehg6l(mDBsI>%B(ej1<B8-p`zCG=3$g*Z8FDh@Z>R{JiR%
z{O4S!b8xP^OaFgxogRGoGxFbhv-(<Z4qtB#cj@pe&EZ#?!>_c4=j!lv=KZ2|=J0h7
z8b5k8G%VfI?Q*#;IY0fVE53E#PN%2vQRmxkta?^X^v3+p?T~fpHJ*@lI@T+F!S@({
z_n0eWR-rP#oOR20H2R!!luAzi<tgo-lV1I|Ut_wt-AcDkisa&F8Vyf5E#rCVEtm8&
zr_6O)ncyztvGWO;<|>`{I^(yU+F}0cDLL^-)%W(0eLG+wM{fsAo$CFTnO3g1*BPI5
znl}x;C5az9YXmM@b+dVsT)X00WbdxMXxv_I>?q$y9d52%@49o%wZ{A7dW~(~E0bo8
z^w1f<;gn{K)A+knp|46seTSr#idr+@m9aKro$)cJ-plymDcN6jRz^ItF0`&$E9P|k
z<tKLfpLwsjgtK<~@19z|kM*lgyBF}gr*ttdIn5T;d#xU0t4n(9lz9nu!5M0-Hy+aQ
z*3l;$dvdwM{mZ8`Bflu8XKTFNH7b^U^6=T`$?DIa(yTVu?-l38_seRYKc(GIpD}Cd
zeAz4388@WOs{y(6HEV32eR7b*e=axJBy~FHym6y*n_O7jDfNofh$Uy2&lfJ~=GPO3
zR9Nyg2Hi0(a{e#_y_3*v{IVS5*SbQ@MqiHHLVZO#4z<qJvw*Ygx<+Hb8UM_un@{Ro
zWT6wMoqKZnWU(KX295D1sgRhH++LG?!1&rJy?gUYPR6;hz-TaY&iM75vxd*PQSaye
zk5j#WBIEy19z6JvQPgYPP+pbzUZW9?8`qXgz57VKs$FjmH%qI>_2^Sl+m&1=TXa0`
zI$?Yu?Mj(7`1f=<zh&rhejrtl^VS=Tr;M}4ze<(<q_IPc%VP-VWwNB4)H-r57;W13
zFE^X#<%*d~-}Rxso%`fcG5!^q*AqF;+MGWz9@hrphtB98_9KTD-Ptoqr>8)wu<=jU
zKJWTNnd8a0af3VtV4b+W?UWt2#oI3FKY7~h<dyrL`dRmyzsivwY2(?`&O3AZ<Pg)l
zoqw7mz1zlTPV21yEa!sr)~n<axL42o7meSPyJ)&18O_?)axThgOis-XDM{ndSvmiC
zjaPHZ<wUUKW#c0`u9-%oGA?)IWs-^0F0bb3*K#t(AGf-avXb95C;O^w{61M%IV+zv
z{>hwubMHgHAW7wN_i<@d-O?Cw?R@Ydy%j0fR_2&W9aC<OxpvqZ^Z7HH&+pI;dvM3V
zC*<=z`gx0dex~O^3I9^6pj}qsPMp?bKTpRuYaZllZ-Wt+kq_lM7o}a&GAz&b7{7J;
zVvjMEb5_b$&wBFYjJ8OUa@lrXuH$82%;@P=ru@}2&Qh(rzTwdMydYQR_ek_a&IKL+
zvTSKf`kXx4@wD;tvMav1*J!w4?7pCDZ?wpU%lJ3wg}yu$Atzg@-n2YrMT`&U?2vKM
z^D?CUj26ZZ9W(Oz$urLTb3P$w^!Lc1=VZ6}2dQA^<T|F`nKAy+kv4|qs%?M9`1Wa6
zS}!j=&P~?7X{2=jk)*v&&((U#ATx_-^>c%+c9Sll=%TDrMUL*c$KtvU@_^Jcav5)Y
z<J4K>c|*>zt-U=7<3*|1j8{I`Ydq;ZYy6(`tm`f_!3)k_<0icj>ukOF|EhSq%Kj;<
z_~jlSsp9RMCD~QH7SHQc@p^~$|5fq-F;)D<%U1Ed|COtF-5tI~6|Z~Eaut7<S;gzQ
z`2SZ`yyn5GD*hk-{Z;&q|0-4dd8>-|{AXA3|1;;JwEkAEP?s;{Uuc!9TiNMy&pS6>
zYj$QzmtI19BXi`bC~4}Qt=hzO<u@O9nRn0sAy+OU-WWH2vDb*pbD8I=_LJb(KNyl(
z&F5MTL+1u<66CDA%ece7i~bjnTmAYu#(&SfXw00xnAHfJ)kdJzX8cf&^R^sqcO3{B
zZ%CUhM`<qIc0mU<Nz>GvZSOkcu(l^<*e-k6`E{$CvC`op&Dgg{cbg{4Ze8k-&z_O%
zdgH&fo|Tn;@`?*xjVbAfI@o)6)kilNR~?q-xP<r1f*+SDPbU|ujGmmhPWM<y{(n$@
z59lLj6CdoA>7SCT!m1mjAu7EQ&a$En&awjSN`9=@%F=1aMPr9FXrux8(KGt+fw9nP
zUEa&puU@LlUH88*?6%UUTlE<Djx?mJj9<;k{IQIe=8?J8M%S5(=T4FV=X7nhoz*6$
z-}#>FtM<u!e<-JSy%PA5aX}}R)&JeodV&21t-6~3Blp6`%!%bHWu4LSL9<QPcIy0=
zcIWoO7o6|9(SBIqJM!R_xn9N(bLDbFrjhH`59(_D$ZQ=;1MWRmi_dDLYU9%NHoJ9c
z-^Y<XMlbVzl&cy2)Cc84SQl<A=3e|;qqoI%R@$8H#$T_SxyQKGY;b<|%=!PT_tK>7
zr88P6|2OZY@@SE{m!6f9`Y*Sa-us`rm%f_4mtJ5mm2CM)PUcNUOZn}dy5=f*iq|70
z{`lDqhxD=I<A<Bu^~v66WY}@J8&lqX?p2MSHZqRhxO7uqlak&B<0|uxqS2^r_#C6y
zyjf?q$n^^rIr6|?dE(s8ozjkZ_MeTb(njBzi`U+=!E@qP^8w?1C-=$SId9dMjQnzA
z{e?o~HOIx9-(%kPYtbY1H|5Ey;d2Ydh}?<T>^0t7ZVXBr<4vv|zwt}^zvJI^=f+#A
z%KY+xwCm~S{U`VDG_Fn04LfhU_A$A^bm06mU)gCCU2t7n+bp%aS4Y1wb8hD?jT_GK
zlRA0JN$HPYio32U{1+oHN4lJ=YSTOSKe*+AI~$u%dW@Et+YR>xx7@?}=*#+?YO`C`
z|EEtZ`SE1F^p!bFuHAXknJZt;IeP5)k%Q3#`X!fL2jhn#4JS6AIMmeSXg=C>=vcVn
zz{8Kl8xF)Di#0e%dE(H)qk$&Jmf(SVgN}!r8aEx#AzQ--;|KRP9Evv`JL+gU+7#cb
z1CJez%Qtv-?_Ei^IUYZu)7}@@e4pd~;PwL>Z})FIux<BN$Dzo<<GY)WtR(d{v}~1O
z_ca`LoM?JnRzl`$eQD=FbNq1Sfrg{9f=x#o4;($=h#rhL9o={!e(e7E;f=TJ0=Dki
zwQIAZIVS7X5IA<C$y%`!f#!#!O^0g3)?(I-UfCL!%O)R;$B#EX+#GLs;9#`5A$aT&
z$NhT`Y~H)Iw$@y8S=#RVcR6Cm8{|tyO-CET+m6PY;*af?EOo?>S=o7{>F6eh{CBIv
z%u91gn&<w8qmA*1uCRaG=9*3Rhg<Cr6%KP-n@;RLaw2{_zG-!MtC`i?jvjJ^jznuE
z*Y7|2$kAhu9+e?x*684S8{(2Fm9^xZJxU72%6@wjw!QEE&HlZPrW1Q(2M;ZmcI^1E
z=&?rK<ffzM*4s<6=VNDmLsn@>CP*Gwt02qCE}Tk7v?(5sHduR2RuMN_Yi<=`<?9r+
zWalG+_;JV1eFt>qE3HzrOFe4`-FocE5!v%rcBYz!Ls4Dzz`^4u8bpm{)$FC(`K#H!
zd2i5h)XeR`!Nvx2Z{59XZ}2`DY8@+0jq;&^on5mgs~}~yDi0hwc`&+3v)B4~>&nLp
zhaN0P8;+Z^-L=`jeb0Tnma{|;0omQ<D0sNx_}aB~oQTV=Y_EgPX0skk(PKv&-Ev@P
zo}85V>hY(0)86-OSzA=Hy|U%z5n`53gSq$Uff_JNS&J&GaO{JxITn+(Io@!hIU2Wi
zKRd%^Gn*T<Jjj^K9s#m4dxE}g_t}X~Jkk`~>)0F&-dDTj{@^x8V?*5DS89)j8(JLq
z?!Mo>)op&;&%MdBannZ6#@pPb_ceswzJqaV_${}+%YDm{c=OSQs>TM%&89;V9z1?1
zQq^=@<?ZfU8r`?-+2p=OzV=tuc(nP>JKeV&ZfH5w5YtM)%=vAht$s6`v>IBjR_v{}
z_hrqly;Ak;IlT6`ip7s_bjW|3R^^z#$t(sbsH5S7QZNnjBAR1I8a9NFAKOsVaN?2p
zvDk(ahYp-*IDT@|hJ(kVEk~jo%&#Llq75e-qPju>|NVO%wYzJBdRXqMsoj0=@)0k!
z#jPugGjq|bM(nlKdazjnUF+95=;i3HJu0Qv6yD@GXzo2(<!$ax2etBFu3DGNO!g7;
z2(oK-Ylo4;=Y$*#QZl*&YDFbAzU+h?cZaO%UyqQOT?5-$oOQ_9gAQe#LUbD06y3MX
z9emY-noekiwsLH1w(D`bE1>M%<9Dpy3e6ZZr(~1Y)Z@AuY^0QP*vyn&2V1hYJ8-P|
zXn41#lbHwa+g$5kDFhj6j$!{_b2`z?x_|Wv=tSh$@wj`{);xSLY#u@~uT>{t^WfTc
zG_3hxR_5EKR+R(s#F~XJ$L1zp_7F73SjSz{QFDc@z|Q%mmD8f^yHb2d<?FFh1iD`K
z(si;Ec8#*;aFB}Q@bP0u0*?E4@7%p--){4il2x_Jr1oCCy!+|ia$tFPymig^3Uh|$
zz?E`dRT6u*?W(m#$u-NNM*>a3gU6*RSzcee2(xxVN=Z^#H7EQ2rF(@G^w#^dzO@fy
zD+9HnY&d>M&ns3vTDeV&rolcP$%V&qLce69b+*u&dezmDUd)&m0rp8}lN^@T>0Qp}
ze5!C9i!~fwH4m;yj>RLg7sx8^s@*Mhg;e`Tk7-8POSd=ATotpXUVY9rk7K*!b>(Cq
z3m$B=R(<7kZ>PBAWG73$Pfspv-s*GKN}*HG<j9(RR<ckokRGtFrjE+!m2>T$-JxB6
zX1{!>u_3axwR`s*sI0v0&I22*d0(=E%VofZEmwydZ@<h%kiDIk6w~Srvy)x+__DX!
zJ}*ik$`+Z$Dw>5VR;=tDdQBTY=5IP8+xPGWISs_kZ?b0{4$B`aw5WaCLXJbnqRmH+
za%~{P{M%(`k%~~t-8=#~U6WwBiqXwjKF@POzH)}RG)wGq)%?)aG>=nqU$#rmQ|8X+
z4=xvtrnHX>`JQ~VVP!k*%P?78Ijb!foLN6;jbY`0bv<ZTG<ua>u{?8oZ{`|uInnE$
zv$e8sI&rUF6&#EPr5>{`#$|>_8_1ijdv-st?Y^K~k_7hbtqs=h*==uhRz=uwG%RO$
zy;=;MXlM=}lPbeHcW8O+-n?s@<KSUwjo4FaCitz>zuh*_gqvjv%T>~etP3oALv(es
zFPE+S&K_&-&U%EbIy;!fnpMNFuggh;lZiBpwlu|$9E|B|yzl;Pa#3sV!)s1cGQOtv
z-rAs4c*h%l@lcahe5-eVF1WR^rscCm8igmM%ypkzsr|NW(`5y=-M4jjaQVvG-jwB~
z+dG!MHfGMnW%stO9I^+mRQT2jeNAn)Qdx1~YhEr;tFJyQ$a-zv<ClV#4^sA9<f?Dg
zg4pOa^^$$HV;8cP0u45^RMuXxEMKxM*Nxd{rsaA`TF==Fw-1u6(#&cXv1wAi_EiEO
z?O9y1Yv=$;W0m`!<yH&%EG7AvoXBNrJwW!#ZfmwithV45t0`_C^UDQiAA)9!%RF?K
zTQ(aVa=9Sm9g&0Kt<q3jK4GoR8GB{dWN`Rcc6-chN9k6|Ixa8Wo-*q^ZV$4nTQg&q
zCorR|1KDaOWo52iSMA-pdG~Iq1a|K+H_D#DZpl8!)|$=1%`~ER`44C#z&giD4QgKC
zHp@kPjdXd~yM{fr=KAhEyUor4M=W|!+5l#5+NT6NUC^v3?dXKOfqm=NyWFMH_IcM&
zZ2C9~^$jHQlk@m}j+|Ck&YSadb35cUCIvFA*c>A-D8VApBfmP%tHU<0ceOiDd~toQ
zytYn4zx)Q|w^n|wan5QTspBH@o08wlO_z}2)AGA^I$c&ue&xjrj!%k?_v!K;l3CX3
zhx@OTPh0bjDYbdql^uDdl59eLr)8Sk_4O)S*Sl+;GJH=seNX24+OKeSUHPR~zAQ<%
z<vBF1zOuzF>wkf?+uN_${)BVKleteB&SsKs$&*(PN>X_qSKlA*_#0K`o0azX%3Q5&
z3`v@Km%Mgb(@H));oQ1D|0!eh`hq8Ox2`X2zhc{Z_vtIw7jFLI`hv}0UZ21DmG!R8
zUs|8LS(a5HlXUBJSIX<!tYsDW<eBKFob9>JU%1j-{jGWTUHQc?zp_4ed)|I)$h~=G
zGRe54ua|jju%>g%bOD|2gI1y~dCo6bpJe-kl3rh9lgyXbUTb=DJvT3}=Vo0`*-oeb
zvMcKRV;Q`C&HC5KvO_Yfkj!`bD$4D0^L1{O0$a7|+w&qiXnR&}`0^fDlSucUL0#wd
z@=8tJF<0ijUGvsnXJaJiGAr%N(|vbArk}rB{-T(C)*qkzx@2Ah*U0Obb%4zCDW~Ma
zlUiQwxyNO-@@2JLQb@TqdCol=OQD(Zy?Jr~EJqHvOdgbZwOuQD%Dmd0kIEFezPwub
zUxw*%)go!eCC#qoH2bVH5|_wtw~Tko!Kuf9uFsRYKJCU{N#v46=juMG<vk+l0+P<$
zmNo0`d?<TGx8-Tx%}e@%>*Uo<%=ZbMFZ(5VSLED(nXHq7t(0jzvH?k%e*Nq1FV2Iq
z&{gH?lT|hM>8MPbx?Wx#^?J)bxpva6d3r4L$#exb$g9g<Z@Nd<ERp3+$#jAL&FM6c
z3a^lDl<7Y9dfT{leUbBzE|W)F^UV4!DARjxlvhH&-umkFO_!No@>rMOCDRYc^grwJ
zCuI7-n}4?D$8`JG$-XJmzgdoxtmDh9yUcyW`SrC0CH2aVwZpdNHLe}BJ@3fcL9%yf
z-P$3`od0=weV;B<D#&f^SM1hG_z9;h%&M^^cddGOP}92Q^^RITKPIi_<+N_g+oYPK
zEVGYm=Pp^9<pX<jp0iqG`@r6wr~A8G>ig-N<uz#5vR3Nh6Lvi;JG@yV-@8&H%XE5d
z*2%Q)x67Z2VLk1-SgHeaitTyM`|QftFX=laec&DPnm5+<l4H|Ym$Nqew&qy}Tz0K_
zuVj?gX;U&k&0O=1Yb*8SN;yW?&TZS}s$g@UEOkj;BlFrL^~c(MVms#vd8+?1JM|W`
z&W*_Q1(GS7blc=d>ws1n7P#fdoO_)0Ygce{-l4UFWY>F6ht*`AH)`_qyqcXSZdu-(
zEH70quhx^#x()5lQ!=4kG*B;>$l!uE$bTE;b>^gbQqSA%#``6qS?_L_yw$SRKQ|GR
zbmldST$fy0KObNUD}6-Lk4XA2Gv8JF;R7=F<^673o*skUl0GSw|9|E&m@n5G1DoWJ
zSN;^oV5O$L?Wa2i!;&_6$IpHY_Q~`qIT(MIV{lrgoxby@KL!h=d<*XWKX(l3wb+PM
zM4zYJFFB?k(S0}j3UGT~Ob2D}yi!MMU6z)4wN?G>$KaeyKVH3Z4C-~7BVV?6i^H*>
zI%m~>xj%cq+>)oOy1bi8#WSR_9Cqe)&{jR<mMc?-TV`D+^Nwx(@yA=6q#2hqKk0bu
zmvq%N@+<Ro$mKuBTToWPJT5oqNxQ)OWF2pllD<vS|1`&&*7L5bq%PXF(gt}-k9)5F
zv^?^+E?@7h+Rg%*wnnB+$+Uv`qr*ZH49GCEu8~;lmZ%IX*zRz=q^ZpMN9upGDY9A7
zYTHcLCF#b0LOQ969mA3?d9Pd#>-?O%v_fmv8EwzgY>_Kf|N7i7$|$)!bj(WHfRF9d
zYx-^Lb9J~wuA@_Hh8N4=A{jm}!{yL1+d2<lxjuJip3l5~)%>cI@gAxCk~;o!=a#MO
zJ<i0X?HjiwkIS?pGOfJb)0~z%_K018npfSDMlYbxYnturM{@3M&%OUi<AJA~&RY9?
ztLa8`UOyq7mdC85Yujn%ug+43Ey=I}8Ma>s$d4Xl1#gsJzr2Ed`FL2_51ciUt;+|%
zwmj!!8ruy6U!JZ{K&G$WC9l)g8JcBmHdD8l2emW-0#Y!#oEAwpAnDdEFUM?eY}NLL
z^Tq7t`10PDy%=dA>T-r;`jOr8YGqxHtYU4uJT?CCm0y<G%L(z|7o~|{ZqKx&tKajp
zFUKtz6$||M<wRu_e3Gu<ee$OPR$m{;_R!wly1p$(n(UYE5jA;6Os^Z(wj}S(+kKhT
zdj1XS_RI1{<iqo;m$!0lvu%CM_~GT+fZOsOmHBR6Q|s!*WrfVQK-z^dsTiNI&Vinq
z_A8|CK>7oG(joB7aw}gh->r*MJ!oZB96p)O@e3<`COWK6hPl@ai^;I+HNz4ztUha)
z9^2hAtWAc!Q@2l!rPu3g(6pnHcHkkY_oU8~wAD4{+Dd1Kta)~Shvu8Md#67juab9J
z^UY3sa`{5r*}lA`^2Ikk@62;<=i`n%qv?v}B)Sg1YoyMSzNd$*^)1o$eKL24c>(_=
zQfix3_x-q}^*kzn!bW`Ex})zhg)jTQE^APxOa0PMx2$Ph#;^Qr%hL0sTiWO`d1d=O
zay=$_>(>3j%3jIa*Vr&$o^jPmE*S^x&$W5Z2Uc?IE4j-#X7!P@%DnZjj92~p=l#{}
zdF#G6Df8ApZux?I)*r32=VVywv+{~@9dP+NJK*fO^a$1Yl@?0f_IuW`r<3b2uM8WI
zVe52&`~>t@hUuR#Y}Dh&T!vImtNRy9r3SzB0Nk7>-#fkhvioG79yw{+%h6>I$*}6I
zVOl4S$uRvBe(#shS|{GyZup**N?I$$ZFzpPPArm93zAO%5MNN!nRT>tw<IyQN&7|$
zKDT;VB{IyNHB6UPDZ}&+^!=n|)k`}4Gka^7C9B|Qm2vuK^={Yokap~GJ-e2lc<hMW
z`V!?CEz^ko>3Bo5JTAAP9Oe3WgQNW66DJ(yI`H^0Yk+<ZH$2?jc%bR%;bW4_{Cx1?
zhmSX$w4>;;L)Ju$Jbv(~KAA*XJ6f5O-t4l+%8EG35Ai%y`O#zXhH~j;mS<xQ9(u%@
zX+z||;p5ut{nP%uRTAnc&@S6*`K*6V(Eib~)}J@auO24$Ps<I4V^#)SF9URX$vKBh
ze&0^4)sX%~vgW0+rqiGI$gigVN$Dyijm}?pXZ>lD`OQbH&-%Zcj~+35{pxQr94*gU
z>vx5Wv)8X$KI{DKpV&<~j^EZ3C_nZ%ttYeRH~B|~BUWwAPn-4j{Nz$))%<S!NRH!A
zbb<WX^LtQY`?HSvJLz2d_zy^wHLfY^vyMIWQK!SLANaB7p(UKXem=uGezZKKnqOYO
z7Wr&XBOe{VDf831#Qw3z{jv<OKkK+Jeah*0;Z{4<%D5+GQ1)^|vRo}kU9MctEid=u
z@>%Dn<)T0FSDlWh<lJZf=s5j-7VUIDm~}dCu@f;))BO&g?NOzFZ|@P-5KW^$Uyxt@
zY>(A++Fxq_*!!Pe*Jf`=y=;f}3F~%TE5CO6>MGm&sC;w`{m|*i=m&o6<z_EaM^zh!
zqu@&U^Oo|tOMZ2JdMxQOv*#DM%5aoQI{U|-pB>v~56^Y{^N;M|s<Eo%G|pav#<_Yc
z!~D@PPD!t)WnCZL&o$P1U}UfSCkx7PT;X_^#&UftAI<o7`52JjTKU!VTg8<8+SA`B
zpGV|++MZr6haA)LYo|XVpY8idI{hgfFU!(<L>g!R7_v~!Gq+@#-WSsGpV9<!;OV^|
zjbD<`zQ3dKmvp>r<X*;qOG5iTjE-NB*uKxAvECQ5?~iEw7K!b98XDgsv3-w1<64RB
z`x6>#d)>arpz$wCY~N4NxLsoV{(;6xiS7FY8b2qoeIG#M&q{3f>udZ665D<C8h=gG
z%g*#(*$$1TB)0q3HU4{@UdBtcVvb)F?LKfF?~;79`?NJKl-Ta0*7zog?LKFX@08f?
z57xL=W4G1cr1AST{o7<&EboZKc0a9-e@bGz?^WYoiS52sjXx)`-8ZW7S0%RlH#PpI
z#CCtB#^2ZJrDD+gWE$)JBD*h9W2x?!`wca&kl5}Y)Od@;cK@Ho`z5yf_cT5#vEBEk
z@dq`&ZDo5qHT@kc+xzPh+kIl1en4WopG)IWiS2$YjlU`Jh#V~152f)xNNo2dY5aYO
z$E&TrA&sw=ec$dE()g_s+kH72-zKr$Z=>-xiS7OwjRO+f{Vy7aCARxlG&b)AZL|7J
zG(IEar}xP+B!Bhz{}qYt{u3RalDJw<cJ}xIiS51=9sgyC?LHHYUz6DG8`1cmB)0oM
zH2yb<?S2o9*GoNP_jhRQme}s!(AXof-DjckW{Km{aZn`rsq3rveC+-T9e+^bP8qM~
zY90TG!~uzmiJK+1`z<tmLgInCmGMc5?fwcKpVIL=t-cD42PC%pDK!47#CE@f#{a14
zr9RaD1&v*Dfo1m>Xj~?--7lc=Hi_+azQ+2enC<qw#;0`ppw-^ixKrYf$@b{ESGVui
zB>oMF_57morzGx^Sg!>%eo^8VB$jM9;~|NEPh#2a%=ilu+wE?h|JNmU&?eUSTN1mo
z;(wC3IxGH>#PwP6)spdT5^MWer+=%&b{kpajS}nj=wfvJHcM=`i*@{c65H)rjSos}
zw^=og>v-8;?dcN|+ig-EpOn~ccWRuHI4av~ryr2mZddB~Ka$vP3u^ogiS4$U#?ul{
z%lg{;|Mw-<KV@piS4%;R$o%d2JrZmF*s)LIY1zN*c%Q`ea+0*;1|5H3B|a%};NVL6
zB_#d@iS6=DN*tEh-kx8V_ybwvKP~ZztoTKV+a$J^H!88?&`Nwk$A?$qzti!DSK>t-
z-?$RX*ySI?A(@f&W30Ne(tXUn`mhoi=3confwA0kYme6}$(0|ul3EGmlVM)HtPC>D
zE4J+TYDd0gl->TmM#}F^65H)(jo&4)-FDV^i^O)jS>yc@+ihNr;}YBLU5%3x+ihKq
zQxe;4T8#%Jw%f59e@$Y$4Xg2YCAQnI8vmQbb~{z$H%gY-ZBva`{zj7h<mRepk@P_^
z>#<w;wDP=QR+{C<vh8mlWq&WmPG^2qW;rF#{oZOn7`66Eu&f8M^zqWH(0(o}Ymi@_
zs3g4fDQ!lqd8CY?mpm104_|rIogwz)ZG@M7z?X5$kJ=M!2CjN4Gix}{3EESdU)La5
z^Zccmk38DA@>w41UGu%E)n9SD>=Th|9*|u1fE?q@$K&h~_LFpL3&|d?&kSlQWyf|g
zWe@X9Ioa{01!a#}Q&RTeONwfF#7bG&gY3ex<I9$oJ#x9Y>;adQSM~@B%pSD*8xm`Z
z%*@2KnPv{Ob8I=Vvuk;PU-HTfF3l)&@S0pQhh36I*3gywF=IP(%;2&)V~$zQ7Bjje
zPnL&fKj~`ahB<0YR@e^>U*^j$=FV(C;&{1-)Ym@LZRh>!XOGRLt{%jJw0fZZ6u$MS
z<?;i_5}Gws)&Tpv3HB8B;UF2fjW63+Uq!Q5ezzRxC(0{szw@@$4{I+!7QOO}_o@W)
zz_&dMefXOi^L4%hQ(;$ix)1SCaJf8z9xvZyk6HClb9vK=;|I%cwUVqnF@MR_QjuKl
znP_YBJFLmGzD>1i$s0ZP)8JW8GFww_+-Oa@ant1=lV9^}uVfXEGOv2PR|aQ&&qgAB
zI9ZVIwAfEyv$)%q2k_-Hd%XRn20OM!OLp4>NFYP(+E_AJ9>TWwqLr_ytvvQyzVVKY
zm3E4i2hHuA)J)ELj63V$<g8h2y5r8QZv;tlYfrxH;%>debH{Qytt`)+VkKO)!@lm9
zWMB8Y5t1XX_XX<ZG4>YP`>lRKVfEMPtj(~;FR%3S04cqduX>o@4&cku=4bP3yOP9y
z;M^W)ezjmtg>dPzb;zn}MF*IfWG`L^Ty7gye`CvvHr~F?`U01Pm;aupjHvzJ`damm
z{b~(!GZ!k?Tbg#&^Y0Sh`?}xOULJYrcXnjYUNdWJNcPNE(%irLJK{2;R4#*a<eu}r
z*o<AM-SIm9RlGtjEj2E|fb_Fy9FumNdRQ8a>PMtKt3Du?`s!PxJ)piru3OcBT(7EM
zkOrqZA@@Snf0Rpk^<SjJ(NsED)sGii-Y5-njXii0FW{|jvBtj-kKl9oFL<MLVCsA}
z;d6NFO-zqR@HzY!yzXsQx^nyo{s=#Gvo+pVV)>D`TXwy}atyC~mlZeRKflL{|6cm8
zbp1A$Ti&_B@*(^ee9dDG|7W~?qZNM~zqiSXua>@fo!>2Z7+=EI@S;7w!b<-=>C@8b
zu9gm6b9y|CFX5l#KjCia`_lA(fLki9*mbAn?z=35cUyMi1$kadr+fE3mM>OYKDWhk
z{Z`8>Yb?w0CG6W~4gU`Q+IB16Cp);#_n+}`pA|oiU&X)1KdrUK|H=-_LEI&MIy#>?
z?vOq%jsHUWZq!2Q16M!1$8r?6-fzXtIQ4)PhonzJ)4wNVd4===X#95Eh7EWDpRBXe
z70C@vP4AYz0JWpua{EEc)A%X;$ivp~d!;R}>3i_Q4OTqXX!(VR<s2Suvf}DTEPp?0
z`Pvc7Pad`W_%X}tk6T_Bx7>g`u?=6suj6;|uvA34em}r}I%&m^J!<&{yt>7Tk7C(l
zR=giS{y5`5X!&*gF8W)o;ivF|+-T6{E?~!LEB+i_b;gP-F^H#eTbnihAfCoS{8KFW
zkd^M8_&J=!=viz0U$tBQ03S(M@s=knH#}*%3m?I*4r};l@o#_0ihqP}{$(o;;FEX`
zU&h-%Y^D2S{6eP{*Zzv-NAa)mo{w0=m+)O5wc^7`%X^--Jclo1@iW%&UHII`taudn
zby@LK_?PJVRcm+&?#AmsZVlgrdoY2Y#A*CKKJ{zXbp7b<w&H<bw;aQ}KVik!{D!5Y
z$MP-c#c;1R{49>2v*MhTWgecySMVG7Z+OGAR{DEzH(tQ{Pg>(6eU=^gCHz;s{?pd@
zPhjhFR^0ttmM>vRzZLJrg5S2{&A1a^!k_ycYy8z%h5PU{egv=oT`PSG`=7Vs3|{dW
zE4~XKz;EL43)cA81}wji4KG^p$MA;Vlm2AcSN=@Y<NDvwH)zFk_^)`~f3wm*AZq#u
zzN|XsJ~w_HU&C+XKjQZ>=Ot^pJiG?qj2l&1&SpHt@C1GszlB$S&Psn1zF(E~3gaXA
z1-y1hw&&Lz=8vY!l~1Y*<+96+3$PH2uo&G~f~8o79<0Dh^kOyEpbz~Rz#xXO4(l<D
z5sYFC<Jf|&*oF!0z)nnJ7j|P0rmzqDF^vN_h(kDxBRGl~9K&&(z)76KX`I1XoWprs
zz(rg_?GiT2A6=;TwRLy_7Ge<=qZ`fZeo0?ST!tR3z)JLDHP)aH{TRR?hOiFnF^mz6
zqIsV})+<ijg00ww3GBd5Okx*yV-KdV5Bo8V12~97IE*7WiWwZkah$+OoWg0G!C9Qc
zd0fCnTtd02W|cqc{e3O>d@Mk{&#%Lauo&G~f~8o79<0Dh^kOyEpb!0Mwj<?pkXXNu
zs_RjQ^%%woMlptQY{6D+!vuC<Cnm8AyRipT*oXa?#sM6}AsogL9K{Td;W$p<Bu?Qp
z&fqN0;XE$jA}*oa1hdK?^?3-h{ILKFu?UONjU`x$W#~bDjzZ^KiC(P68uXzb1E}A{
z)#*d1-x=1p9>W;HD4P8bk}giH&t~a#t=NVM?7&V;Vi$H}52mmW`!S6JIEX_yj3YRT
z863lLoWMz(!fBkrS)9XpT);(KLOt<oe&nJH^RWO6u?UONjU`x$WvJgX*7;XpC3>+M
zYtV;&)aOrh`XGj|4(m~$OVM-@jA9Jq*n+Lth6(JzPE2AKc4H5wun+q&jRQD{LpY2h
zIEon@!*QIzNu0uIoWWU~!+Bi5MO;F8WWp+cbYVUgU?CP^F}kq?OR)^~c^k9*u@b#l
zjWy^)KL${r%hCCSuny}nj1i1t4CB~>t=NVM?7&V;Vi$H}52mmW`!S6JIEX_yj3YRT
z863lLoWMz(!fBkrS)9XpT);(KLVfT<^EDUs`67+;u>keE<T|_vi_wiGSc>{wlBV}y
z1y-ULtFZ=s=*IvCF@$wkk73m3opiZTjA0yGuoc@dfgRY1N$kRI?7<ZFVLzsE00(gh
zhj9c)F@s|`juSYEQ#g$?IE!;Qj|;enOQ?_BXny6Q3-hr63$X}`(Tycoie>1*3amsg
zR$~qN(2oHOVhHs+`MTcq7{&-jF^2k_m!@yQR&2urc3>wau?xGg2UFOG{g}o99K<0U
z#t|IF436PAPT(X?;WW<REY9IPF5n_Ap*Hx<@<$iuV*wUo5f-BxORyBn(1R6NiC(P6
z8r0|8bbb67z#xXO4(l<D5sYFC<Jf}w&H`Od8z!&=J28n}*o{4y!anTBG!Eb(4&gA4
z;3#Hr499T-Cvgg=aRz5`4(D+J7jX&o5j(T|(S`cln-16aD5!;4gvIE_5-i0s^k4<*
z`xbP5UaZC%^r0UE7{n0PVLgU1f>DfN99ysz+c1G0*ojH(!fx!r6!u|1rf~oVaR`TT
z1V=H0V>pfzIEhm@jWallb2yI+xQI)rk5roFk1o`ANSNi1g;<2e=*AM%@1W>(W$3{Q
z)b~x8<&V`^gFf`5c|Ta@7bFg09oD11n?mOs!6?QsjxE@VZJ59g?8GE?VK??*3j44h
z(>Q>GIE2GEf}@zhF&xJUoWv=d#u=Q&Ih@A@T*M{RM`$(Qa?yqPsPECx@r77~#puQo
zEX6YPU<Fp97pqZTnPe_UUXfwy#{dQ~gmqYtVT@oDV;IL4Y{fQAU<Y<$61%V)doYE4
z*pF!(z(E|sVI09x%-|S~;{;CP6i(v|&f*--;{q<?66$+H%<@MU=3@aCVi6Xj8%wYh
z^*ii3Uk_GbC3>+MYtV;&3}6sLsP81v`PX9@BN)XP#<2xku?-X0ft{GdF6_o0Okp4P
zV;To=5QlIWM{pD~IELdmfs;6e(>Q~(IEVANfQz_<`pCRl{;2Oy(KsIqun>!|7~NQc
zrC5d@tiVe2Vm0c!S9G~P^kV>nsPALZbahydVT_=@qeaujFpe$Qifx#{4(!Avc40U6
zU<&)NAJaI1gE)l4ID(^?!7&`i37o_!oW>cP#W|eE1zf}>)Gym=KINhd^RWO6QQs${
z>5I{gC0L4O=)nrq_s!_^UaZC%^r0UE7{n0PVLgU1f>Dg2zN<!;+k&mwh6(JzPE2AK
zc4H5wun+q&jRQD{LpY2hIEon@!*QIzNu0uIoWWU~!+Bi5MO;FM++#M&A6=M_`W_t}
zUx-CmjBYH!QY=FcR$wK1u^Ma8hkn%e@aXb`7{WTN$1p}PiZP613$|h#Ca?oLF^OH+
zjXjvcKJ3Rd4&WdT;V_QiC}waB$8iEDaSEq#24`^&=WziSaS8P+QD*t03-hr63$X}`
z(Tycoie>1*3amsgR$~q7`-gOW{20I>hOiFnF^mz6VhrQhg00ww3GBd5Okx*yV-KdV
z5Bo8V12~97IE*7WiWwZkah$+OoWg0G!C9Qcd0fCnTtdgyls~#KAN4&-=JAh3Sd4Bg
z!BQ+k4_06$da)X7P~X2~mOlnCh#}N>GHJSc3}XbN7{fTWU@Nv^0z0r1lh}pb*n=tT
z!+uQT01o014&w-pVg|=>94BxRr*Il)a2Drq9v5&Cmr%a~sri_TF3iUQEW{!#MmLsV
zDVCuJE3gv1SdBHP@1HWu9|IV~5Y}NmhB1OsjA0yGuoc@dfgRY1N$kRI?7<ZFVLzsE
z00(ghhj9c)F@s|`juSYEQ#g$?IE!;Qj|;enOQ>IYHOn7en2!Zmh(%b8ZY;r4EJF`g
zU?qC78f(ypehgp`Ls*CP7{&-jF@|w$L49YJZg(3dumd|WiCx%@J($8i?8h_?;2;j+
zFpl6TW^fG0aRMiC3a4=fXK@baaRC=`3H7CtX8EHF^RWO6u?UM%-%X;^m!Q5ANaHf}
zU<Fp9zH>~|RbvhM(2x4A6HOPy5Y}NmhB1OsjA0yGuoc@dfgRY1N$kRI?7<ZFVLzsE
z00(ghhj9c)F@s|`juSYEQ#g$?IE!;Qj|;enOX#@H%HLdcVLs}+Wi<Z_u?UONjrwji
zO;?I#=)nrq_pNC<FIHm>`p}O73}OiDupYx0!6?QsjxE@VZJ59g?8GE?VK??*3j44h
z(>Q>GIE2GEf}@zhF&xJUoWv=d#u=Q&Ih@A@T*M{R7gcF_<f04nu>cFP2#e8;C0L4O
z=)nrCL@!oj4f@cJ0SsaY>#!cf7{MsUFpe$Qifx#{4(!Avc40U6U<&)NAJaI1gE)l4
zID(^?!7&`i37o_!oW>cP#W|eE1zf}>)EA4H<&Q4RM}1e6jxWR_EJin$U@4ZN2P?1=
zy;zMk=tDp1yQy^fK@4FX)?*kW7{wUIu?1VP4HMXbotVTf?8Y8UVITHm8V7I?hj182
za1=8*hT}MalQ@ObID@k|hx53Ai@1dP;v=*C(S`X~fQ49u#puQoEX6YPU<Fp97pt)b
zedxyk1~G(nSdU?hU=(8*#};hGHcVg#c488{up4_Yg?-qMX&k^o9KvB7!BNcM7>?rv
zPT~|!;|$K?9M0ncF5(h8ZlwIth51;3g;<2e=*AK(#WK`)$Lao6ftBdRYOFyY`Z0h(
z3}GGCV;CbC#Tdr11zWKV6WD>Bn8YsZ#vV*zANFG!2XGLFa2Q8$6f-!6<2ZqnIEB+V
zgR?k?^SFSExP*>3QU2({d@R61EW%=RV+odG8G5h+E76P9Sc5+FV*rB~!aA(SFh($n
zF^ppiwqhG5umd|WiCx%@J($8i?8h_?;2;j+Fpl6TW^fG0aRMiC3a4=fXK@baaRC=`
z3H61%X8n&Y%*O&O#3C$4H<n;2mZ1kLuoAskjWy^)KkB<B&GSEouny}nj1i1t4CB~>
zt=NVM?7&V;Vi$H}52mmW`!S6JIEX_yj3YRT863lLoWMz(!fBkrS)9XpT);(KLVb~;
zS^nt4d@R61EW%=RV+odG8Jh27(E6Xa61`ZBHRwY>1~7;rtiyT?V+5lZ!#K8JE4E<*
zJFpXz*oEELgDLF8eoW&44&o3F;|Pvo2FGw5CvXy{a2jWD7Uyst7jO}m(DCz>Ke{j<
z3$PH2uo&G~f~8o79<0Dh^kOyEpbz~Rz#xXO4(l<D5sYFC<Jf|&*oF!0z)nnJ7j|P0
zrmzqDF^vN_h(kDxBRGl~9K&&(z)76KX`I1XoWprsz(rg_$6F|WbYVUgU?CP^F}kq?
zOR)?+Sb>%3#cHfUANnzXK@4FX)?*kW7{wUIu?1VP4HMXbotVTf?8Y8UVITHm8V7I?
zhj182a1=8*hT}MalQ@ObID@k|hx53Ai@1dP!fvzvM;GQ}0TyBr7NZ+WuoTPCgB4hb
zUaZC%^r0UE7{n0PVLgU1f>DfN99ysz+c1G0*ojH(!fx!r6!u|1rf~oVaR`TT1V=H0
zV>pfzIEhm@jWallb2yI+xQI*Wa8v&1!h9^iLM*~!bYlsYVi|g{0xQvr)mVc*^kV>n
z7{WTN$1p}PiZP613$|h#Ca?oLF^OH+jXjvcKJ3Rd4&WdT;V_QiC}waB$8iEDaSEq#
z24`^&=WziSaS0taQU2({d@R61EW%=RV+odG8G5h+E76P9Sc5+FV*rB~!aA(SFh($n
zF^ppiwqhG5umd|WiCx%@J($8i?8h_?;2;j+Fpl6TW^fG0aRMiC3a4=fXK@baaRC=`
z2_0{v{LzK^Sb&9CgvIE_5-i0s^k4;6q8F>N27Tzq00uFHby$yKj9?UF7{?ZD#WqY}
z2X<l-yRaL3Fok{Ck7*phK^($i9Klh{;24hM1Ww`<PU8&D;vCN70xsebI&P-?(S`X~
zfQ49u#puQoEX6YPU<Fp97pt)bedxyk1~G(nSdU?hU=(8*#};hGHcVg#c488{up4_Y
zg?-qMX&k^o9KvB7!BNcM7>?rvPT~|!;|$K?9M0ncF5(jEA0f<f%KbldVLldMAr@gV
zy0HXHu?#&}ftBdRYOF!?y@;|te&PTIF@$wkk70~p6k{027Hq{fOkf9gViLQs8+$N?
zeb|p_9Kb;w!eJc2QOw{Nj^hMQ;uKEf49?;l&f@|u;u1REPWht?^RWO6u?UONjU`x$
zW$3{QtVAzXV-5Pyj{yu~2<xyO!x+IR#xRa8*otkKzz*!hBz9pp_FxM8upiSnfP*-M
z!#IMYn87g|#|fOoDV)X`oW(hu#|2!(C3L)l@<$iuV*wUo5f-BxORyBn(1R6NiC(P6
z8uXzb^>6)X{S?Fy)?qz{F@jNyVH{hq727a@9oUIU?80vB!4&pkKc;a22XP38aRf&(
zgJU?36F7-eIE^zni*q=S3%H0&=y)gPk1ou|0xZNLEJin$U@4ZN2P?1=y;zMk=tDmS
zFo+?n!+H#31fv+kIJRIbwqXK0uoIKmh27YLDeS|3Oyd9!;t&qw2##U~$8a1ca1y6*
z8fS18=Wreua1obKU-WFA|Ivl{Sb&9CgvIE_5-i0s^k4;6q8F>N27Tzq00uFHby$yK
zj9?UF7{?ZD#WqY}2X<l-yRaL3Fok{Ck7*phK^($i9Klh{;24hM1Ww`<PU8&D;vCN7
z0xseb>L2Jc%O72sj|EtWMOch(EWuJNLl0J9C3>+MYtV;&3}6sLScml(#t23+hH-4c
zR&2urc3>wau?xGg2UFOG{g}o99K<0U#t|IF436PAPT(X?;WW<REY9IPF5n_Aq2t|@
zKe{j<3$PH2uo&G~f~8o79<0Dh^kOyEpbz~Rz#xXO4(l<D5sYFC<Jf|&*oF!0z)nnJ
z7j|P0rmzqDF^vN_h(kDxBRGl~9K&&(z)76KX`I1XoWprsz(rg_{R6t@@sBRd#{w+G
zA}mHXmS8ECp$99l61`ZBHRwY>1~7;rtiyT?V+5lZ!#K8JE4E<*JFpXz*oEELgDLF8
zeoW&44&o3F;|Pvo2FGw5CvXy{a2jWD7Uyst7jO}m&{0PDqYLv<|8}PCAB9+i#puQo
zEX6YPU<Fp97pt)bedxyk1~G(nSdU?hU=(8*#};hGHcVg#c488{up4_Yg?-qMX&k^o
z9KvB7!BNcM7>?rvPT~|!;|$K?9M0ncF5(jEA4xWke{^9!7GNP3VKKU~1WU0DJy?O2
z=*4QRK_B{2|5mH6Ul2oBhxHi72u3l6acsd>Y{LY0U?(QA3%jugQ`m?7n8pDd#33BU
z5gf$~j^Q{?;3Q7rG|u2G&fz>R;36)eqnz?b7v^ID7Ge<=qZ>=G6wA<q6<CR0ti~Gj
zp&tVn#1PhDJ%%xYQH)_6Td)<|Fo7M|iAn6jZtTGn_F+G!aR3K#2#0Y5M=^tAIF1uI
ziBmX@GdPQLIFAdsh)d|$K>4E!^RWO6u?UONjU`x$W$3{QtVAzXV-5Pyj{yu~2<xyO
z!x+IR>fdhG`Xi1l*otkKzz*!hBz9pp_FxM8upiSnfP*-M!#IMYn87g|#|fOoDV)X`
zoW(hu#|2!(C3JWwe{^9!7GNP3VKKU~1WU0DJy?O2=*4QRK_B`tfI$pl9oAzQBN)XP
z#<2xku?-X0ft{GdF6_o0Okp4PV;To=5QlIWM{pD~IELdmfs;6e(>Q~(IEVANfQz_<
zj*XN*x-cILun>!|7~NQcrC5d@tiVe2Vl~#F5B(UxAcn9G>oJTGjA9Jq*n+Lth6(Jz
zPE2AKc4H5wun+q&jRQD{LpY2hIEon@!*QIzNu0uIoWWU~!+Bi5MO;G1CdwaOn2!Zm
zh(%b8ZY;r4EJF`gU?qC78f(ypehgp`Ls*CP7{&-jF@|w$!B%X;1a@F2Cb0{<u?JJw
zhy9qw0UX339L5nG#SD(&I8NXsPT@4p;4IGJJTBlOE}`RA${$^rj|EtWMOch(EWuJN
zLl0J9C3>+MYtV;&3}6sLScml(#t23+hH-4cR&2urc3>wau?xGg2UFOG{g}o99K<0U
z#t|IF436PAPT(X?;WW<REY9IPF5n_Ap`(KGM;GQ}0TyBr7NZ+WuoTPCgB4hbUaZC%
z^r0UE7{n0PVLgU1f>DfN99ysz+c1G0*ojH(!fx!r6!u|1rf~oVaR`TT1V=H0V>pfz
zIEhm@jWallb2yI+xQI*WxQ+5h7v^ID7Ge<=qZ>=G6wA<q6<CR0ti~Gjp&tVn#1PhD
zJ%%xYQH)_6Td)<|Fo7M|iAn6jZtTGn_F+G!aR3K#2#0Y5M=^tAIF1uIiBmX@GdPQL
zIFAdsh)d|Wo$^N)=3@aCVi6Xj8%wYh%g}=rSczV&#v1gY9|IV~5Y}NmhB1OsjA0yG
zuoc@dfgRY1N$kRI?7<ZFVLzsE00(ghhj9c)F@s|`juSYEQ#g$?IE!;Qj|;enOX#?R
z@<$iuV*wUo5f-BxORyBnQ2vCq+5WD;O7vni)}Rml7{DNguny}nj1i1t4CB~>t=NVM
z?7&V;Vi$H}52mmW`!S6JIEX_yj3YRT863lLoWMz(!fBkrS)9XpT);(KLPsU#k1ou|
z0xZNLEJin$U@4ZN2P?1=y;zMk=tDmSFo+?n!+H#31fv+kIJRIbwqXK0uoIKmh27YL
zDeS|3Oyd9!;t&qw2##U~$8a1ca1y6*8fS18=Wreua1oc#aVO=E=HFqK{<3`H0xZNL
zEJin$U@4ZN2P?1=y;zMk=tDmSFo+?n!+H#31fv+kIJRIbwqXK0uoIKmh27YLDeS|3
zOyd9!;t&qw2##U~$8a1ca1y6*8fS18=Wreua1oc#aTn!}F3iUQEW{!#MmLsVDVCuJ
zE3gv1SdBI4Lq7&Eh#{=QdJJO(qZq?DwqPr^VFEj_6O-75-PnUE?8AOc;{Xog5Dw!A
zj$#JKa2zLa5~pw)XK)tha2^+M5tq<$H|38m%*O&O#3C$4H<n;2mZ1kLuoAskjWy^)
zKL*hJd+<^(g^2609>W;HD8?|3E!c`}n7|I~#3XiMH}+r(`>-F=IDmsVgu^(3qnN=l
z9LEWq#3`J{8JxvAoW})R#3giiDSvcfJ{Djh7GW{Eu>?!83_VzZmFUH4tU(|8F@Qk~
zVI9_E7$X?P7{;*$Td@rj*nypx#4hZ{9!y~$_G20ca1e)Z7)NjvGdPChIDwNmh0{2L
zvp9$IxPXhegpMl8A6=M_1z3nhSd4Bg!BQ+k4_06$da)X7(1(5uU=TxChxHi72u3l6
zacsd>Y{LY0U?(QA3%jugQ`m?7n8pDd#33BU5gf$~j^Q{?;3Q7rG|u2G&fz>R;36)e
z;~vT%U6_vrScpYfjBYH!QY=FcR$wK1u^Ma8hkguT5JOmp^%%woMlptQY{6D+!vuC<
zCnm8AyRipT*oXa?#sM6}AsogL9K{Td;W$p<Bu?Qp&fqN0;XE$jA}*ohy_7$?FdqxB
z5R0%F-B^O9ScV>~z)JLDHP)aH{TRR?hOiFnF^mz6VhrQhg00ww3GBd5Okx*yV-KdV
z5Bo8V12~97IE*7WiWwZkah$+OoWg0G!C9Qcd0fCnTtY`R<&Q4R#{w+GA}mHXmS8EC
zp$99l61`ZBHRwY>1~7;rtiyT?V+5lZ!#K8JE4E<*JFpXz*oEELgDLF8eoW&44&o3F
z;|Pvo2FGw5CvXy{a2jWD7Uyst7jO}m(6O2FM;GQ}0TyBr7NZ+Wu=Ib?c0O=6RqOxX
z=g*9TgM*3T3=YPhaRwt3s;LG;WYol9ifW2bsZ>K#Nv<I@Xp~AfMWs?#<@WDR<(4ir
zx~bId4<%QnA}W<iuJZeQ*81!{o9lM({eHi{@!H<cdY)%J>sf36J$tWxj+iaxh`C}P
zF;C1F3&cTUp;#mqizVV1u~Zx<P827Jlf^QzT%0D(5NC;V#ra~DxL8~wE)|!HE5w!J
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
K6#Dm`*8eZBm<I#^

diff --git a/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Linux_x86_64/libexpat.a b/Src/Plugins/DSP/sc_serv3/libs/Aol_XML/Linux_x86_64/libexpat.a
deleted file mode 100644
index d24c5d8d31f923e7e806388eb1529a0fc647f13f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 861176
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

diff --git a/Src/Plugins/DSP/sc_serv3/main.cpp b/Src/Plugins/DSP/sc_serv3/main.cpp
deleted file mode 100644
index 3b167b49..00000000
--- a/Src/Plugins/DSP/sc_serv3/main.cpp
+++ /dev/null
@@ -1,1213 +0,0 @@
-#ifdef _WIN32
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0601
-#include <winsock2.h>
-#include <conio.h>
-#else
-#include <sys/resource.h>
-#include <termios.h>
-#endif
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string>
-#include "services/stdServiceImpl.h"
-#include "file/fileUtils.h"
-#include "global.h"
-#include "threadedRunner.h"
-#include "protocol_relay.h"
-#include "w3cLog.h"
-#include "yp2.h"
-#include "updater.h"
-#include "auth.h"
-#include "streamData.h"
-#include "adminList.h"
-#include "banList.h"
-#include "ripList.h"
-#include "agentList.h"
-#include "cpucount.h"
-#include "stats.h"
-#include "bandwidth.h"
-#include "cache.h"
-
-#ifdef _WIN32
-#define _WSPIAPI_H_
-#endif
-//#include <GeoIP.h>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME "[MAIN] "
-
-#ifdef _WIN32
-#include <Mswsock.h>
-static void win32SocketSetup() throw(runtime_error)
-{
-	WSADATA wsaData = {0};
-	WORD wVersionRequested = MAKEWORD( 2, 2 );
-	int err = WSAStartup(wVersionRequested, &wsaData);
-	if (err != 0)
-	{
-		throw runtime_error("Could not find usable Winsock DLL");
-	}
-
-	/* Confirm that the WinSock DLL supports 2.2.*/
-	/* Note that if the DLL supports versions greater    */
-	/* than 2.2 in addition to 2.2, it will still return */
-	/* 2.2 in wVersion since that is the version we      */
-	/* requested.                                        */
-
-	if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
-	{
-		/* Tell the user that we could not find a usable */
-		/* WinSock DLL.                                  */
-		WSACleanup();
-		throw runtime_error("Could not find appropriate winsock dll version");
-	}
-	/* The WinSock DLL is acceptable. Proceed. */
-
-	// if we can detect WSAPoll(..) then we'll use that over
-	// select which means Vista+ should be similar to Linux.
-	HINSTANCE ws2_32 = GetModuleHandle(TEXT("WS2_32.DLL"));
-	if (ws2_32 != NULL)
-	{
-		typedef INT (WSAAPI *LPFN_WSAPOLL)(LPWSAPOLLFD fdarray, ULONG nfds, INT timeout);
-		extern LPFN_WSAPOLL fnWSAPoll;
-		fnWSAPoll = (LPFN_WSAPOLL)GetProcAddress(ws2_32, "WSAPoll");
-	}
-}
-
-static void win32SocketCleanup() throw()
-{
-	WSACleanup();
-}
-#else
-int _kbhit(void)
-{
-	struct termios oldt, newt;
-	tcgetattr(STDIN_FILENO, &oldt);
-	newt = oldt;
-	newt.c_lflag &= ~(ICANON | ECHO);
-	tcsetattr(STDIN_FILENO, TCSANOW, &newt);
-	int oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
-	fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
-
-	int ch = getchar();
-	tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
-	fcntl(STDIN_FILENO, F_SETFL, oldf);
-
-	return (ch != EOF);
-}
-#endif
-
-void scheduleRelay(const config::streamConfig &info) throw()
-{
-	// only attempt to run if not indicated as having moved
-	if(gOptions.stream_movedUrl(info.m_streamID).empty())
-	{
-		threadedRunner::scheduleRunnable(new protocol_relay(info));
-	}
-}
-
-utf8 getLogFile(utf8 fileName)
-{
-#ifdef _WIN32
-	// this will fill in the default log path as required
-	wchar_t s_defaultFileName[MAX_PATH] = {0};
-	ExpandEnvironmentStringsW(DEFAULT_LOGW, s_defaultFileName, MAX_PATH);
-	utf8 m_defaultFilename(utf32(s_defaultFileName).toUtf8()), m_fileName = fileName;
-
-	HANDLE m_file = ::CreateFileW(m_fileName.toWString().c_str(),GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
-	if (m_file == INVALID_HANDLE_VALUE)
-	{
-		m_file = ::CreateFileW(m_defaultFilename.toWString().c_str(),GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
-		if (m_file == INVALID_HANDLE_VALUE)
-		{
-			uniFile::filenameType fallbackFilename("%temp%\\sc_serv_" + tos(getpid()) + ".log");
-			wchar_t s_fallbackFileName[MAX_PATH] = {0};
-			ExpandEnvironmentStringsW(fallbackFilename.toWString().c_str(), s_fallbackFileName, MAX_PATH);
-			utf8 m_fallbackFilename(utf32(s_fallbackFileName).toUtf8());
-
-			m_file = ::CreateFileW(m_fallbackFilename.toWString().c_str(),GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
-			if (m_file != INVALID_HANDLE_VALUE)
-			{
-				forgetHandleInvalid(m_file);
-			}
-			else
-			{
-				m_fileName = m_fallbackFilename;
-			}
-		}
-		else
-		{
-			m_fileName = m_defaultFilename;
-		}
-	}
-#else
-	utf8 m_defaultFilename = gOptions.logFile_Default(), m_fileName = fileName;
-
-	int m_file = ::open(m_fileName.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-	if (m_file == -1)
-	{
-		m_file = ::open(m_defaultFilename.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-		if (m_file == -1)
-		{
-			uniFile::filenameType fallbackFilename("/tmp/sc_serv_" + tos(getpid()) + ".log");
-			m_file = ::open(fallbackFilename.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-			if (m_file == -1)
-			{
-				throw runtime_error("Logger could not open the log file \"" + m_fileName.hideAsString() + "\" for writing [" + errMessage().hideAsString() + "]. Check the directory exists and another instance is not already running.");
-			}
-			else
-			{
-				m_fileName = fallbackFilename;
-			}
-		}
-		else
-		{
-			m_fileName = m_defaultFilename;
-		}
-	}
-#endif
-	return m_fileName;
-}
-
-// event triggers for main loop
-static vector<HANDLE>	s_ControlEvents;
-
-class sc_serv2_service
-{
-	// log messages that have been stuffed in config objects deferred list.
-	// this only need be called at startup, to display messages that were created during
-	// system initialization, but could not be displayed because the loggers didn't yet exist.
-	static void logDeferredMessages()
-	{
-		const vector<utf8> &deferred_error_log_messages(gOptions.deferredErrorLogMessages());
-		for (vector<utf8>::const_iterator i = deferred_error_log_messages.begin(); i != deferred_error_log_messages.end(); ++i)
-		{
-			ELOG((*i).hideAsString());
-		}
-
-		const vector<utf8> &deferred_warn_log_messages(gOptions.deferredWarnLogMessages());
-		for (vector<utf8>::const_iterator i = deferred_warn_log_messages.begin(); i != deferred_warn_log_messages.end(); ++i)
-		{
-			WLOG((*i).hideAsString());
-		}
-
-		gOptions.clearDeferredErrorLogMessages();
-		gOptions.clearDeferredWarnLogMessages();
-	}
-
-public:
-	static void addCustomLogElements() {}
-	sc_serv2_service() {}
-
-	// main application loop
-	static int go(stdServiceBase &base) throw()
-	{
-		g_upTime = ::time(NULL);
-		g_userAgent = g_userAgentBase + gOptions.getVersionBuildStrings();
-		#ifdef _WIN32
-		bool win32_socket_cleanup_required(false);
-		#endif
-		int mainResult = 0; // result of main loop
-		utf8 pidFn;
-		vector<threadedRunner*>	runners;
-
-		try
-		{
-runserver:
-#ifdef CONFIG_BUILDER
-			bool builderMode = (gOptions.confFile() == "builder" || gOptions.confFile() == "-b");
-			bool setupMode = (gOptions.confFile() == "setup" || gOptions.confFile() == "-s" || builderMode);
-#else
-			bool setupMode = (gOptions.confFile() == "setup" || gOptions.confFile() == "-s");
-#endif
-			bool gotConfig = (!gOptions.confFile().empty() && uniFile::fileExists(gOptions.confFile()));
-			// look for sc_serv.conf or sc_serv.ini to emulate v1 DNAS behaviour as
-			// too many people cannot get on with having to specify a config file :(
-			if (gotConfig == false && setupMode == false)
-			{
-				utf8 currentLogFile = gOptions.logFile();
-
-				#ifdef _WIN32
-				vector<wstring> fileList = fileUtil::directoryFileList(gStartupDirectory.toWString() + L"sc_serv.ini", L"", true, true);
-				vector<wstring> fileListConf = fileUtil::directoryFileList(gStartupDirectory.toWString() + L"sc_serv.conf", L"", true, true);
-				#else
-				vector<string> fileList = fileUtil::directoryFileList(gStartupDirectory.hideAsString() + "sc_serv.ini", "");
-				vector<string> fileListConf = fileUtil::directoryFileList(gStartupDirectory.hideAsString() + "sc_serv.conf", "");
-				#endif
-
-				if (!fileList.empty())
-				{
-					fileList.insert(fileList.end(), fileListConf.begin(),fileListConf.end());
-				}
-				else
-				{
-					fileList = fileListConf;
-				}
-
-				if (!fileList.empty())
-				{
-					#ifdef _WIN32
-					utf32 u32file(fileList[0]);
-					utf8 u8f(u32file.toUtf8());
-					gotConfig = gOptions.load(u8f);
-					#else
-					gotConfig = gOptions.load(fileList[0]);
-					#endif
-				}
-
-				// if these do not match then we need to update the log file being used
-				// as otherwise it reports the wrong thing on the admin pages, etc
-				if (gOptions.logFile() != currentLogFile)
-				{
-					base.startNormalLog(false);
-				}
-			}
-
-			if (isPostSetup() == false)
-			{
-				if (gOptions.screenLog())
-				{
-					base.startScreenLog();
-				}
-				// during initial startup some messages are produced but cannot be logged because
-				// the loggers do not yet exist. These are in the deferred list. At this point they
-				// can be safely logged
-				logDeferredMessages();
-
-				gOptions.m_certPath = fileUtil::getFullFilePath(gStartupDirectory + "cacert.pem");
-				if (!uniFile::fileExists(gOptions.m_certPath))
-				{
-					WLOG(LOGNAME "Cannot find `" + gOptions.m_certPath + "'");
-					WLOG(LOGNAME "Without `cacert.pem' the DNAS may not be able to contact the Directory");
-					WLOG(LOGNAME "The latest can be downloaded from `http://curl.haxx.se/ca/cacert.pem'" + eol());
-				}
-
-				#ifdef _WIN32
-				ILOG("*********************" +
-					 string(!sDaemon ? "***************************" : "<<RUNNING_IN_SERVICE_MODE>>") +
-					 "*********************");
-				#else
-				ILOG("*********************" +
-					 string(!sDaemon ? "***************************" : "<<RUNNING_IN__DAEMON_MODE>>") +
-					 "*********************");
-				#endif
-				ILOG("**        Shoutcast Distributed Network Audio Server (DNAS)        **");
-				ILOG("**    Copyright (C) 2014-2023 Radionomy SA, All Rights Reserved    **");
-				if (gotConfig == false && setupMode == false)
-				{
-					ILOG("**      Use \"sc_serv [filename]\" to specify a config file       **");
-				}
-				ILOG("*********************************************************************");
-				utf8 version = gOptions.getVersionBuildStrings();
-#if defined(_DEBUG) || defined(DEBUG)
-				version += "[DBUG]";
-#endif
-				ILOG(LOGNAME "Shoutcast DNAS/" SERV_OSNAME " v" + version + " (" __DATE__ ")");
-				ILOG(LOGNAME "PID: " + tos(getpid()));
-			}
-			if (gotConfig)
-			{
-				ILOG(LOGNAME "Saving log output to `" + fileUtil::getFullFilePath(gOptions.realLogFile()) + "'");
-				ILOG(LOGNAME "Automatic log rotation " + (!gOptions.rotateInterval() ? utf8("disabled") : utf8("interval: ") + timeString(gOptions.rotateInterval())));
-				ILOG(LOGNAME "Loaded config from `" + fileUtil::getFullFilePath(gOptions.confFile()) + "'");
-			}
-			else
-			{
-				uniFile::filenameType oldLogFile = gOptions.logFile();
-				// if we get to this state then to make things easier, we attempt to offer
-				// some possible configuration files to attempt to load as the config file
-				int mode = (setupMode ? 2 : gOptions.promptConfigFile());
-				if (mode <= 0)
-				{
-					if (mode == -1)
-					{
-						ELOG(LOGNAME "Aborting as no valid config files could be found.");
-						throwEx<runtime_error>(LOGNAME "Try running setup mode to create a valid config file.");
-					}
-					else if (mode == -2)
-					{
-						throwEx<runtime_error>(LOGNAME "Aborting at user request.");
-					}
-					else
-					{
-						if (!gOptions.confFile().empty() && !uniFile::fileExists(gOptions.confFile()))
-						{
-							throwEx<runtime_error>(LOGNAME "Passed config file does not exist (check the file path exists)");
-						}
-						else
-						{
-							throwEx<runtime_error>(LOGNAME "No config file passed");
-						}
-					}
-				}
-				else if (mode == 1)
-				{
-					// if these do not match then we need to update the log file being used
-					utf8 newLogFile = getLogFile(gOptions.logFile());
-					if (newLogFile != oldLogFile)
-					{
-						uniString::utf8 file = newLogFile.substr(0,gOptions.logFile().rfind(fileUtil::getFilePathDelimiter())).c_str();
-						if ((file == newLogFile) || fileUtil::directoryExists(fileUtil::onlyPath(newLogFile)))
-						{
-							#ifdef _WIN32
-							// see if we can create the file, if not then just keep using the temp folder for the log file as we know it's ok
-							HANDLE m_file = ::CreateFileW(newLogFile.toWString().c_str(),GENERIC_WRITE,
-														  FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
-							if (m_file != INVALID_HANDLE_VALUE)
-							{
-								gOptions.setOption(utf8("reallogfile"), newLogFile);
-								forgetHandleInvalid(m_file);
-								base.startNormalLog(true);
-							}
-							// make sure it's showing the correct log file
-							else
-							{
-								// this will fill in the default log path as required
-								wchar_t m_fileName[MAX_PATH] = {0};
-								ExpandEnvironmentStringsW(DEFAULT_LOGW, m_fileName, MAX_PATH);
-								utf8 log(utf32(m_fileName).toUtf8());
-								gOptions.setOption(utf8("logfile"), log);
-								gOptions.setOption(utf8("reallogfile"), log);
-								ILOG(LOGNAME "Logger keeping log file as `" + fileUtil::getFullFilePath(log) + "'");
-								ILOG(LOGNAME "Check you have write permissions for the folder(s) set in the config file.");
-							}
-							#else
-							// see if we can create the file, if not then just keep using the temp folder for the log file as we know it's ok
-							int m_file = ::open(newLogFile.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-							if (m_file != -1)
-							{
-								::close(m_file);
-								gOptions.setOption(utf8("reallogfile"), newLogFile);
-								base.startNormalLog(true);
-							}
-							// make sure it's showing the correct log file
-							else
-							{
-								// this will fill in the default log path as required
-								utf8 log(DEFAULT_LOG);
-								gOptions.setOption(utf8("logfile"), log);
-								gOptions.setOption(utf8("reallogfile"), log);
-								ILOG(LOGNAME "Logger keeping log file as `" + fileUtil::getFullFilePath(log) + "'");
-								ILOG(LOGNAME "Check you have write permissions for the folder(s) set in the config file.");
-							}
-							#endif
-						}
-						else
-						{
-							throwEx<runtime_error>(LOGNAME "Log file path does not exist (check the folder path exists)");
-						}
-					}
-
-					ILOG(LOGNAME "Saving log output to `" + fileUtil::getFullFilePath(gOptions.realLogFile()) + "'");
-					ILOG(LOGNAME "Automatic log rotation " + (!gOptions.rotateInterval() ? utf8("disabled") :
-						 utf8("interval: ") + timeString(gOptions.rotateInterval())));
-					ILOG(LOGNAME "Loaded config from `" + fileUtil::getFullFilePath(gOptions.confFile()) + "'");
-				}
-				else if (mode == 2)
-				{
-					if (setupMode)
-					{
-#ifdef CONFIG_BUILDER
-						if (!builderMode)
-						{
-#endif
-							ILOG(LOGNAME "Entering setup mode - Open 127.0.0.1:8000/setup in a");
-							ILOG(LOGNAME "browser on the same machine the DNAS was started on");
-#ifdef CONFIG_BUILDER
-						}
-						else
-						{
-							ILOG(LOGNAME "Entering builder mode - Open 127.0.0.1:8000/builder in");
-							ILOG(LOGNAME "a browser on the same machine the DNAS was started on");
-						}
-#endif
-						ILOG(LOGNAME "if the browser does not automatically open the page.");
-						ILOG(LOGNAME "If working remotely then replace 127.0.0.1 with the");
-						ILOG(LOGNAME "IP / address of the remote system to use this mode.");
-					}
-
-					// attempt to open the setup / builder page on the system's browser i.e. kiss option
-					#ifdef _WIN32
-#ifdef CONFIG_BUILDER
-					if (!builderMode)
-					{
-#endif
-						::system("start http://127.0.0.1:8000/setup");
-#ifdef CONFIG_BUILDER
-					}
-					else
-					{
-						::system("start http://127.0.0.1:8000/builder");
-					}
-#endif
-					#else
-#ifdef CONFIG_BUILDER
-					if (!builderMode)
-					{
-#endif
-						::system("(if(which xdg-open > /dev/null)then(xdg-open http://127.0.0.1:8000/setup)elif(which gnome-open > /dev/null)then(gnome-open http://127.0.0.1:8000/setup)fi)&>/dev/null");
-#ifdef CONFIG_BUILDER
-					}
-					else
-					{
-						::system("(if(which xdg-open > /dev/null)then(xdg-open http://127.0.0.1:8000/builder)elif(which gnome-open > /dev/null)then(gnome-open http://127.0.0.1:8000/builder)fi)&>/dev/null");
-					}
-#endif
-					#endif
-
-					#ifdef _WIN32
-					win32SocketSetup();
-					win32_socket_cleanup_required = true;
-					#endif
-
-					threadedRunner *tr = new threadedRunner;
-					runners.push_back(tr);
-					tr->start();
-
-					threadedRunner::scheduleRunnable(new microServer("", gOptions.portBase(),
-													 (microServer::AllowableProtocols_t)(P_WEB_SETUP),
-													  microServer::L_MISC));
-
-					s_ControlEvents.push_back(serviceMain::sStop);
-					while (!iskilled())
-					{
-						#if defined(_WIN32) && defined(_WIN64)
-						if (WaitForMultipleObjects((DWORD)s_ControlEvents.size(), &(s_ControlEvents[0]), 0, 1000) == WAIT_OBJECT_0)
-						#else
-						if (WaitForMultipleObjects(s_ControlEvents.size(), &(s_ControlEvents[0]), 0, 1000) == WAIT_OBJECT_0)
-						#endif
-						{
-							// stop signal
-							setkill(1);
-							break;
-						}
-					}
-
-					if (iskilled() == 2)
-					{
-						ILOG(LOGNAME "Stopping setup mode. Preparing for broadcasting...");
-					}
-					else
-					{
-						ILOG(LOGNAME "Stopping setup mode. Shutting down...");
-					}
-
-					for (vector<threadedRunner*>::const_iterator i = runners.begin(); i != runners.end(); ++i)
-					{
-						(*i)->stop();
-						(*i)->join();
-						delete (*i);
-					}
-					runners.clear();
-
-					#ifdef _WIN32
-					if (win32_socket_cleanup_required)
-					{
-						win32SocketCleanup();
-					}
-					#endif
-
-					s_ControlEvents.clear();
-
-					// if we get here, we effectively restart the server post-setup
-					if (iskilled() == 2)
-					{
-						#ifdef _WIN32
-						gOptions.load(gStartupDirectory + "sc_serv.conf");
-						#else
-						gOptions.load(gStartupDirectory.hideAsString() + "sc_serv.conf");
-						#endif
-						setPostSetup(true);
-						setkill(0);
-						goto runserver;
-					}
-					setkill(0);
-					return mainResult;
-				}
-			}
-
-			// just make sure that we can do this else we need to abort
-			if (curl_global_init(CURL_GLOBAL_DEFAULT) != CURLE_OK)
-			{
-				throwEx<runtime_error>(LOGNAME "Unable to load libcurl & / or its dependencies - cannot continue.");
-			}
-
-			config::streams_t streams;
-			gOptions.getStreamConfigs(streams);
-			// the old sc_serv had two sets of passwords, mimic this
-			if (gOptions.adminPassword().empty())
-			{
-				WLOG(gOptions.logSectionName() + "A dedicated `adminpassword' should be specified in the configuration.");
-				WLOG(gOptions.logSectionName() + "Legacy handling has been enabled to map `adminpassword' to `password'.");
-				WLOG(gOptions.logSectionName() + "This is not deemed safe and `adminpassword' should be directly set.");
-				gOptions.setOption(utf8("adminpassword"), gOptions.password());
-			}
-			else
-			{
-				// otherwise if explicitly set as the same then we abort
-				if (gOptions.adminPassword() == gOptions.password())
-				{
-					throwEx<runtime_error>(gOptions.logSectionName() + "You must specify different passwords for `adminpassword' and `password'.");
-				}
-			}
-
-
-			// abort no matter what as without passwords we can be at risk
-			if (gOptions.adminPassword().empty() && gOptions.password().empty())
-			{
-				throwEx<runtime_error>(gOptions.logSectionName() + "You must specify a password for `adminpassword' and `password'.");
-			}
-
-			if (!streams.empty())
-			{
-				if (gOptions.setupPasswords(streams))
-				{
-					// if there was any error on the passwords then we need to abort
-					// so it can be fixed. important if using multi-stream hosting!
-					throwEx<runtime_error>(gOptions.logSectionName() + "Check the stream configurations above or ensure `adminpassword' and `password' have been set.");
-				}
-			}
-			else
-			{
-				// if there are no stream configs and no main password
-				// then we'll also need to abort as that's not allowed
-				if (gOptions.password().empty())
-				{
-					throwEx<runtime_error>(gOptions.logSectionName() + "You must specify a password for `password'.");
-				}
-			}
-
-
-			if (!gOptions.cdn().empty())
-			{
-				ILOG(LOGNAME "CDN " + utf8(gOptions.cdn() == "on" ? "opt-in" : "opt-out") + " mode enabled -> ensure all stream(s) are properly configured");
-			}
-
-			const int cpu_count = gOptions.getCPUCount();	// check options
-			ILOG(LOGNAME "Calculated CPU count is " + tos(cpucount()) + " -> " + (cpu_count == cpucount() ? "using " +
-				 utf8(cpu_count > 1 ? "all" : "the") + " available CPU" + (cpu_count > 1 ? "s" : "") :
-				 tos(cpu_count) + " CPU" + (cpu_count > 1 ? "s" : "") + " specified to be used"));
-#ifndef _WIN32
-			rlimit rlim = {0};
-			if(!getrlimit(RLIMIT_NOFILE, &rlim))
-			{
-				ILOG(LOGNAME "Limited to " + tos(rlim.rlim_cur) + " file descriptors [relates to ulimit -n]");
-			}
-#endif
-			// calculate defaults for yp
-			// if 'publicport' is not the same as 'portbase'
-			// then we use it instead of the normal portbase
-			g_portForClients = ((gOptions.publicPort() != -1 && (gOptions.publicPort() != gOptions.portBase())) ? gOptions.publicPort() : gOptions.portBase());
-
-			// before anything else starts up we'll start this as needed
-			metrics::metrics_apply(gOptions);
-			auth::init();
-
-            // load any SSL certificates
-            threadedRunner::SSL_init();
-
-			#ifdef _WIN32
-			win32SocketSetup();
-			win32_socket_cleanup_required = true;
-			#endif
-
-			ILOG(LOGNAME "Starting " + tos(cpu_count) + " network thread" + (cpu_count > 1 ? "s" : ""));
-
-			for (int x = 0; x < cpu_count; ++x)
-			{
-				threadedRunner *tr = new threadedRunner;
-				runners.push_back(tr);
-				tr->start();
-			}
-
-			constructMessageResponses();
-
-			// w3c logging
-			if (gOptions.w3cEnable())
-			{
-				w3cLog::open(gOptions.w3cLog());
-			}
-
-			// load geoIP database if able to be found
-			/*{
-				static utf8 dir = gStartupDirectory;
-				char path[1024] = {0};
-				GeoIP_setup_custom_directory(strncpy(path, (char*)dir.hideAsString().c_str(), sizeof(path)));
-				GeoIP * gi = GeoIP_new(GEOIP_MEMORY_CACHE);
-				if(gi != NULL)
-				{
-					ILOG(LOGNAME "Loaded GeoIP database - Ban and Reserve by country is enabled");
-					const char* returnedCountry,
-							  * ips[] = {"58.218.199.227","77.76.181.71","87.104.93.85","195.238.117.56",
-										 "114.244.60.232","108.52.34.116","91.121.164.186","78.46.75.50",
-										 "62.75.139.39","172.17.200.143","205.188.215.228","82.30.80.183"
-					};
-					for (int ip = 0; ip < sizeof(ips)/sizeof(ips[0]); ip++)
-					{
-						utf8 details;
-						returnedCountry = GeoIP_country_code_by_addr(gi, ips[ip]);
-						details = (returnedCountry ? returnedCountry : utf8("UNKNOWN"));
-						returnedCountry = GeoIP_country_name_by_addr(gi, ips[ip]);
-						details += " (" + (returnedCountry ? returnedCountry : utf8("UNKNOWN")) + ")";
-						WLOG(details);
-					}
-
-					GeoIP_delete(gi);
-				}
-			}*/
-
-			// load up stream branding artwork
-			gOptions.m_artworkBody[0] = loadLocalFile(fileUtil::getFullFilePath(gOptions.artworkFile()), LOGNAME, 523872/*32 x (16384 - 6 - 6 - 1)*/);
-
-			// load up ban file
-			g_banList.load(gOptions.banFile(),0);
-
-			// load up rip file
-			g_ripList.load(gOptions.ripFile(),0);
-
-			// load up admin access file
-			g_adminList.load(gOptions.adminFile());
-
-			// load up agent file
-			g_agentList.load(gOptions.agentFile(),0);
-
-			// per-stream options
-			gOptions.getStreamConfigs(streams);
-			for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-			{
-				// w3c logging
-				if (gOptions.read_stream_w3cLog((*i).first))
-				{
-					w3cLog::open(gOptions.stream_w3cLog((*i).first),(*i).first);
-				}
-
-				// load up ban file
-				if (gOptions.read_stream_banFile((*i).first))
-				{
-					g_banList.load(gOptions.stream_banFile((*i).first),(*i).first);
-				}
-
-				// load up rip file
-				if (gOptions.read_stream_ripFile((*i).first))
-				{
-					g_ripList.load(gOptions.stream_ripFile((*i).first),(*i).first);
-				}
-
-				// load up agent file
-				if (gOptions.read_stream_agentFile((*i).first))
-				{
-					g_agentList.load(gOptions.stream_agentFile((*i).first),(*i).first);
-				}
-
-				// load up stream branding artwork
-				if (gOptions.read_stream_artworkFile((*i).first))
-				{
-					gOptions.m_artworkBody[(*i).first] = loadLocalFile(fileUtil::getFullFilePath(gOptions.stream_artworkFile((*i).first)), LOGNAME, 523872/*32 x (16384 - 6 - 6 - 1)*/);
-				}
-			}
-
-			utf8 srcBindAddr = stripHTTPprefix(stripWhitespace(gOptions.srcIP()));
-			utf8 destBindAddr = metrics::metrics_verifyDestIP(gOptions, false);
-
-			if (g_IPAddressForClients.empty())
-			{
-				char s[MAXHOSTNAMELEN] = {0}; // paranoia
-				if (!::gethostname(s, MAXHOSTNAMELEN - 1))
-				{
-					// changed to not throw (build 43) as this will still run correctly
-					// and has caused a number of users to go back to v1 unnecessarily.
-					g_IPAddressForClients = socketOps::hostNameToAddress(s, g_portForClients);
-				}
-			}
-			else
-			{
-				utf8 addr = socketOps::hostNameToAddress(destBindAddr.hideAsString().c_str());
-				if (!addr.empty())
-				{
-					destBindAddr = addr;
-				}
-				/*hostent *host;
-				if ((host = ::gethostbyname((const char *)destBindAddr.c_str())) != NULL){
-					destBindAddr = (inet_ntoa(*( (struct in_addr *)host->h_addr)));
-				}*/
-			}
-
-			if (!srcBindAddr.empty())
-			{
-				utf8 addr = socketOps::hostNameToAddress(srcBindAddr.hideAsString().c_str());
-				if (!addr.empty())
-				{
-					srcBindAddr = addr;
-				}
-				/*hostent *host;
-				if ((host = ::gethostbyname((const char *)srcBindAddr.c_str())) != NULL){
-					srcBindAddr = (inet_ntoa(*( (struct in_addr *)host->h_addr)));
-				}*/
-			}
-
-			// for legacy sources (with optional portbase override / disable)
-			g_legacyPort = ((gOptions.portLegacy() != gOptions.portBase() + 1) && (gOptions.portLegacy() != -1) ?
-							gOptions.portLegacy() : gOptions.portBase() + 1);
-
-			// if src and dst are same we configure ourselves a bit differently
-			if ((srcBindAddr == destBindAddr) ||
-				(inet_addr((const char *)srcBindAddr.c_str()) == inet_addr((const char *)destBindAddr.c_str())))
-			{
-				// for clients and sources
-				threadedRunner::scheduleRunnable(new microServer(srcBindAddr.hideAsString(), gOptions.portBase(),
-												 (microServer::AllowableProtocols_t)(P_SHOUTCAST1CLIENT | P_SHOUTCAST2CLIENT |
-																					 P_SHOUTCAST1SOURCE | P_SHOUTCAST2SOURCE | P_WEB),
-												  (microServer::ListenTypes_t)(microServer::L_SOURCE | microServer::L_CLIENT)));
-			}
-			else
-			{
-				// changed in b71 as it's possible to specify a destip which does not correctly bind but the
-				// value of destip could be correct and able to work in all other areas e.g. via listen.pls
-				// so if there is an issue with the destip specific bind, then attempt a destip==srcip bind
-				microServer *r = 0;
-				try
-				{
-					// for clients
-					// changed in b79
-					r = new microServer(destBindAddr.hideAsString(), gOptions.portBase(),
-										(microServer::AllowableProtocols_t)(P_SHOUTCAST1CLIENT | P_SHOUTCAST2CLIENT | P_SHOUTCAST1SOURCE | P_WEB),
-										 (microServer::ListenTypes_t)(microServer::L_SOURCE | microServer::L_CLIENT));
-					threadedRunner::scheduleRunnable(r);
-
-					// for sources
-					threadedRunner::scheduleRunnable(new microServer(srcBindAddr.hideAsString(), gOptions.portBase(),
-													 (microServer::AllowableProtocols_t)(P_SHOUTCAST1SOURCE | P_SHOUTCAST2SOURCE | P_WEB),
-													  microServer::L_SOURCE));
-				}
-				catch(const exception &ex)
-				{
-					if (r == 0)
-					{
-						WLOG(ex.what());
-					}
-
-					try
-					{
-						// for clients and sources
-						threadedRunner::scheduleRunnable(new microServer(srcBindAddr.hideAsString(), gOptions.portBase(),
-														 (microServer::AllowableProtocols_t)(P_SHOUTCAST1CLIENT | P_SHOUTCAST2CLIENT |
-																							 P_SHOUTCAST1SOURCE | P_SHOUTCAST2SOURCE | P_WEB),
-														  (microServer::ListenTypes_t)(microServer::L_SOURCE | microServer::L_CLIENT)));
-					}
-					catch(const exception &exx)
-					{
-						// changed in b79
-						// if we get to here, if we've been able to bind at least on the destip
-						// but the srcip bind fails then attempt to allow v2 sources on destip.
-						if (r != 0)
-						{
-							r->updateProtocols((microServer::AllowableProtocols_t)(P_SHOUTCAST1CLIENT | P_SHOUTCAST2CLIENT |
-																				   P_SHOUTCAST1SOURCE | P_SHOUTCAST2SOURCE | P_WEB),
-												(microServer::ListenTypes_t)(microServer::L_SOURCE | microServer::L_SOURCE2), gOptions.portBase());
-						}
-						else
-						{
-							throwEx<runtime_error>(exx.what());
-						}
-					}
-				}
-			}
-
-			if (g_legacyPort > 0)
-			{
-				// for v1 sources
-				threadedRunner::scheduleRunnable(new microServer(srcBindAddr.hideAsString(), g_legacyPort,
-																 (microServer::AllowableProtocols_t)(P_SHOUTCAST1SOURCE),
-																  microServer::L_SOURCE));
-			}
-			else
-			{
-				ILOG("[MICROSERVER] Legacy v1 source support not enabled");
-			}
-
-			// for flash policy file server
-			if (gOptions.flashPolicyServerPort() != -1)
-			{
-				threadedRunner::scheduleRunnable(new microServer(srcBindAddr.hideAsString(), gOptions.flashPolicyServerPort(),
-																(microServer::AllowableProtocols_t)(P_FLASHPOLICYFILE), microServer::L_FLASH));
-			}
-			else
-			{
-				ILOG("[MICROSERVER] Flash policy file server not enabled");
-			}
-
-			// and finally look at adding any extra client ports e.g. so you can run on 80
-			// and 8000 and anything else for clients that cannot connect to the main port
-			if (!gOptions.alternatePorts().empty())
-			{
-				vector<utf8> tokens = tokenizer(gOptions.alternatePorts(), ',');
-				for (size_t tok = 0; tok < tokens.size(); tok++)
-				{
-					u_short port = (u_short)atoi(tokens[tok].hideAsString().c_str());
-					// make sure we're only allowing a valid port number and it isn't already been registered
-					if (port && (port != gOptions.portBase()) && (port != g_portForClients))
-					{
-						microServer *r = 0;
-						try
-						{
-							r = new microServer(srcBindAddr.hideAsString(), port,
-												(microServer::AllowableProtocols_t)(P_SHOUTCAST1CLIENT | P_SHOUTCAST2CLIENT),
-												(microServer::ListenTypes_t)(microServer::L_CLIENT_ALT));
-							threadedRunner::scheduleRunnable(r);
-							gOptions.m_usedAlternatePorts += "," + tokens[tok];
-						}
-						catch(const exception &ex)
-						{
-							if (r == 0)
-							{
-								WLOG(ex.what());
-								WLOG("[MICROSERVER] Alternate client connections on port " + tokens[tok] + " will not work");
-							}
-						}
-					}
-					else
-					{
-						if (port != gOptions.portBase() && port != g_portForClients)
-						{
-							WLOG("[MICROSERVER] Skipping `" + tokens[tok] + "' as it is an invalid alternate client port");
-						}
-						else
-						{
-							WLOG("[MICROSERVER] Skipping alternate port " + tokens[tok] + " as it is already a used port");
-						}
-					}
-				}
-			}
-
-			if (gOptions.pidFile().empty() || (gOptions.pidFile() == "sc_serv_$.pid"))
-			{
-				pidFn = gStartupDirectory + "sc_serv_" + tos(gOptions.portBase()) + ".pid";
-			}
-			else if (!gOptions.pidFile().empty())
-			{
-				pidFn = gOptions.pidFile();
-			}
-
-			if (!pidFn.empty())
-			{
-				FILE *f = uniFile::fopen(pidFn, "wb");
-				if (f)
-				{
-					try 
-					{
-						utf8 s(tos(getpid()) + eol());
-						if (fwrite(s.c_str(),1,s.size(),f) != s.size())
-						{
-							ELOG(LOGNAME "I/O error writing PID file `" + fileUtil::getFullFilePath(pidFn) + "'");
-						}
-					}
-					catch(...)
-					{
-						if (f)
-						{
-							::fclose(f);
-						}
-						ELOG(LOGNAME "Error writing to PID file `" + fileUtil::getFullFilePath(pidFn) + "'");
-					}
-					if (f)
-					{
-						::fclose(f);
-					}
-				}
-				else
-				{
-					ELOG(LOGNAME "Could not open PID file `" + fileUtil::getFullFilePath(pidFn) +
-						 "' for writing (" + errMessage().hideAsString() + ")");
-				}
-			}
-
-			// schedule relays
-			if (!gOptions.startInactive())
-			{
-				vector<config::streamConfig> relayList(gOptions.getRelayList());
-				if (!relayList.empty())
-				{
-					for_each(relayList.begin(), relayList.end(), scheduleRelay);
-				}
-			}
-
-			//threadedRunner::scheduleRunnable(new yp2);
-			threadedRunner::scheduleRunnable(new updater);
-
-			s_ControlEvents.push_back(serviceMain::sStop);
-#ifndef _WIN32
-			s_ControlEvents.push_back(serviceMain::sWINCH);
-			s_ControlEvents.push_back(serviceMain::sHUP);
-			s_ControlEvents.push_back(serviceMain::sUSR1);
-			s_ControlEvents.push_back(serviceMain::sUSR2);
-#endif
-
-#ifdef OPEN_PORT_CHECKER
-			//BOOL CheckPortTCP(short int dwPort , char*ipAddressStr)  
-			{  
-				struct sockaddr_in client;
-				int sock;
-
-				client.sin_family = AF_INET;
-				client.sin_port = htons(gOptions.portBase()-1000);
-				//client.sin_addr.s_addr = inet_addr(g_IPAddressForClients/*destBindAddr*/.hideAsString().c_str()/*"127.0.0.1");
-				client.sin_addr.s_addr = inet_addr("192.168.2.3"/*"127.0.0.1"*/);
-
-				sock = (int) socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-				ELOG(g_IPAddressForClients + ":" + tos(gOptions.portBase()) + /*destBindAddr*/ + " " + tos(connect(sock, (struct sockaddr *) &client,sizeof(client)) == 0));
-			}
-#endif
-
-			while (!iskilled())
-			{
-				metrics::metrics_wakeup();
-
-				#if defined(_WIN32) && defined(_WIN64)
-				int waitResult = WaitForMultipleObjects((DWORD)s_ControlEvents.size(),&(s_ControlEvents[0]),0,1000);
-				#else
-				int waitResult = WaitForMultipleObjects(s_ControlEvents.size(),&(s_ControlEvents[0]),0,1000);
-				#endif
-				switch (waitResult)
-				{
-					// stop signal
-					case WAIT_OBJECT_0:
-					{
-						setkill(true);
-						// remove the pid file on successful exit
-						if (!pidFn.empty() && uniFile::fileExists(pidFn))
-						{
-							uniFile::unlink(pidFn);
-						}
-						break;
-					}
-#ifdef _WIN32
-					case WAIT_OBJECT_0+1: // admin server
-					break;
-
-					case WAIT_OBJECT_0+2: // main msg loop
-					break;
-#else
-					case WAIT_OBJECT_0+1: // winch
-					{
-						// reserved, banned and blocked user agent list(s) reload
-						reloadBanLists();
-						reloadRipLists();
-						reloadAdminAccessList();
-						reloadAgentLists();
-						break;
-					}
-					case WAIT_OBJECT_0+2: // hup
-					{
-						ILOG(LOGNAME "Rotating log and W3C files [PID: " + tos(getpid()) + "]");
-						ROTATE;
-						printUpdateMessage();
-						rotatew3cFiles("w3c");
-						ILOG(LOGNAME "Rotated log and W3C files [PID: " + tos(getpid()) + "]");
-						break;
-					}
-					case WAIT_OBJECT_0+3: // usr1
-					{
-						// config reload
-						reloadConfig(false);
-						break;
-					}
-					case WAIT_OBJECT_0+4: // usr2
-					{
-						// forced config reload
-						reloadConfig(true);
-						break;
-					}
-					case WAIT_OBJECT_0+5: // admin server
-					break;
-
-					case WAIT_OBJECT_0+6: // main msg loop
-					break;
-#endif
-					default:
-					{
-					}
-				}
-			}
-
-			ILOG(LOGNAME "Exiting threads...");
-			if (gOptions.configRewrite())
-			{
-				gOptions.rewriteConfigurationFile((gOptions.configRewrite() == 1), true);
-			}
-		}
-		catch(const exception &ex)
-		{
-			ELOG(ex.what());
-			mainResult = -2;
-		}
-		catch(...)
-		{
-			ELOG(LOGNAME "Unknown exception caught");
-			mainResult = -1;
-		}
-
-		if (stats::getTotalUniqueListeners() > 0)
-		{
-			ILOG(LOGNAME "Terminating listeners...");
-			stats::kickAllClients(0, true);
-		}
-
-		// Stop all sources and wait up to ten seconds for everything to clear out
-		const streamData::streamIDs_t streamIds = streamData::getStreamIds(true);
-		if (!streamIds.empty())
-		{
-			ILOG(LOGNAME "Terminating sources...");
-			for (streamData::streamIDs_t::const_iterator i = streamIds.begin(); i != streamIds.end(); ++i)
-			{
-				// kick source off system
-				streamData::killStreamSource((*i));
-			}
-		}
-
-		if (yp2::requestsInQueue())
-		{
-			ILOG(LOGNAME "Running Directory cleanup...");
-			// now wait for YP to clear out
-			for (int x = 0; (x < 100); ++x)
-			{
-				if (yp2::requestsInQueue())
-				{
-					safe_sleep(0, 10000);
-				}
-				else
-				{
-					break;
-				}
-			}
-		}
-
-		for (vector<threadedRunner*>::const_iterator i = runners.begin(); i != runners.end(); ++i)
-		{
-			(*i)->stop();
-			(*i)->join();
-			delete (*i);
-		}
-
-		runners.clear();
-		metrics::metrics_wakeup(true);
-		metrics::metrics_stop();
-		auth::cleanup();
-
-		// general files to save
-		if (gOptions.saveBanListOnExit())
-		{
-			g_banList.save(gOptions.banFile(),0);
-		}
-
-		if (gOptions.saveRipListOnExit())
-		{
-			g_ripList.save(gOptions.ripFile(),0);
-		}
-
-		if (gOptions.saveAgentListOnExit())
-		{
-			g_agentList.save(gOptions.agentFile(),0);
-		}
-
-		if (gOptions.w3cEnable())
-		{
-			w3cLog::close(0);
-		}
-
-		// per-stream files to save
-		config::streams_t streams;
-		gOptions.getStreamConfigs(streams);
-		for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-		{
-			if (gOptions.saveBanListOnExit())
-			{
-				if (gOptions.read_stream_banFile((*i).first) && !gOptions.stream_banFile((*i).first).empty())
-				{
-					g_banList.save(gOptions.stream_banFile((*i).first),(*i).first);
-				}
-			}
-
-			if (gOptions.saveRipListOnExit())
-			{
-				if (gOptions.read_stream_ripFile((*i).first) && !gOptions.stream_ripFile((*i).first).empty())
-				{
-					g_ripList.save(gOptions.stream_ripFile((*i).first),(*i).first);
-				}
-			}
-
-			if (gOptions.saveAgentListOnExit())
-			{
-				if (gOptions.read_stream_agentFile((*i).first) && !gOptions.stream_agentFile((*i).first).empty())
-				{
-					g_agentList.save(gOptions.stream_agentFile((*i).first),(*i).first);
-				}
-			}
-
-			if (gOptions.read_stream_w3cLog((*i).first))
-			{
-				w3cLog::close((*i).first);
-			}
-		}
-
-		#ifdef _WIN32
-		if (win32_socket_cleanup_required)
-		{
-			win32SocketCleanup();
-		}
-		#endif
-
-		s_ControlEvents.clear();
-		DeleteAllCaches();
-
-		stats::getFinalStats();
-		bandWidth::getFinalAmounts();
-		utf8 t = timeString(::time(NULL) - g_upTime);
-		ILOG(LOGNAME + (t.empty() ? "Shutdown" : "Shutdown after " + t + " running") + eol());
-
-		curl_global_cleanup();
-
-/*#ifdef _WIN32
-		{
-			wchar_t buf[MAX_PATH] = L"\"";
-			STARTUPINFO si = {sizeof(si), };
-			PROCESS_INFORMATION pi;
-			GetModuleFileName(NULL, buf + 1, sizeof(buf) - 1);
-			wcsncat(buf, L"\"", MAX_PATH);
-			CreateProcess(NULL, buf, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
-		}
-#else
-#endif*/
-
-		// if we're in 'user' mode then if there was an exception
-		// we'll not immediately abort and instead keep things on
-		// display so it's easier for noobs, etc to see the error
-		if (!sDaemon && gOptions.screenLog() && (mainResult < 0))
-		{
-			ILOG(LOGNAME "Press any key to continue . . .");
-			while(!_kbhit()) {}
-			#ifdef _WIN32
-			// do this so we consume the input which
-			// as we already have a custom _kbhit()
-			// on non-Windows already does it for us
-			_getch();
-			#endif
-		}
-		return mainResult;
-	}
-};
-
-// create the appropriate handler for the app/daemon/service framework
-int sm_main(const vector<utf8> &args) throw()
-{
-#ifdef _WIN32
-	stdServiceWin32<sc_serv2_service> s("Shoutcast DNAS");
-#else
-	stdServiceUnix<sc_serv2_service> s;
-#endif
-	return s.sm_main(args);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/manifest.xml b/Src/Plugins/DSP/sc_serv3/manifest.xml
deleted file mode 100644
index 436c2df7..00000000
--- a/Src/Plugins/DSP/sc_serv3/manifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
- <assemblyIdentity
-  version="2.4.3.187"
-  processorArchitecture="X86"
-  name="Radionomy.SHOUTcast.DNAS"
-  type="win32"
- />
- <description>SHOUTcast DNAS 2.4.3 Build 187</description>
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
-  <security>
-   <requestedPrivileges>
-    <requestedExecutionLevel
-     level="asInvoker"
-    />
-   </requestedPrivileges>
-  </security>
- </trustInfo>
-</assembly>
\ No newline at end of file
diff --git a/Src/Plugins/DSP/sc_serv3/manifest64.xml b/Src/Plugins/DSP/sc_serv3/manifest64.xml
deleted file mode 100644
index 7dcc9720..00000000
--- a/Src/Plugins/DSP/sc_serv3/manifest64.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
- <assemblyIdentity
-  version="2.4.3.187"
-  processorArchitecture="amd64"
-  name="Radionomy.SHOUTcast.DNAS"
-  type="win32"
- />
- <description>SHOUTcast DNAS 2.4.3 Build 187</description>
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
-  <security>
-   <requestedPrivileges>
-    <requestedExecutionLevel
-     level="asInvoker"
-    />
-   </requestedPrivileges>
-  </security>
- </trustInfo>
-</assembly>
\ No newline at end of file
diff --git a/Src/Plugins/DSP/sc_serv3/messagefile.h b/Src/Plugins/DSP/sc_serv3/messagefile.h
deleted file mode 100644
index 4a0518fb..00000000
--- a/Src/Plugins/DSP/sc_serv3/messagefile.h
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-//  Values are 32 bit values laid out as follows:
-//
-//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
-//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
-//  +---+-+-+-----------------------+-------------------------------+
-//  |Sev|C|R|     Facility          |               Code            |
-//  +---+-+-+-----------------------+-------------------------------+
-//
-//  where
-//
-//      Sev - is the severity code
-//
-//          00 - Success
-//          01 - Informational
-//          10 - Warning
-//          11 - Error
-//
-//      C - is the Customer code flag
-//
-//      R - is a reserved bit
-//
-//      Facility - is the facility code
-//
-//      Code - is the facility's status code
-//
-//
-// Define the facility codes
-//
-
-
-//
-// Define the severity codes
-//
-
-
-//
-// MessageId: MSG_CMD_ERR
-//
-// MessageText:
-//
-// %1
-//
-#define MSG_CMD_ERR                      0xC0000001L
-
diff --git a/Src/Plugins/DSP/sc_serv3/messagefile.mc b/Src/Plugins/DSP/sc_serv3/messagefile.mc
deleted file mode 100644
index f7caddb6..00000000
--- a/Src/Plugins/DSP/sc_serv3/messagefile.mc
+++ /dev/null
@@ -1,6 +0,0 @@
-MessageId=0x1
-Severity=Error
-SymbolicName=MSG_CMD_ERR
-Language=English
-%1
-.
diff --git a/Src/Plugins/DSP/sc_serv3/metadata.cpp b/Src/Plugins/DSP/sc_serv3/metadata.cpp
deleted file mode 100644
index df55d841..00000000
--- a/Src/Plugins/DSP/sc_serv3/metadata.cpp
+++ /dev/null
@@ -1,459 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include "metadata.h"
-#include "aolxml/aolxml.h"
-#include "filenameMetadata.h"
-#include "file/fileUtils.h"
-#include "stl/stringUtils.h"
-#include "services/stdServiceImpl.h"
-#include "streamData.h"
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-metadata::metadata(const metadata &m)
-{
-	copy(m);
-}
-
-metadata& metadata::operator=(const metadata &m)
-{
-	copy(m);
-	return *this;
-}
-
-void metadata::clear() throw()
-{
-	for (keyValueMap_t::const_iterator i = m_keyValueMap.begin(); i != m_keyValueMap.end(); ++i)
-	{
-		delete (*i).second;
-	}
-	m_keyValueMap.clear();
-}
-
-void metadata::copy(const metadata &m) throw()
-{
-	clear();
-	for (keyValueMap_t::const_iterator i = m.m_keyValueMap.begin(); i != m.m_keyValueMap.end(); ++i)
-	{
-		if ((*i).second)
-		{
-			m_keyValueMap.insert(make_pair((*i).first,(*i).second->clone()));
-		}
-	}
-}
-
-metadata::~metadata() throw()
-{
-	clear();
-}
-
-// remove all values for key
-void metadata::removeValue(const string &key) throw()
-{
-	keyValueMap_t::iterator i = m_keyValueMap.find(key);
-	while (i != m_keyValueMap.end())
-	{
-		delete (*i).second;
-		m_keyValueMap.erase(i);
-		i = m_keyValueMap.find(key);
-	}
-}
-
-bool metadata::valueExists(const string &key) const throw()
-{
-	return (m_keyValueMap.find(key) != m_keyValueMap.end());
-}
-
-//// only returns first one found
-const metadata::metaValue_base* metadata::getValue(const string &key) const throw()
-{
-	keyValueMap_t::const_iterator i = m_keyValueMap.find(key);
-	return (i == m_keyValueMap.end() ? 0 : (*i).second);
-}
-
-//// only returns first one found
-utf8 metadata::getValueAsString(const std::string &key) const throw()
-{
-	static utf8 empty;
-
-	const metaValue_base *mv = getValue(key);
-	return (mv ? mv->toString() : empty);
-}
-
-void metadata::setValue(const string &key,metadata::metaValue_base *value) throw()
-{
-	m_keyValueMap.insert(make_pair(key,value));
-}
-
-utf8 metadata::safeXML(const string &tag,const metaValue_base *m) throw()
-{
-	static utf8 empty;
-	if (!m) return empty;
-	return m->toXML(tag);
-}
-
-utf8 metadata::safeString(const metaValue_base *m) throw()
-{
-	static utf8 empty;
-	if (!m) return empty;
-	return m->toString();
-}
-
-bool metadata::noMeaningfulMetadata() const throw()
-{
-	return (m_keyValueMap.find(NAME()) == m_keyValueMap.end());
-}
-
-bool metadata::get_replayGain(double &gain) const throw()
-{
-	pair<keyValueMap_t::const_iterator,keyValueMap_t::const_iterator> mdrange = m_keyValueMap.equal_range("TXXX");
-	for (keyValueMap_t::const_iterator i = mdrange.first; i != mdrange.second; ++i)
-	{
-		metadata::metaValue<ID3V2::userText_t> *md = dynamic_cast<metadata::metaValue<ID3V2::userText_t> *>((*i).second);
-		if (md)
-		{
-			ID3V2::userText_t ut = md->value();
-			if (ut.m_id == "replaygain_track_gain" || ut.m_id == "REPLAYGAIN_TRACK_GAIN")
-			{
-				gain = atof((const char *)ut.m_text.c_str());
-				return true;
-			}
-		}
-	}
-	return false;
-}
-
-bool metadata::get_replayGain() const throw()
-{
-	double g;
-	return get_replayGain(g);
-}
-
-const utf8 METADATA("<metadata>");
-const utf8 E_METADATA("</metadata>");
-#ifdef XML_DEBUG
-static const utf8 EOL(eol());
-#else
-static const utf8 EOL("");
-#endif
-
-// new xml for shoutcast		
-utf8 metadata::toXML() const throw()
-{
-	utf8 o;
-	o += "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + EOL;
-	o += METADATA + EOL;
-	for (keyValueMap_t::const_iterator i = m_keyValueMap.begin(); i != m_keyValueMap.end(); ++i)
-	{
-		o += safeXML((*i).first,(*i).second) + EOL;
-	}
-	o += E_METADATA + EOL;
-	return o;
-}
-
-utf8 metadata::toXML_fromFilename(const uniFile::filenameType &filename,const uniFile::filenameType &url,const utf8 &pattern) throw()
-{
-	utf8 o;
-
-	o += "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + EOL;
-	o += METADATA + EOL;
-
-	bool patternWorked(false);
-	try
-	{
-		filenameMetadata fm;
-		fm.setPattern(pattern);
-		fm.parse(filename);
-		const std::map<uniString::utf8,uniString::utf8>&m = fm.getTokens();
-		for (map<utf8,utf8>::const_iterator i = m.begin(); i != m.end(); ++i)
-		{
-			o += "<" + (*i).first + ">" + (*i).second.escapeXML() + "</" + (*i).first + ">" + EOL;
-		}
-		patternWorked = true;
-	}
-	catch(.../*const exception &ex*/)
-	{
-	}
-
-	if (!patternWorked)
-	{
-		try
-		{
-			string str = string(filename.toANSI(true));
-			utf8 song = asciiToUtf8(str);
-
-			filenameMetadata fm;
-			fm.setPattern(pattern);
-			fm.parse(song);
-			const std::map<uniString::utf8,uniString::utf8>&m = fm.getTokens();
-			for (map<utf8,utf8>::const_iterator i = m.begin(); i != m.end(); ++i)
-			{
-				o += "<" + (*i).first + ">" + (*i).second.escapeXML() + "</" + (*i).first + ">" + EOL;
-			}
-			patternWorked = true;
-		}
-		catch(.../*const exception &ex*/)
-		{
-			//ELOG(string("[METADATA] Failure converting filename to metadata ") + ex.what());
-		}
-	}
-
-	if (!patternWorked)
-	{
-		o += "<TIT2>";
-
-		utf8 us = fileUtil::stripSuffix(filename);
-		// remove path based on delimiter for Unix (/) Win32 (\) or MacOS (:)
-		us = fileUtil::stripPath(us,utf8("/"));
-		us = fileUtil::stripPath(us,utf8("\\"));
-		us = fileUtil::stripPath(us,utf8(":"));
-		o += us.escapeXML();
-		o += "</TIT2>" + EOL;
-	}
-
-	if (!url.empty())
-	{
-		utf8 u = url;
-		if ((u.find(utf8("://")) == utf8::npos) &&
-			(u.find(utf8("&")) != 0) &&
-			u.find(utf8("DNAS/streamart?sid=")) == utf8::npos &&
-			u.find(utf8("DNAS/playingart?sid=")) == utf8::npos)
-		{
-			u = "http://" + u;
-		}
-		o += "<URL>" + u.escapeXML() + "</URL>" + EOL;
-	}
-
-	o += E_METADATA + EOL;
-	return o;
-}
-
-utf8 metadata::toFixedString(const uniFile::filenameType &filename) throw()
-{
-	utf8 o;
-
-	bool patternWorked(false);
-	try
-	{
-		filenameMetadata fm;
-		fm.setPattern("%N");
-		fm.parse(filename);
-		const std::map<uniString::utf8,uniString::utf8>&m = fm.getTokens();
-		for (map<utf8,utf8>::const_iterator i = m.begin(); i != m.end(); ++i)
-		{
-			o = (*i).second;
-		}
-		patternWorked = true;
-	}
-	catch(.../*const exception &ex*/)
-	{
-	}
-
-	if (!patternWorked)
-	{
-		try
-		{
-			string str = string(filename.toANSI(true));
-			utf8 song = asciiToUtf8(str);
-
-			filenameMetadata fm;
-			fm.setPattern("%N");
-			fm.parse(song);
-			const std::map<uniString::utf8,uniString::utf8>&m = fm.getTokens();
-			for (map<utf8,utf8>::const_iterator i = m.begin(); i != m.end(); ++i)
-			{
-				o = (*i).second;
-			}
-			patternWorked = true;
-		}
-		catch(.../*const exception &ex*/)
-		{
-			//ELOG(string("[METADATA] Failure converting filename to metadata ") + ex.what());
-		}
-	}
-
-	if (!patternWorked)
-	{
-		o = filename;
-	}
-
-	return o;
-}
-
-uniString::utf8 metadata::convert_3902_to_shoutcast1(const uniString::utf8 &d, const streamID_t id) throw (std::runtime_error)
-{
-	utf8 o;
-	aolxml::node *n = 0;
-	try
-	{
-		n = aolxml::node::parse(d.hideAsString());
-		utf8 artist = aolxml::subNodeText(n, "/metadata/" + ARTIST(), (utf8)"");
-		utf8 name = aolxml::subNodeText(n, "/metadata/" + NAME(), (utf8)"");
-
-		if (!artist.empty())
-		{
-			if (!o.empty())
-			{
-				o += " - ";
-			}
-			o += artist;
-		}
-		if (!name.empty())
-		{
-			if (!o.empty())
-			{
-				o += " - ";
-			}
-			o += name;
-		}
-
-		if (!streamData::validateTitle(o))
-		{
-			WLOG("[ADMINCGI sid=" + tos(id) + "] Title update rejected - value not allowed: " + o);
-			o.clear();
-		}
-
-		o = "StreamTitle='" + o + "';";
-
-		aolxml::node::nodeList_t nodes = aolxml::node::findNodes(n,"/metadata/extension/title");
-		if (!nodes.empty())
-		{
-			for (aolxml::node::nodeList_t::const_iterator i = nodes.begin(); i != nodes.end(); ++i)
-			{
-				if (*i)
-				{
-					// skip the first element as that is the current song and not what we want to get
-					int seq = atoi((*i)->findAttributeString("seq").c_str());
-					if (seq == 2)
-					{
-						utf8 next = ((*i)->pcdata());
-						if (streamData::validateTitle(next))
-						{
-							o += "StreamNext='" + next + "';";
-						}
-						break;
-					}
-				}
-			}
-		}
-
-		utf8 url = aolxml::subNodeText(n, "/metadata/" + URL(), (utf8)"");
-		if (!url.empty())
-		{
-			utf8::size_type pos = url.find(utf8("://"));
-			if (pos == utf8::npos)
-			{
-				url = "http://" + url;
-			}
-
-			o += "StreamUrl='" + url + "';";
-		}
-	}
-	catch(const exception &ex)
-	{
-		forget(n);
-		throw std::runtime_error(ex.what());
-	}
-	forget(n);
-	return o;
-}
-
-uniString::utf8 metadata::get_song_title_from_3902(const uniString::utf8 &d)
-{
-	utf8 o;
-	utf8 result;
-	aolxml::node *n = 0;
-	try
-	{
-		n = aolxml::node::parse(d.hideAsString());
-		utf8 artist = aolxml::subNodeText(n, "/metadata/" + ARTIST(), (utf8)"");
-		utf8 name = aolxml::subNodeText(n, "/metadata/" + NAME(), (utf8)"");
-
-		if (!artist.empty())
-		{
-			if (!result.empty()) result += " - ";
-			result += artist;
-		}
-		if (!name.empty())
-		{
-			if (!result.empty()) result += " - ";
-			result += name;
-		}
-	}
-	catch(const exception &ex)
-	{
-		forget(n);
-		throw std::runtime_error(ex.what());
-	}
-	forget(n);
-	return result;
-}
-
-uniString::utf8 metadata::get_XX_from_3902(const uniString::utf8& node, const uniString::utf8 &d,
-										   const uniString::utf8 &old) throw (std::runtime_error)
-{
-	utf8 result;
-	aolxml::node *n = 0;
-	try
-	{
-		n = aolxml::node::parse(d.hideAsString());
-		result = aolxml::subNodeText(n, utf8("/metadata/" + node).hideAsString(), old);
-	}
-	catch(const exception &ex)
-	{
-		forget(n);
-		throw std::runtime_error(ex.what());
-	}
-	forget(n);
-	return result;
-}
-
-std::vector<uniString::utf8> metadata::get_nextsongs_from_3902(const uniString::utf8 &d,
-															   std::vector<uniString::utf8>& oldSongList,
-															   const bool first) throw (std::runtime_error)
-{
-	aolxml::node *n = 0;
-	std::vector<uniString::utf8> nextSongList;
-
-	try
-	{
-		n = aolxml::node::parse(d.hideAsString());
-		aolxml::node::nodeList_t nodes = aolxml::node::findNodes(n,"/metadata/extension/title");
-		if(!nodes.empty())
-		{
-			for (aolxml::node::nodeList_t::const_iterator i = nodes.begin(); i != nodes.end(); ++i)
-			{
-				if (*i)
-				{
-					// skip the first element as that is the current song and not what we want to hold
-					int seq = atoi((*i)->findAttributeString("seq").c_str());
-					if ((seq > 1 && !first) || (first && seq == 2))
-					{
-						nextSongList.push_back((*i)->pcdata());
-					}
-					if (first)
-					{
-						break;
-					}
-				}
-			}
-		}
-		else
-		{
-			// if there are no nodes then as this could be from a stream-specific metadata
-			// update then we need to preserve the existing list so it's not cleared out.
-			forget(n);
-			return oldSongList;
-		}
-	}
-	catch(const exception &ex)
-	{
-		forget(n);
-		throw std::runtime_error(ex.what());
-	}
-	forget(n);
-	return nextSongList;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/metadata.h b/Src/Plugins/DSP/sc_serv3/metadata.h
deleted file mode 100644
index b3bb289c..00000000
--- a/Src/Plugins/DSP/sc_serv3/metadata.h
+++ /dev/null
@@ -1,151 +0,0 @@
-#pragma once
-#ifndef metadata_H_
-#define metadata_H_
-
-#include <map>
-#include "ID3miniParsers.h"
-#include "unicode/uniFile.h"
-
-// metadata class. Mostly just a container for key/value pairs
-// stored ala ID3V2. Some helper functions also to aid in
-// ID3V1 mapping
-/*
-	metadata strings are stored in utf8 format
-*/
-class metadata
-{
-public:
-	// The metadata values are polymorphic since they may contain all sorts of differnt
-	// types of information depending on the specific tag. All you can do with them
-	// is clone them or convert them to xml
-	class metaValue_base
-	{
-	public:
-		virtual ~metaValue_base(){}
-		virtual metaValue_base* clone() const throw() = 0;
-		virtual metaValue_base* clone(const std::vector<uniString::utf8> &s) const = 0;
-		virtual uniString::utf8 toXML(const std::string &tag) const throw() = 0;
-		virtual uniString::utf8 toString() const throw() = 0;
-	};
-
-	// templatized subclass of metaValue_base. You instantiate this with a class or
-	// struct of your creation that represents the specific data for a tag.
-	// The most interesting part is the constructor. You must provide
-	// an overload in the ID3V2 space (see ID3miniParsers.h) of the function
-	// fromStringList() which loads your struct from a list of unicode strings. A string
-	// list is adequate to represent all data coming out of ID3V2. Even binary hunks which
-	// get base64 encoded before being passed in a list to your constructor.
-	template<typename T>
-	class metaValue: public metaValue_base
-	{
-		T								m_value;
-		std::vector<uniString::utf8>	m_originalStringList;
-
-	public:
-		metaValue() {}
-		metaValue(const T &v, const std::vector<uniString::utf8> &slist) : m_value(v), m_originalStringList(slist) {}
-		metaValue(const std::vector<uniString::utf8> &slist) : m_originalStringList(slist)
-		{
-			ID3V2::fromStringList(slist,m_value);
-		}
-		virtual metaValue_base* clone() const throw()
-				{ return new metaValue<T>(m_originalStringList); }
-		virtual metaValue_base* clone(const std::vector<uniString::utf8> &slist) const // clone with new data
-				{ return new metaValue<T>(slist); }
-		virtual uniString::utf8 toString() const throw()
-				{ return ID3V2::toString(m_value); }
-		virtual uniString::utf8 toXML(const std::string &tag) const throw()
-				{ return ID3V2::toXML(uniString::utf8(tag),m_value); }
-		const T& value() const throw() { return m_value; }
-	};
-
-private:
-	typedef std::multimap<std::string,metaValue_base*> keyValueMap_t;
-	keyValueMap_t m_keyValueMap;
-
-	// make a copy of this object. Necessary because data is allocated on heap
-	void copy(const metadata &m) throw();
-
-public:
-	metadata() { m_keyValueMap.clear(); }
-	// force our private copy() to be called in all copy scenarios
-	metadata(const metadata &m);
-	metadata& operator=(const metadata &m);
-	/////////
-
-	~metadata() throw();
-	void clear() throw();
-	bool empty() const throw() { return m_keyValueMap.empty(); }
-
-	// return true if a particular value exists at least once
-	bool valueExists(const std::string &key) const throw();
-	// note: setValue() takes ownership of the 'value' parameter. This will
-	// add another key/value pair. Since we have a multimap, existing values of "key" are
-	// not replaced.
-	void setValue(const std::string &key,metaValue_base* value) throw();
-	void removeValue(const std::string &key) throw(); // remove all values for key
-
-	// only returns first one found
-	const metaValue_base* getValue(const std::string &key) const throw();
-
-	// returns a string representation of first instance found
-	uniString::utf8 getValueAsString(const std::string &key) const throw();
-
-	// V1 mappings
-	static const std::string& NAME() throw()	{ static const std::string k("TIT2"); return k; }
-	static const std::string& ARTIST() throw()	{ static const std::string k("TPE1"); return k; }
-	static const std::string& ALBUM() throw()	{ static const std::string k("TALB"); return k; }
-	static const std::string& YEAR() throw()	{ static const std::string k("TYER"); return k; }
-	static const std::string& COMMENT() throw() { static const std::string k("COMM"); return k; }
-	static const std::string& GENRE() throw()	{ static const std::string k("TCON"); return k; }
-
-	// other mappings (flac/ogg/internal etc)
-	static const std::string& COMPOSER() throw()		{ static const std::string k("TCOM"); return k; }
-	static const std::string& PUBLISHER() throw()		{ static const std::string k("TPUB"); return k; }
-	static const std::string& TRACKNUMBER() throw()		{ static const std::string k("TRCK"); return k; }
-	static const std::string& DISKNUMBER() throw()		{ static const std::string k("TPOS"); return k; }
-	static const std::string& ALBUMARTIST() throw()		{ static const std::string k("TPE2"); return k; }
-	static const std::string& BAND() throw()			{ static const std::string k("TPE2"); return k; }
-	static const std::string& PERFORMER() throw()		{ static const std::string k("TPE2"); return k; }
-	static const std::string& CONDUCTOR() throw()		{ static const std::string k("TPE3"); return k; }
-	static const std::string& BEATSPERMINUTE() throw()	{ static const std::string k("TBPM"); return k; }
-	static const std::string& LYRICS() throw()			{ static const std::string k("USLT"); return k; }
-	static const std::string& ENCODERSETTINGS() throw()	{ static const std::string k("TSSE"); return k; }
-	static const std::string& RATING() throw()			{ static const std::string k("POPM"); return k; }
-	static const std::string& PICTURE() throw()			{ static const std::string k("APIC"); return k; }
-	static const std::string& CUSTOMTEXT() throw()		{ static const std::string k("TXXX"); return k; }
-	static const std::string& VERSION() throw()			{ static const std::string k("TPE4"); return k; }
-	static const std::string& COPYRIGHT() throw()		{ static const std::string k("TCOP"); return k; }
-	static const std::string& LICENSE() throw()			{ static const std::string k("TOWN"); return k; }
-	static const std::string& ISRC() throw()			{ static const std::string k("TSRC"); return k; }
-
-	static const std::string& DJ() throw()	{ static const std::string k("DJ"); return k; }
-	static const std::string& URL() throw()	{ static const std::string k("URL"); return k; }
-
-	// output xml. "safe" functions deal with null value scenario without barfing
-	static uniString::utf8 safeXML(const std::string &tag,const metaValue_base *m) throw();
-	static uniString::utf8 safeString(const metaValue_base *m) throw();
-
-	uniString::utf8 toXML() const throw();
-
-	static uniString::utf8 toXML_fromFilename(const uniFile::filenameType &filename,
-											  const uniFile::filenameType &url,
-											  const uniString::utf8 &pattern) throw();
-	static uniString::utf8 toFixedString(const uniFile::filenameType &filename) throw();
-
-	bool get_replayGain(double &gain) const throw(); // return true if value found
-	bool get_replayGain() const throw(); // same, but just the return value
-	bool noMeaningfulMetadata() const throw(); // return true if metadata is empty, or stuff in there is not
-												// useful for user (like replaygain).
-
-	typedef size_t streamID_t;
-	static uniString::utf8 convert_3902_to_shoutcast1(const uniString::utf8 &d, const streamID_t id) throw(std::runtime_error);
-	static uniString::utf8 get_song_title_from_3902(const uniString::utf8 &d);
-	static uniString::utf8 get_XX_from_3902(const uniString::utf8& node, const uniString::utf8 &d, const uniString::utf8 &old) throw(std::runtime_error);
-	static std::vector<uniString::utf8> get_nextsongs_from_3902(const uniString::utf8 &d, std::vector<uniString::utf8>& oldSongList, bool first = false) throw(std::runtime_error);
-};
-
-extern const uniString::utf8 METADATA;
-extern const uniString::utf8 E_METADATA;
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/metrics.cpp b/Src/Plugins/DSP/sc_serv3/metrics.cpp
deleted file mode 100644
index 8cb2e1a3..00000000
--- a/Src/Plugins/DSP/sc_serv3/metrics.cpp
+++ /dev/null
@@ -1,1249 +0,0 @@
-/* metrics,c  routines for sending client details to external server */
-
-#include <curl/curl.h>
-#include <string>
-#include <deque>
-#include <list>
-#include <fstream>
-#include <cstdlib>
-
-#include "bandwidth.h"
-#include "metrics.h"
-#include "protocol_shoutcastClient.h"
-#include "stats.h"
-#include "config.h"
-#include "services/stdServiceImpl.h"
-#include "file/fileUtils.h"
-#include "webNet/urlUtils.h"
-#include "aolxml/aolxml.h"
-
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME "METRICS"
-#define DEBUG_LOG(...)    do { if (gOptions.adMetricsDebug()) DLOG(__VA_ARGS__); } while (0)
-
-namespace metrics
-{
-#if 0
-#define METRICS_LICENCE_URL "http://www.google.com"
-#define LICENCE_RESP "\
-<SHOUTCAST>\
-  <FUNCTION level='10' />\
-  <METRICS url=\"https://metrics.shoutcast.com/metrics\" />\
-  <METRICSAD url=\"https://ads.shoutcast.com/dnas\" />\
-  <YP url=\"https://dnas-licensing.shoutcast.com/yp\" />\
-  <AUTH url=\"//auth.shoutcast.com/AddShout\" />\
-  <AD url=\"//ads.shoutcast.com/dnas\" />\
-</SHOUTCAST>\
-"
-#else
-#define METRICS_LICENCE_URL "https://dnas-licensing.shoutcast.com/registration/"
-#endif
-    class service;
-
-    struct metrics_info
-    {
-        httpHeaderMap_t vars;
-        utf8 url;
-        size_t id;
-        unsigned int match;
-        streamData::streamID_t sid;
-        int group;
-        int mode;
-        metrics_info() : id(0), sid(0), group(0), mode(0) { match = 0; }
-    };
-
-    struct metrics_data
-    {
-        utf8 post;
-        utf8 url;
-        virtual int post_callback()   { return 0; }
-        virtual int failed_callback() { return 0; }
-        size_t id;
-        int group;
-        time_t m_schedule;
-        int flags;
-        streamData::streamID_t sid;
-
-        metrics_data () : id(0), group(0), m_schedule((time_t)0), flags(0), sid(0) {}
-        metrics_data (metrics_info &info) : id(0), group(0), m_schedule((time_t)0), flags(0) { sid = info.sid; }
-        virtual ~metrics_data() {}
-
-        virtual const char *name()  { return "metrics"; }
-    };
-
-    struct parse_response_data : public metrics_data
-    {
-        stringstream       m_ss;
-        size_t             m_length;
-
-        parse_response_data() : metrics_data(), m_length(0) {}
-        parse_response_data(metrics_info &info) : metrics_data(info), m_length(0) {}
-
-        virtual int post_callback() = 0;
-        virtual int failed_callback() { WLOG ("failed " + utf8(name()) + " attempt with " + m_ss.str(), LOGNAME, sid); m_ss.str(""); return 0; }
-    };
-
-
-    struct licence_data : public parse_response_data
-    {
-        licence_data() {;}
-        licence_data (metrics_info &info) : parse_response_data (info) {;}
-        const char *name()  { return "licence"; }
-
-        int post_callback();
-        void handleURLs (aolxml::node *root);
-        void checkURLNode (aolxml::node *root, const char *ref, service_t s);
-    };
-
-
-    struct YP_data : public parse_response_data
-    {
-        YP_data (metrics_info &info) : parse_response_data (info) {;}
-
-        const char *name()  { return "YP"; }
-        int post_callback();
-    };
-
-
-// libcurl related stuff
-
-#ifdef CURLOPT_PASSWDFUNCTION
-/* make sure that prompting at the console does not occur */
-static int my_getpass(void *client, char *prompt, char *buffer, int buflen)
-{
-	buffer[0] = '\0';
-	return 0;
-}
-#endif
-
-static int handle_returned_header(void * ptr, size_t size, size_t nmemb, void *stream)
-{
-    int amount = (int)(size * nmemb);
-#if defined(_DEBUG) || defined(DEBUG)
-    metrics_data *entry = (metrics_data *)stream;
-    DEBUG_LOG (utf8(entry->name()) + " header [" + utf8 ((const char*)ptr, amount>2 ? amount-2 : 0) + "]", LOGNAME);
-#endif
-    bandWidth::updateAmount(bandWidth::AUTH_AND_METRICS, amount);
-    return amount;
-}
-
-
-static int handle_returned_data(void * ptr, size_t size, size_t nmemb, void * /*stream*/)
-{
-    int amount = (int)(size * nmemb);
-#if defined(_DEBUG) || defined(DEBUG)
-    DEBUG_LOG ("Body " + tos (amount) + ":" + utf8 ((const char*)ptr, amount), LOGNAME);
-#endif
-    bandWidth::updateAmount(bandWidth::AUTH_AND_METRICS, amount);
-    return amount;
-}
-
-
-static size_t handle_licence_body (void *ptr, size_t size, size_t nmemb, void *stream)
-{
-    licence_data *entry = (licence_data *)stream;
-    size_t length = size * nmemb;
-    if (entry->m_ss)
-    {
-        if (entry->m_length > 20000)
-        {
-            WLOG ("response for was too large, ignoring for now");
-            return 0;
-        }
-        //DLOG ("Adding " + tos (length) + ":" + utf8 ((const char*)ptr, length));
-        entry->m_ss.write ((const char*)ptr, length);
-        entry->m_length += length;
-    }
-
-    bandWidth::updateAmount (bandWidth::ADVERTS, length);
-    return length;
-}
-
-
-
-    time_t                  g_metrics_updated = 0, g_recheck_services = 0;
-    AOL_namespace::mutex    g_serversLock;
-    utf8                    g_licence_DID = "";
-    static short int        g_uniqueMetricsId = 0;
-
-const short int getMetricsClientId()
-{
-	return ++g_uniqueMetricsId;
-}
-
-
-class service
-{
-protected:
-    int                 m_queueCount;
-    const short int 	m_id;
-    unsigned short      m_flags;
-	CURL 			*m_curl;
-	string 			desc;
-	bool			in_use;
-	bool			running;
-	utf8 			url;
-	const time_t		updated;
-	time_t			stop_time;
-	utf8			main_post;
-	list<metrics_data*>	queue;
-
-	virtual void resetURL (utf8 &new_url)
-	{
-		if (new_url == "")
-			return;
-		url = new_url;
-		m_curl = webClient::setupCurlDefaults (m_curl, LOGNAME, url, 5L);
-		curl_easy_setopt (m_curl, CURLOPT_HEADERFUNCTION, handle_returned_header);
-		curl_easy_setopt (m_curl, CURLOPT_WRITEFUNCTION, handle_returned_data);
-#ifdef CURLOPT_PASSWDFUNCTION
-		curl_easy_setopt (m_curl, CURLOPT_PASSWDFUNCTION, my_getpass);
-#endif
-	}
-
-public:
-
-	friend void addToServices(metrics_info &info);
-	friend void metrics_stop();
-
-	service(short int in_type, const char *in_url, const string in_desc) : m_id(getMetricsClientId()), in_use(false), running(true),
-				updated(g_metrics_updated), stop_time(0)
-	{
-        httpHeaderMap_t vars;
-        m_flags = in_type;
-        m_queueCount = 0;
-		url = in_url;
-		desc = in_desc;
-		m_curl = NULL;
-
-		resetURL (url);
-
-		vars["server"] = "Shoutcast v" + gOptions.getVersionBuildStrings();
-		vars["port"] = tos(g_portForClients);
-		main_post = encodeVariables(vars);
-		DEBUG_LOG ("using " + url + " : " + main_post, in_desc.c_str());
-	}
-
-	virtual ~service(void)
-	{
-		metrics_cleanup();
-		curl_easy_cleanup (m_curl);
-	}
-
-    virtual metrics_data *metrics_node(metrics_info &info)  { return new metrics_data (info); }
-    virtual int failedEntry (metrics_data *) { return 0; }
-
-	int  addEntry (metrics_info &info);
-	void metrics_cleanup(void);
-
-	static THREAD_FUNC process(void* arg);
-};
-
-
-class licenceService : public service
-{
-    int m_initial;
-    time_t m_nextCheck;  // for licence
-
-    void addCheckup(time_t when);
-    metrics_data *metrics_node (metrics_info &info)  { return new licence_data (info); }
-
-    void resetURL (utf8 &new_url)
-    {
-        //DLOG ("in reset url with " + new_url);
-        if (new_url == "")
-            return;
-        url = new_url;
-        m_curl = webClient::setupCurlDefaults (m_curl, LOGNAME, url, 5L);
-        curl_easy_setopt (m_curl, CURLOPT_HEADERFUNCTION, handle_returned_header);
-        curl_easy_setopt (m_curl, CURLOPT_WRITEFUNCTION, handle_licence_body);
-#ifdef CURLOPT_PASSWDFUNCTION
-        curl_easy_setopt (m_curl, CURLOPT_PASSWDFUNCTION, my_getpass);
-#endif
-    }
-
-public:
-
-    licenceService() : service (METRIC_LICENCE, "", "licence")
-    {
-        m_initial = 0;
-        m_nextCheck = (time_t)0;
-        utf8 s = METRICS_LICENCE_URL;
-        resetURL (s);
-        addCheckup (::time(NULL));
-    }
-
-    int failedEntry (metrics_data *entry)
-    {
-        if (entry->sid == 0)  // assume licence checker
-        {
-            if (entry->flags & 1)
-                return -1;  // no licence, so no retry
-            int retry = -1;
-            m_initial++;
-            if (m_initial == 1)
-                retry = 1;
-            else if (m_initial == 2)
-            {
-                retry = 10;
-            }
-            else if (m_initial == 3)
-                //retry = 60;
-                addCheckup (::time(NULL) + 60);
-            else
-            {
-                m_initial = 0;
-                addCheckup (::time(NULL) + 3600);
-            }
-            return retry;
-        }
-        return 0;
-    }
-};
-
-
-class ypService : public service
-{
-    void resetURL (utf8 &new_url)
-    {
-        //DLOG ("in reset url with " + new_url);
-        if (new_url == "")
-            return;
-        url = new_url;
-        m_curl = webClient::setupCurlDefaults (m_curl, LOGNAME, url, 15L, 4L);
-        curl_easy_setopt (m_curl, CURLOPT_HEADERFUNCTION, handle_returned_header);
-        curl_easy_setopt (m_curl, CURLOPT_WRITEFUNCTION, handle_licence_body);
-#ifdef CURLOPT_PASSWDFUNCTION
-        curl_easy_setopt (m_curl, CURLOPT_PASSWDFUNCTION, my_getpass);
-#endif
-    }
-
-public:
-
-    ypService() : service (METRIC_YP, METRICS_YP_URL, "YP")  { resetURL (url); }
-
-    metrics_data *metrics_node(metrics_info &info)  { return new YP_data (info); }
-
-    int failedEntry (metrics_data *entry)
-    {
-        if (entry->flags)
-            return -1;
-        entry->flags |= 1;
-        return 15;
-    }
-};
-
-
-list <service*> servers;
-
-
-int service::addEntry(metrics_info &info)
-{
-	httpHeaderMap_t &vars = info.vars;
-	bool start_thread = false, queue_it = false;
-
-	if (vars.empty())
-    {
-        if (running && (g_metrics_updated > updated))
-        {
-            DEBUG_LOG("Service " + tos(m_id) + " expired, start clean up", LOGNAME, (size_t)info.sid);
-            running = false;
-        }
-
-		if ((running == false) && queue.empty())
-		{
-			DEBUG_LOG ("[METRICS] service to be removed, " + desc);
-			return -1;  // trigger a service removal
-		}
-		start_thread = true;
-	}
-
-	if (stop_time == 0 && start_thread == false)
-	{
-		if (running && queue.size() < gOptions.metricsMaxQueue())
-			queue_it = true;
-	}
-	if (info.mode || queue_it)
-	{
-		metrics_data *copy = metrics_node(info);
-		copy->id = info.id;
-		copy->sid = info.sid;
-		copy->post = encodeVariables(vars);
-		copy->url = info.url;
-		start_thread = true;
-		if (info.mode == 2)
-			queue.push_front(copy);
-		else
-			queue.push_back(copy);
-        m_queueCount++;
-		DEBUG_LOG("[METRICS sid=" + tos(copy->sid) + "] Added " + utf8(desc) + " details to queue [count: " + tos(queue.size()) + "]", LOGNAME, copy->sid);
-	}
-
-	if ((in_use == false) && start_thread && !queue.empty())
-	{
-		in_use = true;
-		SimpleThread(service::process, this);
-	}
-	return 0;
-}
-
-void service::metrics_cleanup()
-{
-	if (!queue.empty())
-	{
-        DEBUG_LOG("Purging " + tos(queue.size()) + " entries from " + tos(m_id), LOGNAME);
-
-		while (!queue.empty())
-		{
-			list<metrics_data*>::iterator to_go = queue.begin();
-			metrics_data *m = *to_go;
-			//DLOG ("erasing metric for " + m->post);
-			queue.erase(to_go);
-			delete m;
-			m = NULL;
-		}
-	}
-}
-
-THREAD_FUNC service::process(void* arg)
-{
-	try
-	{
-		service* m_service = reinterpret_cast<service*>(arg);
-		if (m_service)
-		{
-            g_serversLock.lock();
-
-			if (m_service->stop_time)
-			{
-				time_t diff = ::time(NULL) - m_service->stop_time;
-
-				if (diff > (12 * 3600)) // drop after 12 hours of no response
-				{
-					m_service->metrics_cleanup();
-					m_service->in_use = false;
-					g_serversLock.unlock();
-					return 0;
-				}
-				DEBUG_LOG ("[METRICS] time since stopping " + tos ((long)diff));
-			}
-            if (m_service->queue.size() < 5)
-            {
-                // allow for a build up of metrics over a small time, saves excessive thread creation
-                g_serversLock.unlock();
-                safe_sleep (0, 80);
-                g_serversLock.lock();
-			}
-
-            int count = 0;
-            int try_later = 0;
-            time_t stop_time = (time_t)0;
-
-			while (1)
-			{
-				utf8 post;
-				char errormsg[CURL_ERROR_SIZE] = {0};
-
-				if (m_service->m_queueCount <= try_later)
-				{
-                    if (count)
-                        DEBUG_LOG ("[METRICS] run queue " + m_service->desc + " complete");
-					break;
-				}
-
-				metrics_data *entry = m_service->queue.front();
-				m_service->queue.pop_front();
-                m_service->m_queueCount--;
-                if (entry->m_schedule > 0 && entry->m_schedule > time(NULL))
-                {
-                    m_service->queue.push_back (entry);
-                    m_service->m_queueCount++;
-                    try_later++;
-                    continue;
-                }
-				g_serversLock.unlock();
-
-				if (entry->url.empty() == false)
-					m_service->resetURL (entry->url);  // update the URL
-
-                bool failed = false;
-
-                if (entry->post.empty())
-                {
-                    if (entry->url.empty())
-                        DLOG ("empty Post/URL update on " + m_service->desc, LOGNAME);
-                }
-                else
-                {
-					CURLcode ret = CURLE_FAILED_INIT;
-
-					if (m_service->m_curl)
-					{
-						post = entry->post + "&" + m_service->main_post;
-
-#if defined(_DEBUG) || defined(DEBUG)
-						DEBUG_LOG(m_service->desc + utf8(" POST body: " + post), LOGNAME, entry->sid);
-#endif
-
-						curl_easy_setopt (m_service->m_curl, CURLOPT_ERRORBUFFER, errormsg);
-						curl_easy_setopt (m_service->m_curl, CURLOPT_HEADERDATA, entry);
-                        curl_easy_setopt (m_service->m_curl, CURLOPT_WRITEDATA, entry);
-						curl_easy_setopt (m_service->m_curl, CURLOPT_POSTFIELDSIZE, post.size());
-						curl_easy_setopt (m_service->m_curl, CURLOPT_POSTFIELDS, post.c_str());
-						ret = curl_easy_perform (m_service->m_curl);
-                        ++count;
-					}
-
-					if (ret != CURLE_OK)
-					{
-                        ELOG("Request failed on " + m_service->desc + " with "
-                                + (errormsg[0] ? errormsg : curl_easy_strerror(ret)), LOGNAME, entry->sid);
-                        failed = true;
-                    }
-                    else
-                    {
-                        long response_code = 0;
-                        curl_easy_getinfo (m_service->m_curl, CURLINFO_RESPONSE_CODE, &response_code);
-                        if (response_code >= 200 && response_code < 300)
-                        {
-                            entry->post_callback();
-                            stop_time = 0;
-                        }
-                        else
-                        {
-                            ELOG("Request failed on " + m_service->desc + " with code " + tos (response_code));
-                            entry->failed_callback();
-                            failed = true;
-                        }
-                    }
-                }
-                if (failed && !iskilled())      // a failed metric, and server still running
-                {
-                    int delay = m_service->failedEntry (entry);
-
-                    if (stop_time == 0)
-                        stop_time = ::time(NULL);
-                    if (delay >= 0)  // do we drop this one? < 0 something else is done, else put back on queue
-                    {
-                        g_serversLock.lock();
-                        m_service->queue.push_front (entry);
-                        m_service->m_queueCount++;
-
-                        if (delay == 0)
-                        {
-                            m_service->stop_time = stop_time;
-                            break;
-                        }
-
-                        g_serversLock.unlock();
-                        DLOG ("sleeping for " + tos (delay) + "s on " + m_service->desc);
-                        safe_sleep (delay, 0);
-                        g_serversLock.lock();
-                        continue;
-                    }
-                }
-
-                delete entry;
-                entry = NULL;
-                g_serversLock.lock();
-                m_service->stop_time = stop_time;
-            } // while
-
-            m_service->in_use = false;
-            g_serversLock.unlock();
-		}
-	}
-    catch(exception &e)
-    {
-        service* m_service = reinterpret_cast<service*>(arg);
-        DLOG ("abort in metric " + m_service->desc + ", " + e.what());
-        safe_sleep (0,500);
-        if (m_service)
-        {
-            g_serversLock.lock();
-            m_service->in_use = false;
-            g_serversLock.unlock();
-        }
-    }
-    return 0;
-}
-
-
-void addToServices(metrics_info &info)
-{
-    g_serversLock.lock();
-    list <service*>::iterator it = servers.begin();
-
-	while (it != servers.end())
-	{
-		service &s = **it;
-		// DLOG ("Applying metric to " + s.desc + "(" + tos((long)s.flags) + ", " + tos((long)info.match) + ")");
-		if ((s.m_flags & info.match) && s.addEntry(info) < 0)
-		{
-			list <service*>::iterator to_go = it;
-			service *s = *it;
-			++it;
-			servers.erase(to_go);
-			delete s;
-			s = NULL;
-		}
-		else
-		{
-			++it;
-		}
-    }
-    g_serversLock.unlock();
-}
-
-
-// assume only called from one thread.
-void metrics_wakeup(bool force)
-{
-	time_t now = ::time(NULL);
-    metrics_info info;
-    info.match = METRIC_AUDIENCE | METRIC_ADVERT | METRIC_LICENCE | METRIC_YP;
-    if ((now > g_recheck_services) || force)
-    {
-        if (force)
-        {
-            g_recheck_services = now + 60;
-        }
-        info.match |= METRIC_AUDIENCE | METRIC_ADVERT;
-
-        g_recheck_services = now + 60; // next recheck in case stalled metrics
-    }
-    addToServices(info);
-}
-
-
-void metrics_listener_new(const protocol_shoutcastClient &client)
-{
-	const streamData *sd = client.m_streamData;
-	if (sd && !sd->radionomyID().empty())
-	{
-		metrics_info info;
-        const streamData::streamInfo &stream = sd->getInfo();
-
-		info.vars["action"] = "listener_add";
-		info.vars["tstamp"] = tos(::time(NULL));
-		info.vars["host"] = sd->streamPublicIP();
-		info.vars["radionomyid"] = info.vars["ref"] = sd->radionomyID();
-		info.vars["client"] = tos(client.m_unique);
-		info.vars["group"] = tos(client.getGroup());
-		info.vars["ip"] = client.m_clientAddr;
-		info.vars["srvid"] = stream.m_serverID;
-		info.vars["mount"] = getStreamPath(client.m_streamID);
-		info.vars["agent"] = client.m_userAgent;
-		info.vars["referer"] = client.m_referer;
-		info.vars["bitrate"] = tos(sd->streamBitrate());
-		info.vars["codec"] = sd->streamContentType();
-		info.vars["contr"] = client.getContainer();
-
-		info.id = client.m_unique;
-		info.sid = client.m_streamID;
-		info.match = METRIC_AUDIENCE;
-
-		addToServices(info);
-	}
-}
-
-void metrics_listener_drop(const protocol_shoutcastClient &client)
-{
-	const streamData *sd = client.m_streamData;
-	if (sd && !sd->radionomyID().empty())
-	{
-		metrics_info info;
-        const streamData::streamInfo &stream = sd->getInfo();
-		time_t now = ::time(NULL);
-
-		info.vars["action"] = "listener_remove";
-		info.vars["tstamp"] = tos(now);
-		info.vars["host"] = sd->streamPublicIP();
-		info.vars["radionomyid"] = info.vars["ref"] = sd->radionomyID();
-		info.vars["client"] = tos(client.m_unique);
-		info.vars["ip"] = client.m_clientAddr;
-		info.vars["srvid"] = stream.m_serverID;
-		info.vars["mount"] = getStreamPath(client.m_streamID);
-		info.vars["duration"] = tos(now - client.m_startTime);
-		info.vars["agent"] = client.m_userAgent;
-		info.vars["referer"] = client.m_referer;
-		info.vars["bitrate"] = tos(sd->streamBitrate());
-		info.vars["codec"] = sd->streamContentType();
-		info.vars["contr"] = client.getContainer();
-
-		info.id = client.m_unique;
-		info.sid = client.m_streamID;
-		info.match = METRIC_AUDIENCE;
-
-		addToServices(info);
-	}
-}
-
-
-void metrics_adListener (const protocol_shoutcastClient &client, const adSummary &summary)
-{
-	metrics_info info;
-    const streamData::streamInfo &stream = summary.sd->getInfo();
-
-	info.vars["action"] = "listener_admetric";
-	info.vars["tstamp"] = tos(summary.tstamp);
-	info.vars["host"] = summary.sd->streamPublicIP();
-	info.vars["radionomyid"] = info.vars["ref"] = summary.sd->radionomyID();
-	info.vars["srvid"] = stream.m_serverID;
-	info.vars["id"] = summary.id;
-	info.vars["mount"] = summary.path.hideAsString();
-	info.vars["client"] = tos(client.getUnique());
-	info.vars["group"] = tos(client.getGroup());
-	info.vars["sent"] = tos (client.getAdAccess().total_processed);
-	info.vars["started"] = tos (client.getAdAccess().start_time);
-
-	info.mode = 1;
-	info.sid = summary.sid;
-	info.match = METRIC_ADVERT;
-
-	addToServices(info);
-}
-
-
-void metrics_advert_started (const adSummary &summary)
-{
-	metrics_info info;
-    const streamData::streamInfo &stream = summary.sd->getInfo();
-
-	info.vars["action"] = "ad_trigger";
-	info.vars["tstamp"] = tos(summary.tstamp);
-	info.vars["host"] = summary.sd->streamPublicIP();
-	info.vars["radionomyid"] = info.vars["ref"] = summary.sd->radionomyID();
-	info.vars["srvid"] = stream.m_serverID;
-	info.vars["mount"] = summary.path.hideAsString();
-	info.vars["id"] = summary.id;
-	info.vars["listeners"] = tos(summary.count);
-	info.vars["bitrate"] = tos(summary.sd->streamBitrate());
-	info.vars["codec"] = summary.sd->streamContentType();
-
-	info.mode = 1;
-	info.sid = summary.sid;
-	info.match = METRIC_ADVERT;
-
-	addToServices(info);
-}
-
-
-void metrics_advert_stats(const adSummary &summary)
-{
-    metrics_info info;
-    const streamData::streamInfo &stream = summary.sd->getInfo();
-
-    info.vars["action"] = "ad_metric";
-    info.vars["tstamp"] = tos(summary.tstamp);
-    info.vars["host"] = summary.sd->streamPublicIP();
-    info.vars["radionomyid"] = info.vars["ref"] = summary.sd->radionomyID();
-    info.vars["srvid"] = stream.m_serverID;
-    info.vars["id"] = summary.id;
-    info.vars["mount"] = summary.path.hideAsString();
-    info.vars["group"] = tos(summary.group);
-    info.vars["file"] = summary.name;
-    if (summary.missing)
-        info.vars["missing"] = (summary.failed ? "failed" : "timeout");
-    else
-        info.vars["listeners"] = tos(summary.count);
-    info.vars["bitrate"] = tos(summary.sd->streamBitrate());
-    info.vars["codec"] = summary.sd->streamContentType();
-
-    info.mode = 1;
-    info.sid = summary.sid;
-    info.match = METRIC_ADVERT;
-
-    addToServices(info);
-}
-
-
-static bool _filled_info_notify (metrics_info &info, const streamID_t sid, const utf8& radionomyID,
-	const utf8& serverID, const utf8& publicip, time_t tm = ::time(NULL))
-{
-	if (radionomyID.empty() || serverID.empty() || publicip.empty())
-	    return false;
-
-	info.vars["action"] = iskilled() ? "shutdown" : "reset";
-	info.vars["tstamp"] = tos ((long)tm);
-	info.vars["host"] = publicip;
-	info.vars["radionomyid"] = info.vars["ref"] = radionomyID;
-	info.vars["srvid"] = serverID;
-	info.vars["mount"] = getStreamPath(sid);
-
-	info.sid = sid;
-	info.match = METRIC_NOTIFICATION;
-	info.mode = 2;
-	return true;
-}
-
-void metrics_stream_down (const streamID_t sid, const utf8& radionomyID,
-	const utf8& serverID, const utf8& publicip, time_t tm)
-{
-	metrics_info info;
-	if (_filled_info_notify (info, sid, radionomyID, serverID, publicip))
-	{
-		info.vars["action"] = iskilled() ? "shutdown" : "stopped";
-        info.vars["started"] = tos(tm);
-		addToServices(info);
-	}
-}
-
-void metrics_stream_up (const streamID_t sid, const utf8& radionomyID,
-	const utf8& serverID, const utf8& publicip, time_t tm)
-{
-	metrics_info info;
-	if (_filled_info_notify (info, sid, radionomyID, serverID, publicip))
-	{
-		info.vars["action"] = iskilled() ? "shutdown" : "reset";
-		addToServices(info);
-	}
-}
-
-
-utf8 metrics_verifyDestIP(config &conf, bool full, uniString::utf8 url)
-{
-	// we'll try to set this where possible but it depends on 'destip' or 'publicip'
-	// being set in order for us to have something to be able to be used by the YP
-	utf8 destBindAddr = stripWhitespace((url.empty() ? (full && !conf.publicIP().empty() ? conf.publicIP() : conf.destIP()) : url));
-	destBindAddr = stripHTTPprefix(destBindAddr);
-
-	// with full then we're wanting to filter out some of the values
-	// since this is then used for the public reponses / YP details
-	if (full)
-	{
-		// cleanup things and only provide what should be valid i.e. nothing from a private network
-		// and not send this even if provided just means the YP server will use the connection's IP
-		if (isRemoteAddress(destBindAddr))
-		{
-			return destBindAddr;
-		}
-		return "";
-	}
-	// otherwise we just return the cleaned version as-is
-	// since it'll allow for use in normal bindings, etc
-	return destBindAddr;
-}
-
-utf8 createGuid()
-{
-#ifdef _WIN32
-#define rand_r(x) rand()
-#else
-    static unsigned int seed = time(NULL);
-#endif
-    std::stringstream ss;
-    for (int i = 0; i < 30; i++)
-         ss << std::hex << (unsigned int)(rand_r(&seed) % 16);
-    return ss.str();
-}
-
-
-#ifdef _MSC_VER
-utf8 getWindowsRegKey (bool newone = false)
-{
-    wchar_t *subKey = L"Software\\Microsoft\\Cryptography";
-    HKEY hKey;
-
-    LONG nError = RegOpenKeyEx (HKEY_LOCAL_MACHINE, subKey, 0, KEY_READ, &hKey);
-    if (nError == ERROR_FILE_NOT_FOUND)
-    {
-#if 0
-        // maybe try to create a local guid to read from.
-        subkey = L"Software\\SHOUTcast";
-        nError = RegOpenKeyEx (HKEY_LOCAL_MACHINE, subKey, 0, KEY_READ, &hKey);
-        if (nError == ERROR_FILE_NOT_FOUND)
-        {
-            // create one and put id in there
-            nError = RegCreateKeyEx (HKEY_LOCAL_MACHINE, subKey, NULL, NULL, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL, &hKey, NULL);
-            if (nError == ERROR_FILE_NOT_FOUND)
-                return "";
-
-            string guid = createGuid ();
-            DWORD dwSize = lstrlen(&guid[0]) * sizeof(TCHAR);
-            nError = RegSetValueEx (hKey, lpValue, NULL, REG_SZ, (unsigned char *)&guid[0], dwSize);
-            return guid;
-        }
-#else
-        return "";
-#endif
-    }
-    char buff[100];
-    DWORD rdwSize = sizeof (buff);
-    DWORD dwType = REG_SZ;
-    nError = RegQueryValueExA (hKey, "MachineGuid", NULL, &dwType, (unsigned char*)buff, &rdwSize);
-    RegCloseKey (hKey);
-    return (nError) ? "" : buff;
-}
-#endif
-
-
-void hashDID (utf8 &ident)
-{
-    // uses openssl for hashing a machine/installation Id
-    unsigned char digest[SHA256_DIGEST_LENGTH];
-
-    SHA256((unsigned char*)&ident[0], ident.size(), (unsigned char*)&digest);
-
-    std::stringstream ss;
-    for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
-         ss << std::hex << (unsigned int)digest[i];
-    g_licence_DID = ss.str();
-    DLOG ("ident is " + ident + ", DID is " + g_licence_DID);
-}
-
-
-void metricsCheckDID ()
-{
-    if (g_licence_DID.empty() == false)
-        return;
-
-    utf8 s = "DIDC";  // Dnas ID Code
-    do
-    {
-#ifdef _WIN32
-        utf8 key = getWindowsRegKey();
-        if (key.empty() == false)
-        {
-            s += key;
-            break;
-        }
-#endif
-#ifdef PLATFORM_LINUX
-        ifstream myfile ("/etc/machine-id");
-        if (myfile.is_open())
-        {
-            string line;
-            getline (myfile, line);
-            s += line;
-            break;
-        }
-#endif
-        // get random sequence if all else fails
-        ILOG ("failed to get a static unique number, falling back to random sequence");
-        s += createGuid();
-    } while (0);
-
-    // append conf bits to string. XXXX[-publicip]-baseport
-    s += "-";
-    s += tos(gOptions.portBase());
-    utf8 p = gOptions.publicIP();
-    if (p.empty() == false)
-    {
-        s += "-";
-        s += p;
-    }
-    hashDID (s);
-}
-
-
-void metrics_apply(config &conf)
-{
-    bool same = (metrics_verifyDestIP(conf) == metrics_verifyDestIP(gOptions));
-    if (!same || servers.empty())
-    {
-        if (!same)
-        {
-            metrics_stop();
-        }
-
-        DEBUG_LOG(utf8(same ? "Adding" : "Updating") + " metrics details", LOGNAME);
-        metricsCheckDID ();
-
-        service *s = new service (METRIC_AUDIENCE, METRICS_AUDIENCE_URL, "audience");
-        servers.push_front(s);
-
-        s = new service (METRIC_ADVERT, METRICS_ADVERTS_URL, "adservice");
-        servers.push_front(s);
-
-        s = new service (METRIC_NOTIFICATION, METRICS_RESET_URL, "notification");
-        servers.push_front(s);
-
-#ifndef LICENCE_FREE
-        s = new licenceService ();
-        servers.push_front(s);
-#endif
-
-        s = new ypService ();
-        servers.push_front(s);
-    }
-}
-
-
-void metrics_stop()
-{
-    g_serversLock.lock();
-	if (!servers.empty())
-	{
-		int loop = 50;
-		while (loop > 0)
-		{
-			list <service*>::iterator it = servers.begin();
-			if (it == servers.end())
-			{
-				break;
-			}
-
-			service *s = *it;
-			if (s)
-			{
-				if (s->in_use)
-				{
-					loop--;
-					g_serversLock.unlock();
-					safe_sleep(0, 100); // thread active so wait and try again
-					g_serversLock.lock();
-					continue;
-				}
-			}
-
-			servers.erase(it);
-
-			if (s)
-			{
-				delete s;
-				s = NULL;
-			}
-		}
-    }
-    g_serversLock.unlock();
-}
-
-
-// called near the start of the stream and each metadata update.
-//
-void updateMeta (const metaInfo &meta)
-{
-    metrics_info info;
-    utf8 uid = gOptions.userId ();
-
-    utf8 ah = gOptions.stream_authHash (meta.m_sid);
-    if (ah.empty())
-        return;
-    info.vars ["uid"] = uid;
-    info.vars ["ah"] = ah;
-    info.vars ["did"] = g_licence_DID;
-    info.vars ["tstamp"] = tos (time(NULL));
-
-    info.vars ["private"] = tos(meta.m_private ? 1 : 0);
-    info.vars ["sid"] = tos(meta.m_sid);
-    info.vars ["format"] = meta.m_format;
-    info.vars ["audience"] = tos (stats::getUserCount (meta.m_sid));
-    info.vars ["maxlisteners"] = tos(meta.m_maxListeners);
-    info.vars ["currentsong"] = meta.m_song;
-    info.vars ["bitrate"] = tos(meta.m_bitrate);
-    info.vars ["mount"] = getStreamPath (meta.m_sid);
-    info.vars ["samplerate"] = tos (meta.m_samplerate);
-    info.vars ["verinfo"] = meta.m_version;
-    info.vars ["agent"] = meta.m_agent;
-    info.vars ["sourceip"] = meta.m_sourceIP;
-    info.vars ["publicip"] = gOptions.publicIP();
-    info.vars ["publicport"] = tos (gOptions.publicPort());
-    info.vars ["secure"] = tos (threadedRunner::isSSLCapable() ? 1 : 0);
-
-    stats::statsData_t data;
-    stats::getStats (meta.m_sid, data);
-    info.vars ["peaklisteners"] = tos(data.peakListeners);
-
-    info.match = METRIC_YP;
-    info.sid = meta.m_sid;
-    info.mode = 1;
-    DLOG ("push to YP requested \"" + meta.m_song + "\"", LOGNAME, meta.m_sid);
-    addToServices(info);
-}
-
-
-void licence_data::checkURLNode (aolxml::node *root, const char *ref, service_t s)
-{
-    aolxml::node *n = aolxml::node::findNode (root, ref);
-    if (n)
-    {
-        utf8 url = n->findAttributeString ("url");
-        if (url.empty() == false)
-        {
-            metrics_info info;
-            info.url = url;
-            info.match = s;
-            info.mode = 2;
-            addToServices (info);
-        }
-    }
-}
-
-
-void licence_data::handleURLs (aolxml::node *root)
-{
-    if (root == NULL)
-        return;
-    checkURLNode (root, "/SHOUTCAST/METRICS", METRIC_AUDIENCE);
-    checkURLNode (root, "/SHOUTCAST/METRICSAD", METRIC_ADVERT);
-    checkURLNode (root, "/SHOUTCAST/YP", METRIC_YP);
-
-    aolxml::node *n = aolxml::node::findNode (root, "/SHOUTCAST/AUTH");
-    if (n)
-    {
-        utf8 s = n->findAttributeString ("url");
-        if (s.empty() == false)
-        {
-            auth::g_authURL = s;
-            auth::updateServices ();
-        }
-    }
-}
-
-
-int licence_data::post_callback ()
-{
-    vector<__uint8> v;
-#ifdef LICENCE_RESP
-    utf8 s = LICENCE_RESP;
-    v.assign (&s[0], &s[s.size()]);
-#else
-    v.reserve (m_ss.tellp());
-    std::copy (std::istreambuf_iterator<char>( m_ss ), std::istreambuf_iterator<char>(), std::back_inserter(v));
-#endif
-
-    aolxml::node *n = NULL, *root = NULL;
-    do
-    {
-        if (v.empty())
-            break;
-#if defined(_DEBUG) || defined(DEBUG)
-        //DLOG ("response size is " + tos (v.size()));
-        DEBUG_LOG ("Licence body " + tos (v.size()) + ":" + utf8 ((const char*)&v[0], v.size()), LOGNAME);
-#endif
-        root = aolxml::node::parse (&v[0], v.size());
-        if (root)
-            n = aolxml::node::findNode (root, "/SHOUTCAST/FUNCTION");
-        if (n == NULL)
-        {
-            ILOG ("license parse failed, skipping", LOGNAME);
-            break;
-        }
-
-        utf8 s = n->findAttributeString ("level");
-        if (s == "10")
-        {
-            ILOG ("detected paying offer", LOGNAME);
-            streamData::streamInfo::m_allowSSL_global = 1;
-            streamData::streamInfo::m_allowAllFormats_global = 1;
-            streamData::streamInfo::m_allowBackupURL_global = 1;
-            streamData::streamInfo::m_allowMaxBitrate_global = 0;
-            break;
-        }
-        ILOG ("free offer only", LOGNAME);
-        streamData::streamInfo::m_allowSSL_global = 0;
-        streamData::streamInfo::m_allowAllFormats_global = 0;
-        streamData::streamInfo::m_allowBackupURL_global = 0;
-        streamData::streamInfo::m_allowMaxBitrate_global = 128;
-    } while (0);
-
-    handleURLs (root);
-
-    forget (root);
-    return 0;
-}
-
-
-// Called at server start and every hour.
-void licenceService::addCheckup (time_t when)
-{
-    // eg http://dnas-services.shoutcast.com:8500/registration/?lid=2&debug=yes
-    // eg https://dnas-services.shoutcast.com/registration/?lid=2&debug=yes
-    httpHeaderMap_t vars;
-    bool            licenceMissing = true;
-    utf8            s = gOptions.userId();
-
-    if (s.empty())
-        return;
-    vars ["uid"] = s;
-    s = gOptions.licenceId();
-    if (s.empty() == false)
-    {
-        vars ["lid"] = s;
-        licenceMissing = false;
-    }
-
-    vars ["did"] = g_licence_DID;
-    vars ["tstamp"] = tos (time(NULL));
-
-    licence_data *copy = new licence_data();
-
-    copy->post = encodeVariables(vars);
-    copy->m_schedule = when;
-    if (licenceMissing)
-        copy->flags |= 1;
-
-    g_serversLock.lock();
-    queue.push_front (copy);
-    m_queueCount++;
-    g_serversLock.unlock();
-}
-
-
-int YP_data::post_callback ()
-{
-    vector<__uint8> v;
-    v.reserve (m_ss.tellp());
-    std::copy (std::istreambuf_iterator<char>( m_ss ), std::istreambuf_iterator<char>(), std::back_inserter(v));
-
-    aolxml::node *n = NULL, *root = NULL;
-    do
-    {
-        //DLOG ("response size is " + tos (v.size()));
-        if (v.empty())
-            break;
-#if defined(_DEBUG) || defined(DEBUG)
-        DEBUG_LOG ("YP Body " + tos (v.size()) + ":" + utf8 ((const char*)&v[0], v.size()), name(), sid);
-#endif
-        root = aolxml::node::parse (&v[0], v.size());
-        if (root)
-            n = aolxml::node::findNode (root, "/response");
-        if (n == NULL)
-        {
-            ILOG ("response invalid, skipping", name(), sid);
-            break;
-        }
-        int code = aolxml::subNodeText(n, "/response/statusCode", 400);
-        if (code != 200)
-        {
-            utf8 msg = aolxml::subNodeText(n, "/response/statusText", (utf8)"");
-            if (msg != (utf8)"")
-                WLOG ("response returned " + tos(code) + ", " + msg, name(), sid);
-            break;
-        }
-        n = aolxml::node::findNode (root, "/response/data");
-        if (n == NULL)
-        {
-            ILOG ("No special settings from YP for stream " + tos(sid), name(), sid);
-            break;
-        }
-        yp2::stationInfo info;
-        info.m_advertMode = aolxml::subNodeText(n, "/response/data/admode", 0);
-        info.m_streamTitle = aolxml::subNodeText(n, "/response/data/stationname", (utf8)"");
-        info.m_stationID = aolxml::subNodeText(n, "/response/data/stationid", (utf8)"");
-        info.m_serverID = aolxml::subNodeText(n, "/response/data/serverid", (utf8)"");
-        info.m_radionomyID = aolxml::subNodeText(n, "/response/data/callsign", (utf8)"");
-        info.m_responseCode = code;
-        info.m_advertType = aolxml::subNodeText(n, "/response/data/advert/type", (utf8)"fixed");
-        info.m_advertTrigger = aolxml::subNodeText(n, "/response/data/advert/trigger", (utf8)"meta");
-
-        streamData *sd = streamData::accessStream (sid);
-        if (sd)
-        {
-            sd->YP2_updateInfo (info);
-            sd->releaseStream();
-        }
-        ILOG ("Stream #" + tos(sid) + " has been updated on the Shoutcast Directory.", name(), sid);
-
-    } while (0);
-
-    forget (root);
-    return 0;
-}
-
-} // namespace
diff --git a/Src/Plugins/DSP/sc_serv3/metrics.h b/Src/Plugins/DSP/sc_serv3/metrics.h
deleted file mode 100644
index f324beaa..00000000
--- a/Src/Plugins/DSP/sc_serv3/metrics.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* metrics.h  external interface to metric processing */
-
-#ifndef _METRICS_H
-#define _METRICS_H
-
-#include "unicode/uniString.h"
-
-class protocol_shoutcastClient;
-class streamData;
-class config;
-
-#if 1
-#define METRICS_AUDIENCE_URL "https://metrics.shoutcast.com/metrics"
-#define METRICS_ADVERTS_URL "https://ads.shoutcast.com/dnas"
-#define TARGETSPOT_URL "https://ads.shoutcast.com/dnas"
-#define METRICS_YP_URL "https://dnas-services.shoutcast.com/yp/"
-#else
-#define METRICS_AUDIENCE_URL "http://localhost:9001"
-#define METRICS_ADVERTS_URL "http://localhost:9001/dnas"
-#define TARGETSPOT_URL "http://localhost/~karl/mapping1.php"
-#endif
-#define METRICS_RESET_URL "https://metrics.radionomy.com/connections/closednas"
-
-
-namespace metrics
-{
-	typedef size_t streamID_t;
-    typedef enum {
-        METRIC_AUDIENCE = 1,
-        METRIC_ADVERT = 2,
-        METRIC_NOTIFICATION = 4,
-        METRIC_LICENCE = 8,
-        METRIC_YP = 16
-    } service_t;
-
-    struct adSummary
-    {
-        streamID_t         sid;
-        bool               sendRest;
-        bool               failed;
-        bool               missing;
-        uniString::utf8    path;
-        time_t             tstamp;
-        const char         *name;
-        int                count;
-        std::string        id;
-        size_t             group;
-        streamData         *sd;
-
-        adSummary() : sid(1), tstamp(0), name(0), count(0), group(0) { sd = NULL; sendRest = failed = missing = false; }
-    };
-
-    struct metaInfo
-    {
-        streamID_t          m_sid;
-        bool                m_private;
-        unsigned int        m_audience;
-        unsigned int        m_maxListeners;
-        unsigned int        m_bitrate;
-        unsigned int        m_samplerate;
-        uniString::utf8     m_version;
-        uniString::utf8     m_song;
-        uniString::utf8     m_format;
-        uniString::utf8     m_agent;
-        uniString::utf8     m_publicIP;
-        uniString::utf8     m_sourceIP;
-    };
-
-	void metrics_init();
-	void metrics_stop();
-	void metrics_apply(config &conf);
-
-	//  new listener triggers
-	void metrics_listener_new(const protocol_shoutcastClient &client);
-
-	// exiting listener triggers
-	void metrics_listener_drop(const protocol_shoutcastClient &client);
-
-	void metrics_adListener (const protocol_shoutcastClient &client, const adSummary &summary);
-
-	void metrics_advert_started (const adSummary &summary);
-
-	void metrics_advert_stats(const adSummary &summary);
-
-	typedef unsigned yp2SessionKey;
-
-	void metrics_stream_down (const streamID_t sid, const uniString::utf8& radionomyID,
-		const uniString::utf8& serverID, const uniString::utf8& publicip, time_t tm);
-
-	void metrics_stream_up (const streamID_t sid, const uniString::utf8& radionomyID,
-		const uniString::utf8& serverID, const uniString::utf8& publicip, time_t tm);
-
-	// periodic wakeup for any stalled metrics
-	void metrics_wakeup(bool force = false);
-
-    void updateMeta (const metaInfo &meta);
-
-	uniString::utf8 metrics_verifyDestIP(config &conf, bool full = true, uniString::utf8 url = "");
-}
-
-#endif  /* _METRICS_H */
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/file/fileUtils.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/file/fileUtils.cpp
deleted file mode 100644
index 941746d2..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/file/fileUtils.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-#ifdef _WIN32
-#include <windows.h>
-#else
-#include <sys/param.h>
-#endif
-#include "fileUtils.h"
-#include "stl/stringUtils.h"
-#include "services/stdServiceImpl.h"
-#include <fstream>
-#include "../../global.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-bool fileUtil::convertOSFilePathDelimiter(uniString::utf8 &value) throw()
-{
-	bool converted = false;
-	if (!value.empty())
-	{
-		#ifdef _WIN32
-		const uniString::utf8& replaceFilePathDelimiter("/");
-		#else
-		const uniString::utf8& replaceFilePathDelimiter("\\");
-		#endif
-
-		uniString::utf8::size_type pos = value.find(replaceFilePathDelimiter);
-		if (pos != uniString::utf8::npos) converted = true;
-		while (pos != uniString::utf8::npos)
-		{
-			value.replace(pos,1,getFilePathDelimiter());
-			pos = value.find(replaceFilePathDelimiter);
-		}
-	}
-	return converted;
-}
-
-#ifdef _WIN32
-
-uniFile::filenameType fileUtil::getFullFilePath(const uniFile::filenameType &partial_path) throw()
-{
-	wchar_t resolved_path[MAX_PATH] = {0};
-
-	uniString::utf32 u32(partial_path);
-	std::wstring u16;
-	u32.toUtf16(u16);
-
-	if (_wfullpath(resolved_path, u16.c_str(), MAX_PATH))
-	{
-		return utf32(resolved_path).toUtf8();
-	}
-	return partial_path;
-}
-
-bool fileUtil::fileExists(const uniFile::filenameType &fullPath) throw()
-{
-	uniString::utf32 u32(fullPath);
-	std::wstring u16;
-	u32.toUtf16(u16);
-
-	HANDLE hPF = ::CreateFileW(u16.c_str(), 0, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-	if (hPF == INVALID_HANDLE_VALUE)
-	{
-		return false;
-	}
-	::CloseHandle(hPF);
-	return true;
-}
-
-bool fileUtil::directoryExists(const uniFile::filenameType &fullPath) throw()
-{
-	WIN32_FIND_DATAW fd = {0};
-
-	uniString::utf32 u32(fullPath);
-	std::wstring u16;
-	u32.toUtf16(u16);
-
-	wstring path = u16.substr(0, u16.rfind(L"\\"));
-	HANDLE	h = ::FindFirstFileW(path.c_str(), &fd);
-	if (h != INVALID_HANDLE_VALUE)
-	{
-		::FindClose(h);
-	}
-
-	return (h != INVALID_HANDLE_VALUE);
-}
-
-vector<wstring> fileUtil::directoryFileList(const wstring &pattern, const wstring &currentPath, bool fullPaths, bool preserveCase) throw()
-{
-	vector<wstring>	result;
-	WIN32_FIND_DATAW fd = {0};
-	wstring search = pattern;
-
-	if (search.empty())
-	{
-		return result;
-	}
-
-	// look at the path and see if it's been setup correctly i.e has a .\ on the front for relative searches
-	if (!((search[1] == ':' && search[2] == '\\') ||
-		  (search[0] == '\\' && search[1] == '\\') ||
-		  (search[0] == '.' && search[1] == '\\') ||
-		  (search[0] == '.' && search[1] == '.' && search[2] == '\\')))
-	{
-		if (!currentPath.empty())
-		{
-			search = currentPath + search;
-		}
-		else
-		{
-			search = gStartupDirectory.toWString() + search;
-		}
-	}
-
-	wstring path = search.substr(0,search.rfind(L"\\"));
-	HANDLE	h = ::FindFirstFileW(search.c_str(),&fd);
-	if (h != INVALID_HANDLE_VALUE)
-	{
-		do
-		{
-			if (fullPaths)
-			{
-				if (preserveCase)
-				{
-					result.push_back((path + L"\\" + fd.cFileName));
-				}
-				else
-				{
-					result.push_back(toLower(path + L"\\" + fd.cFileName));
-				}
-			}
-			else
-			{
-				if (preserveCase)
-				{
-					result.push_back((fd.cFileName));
-				}
-				else
-				{
-					result.push_back(toLower(wstring(fd.cFileName)));
-				}
-			}
-		}
-		while(::FindNextFileW(h,&fd));
-	}
-
-	if (h != INVALID_HANDLE_VALUE)
-	{
-		::FindClose(h);
-	}
-
-	return result;
-}
-
-#else
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <glob.h>
-
-utf8 fileUtil::getFullFilePath(const uniFile::filenameType &partial_path) throw()
-{
-	char resolved_path[MAXPATHLEN + 1] = {0};
-	if (realpath(partial_path.hideAsString().c_str(), resolved_path))
-	{
-		return utf8(resolved_path);
-	}
-	return partial_path;
-}
-
-bool fileUtil::fileExists(const uniFile::filenameType &fullPath) throw()
-{
-	struct stat sbuf;
-	return (::stat(fullPath.hideAsString().c_str(),&sbuf) ? false : true);
-}
-
-bool fileUtil::directoryExists(const uniFile::filenameType &fullPath) throw()
-{
-	glob_t gt;
-	bool found = false;
-
-	if (glob(fullPath.hideAsString().c_str(),GLOB_NOSORT,0,&gt) == 0)
-	{
-		found = true;
-	}
-
-	globfree(&gt);
-	return found;
-}
-
-std::vector<std::string> fileUtil::directoryFileList(const std::string &pattern, const std::string &currentPath) throw()
-{
-	vector<string> result;
-
-	glob_t gt;
-
-	string search = pattern;
-
-	if (search.empty())
-	{
-		return result;
-	}
-
-	// look at the path and see if it's been setup correctly i.e has a ./ on the front for relative searches
-	if (!((search[0] == '\\' && search[1] == '\\') ||
-		  (search[0] == '/') ||
-		  (search[0] == '.' && search[1] == '/') ||
-		  (search[0] == '.' && search[1] == '.' && search[2] == '/')))
-	{
-		if (!currentPath.empty())
-		{
-			search = currentPath + search;
-		}
-		else
-		{
-			search = string("./") + search;
-		}
-	}
-
-	if (glob(search.c_str(),GLOB_NOSORT,0,&gt) == 0)
-	{
-		for (size_t x = 0; x < gt.gl_pathc; ++x)
-		{
-			result.push_back(gt.gl_pathv[x]);
-		}
-	}
-
-	globfree(&gt);
-	return result;
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/file/fileUtils.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/file/fileUtils.h
deleted file mode 100644
index 12a1d419..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/file/fileUtils.h
+++ /dev/null
@@ -1,117 +0,0 @@
-#pragma once
-#ifndef _fileUtils_H_
-#define _fileUtils_H_
-
-#include <string>
-#include <vector>
-#include <stdexcept>
-#include "unicode/uniString.h"
-#include "unicode/uniFile.h"
-
-namespace fileUtil
-{
-	#ifdef _WIN32
-	const char filePathDelimiter='\\';
-	#else
-	const char filePathDelimiter='/';
-	#endif
-
-	static uniString::utf8 getFilePathDelimiter()
-	{
-		#ifdef _WIN32
-		return (uniString::utf8)"\\";
-		#else
-		return (uniString::utf8)"/";
-		#endif
-	}
-
-	//********************************************
-	//* stripPath
-	//*
-	//* remove the path from a filename
-	//********************************************
-	template<typename S>
-	S stripPath(const S &s,const S &delim) throw()
-	{
-		typename S::size_type pos = s.find_last_of(delim);
-		if (pos == S::npos) return s;
-		if (pos == s.size() -1) return S();
-		return s.substr(pos+1);
-	}
-
-	template<typename S>
-	S stripPath(const S &s) throw()
-	{
-		return fileUtil::stripPath(s,S(1,(typename S::value_type)fileUtil::filePathDelimiter));
-	}
-
-	template<typename S>
-	S onlyPath(const S &s,const S &delim) throw()
-	{
-		typename S::size_type pos = s.find_last_of(delim);
-		if (pos == S::npos) return S();
-		return s.substr(0,pos+1);
-	}
-
-	template<typename S>
-	S onlyPath(const S &s) throw()
-	{
-		return fileUtil::onlyPath(s,S(1,(typename S::value_type)fileUtil::filePathDelimiter));
-	}
-
-	template<typename S>
-	S mustEndIn(const S &s,typename S::value_type c) throw()
-	{
-		return ((s.empty() || ((*(s.rbegin())) != c)) ? (s+c) : s);
-	}
-
-	template<class S>
-	S stripSuffix(const S &s,const S &delim) throw()
-	{
-		return s.substr(0,s.rfind(delim));
-	}
-
-	template<typename S>
-	S stripSuffix(const S &s) throw()
-	{
-		return fileUtil::stripSuffix(s,S(1,(typename S::value_type)'.'));
-	}
-
-	template<class S>
-	S getSuffix(const S &s,const S &delim) throw()
-	{
-		S empty;
-		typename S::size_type pos = s.rfind(delim);
-		if (pos == S::npos)
-			return empty;
-		return s.substr(pos+1);
-	}
-
-	template<typename S>
-	S getSuffix(const S &s) throw()
-	{ 
-		return fileUtil::getSuffix(s,S(1,(typename S::value_type)'.')); 
-	}
-
-	////////////
-
-	// return true if a file exists
-	bool fileExists(const uniFile::filenameType &fullPath) throw();
-
-	// return true if a directory exists
-	bool directoryExists(const uniFile::filenameType &fullPath) throw();
-
-	// get list of all files that match a pattern
-	#ifdef _WIN32
-	std::vector<std::wstring> directoryFileList(const std::wstring &pattern, const std::wstring &currentPath,
-												bool fullPaths, bool preserveCase = false) throw();
-	#else
-	std::vector<std::string> directoryFileList(const std::string &pattern, const std::string &currentPath) throw();
-	#endif
-
-	bool convertOSFilePathDelimiter(uniString::utf8 &value) throw();
-
-	uniFile::filenameType getFullFilePath(const uniFile::filenameType &partial) throw();
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/intTypes.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/intTypes.h
deleted file mode 100644
index ffaaeb36..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/intTypes.h
+++ /dev/null
@@ -1,117 +0,0 @@
-#ifndef intTypes_H_
-#define intTypes_H_
-
-#if defined(__APPLE_CC__) | defined(PLATFORM_BSD)
-#include <machine/endian.h>
-#else
-#ifndef WIN32
-#include <endian.h>
-#endif
-#endif
-
-#ifndef WIN32
-// these are defined under windows
-typedef char 	__int8;
-typedef short 	__int16;
-typedef int 	__int32;
-typedef long long __int64;
-#endif
-
-typedef unsigned char 	__uint8;
-typedef unsigned short 	__uint16;
-typedef unsigned int 	__uint32;
-typedef unsigned long long __uint64;
-
-#ifdef __cplusplus
-
-
-#undef ByteSwap32
-#undef ByteSwap16
-#undef ByteSwap
-#undef bs16
-#undef bs32
-#undef bs
-#undef bs16s
-#undef bs16u
-#undef bs32s
-#undef bs32u
-
-inline __uint32 ByteSwap32u (__uint32 nLongNumber)
-{
-   return (((nLongNumber&0x000000FF)<<24)+((nLongNumber&0x0000FF00)<<8)+
-   ((nLongNumber&0x00FF0000)>>8)+((nLongNumber&0xFF000000)>>24));
-}
-
-inline __uint16 ByteSwap16u (__uint16 nValue)
-{
-   return (((nValue>> 8)) | (nValue << 8));
-
-}
-
-inline __int16 ByteSwap16s(__int16 nValue) { return ByteSwap16u(nValue); }
-inline __int32 ByteSwap32s(__int32 nValue) { return ByteSwap32u(nValue); }
-
-inline __uint16 ByteSwap(__uint16 nValue) { return ByteSwap16u(nValue); }
-inline __uint32 ByteSwap(__uint32 nValue) { return ByteSwap32u(nValue); }
-inline __int16 ByteSwap(__int16 nValue) { return ByteSwap16u(nValue); }
-inline __int32 ByteSwap(__int32 nValue) { return ByteSwap32u(nValue); }
-
-#ifdef __BYTE_ORDER
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define bs16(x) (x)
-#define bs16s(x) (x)
-#define bs16u(x) (x)
-#define bs32(x) (x)
-#define bs32s(x) (x)
-#define bs32u(x) (x)
-#define bs(x) (x)
-#else
-#if __BYTE_ORDER == __BIG_ENDIAN
-#define bs16(x) ByteSwap16u(x)
-#define bs16s(x) ByteSwap16s(x)
-#define bs16u(x) ByteSwap16u(x)
-#define bs32(x) ByteSwap32u(x)
-#define bs32s(x) ByteSwap32s(x)
-#define bs32u(x) ByteSwap32u(x)
-#define bs(x) ByteSwap(x)
-#else
-//#error "No endian defined (__BYTE_ORDER)"
-#endif
-#endif
-
-#else
-
-#ifdef BYTE_ORDER
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define bs16(x) (x)
-#define bs16s(x) (x)
-#define bs16u(x) (x)
-#define bs32(x) (x)
-#define bs32s(x) (x)
-#define bs32u(x) (x)
-#define bs(x) (x)
-#else
-#if BYTE_ORDER == BIG_ENDIAN
-#define bs16(x) ByteSwap16u(x)
-#define bs16s(x) ByteSwap16s(x)
-#define bs16u(x) ByteSwap16u(x)
-#define bs32(x) ByteSwap32u(x)
-#define bs32s(x) ByteSwap32s(x)
-#define bs32u(x) ByteSwap32u(x)
-#define bs(x) ByteSwap(x)
-#else
-//#error "No endian defined (BYTE_ORDER)"
-#endif
-#endif
-
-#else
-
-//#error "Neither __BYTE_ORDER or BYTE_ORDER is defined"
-#endif
-#endif
-
-#endif
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/macros.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/macros.h
deleted file mode 100644
index 60ac48ef..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/macros.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef _commonmacros_H_
-#define _commonmacros_H_
-
-#ifndef NDEBUG
-#define DIAG(x) OutputDebugString(x);
-#else
-#define DIAG(x)
-#endif
- 
-/**
- * The __TODO__ macro provides a way to notate source code in a way that the 
- * compiler will recognize and print out the file and line number in the Build
- * window. This should be used like so:
- *
- * #pragma message(__TODO__"Message here")
- */
-#define __TODO_STR2__(str) #str
-#define __TODO_STR__(str) __TODO_STR2__(str)
-#define __TODO__ __FILE__ "(" __TODO_STR__(__LINE__)") : TODO: "
-
-/* nocopy macros makes an uncopyable object use as follows
-	class foobar
-	{
-		nocopy(foobar)
-
-	public:
-		// other methods here
-	};
-*/
-#define nocopy(c) private: c(const c &/*v*/) { ASSERT(0); } c& operator=(const c &/*v*/) { ASSERT(0); return *this;}
-
-// various forget macros that delete objects and zero them out safely.
-#define forget(x) { if (x) { delete x; x = 0; } }
-#define forgetArray(x) { if (x) { delete [] x; x = 0; } }
-#define safeRelease(x) { if (x) { x->Release(); x = 0; } }
-#define forgetHandleNULL(x) { if (x) { ::CloseHandle(x); x = NULL; } }
-
-#ifdef WIN32
-#define forgetHandleInvalid(x) { if (x != INVALID_HANDLE_VALUE) ::CloseHandle(x); x = INVALID_HANDLE_VALUE; }
-#define forgetGDIObject(x) { if (x) ::DeleteObject(x); x = NULL; }
-#define forgetGDIIcon(x) { if (x) ::DestroyIcon(x); x = NULL; }
-
-#ifdef HRESULT
-// I do this so often, I turned it into a macro
-struct bad_hresult
-{
-	HRESULT err;
-	bad_hresult(HRESULT herr): err(herr){}
-};
-#endif
-
-#define checkCOMReturn(x) { HRESULT err = x; if (FAILED(err)) return err; }
-#define checkCOMThrow(x)  { HRESULT err = x; if (FAILED(err)) throw bad_hresult(err); }
-#endif
-
-// so I don't have to include nsvlib.h all the time
-#ifndef NSV_MAKETYPE
-#define NSV_MAKETYPE(A,B,C,D) ((A) | ((B)<<8) | ((C)<<16) | ((D)<<24))
-#endif
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/memory/refPtr.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/memory/refPtr.h
deleted file mode 100644
index 2650e7f6..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/memory/refPtr.h
+++ /dev/null
@@ -1,181 +0,0 @@
-#ifndef refPtr_H_
-#define refPtr_H_
-
-#include "threading/thread.h"
-#ifdef WIN32
-#include <crtdbg.h>
-#else
-#include <assert.h>
-#endif
-
-#ifndef WIN32
-#ifndef _ASSERTE
-#define _ASSERTE(x) assert(x)
-#endif
-#endif
-
-/*
-	Intrusive reference counted pointer template.
-	
-	The class to be reference counted must implement
-
-		void refIncrement() const  // increment the reference count
-		int refDecrement() const // decrement the reference count and return the new value.
-
-	Yes, the methods are const. This provides maximum flexibility.
-	Obviously the reference counted values must be mutable for this to work.
-
-	Two predefined bases are provided.
-
-		refCountBase - non locking base for single threaded scenarios
-		refCountBaseMT - locking base for multi threaded scenarios
-
-*/
-
-// base class for single threaded reference count objects
-class refCountBase
-{
-template <class T> friend class refPtr;
-public:
-	/// return the number of references to this object (useful for debugging)
-	int refCount() const { return m_refCount; }
-
-protected:
-	refCountBase() : m_refCount(0) {}
-	virtual ~refCountBase()
-	{
-		// make sure nobody has deleted this directly with delete
-		_ASSERTE(m_refCount == 0);
-	}
-
-private:
-	mutable int m_refCount;
-
-	void refIncrement() const  { _ASSERTE(m_refCount >= 0); ++m_refCount; }
-
-	int refDecrement() const { _ASSERTE(m_refCount > 0); return --m_refCount; }
-};
-
-// base class for multi threaded reference count objects
-class refCountBaseMT
-{
-template <class T> friend class refPtr;
-public:
-	/// return the number of references to this object (useful for debugging)
-	int refCount() const 
-	{
-		stackLock sl(m_lock);
-		return m_refCount; 
-	}
-
-protected:
-	refCountBaseMT() : m_refCount(0) {}
-	virtual ~refCountBaseMT()
-	{
-		// make sure nobody has deleted this directly with delete
-		_ASSERTE(m_refCount == 0);
-	}
-
-private:
-	mutable int m_refCount;
-	mutable AOL_namespace::mutex m_lock;
-
-	void refIncrement() const 
-	{
-		stackLock sl(m_lock);
-		_ASSERTE(m_refCount >= 0);
-		++m_refCount; 
-	}
-
-	int refDecrement() const 
-	{
-		stackLock sl(m_lock);
-		_ASSERTE(m_refCount > 0);
-		return --m_refCount; 
-	}
-};
-
-template <class T> class refPtr
-{
-public:
-	typedef T *pointer_t;
-
-	// construction
-	refPtr() : m_object(NULL) {}
-
-	refPtr(const refPtr<T> &rhs) : m_object(rhs.m_object)
-	{
-		if (m_object)
-			m_object->refIncrement();
-	}
-
-	refPtr(T *object) : m_object(object)
-	{
-		if (m_object)
-			m_object->refIncrement();
-	}
-
-	~refPtr()
-	{
-		if (m_object && (m_object->refDecrement() == 0))
-			delete m_object;
-	}
-
-	// asignment
-	refPtr<T> &operator=(const refPtr<T> &rhs)
-	{
-		if (m_object != rhs.m_object)
-		{
-			if (m_object && (m_object->refDecrement() == 0))
-				delete m_object;
-			m_object = rhs.m_object;
-			if (m_object)
-				m_object->refIncrement();
-		}
-		return *this;
-	}
-
-	/// test if pointers are the same
-	inline bool operator==(const refPtr<T> &rhs) const
-	{
-		return m_object == rhs.m_object;
-	}
-
-	inline bool operator==(void *nl) const
-	{
-		return m_object == nl;
-	}
-
-	/// test if pointers are not the same
-	inline bool operator!=(const refPtr<T> &rhs) const
-	{
-		return m_object != rhs.m_object;
-	}
-
-	inline bool operator!=(void *nl) const
-	{
-		return m_object != nl;
-	}
-
-	// dereferencing
-	T *operator->() const { _ASSERTE(m_object); return (T *)m_object; }
-	T &operator*() const { _ASSERTE(m_object); return *((T *)m_object); }
-	operator T *() const { return (T *)m_object; }
-
-	/// explicit get - do NOT delete this pointer!
-	T *get() const { return (T *)m_object; }
-
-	/* these member templates allows conversion of this smart pointer to
-		other smart pointers in the parent hierarchy. This simulates up-casting
-		the pointer to a base */
-	template <class newType>
-		operator refPtr<newType>() { return refPtr<newType>((T *)m_object); }
-
-	template <class newType>
-		operator const refPtr<newType>() const { return refPtr<newType>((T *)m_object); }
-
-private:
-	T *m_object;
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/baseOptions.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/baseOptions.cpp
deleted file mode 100644
index b1445cba..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/baseOptions.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "baseOptions.h"
-#include "stl/stringUtils.h"
-#ifdef _WIN32
-#include "win32/rezFuncs.h"
-#else
-#include "unixversion.h"
-#endif
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-bool baseOptions::toBool(const utf8 &s) throw()
-{
-	if (s.empty()) return true;
-	utf8 ss = toLower(s);
-	return (s[0] == 't' || s[0] == '1' || s[0] == 'y');
-}
-
-const vector<utf8> baseOptions::fromArgs(const vector<utf8> &cl) throw()
-{
-	vector<utf8> unused;
-
-	for (vector<utf8>::const_iterator i = cl.begin(); i != cl.end(); ++i)
-	{
-		utf8::size_type colon_pos = (*i).find(utf8(":"));
-		if (colon_pos != utf8::npos)
-		{
-			utf8 key = (*i).substr(0,colon_pos);
-			utf8 value = (*i).substr(colon_pos+1);
-			if (key == "flog")
-			{
-				m_fileLog = value;
-			}
-			else if (key == "clog")
-			{
-				m_consoleLogging = toBool(value);
-			}
-			else
-			{
-				unused.push_back(*i);
-			}
-		}
-		else
-		{
-			unused.push_back(*i);
-		}
-	}
-
-	return unused;
-}
-
-utf8 baseOptions::getVersionBuildStrings() throw()
-{
-#ifdef _WIN32
-	static utf8 version;
-	if (version.empty())
-	{
-		getVersionInfo(version);
-	}
-#else
-	static utf8 version;
-	if (version.empty())
-	{
-		for (int x = 0; x < VENT; ++x)
-		{
-			if (x)
-			{
-				version += ".";
-			}
-			version += tos(PRODUCTVERSION[x]);
-		}
-	}
-#endif	
-	return version;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/baseOptions.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/baseOptions.h
deleted file mode 100644
index 96d96dbe..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/baseOptions.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-#ifndef baseOptions_H_
-#define baseOptions_H_
-
-#include <string>
-#include <vector>
-#include "unicode/uniFile.h"
-#include "services/logger.h"
-
-struct baseOptions
-{
-	uniFile::filenameType m_fileLog;
-	bool m_consoleLogging;
-
-	// convert a string to a boolean
-	static bool toBool(const uniString::utf8 &s) throw();
-
-	// process command line options. Options are key:value pairs. All unprocessed
-	// options are returned
-	const std::vector<uniString::utf8> fromArgs(const std::vector<uniString::utf8> &cl) throw();
-
-	const uniFile::filenameType &getFileLog() const throw() { return m_fileLog; }
-	bool getConsoleLogging() const throw() { return m_consoleLogging; }
-	#ifdef _WIN32
-	static uniString::utf8 getSystemLogConfigString() throw() { return AOL_logger::systemLogger_element::panicConfiguration(); }
-	#else
-	static uniString::utf8 getSystemLogConfigString() throw() { return "";}
-	#endif
-	static uniString::utf8 getVersionBuildStrings() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/logger.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/logger.cpp
deleted file mode 100644
index 3e8bf438..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/logger.cpp
+++ /dev/null
@@ -1,966 +0,0 @@
-#include "logger.h"
-#include <stdio.h>
-#include <algorithm>
-#include "stl/functors.h"
-#include "file/fileUtils.h"
-#include "stl/stringUtils.h"
-#include "macros.h"
-#include "../../global.h"
-
-#ifndef _WIN32
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <fcntl.h>
-#endif
-
-#ifdef _WIN32
-#define __F__ __FUNCTION__
-#else
-#define __F__ string(__PRETTY_FUNCTION__) + 
-#endif
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-////////////////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////// LOGGER ELEMENTS ///////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////////////////////
-
-#ifdef _WIN32
-//////////// Win32 File Logger
-
-inline uniFile::filenameType AOL_logger::fileLogger_element::make_backup_log(const uniFile::filenameType &filename,int which) throw()
-{
-	return fileUtil::stripSuffix(filename) + "_" +
-			tobs<uniFile::filenameType>(which) + "."
-			+ fileUtil::getSuffix(filename);
-}
-
-uniFile::filenameType AOL_logger::fileLogger_element::make_archive_log() throw()
-{
-	SYSTEMTIME sysTime = {0};
-	::GetLocalTime(&sysTime);
-	wchar_t d[100] = {0}, t[100] = {0};
-	::GetDateFormatW(LOCALE_SYSTEM_DEFAULT,0,&sysTime,_T("yyyy'_'MM'_'dd"),d,99);
-	::GetTimeFormatW(LOCALE_SYSTEM_DEFAULT,0,&sysTime,_T("HH'_'mm'_'ss"),t,99);
-	return tos((const wchar_t *)d) + "_" + tos((const wchar_t *)t);
-}
-
-void AOL_logger::fileLogger_element::rotate() throw()
-{
-	m_lastRolloverTime = ::time(NULL);
-
-	if (m_file == INVALID_HANDLE_VALUE || m_first == false)
-	{
-		return;
-	}
-
-	// close the log
-	forgetHandleInvalid(m_file);
-
-	// rotate
-	for (int x = m_numFileBackups; x > 0; --x)
-	{
-		uniFile::filenameType dest = make_backup_log(m_fileName,x);
-
-		// archive the log file about to be removed into a gz file
-		if (m_numFileBackups > 0 && x == m_numFileBackups && m_archiveFileBackups)
-		{
-			uniFile::filenameType archive = dest;
-			utf8::size_type pos = archive.rfind(utf8("_"+tos(m_numFileBackups)));
-			if ((pos != utf8::npos) && (uniFile::fileSize(dest) > 0))
-			{
-				archive = (dest.substr(0,pos) + utf8("_log_" + make_archive_log() + ".gz"));
-
-				HANDLE m_archive = ::CreateFileW(archive.toWString().c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-				if (m_archive != INVALID_HANDLE_VALUE)
-				{
-					DWORD written(0);
-					utf8 out;
-					z_stream m_stream = {0};
-
-					if (uniFile::fileSize(dest) > 0)
-					{
-						FILE* m_logFile = uniFile::fopen(dest,"rb");
-						if (m_logFile != NULL)
-						{
-							bool started = false;
-							while (!feof(m_logFile))
-							{
-								std::vector<uniString::utf8::value_type> m_logFileBuffer;
-								const size_t BUFSIZE(1024*16);
-								m_logFileBuffer.clear();
-								m_logFileBuffer.resize(BUFSIZE + 1);
-								size_t amt = fread(&(m_logFileBuffer[0]), 1, BUFSIZE, m_logFile);
-								if (amt > 0)
-								{
-									out = utf8(&(m_logFileBuffer[0]), amt);
-									if (started == false)
-									{
-										compressDataStart(out, &m_stream);
-										started = true;
-									}
-									else
-									{
-										compressDataCont(out, &m_stream);
-									}
-									::WriteFile(m_archive, out.c_str(), (DWORD)out.size(), &written, NULL);
-								}
-							}
-
-							compressDataFinish(out, &m_stream);
-							::WriteFile(m_archive, out.c_str(), (DWORD)out.size(), &written, NULL);
-
-							compressDataEnd(&m_stream);
-
-							::fclose(m_logFile);
-							forgetHandleInvalid(m_archive);
-
-							// no need to keep any 0-byte files
-							// this is just incase of weirdness
-							if (!uniFile::fileSize(archive))
-							{
-								uniFile::unlink(archive);
-							}
-						}
-						else
-						{
-							forgetHandleInvalid(m_archive);
-							uniFile::unlink(archive);
-						}
-					}
-				}
-			}
-		}
-		::DeleteFileW(dest.toWString().c_str());
-		::MoveFileW(
-			((x-1) ? make_backup_log(m_fileName,(x-1)).toWString().c_str()
-				: m_fileName.toWString().c_str()),
-					dest.toWString().c_str());
-	}
-
-	// open new log
-	m_file = ::CreateFileW(m_fileName.toWString().c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-}
-
-AOL_logger::fileLogger_element::fileLogger_element(const uniFile::filenameType &filename, const uniFile::filenameType &defaultFilename,
-        bool &useDefaultPath, int backups, bool archive, int rolloverInterval, size_t SID) throw(exception)
-
-    : m_fileName(filename), m_file(INVALID_HANDLE_VALUE), m_lastRolloverTime(0), m_rolloverInterval(rolloverInterval), m_numFileBackups(backups),
-      m_archiveFileBackups(archive), m_first(false), m_SID(SID)
-{
-	// this will fill in the default log path as required
-	wchar_t s_defaultFileName[MAX_PATH] = {0};
-	ExpandEnvironmentStringsW(defaultFilename.toWString().c_str(), s_defaultFileName, MAX_PATH);
-	utf8 m_defaultFilename(utf32(s_defaultFileName).toUtf8());
-
-	useDefaultPath = false;
-	m_file = ::CreateFileW(m_fileName.toWString().c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-	if (m_file == INVALID_HANDLE_VALUE)
-	{
-		m_file = ::CreateFileW(m_defaultFilename.toWString().c_str(),GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-		if (m_file == INVALID_HANDLE_VALUE)
-		{
-			uniFile::filenameType fallbackFilename("%temp%\\sc_serv_" + tos(getpid()) + ".log");
-			wchar_t s_fallbackFileName[MAX_PATH] = {0};
-			ExpandEnvironmentStringsW(fallbackFilename.toWString().c_str(), s_fallbackFileName, MAX_PATH);
-			utf8 m_fallbackFilename(utf32(s_fallbackFileName).toUtf8());
-			m_file = ::CreateFileW(m_fallbackFilename.toWString().c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-			if (m_file == INVALID_HANDLE_VALUE)
-			{
-				throw runtime_error("Logger could not open the log file \"" + m_fileName.hideAsString() + "\" for writing [" + errMessage().hideAsString() + "]. Check the directory exists and another instance is not already running.");
-			}
-			else
-			{
-				m_fileName = m_fallbackFilename;
-			}
-		}
-		else
-		{
-			m_fileName = m_defaultFilename;
-		}
-	}
-
-	::SetFilePointer(m_file,0,0,FILE_END); // seek to end
-	if (m_fileName == m_defaultFilename)
-	{
-		useDefaultPath = true;
-	}
-
-	gOptions.setOption(utf8("reallogfile"), m_fileName);
-
-	// using this to prevent rotating empty log files on startup
-	m_first = fileUtil::fileExists(m_fileName.hideAsString());
-	if (m_first && !uniFile::fileSize(m_fileName))
-	{
-		m_first = false;
-	}
-
-	rotate();
-}
-
-AOL_logger::fileLogger_element::~fileLogger_element() throw()
-{
-	forgetHandleInvalid(m_file);
-}
-
-void AOL_logger::fileLogger_element::log(message &m) throw(exception)
-{
-	time_t t = ::time(NULL);
-	if (t < m_lastRolloverTime || (((t - m_lastRolloverTime) > m_rolloverInterval) && m_rolloverInterval))
-	{
-		rotate();
-		rotatew3cFiles("w3c");
-	}
-    if (m.m_alreadyLogged)
-        return;
-    if (m_SID != m.m_streamID && m_SID)
-    {
-        return;
-    }
-    m.m_alreadyLogged = true;
-	m_first = true;
-
-	utf8 ss = m.getTimestamp() + "\t" + m.typeAsStr();
-    const utf8 &msg = m.getMsg();
-
-    if (msg[0] != '[')
-    {
-        const char *section = m.fromSection();
-        if (section)
-        {
-            bool wrap = (section[0] == '[') ? false : true;
-            size_t ID = m.getID();
-            if (wrap)
-            {
-                ss += "\t[";
-                ss += section;
-                if (ID > 0)
-                {
-                    ss += " sid=";
-                    ss += tos(ID);
-                }
-                ss += "] ";
-            }
-            else
-            {
-                ss += "\t";
-                ss += section;
-                // if (ID > 0)
-                // ss += " ID present ";
-            }
-        }
-        else
-            ss += "\t";
-    }
-    else
-        ss += "\t";
-
-	const map<utf8,utf8> *fields = m.getFields();
-    if (fields)
-    {
-	    for (map<utf8,utf8>::const_iterator i = fields->begin(); i != fields->end(); ++i)
-   	    {
-		    if (!(*i).first.empty())
-		    {
-			    if (!(*i).second.empty())
-			    {
-				    ss += "\t" + (*i).second;
-			    }
-			    else
-			    {
-				    return;
-			    }
-		    }
-	    }
-    }
-    ss += msg;
-	ss += eol();
-
-	if (m_file == INVALID_HANDLE_VALUE)
-	{
-		throw runtime_error(__F__ " Error writing to log file " + m_fileName.hideAsString());
-	}
-
-	DWORD written(0);
-	if ((!::WriteFile(m_file, ss.c_str(), (DWORD)ss.size(), &written, NULL)) || (written != ss.size()))
-	{
-		throw runtime_error(__F__ " Error writing to log file " + m_fileName.hideAsString());
-	}
-}
-
-#else
-
-/////////// Unix File Logger
-
-uniFile::filenameType AOL_logger::fileLogger_element::make_backup_log(const uniFile::filenameType &filename,int which) throw()
-{
-	return fileUtil::stripSuffix(filename) + "_" + tos(which) + "." + fileUtil::getSuffix(filename);
-}
-
-uniFile::filenameType AOL_logger::fileLogger_element::make_archive_log() throw()
-{
-	char buf[256] = {0};
-	struct tm ttm;
-	time_t ttt;
-	::time(&ttt);
-	::strftime(buf, 255, "%Y_%m_%d_%H_%M_%S", ::localtime_r(&ttt, &ttm));
-	return buf;
-}
-
-void AOL_logger::fileLogger_element::rotate() throw()
-{
-	m_lastRolloverTime = ::time(NULL);
-
-	if ((m_file == -1) || (m_first == false))
-	{
-		return;
-	}
-
-	// close the log
-	::close(m_file);
-	m_file = -1;
-
-	// rotate
-	for (int x = m_numFileBackups; x > 0; --x)
-	{
-		uniFile::filenameType dest = make_backup_log(m_fileName,x);
-
-		// archive the log file about to be removed into a gz file
-		if (m_numFileBackups > 0 && x == m_numFileBackups && m_archiveFileBackups)
-		{
-			uniFile::filenameType archive = dest;
-			utf8::size_type pos = archive.rfind(utf8("_"+tos(m_numFileBackups)));
-			if ((pos != utf8::npos) && (uniFile::fileSize(dest) > 0))
-			{
-				archive = (dest.substr(0,pos) + utf8("_log_" + make_archive_log() + ".gz"));
-
-				int m_archive = ::open(archive.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-				if (m_archive != -1)
-				{
-					utf8 out;
-					z_stream m_stream = {0};
-
-					if (uniFile::fileSize(dest) > 0)
-					{
-						FILE* m_logFile = uniFile::fopen(dest,"rb");
-						if (m_logFile != NULL)
-						{
-							bool started = false;
-							while (!feof(m_logFile))
-							{
-								std::vector<uniString::utf8::value_type> m_logFileBuffer;
-								const size_t BUFSIZE(1024*16);
-								m_logFileBuffer.clear();
-								m_logFileBuffer.resize(BUFSIZE + 1);
-								size_t amt = fread(&(m_logFileBuffer[0]), 1, BUFSIZE, m_logFile);
-								if (amt > 0)
-								{
-									out = utf8(&(m_logFileBuffer[0]), amt);
-									if (started == false)
-									{
-										compressDataStart(out, &m_stream);
-										started = true;
-									}
-									else
-									{
-										compressDataCont(out, &m_stream);
-									}
-									::write(m_archive,out.c_str(),out.size());
-								}
-							}
-
-							compressDataFinish(out, &m_stream);
-							::write(m_archive,out.c_str(),out.size());
-
-							compressDataEnd(&m_stream);
-
-							::fclose(m_logFile);
-							::close(m_archive);
-
-							// no need to keep any 0-byte files
-							// this is just incase of weirdness
-							if (!uniFile::fileSize(archive))
-							{
-								uniFile::unlink(archive);
-							}
-						}
-						else
-						{
-							::close(m_archive);
-							uniFile::unlink(archive);
-						}
-					}
-				}
-			}
-		}
-
-		::remove(dest.hideAsString().c_str());
-		::rename(
-			((x-1) ? make_backup_log(m_fileName,(x-1)).hideAsString().c_str()
-				: m_fileName.hideAsString().c_str()),
-					dest.hideAsString().c_str());
-	}
-
-	// open new log
-	m_file = ::open(m_fileName.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-}
-
-AOL_logger::fileLogger_element::fileLogger_element(const uniFile::filenameType &filename,
-												   const uniFile::filenameType &defaultFilename,
-												   bool &useDefaultPath, int backups,
-												   bool archive, int rolloverInterval, size_t SID) throw(exception):
-		m_fileName(filename), m_file(-1), m_lastRolloverTime(0),
-		m_rolloverInterval(rolloverInterval), m_numFileBackups(backups),
-		m_archiveFileBackups(archive), m_first(false), m_SID(SID)
-{
-	umask(0);
-	useDefaultPath = false;
-	m_file = ::open(filename.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-	if (m_file == -1)
-	{
-        if (SID == 0)
-            m_file = ::open (defaultFilename.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-		if (m_file == -1)
-		{
-			uniFile::filenameType fallbackFilename("/tmp/sc_serv_" + tos(getpid()) + ".log");
-			m_file = ::open(fallbackFilename.hideAsString().c_str(),O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-			if (m_file == -1)
-			{
-				throw runtime_error("Logger could not open the log file \"" + m_fileName.hideAsString() + "\" for writing [" + errMessage().hideAsString() + "]. Check the directory exists and another instance is not already running.");
-			}
-			else
-			{
-				m_fileName = fallbackFilename;
-			}
-		}
-		else
-		{
-			m_fileName = defaultFilename;
-		}
-	}
-
-	if (m_fileName == defaultFilename)
-	{
-		useDefaultPath = true;
-	}
-
-	gOptions.setOption(utf8("reallogfile"), m_fileName);
-
-	// using this to prevent rotating empty log files on startup
-	m_first = fileUtil::fileExists(m_fileName.hideAsString());
-	if (m_first && !uniFile::fileSize(m_fileName))
-	{
-		m_first = false;
-	}
-
-	rotate();
-}
-
-AOL_logger::fileLogger_element::~fileLogger_element() throw()
-{
-	if (m_file != -1)
-		::close(m_file);
-	m_file = -1;
-}
-
-void AOL_logger::fileLogger_element::log(message &m) throw(exception)
-{
-	time_t t = ::time(NULL);
-	if (t < m_lastRolloverTime || (((t - m_lastRolloverTime) > m_rolloverInterval) && m_rolloverInterval))
-	{
-		rotate();
-		rotatew3cFiles("w3c");
-	}
-    if (m.m_alreadyLogged)
-        return;
-    if (m_SID != m.m_streamID && m_SID)
-    {
-        return;
-    }
-    m.m_alreadyLogged = true;
-	m_first = true;
-
-	utf8 ss = m.getTimestamp() + "\t" + m.typeAsStr();
-    const utf8 &msg = m.getMsg();
-
-    if (msg[0] != '[')
-    {
-        const char *section = m.fromSection();
-        if (section)
-        {
-            bool wrap = (section[0] == '[') ? false : true;
-            size_t ID = m.getID();
-            if (wrap)
-            {
-                ss += "\t[";
-                ss += section;
-                if (ID > 0)
-                {
-                    ss += " sid=";
-                    ss += tos(ID);
-                }
-                ss += "] ";
-            }
-            else
-            {
-                ss += "\t";
-                ss += section;
-                // if (ID > 0)
-                    // ss += " ID present ";
-            }
-        }
-        else
-            ss += "\t";
-    }
-    else
-        ss += "\t";
-
-    const map<utf8,utf8> *fields = m.getFields();
-    if (fields)
-    {
-        for (map<utf8,utf8>::const_iterator i = fields->begin(); i != fields->end(); ++i)
-        {
-            if (!(*i).first.empty())
-            {
-                if (!(*i).second.empty())
-                {
-                    ss += "\t" + (*i).second;
-                }
-                else
-                {
-                    return;
-                }
-            }
-        }
-        ss += " ";
-    }
-    ss += msg;
-    ss += eol();
-
-	if (m_file == -1)
-	{
-		throw runtime_error(__F__ " Error writing to log file " + m_fileName.hideAsString());
-	}
-
-	if (::write(m_file,ss.c_str(),ss.size()) == -1)
-	{
-		throw runtime_error(__F__ " Error writing to log file " + m_fileName.hideAsString());
-	}
-}
-
-#endif
-
-#ifdef _WIN32
-//////// Win32 console logger
-	
-AOL_logger::consoleLogger_element::consoleLogger_element() throw(exception) : m_stdoutConsole(NULL), m_stderrConsole(NULL)
-{
-	::AllocConsole();
-	::SetConsoleOutputCP(65001); // utf-8
-	::SetConsoleCP(CP_UTF8);//65001);
-
-	m_stdoutConsole = ::GetStdHandle(STD_OUTPUT_HANDLE);
-	m_stderrConsole = ::GetStdHandle(STD_ERROR_HANDLE);
-
-	if ((!m_stdoutConsole) || (!m_stderrConsole))
-	{
-		throw runtime_error("Logger could not open console");
-	}
-}
-
-AOL_logger::consoleLogger_element::~consoleLogger_element() throw()
-{
-	if (m_stdoutConsole != NULL)
-	{
-		::FreeConsole();
-		m_stdoutConsole = NULL; 
-		m_stderrConsole = NULL;
-	}
-}
-
-void AOL_logger::consoleLogger_element::log(message &m) throw(exception)
-{
-	static const DWORD maxLogLine=2048;
-
-	utf8 ss = m.getTimestamp() + "\t" + m.typeAsStr();
-
-    const utf8 &msg = m.getMsg();
-    if (msg[0] != '[')
-    {
-        const char *section = m.fromSection();
-        if (section)
-        {
-            bool wrap = (section[0] == '[') ? false : true;
-            size_t ID = m.getID();
-            if (wrap)
-            {
-                ss += "\t[";
-                ss += section;
-                if (ID > 0)
-                {
-                    ss += " sid=";
-                    ss += tos(ID);
-                }
-                ss += "] ";
-            }
-            else
-            {
-                ss += "\t";
-                ss += section;
-                // if (ID > 0)
-                    // ss += " ID present ";
-            }
-        }
-        else
-            ss += "\t";
-    }
-    else
-        ss += "\t";
-
-    const map<utf8,utf8> *fields = m.getFields();
-    if (fields)
-    {
-        for (map<utf8,utf8>::const_iterator i = fields->begin(); i != fields->end(); ++i)
-        {
-            if (!(*i).first.empty())
-            {
-                if (!(*i).second.empty())
-                {
-                    ss += "\t" + (*i).second;
-                }
-                else
-                {
-                    return;
-                }
-            }
-        }
-       }
-
-    ss += m.getMsg();
-	ss += eol();
-
-	HANDLE h = (m.getType() == AOL_logger::message::BM_ERROR ? m_stderrConsole : m_stdoutConsole);
-	if (h != INVALID_HANDLE_VALUE)
-	{
-		// see if we need to colour the output - only used for errors and warnings
-		AOL_logger::message::message_t type = m.getType();
-		bool painted = false;
-		CONSOLE_SCREEN_BUFFER_INFO csbiInfo = {0};
-		WORD wOldColorAttrs = 0;
-		if (type != AOL_logger::message::BM_INFO && GetConsoleScreenBufferInfo(h, &csbiInfo))
-		{
-			wOldColorAttrs = csbiInfo.wAttributes;
-
-			// red for error, yellow for warnings, green for debug, blue for update
-			if (type == AOL_logger::message::BM_ERROR)
-			{
-				painted = true;
-				SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_INTENSITY);
-			}
-			else if (type == AOL_logger::message::BM_WARNING)
-			{
-				painted = true;
-				SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
-			}
-			else if (type == AOL_logger::message::BM_DEBUG)
-			{
-				painted = true;
-				SetConsoleTextAttribute(h, FOREGROUND_GREEN);
-			}
-			else if (type == AOL_logger::message::BM_UPDATE)
-			{
-				painted = true;
-				SetConsoleTextAttribute(h, FOREGROUND_BLUE);
-			}
-		}
-
-		// utf8 sometimes returns  a size that does not match input
-		DWORD written(0);
-		DWORD amtToWrite = (DWORD)ss.size();
-		bool truncated = false;
-		if (amtToWrite > maxLogLine) 
-		{
-			amtToWrite = maxLogLine;
-			truncated = true;
-		}
-
-		if (truncated)
-		{
-			utf8 truncateMsg = m.getTimestamp() + "\t" + ((char)message::BM_WARNING) + "\t[MAIN] Next line is truncated" + eol();
-			::WriteFile(h,truncateMsg.c_str(),(DWORD)truncateMsg.size(),&written,NULL);
-			written = 0;
-		}
-
-		if (::WriteFile(h,ss.c_str(),amtToWrite,&written,NULL))
-		{
-			if (truncated)
-			{
-				// eol
-				written = 0;
-				::WriteFile(h,eol().c_str(),(DWORD)eol().size(),&written,NULL);
-			}
-		}
-
-		// revert the colouring if we needed to change it
-		if (painted)
-		{
-			SetConsoleTextAttribute(h, wOldColorAttrs);
-		}
-	}
-}
-
-#else
-/////// Unix console logger
-
-AOL_logger::consoleLogger_element::consoleLogger_element() throw(exception) :
-	m_stdoutConsole(STDOUT_FILENO), m_stderrConsole(STDERR_FILENO)
-{
-	if ((m_stdoutConsole == -1) || (m_stderrConsole == -1))
-	{
-		throw runtime_error("Logger could not open console");
-	}
-}
-
-AOL_logger::consoleLogger_element::~consoleLogger_element() throw()
-{
-	m_stdoutConsole = m_stderrConsole = -1;
-}
-
-void AOL_logger::consoleLogger_element::log(message &m) throw(exception)
-{
-	utf8 sc = "";
-	// see if we need to colour the output - only used for errors, warnings and debugs
-	AOL_logger::message::message_t type = m.getType();
-    if (type != AOL_logger::message::BM_INFO)
-	{
-		// red for error, yellow for warnings, green for debug, blue for update
-		if (type == AOL_logger::message::BM_ERROR)
-		{
-			sc = "\033[01;31m";
-		}
-		else if (type == AOL_logger::message::BM_WARNING)
-		{
-			sc = "\033[01;33m";
-		}
-		else if (type == AOL_logger::message::BM_DEBUG)
-		{
-			sc = "\033[0;32m";
-		}
-		else if (type == AOL_logger::message::BM_UPDATE)
-		{
-			sc = "\033[0;34m";
-		}
-    }
-
-    utf8 ss = sc + m.getTimestamp() + "\t" + m.typeAsStr();
-    const utf8 &msg = m.getMsg();
-    if (msg[0] != '[')
-    {
-        const char *section = m.fromSection();
-        if (section)
-        {
-            bool wrap = (section[0] == '[') ? false : true;
-            size_t ID = m.getID();
-            if (wrap)
-            {
-                ss += "\t[";
-                ss += section;
-                if (ID > 0)
-                {
-                    ss += " sid=";
-                    ss += tos(ID);
-                }
-                ss += "] ";
-            }
-            else
-            {
-                ss += "\t";
-                ss += section;
-                // if (ID > 0)
-                // ss += " ID present ";
-            }
-        }
-        else
-            ss += "\t";
-    }
-    else
-        ss += "\t";
-    const map<utf8,utf8> *fields = m.getFields();
-    if (fields)
-    {
-        for (map<utf8,utf8>::const_iterator i = fields->begin(); i != fields->end(); ++i)
-        {
-            if (!(*i).first.empty())
-            {
-                if (!(*i).second.empty())
-                {
-                    ss += "\t" + (*i).second;
-                }
-                else
-                {
-                    return;
-                }
-            }
-        }
-    }
-
-    ss += m.getMsg();
-	ss += eol() + (!sc.empty() ? "\033[0m" : "");
-
-	int console = (m.getType() == AOL_logger::message::BM_ERROR ? m_stderrConsole : m_stdoutConsole);
-
-	if (console != -1)
-	{
-		::write(console,ss.c_str(),ss.size());
-	}
-}
-#endif
-
-#ifdef _WIN32
-
-// Win32 system logger
-void AOL_logger::systemLogger_element::registerEventLog(const utf8 &log_object_name,
-														const uniFile::filenameType &fullExePath) throw()
-{
-	HKEY key = NULL;
-	DWORD disposition = 0;
-
-	wstring regEntry = L"System\\CurrentControlSet\\Services\\EventLog\\Application\\";
-	regEntry += log_object_name.toWString();
-
-	LONG err = ::RegCreateKeyExW(HKEY_LOCAL_MACHINE, regEntry.c_str(), 0, NULL,
-								 REG_OPTION_NON_VOLATILE, KEY_WRITE, 0, &key, &disposition);
-
-	if (err == ERROR_SUCCESS)
-	{
-		DWORD ts = 1;
-		wstring widePath = fullExePath.toWString();
-		::RegSetValueExW(key,L"EventMessageFile",0,REG_SZ,(const BYTE *)widePath.c_str(),(DWORD)((fullExePath.size() + 1) * 2));
-		::RegSetValueExW(key,L"TypesSupported",0,REG_DWORD,(const BYTE *)&ts,sizeof(ts));
-		::RegCloseKey(key);
-	}
-}
-
-AOL_logger::systemLogger_element::systemLogger_element(const utf8 &log_object_name,
-													   const uniFile::filenameType &fullExePath,
-													   const utf8 &loggerConfigString) throw(exception)
-		: m_systemLog(NULL), m_loggerConfigString(loggerConfigString)
-{
-	registerEventLog(log_object_name,fullExePath);
-    m_systemLog = ::RegisterEventSourceW(NULL,  // uses local computer 
-										 log_object_name.toWString().c_str()); // source name 
-    if (m_systemLog == NULL)
-	{
-        throw runtime_error("Could not register the event source for the system logs."); 
-	}
-}
-
-AOL_logger::systemLogger_element::~systemLogger_element() throw()
-{
-	if (m_systemLog != NULL)
-	{
-		::DeregisterEventSource(m_systemLog);
-		m_systemLog = NULL;
-	}
-}
-
-static WORD charToLogType(char c) throw()
-{
-	if (c == 'E')
-	{
-		return EVENTLOG_ERROR_TYPE;
-	}
-	if (c == 'W')
-	{
-		return EVENTLOG_WARNING_TYPE;
-	}
-	if (c == 'I')
-	{
-		return EVENTLOG_INFORMATION_TYPE;
-	}
-	return 0;
-}
-
-static WORD messageTypeToLogType(AOL_logger::message::message_t t, const utf8 &configString) throw()
-{
-	if (configString.size() < 5)
-	{
-		return EVENTLOG_ERROR_TYPE;
-	}
-
-	switch (t)
-	{
-		case AOL_logger::message::BM_INFO:
-		{
-			return charToLogType(configString[3]);
-		}
-		case AOL_logger::message::BM_WARNING:
-		{
-			return charToLogType(configString[2]);
-		}
-		case AOL_logger::message::BM_ERROR:
-		{
-			return charToLogType(configString[0]);
-		}
-		case AOL_logger::message::BM_DEBUG:
-		{
-			return charToLogType(configString[4]);
-		}
-	}
-	return 0;
-}
-
-void AOL_logger::systemLogger_element::log(message &m) throw(exception)
-{
-	if (m_systemLog == NULL)
-	{
-		throw runtime_error(__F__ " Error writing to system log");
-	}
-
-	const map<utf8,utf8> *fields = m.getFields();
-
-	utf8 ss;
-    if (fields)
-    {
-	    for (map<utf8,utf8>::const_iterator i = fields->begin(); i != fields->end(); ++i)
-	    {
-		    if (!(*i).first.empty())
-		    {
-			    if (!(*i).second.empty())
-			    {
-				    ss += (!ss.empty() ? "\t" : "") + (*i).second;
-			    }
-			    else
-			    {
-			        return;
-                }
-			}
-		}
-	}
-    ss += m.getMsg();
-	if (!ss.empty())
-	{
-		utf32 u32(stripWhitespace(ss));
-		utf16 u16(u32.toUtf16(true));
-
-		const wchar_t *s = (const wchar_t *)u16.c_str();
-		WORD et = messageTypeToLogType(m.getType(), m_loggerConfigString);
-		if (et)
-		{
-			::ReportEventW(m_systemLog,				// event log handle
-						   et,						// event type
-						   0,						// category 0
-						   ((DWORD)0xC0000001L),	// event identifier
-						   NULL,					// no user security identifier
-						   1,						// one substitution string
-						   0,						// no data
-						   &s,						// pointer to string array
-						   NULL);
-		}
-	}
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/logger.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/logger.h
deleted file mode 100644
index 1cd634de..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/logger.h
+++ /dev/null
@@ -1,461 +0,0 @@
-#pragma once
-#ifndef logger_H_
-#define logger_H_
-
-#ifdef _WIN32
-#include <windows.h>
-#include <tchar.h>
-#endif
-#include <string>
-#include <vector>
-#include <algorithm>
-#include <map>
-#include <stdexcept>
-#include "unicode/uniFile.h"
-#include "stl/stringUtils.h"
-#include "stl/functors.h"
-#include "threading/messageThread.h"
-#include "unicode/uniFile.h"
-
-namespace AOL_logger 
-{
-	/*
-	A function object, used in conjunction with the messageThread template to create a
-	thread safe logging entity which runs on it's own thread. 
-
-	The logger is meant to be run in the context of a messageThread object like so:
-
-		extern messageThread<logger>	*gLog;
-
-	You post messages using the postMessage method from the messageThread class
-
-		gLog->postMessage(whatever);
-
-	The E (logger element) type has the following requirements
-
-		1) Must be a heap element that can be deleted.
-		2) An install() method which is called when the element becomes part of
-			the logging system. Install may throw an exception
-		3) An uninstall() mehod which is called when before the log element is
-			destroyed by the logger system. It MUST NOT throw an exception.
-
-	The M (message) type has the following requirements
-
-		1) Must support a static makeError(const uniString::utf8 &s) throw() for
-			constructing an error message
-		2) Must have 
-				bool done() const throw()
-			which returns true to indicate it's a message to shutdown the logger
-		3) Any other signatures required by the logger element
-	*/
-
-	class message;
-	template<class M = AOL_logger::message> class logger_element;
-
-	template<typename M = AOL_logger::message,typename E = AOL_logger::logger_element<M> >
-	class logger
-	{
-		// NOTE: logger takes ownership of the elements and deletes them
-		// when done.
-	private:
-		std::vector<E*> m_elements;
-
-		void uninstallElements() throw()
-		{
-			std::for_each(m_elements.begin(), m_elements.end(), std::mem_fun(&E::uninstall));
-		}
-
-	public:		
-		typedef M message_t;
-
-		// constructors. If the constructor succeeds (does not throw), then this
-		// logger object has posession of the elements, and will delete them
-		// itself.
-		logger() throw() {}
-
-		// create the logger with a single element. An exception
-		// means that the element was not added. The logger has not taken
-		// posession of the element and it's up to the caller to delete it.
-		explicit logger(E *e) throw(std::exception) 
-		{ 
-			addElement(e); 
-		}
-
-		// create the logger from a container of elements. If the install() method
-		// of any element throws, then this constructor will throw. All methods that
-		// were installed() will be uninstalled() but NO elements will be deleted. Thatt
-		// is up to the caller.
-		template <typename ITER>
-		logger(ITER first,ITER last) throw (std::exception) 
-		{ 
-			try
-			{
-				addElement(first, last); 
-			}
-			catch(...)
-			{
-				uninstallElements();
-				m_elements.clear();
-				throw;
-			}
-		}
-
-		/////////////////////////
-
-		// destructor
-		~logger() throw()
-		{
-			uninstallElements();
-			std::for_each(m_elements.begin(), m_elements.end(), stlx::delete_fntr<E>);
-		}
-
-		// warning... there is no lock protection. Do not add a logger element
-		// while the thread is running
-		void addElement(E *e) throw(std::exception)
-		{
-			// note: element is not added to internal list if install() throws
-			e->install();
-			m_elements.push_back(e);
-		}
-
-		// if any element throws, then all the ones passed in will be uninstalled if
-		// they were installed, and no objects in the list will be taken posession of
-		template <typename ITER>
-		void addElement(ITER first, ITER last) throw(std::exception)
-		{
-			std::vector<E*> tmp;
-			try
-			{
-				for (ITER i = first; i != last; ++i) 
-				{
-					(*i)->install(); 
-					tmp.push_back(*i);
-				}
-			}
-			catch(...)
-			{
-				for (typename std::vector<E*>::const_iterator i = tmp.begin(); i != tmp.end(); ++i)
-				{
-					(*i)->uninstall();
-				}
-				throw;
-			}
-			m_elements.insert(m_elements.end(), tmp.begin(), tmp.end());
-		}
-
-		//////////////////////////////////////////////////////
-
-		// main dispatch loop
-		bool operator()(M &m) throw()
-		{
-			if (m.done()) // if this is the done message, exit the loop
-			{
-				return false;
-			}
-
-			if (m.rotate())
-			{
-				for (typename std::vector<E*>::const_iterator i = m_elements.begin(); i != m_elements.end(); ++i)
-				{
-					(*i)->rotate();
-				}
-				return true;
-			}
-
-			for (typename std::vector<E*>::const_iterator i = m_elements.begin(); i != m_elements.end(); ++i)
-			{
-				try 
-				{
-					(*i)->log(m);
-				}
-				catch (const std::exception &ex)
-				{
-					// on an exception, create an error message and dispatch it to everyone
-					// via their 'NOTHROW' handler
-					M mex = M::makeError(ex.what());
-					for (typename std::vector<E*>::const_iterator ix = m_elements.begin(); ix != m_elements.end(); ++ix)
-					{
-						(*ix)->logNOTHROW(mex);
-					}
-				}
-			}
-			return true;
-		}
-	};
-
-///////////////////////////////////////////////////////////////////////////////////////////////
-/////////////////////// Here is a basic set of elements you can use ///////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////////
-
-    class fileLogger_element;
-
-	// the message class
-	class message
-	{
-	public:
-		typedef enum
-		{
-			BM_DONE,
-			BM_ROTATE,
-			BM_ERROR = 'E',
-			BM_WARNING = 'W',
-			BM_INFO = 'I',
-			BM_DEBUG = 'D',
-			BM_UPDATE = 'U'
-		} message_t;
-
-        size_t m_streamID;
-	private:
-		//uniString::utf8 m_typeStr;
-        friend class AOL_logger::fileLogger_element;
-
-		uniString::utf8 m_timestamp;
-		std::map<uniString::utf8,uniString::utf8> *m_fields;
-        uniString::utf8 m_msg;
-        const char *m_section;
-		message_t m_type;
-        bool m_alreadyLogged;
-
-		static uniString::utf8 timeStamp() throw()
-		{
-#ifdef _WIN32
-			SYSTEMTIME lastTime = {0};
-			wchar_t d[100] = {0}, t[100] = {0};
-			uniString::utf8 lastMsg;
-
-			SYSTEMTIME sysTime = {0};
-			::GetLocalTime(&sysTime);
-
-			::GetDateFormatW(LOCALE_SYSTEM_DEFAULT, 0, &sysTime, _T("yyyy'-'MM'-'dd"), d, 99);
-			::GetTimeFormatW(LOCALE_SYSTEM_DEFAULT, 0, &sysTime, _T("HH':'mm':'ss"), t, 99);
-			lastMsg = stringUtil::tos((const wchar_t *)d) + " " + stringUtil::tos((const wchar_t *)t);
-			return lastMsg;
-#else
-			char buf[32] = {0};
-
-			struct tm ttm;
-			time_t ttt = ::time(NULL);
-			::strftime(buf, sizeof (buf), "%Y-%m-%d %H:%M:%S", ::localtime_r(&ttt, &ttm));
-			return buf;
-#endif
-		}
-
-        message (const message_t m, const uniString::utf8 &msg, const char *section = NULL, size_t id = 0)
-            : m_streamID(id), m_timestamp(timeStamp()), m_fields(NULL), m_msg(msg), m_section(section), m_type(m), m_alreadyLogged(false)  { }
-
-        message(const message_t m, const char *msg, const char *section = NULL, size_t id = 0)
-            : m_streamID(id), m_timestamp(timeStamp()), m_fields(NULL), m_msg(msg), m_section(section), m_type(m), m_alreadyLogged(false)  { }
-
-        message(const message_t m, const char *section = NULL, size_t id = 0, const std::map<uniString::utf8,uniString::utf8> *fields = NULL)
-            : m_streamID(id), m_timestamp(timeStamp()), m_section(section), m_type(m), m_alreadyLogged(false)
-        {
-            if (fields)
-                m_fields = new std::map<uniString::utf8,uniString::utf8> (*fields);
-        }
-
-	public:
-		inline bool done() const throw() { return (m_type == BM_DONE); }
-		inline bool rotate() const throw() { return (m_type == BM_ROTATE); }
-
-		inline message_t getType() const throw() { return m_type; }
-		inline void  setType(message_t m) { m_type = m; }
-		inline const uniString::utf8 &getTimestamp() const throw() { return m_timestamp; }
-		inline const std::map<uniString::utf8,uniString::utf8> *getFields() const throw() { return m_fields; }
-        inline const char *fromSection() const throw() { return m_section; }
-        inline const uniString::utf8 &getMsg() const throw() { return m_msg; }
-        inline size_t getID() const throw() { return m_streamID; }
-
-        static message makeDone() throw() { return message(BM_DONE); }
-        static message makeRotate() throw() { return message(BM_ROTATE); }
-        static message makeUpdate (const std::map<uniString::utf8,uniString::utf8> *f) throw() { return message(BM_UPDATE,NULL,0,f); }
-        static message makeDebug (const std::map<uniString::utf8,uniString::utf8> *f) throw() { return message(BM_DEBUG,NULL,0,f); }
-        static message makeInfo (const std::map<uniString::utf8,uniString::utf8> *f) throw() { return message(BM_INFO,NULL,0,f); }
-
-        static message makeUpdate (const uniString::utf8 &s) throw() { std::map<uniString::utf8,uniString::utf8> f; f["msg"] = s; return message(BM_UPDATE,NULL,0,&f); }
-
-        static message makeDebug (const uniString::utf8 &s, const char *sct = NULL, size_t id = 0) throw() { return message(BM_DEBUG,s,sct,id); }
-        static message makeDebug (const char *s, const char *sct = NULL, size_t id = 0) throw() { return message(BM_DEBUG,s,sct,id); }
-
-        static message makeInfo (const uniString::utf8 &s, const char *sct = NULL, size_t id = 0) throw() { return message(BM_INFO,s,sct,id); }
-        static message makeInfo (const char *s, const char *sct = NULL, size_t id = 0) throw() { return message(BM_INFO,s,sct,id); }
-
-        static message makeWarning (const uniString::utf8 &s, const char *sct = NULL, size_t id = 0) throw() { return message(BM_WARNING,s,sct,id); }
-        static message makeWarning (const char *s, const char *sct = NULL, size_t id = 0) throw() { return message(BM_WARNING,s,sct,id); }
-
-        static message makeError (const uniString::utf8 &s, const char *sct = NULL, size_t id = 0) throw() { return message(BM_ERROR,s,sct,id); }
-        static message makeError (const char *s, const char *sct = NULL, size_t id = 0) throw() { return message(BM_ERROR,s,sct,id); }
-
-		const char *typeAsStr() const
-		{
-            const char *str;
-			switch (m_type)
-			{
-				case BM_INFO: str = "INFO"; break;
-				case BM_ERROR: str = "ERROR"; break;
-				case BM_WARNING: str = "WARN"; break;
-				case BM_DEBUG: str = "DEBUG"; break;
-				case BM_UPDATE: str = "UPDATE"; break;
-				default: str = ""; break;
-			}
-            return str;
-		}
-	};
-
-	// a base virtual message class for use by the logger
-	template<class M>
-	class logger_element
-	{
-	protected:
-		// the message class used by the logger
-
-	private:
-		virtual void install() throw(std::exception) = 0;
-		virtual void log(M &m) throw(std::exception) = 0;
-		virtual void logNOTHROW(M &m) throw() { try { log(m); } catch(...){} }
-		virtual void uninstall() throw() = 0;
-		virtual void rotate() throw() {}
-
-	public:
-		virtual ~logger_element() throw() {}
-		friend class AOL_logger::logger<M,AOL_logger::logger_element<M> >;
-	};
-
-////////////////////////////////////////////////////////////////////////////////////
-///////////////////////// WIN32 ELEMENTS ///////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////////
-
-#ifdef _WIN32
-	// Win32 file logger
-	class fileLogger_element: public logger_element<AOL_logger::message>
-	{
-	private:
-		uniFile::filenameType	m_fileName;
-		HANDLE		m_file;
-		time_t		m_lastRolloverTime;
-		const int	m_rolloverInterval;
-		const int	m_numFileBackups;
-		const bool	m_archiveFileBackups;
-		bool		m_first;
-        size_t      m_SID;
-
-		void rotate() throw();
-
-		virtual void install() throw(std::exception){}
-		virtual void log(AOL_logger::message &m) throw(std::exception);
-		virtual void uninstall() throw(){}
-
-		static uniFile::filenameType make_backup_log(const uniFile::filenameType &filename, int which) throw();
-		static uniFile::filenameType make_archive_log() throw();
-
-	public:
-		fileLogger_element(const uniFile::filenameType &filename,
-						   const uniFile::filenameType &defaultFilename,
-						   bool &useDefaultPath, int backups,
-						   bool archive, int rolloverInterval, size_t SID = 0) throw(std::exception);
-		~fileLogger_element() throw();
-	};
-
-	class consoleLogger_element: public logger_element<AOL_logger::message>
-	{
-	private:
-		HANDLE m_stdoutConsole;
-		HANDLE m_stderrConsole;
-
-		virtual void install() throw(std::exception){}
-		virtual void log(AOL_logger::message &m) throw(std::exception);
-		virtual void uninstall() throw(){}
-
-	public:
-		consoleLogger_element() throw(std::exception);
-		~consoleLogger_element() throw();
-	};
-
-	class systemLogger_element: public logger_element<AOL_logger::message>
-	{
-	private:
-		HANDLE m_systemLog;
-		const uniString::utf8 m_loggerConfigString;
-
-		void registerEventLog(const uniString::utf8 &log_object_name,
-							  const uniFile::filenameType &fullExePath) throw();
-
-		virtual void install() throw(std::exception){}
-		virtual void uninstall() throw() {}
-		virtual void log(AOL_logger::message &m) throw(std::exception);
-
-	public:
-		systemLogger_element(const uniString::utf8 &log_object_name,
-							 const uniFile::filenameType &fullExePath,
-							 const uniString::utf8 &loggerConfigString) throw(std::exception);
-		~systemLogger_element() throw();
-		static uniString::utf8 panicConfiguration() throw() { return "EEW  Z"; }
-	};
-
-#else // Unix
-
-	//////////////////////////////////////////////////////////////////////////////////////////
-	//////////////////////////// Unix ELEMENTS ///////////////////////////////////////////////
-	//////////////////////////////////////////////////////////////////////////////////////////
-
-	class fileLogger_element: public logger_element<AOL_logger::message>
-	{
-	private:
-		uniFile::filenameType	m_fileName;
-		int			m_file;
-		time_t		m_lastRolloverTime;
-		const int	m_rolloverInterval;
-		const int	m_numFileBackups;
-		const bool	m_archiveFileBackups;
-		bool		m_first;
-        size_t      m_SID;
-
-		void rotate() throw();
-
-		virtual void install() throw(std::exception){}
-		virtual void log(AOL_logger::message &m) throw(std::exception);
-		virtual void uninstall() throw(){}
-
-		static uniFile::filenameType make_backup_log(const uniFile::filenameType &filename,int which) throw();
-		static uniFile::filenameType make_archive_log() throw();
-
-	public:
-		fileLogger_element(const uniFile::filenameType &filename,
-						   const uniFile::filenameType &defaultFilename,
-						   bool &useDefaultPath, int backups,
-						   bool archive, int rolloverInterval, size_t SID = 0) throw(std::exception);
-		~fileLogger_element() throw();
-	};
-
-	class consoleLogger_element: public logger_element<AOL_logger::message>
-	{
-		private:
-		int m_stdoutConsole;
-		int m_stderrConsole;
-
-		virtual void install() throw(std::exception){}
-		virtual void log(AOL_logger::message &m) throw(std::exception);
-		virtual void uninstall() throw(){}
-
-	public:
-		consoleLogger_element() throw(std::exception);
-		~consoleLogger_element() throw();
-	};
-
-	// unix system logger (not implemented)
-	class systemLogger_element: public logger_element<AOL_logger::message>
-	{
-	private:
-		virtual void install() throw(std::exception){}
-		virtual void uninstall() throw() {}
-		virtual void log(const AOL_logger::message &/*m*/) throw(std::exception){}
-
-	public:
-		explicit systemLogger_element(const uniString::utf8 &/*srcName*/) throw(){}
-		~systemLogger_element() throw(){}
-	};
-
-	#endif
-	typedef messageThread<AOL_logger::logger<AOL_logger::message,AOL_logger::logger_element<AOL_logger::message> > > stdLog_t;
-} // namespace AOLLogger
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/messagefile.mc b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/messagefile.mc
deleted file mode 100644
index 8b3a4be8..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/messagefile.mc
+++ /dev/null
@@ -1,7 +0,0 @@
-MessageId=0x1
-Severity=Error
-SymbolicName=MSG_CMD_ERR
-Language=English
-%1
-
-
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/serviceMain.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/serviceMain.cpp
deleted file mode 100644
index 915cbb3d..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/serviceMain.cpp
+++ /dev/null
@@ -1,876 +0,0 @@
-#include "serviceMain.h"
-#include <string>
-#include <string.h>
-#include <curl/curl.h>
-#include "expat.h"
-#include "stl/stringUtils.h"
-#include "services/stdServiceImpl.h"
-#include "../../versions.h"
-#include "../../global.h"
-#ifdef _WIN32
-#include "win32/rezFuncs.h"
-#include <crtdbg.h>
-#include <shlwapi.h>
-#else
-#ifdef PLATFORM_LINUX
-#include "../stacktrace/StackTrace.h"
-#endif
-#include <libgen.h>
-#include "unixversion.h"
-#include <pthread.h>
-#include <sys/param.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <iostream>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef __APPLE_CC__
-#include <mach-o/dyld.h>
-#include "file/fileUtils.h"
-#endif
-#endif
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#ifndef _WIN32
-#define TRUE true
-#define FALSE false
-#endif
-
-// are we running as a daemon or service
-bool sDaemon = false;
-
-event serviceMain::sStop(TRUE);
-#ifndef _WIN32
-event serviceMain::sWINCH(FALSE);
-event serviceMain::sHUP(FALSE);
-event serviceMain::sUSR1(FALSE);
-event serviceMain::sUSR2(FALSE);
-#endif
-
-#ifdef _WIN32
-static SERVICE_STATUS_HANDLE ssh=NULL; // does not have to be closed
-
-BOOL WINAPI _console_handler(DWORD fdwCtrlType)
-{
-	switch (fdwCtrlType)
-	{
-		// Handle the CTRL+C signal.
-		case CTRL_CLOSE_EVENT:
-		case CTRL_BREAK_EVENT:
-		case CTRL_C_EVENT:
-		{
-			_SetEvent(serviceMain::sStop);
-			return TRUE;
-		}
-		default:
-		{
-			return FALSE;
-		}
-	}
-}
-
-#else
-#ifdef PLATFORM_LINUX
-static void custom_signal_handler(int signum)
-{
-	signal(signum, SIG_DFL);
-	// http://sourceforge.net/p/stacktrace/code/HEAD/tree/
-	// ensure we building with -rdynamic so this works ok
-
-	static char buf[256] = {0};
-	static time_t last_ttt;
-
-	struct tm ttm;
-	time_t ttt = ::time(NULL);
-	if (ttt != last_ttt)
-	{
-		last_ttt = ttt;
-		::strftime(buf, 255, "%Y-%m-%d %H:%M:%S", ::localtime_r(&ttt, &ttm));
-	}
-
-	FILE *fp = freopen(("/tmp/sc_serv_segfault_" + tos(getpid()) + ".log").c_str(), "w", stderr);
-	fprintf(stderr, "Shoutcast DNAS/" SERV_OSNAME " v%s (" __DATE__ ")\n"
-			"An unrecoverable error (%d) has occurred @ %s.\n\n",
-			gOptions.getVersionBuildStrings().hideAsString().c_str(), signum, buf);
-	stacktrace::displayCurrentStackTrace(/*-1U, 0*/);
-	fflush(fp);
-	kill(getpid(), signum);
-}
-#endif
-unsigned sigWatcher()
-{
-	while (::WaitForSingleObject(serviceMain::sStop,0) != WAIT_OBJECT_0)
-	{
-		sigset_t catchset;
-		sigemptyset(&catchset);
-		sigaddset(&catchset,SIGPIPE);
-		sigaddset(&catchset,SIGTERM);
-		sigaddset(&catchset,SIGHUP);
-		sigaddset(&catchset,SIGINT);
-		sigaddset(&catchset,SIGQUIT);
-		sigaddset(&catchset,SIGTSTP); // ^Z allow this
-		sigaddset(&catchset,SIGCHLD);
-		sigaddset(&catchset,SIGWINCH);
-		sigaddset(&catchset,SIGUSR1);
-		sigaddset(&catchset,SIGUSR2);
-
-		//struct timespec ts;
-		//ts.tv_sec = 1;
-		//ts.tv_nsec = 0;
-		//apple is missing sigtimed wait.
-		int err = 0;
-		if (::sigwait(&catchset,&err))
-		{
-			err = SIGTERM;
-		}
-
-		switch (err)
-		{
-			case SIGTERM: case SIGINT: case SIGQUIT: case SIGTSTP:
-			{
-				_SetEvent(serviceMain::sStop);
-				break;
-			}
-			case SIGHUP:
-			{
-				_SetEvent(serviceMain::sHUP);
-				break;
-			}
-			case SIGWINCH:
-			{
-				_SetEvent(serviceMain::sWINCH);
-				break;
-			}
-			case SIGUSR1:
-			{
-				_SetEvent(serviceMain::sUSR1);
-				break;
-			}
-			case SIGUSR2:
-			{
-				_SetEvent(serviceMain::sUSR2);
-				break;
-			}
-		}
-	}
-	return 0;
-}
-
-// We need access to this for Apple, because we don't have sigtimedwait(). This means there
-// circumstances when we need access to this thread so we can signal it and force sigwait() to exit
-Tthread<pointer_to_thread_function> gSigWatcherThread(sigWatcher);
-
-#endif
-
-#ifdef _WIN32
-int run_install(const vector<uniString::utf8> &args) throw();
-int run_uninstall(const vector<uniString::utf8> &args) throw();
-int run_run(const vector<uniString::utf8> &args) throw(std::exception);
-int run_daemon(const vector<uniString::utf8> &args) throw(std::exception);
-#else
-int run_run(const vector<uniString::utf8> &args, const vector<uniString::utf8> &arg) throw(std::exception);
-int run_daemon(const vector<uniString::utf8> &args, const vector<uniString::utf8> &arg) throw(std::exception);
-
-int blockSignals() throw()
-{
-	return thread_CORE::standard_signal_block();
-}
-#endif
-
-
-uniString::utf8 getVersionBuildStrings() throw()
-{
-#ifdef _WIN32
-	static utf8 version = "";
-	if (version.empty())
-	{
-		getVersionInfo(version);
-	}
-#else
-	static utf8 version = "";
-	if (version.empty())
-	{
-		for (int x = 0; x < VENT; ++x)
-		{
-			if (x) version += ".";
-			version += tos(PRODUCTVERSION[x]);
-		}
-	}
-#endif
-#ifdef LICENCE_FREE
-    version += " no-licence-check";
-#endif
-	return version;
-}
-
-#ifdef _WIN32
-int do__main(vector<uniString::utf8> &args) throw(std::exception)
-#else
-int do__main(vector<uniString::utf8> &args, vector<uniString::utf8> &arg) throw(std::exception)
-#endif
-{
-	if (!args.empty())
-	{
-		utf8 s = toLower(args.front());
-
-		if (s == "--version" || s == "-v")
-		{
-			XML_Expat_Version expat = XML_ExpatVersionInfo();
-			printf("%s", utf8("Shoutcast DNAS/" SERV_OSNAME " v" + getVersionBuildStrings() +
-							  " (" __DATE__ ") " + utf8(curl_version()) + " expat/" +
-							  tos(expat.major) + "." + tos(expat.minor) + "." + tos(expat.micro) +
-//#ifdef _WIN32
-//							  " pthread-win32/" PTW32_VERSION_STR "-mod" +
-//#endif
-							  eol()).toANSI().c_str());
-			return 0;
-		}
-
-		if (s == "--help" || s == "/?")
-		{
-			#ifdef _WIN32
-			#define SC_SERV_END ".exe"
-			#else
-			#define SC_SERV_END ""
-			#endif
-
-			printf("%s", utf8("*********************************************************************" + eol()).toANSI().c_str());
-			printf("%s", utf8("**        Shoutcast Distributed Network Audio Server (DNAS)        **" + eol()).toANSI().c_str());
-			printf("%s", utf8("**    Copyright (C) 2014-2023 Radionomy SA, All Rights Reserved    **" + eol()).toANSI().c_str());
-			printf("%s", utf8("*********************************************************************" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "Usage: sc_serv" SC_SERV_END " [OPTION] [PARAMETERS]... [conf]" + eol()).toANSI().c_str());
-
-			printf("%s", utf8(eol() + "\t[conf] - File path to the configuration file (this can be" +
-							  eol() + "\t\t relative or absolute) [optional]" + eol()).toANSI().c_str());
-
-			printf("%s", utf8(eol() + "\t\t If not specified then sc_serv.conf / sc_serv.ini" +
-							  eol() + "\t\t in the same folder will be automatically loaded." + eol()).toANSI().c_str());
-
-			printf("%s", utf8(eol() + "Options:").toANSI().c_str());
-
-			printf("%s", utf8(eol() + "\t-s, setup\t\tRun the DNAS in setup mode for" + eol() +
-									  "\t\t\t\tcreating a basic configuration" + eol()).toANSI().c_str());
-#ifdef CONFIG_BUILDER
-			printf("%s", utf8(eol() + "\t-b, builder\t\tRun the DNAS in builder mode for" + eol() +
-									  "\t\t\t\tcreating an advanced configuration" + eol()).toANSI().c_str());
-#endif
-			printf("%s", utf8(eol() + "\t-v, --version\t\tDisplay version information" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "\t/?, --help\t\tDisplay this information" + eol()).toANSI().c_str());
-
-			#ifdef _WIN32
-			printf("%s", utf8(eol() + eol() + "Service Options:" + eol()).toANSI().c_str());
-			
-			printf("%s", utf8(eol() + "\tinstall [servicename] [username] [password] [conf]" + eol()).toANSI().c_str());
-
-			printf("%s", utf8(eol() + "\t\tservicename - Unique name for the service install" + eol() +
-									  "\t\t\t      if the default is not appropriate or" + eol() +
-									  "\t\t\t      needing multiple services [optional]" + eol() +
-									  "\t\t\t      Default is: \"Shoutcast DNAS Service\"" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "\t\tusername - User under which to run the service as" + eol() +
-									  "\t\t\t   or '0' for the local system [optional]" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "\t\tpassword - Password for user or '0' for the local" + eol() +
-									  "\t\t\t   system or with no password [optional]" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "\t\tconf - File path to the configuration file either" + eol() +
-									  "\t\t       as a full or relative path [optional]" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "\texample:" + eol() + "\t\tsc_serv.exe install" + eol() +
-									  "\t\tor" + eol() + "\t\tsc_serv.exe install sc_serv" + eol() +
-									  "\t\tor" + eol() + "\t\tsc_serv.exe install sc_serv 0 0 sc_serv.conf" +
-									  eol()).toANSI().c_str());
-
-			printf("%s", utf8(eol() + eol() + "\tuninstall [servicename]" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "\t\tservicename - Name used to install the service or" + eol() +
-									  "\t\t\t      leave blank for default [optional]" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "\texample:" + eol() + "\t\tsc_serv.exe uninstall" + eol() +
-									  "\t\tor" + eol() + "\t\tsc_serv.exe uninstall sc_serv" + eol() + eol()).toANSI().c_str());
-			#else
-			#define SC_SERV_FILE "sc_serv"
-			printf("%s", utf8(eol() + "Daemon Options:" + eol()).toANSI().c_str());
-			printf("%s", utf8(eol() + "\tdaemon [conf]\t\tRun the DNAS in daemon mode " + eol()).toANSI().c_str());
-			#endif
-			XML_Expat_Version expat = XML_ExpatVersionInfo();
-			printf("%s", utf8(eol() + eol() + "Built with: " + utf8(curl_version()) +
-							  " expat/" + tos(expat.major) + "." + tos(expat.minor) + "." +
-							  tos(expat.micro) + eol()).toANSI().c_str());
-			return 0;
-		}
-
-		if (s == "install")
-		{
-			#ifdef _WIN32
-			args.erase(args.begin());
-			return run_install(args);
-			#else
-			cerr << "install is not supported on this platform" << endl;
-			return -1;
-			#endif
-		}
-
-		if (s == "uninstall")
-		{
-						#ifdef _WIN32
-			args.erase(args.begin());
-			return run_uninstall(args);
-			#else
-			cerr << "uninstall is not supported on this platform" << endl;
-			return -1;
-			#endif
-		}
-
-		if (s == "daemon")
-		{
-			args.erase(args.begin());
-			#ifdef _WIN32
-			return run_daemon(args);
-			#else
-			return run_daemon(args, arg);
-			#endif
-		}
-	}
-
-#ifdef _WIN32
-	return run_run(args);
-#else
-	return run_run(args, arg);
-#endif
-}
-
-int main(int argc, char* argv[]) throw(std::exception)
-{
-	int result = 0;
-	try
-	{
-		vector<utf8> args;
-
-		// convert args to vector of strings
-		for (int x = 1; x < argc; ++x)
-		{
-			args.push_back(argv[x]);
-		}
-
-		// grab the calling program param as
-		// will be needed to ensure relative
-		// path handling will work correctly
-#ifdef _WIN32
-		result = do__main(args);
-#else
-		vector<utf8> arg;
-		arg.push_back(argv[0]);
-		result = do__main(args, arg);
-#endif
-	}
-	catch(const std::exception &err)
-	{
-		printf("%s", (std::string(LIBRARY_LOG_TAG) + "Exception in main: " + err.what()).c_str());
-	}
-	return result;
-}
-
-/////////////////////////////////////////////////////
-
-// surround by quotes
-#ifdef _WIN32
-static wstring quote(const wstring &s) throw()
-{
-	return wstring(L"\"") + s + wstring(L"\"");
-}
-
-int run_install(const vector<utf8> &args) throw()
-{
-	int result = -1;
-
-	SC_HANDLE schSCManager = 0;
-	SC_HANDLE schService = 0;
-
-	try
-	{
-		wstring serviceName = (!args.empty() ? args[0].toWString().c_str() : L"Shoutcast DNAS Service");
-		wstring account = (args.size() > 2 ? (args[1] == "0" ? L"" : args[1].toWString()) : L"");
-		wstring password = (args.size() > 3 ? (args[2] == "0" ? L"" : args[2].toWString()) : L"");
-			
-		const size_t SIZ(2048);
-		wchar_t nameBuffer[SIZ+2] = {0};
-		::GetModuleFileNameW(0,nameBuffer,SIZ);
-
-		schSCManager = ::OpenSCManagerW(NULL,	// local machine 
-										NULL,	// ServicesActive database 
-										SC_MANAGER_ALL_ACCESS);  // full access rights 
-
-		if (schSCManager == NULL)
-		{
-			if (GetLastError() == ERROR_ACCESS_DENIED)
-			{
-				throw runtime_error("Aborting service install due to a lack of required permissions.\n\n"
-									"Ensure you are using an Administrator Command Prompt or that you have administrator access to be able to install a service.");
-			}
-			else
-			{
-				static char error[512];
-				snprintf(error, sizeof(error),
-						 "Aborting service install due to OpenSCManager(..) failure.\n\nError code: %d\n[%s]",
-						 GetLastError(), errMessage().c_str());
-				throw runtime_error(error);
-			}
-		}
-
-		wstring cmdString = quote(nameBuffer) + L" " + quote(L"daemon") + L" " + quote(serviceName);
-		if (args.size() > 4) cmdString += L" " + quote(args[3].toWString());
-
-		schService = ::CreateServiceW( 
-				schSCManager,              // SCManager database 
-				serviceName.c_str(),       // name of service 
-				serviceName.c_str(),       // service name to display 
-				SERVICE_ALL_ACCESS,        // desired access 
-				SERVICE_WIN32_OWN_PROCESS, // service type 
-				SERVICE_DEMAND_START,      // start type 
-				SERVICE_ERROR_NORMAL,      // error control type 
-				cmdString.c_str(),
-				NULL,                      // no load ordering group 
-				NULL,                      // no tag identifier 
-				NULL,                      // no dependencies 
-				(account == L"" ? NULL : account.c_str()),                      // LocalSystem account 
-				(password == L"" ? NULL : password.c_str()));                   // no password 
-
-		if (schService == NULL) 
-		{
-			int err = GetLastError();
-			static char error[512];
-			snprintf(error, sizeof(error),
-					 "Aborting service install due to CreateService(..) failure.\n\nError code: %d\n[%s]%s",
-					 err, errMessage().c_str(),
-					 (err == ERROR_SERVICE_EXISTS ? "\n\nCheck the service name has not already been used." :
-					  (err == ERROR_SERVICE_MARKED_FOR_DELETE ? "\n\nCheck the previous service instance has been completely stopped." : "")));
-			throw runtime_error(error);
-		}
-		else
-		{
-			SERVICE_DESCRIPTION schServiceDesc;
-			schServiceDesc.lpDescription = L"Shoutcast DNAS Server (sc_serv) v2";
-			ChangeServiceConfig2(schService, SERVICE_CONFIG_DESCRIPTION, &schServiceDesc);
-		}
-		::CloseServiceHandle(schService); 
-		::CloseServiceHandle(schSCManager);
-
-		result = 0;
-	}
-	catch(const exception &ex)
-	{
-		::MessageBox(0,tows(ex.what()).c_str(),L"Shoutcast DNAS Error",MB_OK|MB_ICONEXCLAMATION);
-		if (schService)
-			::CloseServiceHandle(schService); 
-		if (schSCManager)
-			::CloseServiceHandle(schSCManager);
-	}
-	catch(...)
-	{
-		::MessageBox(0,L"Unknown exception",L"Shoutcast DNAS Error",MB_OK);
-		if (schService)
-			::CloseServiceHandle(schService); 
-		if (schSCManager)
-			::CloseServiceHandle(schSCManager);
-	}
-
-	return result;
-}
-
-/////////////////////////////////////////////////////
-
-int run_uninstall(const vector<utf8> &args) throw()
-{
-	int result = -1;
-
-	SC_HANDLE schSCManager = 0;
-	SC_HANDLE service = 0;
-	try
-	{
-		schSCManager = ::OpenSCManagerW(NULL,	// local machine 
-										NULL,	// ServicesActive database 
-										SC_MANAGER_ALL_ACCESS);  // full access rights 
-
-		if (schSCManager == NULL)
-		{
-			if (GetLastError() == ERROR_ACCESS_DENIED)
-			{
-				throw runtime_error("Aborting service uninstall due to a lack of required permissions.\n\n"
-									"Ensure you are using an Administrator Command Prompt or that you have administrator access to be able to uninstall a service.");
-			}
-			else
-			{
-				static char error[512];
-				snprintf(error, sizeof(error),
-						 "Aborting service uninstall due to OpenSCManager(..) failure.\n\nError code: %d\n[%s]",
-						 GetLastError(), errMessage().c_str());
-				throw runtime_error(error);
-			}
-		}
-
-		service = ::OpenServiceW(schSCManager, (!args.empty() ? args[0].toWString().c_str() : L"Shoutcast DNAS Service"), DELETE);
-		if (!service)
-		{
-			int err = GetLastError();
-			static char error[512];
-			snprintf(error, sizeof(error),
-					 "Aborting service uninstall due to OpenService(..) failure.\n\nError code: %d\n[%s]%s",
-					 err, errMessage().c_str(),
-					 (err == ERROR_SERVICE_DOES_NOT_EXIST ? "\n\nCheck the service has not already been uninstalled and the\n"
-															"service name matches what was used to register the service." : ""));
-			throw runtime_error(error);
-		}
-
-		if (!::DeleteService(service))
-		{
-			int err = GetLastError();
-			static char error[512];
-			snprintf(error, sizeof(error),
-					 "Aborting service uninstall due to DeleteService(..) failure.\n\nError code: %d\n[%s]%s",
-					 err, errMessage().c_str(),
-					 (err == ERROR_SERVICE_DOES_NOT_EXIST ? "\n\nCheck the service has not already been removed and that the\n"
-															"service name matches what was used to register the service." :
-					  (err == ERROR_SERVICE_MARKED_FOR_DELETE ? "\n\nCheck the previous service instance has been completely stopped." : "")));
-			throw runtime_error(error);
-		}
-
-		::CloseServiceHandle(service);
-		::CloseServiceHandle(schSCManager);
-
-		result = 0;
-	}
-	catch(const exception &ex)
-	{
-		::MessageBox(0,tows(ex.what()).c_str(),L"Shoutcast DNAS Error",MB_OK|MB_ICONEXCLAMATION);
-		if (service)
-		{
-			::CloseServiceHandle(service); 
-		}
-		if (schSCManager)
-		{
-			::CloseServiceHandle(schSCManager);
-		}
-	}
-	catch(...)
-	{
-		if (service)
-			::CloseServiceHandle(service);
-		if (schSCManager)
-			::CloseServiceHandle(schSCManager);
-	}
-
-	return result;
-}
-#endif
-
-/////////////////////////////////////////////////////
-static vector<utf8> gServiceArgs;
-
-#ifdef _WIN32
-
-//  Wraps SetServiceStatus.
-void SetTheServiceStatus(DWORD dwCurrentState, DWORD dwWin32ExitCode,
-						DWORD dwCheckPoint,   DWORD dwWaitHint)
-{
-	SERVICE_STATUS ss;  // Current status of the service.
-
-	// Disable control requests until the service is started.
-	if (dwCurrentState == SERVICE_START_PENDING)
-		ss.dwControlsAccepted = 0;
-	else
-		ss.dwControlsAccepted =
-				SERVICE_ACCEPT_STOP|SERVICE_ACCEPT_SHUTDOWN;
-				// Other flags include SERVICE_ACCEPT_PAUSE_CONTINUE
-				// and SERVICE_ACCEPT_SHUTDOWN.
-
-	// Initialize ss structure.
-	ss.dwServiceType             = SERVICE_WIN32_OWN_PROCESS;
-	ss.dwServiceSpecificExitCode = 0;
-	ss.dwCurrentState            = dwCurrentState;
-	ss.dwWin32ExitCode           = dwWin32ExitCode;
-	ss.dwCheckPoint              = dwCheckPoint;
-	ss.dwWaitHint                = dwWaitHint;
-
-	// Send status of the service to the Service Controller.
-	::SetServiceStatus(ssh, &ss);
-}
-
-static void WINAPI service_ctrl(DWORD dwCtrlCode)
-{
-	DWORD dwState = SERVICE_RUNNING;
-
-	switch (dwCtrlCode)
-	{
-		case SERVICE_CONTROL_STOP:
-			dwState = SERVICE_STOP_PENDING;
-		break;
-
-		case SERVICE_CONTROL_SHUTDOWN:
-			dwState = SERVICE_STOP_PENDING;
-		break;
-
-		case SERVICE_CONTROL_INTERROGATE:
-		break;
-
-		default:
-		break;
-	}
-
-	// Set the status of the service.
-	SetTheServiceStatus(dwState, NO_ERROR, 0, 0);
-
-	// Tell service_main thread to stop.
-	if ((dwCtrlCode == SERVICE_CONTROL_STOP) ||
-		(dwCtrlCode == SERVICE_CONTROL_SHUTDOWN))
-	{
-		_SetEvent(serviceMain::sStop);
-	}
-}
-
-static void WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv)
-{
-	try
-	{
-		// Register the service ctrl handler.
-		//if (dwArgc == 0)
-		if (gServiceArgs.empty())
-		{
-			throw runtime_error("service_main - no name");
-		}
-		ssh = ::RegisterServiceCtrlHandler(lpszArgv[0],(LPHANDLER_FUNCTION)service_ctrl);
-		if (!ssh)
-		{
-			throw runtime_error("RegisterServiceCtrlHandler returned NULL");
-		}
-		// The service has started.
-		SetTheServiceStatus(SERVICE_RUNNING, 0, 0, 0);
-
-		vector<utf8> args(gServiceArgs.begin() + 1,gServiceArgs.end());
-
-		#ifdef _WIN32
-		::SetConsoleCtrlHandler(_console_handler,TRUE);
-		#else
-		gSigWatcherThread.start();
-		#endif
-
-		sm_main(args);
-
-		#ifndef _WIN32
-		::pthread_kill(gSigWatcherThread,SIGTERM);
-		gSigWatcherThread.join();
-		#endif
-
-		// Stop the service.
-		OutputDebugString(TEXT("SetTheServiceStatus, SERVICE_STOPPED\n"));
-		SetTheServiceStatus(SERVICE_STOPPED, NO_ERROR, 0, 0);
-	}
-	catch(...)
-	{
-		SetTheServiceStatus(SERVICE_STOPPED, ::GetLastError(), 0, 0);
-	}
-}
-
-#endif
-
-#ifdef _WIN32
-int run_daemon(const vector<uniString::utf8> &args) throw(std::exception)
-#else
-int run_daemon(const vector<uniString::utf8> &args, const vector<uniString::utf8> &arg) throw(std::exception)
-#endif
-{
-	sDaemon = true;
-
-	gServiceArgs = args;
-	_ResetEvent(serviceMain::sStop);
-	
-#ifdef _WIN32
-	SERVICE_TABLE_ENTRY ste[] =
-		{{TEXT("Shoutcast DNAS"),(LPSERVICE_MAIN_FUNCTION)service_main}, {NULL, NULL}};
-
-	gStartupDirectory = utf32(getfwd()).toUtf8();
-
-	if (!::StartServiceCtrlDispatcher(ste))
-	{
-		static TCHAR error[512];
-		_snwprintf(error, sizeof(error),
-				   TEXT("Error code for StartServiceCtrlDispatcher: %u [%hs].\n"),
-				   GetLastError(), errMessage().c_str());
-		MessageBox (NULL, error, NULL, MB_SERVICE_NOTIFICATION);
-		return -1;
-	}
-	return 0;
-
-#else
-	pid_t pid;
-	if ((pid = fork()) < 0)
-	{
-		return -1;
-	}
-	else if (pid != 0)
-	{
-		cout << "sc_serv2 going daemon with PID [" << tos(pid) << "]" << endl;
-		exit(0); // parent goes away
-	}
-	// child continues
-	setsid();
-	gStartupDirectory = getfwd((const char*)&(arg[0]));
-
-	blockSignals();
-	gSigWatcherThread.start();
-
-	int result = sm_main(args);
-
-	::pthread_kill(gSigWatcherThread,SIGTERM);
-	gSigWatcherThread.join();
-
-	return result;
-#endif
-}
-
-//////////////////////////////////////////////////////
-#ifdef _WIN32
-wchar_t* getfwd() throw()
-{
-	// determine the actual location of ourselves and use as needed
-	static wchar_t fwd[MAX_PATH];
-	if (!fwd[0])
-	{
-		GetModuleFileNameW(NULL, fwd, ARRAYSIZE(fwd));
-
-		// this is needed for the service mode
-		// so simpler to set it here than later
-		gStartupPath = utf32(fwd).toUtf8();
-
-		PathRemoveFileSpecW(fwd);
-		PathAddBackslashW(fwd);
-
-		// this mirrors existing Windows handling despite
-		// other 2.4.2 changes needing to be made for it.
-		SetCurrentDirectory(fwd);
-	}
-	return fwd;
-}
-#else
-char* getfwd(const char* argv) throw()
-{
-	// determine the actual location of ourselves and use as needed
-	static char fwd[MAXPATHLEN + 1];
-	if (!fwd[0])
-	{
-		// first attempt to use readlink(..) as per the platform build
-		#if (defined PLATFORM_LINUX || defined PLATFORM_ARMv6 || defined PLATFORM_ARMv7)
-		if(readlink("/proc/self/exe", fwd, sizeof(fwd) - 1) == -1)
-		#endif
-		#ifdef PLATFORM_BSD
-		if(readlink("/proc/curproc/file", fwd, sizeof(fwd) - 1) == -1)
-		#endif
-		#ifdef __APPLE_CC__
-		uint32_t fwdSize = sizeof(fwd);
-		if(!_NSGetExecutablePath(fwd, &fwdSize))
-		#endif
-		{
-			#ifdef __APPLE_CC__
-			// for this, we get the full program path which can include symlinks
-			// so this will adjust it all so as to get a clean path and then to
-			// strip off the program file name (also included) so we match all of
-			// the other OS versions of this method so it will work consistently.
-			strncpy(fwd, fileUtil::onlyPath(fileUtil::getFullFilePath(string(fwd))).hideAsString().c_str(), sizeof(fwd) - 1);
-			#endif
-			
-			// now look at argv for a / in it
-			if (strchr(argv, '/'))
-			{
-				// if it starts with a / it's absolute so just use
-				if (argv[0] == '/')
-				{
-					strncpy(fwd, argv, sizeof(fwd) - 1);
-				}
-				// otherwise attempt to append to the cwd
-				// only risk is if the cwd changed onload
-				else
-				{
-					if (getcwd(fwd, sizeof(fwd) - 1))
-					{
-						int len = sizeof(fwd) - strlen(fwd);
-						strncat(fwd, argv, min(len - 1, (int)sizeof(fwd) - 1));
-					}
-					// and if that doesn't work then set
-					// it as / and behave like older builds
-					else
-					{
-						strncpy(fwd, "/", sizeof(fwd) - 1);
-					}
-				}
-			}
-		}
-		else
-		{
-			char tmp[MAXPATHLEN + 1] = {0};
-			strncpy(fwd, strncpy(tmp, dirname(fwd), sizeof(tmp) - 1), sizeof(fwd) - 1);
-		}
-
-		// must be slash terminated
-		size_t fwd_len = strlen(fwd);
-		if (fwd_len && (fwd_len < (sizeof(fwd) - 1)) && fwd[fwd_len - 1] != '/')
-		{
-			strncat(fwd, "/", sizeof(fwd) - 1);
-		}
-	}
-	
-	return fwd;
-}
-#endif
-
-#ifdef _WIN32
-int run_run(const vector<uniString::utf8> &args) throw(std::exception)
-#else
-int run_run(const vector<uniString::utf8> &args, const vector<uniString::utf8> &arg) throw(std::exception)
-#endif
-{
-#ifdef _WIN32
-	::SetConsoleCtrlHandler(_console_handler,TRUE);
-	gStartupDirectory = utf32(getfwd()).toUtf8();
-#else
-	if (blockSignals())
-	{
-		cerr << "pthread_sigmask failed in run_run()" << endl; exit(-1);
-	}
-	gSigWatcherThread.start();
-
-#ifdef PLATFORM_LINUX
-	struct sigaction sa;
-	sigemptyset(&sa.sa_mask);
-	sa.sa_flags = 0;
-	sa.sa_handler = custom_signal_handler;
-	sigaction(SIGSEGV, &sa, NULL);
-	sigaction(SIGABRT, &sa, NULL);  
-	sigaction(SIGFPE, &sa, NULL);
-#endif
-
-	gStartupDirectory = getfwd((const char*)&(arg[0]));
-#endif
-
-	int result = 0;
-	try
-	{
-		result = sm_main(args);
-	}
-	catch(const std::runtime_error &err)
-	{
-		printf("%s", (std::string(LIBRARY_LOG_TAG) + "Exception in main: " + err.what()).c_str());
-	}
-	catch(const std::exception &err)
-	{
-		printf("%s", (std::string(LIBRARY_LOG_TAG) + "Exception in main: " + err.what()).c_str());
-	}
-	catch(...)
-	{
-		printf("%s", (std::string(LIBRARY_LOG_TAG) + "Unknown exception in main()").c_str());
-	}
-
-#ifndef _WIN32
-	::pthread_kill(gSigWatcherThread,SIGTERM);
-	gSigWatcherThread.join();
-#endif
-
-	return result;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/serviceMain.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/serviceMain.h
deleted file mode 100644
index f6ed4134..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/serviceMain.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#pragma once
-#ifndef serviceMain_H_
-#define serviceMain_H_
-
-#ifdef _WIN32
-#include <windows.h>
-#endif
-#include <vector>
-#include <string>
-#include "threading/thread.h"
-#include "unicode/uniFile.h"
-#include "../../versions.h"
-
-/*
-	Class to encapsulate command line or service based launching.
-	convention is that the first parameter will determine the action
-	taken, either "install" (install service) "uninstall" (uninstall service)
-	"daemon" (run as windows service or unix daemon) or "run" (run as application).
-	If the keyword is missing then "run" is assumed.
-	
-	if action is "install" then you must provide the following arguments
-	
-		servicename logon password .... application arguments .....
-	
-	for example
-	
-		pm.exe install procmgr myaccount mypassword param1 param2 param3
-	
-	To use the default account and password you use a zero
-	
-		pm.exe install procmgr 0 0 param1 param2
-			
-	if action is "uninstall" then you must provide the following arguments
-	
-		servicename
-		
-	This only deals with process services.
-*/
-
-class serviceMain
-{
-public:
-	static event sStop;  // if this is signaled, the service must stop. You must monitor this variable
-#ifndef _WIN32
-	static event sHUP;	// other unix signals
-	static event sWINCH;
-	static event sUSR1;
-	static event sUSR2;
-#endif
-};
-
-extern int main(int argc, char* argv[]) throw(std::exception);
-
-// you must define this guy:
-extern int sm_main(const std::vector<uniString::utf8> &args) throw();
-
-#ifdef _WIN32
-BOOL WINAPI _console_handler(DWORD fdwCtrlType);
-wchar_t* getfwd() throw();
-#else
-int blockSignals() throw();
-char* getfwd(const char* argv) throw();
-#endif
-
-#ifndef _WIN32
-// We need access to this for Apple, because we don't have sigtimedwait(). This means there
-// circumstances when we need access to this thread so we can signal it and force sigwait() to exit
-
-extern Tthread<pointer_to_thread_function> gSigWatcherThread;
-#endif
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/stdServiceImpl.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/stdServiceImpl.cpp
deleted file mode 100644
index fcc61279..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/stdServiceImpl.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-#include "stdServiceImpl.h"
-#include "file/fileUtils.h"
-#include "stl/stringUtils.h"
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-AOL_logger::stdLog_t *gLog = 0;
-uniFile::filenameType gStartupDirectory;
-uniFile::filenameType gStartupPath;
-
-// shutdown the logger
-void stdServiceBase::stopLog() throw()
-{
-	if (!gLog) return;
-	//ILOG(LIBRARY_LOG_TAG "Logger shutdown");
-	gLog->postMessage(AOL_logger::message::makeDone()); // logger shutdown message
-	gLog->join(); // wait for logger to stop
-	forget(gLog);
-}
-
-// start log in minimal panic mode
-void stdServiceBase::startPanicLog() throw()
-{
-	stopLog();
-	try
-	{
-		gLog = new AOL_logger::stdLog_t;
-		addPanicLogElements();
-		gLog->start();
-	}
-	catch(...){}
-}
-
-// start log in normal mode
-void stdServiceBase::startNormalLog(bool partial) throw(std::runtime_error)
-{
-	if (partial == false)
-	{
-		stopLog();
-	}
-	try
-	{
-		if (partial == false)
-		{
-			gLog = new AOL_logger::stdLog_t;
-		}
-		addNormalLogElements(partial);
-		gLog->start();
-		if (partial == false)
-		{
-			//ILOG(LIBRARY_LOG_TAG "Logger startup");
-		}
-		else
-		{
-			ILOG("[MAIN] Logger updating log file to use");
-		}
-	}
-	catch(...)
-	{
-		forget(gLog);
-		throw;
-	}
-}
-
-
-// start log in normal mode
-void stdServiceBase::startScreenLog() throw()
-{
-	try
-	{
-		addConsoleLogElements();
-	}
-	catch(...){}
-}
-
-void stdServiceBase::postloop() throw()
-{		
-	comUninit();
-	_SetEvent(serviceMain::sStop);
-}
-
-///// main entry point to primary flow of control (after daemon nonsense, Win32 service nonsense, etc).
-int stdServiceBase::sm_main(const vector<utf8> &args) throw()
-{
-	int result = -1;
-	try
-	{
-		preloop(/* args */); // moved to preflight so logger can be reconfigured on internal restart
-		result = loop(args); // will only throw during preflight
-	}
-	catch(const exception &err)
-	{
-		panic(err.what());
-	}
-	catch(...)
-	{
-		panic("Unknown exception");
-	}
-	postloop();
-	return result;
-}
-
-#ifdef _WIN32
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////// win32 specific ///////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-void stdServiceWin32generic::comInit() throw(exception)
-{
-	if (FAILED(CoInitialize(NULL)))
-	{
-		throw runtime_error("CoInitialize failure");
-	}
-}
-
-void stdServiceWin32generic::comUninit() throw()
-{
-	CoUninitialize();
-}
-
-// panic occurs when an error happens before the loggers
-// are brought up.
-void stdServiceWin32generic::panic(const utf8 &errM) throw()
-{
-	wstring err_m(errM.toWString());
-	if (!sDaemon)
-	{
-		::MessageBox(0,err_m.c_str(),L"SHOUTcast DNAS Error",MB_OK|MB_ICONEXCLAMATION);
-	}
-
-	// try to build the event logger
-	if (FAILED(CoInitialize(NULL)))
-	{
-		return;
-	}
-
-	try
-	{
-		startPanicLog();
-		ELOG(LIBRARY_LOG_TAG + errM);
-		stopLog();
-	}
-	catch(...){}
-	CoUninitialize();
-}
-
-#else
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////// unix specific ///////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-void stdServiceUnixgeneric::panic(const utf8 &errM) throw()
-{
-	try
-	{
-		startPanicLog();
-		ELOG(LIBRARY_LOG_TAG + errM);
-		stopLog();
-	}
-	catch(...){}
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/stdServiceImpl.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/stdServiceImpl.h
deleted file mode 100644
index aa3b2c7c..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/stdServiceImpl.h
+++ /dev/null
@@ -1,322 +0,0 @@
-#pragma once
-#ifndef stdServiceImpl_H_
-#define stdServiceImpl_H_
-
-#include <vector>
-#include <string>
-#include <stdexcept>
-#include <stdio.h>
-
-#include "serviceMain.h"
-#include "logger.h"
-#include "../../config.h"
-
-#ifdef _WIN32
-#define __F__ __FUNCTION__
-#else
-#define __F__ string(__PRETTY_FUNCTION__) + 
-#endif
-
-#define LIBRARY_LOG_TAG "<***> "
-
-extern AOL_logger::stdLog_t *gLog;
-extern uniFile::filenameType gStartupDirectory;
-extern uniFile::filenameType gStartupPath;
-extern config gOptions;
-
-// are we running as a daemon or service
-extern bool sDaemon;
-
-#define ELOG(...)       do { if (gLog) gLog->postMessage(AOL_logger::message::makeError(__VA_ARGS__)); } while (0)
-#define WLOG(...)       do { if (gLog) gLog->postMessage(AOL_logger::message::makeWarning(__VA_ARGS__)); } while (0)
-#define ILOG(...)       do { if (gLog) gLog->postMessage(AOL_logger::message::makeInfo(__VA_ARGS__)); } while (0)
-#define DLOG(...)       do { if (gLog) gLog->postMessage(AOL_logger::message::makeDebug(__VA_ARGS__)); } while (0)
-#define ULOG(...)       do { if (gLog) gLog->postMessage(AOL_logger::message::makeUpdate(__VA_ARGS__)); } while (0)
-#define ROTATE          do { if (gLog) gLog->postMessage(AOL_logger::message::makeRotate()); } while (0)
-
-#define HUP_SIGNAL 45
-
-class stdServiceBase
-{
-protected:
-	virtual ~stdServiceBase() throw(){}
-	virtual void addPanicLogElements() throw(std::exception) = 0;
-	virtual void addConsoleLogElements() throw(std::exception) = 0;
-	virtual void addNormalLogElements(bool partial) throw(std::exception) = 0;
-	virtual void preloop() throw(std::exception) = 0;
-	virtual int loop(const std::vector<uniString::utf8> &args) throw(std::exception) = 0;
-
-	void base_preloop() throw(std::exception)
-	{
-		comInit();
-	}
-
-	virtual void postloop() throw();
-
-	static void preflight(const std::vector<uniString::utf8> &args) throw(std::exception)
-	{
-		// get cmd line settings
-		const std::vector<uniString::utf8> leftover(gOptions.fromArgs(args));
-		if (!leftover.empty())
-		{
-			uniString::utf8 s;
-			for (std::vector<uniString::utf8>::const_iterator i = leftover.begin(); i != leftover.end(); ++i)
-			{
-				s += (*i) + " ";
-			}
-			throw std::runtime_error(std::string(LIBRARY_LOG_TAG) + "Bad cmd line parameters: `" + s.hideAsString() + "'");
-		}
-	}
-
-	template<typename APP>
-	int base_loop(const std::vector<uniString::utf8> &args) throw(std::exception)
-	{
-		int result = -1;
-		bool done(false);
-		while (!done)
-		{	
-			_ResetEvent(serviceMain::sStop);
-
-			try
-			{
-				preflight(args);
-				startNormalLog(false);
-				result = APP().go(*this);
-			}
-			catch(const std::exception &err)
-			{
-				printf("%s", (std::string(LIBRARY_LOG_TAG) + "Exception in main: " + err.what()).c_str());
-				done = true;
-			}
-			catch(...)
-			{
-				printf("%s", (std::string(LIBRARY_LOG_TAG) + "Unknown exception in main()").c_str());
-				done = true;
-			}
-
-			stopLog();
-			if (result != HUP_SIGNAL)
-			{
-				done = true;
-			}
-		}	
-		return result;
-	}
-
-public:
-	virtual void comInit() throw(std::exception) = 0;
-	virtual void comUninit() throw() = 0;
-	virtual void stopLog() throw();
-	virtual void startNormalLog(bool partial) throw(std::runtime_error);
-	virtual void startScreenLog() throw();
-	virtual void startPanicLog() throw();
-	virtual void panic(const uniString::utf8 &errM) throw() = 0;
-	int sm_main(const std::vector<uniString::utf8> &args) throw();
-};
-
-#ifdef _WIN32
-// stuff that doesn't require templates
-class stdServiceWin32generic: public stdServiceBase
-{
-public:
-	virtual void comInit() throw(std::exception);
-	virtual void comUninit() throw();
-	virtual void panic(const uniString::utf8 &errM) throw();
-};
-
-template<typename APP>
-class stdServiceWin32: public stdServiceWin32generic
-{
-protected:
-	uniString::utf8 m_serviceName;
-
-	virtual void addPanicLogElements() throw(std::exception)
-	{
-		gLog->addElement(new AOL_logger::systemLogger_element(m_serviceName, gStartupPath, AOL_logger::systemLogger_element::panicConfiguration()));
-	}
-
-	virtual void addConsoleLogElements() throw(std::exception)
-	{
-		_ASSERTE(gLog);
-
-		AOL_logger::consoleLogger_element *c = 0;
-
-		try
-		{
-			if (gOptions.getConsoleLogging())
-			{
-				gLog->addElement(c = new AOL_logger::consoleLogger_element());
-				c = 0;
-			}
-		}
-		catch(...)
-		{
-			forget(c);
-			throw;
-		}
-
-		// handler must be set after console is created
-		if (!sDaemon && (gOptions.getConsoleLogging()))
-		{
-			::SetConsoleCtrlHandler(_console_handler,TRUE);
-		}
-	}
-
-	// start log in normal mode (may throw)
-	virtual void addNormalLogElements(bool partial) throw(std::exception)
-	{
-		_ASSERTE(gLog);
-
-		AOL_logger::fileLogger_element *f = 0;
-		AOL_logger::systemLogger_element *s = 0;
-
-		try
-		{
-			APP::addCustomLogElements();// give app opportunity to add special elements
-			if (!gOptions.getFileLog().empty())
-			{
-				if (partial == true)
-				{
-					gLog->postMessage(AOL_logger::message::makeDone()); // logger shutdown message
-					gLog->join();
-				}
-				bool m_useDefault = false;
-				gLog->addElement(f = new AOL_logger::fileLogger_element(gOptions.getFileLog(), gOptions.logFile_Default(),
-																		m_useDefault, gOptions.logRotates(),
-																		gOptions.logArchive(), gOptions.rotateInterval()));
-				if (m_useDefault)
-				{
-					wchar_t m_defaultFileName[MAX_PATH] = {0};
-					ExpandEnvironmentStringsW(DEFAULT_LOGW, m_defaultFileName, MAX_PATH);
-					gOptions.setOption(uniString::utf8("logfile"), uniString::utf32(m_defaultFileName).toUtf8());
-				}
-
-				f = 0;
-			}
-			if ((partial == false) && sDaemon)
-			{
-				gLog->addElement(s = new AOL_logger::systemLogger_element(m_serviceName, gStartupPath,
-																		  gOptions.getSystemLogConfigString()));
-				s = 0;
-			}
-		}
-		catch(...)
-		{
-			forget(f);
-			forget(s);
-			throw;
-		}
-
-		// handler must be set after console is created
-		if ((partial == false) && !sDaemon && (gOptions.getConsoleLogging()))
-		{
-			::SetConsoleCtrlHandler(_console_handler,TRUE);
-		}
-	}
-
-	virtual void preloop() throw(std::exception) { stdServiceBase::base_preloop(); }
-	virtual int loop(const std::vector<uniString::utf8> &args) throw(std::exception) { return stdServiceBase::base_loop<APP>(args); }
-
-public:
-	explicit stdServiceWin32(const std::string &serviceName):m_serviceName(serviceName){}
-};
-
-#else
-
-// stuff that doesn't require templates
-class stdServiceUnixgeneric: public stdServiceBase
-{
-public:
-	virtual void comInit() throw(std::exception){}
-	virtual void comUninit() throw(){}
-	virtual void panic(const uniString::utf8 &errM) throw();
-};
-
-template<typename APP>
-class stdServiceUnix: public stdServiceUnixgeneric
-{
-protected:
-	virtual void addPanicLogElements() throw(std::exception)
-	{
-		gLog->addElement(new AOL_logger::consoleLogger_element());
-	}
-
-	virtual void addConsoleLogElements() throw(std::exception)
-	{
-		assert(gLog);
-
-		AOL_logger::consoleLogger_element *c = 0;
-
-		try
-		{
-			if (gOptions.getConsoleLogging())
-			{
-				gLog->addElement(c = new AOL_logger::consoleLogger_element());
-				c = 0;
-			}
-		}
-		catch(...)
-		{
-			forget(c);
-			throw;
-		}
-	}
-
-	// start log in normal mode (may throw)
-	virtual void addNormalLogElements(bool partial) throw(std::exception)
-	{
-		assert(gLog);
-
-		AOL_logger::fileLogger_element *f = 0;
-
-		try
-		{
-			APP::addCustomLogElements(); // give app an opporunity to add special loggers
-			if (!gOptions.getFileLog().empty())
-			{
-				if (partial == true)
-				{
-					gLog->postMessage(AOL_logger::message::makeDone()); // logger shutdown message
-					gLog->join();
-				}
-                size_t sid;
-                size_t count = gOptions.count_stream_logFile();
-                int i;
-
-                for (i = 0; i < count; ++i)
-                {
-                    sid = 0;
-                    uniString::utf8 fn = gOptions.fetchMulti (gOptions.stream_logFile_map(), i, "", &sid);
-                    bool m_useDefault = false;
-                    f = new AOL_logger::fileLogger_element (fn, fn, m_useDefault, gOptions.logRotates(),
-                            gOptions.logArchive(), gOptions.rotateInterval(), sid);
-                    gLog->addElement (f);
-                }
-
-				bool m_useDefault = false;
-				gLog->addElement(f = new AOL_logger::fileLogger_element(gOptions.getFileLog(), gOptions.logFile_Default(),
-																		m_useDefault, gOptions.logRotates(),
-																		gOptions.logArchive(), gOptions.rotateInterval()));
-				if (m_useDefault)
-				{
-					gOptions.setOption(uniString::utf8("logfile"),gOptions.logFile_Default());
-				}
-				f = 0;
-			}
-		}
-		catch(...)
-		{
-			forget(f);
-			throw;
-		}
-	}
-
-	virtual void preloop() throw(std::exception) { stdServiceBase::base_preloop(); }
-	virtual int loop(const std::vector<uniString::utf8> &args) throw(std::exception) { return stdServiceBase::base_loop<APP>(args); }
-
-public:
-	stdServiceUnix() throw(){}
-};
-#endif
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/GNUmakefile b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/GNUmakefile
deleted file mode 100644
index b66827ec..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/GNUmakefile
+++ /dev/null
@@ -1,78 +0,0 @@
-default: release
-
-CXX=gcc
-
-CXXFLAGS_DEBUG= -g -D_REENTRANT -D_INC_PROCESS -Wall -Wno-unused-function -Wno-sign-compare -Werror
-
-CXXFLAGS_RELEASE= -D_REENTRANT -D_INC_PROCESS -DNDEBUG -Wall -Wno-unused-function -Wno-sign-compare -Werror
-
-INCLUDES= \
-	-I. \
-	-I.. \
-	-I../..
-	
-HEADER_FILES= \
-	$(wildcard *.h) \
-	$(wildcard ../*.h) \
-
-SOURCE_FILES= \
-	$(wildcard *.cpp) \
-	$(wildcard ../*.cpp) \
-	$(wildcard ../../threading/thread.cpp) \
-	$(wildcard ../../file/fileUtils.cpp)	
-
-OBJECT_FILES= \
-	$(addsuffix .o,$(basename $(notdir $(SOURCE_FILES))))
-
-DEBUG_OBJECTS= \
-	$(addprefix debug/,$(OBJECT_FILES))
-
-RELEASE_OBJECTS= \
-	$(addprefix release/,$(OBJECT_FILES))
-
-debug/%.o:	../../threading/%.cpp $(HEADER_FILES)
-	$(CXX) $(CXXFLAGS_DEBUG) $(INCLUDES) -c $< -o $@
-
-release/%.o:	../../threading/%.cpp $(HEADER_FILES)
-	$(CXX) $(CXXFLAGS_RELEASE) $(INCLUDES) -c $< -o $@
-
-debug/%.o:	../../file/%.cpp $(HEADER_FILES)
-	$(CXX) $(CXXFLAGS_DEBUG) $(INCLUDES) -c $< -o $@
-
-release/%.o:	../../file/%.cpp $(HEADER_FILES)
-	$(CXX) $(CXXFLAGS_RELEASE) $(INCLUDES) -c $< -o $@
-
-debug/%.o:	../%.cpp $(HEADER_FILES)
-	$(CXX) $(CXXFLAGS_DEBUG) $(INCLUDES) -c $< -o $@
-
-release/%.o:	../%.cpp $(HEADER_FILES)
-	$(CXX) $(CXXFLAGS_RELEASE) $(INCLUDES) -c $< -o $@
-
-debug/%.o:	%.cpp $(HEADER_FILES)
-	$(CXX) $(CXXFLAGS_DEBUG) $(INCLUDES) -c $< -o $@
-
-release/%.o: %.cpp $(HEADER_FILES)
-	$(CXX) $(CXXFLAGS_RELEASE) $(INCLUDES) -c $< -o $@
-
-releasedir:
-	-mkdir -p release
-
-debugdir:
-	-mkdir -p debug
-
-release/test:	$(RELEASE_OBJECTS)
-	$(CXX) $(CXXFLAGS_RELEASE) $(RELEASE_OBJECTS) -lrt -lsocket -lnsl -lpthread -lstdc++ -lz -lm
-
-debug/test:	$(DEBUG_OBJECTS)
-	$(CXX) $(CXXFLAGS_DEBUG) $(DEBUG_OBJECTS) -lrt -lsocket -lnsl -lpthread -lstdc++ -lz -lm
-
-release: releasedir $(RELEASE_OBJECTS) release/test
-
-debug: debugdir $(DEBUG_OBJECTS) debug/test
-
-clean:
-	rm -rf release
-	rm -rf debug
-
-all: release debug
-
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/main.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/main.cpp
deleted file mode 100644
index cfd204cf..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/main.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-#include "stdServiceImpl.h"
-
-using namespace std;
-
-#ifndef WIN32
-#define DWORD int
-#define TRUE true
-#define FALSE false
-#endif
-
-static bool valToBool(const string &s) throw()
-{
-	if (s.empty()) return false;
-	return (s[0] == '1' || s[0] == 't' || s[0] == 'T' || s[0] == 'y' || s[0] == 'Y');
-}
-
-class options
-{
-public:
-	string	m_name;
-	string	m_fileLog;
-	bool	m_consoleLogging;
-
-	vector<string> fromArgs(const vector<string> &args) throw()
-	{
-		vector<string> unused;
-
-		for(vector<string>::const_iterator i = args.begin(); i != args.end(); ++i)
-		{
-			string::size_type colon_pos = (*i).find(":");
-			if (colon_pos != string::npos)
-			{
-				string key	= (*i).substr(0,colon_pos);
-				string value= (*i).substr(colon_pos+1);
-				if (key == "name")			{ m_name = value; }
-				else if (key == "clog")		{ m_consoleLogging = valToBool(value); }
-				else if (key == "flog")		{ m_fileLog = value; }
-				else
-				{
-					unused.push_back(*i);
-				}
-			}
-			else
-			{
-				unused.push_back(*i);
-			}
-		}
-
-		return unused;
-	}
-
-	string logText() const throw()
-	{
-		ostringstream o;
-		o << endl;
-		o << "name = " << m_name << endl;
-		o << "file log = " << m_fileLog << endl;
-		o << "console logging = " << m_consoleLogging << endl;
-		return o.str();
-	}
-};
-
-options gOptions;
-
-class testService
-{
-private:
-	bool m_done;
-	int  m_goResult;
-
-public:
-	explicit testService(stdServiceBase &b) :
-		m_done(false),
-		m_goResult(0){}
-
-	int go(stdServiceBase &b) throw(exception)
-	{
-		DLOG(__F__ "");
-
-		m_goResult = 0;
-		bool comInitialized = false;
-
-		try
-		{
-			b.comInit();
-
-			// event loop (until done)
-			while (!m_done)
-			{
-				event	dummyEvent(TRUE);
-				HANDLE evts[2];
-				DWORD evtCount = 0;
-
-				evts[evtCount++] = serviceMain::sStop;
-//				evts[evtCount++] = m_webServer.getRequestQueueEvent();//m_webServer.getCommandSignal();
-
-				//wait for a single from the webserver or console abort and take action
-				DWORD waitResult = ::WaitForMultipleObjects(evtCount,evts,FALSE,250);
-
-//				gProcessTable.update();
-				switch(waitResult)
-				{
-					case WAIT_OBJECT_0:
-					{
-						ILOG("Ctrl+C application termination");
-						m_done = true;
-						break;
-					}
-//					case WAIT_OBJECT_0+1:
-//					{
-//						DLOG("Got a web event");
-//						handleWebEvent();
-//						break;
-//					}
-					default:
-					{
-//						if (m_perfmon)
-//						{
-//							time_t ttt = time(NULL);
-//							m_perfmon->updateEPOCH(ttt);
-//							m_perfmon->updateAppCounter(gProcessTable.countRunning());
-//						}
-
-						//DLOG("PM: Got a periodic event");
-						// periodic event
-//						if (gProcessTable.isIdle())
-//						{
-//							if (m_QuitWhenIdle)
-//							{
-//								m_done = true;
-//								m_goResult = 0;
-//							}
-//							else if (m_HUPWhenIdle)
-//							{
-//								m_done = true;
-//								m_goResult = HUP_SIGNAL;
-//							}
-//						}
-						break;
-					}
-				}
-			}
-			b.comUninit();
-			comInitialized = false;
-			::SetEvent(serviceMain::sStop);
-		}
-		catch(...)
-		{
-			ELOG(__F__ " Caught an exception");
-			if (comInitialized)
-			{
-				b.comUninit();
-			}
-			::SetEvent(serviceMain::sStop);
-			throw;
-		}
-		return m_goResult;
-	}
-};
-
-int sm_main(const vector<string> &args) throw()
-{
-#ifdef WIN32
-	stdServiceWin32<testService,options> s("testService");
-#else
-	stdServiceUnix<testService,options> s;
-#endif
-	return s.sm_main(args);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/messagefile.mc b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/messagefile.mc
deleted file mode 100644
index 8b3a4be8..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/messagefile.mc
+++ /dev/null
@@ -1,7 +0,0 @@
-MessageId=0x1
-Severity=Error
-SymbolicName=MSG_CMD_ERR
-Language=English
-%1
-
-
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/resource.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/resource.h
deleted file mode 100644
index d6780c17..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/resource.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by test.rc
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        101
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1001
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.rc b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.rc
deleted file mode 100644
index 0d0fd098..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.rc
+++ /dev/null
@@ -1,101 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE 
-BEGIN
-    "#include ""afxres.h""\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,1,0,0
- PRODUCTVERSION 0,1,0,0
- FILEFLAGSMASK 0x17L
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x1L
- FILESUBTYPE 0x0L
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-        BLOCK "040904b0"
-        BEGIN
-            VALUE "FileDescription", "test Application"
-            VALUE "FileVersion", "0, 1, 0, 0"
-            VALUE "InternalName", "test"
-            VALUE "LegalCopyright", "Copyright (C) 2005"
-            VALUE "OriginalFilename", "test.exe"
-            VALUE "ProductName", " test Application"
-            VALUE "ProductVersion", "0, 1, 0, 0"
-        END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x409, 1200
-    END
-END
-
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.sln b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.sln
deleted file mode 100644
index 15c8dadf..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.sln
+++ /dev/null
@@ -1,21 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{07D71318-C429-4ED4-A42C-C1A3FC2C40C5}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfiguration) = preSolution
-		Debug = Debug
-		Release = Release
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{07D71318-C429-4ED4-A42C-C1A3FC2C40C5}.Debug.ActiveCfg = Debug|Win32
-		{07D71318-C429-4ED4-A42C-C1A3FC2C40C5}.Debug.Build.0 = Debug|Win32
-		{07D71318-C429-4ED4-A42C-C1A3FC2C40C5}.Release.ActiveCfg = Release|Win32
-		{07D71318-C429-4ED4-A42C-C1A3FC2C40C5}.Release.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-EndGlobal
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.vcproj b/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.vcproj
deleted file mode 100644
index bb2de619..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/services/test/test.vcproj
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="test"
-	ProjectGUID="{07D71318-C429-4ED4-A42C-C1A3FC2C40C5}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=".;..;..\.."
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_WIN32_WINNT=0x0500"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"
-				DisableSpecificWarnings="4290"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="winmm.lib version.lib"
-				OutputFile="$(OutDir)/test.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/test.pdb"
-				SubSystem="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=".;..;..\.."
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_WIN32_WINNT=0x0500"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"
-				DisableSpecificWarnings="4290"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="winmm.lib version.lib"
-				OutputFile="$(OutDir)/test.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-			<Tool
-				Name="VCManagedWrapperGeneratorTool"/>
-			<Tool
-				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File
-				RelativePath=".\main.cpp">
-			</File>
-			<File
-				RelativePath=".\messagefile.mc">
-				<FileConfiguration
-					Name="Debug|Win32">
-					<Tool
-						Name="VCCustomBuildTool"
-						CommandLine="mc $(InputFileName)"
-						Outputs="$(InputName).rc"/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCustomBuildTool"
-						CommandLine="mc $(InputFileName)"
-						Outputs="$(InputName).rc"/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-			<File
-				RelativePath=".\resource.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-			<File
-				RelativePath=".\test.rc">
-			</File>
-		</Filter>
-		<Filter
-			Name="generated"
-			Filter="">
-			<File
-				RelativePath=".\messagefile.rc">
-			</File>
-		</Filter>
-		<Filter
-			Name="common"
-			Filter="">
-			<File
-				RelativePath="..\logger.cpp">
-			</File>
-			<File
-				RelativePath="..\logger.h">
-			</File>
-			<File
-				RelativePath="..\..\threading\messageThread.h">
-			</File>
-			<File
-				RelativePath="..\..\threading\MT_stl.h">
-			</File>
-			<File
-				RelativePath="..\serviceMain.cpp">
-			</File>
-			<File
-				RelativePath="..\serviceMain.h">
-			</File>
-			<File
-				RelativePath="..\stdServiceImpl.cpp">
-			</File>
-			<File
-				RelativePath="..\stdServiceImpl.h">
-			</File>
-			<File
-				RelativePath="..\..\threading\thread.cpp">
-			</File>
-			<File
-				RelativePath="..\..\threading\thread.h">
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/stacktrace/StackTrace.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/stacktrace/StackTrace.cpp
deleted file mode 100644
index d78fa9a1..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/stacktrace/StackTrace.cpp
+++ /dev/null
@@ -1,868 +0,0 @@
-#ifdef PLATFORM_LINUX
-#if !defined(__APPLE__) && !defined(_GNU_SOURCE)
-#  define _GNU_SOURCE // enable dladdr and getline
-#endif
-
-#include "StackTrace.h"
-#include <unistd.h>
-
-#if defined(__APPLE__) // need atos
-#  if defined(STACKTRACE_USE_BACKTRACE)
-#    include <execinfo.h> // to record the backtrace addresses
-#  endif
-// for display:
-#  include </usr/include/util.h> // forkpty to make a pseudo-terminal for atos
-#  include <termios.h> // set pseudo-terminal to raw mode
-#  include <sys/select.h> // test whether atos has responded yet
-
-#elif defined(STACKTRACE_USE_BACKTRACE)
-#  include <execinfo.h> // to record the backtrace addresses
-// for display:
-#  include <dlfcn.h> // dladdr()
-#  include <sys/param.h> // realpath()
-#  include <errno.h>
-#  if defined(__GNUC__) && defined(__cplusplus)
-#    include <cxxabi.h> // demangling
-#    include <string>
-#  endif
-#  if defined(__linux__)
-#    include <sys/stat.h>
-#  endif
-#endif
-
-#ifdef __cplusplus
-#  include <cstdio>
-#  include <cstdlib>
-#  include <cstring>
-#else
-#  include <stdio.h>
-#  include <stdlib.h>
-#  include <string.h>
-#endif
-
-#ifdef ST_UNUSED 
-#elif defined(__GNUC__) && __GNUC__>3
-//! portable access to compiler hint not to warn if a function argument is ignored (goes in argument list)
-# define ST_UNUSED(x) UNUSED_##x __attribute__((unused)) 
-//! portable access to compiler hint not to warn if a function argument is ignored (goes at beginning of function body)
-# define ST_BODY_UNUSED(x) /*no body necessary*/
-
-#elif defined(__LCLINT__) 
-//! portable access to compiler hint not to warn if a function argument is ignored (goes in argument list)
-# define ST_UNUSED(x) /*@unused@*/ x 
-//! portable access to compiler hint not to warn if a function argument is ignored (goes at beginning of function body)
-# define ST_BODY_UNUSED(x) /*no body necessary*/
-
-#else 
-//! portable access to compiler hint not to warn if a function argument is ignored (goes in argument list)
-# define ST_UNUSED(x) UNUSED_##x 
-//! portable access to compiler hint not to warn if a function argument is ignored (goes at beginning of function body)
-# define ST_BODY_UNUSED(x) (void)UNUSED_##x /* ugly hack to avoid warning */
-#endif
-
-#ifdef __cplusplus
-namespace stacktrace {
-#endif /* __cplusplus */
-
-int unrollStackFrame(struct StackFrame* curFrame, struct StackFrame* nextFrame) {
-	if(curFrame==NULL)
-		return 0;
-	curFrame->caller=NULL;
-	if(nextFrame==NULL)
-		return 0;
-	
-
-#ifdef STACKTRACE_USE_BACKTRACE
-	
-	if(curFrame->packedRA==NULL)
-		return 0; // don't have current frame
-	if(*curFrame->packedRAUsed<=curFrame->depth+1) {
-		// last element
-		if(curFrame!=nextFrame) {
-			nextFrame->packedRA = NULL;
-			nextFrame->packedRAUsed = nextFrame->packedRACap = NULL;
-		}
-	return 0;
-	}
-	if(curFrame!=nextFrame) {
-		nextFrame->packedRA = curFrame->packedRA;
-		nextFrame->packedRAUsed = curFrame->packedRAUsed;
-		nextFrame->packedRACap = curFrame->packedRACap;
-		nextFrame->depth = curFrame->depth; // will be incremented below
-	}
-	nextFrame->ra = (*nextFrame->packedRA)[++(nextFrame->depth)];
-	curFrame->caller=nextFrame;
-	return 1;
-	
-#else
-
-	void* nsp=NULL;
-	machineInstruction * nra=NULL;
-
-#if defined(__i386__) || defined(__x86_64__) || defined(__amd64__)
-	if(curFrame->sp==NULL)
-		return 0;
-	if(((void**)curFrame->sp)-1==NULL)
-		return 0;
-	nsp=((void***)curFrame->sp)[-1];
-	if(nsp==NULL)
-		return 0;
-	nsp=(void**)nsp+1; //move from frame pointer to stack pointer of previous frame
-	nra=*((machineInstruction**)curFrame->sp);
-	if(nsp<=curFrame->sp) {
-		fprintf(stderr,"stacktrace::unrollStackFrame(sp=%p,ra=%p) directed to invalid next frame: (sp=%p,ra=%p)\n",curFrame->sp,curFrame->ra,nsp,nra);
-		return 0;
-	}
-#  ifdef DEBUG_STACKTRACE
-	if(curFrame->debug)
-		printf("( %p %p ) -> { %p %p }\n",curFrame->sp,curFrame->ra,nsp,nra);
-	nextFrame->debug=curFrame->debug;
-#  endif
-	nextFrame->sp=nsp;
-	nextFrame->ra=nra;
-	curFrame->caller=nextFrame;
-	return 1;
-#endif
-#ifdef __POWERPC__
-	if(curFrame->sp==NULL)
-		return 0;
-	if(*(void**)curFrame->sp==NULL)
-		return 0;
-	nsp=*(void**)curFrame->sp;
-	nra=((machineInstruction**)nsp)[2];
-	if(nsp<=curFrame->sp) {
-		fprintf(stderr,"stacktrace::unrollStackFrame(sp=%p,ra=%p) directed to invalid next frame: (sp=%p,ra=%p)\n",curFrame->sp,curFrame->ra,nsp,nra);
-		return 0;
-	}
-#  ifdef DEBUG_STACKTRACE
-	if(curFrame->debug)
-		printf("( %p %p ) -> { %p %p }\n",curFrame->sp,curFrame->ra,nsp,nra);
-	nextFrame->debug=curFrame->debug;
-#  endif
-	nextFrame->sp=nsp;
-	nextFrame->ra=nra;
-	curFrame->caller=nextFrame;
-	return 1;
-#endif
-#if defined(__MIPSEL__) || defined(__MIPS__) /* we're running on PLATFORM_APERIOS */
-	if(curFrame->sp==NULL)
-		return 0;
-	/* Have to scan through intructions being executed because stack pointer is not stored directly on the stack */
-	machineInstruction * ins;
-	const machineInstruction * INS_BASE=(const machineInstruction *)0x2000; // lowest valid memory address?
-	
-#ifdef __PIC__
-	ins = reinterpret_cast<machineInstruction*>(curFrame->gp-curFrame->ra);
-#else
-	ins = curFrame->ra;
-#endif
-	// find previous return address
-	for(; ins>=INS_BASE; ins--) {
-		// gcc will always save the return address with the instruction
-		//     sw ra, offset(sp)
-		// 
-		// the high word in this case is sw sp ra
-		if ( ( *ins & 0xffff0000 ) == 0xafbf0000 )
-		{
-			// the low word is the offset from sp
-			int offset = *ins & 0x000ffff;
-			
-			// in case things went horribly awry, don't deref the non-aligned ptr
-			if (offset & 0x3)
-				return 0;
-			
-			nra = *reinterpret_cast<machineInstruction**>((char*)curFrame->sp + offset);
-			break; // now search for stack pointer
-		}
-		
-		//it appears the aperios stub entry functions always begin with "ori  t0,ra,0x0"
-		//if we hit one of these, return 0, because we can't unroll any more
-		//(or at least, I don't know how it returns from these... there's no return statements!)
-		if ( *ins  == 0x37e80000 ) {
-#  ifdef DEBUG_STACKTRACE
-			if(curFrame->debug)
-				printf("( %p %p %p ) -> { kernel? }\n",curFrame->sp,curFrame->ra,curFrame->gp);
-#  endif
-			return 0;
-		}
-	}
-	// find previous stack pointer
-	for(; ins>=INS_BASE; ins--) {
-		// gcc will always change the stack frame with the instruction
-		//     addiu sp,sp,offset
-		//
-		// at the beginning of the function the offset will be negative since the stack grows 
-		// from high to low addresses
-		//
-		// first check the high word which will be instruction + regs in this case (I-type)
-		if ( ( *ins & 0xffff0000 ) == 0x27bd0000 ) {
-			// the offset is in the low word. since we're finding occurrence at the start of the function,
-			// it will be negative (increase stack size), so sign extend it
-			int offset = ( *ins & 0x0000ffff ) | 0xffff0000;
-
-			// in case things went horribly awry, don't deref the non-aligned ptr
-			if (offset & 0x3)
-				return 0;
-			
-			nsp = (char*)curFrame->sp - offset;
-			break;
-		}
-	}
-	
-	
-	if(ins>=INS_BASE) {
-		if(nsp<=curFrame->sp) {
-#ifdef __PIC__
-			fprintf(stderr,"stacktrace::unrollStackFrame(sp=%p,ra=%p,gp=%p) directed to invalid next frame: (sp=%p,ra=%p,gp=%p)\n",curFrame->sp,(void*)curFrame->ra,(void*)curFrame->gp,nsp,nra,(void*)(reinterpret_cast<size_t*>(nsp)[4]));
-#else
-			fprintf(stderr,"stacktrace::unrollStackFrame(sp=%p,ra=%p) directed to invalid next frame: (sp=%p,ra=%p)\n",curFrame->sp,(void*)curFrame->ra,nsp,nra);
-#endif
-			return 0;
-		}
-
-#ifdef __PIC__
-#  ifdef DEBUG_STACKTRACE
-		if(curFrame->debug)
-			printf("( %p %p %p ) -> { %p %p %p }\n",curFrame->sp,curFrame->ra,curFrame->gp,nsp,nra,reinterpret_cast<size_t*>(nsp)[4]);
-		nextFrame->debug=curFrame->debug;
-#  endif
-		// I'm not actually sure this is a valid stop criteria, but in testing,
-		// after this it seems to cross into some kind of kernel code.
-		// (We get a really low gp (0x106), although a fairly normal nra, and then go bouncing
-		// around in memory until we hit sp=0x80808080, ra=0x2700, which seems to be the 'real' last frame)
-		//if(reinterpret_cast<size_t>(nra)>reinterpret_cast<size_t*>(nsp)[4])
-		//return 0;
-		//instead of this however, now we check for the ori t0,ra,0 statement, and reuse previous gp below
-		
-		nextFrame->sp=nsp;
-		//not sure how valid this is either:
-		if(reinterpret_cast<size_t>(nra)>reinterpret_cast<size_t*>(nsp)[4]) {
-			nextFrame->gp = curFrame->gp;
-		} else {
-			nextFrame->gp = reinterpret_cast<size_t*>(nsp)[4]; // gp is stored 4 words from stack pointer
-		}
-		nextFrame->ra = nextFrame->gp-reinterpret_cast<size_t>(nra);
-#else
-#  ifdef DEBUG_STACKTRACE
-		if(curFrame->debug)
-			printf("( %p %p ) -> { %p %p }\n",curFrame->sp,curFrame->ra,nsp,nra);
-		nextFrame->debug=curFrame->debug;
-#  endif
-		nextFrame->sp=nsp;
-		nextFrame->ra=nra;
-#endif /* __PIC__ */
-		curFrame->caller=nextFrame;
-		return 1;
-	}
-#ifdef __PIC__
-#  ifdef DEBUG_STACKTRACE
-	if(curFrame->debug)
-		printf("( %p %p %p ) -> { %p %p --- }\n",curFrame->sp,curFrame->ra,curFrame->gp,nsp,nra);
-#  endif
-#else
-#  ifdef DEBUG_STACKTRACE
-	if(curFrame->debug)
-		printf("( %p %p ) -> { %p %p }\n",curFrame->sp,curFrame->ra,nsp,nra);
-#  endif
-#endif
-	return 0;
-#endif
-#endif /* backtrace */
-}
-
-#ifdef STACKTRACE_USE_BACKTRACE
-static int growAlloc(struct StackFrame* frame) {
-	void** r = (void**)realloc(*frame->packedRA, *frame->packedRACap * sizeof(void*) * 2);
-	if(r==NULL)
-		return 0;
-	*frame->packedRACap *= 2;
-	*frame->packedRA = r;
-	return 1;
-}
-#endif
-
-#ifdef STACKTRACE_USE_BACKTRACE
-const size_t MIN_CAP=50;
-static void allocBacktraceRegion(struct StackFrame* frame, size_t /*cap*/) {
-	/*if(cap < MIN_CAP)
-		cap=MIN_CAP;*/
-	frame->packedRACap = (size_t*)malloc(sizeof(size_t));
-	*frame->packedRACap = MIN_CAP;
-	frame->packedRAUsed = (size_t*)malloc(sizeof(size_t));
-	*frame->packedRAUsed = 0;
-	frame->packedRA = (void***)malloc(sizeof(void**));
-	*frame->packedRA = (void**)malloc(*frame->packedRACap * sizeof(void*));
-	//printf("Allocated %p\n",*frame->packedRA);
-}
-	
-static void freeBacktraceRegion(struct StackFrame* frame) {
-	//printf("Freeing %p\n",*frame->packedRA);
-	free(frame->packedRACap);
-	frame->packedRACap = NULL;
-	free(frame->packedRAUsed);
-	frame->packedRAUsed = NULL;
-	free(*frame->packedRA);
-	*frame->packedRA=NULL;
-	free(frame->packedRA);
-	frame->packedRA=NULL;
-}
-#endif
-
-void getCurrentStackFrame(struct StackFrame* frame) {
-#ifdef STACKTRACE_USE_BACKTRACE
-
-	// first call?  allocate the storage area
-	if(frame->packedRA==NULL)
-		allocBacktraceRegion(frame,MIN_CAP);
-	
-	// call backtrace, if we hit the capacity, grow the buffer and try again
-	do {
-		*frame->packedRAUsed = backtrace(*frame->packedRA, *frame->packedRACap);
-	} while(*frame->packedRAUsed==*frame->packedRACap && growAlloc(frame));
-	
-	// if we used an oversized buffer, shrink it back down
-	if(*frame->packedRACap > *frame->packedRAUsed*2 && *frame->packedRACap>MIN_CAP) {
-		unsigned int newsize = *frame->packedRAUsed * 3 / 2;
-		if(newsize < MIN_CAP)
-			newsize = MIN_CAP;
-		void** r = (void**)realloc(*frame->packedRA, newsize * sizeof(void*) * 2);
-		if(r!=NULL) {
-			*frame->packedRACap = newsize;
-			*frame->packedRA = r;
-		}
-	}
-	frame->depth=1;
-	
-#else
-	
-	void** csp=NULL;
-	machineInstruction* cra=NULL;
-
-#ifdef __POWERPC__
-	__asm __volatile__ ("mr %0,r1" : "=r"(csp) ); // get the current stack pointer
-	__asm __volatile__ ("mflr %0" : "=r"(cra) );  // get the current return address
-#endif /* __POWERPC__ */
-	
-#if defined(__MIPSEL__) || defined(__MIPS__)
-#ifdef __PIC__
-	size_t cgp=0;
-	__asm __volatile__ ("move %0,$gp" : "=r"(cgp) ); //get the gp register so we can compute link addresses
-#endif /* __PIC__ */
-	__asm __volatile__ ("move %0,$sp" : "=r"(csp) ); // get the current stack pointer
-	__asm __volatile__ ("jal readepc; nop; readepc: move %0,$ra" : "=r"(cra) ); // get the current return address
-#endif /* __MIPSEL__ */
-	
-#if defined(__i386__)
-	__asm __volatile__ ("movl %%ebp,%0" : "=m"(csp) ); // get the caller's stack pointer
-	csp++; //go back one to really be a stack pointer
-	//__asm __volatile__ ("movl (%%esp),%0" : "=r"(cra) ); // get the caller's address
-	cra=*((machineInstruction**)csp);
-	csp=((void***)csp)[-1]+1;
-#endif /* __i386__ */
-
-// basically the same as i386, but movq instead of movl, and rbp instead of ebp
-#if defined(__x86_64__) || defined(__amd64__)
-	__asm __volatile__ ("movq %%rbp,%0" : "=m"(csp) ); // get the caller's stack pointer
-	csp++; //go back one to really be a stack pointer
-	//__asm __volatile__ ("movq (%%rsp),%0" : "=r"(cra) ); // get the caller's address
-	cra=*((machineInstruction**)csp);
-	csp=((void***)csp)[-1]+1;
-#endif /* amd64/x86_64 */
-
-	frame->sp=csp;
-#if defined(__PIC__) && (defined(__MIPSEL__) || defined(__MIPS__))
-	frame->ra=cgp-reinterpret_cast<size_t>(cra);
-	frame->gp=cgp;
-#else
-	frame->ra=cra;
-#endif /* __PIC__ */
-
-#if !defined(__i386__) && !defined(__x86_64__) && !defined(__amd64__)
-	//with ia-32 it was more convenient to directly provide caller, so don't need to unroll
-	//otherwise we actually want to return *caller's* frame, so unroll once
-	unrollStackFrame(frame,frame);
-#endif /* not __i386__ */
-#endif /* backtrace */
-}
-
-void freeStackTrace(struct StackFrame* frame) {
-#ifdef STACKTRACE_USE_BACKTRACE
-	if(frame!=NULL && frame->packedRA!=NULL) {
-		freeBacktraceRegion(frame);
-	}
-#endif
-	while(frame!=NULL) {
-		struct StackFrame * next=frame->caller;
-		free(frame);
-		if(frame==next)
-			return;
-		frame=next;
-	}
-}
-
-struct StackFrame* allocateStackTrace(unsigned int size) {
-	struct StackFrame * frame=NULL;
-	while(size--!=0) {
-		struct StackFrame * prev = (struct StackFrame *)malloc(sizeof(struct StackFrame));
-		memset(prev, 0, sizeof(*prev));
-#ifdef STACKTRACE_USE_BACKTRACE
-		if(frame==NULL) {
-			allocBacktraceRegion(prev,size);
-		} else {
-			prev->packedRA = frame->packedRA;
-			prev->packedRAUsed = frame->packedRAUsed;
-			prev->packedRACap = frame->packedRACap;
-		}
-		prev->depth = size-1;
-#endif
-		prev->caller=frame;
-		frame=prev;
-	}
-	return frame;
-}
-
-
-struct StackFrame * recordStackTrace(unsigned int limit/*=-1U*/, unsigned int skip/*=0*/) {
-	if(limit==0)
-		return NULL;
-	struct StackFrame * cur = allocateStackTrace(1);
-#ifdef DEBUG_STACKTRACE
-	cur->debug=0;
-#endif
-	getCurrentStackFrame(cur);
-	for(; skip!=0; skip--)
-		if(!unrollStackFrame(cur,cur)) {
-			freeStackTrace(cur);
-			return NULL;
-		}
-	struct StackFrame * prev = (struct StackFrame *)malloc(sizeof(struct StackFrame));
-	memset(prev, 0, sizeof(*prev));
-#ifdef DEBUG_STACKTRACE
-	prev->debug=0;
-#endif
-	
-	unrollStackFrame(cur,prev); //unroll once more for the current frame
-#ifdef STACKTRACE_USE_BACKTRACE
-	memset(cur,0,sizeof(*cur)); // clear cur, prev is now responsible for packedRA allocation
-#endif
-	freeStackTrace(cur);
-	cur=prev;
-	
-	for(--limit; limit!=0; limit--) {
-		struct StackFrame * next = (struct StackFrame *)malloc(sizeof(struct StackFrame));
-		memset(next, 0, sizeof(*next));
-#ifdef DEBUG_STACKTRACE
-		next->debug=0;
-#endif
-		if(!unrollStackFrame(prev,next)) {
-			// reached end of trace
-			free(next);
-			prev->caller=NULL; //denotes end was reached
-			return cur;
-		}
-		prev=next;
-	}
-	// reaching here implies limit was reached
-	prev->caller=prev; //denotes limit was reached
-	return cur;
-}
-
-struct StackFrame * recordOverStackTrace(struct StackFrame* frame, unsigned int skip) {
-	struct StackFrame * cur = allocateStackTrace(1);
-#ifdef DEBUG_STACKTRACE
-	cur->debug=0;
-#endif
-	if(frame==NULL)
-		return frame;
-	getCurrentStackFrame(cur);
-	for(; skip!=0; skip--)
-		if(!unrollStackFrame(cur,cur)) {
-			freeStackTrace(cur);
-			return frame;
-	}
-#ifdef STACKTRACE_USE_BACKTRACE
-	if(frame->packedRA!=NULL)
-		freeBacktraceRegion(frame);
-#endif
-	unrollStackFrame(cur,frame); //unroll once more for the current frame
-#ifdef STACKTRACE_USE_BACKTRACE
-	memset(cur,0,sizeof(*cur)); // clear cur, frame is now responsible for packedRA allocation
-#endif
-	freeStackTrace(cur);
-
-	for(; frame->caller!=NULL && frame->caller!=frame; frame=frame->caller) {
-		struct StackFrame *ans=frame->caller; //don't lose remainder of free list if we hit the end
-		if(!unrollStackFrame(frame,frame->caller)) {
-			return ans; // reached end of trace
-		}
-	}
-	// reaching here implies limit was reached
-	frame->caller=frame; //denotes limit was reached
-	return NULL;
-}
-		
-		
-#ifdef __APPLE__
-// use atos to do symbol lookup, can lookup non-dynamic symbols and also line numbers
-/*! This function is more complicated than you'd expect because atos doesn't flush after each line,
- *  so plain pipe() or socketpair() won't work until we close the write side.  But the whole point is
- *  we want to keep atos around so we don't have to reprocess the symbol table over and over.
- *  What we wind up doing is using forkpty() to make a new pseudoterminal for atos to run in,
- *  and thus will use line-buffering for stdout, and then we can get each line. */
-static void atosLookup(unsigned int depth, void* ra) {
-	static int fd=-1;
-	int isfirst=0;
-	
-	if(fd==-1) {
-		struct termios opts;
-		cfmakeraw(&opts); // have to set this first, otherwise queries echo until child kicks in
-		pid_t child = forkpty(&fd,NULL,&opts,NULL);
-		if(child<0) {
-			perror("Could not forkpty for atos call");
-			return;
-		}
-		if(child==0) {
-			//sleep(3);
-			char pidstr[50];
-			snprintf(pidstr,50,"%d",getppid());
-			execlp("atos","atos","-p",pidstr,(char*)0);
-			//snprintf(pidstr,50,"atos -p %d",getppid());
-			//execlp("sh","sh","-i","-c",pidstr,(char*)0);
-			fprintf(stderr,"Could not exec atos for stack trace!\n");
-			_exit(1);
-		}
-		isfirst=1;
-		}
-
-		{
-		char q[50];
-		size_t qlen = snprintf(q,50,"%p\n",ra);
-		//printf("query: %.*s",50,q);
-		write(fd,q,qlen);
-	}
-	
-	if(isfirst) {
-		// atos can take a while to parse symbol table on first request, which is why we leave it running
-		// if we see a delay, explain what's going on...
-		int err;
-		struct timeval tv = {3,0};
-		fd_set fds;
-		FD_ZERO(&fds);
-		FD_SET(fd,&fds);
-		err = select(fd+1,&fds,NULL,NULL,&tv);
-		if(err<0)
-			perror("select for atos output");
-		if(err==0) // timeout
-			printf("Generating... first call takes some time for 'atos' to cache the symbol table.\n");
-		}
-
-				{
-		const unsigned int MAXLINE=1024;
-		char line[MAXLINE];
-		size_t nread=0;
-		char c='x';
-		while(c!='\n' && nread<MAXLINE) {
-			if(read(fd,&c,1)<=0) {
-				fprintf(stderr,"Lost atos connection for stacktrace\n");
-				close(fd);
-				fd=-1;
-				break;
-				}
-			//printf("Read %d\n",c);
-			if(c!='\r')
-				line[nread++]=c;
-		}
-		if(nread<MAXLINE)
-			line[nread++]='\0';
-		fprintf(stderr,"%4u %.*s",depth,MAXLINE,line);
-		}
-}
-	
-#elif defined(STACKTRACE_USE_BACKTRACE)
-	
-#  if defined(__GNUC__) && defined(__cplusplus)
-	static std::string demangle(const std::string& name)
-	{
-		int status = 0;
-		char *d = 0;
-		std::string ret = name;
-		try { if ((d = abi::__cxa_demangle(name.c_str(), 0, 0, &status))) ret = d; }
-		catch(...) {  }
-		std::free(d);
-		return ret;
-	}
-#  endif
-	
-#  ifndef __linux__
-// on bsd based systems, we have fgetln() instead of getline()
-static int getline(char** s, size_t* len, FILE* f) {
-	size_t _len;
-	char * _s = fgetln(f,&_len);
-	if(_s==NULL)
-		return -1;
-	if(*len<_len+1) {
-		char * ns = (char*)realloc(*s,_len+1);
-		if(ns==NULL)
-			return -1;
-		*s=ns;
-	}
-	memcpy(*s,_s,_len);
-	(*s)[_len]='\0';
-	return _len;
-}
-#  endif
-
-static int addr2lineLookup(const char* const ex, const void* const off, char** srcfile, size_t* srcfilelen, char** func, size_t* funclen) {
-	const char * cmdfmt = "addr2line -fe '%s' %p";
-	const size_t cmdlen = snprintf(NULL,0,cmdfmt,ex,off)+1;
-	char * cmd = (char*)malloc(cmdlen*sizeof(char));
-	if(cmd==NULL) {
-		fprintf(stderr,"[ERR Could not malloc addr2line command]\n");
-		return -1;
-	}
-	const int cmdused = snprintf(cmd,cmdlen,cmdfmt,ex,off);
-	if(cmdused<0) {
-		perror("snprintf for addr2line command");
-		free(cmd);
-		return -1;
-	}
-	if((size_t)cmdused>=cmdlen) {
-		fprintf(stderr, "[ERR addr2line command grew? %d vs %lu]\n",cmdused,(unsigned long)cmdlen);
-		free(cmd);
-		return -1;
-	}
-	FILE* look=popen(cmd,"r");
-	free(cmd);
-	if(look==NULL) {
-		fprintf(stderr, "[Missing addr2line]\n");
-		return -1;
-	}
-	if(getline(func,funclen,look)<=0) {
-		pclose(look);
-		return -1;
-	}
-	if(getline(srcfile,srcfilelen,look)<=0) {
-		pclose(look);
-		return -1;
-	}
-	pclose(look);
-	char* nl = strrchr(*func,'\n');
-	if(nl!=NULL)
-		*nl='\0';
-	nl = strrchr(*srcfile,'\n');
-	if(nl!=NULL)
-		*nl='\0';
-	return 0;
-}
-
-static void displayRelPath(FILE* os, const char * wd, const char* path) {
-	unsigned int same=0,i=0;
-	for(i=0; path[i]!='\0'; ++i) {
-		if(wd[i]=='/')
-			same=i+1;
-		else if(wd[i]=='\0') {
-			same=i;
-			break;
-		} else if(wd[i]!=path[i])
-			break;
-	}
-	if(wd[same]=='\0')
-		++same;
-	else if(same>1) {
-		// really want to be relative to source tree root, don't bother with ..'s
-		/*for(i=same; wd[i]!='\0'; ++i)
-			if(wd[i]=='/')
-				fprintf(os,"../");
-		fprintf(os,"../");*/
-	}
-	fprintf(os,"%s",&path[same]);
-}
-#endif
-
-//! attempts to read symbol information and displays stack trace header
-static void beginDisplay() {
-#ifdef STACKTRACE_USE_BACKTRACE
-	//fprintf(stderr,"Stack Trace:\n");
-#elif defined(PLATFORM_APERIOS)
-	fprintf(stderr,"Run trace_lookup:");
-#elif defined(__APPLE__)
-	fprintf(stderr,"backtrace_symbols() unavailable, try 'atos' to make human-readable backtrace (-p %d):",getpid());
-#else
-	fprintf(stderr,"backtrace_symbols() unavailable, try addr2line or tools/trace_lookup to make human-readable backtrace:");
-#endif
-}
-
-#ifdef __APPLE__
-static void displayStackFrame(unsigned int depth, const struct StackFrame* frame) {
-	atosLookup(depth,(void*)frame->ra);
-}
-#elif defined(STACKTRACE_USE_BACKTRACE)
-static void displayStackFrame(unsigned int depth, const struct StackFrame* frame) {
-	void* ra = (void*)frame->ra;
-	Dl_info sym;
-	memset(&sym,0,sizeof(Dl_info));
-	int dlres = dladdr(frame->ra, &sym);
-	
-	int isExe = (sym.dli_fname==NULL); // if lib unknown, assume static linkage, implies executable
-#  ifdef __linux__
-	// detect if /proc/self/exe points to sym.dli_fname
-	if(!isExe && sym.dli_fname[0]!='\0') {
-		struct stat exeStat;
-		struct stat libStat;
-		if(stat("/proc/self/exe",&exeStat)!=0) {
-			perror(" stat /proc/self/exe");
-		} else if(stat(sym.dli_fname,&libStat)!=0) {
-			perror(" stat lib");
-		} else {
-			isExe = (exeStat.st_dev==libStat.st_dev && exeStat.st_ino==libStat.st_ino);
-		}
-	}
-#  endif
-
-	if(dlres==0 || sym.dli_sname==NULL) {
-		if(sym.dli_fname==NULL || sym.dli_fname[0]=='\0') {
-			fprintf(stderr,"%4u  [non-dynamic symbol @ %p]",depth,ra);
-			fprintf(stderr," (has offset %p in unknown library)\n",sym.dli_fbase);
-		} else {
-			// use addr2line for static function lookup
-			const void* const off = (isExe) ? ra : (void*)((size_t)ra-(size_t)sym.dli_fbase);
-			char* srcfile=NULL, *func=NULL;
-			size_t srcfilelen=0, funclen=0;
-			if(addr2lineLookup(sym.dli_fname,off,&srcfile,&srcfilelen,&func,&funclen)==0) {
-				fprintf(stderr,"%4u  %s",depth,(strlen(func)==0) ? "[unknown symbol]" : func);
-				if(!isExe) {
-					const char * base = strrchr(sym.dli_fname,'/');
-					fprintf(stderr," (%s)",(base==NULL)?sym.dli_fname:base+1);
-				}
-				if(strcmp(srcfile,"??:0")!=0) {
-					fprintf(stderr," ");
-					char * wd = getcwd(NULL,0);
-					if(wd==NULL) {
-						perror("getcwd");
-						return;
-					}
-					fprintf(stderr,"(");
-					displayRelPath(stderr,wd,srcfile);
-					fprintf(stderr,")");
-					free(wd);
-				}
-				fprintf(stderr,"\n");
-			}
-			free(srcfile);
-			free(func);
-		}
-		return;
-	} else {
-		const char * dispFmt="%4d  %s +%#lx";
-#  ifdef __cplusplus
-		fprintf(stderr,dispFmt,depth,demangle(sym.dli_sname).c_str(),(size_t)ra-(size_t)sym.dli_saddr);
-#  else
-		fprintf(stderr,dispFmt,depth,sym.dli_sname,(size_t)ra-(size_t)sym.dli_saddr);
-#  endif
-	}
-
-	if(sym.dli_fname==NULL || sym.dli_fname[0]=='\0') {
-		fprintf(stderr," (%p, offset %p in unknown lib)\n",ra,sym.dli_fbase);
-		return;
-	} else if(isExe) {
-		// don't bother listing executable name, just show return address
-		// ...or since the symbol name and offset imply the return address, just skip it
-		//fprintf(stderr," (%p)",ra);
-	} else {
-		// ra is meaningless in dynamically loaded libraries... address space layout randomization (ASLR)
-		// just show library name
-		const char * base = strrchr(sym.dli_fname,'/');
-		fprintf(stderr," (%s)",(base==NULL)?sym.dli_fname:base+1);
-	}
-	
-	// now do file and line number lookup of function via addr2line
-	const void* const off = (isExe) ? ra : (void*)((size_t)ra-(size_t)sym.dli_fbase);
-	char* srcfile=NULL, *func=NULL;
-	size_t srcfilelen=0, funclen=0;
-	if(addr2lineLookup(sym.dli_fname,off,&srcfile,&srcfilelen,&func,&funclen)==0 && strcmp(srcfile,"??:0")!=0) {
-		fprintf(stderr," ");
-		char * wd = getcwd(NULL,0);
-		if(wd==NULL) {
-			perror("getcwd");
-			return;
-		}
-		fprintf(stderr,"(");
-		displayRelPath(stderr,wd,srcfile);
-		fprintf(stderr,")");
-		free(wd);
-	}
-	fprintf(stderr,"\n");
-	free(srcfile);
-	free(func);
-}
-#else
-static void displayStackFrame(unsigned int ST_UNUSED(depth), const struct StackFrame* frame) {
-	ST_BODY_UNUSED(depth);
-	fprintf(stderr," %p",(void*)frame->ra);
-}
-#endif
-
-//! releases symbol information used during display
-static void completeDisplay(int isend) {
-#if defined(STACKTRACE_USE_BACKTRACE)
-#endif
-	if(!isend)
-		fprintf(stderr," ...\n");
-}
-
-void displayCurrentStackTrace(unsigned int limit/*=-1U*/, unsigned int skip/*=0*/) {
-	struct StackFrame * cur = allocateStackTrace(1);
-#ifdef DEBUG_STACKTRACE
-	cur->debug=0;
-#endif
-	unsigned int i;
-	int more;
-	if(limit==0)
-		return;
-	getCurrentStackFrame(cur);
-	//printf(" initial (%p\t%p\t%p)\n",cur.ra,cur.sp,*(void**)cur.sp);
-	beginDisplay();
-	for(; skip!=0; skip--) {
-		if(!unrollStackFrame(cur,cur)) {
-			completeDisplay(1);
-			return;
-		}
-		//printf(" skip (%p\t%p\t%p)\n",cur.ra,cur.sp,*(void**)cur.sp);
-	}
-	for(i=0; (more=unrollStackFrame(cur,cur)) && i<limit; i++) {
-		//printf(" out (%p\t%p\t%p)\n",cur.ra,cur.sp,*(void**)cur.sp);
-		displayStackFrame(i,cur);
-	}
-	completeDisplay(!more);
-	freeStackTrace(cur);
-}
-
-void displayStackTrace(const struct StackFrame* frame) {
-	int i;
-	beginDisplay();
-	for(i=0; frame!=NULL && frame->caller!=frame; i++) {
-		displayStackFrame(i,frame);
-		frame=frame->caller;
-	}
-	if(frame!=NULL)
-		displayStackFrame(i+1,frame);
-	completeDisplay(frame==NULL);
-}
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*! @file
- * @brief Implements functionality for performing stack traces
- * @author ejt (Generalized and implementation for non-MIPS platforms)
- * @author Stuart Scandrett (original inspiration, Aperios/MIPS stack operations)
- *
- * $Author: ejtttje $
- * $Name:  $
- * $Revision: 1.2 $
- * $State: Exp $
- * $Date: 2009/11/20 00:50:23 $
- */
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/stacktrace/StackTrace.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/stacktrace/StackTrace.h
deleted file mode 100644
index fe79f863..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/stacktrace/StackTrace.h
+++ /dev/null
@@ -1,135 +0,0 @@
-#ifndef INCLUDED_StackTrace_h_
-#define INCLUDED_StackTrace_h_
-
-#ifdef __APPLE__
-#  include <AvailabilityMacros.h>
-#endif
-// Aperios and Mac OS X 10.4 and prior need the "manual" unroll; otherwise assume execinfo.h and backtrace() are available
-#if !defined(PLATFORM_APERIOS) && (!defined(__APPLE__) || defined(MAC_OS_X_VERSION_10_5))
-#  define STACKTRACE_USE_BACKTRACE
-#endif
-
-#ifndef __cplusplus
-#  include <stddef.h>
-
-#else
-#  include <cstddef>
-//! Holds the C-style interface for the stack trace routines
-namespace stacktrace {
-extern "C" {
-#endif /* __cplusplus */
-
-typedef int machineInstruction; //!< typedef in case type needs to change on other platforms (i.e. long for 64 bit architectures?)
-
-//! Stores information about a single stack frame
-struct StackFrame {
-
-#ifdef STACKTRACE_USE_BACKTRACE
-	//! pointer to array of return addresses, shared by all StackFrames in the list
-	void*** packedRA;
-	//! pointer to number of entries available at #packedRA
-	size_t* packedRAUsed;
-	//! pointer to size of array at #packedRA
-	size_t* packedRACap;
-	//! entry in #packedRA corresponding to this frame
-	size_t depth;
-	//! return address, points to instruction being executed within current frame
-	void* ra;
-#else
-	//! stack pointer, points to end of stack frame
-	void * sp; 
-
-#  if defined(__PIC__) && (defined(__MIPSEL__) || defined(__MIPS__))
-	//! return address, points to instruction being executed within current frame
-	/*! Note that this is the address that is being returned to by the @e sub-function,
-	 *  @e not the address that this frame itself is returning to.
-	 *  When executing position independent code (PIC), this is the address relative
-	 *  to #gp.  In other words, subtract this from #gp to get current memory address,
-	 *  or subtract from the binary's _gp symbol to get link-time address (for looking up file/line) */
-	size_t ra; 
-	
-	//! global offset used in position independent code (PIC)
-	/*! subtract #ra from this to get the actual run-time memory address of the instruction */
-	size_t gp;
-
-#  else
-	//! return address, points to instruction being executed within current frame
-	/*! Note that this is the address that is being returned to by the @e sub-function,
-	 *  @e not the address that this frame itself is returning to. */
-	machineInstruction * ra; 
-#  endif /* __PIC__ */
-
-#  ifdef DEBUG_STACKTRACE
-	//! if DEBUG_STACKTRACE is defined, this field is available which, if non-zero, will cause debugging info to be displayed on each unroll
-	int debug;
-#  endif
-#endif
-	
-	//! points to the caller's stack frame (stack frame of function which called this one), may be NULL or self-referential at end of list
-	/*! a self-referential value indicates the frame is not the last on the stack, but is the last recorded. */
-	struct StackFrame * caller;
-	
-};
-
-
-//! stores information about the caller's stack frame into @a frame
-void getCurrentStackFrame(struct StackFrame* frame);
-
-//! stores information about the caller to @a curFrame into @a nextFrame
-/*! @return 0 if error occurred (i.e. bottom of the stack), non-zero upon success
- *  @a nextFrame @e can be the same instance as @a curFrame, will update in place.
- *  @a curFrame->caller will be set to @a nextFrame. */
-int unrollStackFrame(struct StackFrame* curFrame, struct StackFrame* nextFrame);
-
-//! frees a list of StackFrames, such as is returned by recordStackTrace
-void freeStackTrace(struct StackFrame* frame);
-
-//! preallocates a stack trace of a particular size (doesn't actually perform a stack trace, merely allocates the linked list)
-/*! this is a good idea if you want to do a stack trace within an exception handler, which might have been triggered by running out of heap */
-struct StackFrame* allocateStackTrace(unsigned int size);
-
-//! dumps stored stack trace to stderr
-void displayStackTrace(const struct StackFrame* frame);
-
-#ifndef __cplusplus
-
-//! dumps current stack trace to stderr, up to @a limit depth and skipping the top @a skip frames
-/*! pass -1U for limit to request unlimited trace, and 0 to start with the function calling recordStackTrace */
-void displayCurrentStackTrace(unsigned int limit, unsigned int skip);
-
-//! repeatedly calls unrollStackFrame() until the root frame is reached or @a limit is hit, skipping the top @a skip frames
-/*! pass -1U for limit to request unlimited trace, and 0 to start with the function calling recordStackTrace */
-struct StackFrame * recordStackTrace(unsigned int limit, unsigned int skip);
-//! repeatedly calls unrollStackFrame() until the root frame is reached or end of @a frame list is hit, skipping the top @a skip frames
-/*! This is handy for reusing previously allocated frames, returns the unused portion (if return value equals @a frame, none were used -- implies never cleared @a skip) */
-struct StackFrame * recordOverStackTrace(struct StackFrame* frame, unsigned int skip);
-
-#else /* __cplusplus */
-
-//! dumps current stack trace to stderr, up to @a limit depth and skipping the top @a skip frames
-/*! pass -1U for limit to request unlimited trace, and 0 to start with the function calling recordStackTrace */
-void displayCurrentStackTrace(unsigned int limit=-1U, unsigned int skip=0);
-
-//! repeatedly calls unrollStackFrame() until the root frame is reached or @a limit is hit, skipping the top @a skip frames
-/*! pass -1U for limit to request unlimited trace, and 0 to start with the function calling recordStackTrace */
-struct StackFrame * recordStackTrace(unsigned int limit=-1U, unsigned int skip=0);
-//! repeatedly calls unrollStackFrame() until the root frame is reached or end of @a frame list is hit, skipping the top @a skip frames
-/*! This is handy for reusing previously allocated frames, returns the unused portion (if return value equals @a frame, none were used -- implies never cleared @a skip) */
-struct StackFrame * recordOverStackTrace(struct StackFrame* frame, unsigned int skip=0);
-
-}
-}
-
-#endif /* __cplusplus */
-
-/*! @file
- * @brief Describes functionality for performing stack traces
- * @author ejt (Creator)
- *
- * $Author: ejtttje $
- * $Name:  $
- * $Revision: 1.2 $
- * $State: Exp $
- * $Date: 2009/11/20 00:50:23 $
- */
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/functors.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/functors.h
deleted file mode 100644
index fb8c53da..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/functors.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-#ifndef functors_H_
-#define functors_H_
-
-namespace stlx
-{
-	template<typename T>
-	void delete_fntr(T *t)
-	{
-		if (t)
-		{
-			try
-			{
-				delete t;
-				t = 0;
-			}
-			catch(...)
-			{
-			}
-		}
-	}
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stlx.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stlx.h
deleted file mode 100644
index 89ec3a9c..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stlx.h
+++ /dev/null
@@ -1,324 +0,0 @@
-#pragma once
-#ifndef _stlx_H_
-#define _stlx_H_
-
-#include <functional>
-
-namespace stlx {
-
-template<class Type1, class Type2, class Type3>
-struct triple 
-{
-	typedef Type1 first_type;
-	typedef Type2 second_type;
-	typedef Type3 third_type;
-	Type1 first;
-	Type2 second;
-	Type3 third;
-	triple(){}
-	triple(const Type1& __Val1, const Type2& __Val2,const Type3& __Val3)
-		:first(__Val1),second(__Val2),third(__Val3){}
-	template<class Other1, class Other2, class Other3>
-	triple(const triple<Other1, Other2, Other3>& _Right)
-		:first(_Right.first),second(_Right.second),third(_Right.third){}
-};
-
-template<class Type1, class Type2, class Type3>
-	triple<Type1, Type2, Type3> make_triple(
-		Type1 _Val1,
-		Type2 _Val2,
-		Type3 _Val3
-	)
-	{ return triple<Type1,Type2,Type3>(_Val1,_Val2,_Val3); }
-
-/// templates which allow STL iterations using a class and it's method
-/// (as opposed to mem_fun which requires the container class to hold the
-/// class and it's method
-///
-/// ie
-///
-/// vector<CLASSA> a
-/// B b;
-/// for_each(a.begin(),a.end(),class_method_ref(b,B::foo))
-///
-/// this will invoke b.foo(a) for each element.
-
-template<typename Result,typename T,typename P>
-class class_method_functor: public std::unary_function<P,Result>
-{
-	typedef Result (T::*methodType)(P s);
-	T			*m_class;
-	methodType	m_method;
-public:
-	class_method_functor(T *c,methodType m):m_class(c),m_method(m){}
-	Result operator()(P s) { return (m_class->*m_method)(s); }
-};
-
-template<typename Result,typename T,typename P>
-class class_method_functor_const: public std::unary_function<P,Result>
-{
-	typedef Result (T::*methodType)(P s) const;
-	const T		*m_class;
-	methodType	m_method;
-public:
-	class_method_functor_const(const T *c,methodType m):m_class(c),m_method(m){}
-	Result operator()(P s) const { return (m_class->*m_method)(s); }
-};
-
-template<typename Result,typename T,typename P>
-class class_method_ref_functor: public std::unary_function<P,Result>
-{
-	typedef Result (T::*methodType)(P s);
-	T			&m_class;
-	methodType	m_method;
-public:
-	class_method_ref_functor(T &c,methodType m):m_class(c),m_method(m){}
-	Result operator()(P s) { return (m_class.*m_method)(s); }
-};
-
-template<typename Result,typename T,typename P>
-class class_method_ref_functor_const: public std::unary_function<P,Result>
-{
-	typedef Result (T::*methodType)(P s) const;
-	const T		&m_class;
-	methodType	m_method;
-public:
-	class_method_ref_functor_const(const T &c,methodType m):m_class(c),m_method(m){}
-	Result operator()(P s) const { return (m_class.*m_method)(s); }
-};
-
-template<typename Result,typename T,typename P,typename PP>
-class class_method_functor1: public std::binary_function<P,PP,Result>
-{
-	typedef Result (T::*methodType)(P s,PP ss);
-	T			*m_class;
-	methodType	m_method;
-public:
-	class_method_functor1(T *c,methodType m):m_class(c),m_method(m){}
-	Result operator()(P s,PP ss) { return (m_class->*m_method)(s,ss); }
-};
-
-template<typename Result,typename T,typename P,typename PP>
-class class_method_functor1_const: public std::binary_function<P,PP,Result>
-{
-	typedef Result (T::*methodType)(P s,PP ss) const;
-	const T		*m_class;
-	methodType	m_method;
-public:
-	class_method_functor1_const(const T *c,methodType m):m_class(c),m_method(m){}
-	Result operator()(P s,PP ss) const { return (m_class->*m_method)(s,ss); }
-};
-
-template<typename Result,typename T,typename P,typename PP>
-class class_method_ref_functor1: public std::binary_function<P,PP,Result>
-{
-	typedef Result (T::*methodType)(P s,PP ss);
-	T			&m_class;
-	methodType	m_method;
-public:
-	class_method_ref_functor1(T &c,methodType m):m_class(c),m_method(m){}
-	Result operator()(P s,PP ss) { return (m_class.*m_method)(s,ss); }
-};
-
-template<typename Result,typename T,typename P,typename PP>
-class class_method_ref_functor1_const: public std::binary_function<P,PP,Result>
-{
-	typedef Result (T::*methodType)(P s,PP ss) const;
-	const T		&m_class;
-	methodType	m_method;
-public:
-	class_method_ref_functor1_const(const T &c,methodType m):m_class(c),m_method(m){}
-	Result operator()(P s,PP ss) const { return (m_class.*m_method)(s,ss); }
-};
-
-template<typename Result,typename T,typename P>
-	class_method_functor<Result,T,P>
-		class_method(T *c,Result (T::*m)(P s))
-		{ return class_method_functor<Result,T,P>(c,m); }
-
-template<typename Result,typename T,typename P>
-	class_method_functor_const<Result,T,P>
-	class_method(const T *c,Result (T::*m)(P s) const)
-		{ return class_method_functor_const<Result,T,P>(c,m); }
-
-template<typename Result,typename T,typename P>
-	class_method_ref_functor<Result,T,P>
-		class_method_ref(T &c,Result (T::*m)(P s))
-			{ return class_method_ref_functor<Result,T,P>(c,m); }
-
-template<typename Result,typename T,typename P>
-	class_method_ref_functor_const<Result,T,P>
-		class_method_ref(const T &c,Result (T::*m)(P s) const)
-			{ return class_method_ref_functor_const<Result,T,P>(c,m); }
-
-template<typename Result,typename T,typename P,typename PP>
-	class_method_functor1<Result,T,P,PP>
-		class_method(T *c,Result (T::*m)(P s,PP ss))
-			{ return class_method_functor1<Result,T,P,PP>(c,m); }
-
-template<typename Result,typename T,typename P,typename PP>
-	class_method_functor1_const<Result,T,P,PP>
-		class_method(const T *c,Result (T::*m)(P s,PP ss) const)
-			{ return class_method_functor1_const<Result,T,P,PP>(c,m); }
-
-template<typename Result,typename T,typename P,typename PP>
-	class_method_ref_functor1<Result,T,P,PP>
-		class_method_ref(T &c,Result (T::*m)(P s,PP ss))
-			{ return class_method_ref_functor1<Result,T,P,PP>(c,m); }
-
-template<typename Result,typename T,typename P,typename PP>
-	class_method_ref_functor1_const<Result,T,P,PP>
-		class_method_ref(const T &c,Result (T::*m)(P s,PP ss) const)
-			{ return class_method_ref_functor1_const<Result,T,P,PP>(c,m); }
-
-///////////////////////////////////////////////////////////
-/*
-	Allows search matches on members
-
-	class foo
-	{
-		string m_memberToMatchOn;
-	};
-
-	vector<foo> myList;
-	find_if(myList.begin(),m_myList.end(),
-		member_match(string("hello"),&foo::m_memberToMatchOn));
-
-*/
-////////////////////////////////////////////////////////////
-template<typename T,typename OBJ>
-class member_match_functor
-{
-private:
-	T m_value;
-	T (OBJ::*m_member);
-public:
-	member_match_functor(const T &s,T OBJ::*m):m_value(s),m_member(m){}
-	bool operator()(const OBJ &obj) throw()
-	{ 
-		return m_value == (obj.*m_member); 
-	}
-};
-
-template<typename T,typename OBJ>
-	member_match_functor<T,OBJ> member_match(const T &s,T OBJ::* m)
-		{ return member_match_functor<T,OBJ>(s,m); }
-
-template<typename T1,typename T2,typename OBJ>
-class member2_match_functor
-{
-private:
-	T1 m_value1;
-	T1 (OBJ::*m_member1);
-	T2 m_value2;
-	T2 (OBJ::*m_member2);
-public:
-	member2_match_functor(const T1 &s1,T1 OBJ::*m1,const T2 &s2,T2 OBJ::*m2):m_value1(s1),m_member1(m1),m_value2(s2),m_member2(m2){}
-	bool operator()(const OBJ &obj) throw()
-		{ return ((m_value1 == (obj.*m_member1)) && (m_value2 == (obj.*m_member2))); }
-};
-
-template<typename T1,typename T2,typename OBJ>		
-	member2_match_functor<T1,T2,OBJ> member2_match(const T1 &s1,T1 OBJ::* m1,const T2 &s2,T2 OBJ::* m2)
-		{ return member2_match_functor<T1,T2,OBJ>(s1,m1,s2,m2); }
-
-//***********************************************************
-//* accumulate with a delimiter
-//*
-//***********************************************************
-template<class _InIt,class _Ty,class _Tdel> inline _Ty accumulate_with_delimiter(_InIt _First, _InIt _Last, _Ty _Val, _Tdel _del)
-{	// return sum of _Val and all in [_First, _Last)
-	if (_First != _Last)
-	{
-		_Val = _Val + *_First;
-		++_First;
-	}
-
-	for (; _First != _Last; ++_First)
-	{
-		_Val = _Val + _del + *_First;
-	}
-	return (_Val);
-}
-
-// with binop. Not sure if this one makes much sense
-template<class _InIt,class _Ty,class _Fn2,class _Tdel> inline _Ty accumulate_with_delimiter(_InIt _First, _InIt _Last, _Ty _Val, _Tdel _del,_Fn2 _Func)
-{	// return sum of _Val and all in [_First, _Last), using _Func
-	if (_First != _Last)
-	{
-		_Val = _Func(_Val, *_First);
-		++_First;
-	}
-
-	for (; _First != _Last; ++_First)
-	{
-		_Val = _Val + _del;
-		_Val = _Func(_Val, *_First);
-	}
-	return (_Val);
-}
-
-//**********************************************************
-//* streamOutFunctor
-//*
-//* functor class which will output an element to a stream
-//* with a prefix and suffix string. Useful for outputing
-//* elements of a container
-//*********************************************************
-template<class T> class streamOutFunctor
-{
-	std::ostream &m_o;
-	const std::string m_prefix;
-	const std::string m_suffix;
-public:
-	inline streamOutFunctor(std::ostream &o) : m_o(o){}
-	inline streamOutFunctor(std::ostream &o,const std::string &prefix,const std::string &suffix)
-		: m_o(o),m_prefix(prefix),m_suffix(suffix){}
-	inline void operator()(const T &t) { m_o << m_prefix << t << m_suffix; }
-};
-
-//// for use on maps. Sort of the opposite of lower_bound. Returns the largest element
-//// less than the key
-template<typename Map> typename Map::const_iterator 
-greatest_less(Map const& m, typename Map::key_type const& k) {
-	typename Map::const_iterator it = m.lower_bound(k);
-	if(it != m.begin()) {
-		return --it;
-	}
-	return m.end();
-}
-
-template<typename Map> typename Map::iterator 
-greatest_less(Map & m, typename Map::key_type const& k) {
-	typename Map::iterator it = m.lower_bound(k);
-	if(it != m.begin()) {
-		return --it;
-	}
-	return m.end();
-}
-
-template<typename Map> typename Map::const_iterator 
-greatest_less_or_equal(Map const& m, typename Map::key_type const& k) {
-	typename Map::const_iterator it = m.lower_bound(k);
-	if ((it != m.end()) && ((*it).first == k)) 
-		return it;
-	if(it != m.begin()) {
-		return --it;
-	}
-	return m.end();
-}
-
-template<typename Map> typename Map::iterator 
-greatest_less_or_equal(Map & m, typename Map::key_type const& k) {
-	typename Map::iterator it = m.lower_bound(k);
-	if ((it != m.end()) && ((*it).first == k)) 
-		return it;
-	if(it != m.begin()) {
-		return --it;
-	}
-	return m.end();
-}
-
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stringUtils.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stringUtils.h
deleted file mode 100644
index 647fc242..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/stl/stringUtils.h
+++ /dev/null
@@ -1,383 +0,0 @@
-#pragma once
-#ifndef _stringUtils_H_
-#define _stringUtils_H_
-
-#include <sstream>
-#include <string>
-#include <functional>
-#include <vector>
-#include <locale>
-#include <ctype.h>
-
-namespace stringUtil
-{
-	#ifdef _WIN32
-	inline std::string eol() throw() { return "\r\n"; }
-	#elif MACINTOSH
-	inline std::string eol() throw() { return "\r"; }
-	#else
-	inline std::string eol() throw() { return "\n"; }
-	#endif
-
-	//////////////////////////////////////////////////////////////////
-	//////////////////// String Conversion ///////////////////////////
-	//////////////////////////////////////////////////////////////////
-
-	// the 'safe' functions are to avoid bad_cast exceptions when the
-	// passed in type does not have a facet, or the facet indicates that
-	// the value is out of range. Since I may be running this against Unicode
-	// strings, I need to deal with this. Most likely there's a way to set the
-	// proper locale and facet so the error doesn't occur, but this is beyond
-	// me right now - NMR
-	template<typename T>
-	bool safe_is_alpha(T v)
-	{
-		if (((unsigned int)v) > 0x7f) return false;
-		return std::isalpha((char)v,std::locale());
-	}
-
-	template<typename T>
-	bool safe_is_digit(T v)
-	{
-		if (((unsigned int)v) > 0x7f) return false;
-		return std::isdigit((char)v,std::locale());
-	}
-
-	template<typename T>
-	bool safe_is_space(T v)
-	{
-		if (((unsigned int)v) > 0x7f) return false;
-		return std::isspace((char)v,std::locale());
-	}
-
-	template<typename T>
-	T safe_to_lower(T v)
-	{
-		if (((unsigned int)v) > 0x7f) return v;
-		return std::tolower((char)v,std::locale());
-	}
-
-	template<typename T>
-	T safe_to_upper(T v)
-	{
-		if (((unsigned int)v) > 0x7f) return v;
-		return std::toupper((char)v,std::locale());
-	}
-
-	template<typename S>
-	S toLower(const S &s) throw()
-	{
-		S result;
-		for (typename S::const_iterator i = s.begin(); i != s.end(); ++i)
-		{
-			result += (stringUtil::safe_is_alpha(*i) ? stringUtil::safe_to_lower(*i) : *i);
-		}
-
-		return result;
-	}
-
-	template<typename S>
-	S toUpper(const S &s) throw()
-	{
-		S result;
-		for (typename S::const_iterator i = s.begin(); i != s.end(); ++i)
-		{
-			result += (stringUtil::safe_is_alpha(*i) ? stringUtil::safe_to_upper(*i) : *i);
-		}
-
-		return result;
-	}
-
-	template<typename S>
-	inline bool compareStringsWithoutCase(const S &s1,const S &s2) throw()
-	{
-		S s1c(toLower(s1));
-		S s2c(toLower(s2));
-		return (s1c == s2c);
-	}
-
-	inline std::string dosToUnix(const std::string &s) throw()
-	{
-		std::string result;
-		bool r(false);
-		for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
-		{
-			if ((*i) == '\n')
-			{
-				if (r)
-				{
-					result += '\n';
-				}
-				else
-				{
-					result.push_back(*i);
-				}
-				r = false;
-			}
-			else if ((*i) == '\r')
-			{
-				if (r)
-					result.push_back('\r');
-				r = true;
-			}
-			else
-			{
-				if (r)
-					result.push_back('\r');
-				r = false;
-				result.push_back(*i);
-			}
-		}
-		return result;
-	}
-
-	inline std::string unixToDos(const std::string &s) throw()
-	{
-		std::string result;
-		for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
-		{
-			if ((*i) == '\n')
-				result += "\r\n";
-			else 
-				result.push_back(*i);
-		}
-		return result;
-	}
-
-	//***************************************************************
-	//* tos, tows
-	//*
-	//* These templates and overloaded functions allow you to convert
-	//* any streamable value to a string or wide-string. It can be a 
-	//* great convenience to be able to do
-	//*
-	//* string("test five ") + tos(5);
-	//*
-	//* instead of
-	//*
-	//* ostringstream o;
-	//* o << "test five " << 5;
-	//* o.str()
-	//*
-	//* tows is just like tos, but for wide strings. You can also use these
-	//* to convert standard strings to wide strings and vice-versa
-	//*
-	//* for example:
-	//*
-	//* wstring ws = tows(string("hello"));
-	//* string s = tos(wstring(L"goodbye"));
-	//* 
-	//************************************************************************
-
-	template<typename S,typename T>
-	S tobs(T v) // to basic string
-	{
-		std::basic_ostringstream<typename S::value_type> o;
-		o << v;
-		return o.str();
-	}
-
-	template<typename S>
-	S tobs(const S v) { return v; }
-	template<typename S>
-	S tobs(const typename S::value_type *v) { return S(v); }
-
-	template<typename t>
-	std::string tos(t v)
-	{
-		std::ostringstream o;
-		o << v;
-		return o.str();
-	}
-
-	inline std::string tos(const std::string &v) { return v; }
-	inline std::string tos(const char *v) { return std::string(v); }
-
-	template<typename t>
-	std::string tohex(t v)
-	{
-		std::ostringstream o;
-		o << std::hex << v;
-		return o.str();
-	}
-
-	#ifdef _WIN32
-	template<typename t>
-	std::wstring tows(t v)
-	{
-		std::wostringstream o;
-		o << v;
-		return o.str();
-	}
-
-	inline std::string tos(const wchar_t *value)
-	{
-		if (!value) return "";
-
-		size_t len = ::wcslen(value);
-
-		char *s = new char[len + 1];
-		::wcstombs(s,value,len);
-		s[len] = '\0';
-		std::string result(s);
-		delete [] s;
-
-		return result;
-	}
-
-	inline std::string tos(const std::wstring &s)
-	{
-		return tos(s.c_str());
-	}
-
-	inline std::wstring tows(const char *value)
-	{
-		if (!value) return L"";
-
-		size_t len = ::strlen(value);
-
-		wchar_t *s = new wchar_t[len + 1];
-		::mbstowcs(s,value,len);
-		s[len] = 0;
-		std::wstring result(s);
-		delete [] s;
-
-		return result;
-	}
-
-	inline std::wstring tows(const std::string &value)
-	{
-		return tows(value.c_str());
-	}
-	#endif
-
-	////////////////////////////////////////////////////////////////////
-	////////////////////// String stripping ////////////////////////////
-	////////////////////////////////////////////////////////////////////
-
-	//******************************************************************
-	//* A collection of templates and functions to allow stripping of
-	//* leading and trailing items from a string
-	//*
-	//* --- stripItem
-	//*
-	//* Strip leading and trailing items from a container
-	//* template parameters are the container type, and a function which returns 
-	//* true if we have the value to strip
-	//*
-	//*
-	//* ---- stripChar
-	//* strips characters off a string by either a function (which returns
-	//* true if the character is found), or by an actual character mathc.
-	//* There are also forms for wide strings
-	//*
-	//* ---- stripWhitespace
-	//* removes leading and trailing spaces from a string using isspace()
-	//*************************************************************************
-	template <typename S,typename F>
-	S stripItem(const S &s,F func,bool stripLeading = true, bool stripTrailing = true)
-	{
-		typename S::const_iterator leftit  = s.begin();
-		typename S::const_reverse_iterator rightit = s.rbegin(); 
-
-		if (s.length() < 1 )
-			return s;
-
-		if (stripLeading)
-		{
-			while (leftit != s.end() && func(*leftit))
-			{
-				++leftit;
-			}
-		}
-		if (leftit == s.end()) return S();
-
-		if (stripTrailing)
-		{
-			while (rightit != s.rend() && func(*rightit))
-			{
-				++rightit;
-			}
-		}
-		if (rightit == s.rend()) return S();
-
-		typename S::const_iterator endpnt = (++rightit).base();
-
-		if (leftit > endpnt)
-			return S();
-
-		return s.substr( (leftit - s.begin()) ,(endpnt-leftit) +1);
-	}
-
-	template<typename S,typename FUNC>
-	S stripChar(const S &s,FUNC f,bool stripLeading = true,bool stripTrailing = true) 
-		{ return stripItem(s,f,stripLeading,stripTrailing); }
-
-	template<typename S>
-	inline S stripChar(const S &s,typename S::value_type c,bool stripLeading = true,bool stripTrailing = true) 
-		{ return stripItem(s,bind1st(std::equal_to<typename S::value_type>(),c),stripLeading,stripTrailing); }
-
-	template<typename S>
-	bool myspace(S c) { return safe_is_space(c); }
-	template<typename S>
-	inline S stripWhitespace(const S &s) { return stripChar(s,stringUtil::myspace<typename S::value_type>); }
-
-	template<typename S>
-	bool myalphadigit(S c) { return !(safe_is_alpha(c) || safe_is_digit(c)); }
-	template<typename S>
-	inline S stripAlphaDigit(const S &s) { return stripChar(s,stringUtil::myalphadigit<typename S::value_type>); }
-
-	//*****************************************************************
-	//* tokenizer
-	//*
-	//* break up a string into substrings based on a delimiter item.
-	//******************************************************************
-	template<typename S,typename F>
-	std::vector<S> tokenizer_if(const S &ins,F isdelimiter) throw()
-	{
-		std::vector<S> result;
-		S accum;
-
-		for (typename S::const_iterator i = ins.begin(); i != ins.end(); ++i)
-		{
-			if (!isdelimiter(*i))
-			{
-				accum.push_back(*i);// was +=
-			}
-			else
-			{
-				if (!accum.empty())
-				{
-					result.push_back(accum);
-					accum = S();
-				}
-			}
-		}
-
-		if (!accum.empty())
-		{
-			result.push_back(accum);
-		}
-		return result;
-	}
-
-	template<typename S>
-	inline std::vector<S> tokenizer(const S &ins,typename S::value_type delim) throw()
-		{ return tokenizer_if(ins,bind1st(std::equal_to<typename S::value_type>(),delim)); }
-
-	inline std::string escapeBackslashes(const std::string &s) throw()
-	{
-		std::string result;
-		for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
-		{
-			result += (*i);
-			if ((*i) == '\\')
-				result += (*i);
-		}
-		return result;
-	}
-
-	//////////////////////////////////////////////////////////////////////////
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/MT_stl.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/MT_stl.h
deleted file mode 100644
index 7b4de1bf..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/MT_stl.h
+++ /dev/null
@@ -1,110 +0,0 @@
-#pragma once
-#ifndef MT_stl_H_
-#define MT_stl_H_
-
-#include <queue>
-#include "thread.h"
-
-/***** STL like containers that have Multithread features *******/
-
-template <class T>
-class MT_queue
-{
-	std::queue<T>	m_container;
-	mutable AOL_namespace::mutex	m_mutex;
-	conditionVariable	m_conditionVariable;
-
-public:
-	typedef T value_type;
-	typedef T message_t;
-	typedef typename std::queue<T>::size_type size_type;
-
-	MT_queue(){}
-
-	size_type size() const
-	{
-		stackLock sl(m_mutex);
-		return m_container.size();
-	}
-
-	bool empty() const
-	{
-		stackLock sl(m_mutex);
-		return m_container.empty();
-	}
-
-	// note, it is important that this is T and not T&. If it was
-	// T& and we did something like this
-	//
-	// T &f = mtq.front();
-	//
-	// Then f would be able to manipulate a queue entry outside the
-	// protection of the lock. We avoid this by returning T (a copy)
-	// instead.
-	T front() const	
-	{
-		stackLock sl(m_mutex);
-		return m_container.front();
-	}
-
-	void has_front(T &t,bool &has) const
-	{
-		stackLock sl(m_mutex);
-		has = false;
-		if (!m_container.empty())
-		{
-			has = true;
-			t = m_container.front();
-		}
-	}
-
-	void push(const T &t) // push_back
-	{
-		stackLock sl(m_mutex);
-		m_container.push(t);
-		m_conditionVariable.signal();
-	}
-
-	void pop() // pop_front
-	{
-		stackLock sl(m_mutex);
-		if (!m_container.empty())
-		{
-			m_container.pop();
-		}
-	}
-
-	std::queue<T> getAll()
-	{
-		stackLock sl(m_mutex);
-
-		std::queue<T> result = m_container;
-		m_container.clear();
-		return result;
-	}
-
-	void clear()
-	{
-		stackLock sl(m_mutex);
-		m_container.clear();
-	}
-
-	// blocking retrieval. Will block until something is in the
-	// queue to get
-	T get()
-	{
-		stackLock sl(m_mutex);
-
-		while (m_container.empty())
-		{
-			m_conditionVariable.wait(m_mutex);
-		}
-
-		T t = m_container.front();
-		m_container.pop();
-
-		return t;
-	}
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/messageThread.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/messageThread.h
deleted file mode 100644
index 8b47bf09..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/messageThread.h
+++ /dev/null
@@ -1,184 +0,0 @@
-#ifndef messageThread_H_
-#define messageThread_H_
-
-#include "thread.h"
-#include "MT_stl.h"
-#include <deque>
-#ifdef _WIN32
-#include <crtdbg.h>
-#else
-#include <assert.h>
-#endif
-
-#ifndef _WIN32
-#define _ASSERTE assert
-#endif
-
-/////////////////////////////////////////////////////////////////
-//* templates that allow you to build a message driven thread
-//*
-//*
-//* define a class that is your handler. It must have a type
-//* message_t which is the message type, and a method
-//* bool operator()(const message_t &m) which is the message handler.
-//* this method should return false when all processing is done and
-//* the thread should shutdown
-//*
-/* example
-
-class mh
-{
-	string m_string;
-
-public:
-	struct message
-	{
-		int m_v;
-		message(int v):m_v(v){}
-	};
-	typedef message message_t;
-
-protected:
-
-	bool operator()(const message_t &mm)
-	{
-		if (!mm.m_v) return false; // if value is zero, then we are done
-		::MessageBox(0,tos(mm.m_v).c_str(),m_string.c_str(),MB_OK);
-		return true;
-	}
-
-	mh(const string &s):m_string(s){}
-};
-
-main()
-{
-messageThread<mh> m("this is a test");
-m.start();
-m.postMessage(m::message(1));
-m.postMessage(m::message(2));
-m.postMessage(m::message(3));
-m.postMessage(m::message(4));
-m.postMessage(m::message(0));
-m.join();
-}
-
-*/
-
-template<class Handler,class Queue>
-class messageHandler: public Handler
-{
-private:
-	Queue	m_queue;
-
-protected:
-	unsigned operator()() throw()
-	{
-		unsigned result = (unsigned)-1;
-		try
-		{
-			while (true)
-			{
-				typename Queue::value_type m = m_queue.get();
-				if (!Handler::operator()(m))
-					break;
-			}
-			result = 0;
-		}
-		catch(...){}
-
-		return result;
-	}
-public:
-	inline void postMessage(const typename Queue::message_t &m)
-	{
-		m_queue.push(m);
-	}
-
-	inline typename Queue::size_type pendingMessages() const throw() { return m_queue.size(); }
-	inline void clearMessageQueue() throw() { m_queue.clear(); }
-
-	messageHandler(){}
-	template <class P1> messageHandler(const P1 &p1):Handler(p1){}
-	template <class P1,class P2> messageHandler(const P1 &p1,const P2 &p2):Handler(p1,p2){}
-	template <class P1,class P2,class P3> messageHandler(const P1 &p1,const P2 &p2,const P3 &p3):Handler(p1,p2,p3){}
-	template <class P1,class P2,class P3,class P4> messageHandler(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4):Handler(p1,p2,p3,p4){}
-	template <class P1,class P2,class P3,class P4,class P5> messageHandler(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5):Handler(p1,p2,p3,p4,p5){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6> messageHandler(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5,const P6 &p6):Handler(p1,p2,p3,p4,p5,p6){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7> messageHandler(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5,const P6 &p6,const P7 &p7):Handler(p1,p2,p3,p4,p5,p6,p7){}
-	template <class P1> messageHandler(P1 &p1):Handler(p1){}
-};
-
-template<class Handler,class Message = typename Handler::message_t>
-class messageThread: public Tthread<messageHandler<Handler,MT_queue<Message> > >
-{
-public:
-	messageThread(){}
-	template <class P1> messageThread(const P1 &p1):Tthread<messageHandler<Handler,MT_queue<Message> > >(p1){}
-	template <class P1,class P2> messageThread(const P1 &p1,const P2 &p2):Tthread<messageHandler<Handler,MT_queue<Message> > >(p1,p2){}
-	template <class P1,class P2,class P3> messageThread(const P1 &p1,const P2 &p2,const P3 &p3):Tthread<messageHandler<Handler,MT_queue<Message> > >(p1,p2,p3){}
-	template <class P1,class P2,class P3,class P4> messageThread(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4):Tthread<messageHandler<Handler,MT_queue<Message> > >(p1,p2,p3,p4){}
-	template <class P1,class P2,class P3,class P4,class P5> messageThread(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5):Tthread<messageHandler<Handler,MT_queue<Message> > >(p1,p2,p3,p4,p5){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6> messageThread(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5,const P6 &p6):Tthread<messageHandler<Handler,MT_queue<Message> > >(p1,p2,p3,p4,p5,p6){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7> messageThread(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5,const P6 &p6,const P7 &p7):Tthread<messageHandler<Handler,MT_queue<Message> > >(p1,p2,p3,p4,p5,p6,p7){}
-	template <class P1> messageThread(P1 &p1):Tthread<messageHandler<Handler,MT_queue<Message> > >(p1){}
-};
-
-//////////////// Finite state machine
-template <class Handler,typename RETVAL = bool>
-class fsm: public Handler {
-
-public:
-	typedef RETVAL (Handler::*state)(const typename Handler::message_t &m);// throw(); // should not throw an exception
-
-	// this is broken in VC 7, so trans must be made public	
-	//friend class Handler;
-public:
-	RETVAL operator()(const typename Handler::message_t &m) throw() { _ASSERTE(m_State);return (this->*m_State)(m); }
-
-	void trans(state target) throw()
-	{
-		if (target == m_State) return;
-		_ASSERTE(m_State);
-#ifndef NDEBUG
-		state tmp = m_State;
-#endif
-		(this->*m_State)(Handler::message_t::exitStateMessage());
-#ifndef NDEBUG
-		// sanity check - don't change states in exit_sig
-		_ASSERTE(tmp == m_State);
-#endif
-		m_State = target;
-		(this->*m_State)(Handler::message_t::enterStateMessage());
-		_ASSERTE(m_State == target); // don't change states in enter_sig
-	}
-public:
-
-	fsm():m_State(&fsm<Handler,RETVAL>::initialState){}
-	template <class P1> fsm(const P1 &p1):
-		Handler(p1),m_State(&fsm<Handler,RETVAL>::initialState){}
-	template <class P1> fsm(P1 &p1):
-		Handler(p1),m_State(&fsm<Handler,RETVAL>::initialState){}
-
-	template <class P1,class P2> fsm(const P1 &p1,const P2 &p2):
-		Handler(p1,p2),m_State(&fsm<Handler,RETVAL>::initialState){}
-	template <class P1,class P2> fsm(const P1 &p1,P2 &p2):
-		Handler(p1,p2),m_State(&fsm<Handler,RETVAL>::initialState){}
-	template <class P1,class P2> fsm(P1 &p1,P2 &p2):
-		Handler(p1,p2),m_State(&fsm<Handler,RETVAL>::initialState){}
-
-	template <class P1,class P2,class P3> fsm(const P1 &p1,const P2 &p2,const P3 &p3):
-		Handler(p1,p2,p3),m_State(&fsm<Handler,RETVAL>::initialState){}
-	template <class P1,class P2,class P3,class P4> fsm(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4):
-		Handler(p1,p2,p3,p4),m_State(&fsm<Handler,RETVAL>::initialState){}
-	template <class P1,class P2,class P3,class P4,class P5> fsm(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5):
-		Handler(p1,p2,p3,p4,p5),m_State(&fsm<Handler,RETVAL>::initialState){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6> fsm(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5,const P6 &p6):
-		Handler(p1,p2,p3,p4,p5,p6),m_State(&fsm<Handler,RETVAL>::initialState){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7> fsm(const P1 &p1,const P2 &p2,const P3 &p3,const P4 &p4,const P5 &p5,const P6 &p6,const P7 &p7):
-		Handler(p1,p2,p3,p4,p5,p6,p7),m_State(&fsm<Handler,RETVAL>::initialState){}
-
-private:
-	state	m_State;
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/thread.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/thread.cpp
deleted file mode 100644
index 3100453a..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/thread.cpp
+++ /dev/null
@@ -1,375 +0,0 @@
-#include "threading/thread.h"
-#ifndef _WIN32
-#include <unistd.h>
-#include "global.h"
-#else
-#include <pthread.h>
-#endif
-
-using namespace std;
-
-// thread safe sleep function
-// which is clamped to 10 ms.
-void safe_sleep(int sec, int usec)
-{
-#ifdef _WIN32
-	int ms = (usec / 1000);
-	ms += (sec * 1000);
-	if (ms < 10) ms = 10;
-	::Sleep(ms);
-#else
-	struct timeval mytime;
-	if (!sec && (usec < 10000)) usec = 10000;
-	mytime.tv_sec = sec;
-	mytime.tv_usec = usec;
-	select(0, NULL, NULL, NULL, &mytime);
-#endif
-}
-
-#ifndef _WIN32
-#include <errno.h>
-#include <vector>
-#endif
-
-using namespace AOL_namespace;
-
-rwLock::rwLock()
-{
-#ifdef PTHREAD_RWLOCK_PREFER_WRITER_NP
-    pthread_rwlockattr_t attr;
-    ::pthread_rwlockattr_init (&attr);
-    ::pthread_rwlockattr_setkind_np (&attr, PTHREAD_RWLOCK_PREFER_WRITER_NP);
-    int r = ::pthread_rwlock_init (&m_lock, &attr);
-    ::pthread_rwlockattr_destroy (&attr);
-#else
-    int r = ::pthread_rwlock_init (&m_lock, NULL);
-#endif
-    if (r)
-        throw runtime_error("Could not create rwlock");
-}
-
-rwLock::~rwLock()
-{
-    ::pthread_rwlock_destroy (&m_lock);
-}
-
-void rwLock::lock()
-{
-    ::pthread_rwlock_wrlock (&m_lock);
-}
-
-void rwLock::rdLock()
-{
-    ::pthread_rwlock_rdlock (&m_lock);
-}
-
-bool rwLock::tryRdLock()
-{
-    int n = ::pthread_rwlock_tryrdlock (&m_lock);
-    if (n == 0)
-        return true;
-    if (n != EBUSY)
-        throw runtime_error("Error with trying rwlock, " + n);
-    return false;
-}
-
-void rwLock::unlock()
-{
-    ::pthread_rwlock_unlock (&m_lock);
-}
-
-
-mutex::mutex() throw(runtime_error)
-{
-	if (::pthread_mutex_init(&m_mutex, NULL))
-	{
-		throw runtime_error("Could not create mutex");
-	}
-}
-
-mutex::~mutex() throw()
-{
-	::pthread_mutex_destroy(&m_mutex);
-#ifdef _WIN32
-	m_mutex = NULL;
-#endif
-}
-
-void mutex::lock() throw(runtime_error)
-{
-	if (::pthread_mutex_lock(&m_mutex))
-	{
-		throw runtime_error("Could not lock mutex");
-	}
-}
-
-bool mutex::timedLock(int milliseconds) throw(runtime_error)
-{
-	if (milliseconds == INFINITE)
-	{
-		lock();
-		return true;
-	}
-
-	if (milliseconds == 0)
-	{
-		int err = ::pthread_mutex_trylock(&m_mutex);
-		if (err == EBUSY)
-		{
-			return false;
-		}
-		if (err)
-		{
-			throw runtime_error("Could not trylock mutex");
-		}
-		return true;
-	}
-
-	int tenth_second_sleep_intervals = (milliseconds / 100);
-	for (int x = 0; x < tenth_second_sleep_intervals; ++x)
-	{
-		int err = ::pthread_mutex_trylock(&m_mutex);
-		if (!err)
-		{
-			return true;
-		}
-		safe_sleep(0, 100000);
-		if (err == EBUSY)
-		{
-			continue;
-		}
-		throw runtime_error("Could not trylock mutex");
-	}
-	return false;
-}
-
-void mutex::unlock() throw(runtime_error)
-{
-	if (::pthread_mutex_unlock(&m_mutex))
-	{
-		throw runtime_error("Could not unlock mutex");
-	}
-}
-
-conditionVariable::conditionVariable()  throw(runtime_error)
-{
-	if (::pthread_cond_init(&m_conditionVariable,NULL))
-	{
-		throw runtime_error("Could not create conditionVariable");
-	}
-}
-
-conditionVariable::~conditionVariable() throw()
-{
-	::pthread_cond_destroy(&m_conditionVariable);
-}
-
-void conditionVariable::wait(mutex &m) throw(runtime_error)
-{
-	if (::pthread_cond_wait(&m_conditionVariable,&m.m_mutex))
-	{
-		throw runtime_error("Could not wait on condition variable");
-	}
-}
-
-bool conditionVariable::timedWait(AOL_namespace::mutex &m,int milliseconds) throw(runtime_error)
-{
-	struct timespec ts;
-	ts.tv_sec = ::time(NULL) + (milliseconds / 1000);
-	ts.tv_nsec = (milliseconds - ((milliseconds / 1000) * 1000)) * 1000000; 
-	int err = ::pthread_cond_timedwait(&m_conditionVariable,&m.m_mutex,&ts);
-	if (!err)
-	{
-		return true;
-	}
-	if (err == ETIMEDOUT)
-	{
-		return false;
-	}
-	throw runtime_error("timedWait error");
-}
-
-void conditionVariable::signal() throw(runtime_error)
-{
-	if (::pthread_cond_signal(&m_conditionVariable))
-	{
-		throw runtime_error("Could not signal condition variable");
-	}
-}
-
-void conditionVariable::broadcast() throw(runtime_error)
-{
-	if (::pthread_cond_broadcast(&m_conditionVariable))
-	{
-		throw runtime_error("Could not broadcast on condition variable");
-	}
-}
-
-#ifdef _WIN32
-event::event(BOOL bManualReset) throw(runtime_error) : m_event(NULL)
-{
-	m_event = ::CreateEvent(NULL,bManualReset,FALSE,NULL);
-	if (!m_event)
-	{
-		throw runtime_error("Could not create event object");
-	}
-}
-
-event::~event() throw()
-{
-	forgetHandleNULL(m_event);
-}
-
-void event::wait() throw(std::runtime_error)
-{
-	if (::WaitForSingleObject(m_event,INFINITE) != WAIT_OBJECT_0)
-	{
-		throw runtime_error("event::wait() - wait error");
-	}
-}
-
-void event::setEvent() throw(std::runtime_error)
-{
-	if (!::SetEvent(m_event))
-	{
-		throw runtime_error("event::setEvent() - set error");
-	}
-}
-
-void event::resetEvent() throw(std::runtime_error)
-{
-	if (!::ResetEvent(m_event))
-	{
-		throw runtime_error("event::resetEvent() - reset error");
-	}
-}
-#else
-event::event(bool manualReset) throw(runtime_error)
-	: m_manualReset(manualReset), m_signaled(false)
-{
-}
-
-void event::wait() throw(runtime_error)
-{
-	stackLock sl(m_mutex);
-	while (!m_signaled)
-	{
-		m_conditionVariable.wait(m_mutex);
-	}
-	if (!m_manualReset)
-	{
-		m_signaled = false;
-	}
-}
-
-bool event::timedWait(int milliseconds) throw(runtime_error)
-{
-	if (milliseconds == INFINITE)
-	{
-		wait();
-		return true;
-	}
-
-	if (milliseconds == 0)
-	{
-		stackLock sl(m_mutex);
-		bool result = m_signaled;
-		if (m_signaled && !m_manualReset)
-		{
-			m_signaled = false;
-		}
-		return result;
-	}
-
-	stackLock sl(m_mutex);
-	while(!m_signaled)
-	{
-		if (!m_conditionVariable.timedWait(m_mutex,milliseconds))
-		{
-			return false;
-		}
-	}
-
-	if (!m_manualReset)
-	{
-		m_signaled = false;
-	}
-	return true;
-}
-
-void event::setEvent() throw(runtime_error)
-{
-	stackLock sl(m_mutex);
-	m_signaled = true;
-	m_conditionVariable.broadcast();
-}
-
-void event::resetEvent() throw(runtime_error)
-{
-	stackLock sl(m_mutex);
-	m_signaled = false;
-}
-
-int WaitForSingleObject(Win32SyncObject &o, int milli_timeout) throw()
-{
-	int result = WAIT_ABANDONED;
-
-	try
-	{
-		result = (o.syncObjectTimedWait(milli_timeout) ? WAIT_OBJECT_0 : WAIT_TIMEOUT);
-	}
-	catch(...) {}
-
-	return result;
-}
-
-int WaitForMultipleObjects(int count, Win32SyncObjectPtr *objs, bool waitall, int milliseconds) throw()
-{
-	__uint64 start = time_now_ms();
-
-	try
-	{
-		std::vector<bool> signaled(count,false);
-		int sig_count = 0/*, ms = (milliseconds % 1000)*/,
-			quantum = 100;/*(ms > 100 ? (ms / 10) : 100);*/
-
-		// as milliseconds is only set as '1000' in main.cpp
-		// then we don't need to do the checking and can just
-		// hard-code the quantum value to give 100ms interval
-
-		for (int x = 0; (x <= milliseconds) || (milliseconds == INFINITE); x += quantum)
-		{
-			for (int oo = 0; oo < count; ++oo)
-			{
-				if (!signaled[oo])
-				{
-					if (objs[oo]->syncObjectTimedWait(0))
-					{
-						signaled[oo] = true;
-						++sig_count;
-						if (!waitall)
-						{
-							return WAIT_OBJECT_0 + oo;
-						}
-						if (sig_count == count)
-						{
-							return WAIT_OBJECT_0;
-						}
-					}
-				}
-			} //for
-
-			safe_sleep(0, quantum * 1000);
-			
-			__uint64 now = time_now_ms();
-			if ((int)(now - start) >= milliseconds)
-			{
-				break;
-			}
-		} // for
-		return WAIT_TIMEOUT;
-	} //try
-	catch(...) {}
-	return WAIT_ABANDONED;
-}
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/thread.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/thread.h
deleted file mode 100644
index 05fd8033..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/threading/thread.h
+++ /dev/null
@@ -1,575 +0,0 @@
-#pragma once
-#ifndef _THREAD_H_
-#define _THREAD_H_
-
-#ifdef _WIN32
-#include <windows.h>
-#include <process.h>
-#include <pthread.h>
-#else
-#include <pthread.h>
-#include <assert.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/errno.h>
-#endif
-#include <stdexcept>
-#include "macros.h"
-
-///////////////////////////////////////////////////////////////////////////////
-/// Various thread classes for applications that need to do threading and
-/// aren't going to be including various Microsoft class libraries
-//////////////////////////////////////////////////////////////////////////////
-
-
-//********************************************************************
-//* Tthread and thread
-//*
-//* allows you to run code on a thread via a template. Create a class
-//* which has a method const unsigned operator()() and use it to instantiate
-//* the template. If you want to use a bare function, encapsulate it in the
-//* class pointer_to_thread_function. The Vthread class uses the traditional
-//* virtual function approach
-/*
-	Example:
-	
-	class foo
-	{
-		const unsigned operator()()
-		{
-			for (int x = 0; x < 4: ++x)
-			{
-				cout << x << endl;
-			}
-			return 1;
-		}
-	};
-
-	unsigned bar()
-	{
-		for (int x = 0; x < 4; ++x)
-			cout << x << endl;
-		return 1;
-	}
-
-	class narf: public Vthread
-	{
-		const unsigned operator()()
-		{
-			for (int x = 0; x < 4; ++x)
-			{
-				cout << x << endl;
-			}
-			return 1;
-		}
-	};
-
-	main()
-	{
-		Tthread<foo> f;
-		Tthread<pointer_to_thread_function> b(bar);
-		narf n;
-		n.start();
-		f.start();
-		b.start();
-		::WaitForSingleObject(f,INFINITE); // or f.join();
-		::WaitForSingleObject(b,INFINITE); // or b.join();
-		::WaitForSingleObject(n,INFINITE); // or n.join();
-	}
-
-*/
-
-//**********************************************************************
-
-#ifdef _WIN32
-#ifndef ASSERT
-#define ASSERT(x) { if (!(x)) ::MessageBoxW(0,L"Assert failure",L"ASSERT",MB_OK); }
-#endif
-#else
-#ifndef ASSERT
-#define ASSERT(x) assert(x)
-#endif
-#endif
-
-#ifdef _WIN32
-#define THREAD_FUNC unsigned __stdcall
-#else
-#define THREAD_FUNC void*
-#endif
-
-#ifdef _WIN32
-class thread_CORE
-{
-#pragma warning(push)
-#pragma warning(disable: 4127)
-#pragma warning(disable: 4100)
-	nocopy(thread_CORE)
-#pragma warning(pop)
-
-protected:
-	HANDLE	 m_threadHandle;
-
-public:
-	static int standard_signal_block() throw(){return 0;} // unix only
-
-	thread_CORE() : m_threadHandle(0) {}
-
-	~thread_CORE() throw()
-	{
-		if (m_threadHandle)
-		{
-			::WaitForSingleObject(m_threadHandle, INFINITE);
-			::CloseHandle(m_threadHandle);
-		}
-		m_threadHandle = 0;
-	}
-
-	inline void join()
-	{
-		if (m_threadHandle)
-		{
-			::WaitForSingleObject(m_threadHandle, INFINITE);
-		}
-	}
-	inline operator HANDLE() const throw() { return m_threadHandle; }
-    static unsigned long getCurrentThreadID()   { return (unsigned long)GetCurrentThreadId(); }
-};
-
-template<class Handler>
-class Tthread: public thread_CORE, public Handler
-{
-	static inline unsigned __stdcall _start_func(void *arg)
-		{ return reinterpret_cast<Tthread<Handler> *>(arg)->operator()(); }
-
-public:
-	Tthread(){}
-	template <class P1> Tthread( P1 &p1):Handler(p1){}
-	template <class P1,class P2> Tthread( P1 &p1, P2 &p2):Handler(p1,p2){}
-	template <class P1,class P2,class P3> Tthread( P1 &p1, P2 &p2, P3 &p3):Handler(p1,p2,p3){}
-	template <class P1,class P2,class P3,class P4> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4):Handler(p1,p2,p3,p4){}
-	template <class P1,class P2,class P3,class P4,class P5> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5):Handler(p1,p2,p3,p4,p5){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5,P6 &p6):Handler(p1,p2,p3,p4,p5,p6){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6,P7 &p7):Handler(p1,p2,p3,p4,p5,p6,p7){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7,P8 &p8):Handler(p1,p2,p3,p4,p5,p6,p7,p8){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class P9> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7, P8 &p8, P9 &p9):Handler(p1,p2,p3,p4,p5,p6,p7,p8,p9){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class P9,class P10> Tthread(P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7, P8 &p8, P9 &p9, P10 &p10):Handler(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class P9,class P10,class P11> Tthread(P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7, P8 &p8, P9 &p9, P10 &p10,P11 &p11):Handler(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class P9,class P10,class P11,class P12> Tthread(P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7, P8 &p8, P9 &p9, P10 &p10,P11 &p11,P12 &p12):Handler(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12){}
-
-	void start(int __unused = 1) throw(std::runtime_error)
-	{
-		unsigned m_threadIdentifier = 0;
-		m_threadHandle = (HANDLE)::_beginthreadex(NULL, 0, _start_func, this, 0, &m_threadIdentifier);
-		if (!m_threadHandle)
-		{
-			throw std::runtime_error("Could not start thread");
-		}
-	}
-};
-
-class SimpleThread
-{
-protected:
-	HANDLE m_threadHandle;
-
-public:
-	SimpleThread(unsigned (__stdcall *_start_func) (void *arg) = 0, void *user = 0) : m_threadHandle(0)
-	{
-		if (_start_func)
-		{
-			start(_start_func, user);
-		}
-	}
-
-	~SimpleThread() throw()
-	{
-		if (m_threadHandle)
-		{
-			::CloseHandle(m_threadHandle);
-		}
-		m_threadHandle = 0;
-	}
-
-	void start(unsigned (__stdcall *_start_func) (void *arg), void *user) throw(std::runtime_error)
-	{
-		unsigned m_threadIdentifier = 0;
-		m_threadHandle = (HANDLE)::_beginthreadex(NULL, 0, _start_func, user, 0, &m_threadIdentifier);
-		if (!m_threadHandle)
-		{
-			throw std::runtime_error("Could not start thread");
-		}
-	}
-};
-
-#else
-
-class thread_CORE
-{
-	nocopy(thread_CORE)
-
-protected:
-	pthread_t	m_threadHandle;
-
-public:
-	static int standard_signal_block() throw()
-	{
-		sigset_t catchset;
-		sigemptyset(&catchset);
-		sigaddset(&catchset,SIGPIPE);
-		sigaddset(&catchset,SIGTERM);
-		sigaddset(&catchset,SIGHUP);
-		sigaddset(&catchset,SIGINT);
-		sigaddset(&catchset,SIGQUIT);
-		sigaddset(&catchset,SIGTSTP); // ^Z allow this
-		sigaddset(&catchset,SIGCHLD);
-		sigaddset(&catchset,SIGWINCH);
-		sigaddset(&catchset,SIGUSR1);
-		sigaddset(&catchset,SIGUSR2);
-		return pthread_sigmask(SIG_BLOCK,&catchset,NULL);
-	}
-
-	thread_CORE() : m_threadHandle(0) {}
-
-	~thread_CORE() throw()
-	{
-		if (m_threadHandle)
-		{
-			::pthread_join(m_threadHandle, NULL);
-		}
-		m_threadHandle = 0;
-	}
-
-	inline void join()
-	{
-		if (m_threadHandle)
-		{
-			::pthread_join(m_threadHandle,NULL);
-			m_threadHandle = 0;
-		}
-	}
-	inline operator pthread_t() const throw() { return m_threadHandle; }
-    static unsigned long getCurrentThreadID()   { return (unsigned long)::pthread_self(); }
-};
-
-template<class Handler>
-class Tthread: public thread_CORE, public Handler
-{
-	static inline void* _start_func(void *arg)
-	{
-		standard_signal_block();
-		long x = (long)(reinterpret_cast<Tthread<Handler> *>(arg))->operator()();
-		return (void*)x;
-	}
-
-public:
-	Tthread(){}
-	template <class P1> Tthread( P1 &p1):Handler(p1){}
-	template <class P1,class P2> Tthread( P1 &p1, P2 &p2):Handler(p1,p2){}
-	template <class P1,class P2,class P3> Tthread( P1 &p1, P2 &p2, P3 &p3):Handler(p1,p2,p3){}
-	template <class P1,class P2,class P3,class P4> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4):Handler(p1,p2,p3,p4){}
-	template <class P1,class P2,class P3,class P4,class P5> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5):Handler(p1,p2,p3,p4,p5){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5,P6 &p6):Handler(p1,p2,p3,p4,p5,p6){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6,P7 &p7):Handler(p1,p2,p3,p4,p5,p6,p7){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7,P8 &p8):Handler(p1,p2,p3,p4,p5,p6,p7,p8){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class P9> Tthread( P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7, P8 &p8, P9 &p9):Handler(p1,p2,p3,p4,p5,p6,p7,p8,p9){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class P9,class P10> Tthread(P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7, P8 &p8, P9 &p9, P10 &p10):Handler(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class P9,class P10,class P11> Tthread(P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7, P8 &p8, P9 &p9, P10 &p10,P11 &p11):Handler(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11){}
-	template <class P1,class P2,class P3,class P4,class P5,class P6,class P7,class P8,class P9,class P10,class P11,class P12> Tthread(P1 &p1, P2 &p2, P3 &p3, P4 &p4, P5 &p5, P6 &p6, P7 &p7, P8 &p8, P9 &p9, P10 &p10,P11 &p11,P12 &p12):Handler(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12){}
-
-	void start(int joined = 1) throw(std::runtime_error)
-	{
-		if (joined && m_threadHandle)
-		{
-			throw std::runtime_error("Thread already exists");
-		}
-		int ret = pthread_create(&m_threadHandle, NULL, _start_func, this);
-		if (ret)
-		{
-			throw std::runtime_error("Could not start thread" + std::string(ret == EAGAIN ? " [Increase the open files (ulimit -n) limit]" : ""));
-		}
-	}
-};
-
-
-class SimpleThread
-{
-public:
-	SimpleThread(void *(*_start_func) (void *arg) = 0, void *user = 0)
-	{
-		if (_start_func)
-		{
-			start(_start_func, user);
-		}
-	}
-
-	void start(void *(*_start_func) (void *arg), void *user) throw(std::runtime_error)
-	{
-		pthread_t m_threadHandle = 0;
-		pthread_attr_t attr;
-		int ret = pthread_attr_init(&attr);
-		if (ret)
-		{
-			throw std::runtime_error("Could not start thread - pthread_attr_init failure");
-		}
-
-		ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-		if (ret)
-		{
-			pthread_attr_destroy(&attr);
-			throw std::runtime_error("Could not start thread - pthread_attr_setdetachstate failure");
-		}
-
-		ret = pthread_create(&m_threadHandle,&attr,_start_func,user);
-		if (ret)
-		{
-			pthread_attr_destroy(&attr);
-			throw std::runtime_error("Could not start thread" + std::string(ret == EAGAIN ? " [Increase the open files (ulimit -n) limit]" : ""));
-		}
-
-		pthread_attr_destroy(&attr);
-	}
-};
-#endif
-
-class pointer_to_thread_function
-{
-public:
-	typedef unsigned (*func_t)();
-
-	inline pointer_to_thread_function(func_t f):m_function(f){}
-private:
-	func_t	m_function;
-protected:
-	inline const unsigned operator()() { return (*m_function)(); }
-};
-
-class vthread_stub
-{
-	protected:
-		virtual const unsigned operator()() = 0;
-		virtual ~vthread_stub(){}
-};
-
-typedef Tthread<vthread_stub> Vthread;
-
-#ifdef _WIN32
-class event
-{
-#pragma warning(push)
-#pragma warning(disable: 4127)
-#pragma warning(disable: 4100)
-	nocopy(event)
-#pragma warning(pop)
-
-private:
-	HANDLE	m_event;
-
-public:
-	event(BOOL bManualReset) throw(std::runtime_error);
-	~event() throw();
-
-	inline operator HANDLE() const throw() { return m_event; }
-	void wait() throw(std::runtime_error);
-	void setEvent() throw(std::runtime_error);
-	void resetEvent() throw(std::runtime_error);
-};
-
-#else
-
-class Win32SyncObject
-{
-public:
-	virtual void syncObjectWait() throw(std::runtime_error) = 0;
-	virtual bool syncObjectTimedWait(int milliseconds) throw(std::runtime_error) = 0;
-	virtual ~Win32SyncObject(){}
-};
-typedef Win32SyncObject* Win32SyncObjectPtr;
-
-/// these provide basic resource mgmt for typical uses
-#endif
-
-class conditionVariable;
-
-namespace AOL_namespace {
-#pragma pack(push, 1)
-// conflicts with headers in solaris
-#ifndef _WIN32
-class mutex : public Win32SyncObject
-#else
-class mutex
-#endif
-{
-	nocopy(mutex)
-
-private:
-	pthread_mutex_t	m_mutex;
-
-public:
-	mutex() throw(std::runtime_error);
-	~mutex() throw();
-	void lock() throw(std::runtime_error);
-	bool timedLock(int milliseconds) throw(std::runtime_error);
-	void unlock() throw(std::runtime_error);
-	void syncObjectWait() throw(std::runtime_error) { lock(); }
-	bool syncObjectTimedWait(int milliseconds) throw(std::runtime_error) { return timedLock(milliseconds); }
-#ifndef _WIN32
-	inline operator Win32SyncObject*() throw() { return this; }
-#endif
-	friend class ::conditionVariable;
-};
-#pragma pack(pop)
-
-class rwLock
-{
-    pthread_rwlock_t m_lock;
-
-public:
-    rwLock();
-    ~rwLock();
-    bool tryRdLock();
-    void lock();
-    void rdLock();
-    void unlock();
-};
-
-}
-
-class conditionVariable
-{
-	nocopy(conditionVariable)
-
-private:
-	pthread_cond_t	m_conditionVariable;
-
-public:
-	conditionVariable() throw(std::runtime_error);
-	~conditionVariable() throw();
-	void wait(AOL_namespace::mutex &m) throw(std::runtime_error);
-	bool timedWait(AOL_namespace::mutex &m,int milliseconds) throw(std::runtime_error);
-	void signal() throw(std::runtime_error);
-	void broadcast() throw(std::runtime_error);
-};
-
-#ifndef _WIN32
-class event : public Win32SyncObject
-{
-	nocopy(event)
-
-private:
-	conditionVariable		m_conditionVariable;
-	AOL_namespace::mutex	m_mutex;
-	bool m_manualReset;
-	bool m_signaled;
-
-public:
-	event(bool bManualReset) throw(std::runtime_error);
-	void wait() throw(std::runtime_error);
-	bool timedWait(int milliseconds) throw(std::runtime_error);
-	void setEvent() throw(std::runtime_error);
-	void resetEvent() throw(std::runtime_error);
-	void syncObjectWait() throw(std::runtime_error) { wait(); }
-	bool syncObjectTimedWait(int milliseconds) throw(std::runtime_error) { return timedWait(milliseconds); }
-	inline operator Win32SyncObject*() throw() { return this; }
-
-};
-#endif
-
-/* class stackLock
-
-	Stack based mutex locker/unlocker for unwrapped Win32 mutexes.
-	Equivalent to CAutoLock for CCritSec objects.
-*/
-
-class stackLock
-{
-    AOL_namespace::mutex &m_m;
-public:
-    stackLock(AOL_namespace::mutex &m) : m_m(m)
-    {
-	m_m.lock();
-    }
-    ~stackLock()
-    {
-	m_m.unlock();
-    }
-};
-
-class stackRWLock
-{
-    AOL_namespace::rwLock &m_rw;
-    bool m_locked;
-
-public:
-    stackRWLock(AOL_namespace::rwLock &l, bool reader = true, bool lockNow = true) : m_rw(l), m_locked(lockNow)
-    {
-	if (lockNow == false)
-	    return;
-	if (reader)
-	    m_rw.rdLock();
-	else
-	    m_rw.lock();
-    }
-    ~stackRWLock()
-    {
-        if (m_locked)
-            m_rw.unlock();
-    }
-    bool tryRdLock()
-    {
-	if (m_locked == false)
-	{
-	    if (m_rw.tryRdLock())
-	    {
-		m_locked = true;
-		return true;
-	    }
-	}
-	return false;
-    }
-    void lock()         { if (m_locked == false) { m_rw.lock(); m_locked = true; } }
-    void rdLock()       { if (m_locked == false) { m_rw.rdLock(); m_locked = true; } }
-    void unlock()       { if (m_locked) { m_rw.unlock(); m_locked = false; } }
-
-};
-
-#ifndef _WIN32
-
-#define WAIT_ABANDONED (-1)
-#define WAIT_TIMEOUT (0)
-#define WAIT_OBJECT_0 (1)
-#define INFINITE (-1)
-
-int WaitForSingleObject(Win32SyncObject &o,int milli_timeout) throw();
-inline int WaitForSingleObject(Win32SyncObject *o,int milli_timeout) throw() { return WaitForSingleObject(*o,milli_timeout); }
-int WaitForMultipleObjects(int count,Win32SyncObjectPtr *objs,bool waitall,int milliseconds) throw();
-inline void CloseHandle(Win32SyncObject *o) { delete o; }
-typedef Win32SyncObject *HANDLE;
-
-#endif
-
-inline bool _SetEvent(event &e) { bool result=false; try {e.setEvent(); result=true; }catch(...){} return result; }
-inline bool _SetEvent(event *e) { return _SetEvent(*e); }
-inline bool _ResetEvent(event &e) { bool result=false; try {e.resetEvent();result=true;}catch(...){} return result; }
-inline bool _ResetEvent(event *e) { return _ResetEvent(*e); }
-
-namespace AOL_namespace
-{
-	template <typename T> class synchronizedPrimitive
-	{
-	private:
-		mutable AOL_namespace::mutex m_lock;
-		T m_t;
-
-	public:
-		synchronizedPrimitive(){}
-		synchronizedPrimitive(const T &t):m_t(t){}
-		T get() const throw() { stackLock sl(m_lock); return m_t; }
-		void set(const T &t) throw() { stackLock sl(m_lock); m_t = t; }
-	};
-}
-
-// thread safe sleep function
-void safe_sleep(int sec, int usec = 0);
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniFile.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniFile.cpp
deleted file mode 100644
index 102ee4b3..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniFile.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifdef _WIN32
-#include <windows.h>
-#include <io.h>
-#else
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include "uniFile.h"
-#include "stl/stringUtils.h"
-
-using namespace std;
-using namespace stringUtil;
-
-FILE* uniFile::fopen(const uniFile::filenameType &f,const char *mode) throw()
-{
-#ifdef _WIN32
-	uniString::utf32 u32(f);
-	std::wstring u16;
-	u32.toUtf16(u16);
-	return _wfopen(u16.c_str(),tows(mode).c_str());
-#else
-	return ::fopen((const char *)f.c_str(),mode);
-#endif
-}
-
-void uniFile::unlink(const uniFile::filenameType &f) throw()
-{
-#ifdef _WIN32
-	uniString::utf32 u32(f);
-	std::wstring u16;
-	u32.toUtf16(u16);
-	::DeleteFileW(u16.c_str());
-#else
-	::unlink((const char *)f.c_str());
-#endif
-}
-
-bool uniFile::fileExists(const uniFile::filenameType &f) throw()
-{
-#ifdef _WIN32
-	uniString::utf32 u32(f);
-	std::wstring u16;
-	u32.toUtf16(u16);
-	struct _stat64i32 st = {0};
-	int result = _wstat(u16.c_str(),&st);
-	if (st.st_mode & _S_IFDIR) return 0;
-	return (result == 0);
-#else
-	struct stat st;
-	int result = stat((const char *)f.c_str(),&st);
-	if (S_ISDIR(st.st_mode)) return 0;
-	return (result == 0);
-#endif
-}
-
-size_t uniFile::fileSize(const uniFile::filenameType &f) throw()
-{
-#ifdef _WIN32
-	uniString::utf32 u32(f);
-	std::wstring u16;
-	u32.toUtf16(u16);
-	struct _stat64i32 st;
-	if (_wstat(u16.c_str(),&st) == -1) return 0;
-	return st.st_size;
-#else
-	struct stat st;
-	if (stat((const char *)f.c_str(),&st) == -1) return 0;
-	return st.st_size;
-#endif
-}
-
-time_t uniFile::fileTime(const uniFile::filenameType &f) throw()
-{
-#ifdef _WIN32
-	uniString::utf32 u32(f);
-	std::wstring u16;
-	u32.toUtf16(u16);
-	struct _stat64i32 st;
-	if (_wstat(u16.c_str(),&st) == -1) return 0;
-	return st.st_mtime;
-#else
-	struct stat st;
-	if (stat((const char *)f.c_str(),&st) == -1) return 0;
-	return st.st_mtime;
-#endif
-}
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniFile.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniFile.h
deleted file mode 100644
index b90d59c2..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniFile.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-#ifndef uniFile_H_
-#define uniFile_H_
-
-#include "uniString.h"
-#include <stdio.h>
-
-// functions that help bridge the difference between
-// unicode file handling on various platforms
-
-namespace uniFile
-{
-	// posix uses utf8 for unicode filenames. Msft uses utf16. To avoid lots
-	// of platform conditional code, we will standardize on utf8 and convert
-	// as necessary on Msft platforms. This should be okay since file opens are
-	// not a high speed inner loop type of operation
-	typedef uniString::utf8 filenameType;
-
-	//typedef enum { OPENFILE_READ = 1,OPENFILE_WRITE = 2,OPENFILE_BINARY=4 } OpenFile_t;
-	//FILE* fopen(const filenameType &f,int open_file_type) throw();
-
-	FILE* fopen(const filenameType &f, const char *mode) throw();
-	void unlink(const filenameType &f) throw();
-	bool fileExists(const filenameType &f) throw();
-	size_t fileSize(const filenameType &f) throw();
-	time_t fileTime(const filenameType &f) throw();
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniString.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniString.cpp
deleted file mode 100644
index 317a1015..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniString.cpp
+++ /dev/null
@@ -1,786 +0,0 @@
-#include "uniString.h"
-#include <sstream>
-#include <map>
-#include <stdlib.h>
-
-using namespace std;
-using namespace uniString;
-
-/*****************************************************************/
-//////////////// various helping funcs /////////////////////////
-
-// helper function that throws exceptions
-static void throwBadUTF8Code(utf8::value_type v, int position) throw(badUnicodeData)
-{
-	ostringstream o;
-	o << "Bad UTF-8 code (" << hex << (int)v << ") at position " << position;
-	throw uniString::badUnicodeData(o.str());
-}
-
-static void throwBadUTF16Code(utf16::value_type v, int position) throw(badUnicodeData)
-{
-	ostringstream o;
-	o << "Bad UTF-16 code (" << hex << (int)v << ") at position " << position;
-	throw uniString::badUnicodeData(o.str());
-}
-
-bool utf8::isValid(bool allowIncompleteEndingSequence) const throw()
-{
-	int position = 0;
-	for (utf8::const_iterator i = begin(); i != end(); ++i, ++position)
-	{
-		utf8::value_type v8 = (*i);
-		if (v8 & 0x80)
-		{
-			// count number of follow up bytes
-			utf8::value_type follow_up_mask = 0xc0;
-			utf8::value_type leading_value_mask = 0x3f;
-			int follow_up_bytes = 0;
-
-			while ((v8 & follow_up_mask) == follow_up_mask)
-			{
-				if (follow_up_mask == 0xff)
-				{
-					return false;
-				}
-
-				++follow_up_bytes;
-				follow_up_mask = (follow_up_mask >> 1) | 0x80;
-				leading_value_mask = leading_value_mask >> 1;
-			}
-
-			// we should always have follow up bytes since 0x80 is illegal
-			if (!follow_up_bytes)
-			{
-				return false;
-			}
-
-			utf32::value_type v = v8 & leading_value_mask;
-			while(follow_up_bytes--)
-			{
-				++i;
-				++position;
-				if (i == end())
-				{
-					if (allowIncompleteEndingSequence)
-					{
-						break;
-					}
-					else
-					{
-						return false;
-					}
-				}
-				v8 = *i;
-				if ((v8 & 0xc0) != 0x80) // follow ups must begin with 10xxxxxx
-				{
-					return false;
-				}
-				v = (v << 6) | (v8 & 0x3f);
-			}
-		}
-	}
-	return true;
-}
-
-// convert utf8 to utf32 
-/*
-	u32 - utf32 string to set
-	ibegin,iend - template iterators for the beginning and end of the UTF-8 bitstream
-	allowIncompleteEndingSequence - if true then we just ignore missing values at the very end
-			of the bitstream. Otherwise we throw an exception.
-*/
-
-template<typename ITER>
-static void Utf8ToUtf32(utf32 &u32, ITER ibegin, ITER iend, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	// use temp so an exception leaves this string in tact
-	utf32 newValue;
-	int position = 0;
-
-	for (ITER i = ibegin; i != iend; ++i,++position)
-	{
-		utf8::value_type v8 = (*i);
-		if (!(v8 & 0x80))
-		{
-			newValue.push_back(v8);
-		}
-		else
-		{
-			// count number of follow up bytes
-			utf8::value_type follow_up_mask = 0xc0;
-			utf8::value_type leading_value_mask = 0x3f;
-			int follow_up_bytes = 0;
-
-			while ((v8 & follow_up_mask) == follow_up_mask)
-			{
-				if (follow_up_mask == 0xff)
-				{
-					throwBadUTF8Code(v8, position);
-				}
-				++follow_up_bytes;
-				follow_up_mask = (follow_up_mask >> 1) | 0x80;
-				leading_value_mask = leading_value_mask >> 1;
-			}
-
-			// we should always have follow up bytes since 0x80 is illegal
-			if (!follow_up_bytes)
-			{
-				throwBadUTF8Code(v8, position);
-			}
-
-			utf32::value_type v = v8 & leading_value_mask;
-			while (follow_up_bytes--)
-			{
-				++i;
-				++position;
-				if (i == iend)
-				{
-					if (allowIncompleteEndingSequence)
-					{
-						break;
-					}
-					else
-					{
-						throw badUnicodeData("Bad UTF-8 data. Ending sequence is incomplete");
-					}
-				}
-				v8 = *i;
-				if ((v8 & 0xc0) != 0x80) // follow ups must begin with 10xxxxxx
-				{
-					throwBadUTF8Code(v8, position);
-				}
-				v = (v << 6) | (v8 & 0x3f);
-			}
-			if (v != Utf16BOM)
-			{
-				newValue.push_back(v);
-			}
-		}
-	}
-
-	u32.clear();
-	u32 = newValue;
-}
-
-///////////////////// byte swap stuff for UTF-16 //////////////////////////////////////////////////////
-// endian swap of 16 bit value
-static inline utf16::value_type byteSwap(utf16::value_type nValue) throw()
-{
-	return (((nValue>> 8)) | (nValue << 8));
-}
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-// push a value into a UTF-16 encoding string based on the endian of the value and what
-// the machine natively stores. On entry "v" is in the native format of the machine since
-// it was just converted from the 32 bit code point.
-template<typename T>
-static void Utf16EndianPush(T &u16, utf16::value_type v, bool littleEndian) throw()
-{
-	if (littleEndian)
-	{
-		u16.push_back(v);
-	}
-	else
-	{
-		u16.push_back(byteSwap(v));
-	}
-}
-
-// convert a UTF-16 value to machine native value
-static inline utf16::value_type unswap(utf16::value_type v, bool littleEndianData) throw()
-{ 
-	return (littleEndianData ? v : byteSwap(v));
-}
-#else
-template<typename T>
-static void Utf16EndianPush(T &u16, utf16::value_type v, bool littleEndian) throw()
-{
-	if (!littleEndian)
-	{
-		u16.push_back(v);
-	}
-	else
-	{
-		u16.push_back(byteSwap(v));
-	}
-}
-
-static inline utf16::value_type unswap(utf16::value_type v,bool littleEndianData) throw()
-{ 
-	return (!littleEndianData ? v : byteSwap(v));
-}
-#endif
-///////////////////////////////////
-
-// assign UTF-32 from UTF-16 encoding
-/*
-	u32 - utf32 string to set
-	ibegin,iend - iterators for UTF-16 encoding source
-	assumeLittleEndian - assume the UTF-16 encoding is little endian unless a BOM is detected
-	allowIncompleteEndingSequence - if true ignore final code point if UTF-16 sequence is incomplete, otherwise
-									throw an exception
-*/
-
-template<typename ITER>
-static void Utf16ToUtf32(utf32 &u32, ITER ibegin, ITER iend, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	bool littleEndianData = assumeLittleEndian;
-
-	utf32 newValue;
-
-	int position = 0;
-
-	for (ITER i = ibegin; i != iend; ++i,++position)
-	{
-		utf16::value_type w1 = (utf16::value_type)(*i); // yes, use utf16 value even for wstring since we know it's good
-		if (w1 == 0xfeff)
-		{
-			littleEndianData = leSystem;
-			continue;
-		}
-		else if (w1 == 0xfffe)
-		{
-			littleEndianData = !leSystem;
-			continue;
-		}
-
-		w1 = unswap(w1,littleEndianData);
-		if (w1 < 0xd800 || w1 > 0xdfff)
-		{
-			newValue.push_back(w1);
-		}
-		else if (w1 > 0xdbff)
-		{
-			throwBadUTF16Code(w1,position);
-		}
-		else
-		{
-			++i;
-			++position;
-			if (i == iend)
-			{
-				if (allowIncompleteEndingSequence)
-				{
-					break;
-				}
-				else
-				{
-					throw badUnicodeData("Bad UTF-16 data. Ending sequence is incomplete");
-				}
-			}
-			utf16::value_type w2 = (*i);
-			w2 = unswap(w2, littleEndianData);
-			if (w2 < 0xdc00 || w2 > 0xdfff)
-			{
-				throwBadUTF16Code(w2, position);
-			}
-			utf32::value_type v1 = w1 & 0x03ff;
-			utf32::value_type v2 = w2 & 0x03ff;
-			newValue.push_back((v1 << 10) | v2);
-		}
-	}
-
-	u32.clear();
-	u32 = newValue;
-}
-
-template<typename U8>
-static void Utf32CodeToUtf8(utf32::value_type v, U8 &u8) throw()
-{
-	if (v < 0x00000080)
-	{
-		// only allow \t, \r, \n if in 0-31 ranage
-		// otherwise expat in the DNAS will refuse
-		if (v <= 31)
-		{
-			if (v == 9 || v == 10 || v == 13)
-			{
-				u8.push_back((utf8::value_type)v);
-			}
-		}
-		else
-		{
-			u8.push_back((utf8::value_type)v);
-		}
-	}
-	else
-	{
-		utf32::value_type maxTopValue = 0x0000003f;
-		utf8::value_type  topValueBitPattern = 0x80;
-		vector<utf8::value_type> buf;
-
-		// filter out the extended control characters just incase
-		if (v >= 0x80 && v <= 0x9F)
-		{
-			u8.push_back((utf8::value_type)0x3F);
-			return;
-		}
-		// and also filter this so we don't insert BOMs
-		else if (v == 0xFFFE || v == 0xFFFF)
-		{
-			return;
-		}
-
-		while (v > maxTopValue)
-		{
-			buf.push_back(0x00000080 | (v & 0x0000003f));
-			v = v >> 6;
-			maxTopValue = maxTopValue >> 1;
-			topValueBitPattern = ((topValueBitPattern >> 1) | 0x80);
-		}
-
-		buf.push_back(topValueBitPattern | v);
-		u8.insert(u8.end(), buf.rbegin(), buf.rend());
-	}
-}
-
-template<typename U8>		
-static void Utf32ToUtf8(const utf32 &u32, U8 &u8, bool leadingBOM) throw()
-{
-	u8.clear();
-	if (leadingBOM) 
-	{
-		// we rarely want a BOM in utf-8. But I've run into template bugs where
-		// the utf8 constructor is accidentally getting called with true for the BOM
-		// this compile time flag checks for that
-		Utf32CodeToUtf8(Utf16BOM,u8);
-	}
-	for (utf32::const_iterator i = u32.begin(); i != u32.end(); ++i)
-	{
-		Utf32CodeToUtf8(*i, u8);
-	}
-}
-
-// create UTF-16 from unicode (according to rfc2781)
-template<typename U16>
-static void Utf32ToUtf16(const utf32 &u32, U16 &u16, bool leadingBOM, bool littleEndian) throw()
-{
-	u16.clear();
-	if (leadingBOM)
-	{
-		Utf16EndianPush(u16, Utf16BOM, littleEndian);
-	}
-	for (utf32::const_iterator i = u32.begin(); i != u32.end(); ++i)
-	{
-		utf32::value_type v = *i;
-		if (v < 0x00010000)
-		{
-			Utf16EndianPush(u16, v, littleEndian);
-		}
-		else
-		{
-			utf32::value_type vp = v - 0x00010000;
-			utf16::value_type w1 = 0xd800;
-			utf16::value_type w2 = 0xdc00;
-			w1 = w1 | ((vp & 0x000ffc00) >> 10);
-			w2 = w2 | (vp & 0x000003ff);
-			Utf16EndianPush(u16,w1,littleEndian);
-			Utf16EndianPush(u16,w2,littleEndian);
-		}
-	}
-}
-
-utf32::utf32(const __int8 *s, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{ 
-	Utf8ToUtf32(*this, s, s + strlen((const char *)s), allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const __int8 *s, size_t len, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, s, s + len, allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const std::string &s, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, s.begin(), s.end(), allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const utf8 &u8, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, u8.begin(), u8.end(), allowIncompleteEndingSequence);	
-}
-
-utf32::utf32(const utf8::value_type *u8, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, u8, u8 + strlen((const char *)u8), allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const utf8::value_type *u8,size_t len, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, u8, u8 + len, allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const utf16 &u16,bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf16ToUtf32(*this, u16.begin(), u16.end(), assumeLittleEndian, allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const utf16::value_type *u16, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	utf16::size_type len = 0;
-	const utf16::value_type *tmp = u16;
-	if (tmp && *tmp)
-	{
-		while(*(tmp++))
-		{
-			++len;
-		}
-	}
-	Utf16ToUtf32(*this, u16, u16 + len, assumeLittleEndian, allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const utf16::value_type *u16, size_t len, bool assumeLittleEndian ,bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf16ToUtf32(*this, u16, u16 + len, assumeLittleEndian, allowIncompleteEndingSequence);
-}
-
-#ifdef _WIN32
-utf32::utf32(const std::wstring &w, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf16ToUtf32(*this, w.begin(), w.end(), assumeLittleEndian, allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const wchar_t *u16, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	size_t len = 0;
-	const wchar_t *tmp = u16;
-	if (tmp && *tmp)
-	{
-		while(*(tmp++))
-		{
-			++len;
-		}
-	}
-	Utf16ToUtf32(*this,u16,u16+len,assumeLittleEndian,allowIncompleteEndingSequence);
-}
-
-utf32::utf32(const wchar_t *u16, size_t len, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf16ToUtf32(*this, u16, u16 + len, assumeLittleEndian, allowIncompleteEndingSequence);
-}
-#endif		
-
-void utf32::assign(const __int8 *s, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{ 
-	Utf8ToUtf32(*this, s, s + strlen((const char *)s), allowIncompleteEndingSequence);
-}
-
-void utf32::assign(const __int8 *s, size_t len, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, s, s + len, allowIncompleteEndingSequence);
-}
-
-void utf32::assign(const std::string &s, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, s.begin(), s.end(), allowIncompleteEndingSequence);
-}
-
-void utf32::assign(const utf8 &u8, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, u8.begin(), u8.end(), allowIncompleteEndingSequence);	
-}
-
-void utf32::assign(const utf8::value_type *u8, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, u8, u8 + strlen((const char *)u8), allowIncompleteEndingSequence);
-}
-
-void utf32::assignAsHighBitANSI(const utf8::value_type *u8) throw()
-{
-	if (u8)
-	{
-		while (*u8)
-		{
-			push_back(*u8);
-			++u8;
-		}
-	}
-}
-
-void utf32::assign(const utf8::value_type *u8, size_t len, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf8ToUtf32(*this, u8, u8 + len, allowIncompleteEndingSequence);
-}
-
-void utf32::assign(const utf16 &u16, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf16ToUtf32(*this, u16.begin(), u16.end(), assumeLittleEndian, allowIncompleteEndingSequence);
-}
-
-void utf32::assign(const utf16::value_type *u16, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	utf16::size_type len = 0;
-	const utf16::value_type *tmp = u16;
-	if (tmp && *tmp)
-	{
-		while(*(tmp++))
-		{
-			++len;
-		}
-	}
-	Utf16ToUtf32(*this, u16, u16 + len, assumeLittleEndian, allowIncompleteEndingSequence);
-}
-
-void utf32::assign(const utf16::value_type *u16, size_t len, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf16ToUtf32(*this, u16, u16 + len, assumeLittleEndian, allowIncompleteEndingSequence);
-}
-
-#ifdef _WIN32
-void utf32::assign(const std::wstring &w, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf16ToUtf32(*this, w.begin(), w.end(), assumeLittleEndian, allowIncompleteEndingSequence);
-}
-
-void utf32::assign(const wchar_t *u16, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	size_t len = 0;
-	const wchar_t *tmp = u16;
-	if (tmp && *tmp)
-	{
-		while(*(tmp++))
-		{
-			++len;
-		}
-	}
-	Utf16ToUtf32(*this, u16, u16 + len, assumeLittleEndian, allowIncompleteEndingSequence);
-}	
-
-void utf32::assign(const wchar_t *u16, size_t len, bool assumeLittleEndian, bool allowIncompleteEndingSequence) throw(badUnicodeData)
-{
-	Utf16ToUtf32(*this, u16, u16 + len, assumeLittleEndian, allowIncompleteEndingSequence);
-}
-#endif		
-
-void utf32::assignFromLatinExtended(const std::string &s) throw()
-{
-	clear();
-	for (string::const_iterator i = s.begin(); i != s.end(); ++i)
-	{
-		push_back((utf32::value_type)(*i));
-	}
-}
-
-void utf32::assignFromLatinExtended(const __uint8 *s) throw()
-{
-	clear();
-	if (s)
-	{
-		while (*s)
-		{
-			push_back(*(s++));
-		}
-	}
-}
-
-void utf32::assignFromLatinExtended(const __uint8 *s, size_t len) throw()
-{
-	clear();
-	if (s && len > 0)
-	{
-		while (len--)
-		{
-			push_back(*(s++));
-		}
-	}
-}
-
-utf8 utf32::toUtf8(bool leadingBOM) const throw()
-{
-	utf8 u8;
-	Utf32ToUtf8(*this, u8, leadingBOM);
-	return u8;
-}
-
-void utf32::toUtf8(utf8 &u8, bool leadingBOM) const throw()
-{
-	Utf32ToUtf8(*this, u8, leadingBOM);
-}
-
-void utf32::toUtf8(std::string &s, bool leadingBOM) const throw()
-{
-	Utf32ToUtf8(*this, s, leadingBOM);
-}
-
-utf16 utf32::toUtf16(bool leadingBOM, bool littleEndian) const throw()
-{
-	utf16 u16;
-	Utf32ToUtf16(*this, u16, leadingBOM, littleEndian);
-	return u16;
-}
-
-void utf32::toUtf16(utf16 &u16, bool leadingBOM, bool littleEndian) const throw()
-{
-	Utf32ToUtf16(*this, u16, leadingBOM, littleEndian);
-}
-
-#ifdef _WIN32
-void utf32::toUtf16(std::wstring &w, bool leadingBOM, bool littleEndian) const throw()
-{
-	Utf32ToUtf16(*this, w, leadingBOM, littleEndian);
-}
-#endif	
-
-namespace uniString
-{
-	template<typename T>
-	class xmlEscapes: public map<typename T::value_type,T>
-	{
-	public:
-		xmlEscapes()
-		{  		
-			static const typename T::value_type lessthan[] = 
-				{(typename T::value_type)'&',(typename T::value_type)'l',(typename T::value_type)'t',(typename T::value_type)';',(typename T::value_type)0};
-			static const typename T::value_type greaterthan[] = 
-				{(typename T::value_type)'&',(typename T::value_type)'g',(typename T::value_type)'t',(typename T::value_type)';',(typename T::value_type)0};
-			static const typename T::value_type ampersand[] = 
-				{(typename T::value_type)'&',(typename T::value_type)'a',(typename T::value_type)'m',(typename T::value_type)'p',(typename T::value_type)';',(typename T::value_type)0};
-			static const typename T::value_type apostrophe[] = 
-				{(typename T::value_type)'&',(typename T::value_type)'a',(typename T::value_type)'p',(typename T::value_type)'o',(typename T::value_type)'s',(typename T::value_type)';',(typename T::value_type)0};
-			static const typename T::value_type quote[] = 
-				{(typename T::value_type)'&',(typename T::value_type)'q',(typename T::value_type)'u',(typename T::value_type)'o',(typename T::value_type)'t',(typename T::value_type)';',(typename T::value_type)0};
-			
-			(*this)['<'] = T(lessthan);
-			(*this)['>'] = T(greaterthan);
-			(*this)['&'] = T(ampersand);
-			(*this)['\''] = T(apostrophe);
-			(*this)['"'] = T(quote);
-		}
-	};
-}
-
-static const uniString::xmlEscapes<utf32> gUtf32XmlEscapes;
-static const uniString::xmlEscapes<utf16> gUtf16XmlEscapes;
-static const uniString::xmlEscapes<utf8> gUtf8XmlEscapes;
-
-template<typename T>
-static T xml_escape(const T &t, const uniString::xmlEscapes<T> &m) throw()
-{
-	T result;
-
-	for (typename T::const_iterator i = t.begin(); i != t.end(); ++i)
-	{
-		typename uniString::xmlEscapes<T>::const_iterator e = m.find(*i);
-		if (e != m.end())
-		{
-			result.insert(result.end(),(*e).second.begin(),(*e).second.end());
-		}
-		else
-		{
-			result.push_back(*i);
-		}
-	}
-	return result;
-}
-
-utf32 utf32::escapeXML() const throw()
-{
-	return xml_escape(*this, gUtf32XmlEscapes);
-}
-
-utf16 utf16::escapeXML() const throw()
-{
-	return xml_escape(*this, gUtf16XmlEscapes);
-}
-
-utf8 utf8::escapeXML() const throw()
-{
-	return xml_escape(*this, gUtf8XmlEscapes);
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-void utf8::assign(const utf32 &u32, bool leadingBOM) throw()
-{
-	u32.toUtf8(*this, leadingBOM);
-}
-
-void utf16::assign(const utf32 &u32, bool leadingBOM, bool littleEndian) throw()
-{
-	u32.toUtf16(*this, leadingBOM, littleEndian);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////
-string utf8::toANSI(bool allowHighBitCodePoints) const throw()
-{
-	string result;
-	bool utf32MethodWorked = false;
-
-	try
-	{
-		// convert to utf32 so we can easily remove code points
-		const utf32 u32(*this);
-		if (allowHighBitCodePoints)
-		{
-			for (utf32::const_iterator i = u32.begin(); i != u32.end(); ++i)
-			{
-				result.push_back((char)*i);
-			}
-		}
-		else
-		{
-			for (utf32::const_iterator i = u32.begin(); i != u32.end(); ++i)
-			{
-				if ((*i) <= 0x7f)
-				{
-					result.push_back((char)*i);
-				}
-				else
-				{
-					result.push_back((char)'?');
-				}
-			}
-		}
-		utf32MethodWorked = true;
-	}
-	catch(...)
-	{
-	}
-
-	// if the string actually has high bit ANSI values (for instance, from a badly
-	// formed playlist), we should still do something sensible.
-	if (!utf32MethodWorked)
-	{
-		result.clear();
-		if (allowHighBitCodePoints)
-		{
-			for (utf8::const_iterator i = begin(); i != end(); ++i)
-			{
-				result.push_back((char)*i);
-			}
-		}
-		else
-		{
-			for (utf8::const_iterator i = begin(); i != end(); ++i)
-			{
-				if ((*i) <= 0x7f)
-				{
-					result.push_back((char)*i);
-				}
-				else
-				{
-					result.push_back((char)'?');
-				}
-			}
-		}
-	}
-	return result;
-}
-
-#ifdef _WIN32
-wstring utf8::toWString() const throw(badUnicodeData)
-{
-	utf32 u32(*this);
-	wstring result;
-	u32.toUtf16(result);
-	return result;
-}
-#endif
-
-int utf8::toInt() const throw()
-{
-	return ::atoi((*this).hideAsString().c_str());
-}
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniString.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniString.h
deleted file mode 100644
index 51bbbd49..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/unicode/uniString.h
+++ /dev/null
@@ -1,354 +0,0 @@
-#pragma once
-#ifndef uniString_H_
-#define uniString_H_
-
-#include "intTypes.h"
-#include <stdexcept>
-#include <string>
-#include <vector>
-
-namespace uniString
-{
-	// exception for bad utf8/utf16 conversions
-	class badUnicodeData: public std::runtime_error
-	{
-	public:
-		explicit badUnicodeData(const std::string &msg) : std::runtime_error(msg){}
-	};
-
-	#if __BYTE_ORDER == __LITTLE_ENDIAN
-		static const bool leSystem = true;
-	#else
-		static const bool leSystem = false;
-	#endif
-
-	class utf8;
-	class utf16;
-	class utf32;
-
-	template<typename S>
-	size_t strlen(const S *s) throw()
-	{
-		if (!s) return 0;
-		size_t len(0);
-		while (*(s++))
-		{
-			++len;
-		}
-		return len;
-	}
-
-	// string length calculator with a limit (in case the string is badly formed)
-	template<typename S>
-	size_t strlen(const S *s, size_t maxamt) throw()
-	{
-		if (!s) return 0;
-		size_t len(0);
-		while (maxamt && (*s))
-		{
-			++s;
-			++len;
-			--maxamt;
-		}
-		return len;
-	}
-
-	template<typename T>
-	bool is_a_number(T t)
-	{
-		return (((int)t) >= ((int)'0') && ((int)t) <= ((int)'9'));
-	}
-
-	template <typename I>
-	bool is_a_number(I ibegin,I iend)
-	{
-		for (I i = ibegin; i != iend; ++i)
-		{
-			if (!is_a_number(*i))
-			{
-				return false;
-			}
-		}
-		return true;
-	}
-
-	class utf16: public std::basic_string<__uint16>
-	{
-	public:
-		typedef std::basic_string<__uint16> base_t;
-
-		utf16(){}
-		utf16(const utf16 &u16) : base_t(u16){}
-		explicit utf16(const utf16::value_type *u16) : base_t(u16){}
-		explicit utf16(const utf16::value_type *u16, utf16::size_type len) : base_t(u16, len){}
-	#ifdef _WIN32
-		explicit utf16(const std::wstring &w) : base_t(w.begin(), w.end()){}
-	#endif
-		explicit utf16(utf16::size_type Cnt,utf16::value_type Val) : base_t(Cnt, Val){}
-		explicit utf16(const base_t &u16) : base_t(u16){}
-
-		void assign(const utf32 &u32,bool leadingBOM = true, bool littleEndian = leSystem) throw(); 
-		utf16 escapeXML() const throw();
-	};
-
-	class utf8: public std::basic_string<__uint8>
-	{
-	public:
-		typedef std::basic_string<__uint8> base_t;
-		utf8(){}
-
-		utf8(const utf8 &u8) : base_t(u8) {}
-
-		utf8(const utf8::value_type *u8) : base_t(u8) {}
-
-		explicit utf8(const utf8::value_type *u8, utf8::size_type len) : base_t(u8, len) {}
-
-		utf8(const char *u8) : base_t((const utf8::value_type *)u8) {}
-
-		explicit utf8(const char *u8,utf8::size_type len) : base_t((const utf8::value_type *)u8, len) {}
-
-		utf8(const std::string &s) : base_t(s.begin(), s.end()) {}
-
-		explicit utf8(utf8::size_type Cnt, utf8::value_type Val) : base_t(Cnt, Val) {}
-
-		utf8(const base_t &u8) : base_t(u8) {}
-
-		template<typename T>
-		explicit utf8(T ibegin, T iend) : base_t(ibegin, iend) {}
-
-		explicit utf8(const utf32 &u32, bool leadingBOM = false)
-		{
-			assign(u32, leadingBOM);
-		}
-
-		void assign(const utf32 &u32, bool leadingBOM = false) throw();
-		bool isValid(bool allowIncompleteEndingSequence = false) const throw();
-		utf8 escapeXML() const throw();
-		int toInt() const throw();
-
-		// sometimes we need to stuff this in a string. For example if we want to throw
-		// a runtime_error exception with the utf8 data.
-		std::string hideAsString() const throw() 
-		{
-			std::string s(begin(), end());
-			return s;
-		}
-
-		// remove code points above 0x7f
-		std::string toANSI(bool allowHighBitCodePoints = false) const throw();
-		// convenience function for windows
-	#ifdef _WIN32
-		// converts to utf16
-		std::wstring toWString() const throw(badUnicodeData);
-	#endif
-
-		utf8 operator+(const utf8 &u8) const throw()
-		{
-			utf8 result(*this);
-			result.insert(result.end(), u8.begin(), u8.end());
-			return result;
-		}
-
-		utf8 operator+(const char *s) const throw()
-		{
-			utf8 result(*this);
-			result.insert(result.end(), s, s + strlen(s));
-			return result;
-		}
-
-		utf8 operator+(const std::string &s) const throw()
-		{
-			utf8 result(*this);
-			result.insert(result.end(), s.begin(), s.end());
-			return result;
-		}
-
-		template<typename T>
-		utf8 operator+(T v) const throw()
-		{
-			utf8 result(*this);
-			result += v;
-			return result;
-		}
-
-		template<typename T>
-		utf8& operator+=(T v) throw()
-		{
-			base_t::operator+=(v);
-			return *this;
-		}
-
-		utf8& operator+=(const std::string &s) throw()
-		{
-			utf8 result = (*this) + s;
-			*this = result;
-			return *this;
-		}
-
-		utf8& operator+=(const char *s) throw()
-		{
-			utf8 result = (*this) + s;
-			*this = result;
-			return *this;
-		}
-
-		template<typename ITER>
-		bool equals(ITER ibegin, ITER iend) const throw()
-		{
-			const_iterator i1 = begin();
-			ITER i2 = ibegin;
-			while ((i1 != end()) && (i2 != iend))
-			{
-				if (((utf8::value_type)*i1) != ((utf8::value_type)*i2))
-				{
-					return false;
-				}
-				++i1;
-				++i2;
-			}
-			return ((i1 == end()) && (i2 == iend));
-		}
-
-		bool operator==(const char *s) const throw()
-		{
-			return equals(s, s + strlen(s));
-		}
-
-		bool operator==(const std::string &s) const throw()
-		{
-			return equals(s.begin(), s.end());
-		}
-	};
-
-	inline utf8 operator+(const char *s, const utf8 &u8) throw()
-	{
-		utf8 r(s);
-		r.insert(r.end(), u8.begin(), u8.end());
-		return r;
-	}
-
-	inline utf8 operator+(const std::string &s, const utf8 &u8) throw()
-	{
-		utf8 r(s);
-		r.insert(r.end(), u8.begin(), u8.end());
-		return r;
-	}
-
-	class utf32: public std::basic_string<__uint32>
-	{
-	public:
-		typedef std::basic_string<__uint32> base_t;
-
-		utf32(){}
-		utf32(const utf32 &us): base_t(us){}
-		utf32(const utf32::value_type *u32) : base_t(u32){}
-		explicit utf32(const utf32::value_type *u32, utf32::size_type len) : base_t(u32, len){}
-		explicit utf32(utf32::size_type Cnt, utf32::value_type Val) : base_t(Cnt, Val){}
-		utf32(const base_t &s) : base_t(s){}
-		explicit utf32(utf32::const_iterator b, utf32::const_iterator e) : base_t(b, e){}
-		explicit utf32(utf32::const_reverse_iterator b, utf32::const_reverse_iterator e) : base_t(b, e){}
-
-		explicit utf32(const __int8 *s, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		explicit utf32(const __int8 *s, size_t len, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		explicit utf32(const std::string &s, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		explicit utf32(const utf8 &u8, bool allowIncompleteEndingSequence = false) throw(badUnicodeData); 
-		explicit utf32(const utf8::value_type *u8, bool allowIncompleteEndingSequence = false) throw(badUnicodeData); 
-		explicit utf32(const utf8::value_type *u8, size_t len, bool allowIncompleteEndingSequence = false) throw(badUnicodeData); 
-		void assignAsHighBitANSI(const utf8::value_type *u8) throw();
-		void assign(const __int8 *s, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		void assign(const __int8 *s, size_t len, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		void assign(const std::string &s, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		void assign(const utf8 &u8, bool allowIncompleteEndingSequence = false) throw(badUnicodeData); 
-		void assign(const utf8::value_type *u8, bool allowIncompleteEndingSequence = false) throw(badUnicodeData); 
-		void assign(const utf8::value_type *u8, size_t len, bool allowIncompleteEndingSequence = false) throw(badUnicodeData); 
-
-		// use this one if the source is LATIN-1 and it may contain high bit characters
-		void assignFromLatinExtended(const std::string &s) throw();
-		void assignFromLatinExtended(const __uint8 *s) throw(); // null terminated
-		void assignFromLatinExtended(const __uint8 *s, size_t len) throw(); // no termination
-		//////////////////
-
-		explicit utf32(const utf16 &u16, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		explicit utf32(const utf16::value_type *u16, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		explicit utf32(const utf16::value_type *u16, size_t len, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-	#ifdef _WIN32
-		explicit utf32(const std::wstring &w, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		explicit utf32(const wchar_t *u16, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		explicit utf32(const wchar_t *u16, size_t len, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-	#endif
-		void assign(const utf16 &u16, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		void assign(const utf16::value_type *u16, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		void assign(const utf16::value_type *u16, size_t len, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-	#ifdef _WIN32
-		void assign(const std::wstring &w, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		void assign(const wchar_t *u16, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-		void assign(const wchar_t *u16, size_t len, bool assumeLittleEndian = leSystem, bool allowIncompleteEndingSequence = false) throw(badUnicodeData);
-	#endif
-		utf8 toUtf8(bool leadingBOM = false) const throw();
-		void toUtf8(utf8 &u8, bool leadingBOM = false) const throw();
-		void toUtf8(std::string &s, bool leadingBOM = false) const throw();
-		utf16 toUtf16(bool leadingBOM = false, bool littleEndian = leSystem) const throw();
-		void toUtf16(utf16 &u16, bool leadingBOM = false, bool littleEndian = leSystem) const throw();
-	#ifdef _WIN32
-		void toUtf16(std::wstring &w, bool leadingBOM = false, bool littleEndian = leSystem) const throw();
-	#endif
-
-		utf32 escapeXML() const throw();
-
-		utf32& operator+=(const utf32 &u32)
-		{
-			insert(end(), u32.begin(), u32.end());
-			return *this;
-		}
-
-		utf32 operator+(const utf32 &u32)
-		{
-			utf32 result(*this);
-			result += u32;
-			return result;
-		}
-	};
-
-	static const utf16::value_type Utf16BOM = 0xfeff;
-}
-
-inline uniString::utf8 asciiToUtf8(std::string s)
-{
-	uniString::utf8 result;
-	const size_t siz = s.size();
-	for (size_t i = 0; i < siz; i++)
-	{
-		int c = s[i];
-
-		// nothing specicial to do if 0-127
-		if (c < 128 && c >= 0)
-		{
-			if (c >= 0 && c <= 31)
-			{
-				if (c == 9 || c == 10 || c == 13)
-				{
-					result.push_back((__uint8)c);
-				}
-			}
-			else
-			{
-				result.push_back((__uint8)c);
-			}
-		}
-		// otherwise we need to attempt to convert
-		else
-		{
-			// bump back to +ve
-			if (c < 128)
-			{
-				c += 256;
-			}
-			result.push_back((__uint8)(c >> 6) | 0xC0);
-			result.push_back((__uint8)(c & 0x3F) | 0x80);
-		}
-	}
-
-	return result;
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/win32/rezFuncs.cpp b/Src/Plugins/DSP/sc_serv3/nmrCommon/win32/rezFuncs.cpp
deleted file mode 100644
index a667b3f5..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/win32/rezFuncs.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <windows.h>
-#include <tchar.h>
-#include "rezFuncs.h"
-#include "stl/stringUtils.h"
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-void getVersionInfo(utf8 &version) throw()
-{
-	version = "";
-	
-	TCHAR filename[_MAX_PATH + 1] = {0};
-	DWORD junk = 0;
-	char *versionData = 0;
-
-	// version information from the application resources
-	::GetModuleFileName(0,filename,_MAX_PATH);
-	DWORD versionInfoSize = ::GetFileVersionInfoSize(filename,&junk);
-	versionData = new char[versionInfoSize];
-	if (::GetFileVersionInfoW(filename,0,versionInfoSize,versionData))
-	{
-		void *valPtr = 0;
-		UINT valSize = 0;
-		if (::VerQueryValue(versionData,_T("\\"), &valPtr, &valSize))
-		{
-			const VS_FIXEDFILEINFO *ffi = reinterpret_cast<const VS_FIXEDFILEINFO *>(valPtr);
-			version =  
-				tos(((ffi->dwProductVersionMS & 0xffff0000) >> 16)) + "." + 
-				tos(((ffi->dwProductVersionMS & 0x0000ffff))) + "." + 
-				tos(((ffi->dwProductVersionLS & 0xffff0000) >> 16)) + "." + 
-				tos(((ffi->dwProductVersionLS & 0x0000ffff)));
-		}
-	}
-	delete [] versionData;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/nmrCommon/win32/rezFuncs.h b/Src/Plugins/DSP/sc_serv3/nmrCommon/win32/rezFuncs.h
deleted file mode 100644
index 3db0d496..00000000
--- a/Src/Plugins/DSP/sc_serv3/nmrCommon/win32/rezFuncs.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma once
-#ifndef rezFuncs_H_
-#define rezFuncs_H_
-
-#include "unicode/uniString.h"
-
-void getVersionInfo(uniString::utf8 &version) throw();
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_FlashPolicyServer.cpp b/Src/Plugins/DSP/sc_serv3/protocol_FlashPolicyServer.cpp
deleted file mode 100644
index 82a49bca..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_FlashPolicyServer.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_FlashPolicyServer.h"
-#include "webNet/urlUtils.h"
-#include "services/stdServiceImpl.h"
-#include "global.h"
-#include "bandwidth.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-protocol_FlashPolicyServer::protocol_FlashPolicyServer(const socketOps::tSOCKET s,
-													   const uniString::utf8 &clientLogString) throw(std::exception)
-	: runnable(s), m_outBufferSize(0), m_clientLogString(clientLogString),
-	  m_outBuffer(0), m_state(&protocol_FlashPolicyServer::state_Send)
-{
-	// flash x-domain file
-	m_outMsg = gOptions.getCrossDomainFile(false);
-	if (m_outMsg.empty()) m_outMsg = MSG_HTTP404;
-	m_outBuffer = m_outMsg.c_str();
-	bandWidth::updateAmount(bandWidth::FLASH_POLICY, (m_outBufferSize = (int)m_outMsg.size()));
-}
-
-protocol_FlashPolicyServer::~protocol_FlashPolicyServer() throw()
-{
-	socketOps::forgetTCPSocket(m_socket);
-}
-
-void protocol_FlashPolicyServer::timeSlice() throw(std::exception)
-{
-	(this->*m_state)();
-}
-
-// send buffer text
-void protocol_FlashPolicyServer::state_Send() throw(std::exception)
-{
-	if (sendDataBuffer(DEFAULT_CLIENT_STREAM_ID, m_outBuffer, m_outBufferSize, m_clientLogString))
-	{
-		m_result.done();
-	}
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_FlashPolicyServer.h b/Src/Plugins/DSP/sc_serv3/protocol_FlashPolicyServer.h
deleted file mode 100644
index 2972a08d..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_FlashPolicyServer.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#pragma once
-#ifndef protocol_FlashPolicyServer_H_
-#define protocol_FlashPolicyServer_H_
-
-#include "threadedRunner.h"
-#include <map>
-
-// this class takes any necessary actions indicated by an HTTP
-// call with the <policy-file-request/> url (typically on :843)
-class protocol_FlashPolicyServer: public runnable
-{
-private:
-	int						m_outBufferSize;
-	const uniString::utf8&	m_clientLogString;
-	const uniString::utf8::value_type	*m_outBuffer; // for outgoing text lines
-	uniString::utf8			m_outMsg;
-
-	typedef void (protocol_FlashPolicyServer::*state_t)();
-
-	state_t	m_state;
-
-	void state_Send() throw(std::exception);
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_FlashPolicyServer"; }
-
-public:
-	protocol_FlashPolicyServer(const socketOps::tSOCKET s, const uniString::utf8 &clientLogString) throw(std::exception);
-	virtual ~protocol_FlashPolicyServer() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_HTTPClient.cpp b/Src/Plugins/DSP/sc_serv3/protocol_HTTPClient.cpp
deleted file mode 100644
index 1406cbcc..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_HTTPClient.cpp
+++ /dev/null
@@ -1,305 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_HTTPClient.h"
-#include "ripList.h"
-#include "stats.h"
-#include "streamData.h"
-#include "w3cLog.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(...)      do { if (gOptions.HTTPClientDebug()) DLOG(__VA_ARGS__); } while (0)
-#define AD_DEBUG_LOG(...)   do { if (gOptions.adMetricsDebug()) DLOG(__VA_ARGS__); } while (0)
-
-protocol_HTTPClient::protocol_HTTPClient (protocol_HTTPStyle &hs, const streamData::streamID_t streamID,
-        const uniString::utf8 &hostName, const utf8 &addr, const uniString::utf8 &XFF) throw(std::exception)
-    : protocol_shoutcastClient (hs, streamID, hostName, addr, XFF, streamData::HTTP)
-{
-    setCallback (&protocol_shoutcastClient::state_AttachToStream);
-}
-
-
-protocol_HTTPClient::~protocol_HTTPClient() throw()
-{
-	cleanup("HTTP", gOptions.HTTPClientDebug(), false, true);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void protocol_HTTPClient::timeSlice() throw(exception)
-{
-	int ret = doTimeSlice();
-	if (ret == 1)
-	{
-		m_state = &protocol_HTTPClient::state_Stream;
-		return;
-	}
-	else if (ret == 2)
-	{
-		return;
-	}
-
-	(this->*m_state)();
-}
-
-
-void protocol_HTTPClient::setCallback (protocol_shoutcastClient::state_t callback, protocol_shoutcastClient::state_t next)
-{
-    m_state = callback ? callback : m_nextState;
-    m_nextState = callback ? next : NULL;
-}
-
-
-void protocol_HTTPClient::state_Close() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	m_result.done();
-}
-
-void protocol_HTTPClient::state_SendText() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-
-	if (sendText())
-	{
-		m_metaIntervalCounter = 0;
-		m_state = m_nextState;
-	}
-}
-
-// find the appropriate stream and try to attach to it
-void protocol_HTTPClient::state_AttachToStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	int read_bitrate = 0, dataType = 0;
-	m_streamData = streamData::accessStream(m_streamID);
-	if (!m_streamData)
-	{
-		if (processReject("HTTP", bandWidth::CLIENT_HTTP_SENT, MSG_ICY_HTTP401,
-						  MSG_ICY_HTTP401_LEN, &read_bitrate, &dataType))
-		{
-			goto fall_through;
-		}
-
-		m_state = &protocol_shoutcastClient::state_SendText;
-		m_nextState = &protocol_shoutcastClient::state_Close;
-	}
-	else
-	{
-fall_through:
-		const utf8 movedUrl = gOptions.stream_movedUrl(m_streamID);
-		if (movedUrl.empty())
-		{
-			const int add = processAdd("HTTP", bandWidth::CLIENT_HTTP_SENT,
-									   MSG_ICY_HTTP401, MSG_ICY_HTTP401_LEN, movedUrl,
-									   (m_streamData ? m_streamData->streamBackupServer() : ""));
-			if (add != 1)
-			{
-				m_state = &protocol_shoutcastClient::state_SendText;
-				m_nextState = &protocol_shoutcastClient::state_Close;
-			}
-			else
-			{
-				const bool isPodcast = (!m_streamData && (gOptions.getBackupLoop(m_streamID) == 1));
-				m_OKResponse = MSG_ICY_HTTP200;
-				if (!isPodcast)
-				{
-					utf8 title = (m_streamData ? m_streamData->streamName() : gOptions.stream_backupTitle(m_streamID));
-					if (!m_streamData)
-					{
-						if (!gOptions.read_stream_backupTitle(m_streamID))
-						{
-							title = gOptions.backupTitle();
-						}
-
-						if (title.empty())
-						{
-							title = gOptions.stream_backupFile(m_streamID);
-							if (!gOptions.read_stream_backupFile(m_streamID))
-							{
-								title = gOptions.backupFile();
-							}
-
-							if (!title.empty())
-							{
-								title = fileUtil::stripSuffix(fileUtil::stripPath(title));
-							}
-						}
-					}
-
-					m_OKResponse += "icy-name:" + title + "\r\n"
-									"icy-genre:";
-					if (m_streamData)
-					{
-						for (int i = 0; i < 5; i++)
-						{
-							if (!m_streamData->m_streamInfo.m_streamGenre[i].empty())
-							{
-								m_OKResponse += (i ? ", " : "") + m_streamData->m_streamInfo.m_streamGenre[i];
-							}
-						}
-					}
-					else
-					{
-						m_OKResponse += "Misc";
-					}
-
-					m_OKResponse += "\r\n"
-									"icy-br:" + tos((m_streamData ? m_streamData->streamBitrate() : read_bitrate)) + "\r\n" +
-									"icy-sr:" + tos((m_streamData ? m_streamData->streamSampleRate() : 0)) + "\r\n" +
-									(m_streamData ? (m_streamData->streamIsVBR() ? "icy-vbr:1\r\n" : "") : "");
-				}
-
-				if (m_streamData)
-				{
-					m_OKResponse += "icy-url:" + m_streamData->streamURL() + "\r\n";
-
-					if (isUserAgentRelay(toLower(m_userAgent)) && (!m_streamData->allowPublicRelay()))
-					{
-						m_OKResponse += "icy-pub:0\r\n";
-					}
-					else
-					{
-						m_OKResponse += "icy-pub:" + tos(m_streamData->streamPublic()) + "\r\n";
-					}
-
-					m_OKResponse += "content-type:" + m_streamData->streamContentType() + "\r\n";
-				}
-				else
-				{
-					utf8 path = getStreamPath(m_streamID);
-					if (!path.empty() && path.find(utf8("/")) == 0)
-					{
-						path = path.substr(1);
-					}
-
-					m_OKResponse += "Content-Type:" + utf8(dataType == AACP_DATA ? "audio/aacp" : "audio/mpeg") + "\r\n";
-
-					if (!isPodcast)
-					{
-						utf8 pub = toLower(gOptions.stream_publicServer(m_streamID));
-						if (pub.empty())
-						{
-							pub = toLower(gOptions.publicServer());
-						}
-						if (pub == "always")
-						{
-							m_OKResponse += "icy-pub:1\r\n";
-						}
-						else if (pub == "never")
-						{
-							m_OKResponse += "icy-pub:0\r\n";
-						}
-					}
-					else
-					{
-						m_OKResponse += "Content-Disposition:attachment;filename=\"" + path + "\"\r\n"
-										"Content-Length:" + tos(m_backupFile.size()) + "\r\n";
-					}
-				}
-
-				if (gOptions.clacks())
-				{
-					m_OKResponse += "X-Clacks-Overhead:GNU Terry Pratchett\r\n";
-				}
-//#define USE_CHUNKED
-#ifdef USE_CHUNKED
-				m_OKResponse += "Transfer-Encoding:chunked\r\n\r\n";
-#else
-				m_OKResponse += "\r\n";
-#endif
-				DEBUG_LOG(m_clientLogString + "Sending [" + eol() + stripWhitespace(m_OKResponse) + eol() + "]");
-				m_outBuffer = m_OKResponse.c_str();
-				bandWidth::updateAmount(bandWidth::CLIENT_HTTP_SENT, (m_outBufferSize = (int)m_OKResponse.size()));
-				m_state = &protocol_shoutcastClient::state_SendText;
-				if (!m_headRequest)
-				{
-					m_nextState = &protocol_shoutcastClient::state_InitiateStream;
-				}
-				else
-				{
-					m_removeClientFromStats = false;
-					m_ignoreDisconnect = true;
-					m_nextState = &protocol_shoutcastClient::state_Close;
-				}
-				m_result.schedule();
-				m_result.timeoutSID(m_streamID);
-				m_result.run();
-
-				// when the client is added, we get back the unique id of the connection
-				// but we now check for being > 0 as we need to filter out some of the
-				// YP connections from being counted as valid clients for stats, etc
-				reportNewListener("HTTP");
-			}
-		}
-		else
-		{
-			// if we get to here then we attempt to redirect the clients to the moved url
-			// which is useful if the stream has moved hosting or it has been deprecated.
-			streamMovedOrRejected("HTTP", bandWidth::CLIENT_HTTP_SENT, movedUrl, 2);
-			m_state = &protocol_shoutcastClient::state_SendText;
-			m_nextState = &protocol_shoutcastClient::state_Close;
-		}
-	}
-}
-
-void protocol_HTTPClient::state_SendIntro() throw(exception)
-{
-	state_SendIntroFile();
-	if (m_introFile.empty())
-	{
-		acquireIntroFile();
-		if (m_introFile.empty())
-		{
-			m_state = &protocol_shoutcastClient::state_Stream;
-		}
-		else
-		{
-			m_state = &protocol_shoutcastClient::state_SendIntroFile;
-		}
-	}
-}
-
-void protocol_HTTPClient::state_InitiateStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	resetReadPtr();
-
-	if (!m_streamData || m_introFile.empty())
-	{
-		// send intro file if we have it
-		acquireIntroFile();
-		m_state = (m_introFile.empty() ? &protocol_shoutcastClient::state_Stream : &protocol_shoutcastClient::state_SendIntroFile);
-	}
-	else
-	{
-		m_state = &protocol_shoutcastClient::state_SendIntro;
-	}
-
-	setW3CState();
-
-	m_result.run();
-}
-
-
-void protocol_HTTPClient::return_403(void)
-{
-	protocol_shoutcastClient::return_403();
-	m_state = &protocol_shoutcastClient::state_SendText;
-	m_nextState = &protocol_shoutcastClient::state_Close;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_HTTPClient.h b/Src/Plugins/DSP/sc_serv3/protocol_HTTPClient.h
deleted file mode 100644
index 3a20c999..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_HTTPClient.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma once
-#ifndef protocol_HTTPClient_H_
-#define protocol_HTTPClient_H_
-
-#include "protocol_shoutcastClient.h"
-#include <vector>
-
-class streamData;
-
-class protocol_HTTPClient: public protocol_shoutcastClient
-{
-private:
-
-	typedef void (protocol_HTTPClient::*state_t)();
-	state_t m_state;
-	state_t m_nextState;
-
-	void state_AttachToStream() throw(std::exception);
-	void state_Close() throw(std::exception);
-	void state_SendText() throw(std::exception);
-	void state_InitiateStream() throw(std::exception);
-	void state_SendIntro() throw(std::exception);
-
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_HTTPClient"; }
-
-public:
-    protocol_HTTPClient (protocol_HTTPStyle &hs, const streamData::streamID_t streamID, const uniString::utf8 &hostName,
-            const uniString::utf8 &addr, const uniString::utf8 &XFF) throw(std::exception);
-
-	virtual ~protocol_HTTPClient() throw();
-
-	virtual void setCallback (protocol_shoutcastClient::state_t callback = NULL, protocol_shoutcastClient::state_t next = NULL);
-
-	void return_403(void);
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_HTTPSource.cpp b/Src/Plugins/DSP/sc_serv3/protocol_HTTPSource.cpp
deleted file mode 100644
index cc0479fe..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_HTTPSource.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include "protocol_HTTPSource.h"
-#include "protocol_backup.h"
-#include "streamData.h"
-#include "global.h"
-#include "base64.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME             "SRC"
-#define DEBUG_LOG(...)      do { if (gOptions.HTTPSourceDebug()) DLOG(__VA_ARGS__); } while (0)
-
-protocol_HTTPSource::protocol_HTTPSource (microConnection &mc, const string &firstLine) throw(exception) :
-    runnable (mc), m_srcPort(mc.m_srcPort), m_srcAddr(mc.m_srcAddress)
-{
-    m_srcStreamID = DEFAULT_SOURCE_STREAM;
-    m_remainder = new __uint8[BUF_SIZE * 4];
-    m_remainderSize = 0;
-    m_denied = false;
-    m_outBuffer = NULL;
-    m_outBufferSize = 0;
-    m_streamData = NULL;
-    m_state = &protocol_HTTPSource::state_GetLine;
-    m_nextState = &protocol_HTTPSource::state_AnalyzeHeaders;
-
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	// to be able to do certain things later on
-	// we need to determine the stream from the
-	// mountpoint which is in the PUT request
-	string request, url, protocolAndVersion;
-	getHTTPRequestDetails(firstLine, request, url, protocolAndVersion);
-
-	bool htmlPage = false;
-	m_srcStreamID = (int)streamData::getStreamIdFromPath(url, htmlPage);
-	if ((m_srcStreamID > 0) && (m_srcStreamID <= INT_MAX))
-	{
-		// update the log message for the read stream number
-		m_srcLogString = srcAddrLogString (m_srcAddr, m_srcPort, m_srcStreamID);
-
-		// if we have a moved stream then now we have the stream id
-		// then we need to check and block the source as applicable
-		utf8 movedUrl = gOptions.stream_movedUrl(m_srcStreamID);
-
-		if (!movedUrl.empty())
-		{
-			m_denied = true;
-			ELOG(m_srcLogString + "HTTP source rejected. Stream is configured as having moved.");
-
-			m_outBuffer = MSG_STREAMMOVED;
-			bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_STREAMMOVED_LEN));
-			m_state = &protocol_HTTPSource::state_SendBuffer;
-			m_nextState = &protocol_HTTPSource::state_CloseConnection;
-			return;
-		}
-	}
-	else
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Bad Stream ID (" + tos(m_srcStreamID) + "). Stream ID cannot be below 1 or above 2147483647.");
-
-		m_outBuffer = MSG_BADSTREAMID;
-		bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_BADSTREAMID_LEN));
-		m_state = &protocol_HTTPSource::state_SendBuffer;
-		m_nextState = &protocol_HTTPSource::state_CloseConnection;
-	}
-}
-
-protocol_HTTPSource::~protocol_HTTPSource() throw()
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (m_streamData)
-	{
-		streamData::streamSourceLost(m_srcLogString, m_streamData, m_srcStreamID);
-		m_streamData = 0;
-	}
-
-	socketOps::forgetTCPSocket(m_socket);
-	forgetArray(m_remainder);
-
-	if (!m_denied)
-	{
-		ILOG(m_srcLogString + "HTTP source disconnected.");
-	}
-}
-
-void protocol_HTTPSource::state_AnalyzeHeaders() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	int maxHeaderLineCount = gOptions.maxHeaderLineCount();
-	if ((int)m_headers.size() >= maxHeaderLineCount)
-	{
-		m_denied = true;
-		throwEx<runtime_error>(m_srcLogString + "Max header lines exceeded");
-	}
-
-	m_lineBuffer = stripWhitespace(m_lineBuffer);
-	if (m_lineBuffer.empty())
-	{
-		// adjust headers for titleFormat and urlFormat 
-		utf8 titleFormat = gOptions.titleFormat();
-		utf8 urlFormat = gOptions.urlFormat();
-		if (!titleFormat.empty())
-		{
-			utf8::size_type pos = titleFormat.find(utf8("%s"));
-			m_headers["ice-name"] = (pos == utf8::npos ? titleFormat : titleFormat.replace(pos,2,m_headers["ice-name"]));
-		}
-
-		if (!urlFormat.empty())
-		{
-			utf8::size_type pos = urlFormat.find(utf8("%s"));
-			m_headers["ice-url"] = (pos == utf8::npos ? urlFormat : urlFormat.replace(pos,2,m_headers["ice-url"]));
-		}
-
-		// dump headers to log
-		if (gOptions.HTTPSourceDebug())
-		{
-			for (map<utf8,utf8>::const_iterator i = m_headers.begin(); i != m_headers.end(); ++i)
-			{
-				DEBUG_LOG(m_srcLogString + "Source client header [" + (*i).first + ":" + (*i).second + "]");
-			}
-		}
-
-		config::streamConfig stream;
-		const bool found = gOptions.getStreamConfig(stream, m_srcStreamID);
-
-		if (!found && gOptions.requireStreamConfigs())
-		{
-			m_denied = true;
-			throwEx<runtime_error>(m_srcLogString + "HTTP source rejected. Stream " +
-								   tos(m_srcStreamID) + " must be defined in config file");
-		}
-
-		// check that these bitrates are allowed (looking at both max and average values)
-		int streamMaxBitrate = 0, streamMinBitrate = 0;
-		const int bitrate = getStreamBitrate(m_headers) * 1000,
-				  ret = gOptions.isBitrateDisallowed(m_srcStreamID, bitrate, streamMinBitrate, streamMaxBitrate);
-		if (ret)
-		{
-			m_denied = true;
-			utf8 mode = ((streamMaxBitrate == streamMinBitrate) ? "of" : (ret == 2 ? "up to" : "from"));
-			throwEx<runtime_error>(m_srcLogString + "HTTP source rejected. Only bitrates " + mode + " " +
-								   tos((ret == 1 ? streamMinBitrate : streamMaxBitrate) / 1000) +
-								   " kbps are allowed - detected " + tos(bitrate / 1000) + " kbps.");
-		}
-
-		m_streamData = streamData::createStream(streamData::streamSetup(m_srcLogString, m_srcAddr,
-												(found ? stream.m_authHash : ""), m_srcUserID, "",
-												stream.m_backupUrl.url(), streamData::HTTP,
-												m_srcStreamID, m_srcPort, stream.m_maxStreamUser,
-												stream.m_maxStreamBitrate, stream.m_minStreamBitrate,
-												stream.m_allowPublicRelay, false, getStreamSamplerate(m_headers),
-												mapGet(m_headers, "icy-vbr", (bool)false), m_headers));
-		if (!m_streamData)
-		{
-			m_denied = true;
-			ELOG(m_srcLogString + "HTTP source rejected. A source is already connected.");
-			m_outBuffer = MSG_STREAMINUSE;
-			bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_STREAMINUSE_LEN));
-			m_state = &protocol_HTTPSource::state_SendBuffer;
-			m_nextState = &protocol_HTTPSource::state_CloseConnection;
-			m_result.run();
-			return;
-		}
-
-		utf8 sourceIdent = mapGet(m_headers, "user-agent", utf8());
-		m_streamData->updateSourceIdent(sourceIdent);
-
-		m_outBuffer = MSG_HTTP_VALIDPASSWORD;
-		bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_HTTP_VALIDPASSWORD_LEN));
-		m_state = &protocol_HTTPSource::state_SendBuffer;
-		m_nextState = &protocol_HTTPSource::state_GetStreamData;
-		m_result.run();
-	}
-	else
-	{
-		// find the colon that divides header lines into key/value fields
-		utf8::size_type pos = m_lineBuffer.find(utf8(":"));
-		utf8 key = toLower(stripWhitespace(m_lineBuffer.substr(0, pos)));
-		if (pos == utf8::npos)
-		{
-			if (!key.empty() && ((key == "ice-name") || (key == "ice-url")))
-			{
-				// allow through ice-name and ice-url if there is
-				// a titleformat and urlformat to use respectively
-			}
-			else
-			{
-				m_denied = true;
-				throwEx<runtime_error>(m_srcLogString + "HTTP source connection rejected. "
-									   "Bad header string [" + m_lineBuffer + "]");
-			}
-		}
-
-		utf8 value = stripWhitespace(m_lineBuffer.substr(pos+1));
-		if (key.empty() || value.empty())
-		{
-			if (!key.empty() && value.empty())
-			{
-				if (key == "ice-genre")
-				{
-					value = "Misc";
-				}
-				else if (((key == "ice-name") && !gOptions.titleFormat().empty()) ||
-						 ((key == "ice-url") && !gOptions.urlFormat().empty()))
-				{
-					// allow through ice-name and ice-url if there is
-					// a titleformat and urlformat to use respectively
-				}
-				else if (key == "ice-url")
-				{
-					value = "http://www.shoutcast.com";
-				}
-			}
-			else
-			{
-				m_denied = true;
-				throwEx<runtime_error>(m_srcLogString + "HTTP source connection rejected. "
-									   "Bad header string [" + m_lineBuffer + "]");
-			}
-		}
-
-		if (!key.empty())
-		{
-			if (key == "authorization")
-			{
-				if (!value.empty())
-				{
-					utf8 password;
-					vector<utf8> vauth = tokenizer(value, (utf8::value_type)' ');
-					// format " Basic xxxxxxxxx"
-					vector<__uint8> va = base64::decode((vauth.size() < 2 ? "" : vauth[1]).hideAsString().c_str());
-					password.insert(password.end(), va.begin(), va.end());
-
-					utf8::size_type ppos = password.find((utf8)":");
-					if (ppos != utf8::npos)
-					{
-						// we're looking to see if this is an updated 1.x source
-						// which is able to indicate the stream # for the stream
-						// so that we're able to support multiple 1.x sources so
-						// we need to parse the password and extract the parts
-						utf8 m_srcPassword = password;
-						extractPassword(m_srcPassword, m_srcUserID, m_srcStreamID);
-
-						// as we are a v1 source then we must adhere to the master password
-						// instead of using a specific per stream password as in v2 streams
-						// though we also accept connections as sid=1 so check for that too
-						utf8 srcPassword = gOptions.stream_password(m_srcStreamID);
-						if (srcPassword.empty())
-						{
-							srcPassword = gOptions.password();
-						}
-
-						if (m_srcPassword.empty() || (m_srcPassword != srcPassword))
-						{
-							m_denied = true;
-							ELOG(m_srcLogString + "HTTP source connection denied" + (m_srcUserID.empty() ? "" : " for user (" + m_srcUserID + ")") +
-								 ". " + (m_srcPassword.empty() ? "Empty password not allowed." : "Bad password: " + m_srcPassword));
-							m_outBuffer = MSG_INVALIDPASSWORD;
-							bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_INVALIDPASSWORD_LEN));
-							m_state = &protocol_HTTPSource::state_SendBuffer;
-							m_nextState = &protocol_HTTPSource::state_CloseConnection;
-						}
-						else
-						{
-							// if we've got a source already connected and it's not a backup
-							// then it's better that we just abort processing now than later
-							bool isSourceActive = false;
-							streamData *sd = streamData::accessStream(m_srcStreamID, isSourceActive);
-							if (sd && (isSourceActive == true) && (sd->isBackupStream(m_srcStreamID) == false))
-							{
-								m_denied = true;
-								ELOG(m_srcLogString + "HTTP source rejected. A source is already connected.");
-								m_outBuffer = MSG_STREAMINUSE;
-								bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_STREAMINUSE_LEN));
-								m_state = &protocol_HTTPSource::state_SendBuffer;
-								m_nextState = &protocol_HTTPSource::state_CloseConnection;
-								return;
-							}
-							else
-							{
-								ILOG(m_srcLogString + "HTTP source connection starting.");
-							}
-
-							if (sd)
-							{
-								sd->releaseStream();
-							}
-						}
-					}
-					else
-					{
-						// TODO need to send a valid rejection response for this
-						m_denied = true;
-						throwEx<runtime_error>(m_srcLogString + "HTTP source connection rejected. "
-											   "Bad header string [" + m_lineBuffer + "]");
-					}
-
-				}
-				else
-				{
-					m_denied = true;
-					throwEx<runtime_error>(m_srcLogString + "HTTP source connection rejected. "
-										   "Bad header string [" + m_lineBuffer + "]");
-				}
-			}
-		}
-		m_headers[key] = value;
-		m_nextState = &protocol_HTTPSource::state_AnalyzeHeaders;
-		m_state = &protocol_HTTPSource::state_GetLine;
-		m_result.read();
-		m_lineBuffer.clear();
-	}
-}
-
-void protocol_HTTPSource::timeSlice() throw(std::exception)
-{
-	try
-	{
-		if (m_streamData && m_streamData->isDead())
-		{
-			m_result.done();
-			return;
-		}
-		(this->*m_state)();
-	}
-	catch(const exception &)
-	{
-		throw;
-	}
-}
-
-void protocol_HTTPSource::state_SendBuffer() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (sendDataBuffer(m_srcStreamID, m_outBuffer, m_outBufferSize, m_srcLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_HTTPSource::state_GetLine() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (getHTTPStyleHeaderLine(m_srcStreamID, m_lineBuffer, m_srcLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_HTTPSource::state_GetStreamData() throw(exception)
-{
-	time_t cur_time;
-
-    try
-    {
-        const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_srcStreamID, (m_srcLogString + "Timeout waiting for stream data"));
-
-        int bitrate = m_streamData->streamBitrate();
-        const int type = m_streamData->streamUvoxDataType();
-        while (true)
-        {
-            char buf[BUF_SIZE * 4] = {0};
-            int amt = (BUF_SIZE - 1);
-
-            // if we had anything left over then now we
-            // need to copy it back into the buffer and
-            // adjust the max data amount to be read in
-            if ((m_remainderSize > 0) && ((amt + m_remainderSize) <= (BUF_SIZE * 4)))
-            {
-                memcpy(buf, m_remainder, m_remainderSize);
-            }
-            else
-            {
-                m_remainderSize = 0;
-            }
-
-            // adjust the position in the buffer based on the prior
-            // state of the remaining data as part of frame syncing
-            int rval = 0;
-            if ((rval = recv (&buf[m_remainderSize], (BUF_SIZE - 1), 0x0)) < 1)
-            {
-                if (rval < 0)
-                {
-                    rval = socketOps::errCode();
-                    if (rval == SOCKETOPS_WOULDBLOCK)
-                    {
-                        m_result.schedule (80);
-                        m_result.read();
-                        m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-                        return;
-                    }
-                    WLOG (m_srcLogString + "Socket error while waiting for data. " + socketErrString(rval), LOGNAME, m_srcStreamID);
-                }
-                else
-                    DLOG (m_srcLogString + "Remote socket closed while waiting for data.", LOGNAME, m_srcStreamID);
-                throwEx<runtime_error> ("");
-            }
-
-            // update these details before we mess with anything
-            bandWidth::updateAmount(bandWidth::SOURCE_V1_RECV, rval);
-
-            // if we're here then we account for what we already had in the total
-            // so that we then don't skip the new data read with the original data
-            rval += m_remainderSize;
-            m_remainderSize = 0;
-            amt = rval;
-
-            if (m_streamData->syncToStream(m_remainderSize, m_remainder, amt, bitrate,
-                        type, buf, m_srcLogString))
-            {
-                m_denied = true;
-                throwEx<runtime_error>(m_srcLogString + "HTTP source disconnected. "
-                        "Unable to sync to the stream. Please check the "
-                        "source is valid and in a supported format.");
-            }
-
-            m_lastActivityTime = ::time(NULL);
-        }
-    }
-    catch (exception &e)
-    {
-        // if there was a failure, now see if we have a backup and attempt to run
-        // before we remove the current handling of the dropped source connection
-        vector<config::streamConfig> backupInfo = gOptions.getBackupUrl(m_srcStreamID);
-        if (!backupInfo.empty() && !m_denied)
-        {
-            m_denied = true;
-            if (m_streamData)
-            {
-                m_streamData->clearCachedMetadata();
-                streamData::streamSourceLost(m_srcLogString, m_streamData, m_srcStreamID);
-                m_streamData = 0;
-            }
-#ifdef INCLUDE_BACKUP_STREAMS
-            ILOG (m_srcLogString + "HTTP source disconnected - trying source backup.");
-            threadedRunner::scheduleRunnable (new protocol_backup(backupInfo[0], getStreamBitrate(m_headers),
-                        fixMimeType(m_headers["content-type"])));
-#endif
-        }
-        throw;
-    }
-}
-
-void protocol_HTTPSource::state_CloseConnection() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	m_result.done();
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_HTTPSource.h b/Src/Plugins/DSP/sc_serv3/protocol_HTTPSource.h
deleted file mode 100644
index 82fe7256..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_HTTPSource.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#pragma once
-#ifndef protocol_HTTPSource_H_
-#define protocol_HTTPSource_H_
-
-#include "threadedRunner.h"
-#include <map>
-
-class streamData;
-
-/*
-	Runnable object that handles the shoutcast source (broadcaster)
-	protocol
-*/
-
-class protocol_HTTPSource : public runnable
-{
-private:
-	const u_short			m_srcPort;
-	short unsigned int		m_remainderSize;
-	bool					m_denied;	// used to prevent source disconnected messages e.g. for failed passwords
-	// is a padding hole around here...
-	__uint8 *				m_remainder;
-	const uniString::utf8	m_srcAddr;
-	uniString::utf8			m_srcLogString;
-	uniString::utf8			m_srcUserID;
-	int						m_srcStreamID;
-	int						m_outBufferSize;
-	const uniString::utf8::value_type	*m_outBuffer; // for outgoing text lines
-	uniString::utf8			m_lineBuffer;	// received ICY header line
-	httpHeaderMap_t			m_headers;		// the received source headers
-	streamData				*m_streamData;	// associated stream object
-
-	typedef void (protocol_HTTPSource::*state_t)();
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	void state_ConfirmPassword() throw(std::exception);
-	void state_SendBuffer() throw(std::exception);
-	void state_GetLine() throw(std::exception);
-	void state_AnalyzeHeaders() throw(std::exception);
-	void state_CloseConnection() throw(std::exception);
-	void state_GetStreamData() throw(std::exception);
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_HTTPSource"; }
-
-public:
-	protocol_HTTPSource (microConnection &mc, const string &firstLine) throw(std::exception);
-
-	virtual ~protocol_HTTPSource() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.cpp b/Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.cpp
deleted file mode 100644
index 23d7219f..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.cpp
+++ /dev/null
@@ -1,4808 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_HTTPStyle.h"
-#include "protocol_shoutcast1Client.h"
-#include "protocol_shoutcast2Client.h"
-#include "protocol_HTTPClient.h"
-#include "protocol_flvClient.h"
-#include "protocol_m4aClient.h"
-#include "protocol_admincgi.h"
-#include "base64.h"
-#include "banList.h"
-#include "ripList.h"
-#include "adminList.h"
-#include "webNet/urlUtils.h"
-#include "file/fileUtils.h"
-#include "aolxml/aolxml.h"
-#include "services/stdServiceImpl.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "updater.h"
-#include "metadata.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define HEAD_REQUEST (m_httpRequestInfo.m_request == HTTP_HEAD)
-
-size_t gFF_fix = 0;
-
-CacheMap_t m_xmlStatsCache, m_xmlStatisticsCache, m_jsonStatsCache,
-		   m_jsonStatisticsCache, m_7Cache, m_PLSCache, m_M3UCache,
-		   m_ASXCache, m_QTLCache, m_XSPFCache, m_xmlTracksCache,
-		   m_xmlMetadataCache, m_jsonMetadataCache, m_jsonTracksCache,
-		   m_xmlPlayedCache, m_jsonPlayedCache, m_htmlPlayedCache,
-		   m_streamArtCache, m_playingArtCache, m_crossdomainCache;
-
-AOL_namespace::mutex m_xmlStatsLock, m_xmlStatisticsLock, m_jsonStatsLock,
-					 m_jsonStatisticsLock, m_7Lock, m_PLSLock, m_M3ULock,
-					 m_ASXLock, m_QTLLock, m_XSPFLock, m_xmlTracksLock,
-					 m_xmlMetadataLock, m_jsonMetadataLock, m_jsonTracksLock,
-					 m_xmlPlayedLock, m_jsonPlayedLock, m_htmlPlayedLock,
-					 m_streamArtLock, m_playingArtLock, m_crossdomainLock;
-
-#ifdef _WIN32
-typedef unsigned long in_addr_t;
-#endif
-
-const utf8 getStreamHeader(const streamData::streamID_t sid, const utf8& headerTitle)
-{
-	return "<!DOCTYPE html><html><head><meta charset=\"utf-8\">"
-		   "<meta name=viewport content=\"width=device-width, initial-scale=1\">"
-		   "<title>Shoutcast Server</title>"
-		   "<link href=\"index.css\" rel=\"stylesheet\" type=\"text/css\">"
-		   "<link href=\"images/favicon.ico\" rel=\"shortcut icon\" type=\"" +
-		   gOptions.faviconFileMimeType() + "\"></head><body style=\"margin:0;\">"
-		   "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>"
-		   "<td><div style=\"float:left;clear:both;\" class=\"logo\">Shoutcast " +
-		   headerTitle + "</div></td><td style=\"text-align:right;vertical-align:bottom;padding-right:0.1em;\">"
-		   "<a target=\"_blank\" title=\"Built: " __DATE__ "\" href=\"http://www.shoutcast.com\">"
-		   "Shoutcast Server v" + addWBR(gOptions.getVersionBuildStrings() + "/" SERV_OSNAME) +
-		   "</a></td></tr><tr><td class=\"thr\" align=\"center\" colspan=\"2\">"
-		   "<div id=\"hdrbox\" class=\"tnl\" style=\"justify-content:space-around;display:flex;"
-		   "flex-flow:row wrap;\"><div class=\"thr\"><a href=\"index.html?sid=" + tos(sid) +
-		   "\">Status</a></div><div class=\"thr\">&nbsp;|&nbsp;</div>";
-}
-
-const utf8 getStreamMiddlePlayingHeader(const streamData::streamID_t sid)
-{
-	return "<div class=\"thr\"><a href=\"played.html?sid=" + tos(sid) +
-		   "\">History <img border=\"0\" title=\"History\" "
-		   "alt=\"History\" style=\"vertical-align:middle\" "
-		   "src=\"images/history.png\"></a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>";
-}
-
-const utf8 getStreamMiddleListenHeader(const streamData::streamID_t sid)
-{
-	return "<div class=\"thr\"><a href=\"listen.pls?sid=" + tos(sid) +
-		   "\">Listen <img border=\"0\" title=\"Listen to Stream\" "
-		   "alt=\"Listen to Stream\" style=\"vertical-align:middle\" "
-		   "src=\"images/listen.png\"></a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>";
-}
-
-const utf8 getStreamEndHeader(const streamData::streamID_t sid)
-{
-	return "<div class=\"thr\"><a target=\"_blank\" href=\"home.html?sid=" +
-		   tos(sid) + "\">Website</a></div><div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?sid=" + tos(sid) +
-		   "\">Stream Login&nbsp;<img border=\"0\" title=\"Stream Login\nPassword Required\" "
-		   "alt=\"Stream Login\nPassword Required\" style=\"vertical-align:middle\" "
-		   "src=\"images/lock.png\"></a></div><div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi\">Server Login&nbsp;"
-		   "<img border=\"0\" title=\"Server Login\nPassword Required\" "
-		   "alt=\"Server Login\nPassword Required\" style=\"vertical-align:middle\" "
-		   "src=\"images/lock.png\"></a></div></div></td></tr></table>";
-}
-
-const bool getHideState(const streamData::streamID_t sid)
-{
-	const utf8 &hideStats = gOptions.getStreamHideStats(sid);
-	if (!hideStats.empty())
-	{
-		return ((hideStats == "stats" || hideStats == "all")) && !(hideStats == "none");
-	}
-	return false;
-}
-
-#define DEBUG_LOG(...)      do { if (gOptions.httpStyleDebug()) DLOG(__VA_ARGS__); } while (0)
-#define LOGNAME "[HTTPSTYLE] "
-
-#define COMPRESS(header, body) if (m_compressed && compressData(body)) header += "Content-Encoding:gzip\r\n"
-
-const utf8 getNewVersionMessage(const utf8& ending)
-{
-	utf8 body = "";
-	// display update message where applicable
-	updater::verInfo ver;
-	if (updater::getNewVersion(ver))
-	{
-		body += "<table cellspacing=\"0\" cellpadding=\"5\" align=\"center\"><tr><td align=\"center\" class=\"infb\">"
-				"<div align=\"center\" class=\"infh\"><b>New DNAS Version Available: " + ver.ver + "</b></div>"
-				"Please <a href=\"admin.cgi\"><b>login</b></a> or see <a target=\"_blank\" href=\"" +
-				aolxml::escapeXML(ver.log) + "\"><b>here</b></a> to find out more about the new DNAS version."
-				+ (!ver.slimmsg.empty() ? "<br><br>" + ver.slimmsg : "") + "</tr></table>" + ending;
-	}
-	return body;
-}
-
-const utf8 getStreamPath(const size_t sid, const bool for_public)
-{
-	utf8 streamPath;
-	config::streamConfig stream;
-	if (gOptions.getStreamConfig(stream, sid))
-	{
-		// if not empty then set to the value otherwise leave as /stream/<sid>
-		if (!stream.m_urlPath.empty())
-		{
-			// but ensure that a / is on the front if not manually specified
-			if (stream.m_urlPath[0] == '/')
-			{
-				streamPath = stream.m_urlPath;
-			}
-			else
-			{
-				streamPath = "/" + stream.m_urlPath;
-			}
-
-			// this makes sure that if someone sets / or /stream/x/ then
-			// if we're asked for a 'public' url that we append the ';'.
-			if (for_public && (streamPath.rfind((utf8)"/") == streamPath.size() - 1))
-			{
-				streamPath += ";";
-			}
-		}
-	}
-
-	if (streamPath.empty())
-	{
-		if (!sid || (sid == DEFAULT_CLIENT_STREAM_ID))
-		{
-			streamPath = (!for_public ? "/" : "/;");
-		}
-		else
-		{
-			streamPath = "/stream/" + tos(sid) + (!for_public ? "/" : "/;");
-		}
-	}
-
-	return streamPath;
-}
-
-protocol_HTTPStyle::protocol_HTTPStyle (microConnection &mc, const string &firstLine)    throw(exception) :
-        runnable (mc), m_clientPort(mc.m_srcPort), m_clientHostName(mc.m_srcHostName), m_clientAddr(mc.m_srcAddress), m_clientLogString(dstAddrLogString(mc.m_srcHostName,mc.m_srcPort))
-{
-    m_protocols = mc.m_protocols;
-    m_outBufferSize = 0;
-    m_outBuffer = NULL;
-    m_postRequest = 0;
-    m_compressed = 0;
-    m_postRequestLength = 0;
-    m_state = &protocol_HTTPStyle::state_GetLine;
-    m_nextState = &protocol_HTTPStyle::state_AnalyzeHTTPHeaders;
-
-	// Parse the first line of the HTTP transaction into it's components
-	// (GET/POST etc, url, query etc.) and now is done first so we can
-	// abort the request asap if getting bad data instead of waiting to
-	// process the headers and then look at the actual HTTP request...
-	string request, url, protocolAndVersion;
-	const int state = getHTTPRequestDetails(firstLine, request, url, protocolAndVersion);
-	if (!request.empty())
-	{
-		if (request == "GET")
-		{
-			m_httpRequestInfo.m_request = HTTP_GET;
-		}
-		else if (request == "POST")
-		{
-			m_httpRequestInfo.m_request = HTTP_POST;
-			m_postRequest = 1;
-		}
-		else if (request == "HEAD")
-		{
-			m_httpRequestInfo.m_request = HTTP_HEAD;
-		}
-		else
-		{
-			ELOG(m_clientLogString + "Badly formed HTTP request [" + firstLine + "]");
-			sendMessageAndClose(MSG_HTTP405);
-			return;
-		}
-	}
-	else
-	{
-		ELOG(m_clientLogString + "Badly formed HTTP request [" + firstLine + "]");
-		sendMessageAndClose(MSG_HTTP405);
-		return;
-	}
-
-	if ((m_httpRequestInfo.m_request == HTTP_UNKNOWN) ||
-		(state != 3) || url.empty() || protocolAndVersion.empty() ||
-		(protocolAndVersion.find("/") == string::npos))
-	{
-		ELOG(m_clientLogString + "Badly formed HTTP request [" + firstLine + "]");
-		sendMessageAndClose(MSG_HTTP400);
-		return;
-	}
-
-	// check for query data and finish up url
-	string::size_type pos = url.find("?");
-	m_httpRequestInfo.m_url = urlUtils::unescapeString(url.substr(0, pos));
-
-	// provide a stripped version to speed up some of the checks
-	const utf8::size_type upos = m_httpRequestInfo.m_url.find(utf8("/"));
-	m_url = (((upos == 0) && m_httpRequestInfo.m_url.size() > 1) ?
-			 m_httpRequestInfo.m_url.substr(upos + 1) : m_httpRequestInfo.m_url);
-
-	// this is so we can do Icecast title updates which use
-	// a different path but will do a ?mode=updinfo request
-	if (m_url == "admin/metadata")
-	{
-		m_url = "admin.cgi";
-	}
-
-	string queryData = "";
-	if (pos != string::npos)
-	{
-		queryData = url.substr(pos+1);
-		const vector<string> queryTokens = tokenizer(queryData,'&');
-		utf8 lastToken;
-		for (vector<string>::const_iterator i = queryTokens.begin(); i != queryTokens.end(); ++i)
-		{
-			// this is for a specific case when we get xml titles
-			// and we need it to preserve the data instead of it
-			// tokenising and leaving broken xml for &amp; cases
-			if (!lastToken.empty() && ((*i).find("amp;") == 0))
-			{
-				m_httpRequestInfo.m_QueryParameters[lastToken] = m_httpRequestInfo.m_QueryParameters[lastToken] +
-																 "&" + urlUtils::unescapeString((*i));
-				// we don't want to process like normal so skip
-				continue;
-			}
-			pos = (*i).find("=");
-			if (pos == string::npos)
-			{
-				m_httpRequestInfo.m_QueryParameters[(lastToken = urlUtils::unescapeString(*i))] = "";
-			}
-			else
-			{
-				m_httpRequestInfo.m_QueryParameters[(lastToken = urlUtils::unescapeString((*i).substr(0, pos)))] = 
-													urlUtils::unescapeString((*i).substr(pos + 1));
-			}
-		}
-	}
-
-	if (gOptions.httpStyleDebug())
-	{
-		DLOG(m_clientLogString + "HTTP Request [" + (m_httpRequestInfo.m_request == HTTP_GET ? "GET" :
-													(m_httpRequestInfo.m_request == HTTP_POST ? "POST" :
-													(HEAD_REQUEST ? "HEAD" : "UNKNOWN"))) + "]");
-		DLOG(m_clientLogString + "HTTP Url [" + m_url + "]");
-		if (!queryData.empty()) DLOG(m_clientLogString + "HTTP Query [" + queryData + "]");
-		pos = protocolAndVersion.find("/");
-		DLOG(m_clientLogString + "HTTP Protocol [" + protocolAndVersion.substr(0, pos) + "]");
-		DLOG(m_clientLogString + "HTTP Version [" + protocolAndVersion.substr(pos + 1) + "]");
-	}
-}
-
-protocol_HTTPStyle::~protocol_HTTPStyle() throw()
-{
-	socketOps::forgetTCPSocket(m_socket);
-}
-
-void protocol_HTTPStyle::timeSlice() throw(std::exception)
-{
-	(this->*m_state)();
-}
-
-void protocol_HTTPStyle::getPNGImage(const uniString::utf8 &png) throw()
-{
-	const utf8 &modified = mapGet(m_httpRequestInfo.m_HTTPHeaders, utf8("if-modified-since"),utf8("0"));
-	const time_t curTime = ::time(NULL),
-				 readTime = readRFCDate(modified),
-				 diffTime = (curTime - readTime);
-
-	// check if we need to provide a copy or if we can just do a '304 Not Modified' response
-	if (!readTime || (diffTime > g_upTime) || (diffTime > 31536000))
-	{
-		utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:image/png\r\n"
-					  "Access-Control-Allow-Origin:*\r\n"
-					  "Cache-Control:private,max-age=31536000\r\n"
-					  "Expires:" + getRFCDate(curTime + 31536000) + "\r\n"
-					  "Last-Modified:" + getRFCDate(g_upTime) + "\r\n"
-					  "Content-Length:" + tos(png.size()) + "\r\n\r\n";
-		sendMessageAndClose(header + (!HEAD_REQUEST ? png : ""));
-	}
-	else
-	{
-		sendMessageAndClose("HTTP/1.0 304 Not Modified\r\n\r\n");
-	}
-}
-
-const utf8 protocol_HTTPStyle::getClientIP(const bool streamPublic, const utf8 &publicIP) throw()
-{
-	// test for potentially invalid IPs or ones that will cause the playlist link generation to fail
-	// attempting to use the server path provided by the YP if in public mode, otherwise uses 'host'
-	DEBUG_LOG(m_clientLogString + "streamPublic: " + tos(streamPublic) + " " +
-			  "publicIP: " + publicIP + " " + "hostIP: " + m_hostIP + " " +
-			  "clientAddr: " + g_IPAddressForClients);
-	return (!streamPublic || publicIP.empty() ?
-			((g_IPAddressForClients.find(utf8("0.")) == 0 ||
-			 // allow localhost / loopback connections through for admin access
-			 ((!g_IPAddressForClients.empty() && g_IPAddressForClients.find(utf8("127.")) == 0)) ||
-			  g_IPAddressForClients.empty()) && !m_hostIP.empty() ?
-			  m_hostIP : (!m_hostIP.empty() ? m_hostIP : g_IPAddressForClients)) : publicIP);
-}
-
-const bool isCDNMaster(const streamData::streamID_t sid)
-{
-	if (!gOptions.cdn().empty())
-	{
-		// check if opt-in or opt-out
-		bool isCDN = (gOptions.cdn() == "always" || gOptions.cdn() == "master");
-		// then if manually specifed, we override
-		if (gOptions.read_cdn_master(sid))
-		{
-			const int master = gOptions.cdn_master(sid);
-			if (master != -1)
-			{
-				isCDN = (!!master);
-			}
-		}
-		return isCDN;
-	}
-	return false;
-}
-
-const bool isCDNSlave(const streamData::streamID_t sid)
-{
-	if (!gOptions.cdn().empty())
-	{
-		// check if opt-in or opt-out
-		// for 'master' we run opt-in
-		bool isCDN = (gOptions.cdn() == "always");
-		// then if manually specifed, we override
-		if (gOptions.read_cdn_slave(sid))
-		{
-			const int slave = gOptions.cdn_slave(sid);
-			if (slave != -1)
-			{
-				isCDN = (!!slave);
-			}
-		}
-		return isCDN;
-	}
-	return false;
-}
-
-const bool protocol_HTTPStyle::isAdminAccessAllowed(const uniString::utf8 &hostIP, const uniString::utf8 &hostName) throw()
-{
-	int inAdminIp = g_adminList.find(hostIP),
-					inAdminName = inAdminIp;
-
-	DEBUG_LOG(m_clientLogString + "Pre-check admin access - hostIP: " +
-			  hostIP + ", hostName: " + hostName + ", " + "inAdminIp: " +
-			  tos(inAdminIp) + ", inAdminName: " + tos(inAdminName));
-
-	// 1 if found, 0 if not, -1 if empty (assume allowed)
-	if (inAdminIp == -1)
-	{
-		// abort and just pass through if there's no list
-		return true;
-	}
-
-	// in a lot of cases it will work out that
-	// hostIP and hostName are set as the same
-	// so only try if there is a difference...
-	if (!hostName.empty() && (hostIP != hostName))
-	{
-		inAdminName = g_adminList.find(hostName);
-	}
-
-	DEBUG_LOG(m_clientLogString + "Checking admin access - hostIP: " +
-			  hostIP + ", hostName: " + hostName + ", " + "inAdminIp: " +
-			  tos(inAdminIp) + ", inAdminName: " + tos(inAdminName));
-
-	// if either check matches then we will allow the
-	// request as the host might map to an allowed IP
-	// etc. is only if both don't match then we block
-	return (inAdminIp || inAdminName);
-}
-
-const bool protocol_HTTPStyle::isAccessAllowed(const streamData::streamID_t sid, const utf8 &hostAddr = "",
-											   const bool showOutput = false) throw()
-{
-	if (isUserAgentOfficial(m_userAgentLowered))
-	{
-		return true;
-	}
-
-	const utf8& addr = (hostAddr.empty() ? m_clientAddr : hostAddr);
-	const bool inBan = g_banList.find(addr,((gOptions.read_stream_banFile(sid) && !gOptions.stream_banFile(sid).empty()) ? sid : 0));
-	const bool inRip = g_ripList.find(addr,((gOptions.read_stream_ripFile(sid) && !gOptions.stream_ripFile(sid).empty()) ? sid : 0));
-	const bool isCDN = isCDNMaster(sid);
-	bool ripOnly = (isCDN ? true : gOptions.stream_ripOnly(sid));
-
-	if (!gOptions.read_stream_ripOnly(sid))
-	{
-		ripOnly = (isCDN ? true : gOptions.ripOnly());
-	}
-
-	if (gOptions.httpStyleDebug())
-	{
-		string host = m_clientAddr.hideAsString();
-		if (gOptions.nameLookups())
-		{
-			host = m_clientAddr.hideAsString();
-			string addr = host;
-			u_short port = 0;
-			socketOps::getpeername(this->m_socket, addr, port);
-
-			if (socketOps::addressToHostName(addr, port, host))
-			{
-				host = addr;
-			}
-
-			DEBUG_LOG(m_clientLogString + "Checking access rights - addr: " + addr + ", " +
-					  "host: " + host + ", " + "inBan: " + tos(inBan) + ", " + "inRip: " +
-					  tos(inRip) + ", " + "isCDN: " + tos(isCDN) + ", " + "ripOnly: " + tos(ripOnly));
-		}
-		else
-		{
-			DEBUG_LOG(m_clientLogString + "Checking access rights - addr: " + addr + ", " +
-					  "inBan: " + tos(inBan) + ", " + "inRip: " + tos(inRip) + ", " +
-					  "isCDN: " + tos(isCDN) + ", " + "ripOnly: " + tos(ripOnly));
-		}
-	}
-
-	// check here if we're ok to try to provide the stream to the client or not
-	bool allowed = true;
-	if ((ripOnly || inBan) && (!inRip))
-	{
-		allowed = false;
-		if (ripOnly)
-		{
-			// allow localhost / loopback connections through for admin access
-			if (!m_clientAddr.empty() && m_clientAddr.find(utf8("127.")) == 0)
-			{
-				allowed = true;
-			}
-			else
-			{
-				if (showOutput)
-				{
-					if (gOptions.nameLookups())
-					{
-						string hostName = m_clientAddr.hideAsString();
-						string addr = hostName;
-						u_short port = 0;
-						socketOps::getpeername(this->m_socket, addr, port);
-
-						if (socketOps::addressToHostName(addr, port, hostName))
-						{
-							hostName = addr;
-						}
-
-						if (hostName != addr)
-						{
-							WLOG("[" + hostName + " (" + m_clientAddr + ") sid=" + tos(sid) + "] Host not in reserved list - disconnecting.");
-						}
-						else
-						{
-							WLOG("[" + m_clientAddr + " sid=" + tos(sid) + "] IP not in reserved list - disconnecting.");
-						}
-					}
-					else
-					{
-						WLOG("[" + m_clientAddr + " sid=" + tos(sid) + "] IP not in reserved list - disconnecting.");
-					}
-
-					m_result.schedule(1000);
-				}
-			}
-		}
-		else
-		{
-			// allow loopback address through for admin access
-			if (!m_clientAddr.empty() && m_clientAddr.find(utf8("127.")) == 0)
-			{
-				allowed = true;
-			}
-			else
-			{
-				utf8::size_type pos;
-				if (!m_referer.empty() && (pos = m_referer.rfind(utf8("/admin.cgi"))) != utf8::npos)
-				{
-					allowed = true;
-				}
-
-				if (showOutput && !(m_url == "index.css"))
-				{
-					allowed = false;
-					if (gOptions.nameLookups())
-					{
-						string hostName = m_clientAddr.hideAsString();
-						string addr = hostName;
-						u_short port = 0;
-						socketOps::getpeername(this->m_socket, addr, port);
-
-						if (socketOps::addressToHostName(addr, port, hostName))
-						{
-							hostName = addr;
-						}
-
-						if (hostName != addr)
-						{
-							ILOG("[" + hostName + " (" + m_clientAddr + ") sid=" + tos(sid) + "] Host in banned list - disconnecting.");
-						}
-						else
-						{
-							ILOG("[" + m_clientAddr + " sid=" + tos(sid) + "] IP in banned list - disconnecting.");
-						}
-					}
-					else
-					{
-						ILOG("[" + m_clientAddr + " sid=" + tos(sid) + "] IP in banned list - disconnecting.");
-					}
-					
-					m_result.schedule(1000);
-				}
-			}
-		}
-	}
-	return allowed;
-}
-
-const bool protocol_HTTPStyle::isViewingAllowed(const streamData::streamID_t sid, const utf8 &password,
-												const bool no_stream, bool &adminOverride,
-												const bool hide, bool &passworded) throw()
-{
-	adminOverride = false;
-	// when the hidestats option is enabled, still need to allow it on the admin page
-	if (m_referer.rfind(utf8("/admin.cgi")) != utf8::npos)
-	{
-		adminOverride = true;
-	}
-
-	// do a password check if we've got a hidden page or if a password param is present
-	bool proceed = false;
-
-	if ((hide == true) || (passworded == true))
-	{
-		passworded = false;
-		if (!password.empty())
-		{
-			utf8 streamPassword;
-			if (!no_stream)
-			{
-				streamPassword = gOptions.stream_password(sid);
-				if (!gOptions.read_stream_password(sid) && streamPassword.empty())
-				{
-					streamPassword = gOptions.password();
-				}
-			}
-
-			utf8 streamAdminPassword = gOptions.stream_adminPassword(sid);
-			if (!gOptions.read_stream_adminPassword(sid) && streamAdminPassword.empty())
-			{
-				streamAdminPassword = gOptions.adminPassword();
-			}
-
-			passworded = ((!streamPassword.empty() && (password == streamPassword)) ||
-						  (!streamAdminPassword.empty() && (password == streamAdminPassword)));
-
-			if (hide)
-			{
-				proceed = passworded;
-			}
-		}
-	}
-
-	return proceed;
-}
-
-const bool protocol_HTTPStyle::findBaseStream(bool& no_sid, streamData::streamID_t& sid)
-{
-	// if no sid is specified, attempt to match to the only stream (v1 like behaviour)
-	// before just attempting to provide the results for the default stream id (sid=1)
-	if (no_sid)
-	{
-		bool htmlPage = false;
-		streamData::streamID_t found_sid = streamData::getStreamIdFromPath(m_httpRequestInfo.m_url, htmlPage);
-		if (found_sid > 0)
-		{
-			sid = found_sid;
-			no_sid = false;
-		}
-
-		streamData::streamID_t lastSID = 0;
-		if (!found_sid && streamData::totalActiveStreams(lastSID) == (streamData::streamID_t)DEFAULT_CLIENT_STREAM_ID)
-		{
-			sid = lastSID;
-			return true;
-		}
-	}
-	return false;
-}
-
-const bool protocol_HTTPStyle::getCachedResponse(cacheItem *item, AOL_namespace::mutex &lock, const int limit)
-{
-	utf8 response;
-	if (GetFromCache(item, lock, m_lastActivityTime, !!m_compressed, HEAD_REQUEST, response, limit))
-	{
-		sendMessageAndClose(response);
-		return true;
-	}
-	return false;
-}
-
-void protocol_HTTPStyle::sendCachedResponse(cacheItem *item, CacheMap_t &cache, AOL_namespace::mutex &lock,
-											uniString::utf8 &header, uniString::utf8 &body,
-											const streamData::streamID_t sid,
-											const bool jsonp, const bool noCompress)
-{
-	if (sid && !noCompress)
-	{
-		COMPRESS(header, body);
-	}
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-
-	const utf8 &response = (header + body);
-	if (!jsonp)
-	{
-		// if a callback is specified then is best to not cache
-		AddorUpdateCache(item, m_lastActivityTime, !!m_compressed,
-						 header, response, cache, lock, sid);
-	}
-	sendMessageAndClose((!HEAD_REQUEST ? response : header));
-}
-
-// look at the HTTP intro line and headers and decide what to do next		
-void protocol_HTTPStyle::state_DetermineAction() throw(exception)
-{
-	utf8 relayHostIP, relayHostName, XFF;
-
-	// figure out what to do next based on HTTP intro line and headers
-	// dump http headers to log
-	for (map<utf8,utf8>::const_iterator i = m_httpRequestInfo.m_HTTPHeaders.begin(); i != m_httpRequestInfo.m_HTTPHeaders.end(); ++i)
-	{
-		DEBUG_LOG(m_clientLogString + "HTTP Header [" + (*i).first + ":" + (*i).second + "]");
-		// grab the ip used for accessing to determine
-		// the ip to return in the listen action when
-		// destip has not been specified or is invalid
-		if ((*i).first == "host")
-		{
-			m_hostIP = (*i).second;
-			if (!m_hostIP.empty())
-			{
-				// strip off the port from the ip though
-				// could just use it but want to ensure
-				// the correct port is used for it all
-				utf8::size_type pos = utf8::npos;
-				if ((pos = m_hostIP.find(utf8(":"))) != utf8::npos)
-				{
-					m_hostIP.resize(pos);
-				}
-			}
-		}
-
-		// used specificially with the fire buuilds to be able to work around
-		// issues with the VIPs and what is checked against the reserved list
-		// -this gets the IP and also will resolve the hostname as applicable
-		else if ((*i).first == "icy-host")
-		{
-			relayHostIP = (*i).second;
-			if (gOptions.nameLookups())
-			{
-				u_short port = 0;
-				string addr, hostName;
-				socketOps::getpeername(m_socket, addr, port);
-				hostName = relayHostIP.hideAsString();
-				if (socketOps::addressToHostName(addr, port, hostName))
-				{
-					hostName = relayHostIP.hideAsString();
-				}
-				relayHostName = hostName;
-			}
-		}
-
-		else if ((*i).first == "x-forwarded-for")
-		{
-			//utf8 blah = "129.78.138.66";//", 129.78.64.103";
-			// this can be in the format of client
-			// or client, proxy1, proxy2, etc. and
-			// it can be open to spoofing so we'll
-			// see what complaints that will arise
-			if (!(*i).second.empty())
-			{
-				utf8::size_type pos = utf8::npos;
-				if ((pos = (*i).second.find(utf8(","))) != utf8::npos)
-				{
-					utf8 tempAddr = (*i).second.substr(0, pos);
-					if (!tempAddr.empty())
-					{
-						tempAddr = stripWhitespace(tempAddr);
-						in_addr_t ip =  inet_addr((const char *)tempAddr.c_str());
-						if (ip != INADDR_NONE)
-						{
-							XFF = tempAddr;
-						}
-					}
-				}
-				else
-				{
-					utf8 tempAddr = stripWhitespace((*i).second);
-					if (!tempAddr.empty())
-					{
-						in_addr_t ip =  inet_addr((const char *)tempAddr.c_str());
-						if (ip != INADDR_NONE)
-						{
-							XFF = tempAddr;
-						}
-					}
-				}
-			}
-		}
-
-		else if ((*i).first == "referer")
-		{
-			m_referer = (*i).second;
-		}
-
-		else if ((*i).first == "accept-encoding")
-		{
-			utf8 encoding = (*i).second;
-			if (!encoding.empty())
-			{
-				vector<utf8> encodingTokens = tokenizer(stripWhitespace(encoding), ',');
-				for (vector<utf8>::const_iterator i = encodingTokens.begin(); i != encodingTokens.end(); ++i)
-				{
-					utf8 value = stripWhitespace(*i);
-					if (value == "gzip")
-					{
-						m_httpRequestInfo.m_AcceptEncoding |= ACCEPT_GZIP;
-						m_compressed = 1;
-					}
-					else if (value == "deflate")
-					{
-						m_httpRequestInfo.m_AcceptEncoding |= ACCEPT_DEFLATE;
-					}
-				}
-			}
-		}
-	}
-
-	// attempt to work out the streamid to use, keeping a track of things, etc
-	//
-	// for b195+ we recognise the sid from the password if
-	// its not provided as a specific parameter on the url
-	streamData::streamID_t sid = mapGet(m_httpRequestInfo.m_QueryParameters, "sid", -1), realSID = sid;
-	// with means in b72+ to do this based on the streampath instead of by sid
-	utf8 sp = mapGet(m_httpRequestInfo.m_QueryParameters, "sp", (utf8)"");
-	bool hasMount = false;
-	if (sp.empty())
-	{
-		// this allows us to support icecast based title updates and on
-		// reflection would have been the better naming to use vs 'sp'.
-		sp = mapGet(m_httpRequestInfo.m_QueryParameters, "mount", (utf8)"");
-		hasMount = !sp.empty();
-	}
-	if (!sp.empty())
-	{
-		bool htmlPage = false;
-		// make sure there is a / on the front so that we're
-		// going to be able to search for a match correctly.
-		if (sp.find(utf8("/")) != 0)
-		{
-			sp = "/" + sp;
-		}
-		streamData::streamID_t found_sid = streamData::getStreamIdFromPath(sp, htmlPage);
-		if (found_sid > 0)
-		{
-			realSID = sid = found_sid;
-		}
-	}
-
-	bool no_sid = ((int)sid <= 0);
-	// check that we've got a valid sid, otherwise force assume it's sid=1 i.e. helps for just /listen.pls
-	sid = ((sid >= DEFAULT_CLIENT_STREAM_ID) && !(no_sid && ((int)sid <= -1)) ? sid : DEFAULT_CLIENT_STREAM_ID);
-
-	// this will better handle user agents which could have high bit code points
-	// so we attempt to convert the string to a hopefully valid utf8 encoded string
-	string agent = string(mapGet(m_httpRequestInfo.m_HTTPHeaders, "user-agent", (utf8)"").toANSI());
-	m_userAgentLowered = toLower((m_userAgent = asciiToUtf8(agent)));
-
-	if (isUserAgentRelay(m_userAgentLowered))
-	{
-		bool allowRelay = gOptions.stream_allowRelay(sid);
-		if (!gOptions.read_stream_allowRelay(sid))
-		{
-			allowRelay = gOptions.allowRelay();
-		}
-
-		if (!allowRelay && !(m_url == "admin.cgi"))
-		{
-			ILOG(m_clientLogString + "Relay not allowed: `" + m_userAgent + "'.");
-			sendMessageAndClose(MSG_HTTP403);
-			return;
-		}
-	}
-
-	if ((m_userAgentLowered.find(utf8("rip")) != utf8::npos) ||
-		(m_userAgentLowered.find(utf8("copy")) != utf8::npos))
-	{
-		if (!(m_url == "admin.cgi"))
-		{
-			ILOG(m_clientLogString + "Stream savers not allowed.");
-			sendMessageAndClose(MSG_HTTP403);
-			return;
-		}
-	}
-
-	utf8::size_type ipos = m_url.find(utf8("images/"));
-	if ((ipos == 0) || (m_url == "favicon.ico"))
-	{
-		utf8 url = (ipos == 0 ? m_url.substr(7) : m_url);
-		if (url == "favicon.ico")
-		{
-			const utf8 &modified = mapGet(m_httpRequestInfo.m_HTTPHeaders, utf8("if-modified-since"), utf8("0"));
-			const time_t curTime = ::time(NULL),
-						 readTime = readRFCDate(modified),
-						 diffTime = (curTime - readTime);
-
-			// check if we need to provide a copy or if we can just do a '304 Not Modified' response
-			if (!readTime || (diffTime > gOptions.m_favIconTime) || (diffTime > 31536000))
-			{
-
-				const int g_favIconSize = 1150;
-				const uniString::utf8::value_type g_favIcon[] = {
-					"\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x20\x00\x68\x04"
-					"\x00\x00\x16\x00\x00\x00\x28\x00\x00\x00\x10\x00\x00\x00\x20\x00"
-					"\x00\x00\x01\x00\x20\x00\x00\x00\x00\x00\x40\x04\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x14\x9a\xfd\x2f\x13\x95\xfe\x54\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x18\x98\xfd\x3d\x16\x98\xfd\xff\x15\x97"
-					"\xfd\xab\x11\x95\xfd\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x4c\xba\xfc\x02\x31\xa5\xfc\xa2\x1a\x9a"
-					"\xfd\xff\x16\x99\xfd\xea\x13\x95\xfd\x5a\x07\x7a\xfe\x01\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xb4\xfb\x05\x46\xb2"
-					"\xfc\xb2\x28\xa0\xfb\xff\x16\x98\xfd\xff\x15\x98\xfd\xb0\x11\x93"
-					"\xfd\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\xb5"
-					"\xfd\x09\x4b\xb7\xfd\xbf\x3a\xaa\xfb\xff\x1a\x98\xfc\xff\x16\x98"
-					"\xfd\xed\x14\x98\xfe\x60\x08\x81\xfe\x01\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x98"
-					"\xfd\x21\x1e\x9e\xfd\x82\x41\xb1\xfd\xfa\x49\xb4\xfc\xff\x28\x9e"
-					"\xfa\xff\x16\x97\xfd\xff\x15\x98\xfd\xb6\x10\x95\xfd\x1d\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x98"
-					"\xfd\x48\x16\x98\xfd\xff\x19\x99\xfd\xff\x42\xb0\xfc\xff\x4d\xb7"
-					"\xfc\xff\x3a\xa9\xfa\xff\x1a\x97\xfb\xff\x14\x98\xf9\x8f\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x99"
-					"\xf9\x17\x3a\xa8\xfa\xaf\x3d\xaa\xfa\xfe\x40\xad\xfb\xff\x3d\xac"
-					"\xfb\xff\x4d\xb7\xfc\xff\x49\xb4\xfc\xf6\x24\x97\xf5\x6c\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x4a\xb5\xfd\x48\x4c\xb7\xfc\xd7\x1f\x97"
-					"\xf9\xff\x36\xa7\xfa\xff\x19\x9a\xfd\xc8\x0e\x92\xfe\x0c\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\xac\xfd\x07\x1e\x98"
-					"\xfa\xd6\x4c\xb6\xfc\xf1\x27\x9d\xfa\xff\x15\x97\xfd\xbe\x10\x9a"
-					"\xfd\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x90"
-					"\xfa\x8d\x4a\xb5\xfc\x1b\x4a\xb6\xfc\xa4\x29\xa0\xfb\xfd\x15\x97"
-					"\xfd\xb6\x10\x94\xfd\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x8e"
-					"\xf9\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x49\xb6\xfc\x3d\x27\xa1"
-					"\xfc\xce\x15\x97\xfd\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x2d\x2d\x2d\x02\x2e\x2e\x2e\x08\x0f\x8c"
-					"\xfa\x4a\x2a\x2a\x2a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x45\xb4"
-					"\xf8\x04\x13\x92\xf7\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x36\x36\x36\x29\x2f\x2f\x2f\x2d\x0e\x7f"
-					"\xe7\x2e\x31\x31\x31\x38\x33\x33\x33\x21\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x35\x35\x35\x33\x31\x31\x31\x50\x23\x55"
-					"\x85\x38\x32\x32\x32\x4d\x33\x33\x33\x21\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x2b\x2b\x2b\x02\x34\x34\x34\x4d\x35\x35"
-					"\x35\x60\x32\x32\x32\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-					"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff"
-					"\x00\x00\xc3\xff\x00\x00\xc0\xff\x00\x00\xe0\x7f\x00\x00\xf0\x1f"
-					"\x00\x00\xf0\x0f\x00\x00\xf0\x0f\x00\x00\xf0\x0f\x00\x00\xfc\x0f"
-					"\x00\x00\xfe\x07\x00\x00\xff\x03\x00\x00\xff\x63\x00\x00\xfc\x33"
-					"\x00\x00\xfc\x1f\x00\x00\xfc\x1f\x00\x00\xfc\x3f\x00\x00"
-				};
-
-				const int g_favIconSizeGZ = 498;
-				const uniString::utf8::value_type g_favIconGZ[] = {
-					"\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x63\x60\x60\x04\x42\x01"
-					"\x01\x06\x20\xa9\xc0\x90\xc1\xc2\xc0\x20\xc6\xc0\xc0\xa0\x01\xc4"
-					"\x40\x21\xa0\x08\x44\x1c\x04\x1c\x58\x18\x70\x02\x91\x59\x7f\xf5"
-					"\x85\xa7\xfe\x0b\xc1\xad\x02\x3f\x90\x98\xf1\xd7\x56\x6c\xc6\xdf"
-					"\xff\xa2\xd3\xff\xae\x16\x9c\xfa\x57\x9c\x54\xfd\x3e\xbb\xfe\x30"
-					"\x19\x2e\xfd\xb3\x48\x6a\xd6\xdf\xff\x62\x33\xff\xbe\x12\x9e\xfa"
-					"\x37\x8a\xbd\xea\x1f\x23\x29\x66\xb8\x6c\xf9\xcd\xea\xb6\xe9\xcf"
-					"\x26\x8d\x05\xbf\xff\x83\xdd\x32\xe3\xef\x06\xc1\xc9\x7f\xa5\x49"
-					"\x31\xc3\x6d\xeb\x5f\x4e\xef\xed\x7f\xf7\x5b\xad\xfa\xfd\x5f\x6a"
-					"\xc6\x1f\x90\x39\x6f\x45\x66\xfc\x4b\xe0\x68\x24\xce\x2d\xc2\x33"
-					"\xfe\x2a\xca\xcd\xfb\xdb\xe4\xb8\xf1\xef\x2f\xcf\x2d\x7f\xfe\x6b"
-					"\xcc\xfb\xf5\x5f\x6c\x3a\xd8\x2d\xdb\x04\xa6\xfe\x95\x25\xa4\x1f"
-					"\xa8\xce\x03\xe4\x76\xc9\x99\x7f\xff\x3b\x6d\xf8\xf3\xdf\x77\xfb"
-					"\x9f\xff\x56\x2b\x7f\xfd\x97\x9a\xfe\xfb\xbf\xc8\x8c\x9f\xfd\x84"
-					"\xf4\xab\xcd\xfc\x29\x6e\xb5\xe2\xd7\x7a\xdb\x55\xbf\xfe\x39\xac"
-					"\xfd\xfd\xdf\x76\xcd\x6f\xb0\x19\x40\xb7\x7c\x53\x99\xfe\x35\x87"
-					"\x18\x3f\x80\x80\xd7\xd6\xbf\x1e\x3e\xdb\xff\x5c\x97\x9f\xfe\xf3"
-					"\xbf\xd9\xf2\x5f\xff\x25\x67\xfd\x3d\xc1\x37\xe9\x1f\x0f\xb1\xfa"
-					"\x41\x40\x77\xcd\x5f\x76\xb9\x19\xbf\xae\xf9\x6c\xfb\xf3\x51\x7d"
-					"\xee\x2f\x50\xda\xd8\x27\x30\xeb\x2f\x17\x29\x66\x08\x4d\xf8\xd5"
-					"\xeb\xb5\xf5\x8f\xb4\xd7\xb6\x3f\x4b\x34\x17\xfc\xfe\x0b\x34\x63"
-					"\x9b\xc0\x94\xbf\x6c\xc4\xea\x17\xec\xfb\x09\xf7\xb3\xe7\xb6\x3f"
-					"\xb6\xea\x0b\xff\x9c\x03\x9a\xa1\x4a\xd0\xed\xba\xba\x4c\x7a\x7a"
-					"\x7a\x1c\xfc\x3d\xbf\xbc\xb4\xb4\xb4\x38\x61\xe2\xae\x5b\x7e\xb0"
-					"\x08\x4f\xfa\x4e\xd0\x7e\x33\x33\x33\x4d\x7d\x7d\x7d\x5d\xbe\xfa"
-					"\xe7\x7a\x86\x86\x86\x16\xc6\xc6\xc6\x8a\xc4\xba\x19\x04\x4c\x4d"
-					"\x4d\x8d\x81\xfa\x02\x94\x43\x5b\x2d\x8c\x8c\x8c\x7c\x49\xd5\xaf"
-					"\xad\xad\xcd\x64\x62\x62\xe2\x0b\x34\x27\x01\xa8\xdf\x01\x97\xba"
-					"\xf3\xff\x19\x18\x0e\x03\xf1\x01\x20\x7e\x50\xcf\xc0\xf0\x41\x1e"
-					"\x88\xf9\x11\xf8\x0f\x10\xff\x63\x67\x60\xf8\xcf\x0c\xc4\xc9\x40"
-					"\xbe\x31\x10\xcb\x43\xb1\x3d\x03\x03\x00\x34\x69\x3c\x26\x7e\x04"
-					"\x00\x00"
-				};
-
-				const time_t modTime = (!gOptions.m_favIconTime ? (gOptions.m_favIconTime = curTime) : gOptions.m_favIconTime);
-				utf8 header = "HTTP/1.0 200 OK\r\n"
-							  "Access-Control-Allow-Origin:*\r\n"
-							  "Content-Type:" + gOptions.faviconFileMimeType() + "\r\n"
-							  "Content-Length:" + tos((m_compressed ? g_favIconSizeGZ : g_favIconSize)) + "\r\n"
-							  + (m_compressed ? "Content-Encoding:gzip\r\n" : "") +
-							  "Cache-Control:private,max-age=31536000\r\n"
-							  "Expires:" + getRFCDate(::time(NULL) + 31536000) + "\r\n"
-							  "Last-Modified:" + getRFCDate(0) + "\r\n\r\n",
-				     body = (m_compressed ? utf8(g_favIconGZ,g_favIconSizeGZ) : utf8(g_favIcon,g_favIconSize));
-
-				if(gOptions.faviconFile() == "")
-				{
-				}
-				else
-				{
-					if (gOptions.m_faviconBody.empty())
-					{
-						body = loadLocalFile(fileUtil::getFullFilePath(gOptions.faviconFile()));
-						if (!body.empty())
-						{
-							gOptions.m_faviconBodyGZ = gOptions.m_faviconBody = body;
-
-							gOptions.m_faviconHeader = "HTTP/1.0 200 OK\r\n"
-													   "Content-Type:" + gOptions.faviconFileMimeType() + "\r\n"
-													   "Content-Length:" + tos(body.size()) + "\r\n"
-													   "Cache-Control:private,max-age=31536000\r\n"
-													   "Expires:" + getRFCDate(curTime + 31536000) + "\r\n"
-													   "Last-Modified:" + getRFCDate(modTime) + "\r\n\r\n";
-
-							if (compressData(gOptions.m_faviconBodyGZ))
-							{
-								gOptions.m_faviconHeaderGZ = "HTTP/1.0 200 OK\r\n"
-															 "Content-Type:" + gOptions.faviconFileMimeType() + "\r\n"
-															 "Content-Length:" + tos(gOptions.m_faviconBodyGZ.size()) + "\r\n"
-															 "Cache-Control:private,max-age=31536000\r\n"
-															 "Content-Encoding:gzip\r\n"
-															 "Expires:" + getRFCDate(curTime + 31536000) + "\r\n"
-															 "Last-Modified:" + getRFCDate(modTime) + "\r\n\r\n";
-							}
-							else
-							{
-								gOptions.m_faviconHeaderGZ.clear();
-							}
-						}
-						else
-						{
-							body = MSG_HTTP404;
-						}
-					}
-
-					if (!gOptions.m_faviconBody.empty())
-					{
-						// make sure there is a gzipped version available to send if signalled as supported
-						if (m_compressed && !gOptions.m_faviconBodyGZ.empty())
-						{
-							body = gOptions.m_faviconBodyGZ;
-							header = gOptions.m_faviconHeaderGZ;
-						}
-						else
-						{
-							body = gOptions.m_faviconBody;
-							header = gOptions.m_faviconHeader;
-						}
-					}
-				}
-
-				sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-			}
-			else
-			{
-				sendMessageAndClose("HTTP/1.0 304 Not Modified\r\n\r\n");
-			}
-			return;
-		}
-		else if (url == "listen.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x16\x00\x00\x00\x0D\x08\x04\x00\x00\x00\x07\xAC\x56"
-							"\xE8\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC3\x00\x00\x0E"
-							"\xC3\x01\xC7\x6F\xA8\x64\x00\x00\x01\x2A\x49\x44\x41\x54\x28\xCF"
-							"\x63\xF8\xC7\x88\x05\xBA\x82\x21\xF3\x3F\xAD\x5F\x13\x9E\x4F\x7D"
-							"\x33\xF9\x9F\xF2\x3F\x1E\x90\x38\x03\x16\xA5\xE9\xFF\xFE\xEF\xFA"
-							"\xFF\xEF\xFF\x3F\x96\x4F\x3A\xC7\xF6\xA4\xBD\xBB\x76\xF7\xE3\xAD"
-							"\x7F\x1A\x20\xE5\x98\x8A\x3B\xFF\xFD\x9F\xF1\x9F\x01\xA4\xD8\xF0"
-							"\xBD\xF1\xB9\x5D\x1E\x9F\x95\x7E\x5E\xBC\xF7\x76\xDD\x3F\x41\x54"
-							"\xC5\xAB\xC1\xF0\x7F\x19\x50\x29\x48\xF1\xB7\xA5\xBB\xB6\x3E\xDF"
-							"\xF2\xEA\x76\xE4\xCF\xA0\x5F\x6F\x3F\xFE\xD3\xFE\xC7\x8F\xAC\xF8"
-							"\x7F\x08\x18\x32\x40\x15\x9F\x5F\xEF\xF5\xD4\xF3\xE9\x8B\x3D\xD7"
-							"\x3F\xF1\xFF\xBB\xF8\xE9\x6E\x1E\x9A\x62\x06\x24\xF8\xF7\xFF\xCB"
-							"\x15\x4F\xF6\x58\xBC\x9A\x7D\xEE\xF5\x47\xD7\xDF\x53\xBF\x3D\x6A"
-							"\xC0\xAB\xB8\x5E\xED\xED\xD1\xDC\x87\xA5\xF7\x5F\xEE\xF3\x79\x56"
-							"\x74\x8B\x80\xE2\x57\x5D\x4F\x8E\x1B\x7E\x58\x78\xE5\xF5\x17\xE7"
-							"\x3F\x33\x7E\x60\x28\x46\x75\xF3\x8B\xEE\xCC\x47\xC1\xCF\x5F\x1D"
-							"\x3B\xF3\x95\xE7\xDF\xA5\xAF\x77\x73\x51\x15\xA3\x85\xC6\x9F\xD6"
-							"\xB3\x2B\x5E\xEE\x7E\x71\xD1\xED\x4F\xEE\xAF\xF7\x5F\xD0\x43\x03"
-							"\x3D\x9C\x15\x7F\x68\x9F\x3B\x68\xF7\x51\xEB\xEB\x8D\xCB\xAF\xA7"
-							"\xFC\xE3\xC7\x1F\x83\xCC\x9F\x74\x4E\x1C\xCE\x7C\x71\xE3\xF2\xA7"
-							"\xF3\xFF\x14\xB0\xC7\x20\x6A\xDA\xE8\x7A\xD6\xFF\xAA\x0F\xA8\x94"
-							"\x0B\x24\x0E\x00\x69\xB1\x67\x35\x8E\x65\x16\x39\x00\x00\x00\x00"
-							"\x49\x45\x4E\x44\xAE\x42\x60\x82", 376);
-			getPNGImage(png);
-		}
-		else if (url == "history.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x0D\x00\x00\x00\x0F\x08\x04\x00\x00\x00\x95\x2A\x8D"
-							"\xFC\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0B\x12\x00\x00\x0B"
-							"\x12\x01\xD2\xDD\x7E\xFC\x00\x00\x00\xA5\x49\x44\x41\x54\x18\xD3"
-							"\x6D\x90\xA1\x12\xC3\x20\x0C\x86\x79\x84\x49\xEC\xE4\x64\x65\xED"
-							"\x24\x72\x72\x76\xB2\xB2\x72\xB6\xB2\xB2\x12\x5B\x89\x9C\x9C\xED"
-							"\x23\x20\x79\x95\x7F\x3F\xA1\x39\x22\xC6\x77\x90\xE3\xBE\x4B\x02"
-							"\x71\x01\x16\x8F\x19\x4E\x57\xE0\xA5\x73\xC3\xD8\x65\xC0\x62\x18"
-							"\x28\xEE\x2A\x03\x36\xC3\x20\x78\x55\xBB\x21\x09\x93\xAA\x0F\x59"
-							"\xF1\x34\x31\xA8\x3A\x58\xE8\xC5\x5D\x63\x64\xCE\x17\x0F\x55\x91"
-							"\x05\x22\xB2\xC4\x84\x0B\xCF\xB5\xF7\x9A\xB8\xB3\xC4\xC4\x27\x78"
-							"\x16\x2D\x10\x95\x4D\xDE\x8E\xAB\x30\x57\x59\x7B\xB5\x6E\x35\x26"
-							"\x7E\xBA\x71\xE0\x7C\x61\xA7\xFD\xEC\xDD\xB2\x2C\x1B\x07\x35\xB2"
-							"\x7C\xE9\x93\xD4\x75\x70\x4C\xCB\x3F\xE1\x5C\x61\x0F\x15\x3F\x46"
-							"\x11\xE5\xA0\x02\x5A\xBC\xC7\x00\x00\x00\x00\x49\x45\x4E\x44\xAE"
-							"\x42\x60\x82", 243);
-			getPNGImage(png);
-		}
-		else if (url == "lock.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x08\x00\x00\x00\x0B\x08\x04\x00\x00\x00\xE8\x92\x04"
-							"\xAE\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC3\x00\x00\x0E"
-							"\xC3\x01\xC7\x6F\xA8\x64\x00\x00\x00\x81\x49\x44\x41\x54\x08\xD7"
-							"\x8D\xC8\x3D\x0E\x82\x40\x10\x86\xE1\xA1\xB1\xF2\xAF\x30\xA1\xE0"
-							"\x4A\xD6\x34\x9E\x80\xD6\x0A\xAD\x37\x14\x34\x44\xAF\xA0\xD7\xD2"
-							"\x1B\xD0\xC1\xEE\xB7\xCC\x30\xC3\x96\xD8\x99\xA7\x79\xF3\x92\x66"
-							"\x52\xA2\xF7\x09\x7A\x29\x35\xA3\xB9\x80\x7F\xC7\x5C\x73\x7D\x01"
-							"\xC3\x5C\x10\x57\xDF\x70\xB0\x2B\xDF\xA6\xA3\x7E\x46\xAE\x88\xDD"
-							"\x73\x3A\x0B\x3C\x86\x0B\x3F\xC0\x8E\x10\x6B\xB9\x0B\x80\xD0\x4A"
-							"\x2D\x88\xD4\xD9\xD6\x76\x76\x4A\xF6\xA9\x3A\x23\x67\x9B\x15\xF7"
-							"\xCF\x68\x7E\x46\x63\x14\x6C\x5C\x09\xB6\x00\x7C\x27\x7A\xE3\x33"
-							"\xC6\x13\x8C\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 207);
-			getPNGImage(png);
-		}
-		else if (url == "streamart.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x0D\x00\x00\x00\x0E\x08\x04\x00\x00\x00\x5E\x76\x5E"
-							"\x59\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\x77\x49\x44\x41\x54\x18\xD3"
-							"\x75\x90\x3B\x01\xC0\x20\x0C\x44\x4F\x02\x16\x90\x50\x0B\xC8\xA8"
-							"\x85\x4A\xE8\xDA\x11\x09\x58\x40\x42\x57\x64\xC4\xCA\xEB\x40\x7F"
-							"\x14\x9A\x6C\x79\xB9\x24\x17\xA9\x0B\x23\x30\xA3\x51\x04\x84\x7E"
-							"\x20\x62\xC1\xFE\x50\x46\x92\xE1\x99\x48\x18\x85\x42\x22\x52\x55"
-							"\x92\x0A\x1A\xA7\x64\x43\xE0\xB9\x67\x7F\x33\x57\xE4\x3A\xB0\xF1"
-							"\xF2\xE1\x09\x37\x88\xCF\xD9\x19\x91\xB8\xB6\x2E\x34\x8F\x71\xD7"
-							"\x6C\xAD\xEC\xAD\xD5\x48\x38\x0B\x5B\xAB\xAA\xB0\x76\x97\xD7\x83"
-							"\x0E\xF0\x9F\x7B\xB8\x7B\x95\x61\x07\x00\x00\x00\x00\x49\x45\x4E"
-							"\x44\xAE\x42\x60\x82", 197);
-			getPNGImage(png);
-		}
-		else if (url == "playingart.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x0D\x00\x00\x00\x0E\x08\x04\x00\x00\x00\x5E\x76\x5E"
-							"\x59\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\x77\x49\x44\x41\x54\x18\xD3"
-							"\x75\x90\x41\x15\x80\x20\x10\x44\x27\x02\x15\x88\x60\x05\x62\x58"
-							"\x81\x08\x5E\x3D\x12\x81\x0A\x46\xF0\x4A\x0C\xAA\x7C\x0F\x08\x28"
-							"\xE2\xCE\x69\xF7\xBF\x79\xB3\xBB\x92\x56\x1C\x19\x7D\x6B\x45\x08"
-							"\x37\x43\x19\x8F\xD0\x0C\x49\xC7\x3F\x2A\xAE\x40\x24\x91\xC8\x44"
-							"\x16\xEC\x9D\xCE\x4C\x09\x49\x76\x8A\x32\x3D\x6B\x54\xA9\xFD\x03"
-							"\x4C\x5F\x2B\xB4\xA1\xC3\x8E\x77\xFA\x96\x10\x11\xC7\x13\x9D\x6C"
-							"\xD4\x3B\xCD\xFB\x71\x9E\xFD\x6E\x1D\x81\xE1\x61\x89\xE2\xAE\xE0"
-							"\x02\xE8\xCB\x7B\xB8\xAB\x17\xF7\x85\x00\x00\x00\x00\x49\x45\x4E"
-							"\x44\xAE\x42\x60\x82", 197);
-			getPNGImage(png);
-		}
-		else if (url == "noadavail.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC1\x00\x00\x0E"
-							"\xC1\x01\xB8\x91\x6B\xED\x00\x00\x02\x66\x49\x44\x41\x54\x38\xCB"
-							"\x63\xF8\xFF\xFF\x3F\x03\x0A\x66\x60\xD0\x00\xE2\x66\x20\xDE\x0C"
-							"\xC4\xAF\x81\xF8\x31\x10\xAF\x07\xE2\x1A\xB0\x1C\x9A\x7A\x74\xCD"
-							"\x39\x40\xFC\x19\x2C\x8C\x1D\x7F\x07\xE2\x02\xEC\x06\x30\x30\x6C"
-							"\x87\x29\xFC\xCA\xC0\xB0\x6E\x29\xBF\x40\xC7\x82\xBE\xCA\x9B\xAB"
-							"\xA6\x57\x3F\x9C\x2F\x21\x32\xF9\x33\x03\xC3\x62\x24\x83\x40\x6A"
-							"\x59\x10\x06\x40\x6C\x06\x73\xFF\x30\x30\xBC\x2D\xF3\x70\x4A\xCF"
-							"\x2E\x4E\x9B\xB3\xFE\xF0\x82\x77\xDB\x4E\xCE\xFB\x94\x53\x9B\xBC"
-							"\x36\x30\xDA\x2B\xF6\x14\x1F\x4F\x18\x50\xCD\x73\xA8\xDA\x12\x88"
-							"\x01\x10\x3F\x83\x9D\xFD\x9B\x81\xE1\x3A\x88\x7E\xA8\xAD\xF2\x7A"
-							"\xDA\xB2\xCE\x5B\xBB\xCF\x2C\xF9\x7A\xF0\xCA\xC2\x5F\x53\xD6\x36"
-							"\xBF\xEA\x98\x5B\x71\x38\x3C\xCD\x2F\xEE\x36\x2B\x8B\x0F\x92\x77"
-							"\x34\x18\xA0\x01\x06\x12\x58\x3E\x5B\x5E\xDE\xE9\x17\x2B\xCB\x4F"
-							"\x10\x7F\x8F\x87\xE5\xD1\x45\xBB\xFA\x1F\x2E\x39\xD8\xF8\x21\xAD"
-							"\x21\xEE\x40\xF5\xB4\xEC\x4B\xA1\x39\xBE\x13\x54\x0D\x55\x95\x80"
-							"\xF2\xD3\xA1\x7A\x6A\x18\xA0\xA1\x0D\x72\x7A\xA0\x95\xAD\x95\xC6"
-							"\x4E\x37\xAB\x43\x20\xFE\x5F\x46\xC6\x7F\x3B\x0B\xFD\xDE\x77\x6C"
-							"\x8C\x7F\xA1\xED\xA8\x5F\xE6\x91\xE4\x98\x68\xE1\x67\x16\x2C\xAB"
-							"\x25\x2F\x06\x94\x87\xB9\x62\x3D\x03\x34\xAA\x40\x1C\x19\x19\x45"
-							"\x79\x7E\xC7\x70\xFB\xA4\x43\xD6\xCA\x30\xB1\xFF\xFB\xE2\x8C\xFE"
-							"\xC4\x77\x07\x5F\x30\x0D\xB3\x6C\x10\x51\x92\x52\xE7\xE4\xE3\x66"
-							"\x06\x8A\x8B\x40\xE5\x1F\xA3\x18\xA0\xA0\xA5\xCC\x24\xAD\x26\xC7"
-							"\x2B\xAC\x2C\x6B\xB3\x5C\x51\xFC\x10\xCC\x90\x93\x1E\x1A\xBF\xAB"
-							"\x16\x47\xBF\x0A\x28\x72\xE9\x53\x31\x51\x96\x43\x37\x00\xEE\x05"
-							"\x03\x3B\x23\x59\xBF\x0C\xDF\xE4\x90\xC2\xC0\x34\x2D\x4B\x6D\xD3"
-							"\xCD\xE9\xEE\x0F\xFF\x30\x31\x82\x0D\xB9\xAC\x2F\xF5\x25\xAD\x37"
-							"\xF0\x90\x55\x98\xA9\x19\x30\xB0\x3D\x91\xBD\x00\x0B\xC4\xD9\x56"
-							"\x1E\x56\x86\x89\x0D\xD1\x1B\x73\xA7\x26\x5D\x0B\x2F\x0F\x68\x6D"
-							"\x5C\x59\x76\x77\x6E\xB1\xC3\xC7\x9F\xCC\x4C\xBF\x41\x6A\xEE\x49"
-							"\xF1\xBF\x8C\xB7\x56\xB5\x00\xB2\xFB\x91\x03\x51\x03\x1A\x25\xFF"
-							"\xCF\x71\x73\x06\x7B\xA5\xBA\x96\x24\x74\x84\x9C\x4C\xEB\x8B\xB9"
-							"\xD1\xB0\xB6\xE8\x6B\xD9\xCA\xA4\x9F\x0D\xF9\x2E\xCF\x3F\x71\xB1"
-							"\xFD\x02\xA9\xF9\xC5\xC0\x70\x15\x48\xFF\x46\x44\x23\x24\x21\x15"
-							"\x40\x4D\x7C\xBE\x97\x8F\x2B\xDA\x22\xD0\x34\xCE\x3D\xCD\x79\x7E"
-							"\xE6\xEC\xF8\x77\x59\x73\xE2\x3E\x7A\xE6\xBA\xAE\x2D\xB4\x51\x2B"
-							"\x04\x3A\xFD\x09\x50\xCD\x3F\xD4\x84\x84\x25\x29\x7F\x02\x7A\x67"
-							"\x36\x1F\x77\x5B\x52\x89\xFB\xF5\xF4\x4A\xEF\xFB\x93\xC5\x04\xBA"
-							"\x3F\x30\x32\xCC\x80\xDA\x0C\x52\xB3\x1B\x35\x29\x43\x0C\x60\x01"
-							"\x9B\x0A\xF5\x0E\x9E\xCC\x54\x02\xD3\x8C\x99\x1B\xC9\xC8\xCE\x00"
-							"\x29\x75\xE7\x5B\x81\xE0\xCE\xEC\x00\x00\x00\x00\x49\x45\x4E\x44"
-							"\xAE\x42\x60\x82", 692);
-			getPNGImage(png);
-		}
-		else if (url == "adavail.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC2\x00\x00\x0E"
-							"\xC2\x01\x15\x28\x4A\x80\x00\x00\x02\xF6\x49\x44\x41\x54\x38\xCB"
-							"\x63\x60\xC0\x00\x8C\x2C\xEC\x6C\x1C\xEA\x2A\xCA\x1A\x39\x33\x57"
-							"\x4D\x7C\xBA\x74\xEB\xE4\x37\xBA\xC6\xBA\x8D\x6C\xEC\x1C\x5A\x20"
-							"\x49\x06\xFC\x80\x91\x95\x95\x85\x4D\x41\x48\x40\xD4\xC7\xDC\xDC"
-							"\xBA\x77\xF5\xE1\x45\xDF\xB7\x9D\x5C\xF8\xC3\x3D\xD4\x7D\xA3\xA0"
-							"\xA0\x70\x10\x0B\x2B\x9B\x12\x50\x11\x13\x56\xAD\x4C\x8C\x4C\x3C"
-							"\xFC\xBC\x42\xF6\xF6\x0E\x8E\x5D\xB5\x2D\x15\xE7\x96\xEF\x98\xFD"
-							"\xF1\xFC\xBD\x8D\xFF\x2E\x3E\x5C\xFB\x6F\xD9\xFE\x49\x3F\xCA\xDB"
-							"\xF2\xAE\x5A\x39\x59\x4D\xE4\xE4\xE6\xD6\x01\x2A\x67\xC5\xB0\x9A"
-							"\x9D\x95\x43\xC5\xC1\xD1\xA9\x65\xDD\xEE\x45\x1F\x4E\xDE\xDA\xF8"
-							"\x77\xEA\xEA\xB6\xF7\xFB\x2E\x2C\xFB\x7B\xF2\xF6\xAA\x7F\xF3\x77"
-							"\xF5\xFD\x3A\x7A\x6B\xF9\xBF\xC5\xBB\x26\x7C\xD6\x37\xD7\x2F\x62"
-							"\x62\x62\x92\x44\xF3\x0E\x23\xB3\x88\x90\xB8\x5B\x65\x6D\xD9\xE1"
-							"\x2B\x8F\x77\xFD\xEF\x9D\x53\xF3\x40\xCD\x56\xA7\x7E\xE3\xF1\x85"
-							"\x5F\x76\x5E\x9A\xF6\xCB\x21\xC1\xFD\x58\xCB\x82\x92\xB7\xEB\xCE"
-							"\xF6\xFC\x0F\x4E\xF5\xD9\x06\x74\x85\x39\x9A\x57\x18\x99\xA5\xA5"
-							"\xE4\xC3\xBA\x27\xB7\xDC\xB8\xF8\x68\xFB\xFF\xEC\xAA\x94\xF3\x9C"
-							"\x7C\xDC\x6A\x93\xB7\xD6\xBC\x99\xBA\x27\xF9\xBB\x94\x86\x42\xA3"
-							"\xBA\xBD\x7A\x7D\x68\xB9\xCF\x6D\xC7\x24\x97\x73\xFC\xA2\xC2\xBE"
-							"\x40\x4D\xCC\x28\x41\xC0\xCF\x27\x68\x97\x92\x9B\xB4\x7B\xFD\xB9"
-							"\x89\xFF\xDB\xD7\xA7\x7E\x4D\xEF\xCD\xBE\x30\x75\x4F\xFD\xAF\xEE"
-							"\x9D\xB1\xBF\x14\xCC\xB5\x26\xB2\xB0\xB3\xF2\x73\x0B\xF1\x6A\x81"
-							"\x30\x33\x0B\x8B\x00\x66\xF8\x33\x32\x71\x8B\xCA\x4A\xC7\x07\x56"
-							"\xFA\xDE\x6D\xD9\x96\xF4\x7F\xE6\xA1\xFC\xFF\x13\xF7\xE6\xFD\xEF"
-							"\xD8\x99\xF2\xAF\x74\x69\xC2\x77\xBF\x1A\xBF\xDB\x52\x3A\x2A\x4D"
-							"\xCC\x2C\xAC\x32\x78\x23\x12\xA8\x40\x41\x44\x5D\xB1\xC1\x26\xD5"
-							"\xF9\x7C\xE3\xC6\x8C\x3F\xAD\xDB\x52\xFF\x35\x6D\x49\xFD\xD3\xBF"
-							"\x2F\xFD\x5F\xDD\xC6\x94\xFF\xC6\x5E\xC6\xF3\x59\xD9\xD8\xD5\x31"
-							"\xD2\x04\x1B\x3B\xBB\x98\xA0\x94\x88\x81\xB0\x8C\x98\x11\x3B\x17"
-							"\x87\x30\x2B\x1B\xA7\x5E\xE7\x86\xEA\x8F\x4D\x1B\x93\x7E\x9B\xC5"
-							"\x3A\x9E\x8A\x68\x0F\xBC\xD5\xB1\x2B\xFD\x5F\xCE\xE2\xB8\xBF\x92"
-							"\xCA\xD2\x09\x28\x61\xC0\xC8\xC8\xC8\xAA\xA4\xAE\x96\x97\x33\x29"
-							"\xFF\x7D\xC9\x9C\xA2\x2F\xDA\x96\xBA\xB9\x40\x41\xB6\xA6\xD5\xA5"
-							"\x6F\xEA\xD6\x26\x7E\x17\x93\x97\x2E\xD4\xB4\x56\x49\x6C\xD8\x9C"
-							"\xFA\xB7\x70\x65\xD2\x7F\x69\x55\x4C\x03\x58\x94\x54\x94\x53\xAB"
-							"\xE6\x15\xBC\x9E\xB0\xBF\xFC\x3F\x30\xB4\x0F\x2B\xEA\x69\x64\x76"
-							"\x6C\xA8\xFF\x5C\xB5\x36\xF1\xA7\xA6\x9B\xF1\x4A\xCF\x3C\xE7\x0D"
-							"\x0D\x9B\xD3\xFF\xC5\x74\x86\xBE\x14\x96\x12\x0B\x41\x8F\x05\x46"
-							"\x4E\x4E\x2E\x6D\x33\x6F\xCB\x59\x79\x0B\x93\x7E\x54\x6D\x48\xF9"
-							"\x5F\x3C\x35\xEB\x45\xE7\xD6\x9A\xBF\x15\x6B\x92\xFF\xA5\x4C\x8B"
-							"\xFD\x52\xB1\x2E\xED\x7F\xEE\x82\xC4\x5F\xDA\x2E\x7A\x3D\xAC\x6C"
-							"\x6C\x8A\x18\x61\x00\x8C\x05\x5E\x1E\x3E\x7E\x47\x2D\x1B\x9D\xBE"
-							"\x80\x52\xEF\x9B\x79\xF3\x53\x7E\xD4\x6D\xCC\xFE\x57\xBB\x01\xE8"
-							"\x6F\xA0\xC6\x60\x60\xEC\x68\xD9\xEA\xF4\x73\x70\x71\x81\x32\x15"
-							"\x1B\xCE\xCC\xC4\xC2\xCA\xAA\x0C\x34\xC8\x43\xD1\x40\xB5\x2F\x61"
-							"\x7A\xF4\xF7\xB4\x99\x71\xDF\x0D\xBD\xCD\xD6\xF3\xF2\xF3\x7B\x03"
-							"\xE5\x14\x88\xC8\x91\xC0\x9C\xC2\xC6\xAE\x29\x26\x2F\x99\x15\xDA"
-							"\x1A\xF4\x34\xB6\x27\xFC\xB5\xBC\x8E\x72\x2D\x34\xEA\x30\x00\x00"
-							"\xBB\x07\x15\x4B\xC6\x05\x9A\xAA\x00\x00\x00\x00\x49\x45\x4E\x44"
-							"\xAE\x42\x60\x82", 836);
-			getPNGImage(png);
-		}
-		else if (url == "adplayed.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC1\x00\x00\x0E"
-							"\xC1\x01\xB8\x91\x6B\xED\x00\x00\x02\x50\x49\x44\x41\x54\x38\xCB"
-							"\x63\x60\xA0\x22\x60\x04\x02\x39\x31\x71\x89\xB2\xA9\x4B\x3A\x5E"
-							"\x29\xA8\x2A\xF4\x02\xF9\xF2\x20\x71\x62\x34\xB3\x00\x81\x86\x9A"
-							"\x86\x6A\x59\x62\x56\xCC\xC1\x3D\xE7\x96\xFE\xCA\xAD\x4B\xBA\xA6"
-							"\xA6\xA5\x5C\xCD\xCC\xCC\x4C\xD8\x10\x46\x06\x46\x31\x6D\x1D\xAD"
-							"\xD6\x65\x9B\xA7\xBD\xE9\x5F\xDC\xF8\xFE\xF0\xD5\x15\x7F\xE7\xED"
-							"\xE8\xF9\xB9\x60\x73\xD7\x3B\x79\x65\xD9\x76\x31\x31\xF1\x3A\xBC"
-							"\xAE\x62\x61\x61\x35\xCA\x2F\xC9\x3C\x3B\x67\x55\xE7\x6B\x31\x05"
-							"\xF1\xD2\x95\x87\xFA\xBF\x19\xB8\x19\xEF\xCB\x6B\x8D\x7B\xED\x13"
-							"\xEE\x7E\x0F\xE8\xAA\xD3\x78\x5D\x05\x34\xC0\x38\xA7\x34\xE5\x42"
-							"\xEF\xB2\xF2\xB7\x7A\x76\xFA\xF5\xDD\x9B\xB2\xBE\x0A\xCB\x89\x4E"
-							"\x37\xB1\x36\xDE\xB4\x7C\xDB\x8C\xAF\x40\x57\x7D\x84\xB9\x6A\xE1"
-							"\x96\xEE\x77\x4A\xEA\xF2\xE5\x40\x6D\xFC\xC8\x8E\xE0\x95\x56\x96"
-							"\xAE\x2D\x9C\x1D\xF5\xA9\x67\x4B\xF6\xF7\x9E\x9D\x19\x7F\x83\x4B"
-							"\xDD\xDE\x94\xD5\x17\xBC\x99\xB3\xB2\xF3\x9D\xA8\xBC\x78\x19\xC8"
-							"\x55\x86\xEE\xA6\x7B\xEB\x66\x66\x3F\x77\x8F\x70\x38\xC4\xC4\xC4"
-							"\xA4\x81\x6C\x00\x13\xD0\x6F\xDC\xAC\x5C\x9C\xFE\x3A\x1E\xFA\xDB"
-							"\x1B\x37\xA4\xFE\x4E\x68\xF1\xFB\xD6\x3C\xA5\xEC\xDF\xC4\x35\x55"
-							"\xBF\xF4\xEC\xF5\x27\x80\x5C\x25\xA2\x20\xDE\x2B\x2A\x2F\x1C\x2F"
-							"\xA3\x2D\x5B\x0B\x34\x40\x01\xAE\x9B\x95\x8D\x4D\xD7\xC4\xDD\xB4"
-							"\x5F\x56\x4D\x36\x91\x95\x9D\x55\xA9\x66\x59\xFA\x67\x59\x3D\xC5"
-							"\x65\xCE\xB1\x36\x0F\xCB\x16\xC7\xFF\xEF\xDD\x92\xF5\x13\xE4\xAA"
-							"\xE4\x9E\xA0\xE7\xAA\x36\xEA\x73\x98\x98\x99\x35\x51\xC2\x80\x93"
-							"\x8B\xD3\xBD\x70\x6A\xC6\xDB\xA8\x2A\xBF\x4B\x02\xA2\x42\x71\xD5"
-							"\xCB\xB3\xBF\xCA\xE8\x29\x2C\xF1\xCA\xB6\x3B\xE9\x96\xE1\xF4\x59"
-							"\xD7\xCB\xF0\x04\xC8\x55\xC5\x0B\x63\xBE\x34\x6E\x48\xFA\x65\x1E"
-							"\x60\xB8\x93\x91\x89\x49\x11\x39\x05\x49\xA9\x18\xAB\x4C\xCF\x9C"
-							"\x11\xF9\x31\xAB\x3B\xF1\x75\xFD\xFA\xDC\xBF\xA1\x75\x7E\xDF\x13"
-							"\x3B\x63\x7F\xEA\x3B\xEB\x6F\x07\xBA\xCA\x08\xE4\x2A\x39\x43\xA5"
-							"\x85\x01\x45\x8E\x47\x0A\x96\xC7\xFF\x65\xE3\x64\x77\x42\x89\x49"
-							"\x66\x16\x66\x2D\x29\x35\xC9\x2A\x87\x58\x9B\xA3\x79\x0B\x13\x7E"
-							"\xD9\x84\x59\x3E\x2C\x9E\x9E\xF9\x2D\xB2\xCA\xEF\x3A\xD0\x55\xF1"
-							"\x10\x57\x29\x2E\xF6\x2D\x70\x3C\x1E\xDB\x19\xFC\x8E\x95\x8D\xD5"
-							"\x1A\x5B\x52\x96\xE5\x15\xE6\x2B\x09\x6E\xF0\x7B\x25\x2C\x23\x3A"
-							"\x15\xE8\xAA\x45\xC8\xAE\x4A\x9A\x14\xF9\x35\x7D\x46\xD4\x27\x39"
-							"\x5D\xD9\x2E\xA0\x7A\x61\x82\xC9\x1B\xDD\x55\xEE\xD9\xCE\xD7\xA4"
-							"\xD5\xA5\xAA\x99\x98\x99\xE4\x40\x31\x47\x6C\x06\x83\xBB\x0A\x98"
-							"\x1E\x3A\x81\x7C\x19\x6A\xE6\x60\x06\x00\x9A\x6E\xEF\x92\x09\x7E"
-							"\x22\xAD\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 670);
-			getPNGImage(png);
-		}
-		else if (url == "v1.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x01\x81\x49\x44\x41\x54\x38\xCB"
-							"\xA5\x93\x41\x4B\x02\x51\x14\x85\xFD\x29\xFD\x8A\x16\x2D\x5A\xB4"
-							"\x68\xD1\x22\x08\x5A\xB4\x94\xA0\x7F\x20\xB4\x6C\x11\x11\xC1\x14"
-							"\x42\x84\x60\x44\x66\xB5\x08\x22\x08\xC1\xC1\xC4\xAC\x4D\x61\x46"
-							"\x12\x8E\x9A\x49\x9A\x59\x56\x9A\xCE\x28\x64\x24\xC4\x69\xCE\x90"
-							"\xC3\x3C\x67\x5C\x75\xE1\x83\xC7\xB9\xE7\x1E\xDE\x7B\xF3\xC6\xE5"
-							"\xEA\x2B\x49\x92\xDC\x3A\x71\x1D\xF4\x41\xCD\xED\x1A\x54\x7A\x73"
-							"\x48\x27\xE5\xF7\xFB\xA1\x28\x0A\x5A\xAD\x16\x7A\xC5\x35\x35\xF6"
-							"\xE8\xA1\xD7\x69\x58\x95\x65\xD9\x18\x78\x6C\x76\x11\xBC\x56\xB1"
-							"\x18\x7D\x37\xE0\x9A\x1A\x8B\x1E\x7A\x85\x10\xA6\xF6\x86\x03\xC9"
-							"\x26\x66\x76\xCB\x8E\xB0\x67\x09\x49\x99\x67\xE6\xD6\x58\xDB\x89"
-							"\x06\xA6\x03\x25\x93\x83\x94\x8A\xD3\xFB\xB6\xA0\xD1\xC3\xFA\x3B"
-							"\x8E\x9B\x01\x71\x9E\xAF\xD8\xF8\xC6\xD4\xD6\x83\x49\x48\xD1\xD0"
-							"\xE9\xFE\x20\xA6\x07\x58\x75\x42\x2F\x67\x38\xCB\x00\xE3\x92\x36"
-							"\x2F\xEA\x98\xF4\x17\x4C\x66\xF7\x8B\x08\x67\x34\x44\xEF\x34\x41"
-							"\x27\xF4\x72\x86\xB3\x46\x00\x6B\xFE\xB8\x82\x09\x5F\x5E\x60\x2F"
-							"\xF9\x81\x93\x9C\x66\xD3\xE9\x65\x09\x01\x9E\xA3\x32\xC6\xD7\x73"
-							"\x02\xC1\x44\x1D\x91\xAC\x6A\xD3\xE9\x15\x02\xB8\x9D\x8D\xF3\x57"
-							"\x8C\x79\x33\x02\x81\xCB\x1A\x64\xA5\x69\xD3\xE9\xB5\x1E\xC1\xB8"
-							"\xC4\x42\xED\x0B\xA3\xAB\x69\x13\xCF\x61\x09\x57\xA5\x36\xB2\xD5"
-							"\x4F\x2C\x84\xCA\x42\x8F\x5E\xEB\x25\x9A\x9F\xD1\x1B\x7B\xC1\xC8"
-							"\xCA\xAD\xC1\xB2\xFC\x04\x39\xDD\x44\x38\xDD\x80\xEF\xAC\x6A\xEA"
-							"\xF4\x08\x9F\xB1\xFF\x21\xAD\x45\x9F\x31\xBC\x74\xE3\x08\x7B\xB6"
-							"\x87\xE4\xF4\x94\xF3\x6F\x1D\x48\x91\x0A\xE6\x76\xF2\x06\x5C\x53"
-							"\x1B\xF8\x94\xFF\xFD\x33\xFD\xE7\x77\xFE\x05\xEF\x5F\x9A\xB1\x51"
-							"\x9D\x7F\x55\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 463);
-			getPNGImage(png);
-		}
-		else if (url == "v2.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x01\xA6\x49\x44\x41\x54\x38\xCB"
-							"\xA5\x93\xBD\x2F\x83\x51\x14\xC6\xFB\xA7\xF8\x2B\x0C\x06\x83\xC1"
-							"\x60\x90\x48\x0C\x6C\x5D\x98\x8C\x84\x58\x31\x54\x5E\xD5\x44\x9A"
-							"\x26\x15\x14\x11\xB1\xF8\x88\x44\x95\x52\x22\x48\x51\x8D\xB4\x48"
-							"\x35\xF4\x4B\x5B\x6D\xD3\x56\x69\x4A\x0D\x7D\xBC\xCF\x8D\xDE\xF4"
-							"\xAD\x9A\x9C\xE4\x97\xF7\xDE\x73\x9E\x73\x72\xCF\x7D\xCF\xD5\xE9"
-							"\xEA\x4C\x51\x14\xBD\x8A\x4B\x05\x75\xD0\xA7\xD7\xFD\x65\x6A\xB0"
-							"\x49\xC5\x6B\xB5\x5A\xE1\xF7\xFB\x51\x28\x14\x50\x35\xAE\xE9\x63"
-							"\x8C\x1A\x6A\x1B\x25\xE7\xED\x76\xBB\x48\x08\xE7\xBE\xB0\x74\x95"
-							"\xC7\xD8\x7E\x4A\xC0\x35\x7D\x34\x6A\xA8\xD5\x14\x61\xD5\x6A\xB2"
-							"\xED\x32\x87\x9E\xE5\x48\x43\x18\xAB\x29\xE2\x95\x3D\xF3\x68\xB4"
-							"\x05\x77\x16\xDD\xB6\x90\xE0\xF0\xE1\x4D\xF8\x2A\x95\x0A\x7C\x89"
-							"\x92\xF4\x53\x43\xFB\x69\x47\xCF\x02\x2E\xF6\xF7\x94\x2D\xA3\x6B"
-							"\xEE\x51\x70\x1E\x2A\xC2\x7C\x92\x86\x7E\x25\x2C\x18\x77\x24\x11"
-							"\xCC\x7C\xCA\x38\xB5\xCC\x61\x2E\x0B\x88\x4B\x9A\x3D\xCB\xA0\xD3"
-							"\x1A\x14\xF4\xAF\x86\xD0\x6B\x7B\x94\xFB\xD1\xED\x18\x92\x85\xB2"
-							"\xDC\x53\xCB\x1C\xE6\x8A\x02\xB4\xE1\xAD\x18\x3A\x2C\x01\x0D\x8A"
-							"\x33\x01\x4F\xB4\x88\xDD\xBB\x57\x0C\x6D\x44\xA5\x9F\x5A\x9A\xA6"
-							"\xC0\xE0\x7A\x04\xED\x33\xF7\x92\xE9\x83\x04\x96\xDC\x19\x18\xF6"
-							"\xE2\x18\xD9\xD4\xC6\xA8\xD5\x14\xE0\x71\xCC\xC7\x49\xB4\x99\x6E"
-							"\x05\x46\x67\x1C\xF3\xA7\x29\x0C\xAC\x3D\x49\x5F\x2D\xD4\xD6\xB6"
-							"\x20\x2E\x31\x98\xFE\x40\xEB\x94\x4F\xE0\x89\xBC\xC3\x79\x9F\x87"
-							"\xF9\x28\xA9\x92\x10\x4C\x3A\x9E\x65\x9C\xDA\xDA\x4B\x94\xBF\xD1"
-							"\x74\x10\x47\x8B\xE1\x06\x16\x35\x61\xC7\x97\x85\xDD\x97\x13\x5F"
-							"\xB2\x7A\x91\x16\x31\x6A\x34\xBF\xB1\x7E\x90\x8C\xFB\xCF\x68\x9E"
-							"\xB8\x6E\x08\x63\xBF\x06\xA9\xD1\x28\x07\x5E\x4A\x50\x1C\x31\xF4"
-							"\x2D\x06\x04\x5C\xD3\xF7\xE7\x28\xFF\xFB\x31\xFD\xE7\x39\x7F\x03"
-							"\x7B\x97\xA2\x69\xD2\xB0\x90\x85\x00\x00\x00\x00\x49\x45\x4E\x44"
-							"\xAE\x42\x60\x82", 500);
-			getPNGImage(png);
-		}
-		else if (url == "relay.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x01\xAB\x49\x44\x41\x54\x38\xCB"
-							"\xA5\x93\xCB\x4B\x02\x51\x14\xC6\xFD\x53\xFA\x2B\x5A\xB4\x68\xD1"
-							"\xA2\x45\x8B\x20\x68\x51\x3B\x5B\x04\xAD\x5A\x15\x41\xDB\x1E\x14"
-							"\x58\x08\x11\x81\x15\xBD\x89\x36\x45\x44\x98\x45\x58\x10\x45\x0F"
-							"\x33\x6B\x7A\x88\x54\xEA\x68\x9A\xA2\x26\x9A\x59\x0B\xBF\xE6\x3B"
-							"\xE4\xA0\x36\xAE\x3C\xF0\x63\xCE\xE3\x3B\x87\x7B\xEF\xDC\x6B\x32"
-							"\x55\x98\xC5\x62\x31\x6B\x38\x35\x50\x01\x73\x66\x53\x35\xD3\x8A"
-							"\x75\x1A\x6E\x9B\xCD\x06\x45\x51\x90\x4E\xA7\x51\x34\xFA\xCC\xB1"
-							"\x46\x0D\xB5\x46\xCD\x29\xBB\xDD\x2E\x0D\xFE\xE4\x0F\x96\xAF\x52"
-							"\x18\x3A\x78\x17\xE8\x33\x47\xA3\x86\xDA\xB2\x21\x9C\x5A\x6C\x5E"
-							"\xBC\x4C\xA2\x63\x25\x60\x08\x6B\x25\x43\xDC\xFA\x9E\xB9\x34\xDA"
-							"\xC2\x79\x02\xED\x8B\xAF\x50\x22\x39\x14\x0A\x05\xC9\xF1\x7B\xF7"
-							"\x96\x93\x3C\xA1\x86\xF6\xB7\x1D\x33\x07\x38\xB9\xBF\x97\xC4\x37"
-							"\xDA\xE6\x9F\x05\x36\xCC\x9D\xC5\x61\x5E\xF3\x0B\xC3\x8E\x08\x7C"
-							"\xF1\xBC\x5E\xA7\x96\x3D\xEC\xE5\x00\x39\xA4\xD9\xD3\x38\x5A\x6D"
-							"\x3E\xE1\x36\xFC\x09\xAB\x33\xAA\xC7\x83\x3B\x2A\x22\xE9\x6F\x3D"
-							"\xA6\x96\x3D\xEC\x95\x01\xB4\x81\x6D\x15\x2D\x33\x5E\xC1\x13\xFA"
-							"\x84\x3F\x91\x87\x2B\x98\x15\xF6\x1E\x3E\xD0\xBF\x15\xD4\xEB\xD4"
-							"\xD2\xCA\x06\xF4\x6D\x06\xD0\x3C\xF5\x28\xDC\xA8\x59\xEC\x2A\x29"
-							"\x8C\xEF\x87\xE5\xCB\xB8\x58\x23\xD4\x96\x0D\xE0\x72\xA6\x8F\x23"
-							"\x68\xB2\xDE\x0B\xD7\xC1\x0C\xC6\x1C\x21\xF1\xBB\x96\xB5\x25\x9F"
-							"\x44\x85\x62\x9D\xDA\xD2\x2D\xC8\x21\xFA\x62\x5F\x68\x9C\xB8\x13"
-							"\x5C\x81\x0C\x46\xED\xAA\x1E\xF7\x6E\x3C\x23\x9C\xCA\xEB\x31\xB5"
-							"\xA5\x87\xA8\xFF\x46\xEB\x61\x18\x0D\xE3\x1E\xCC\x1C\xBD\xA1\x67"
-							"\xD5\x27\x3E\xE9\x9C\x7D\xC2\xFA\x45\x4C\x7C\x6A\xCA\x7E\x63\xE5"
-							"\x45\x9A\x3C\x08\xA1\x7E\xE4\xDA\x10\xD6\xFE\x5D\x24\xA3\xAB\xEC"
-							"\x8D\xE6\x60\x71\xA8\xE8\x5E\xF2\x0A\xF4\x99\xAB\x7A\x95\x6B\x7E"
-							"\x4C\xB5\x3C\xE7\x5F\xCE\xEF\xA6\xA0\xA0\x37\x1F\x5A\x00\x00\x00"
-							"\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 505);
-			getPNGImage(png);
-		}
-		else if (url == "wa.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x02\x0D\x49\x44\x41\x54\x38\xCB"
-							"\x8D\x93\x4F\x68\x92\x71\x18\xC7\x35\xA3\xFF\x86\x5B\x5B\x32\x61"
-							"\x0D\xC2\xEE\xC5\x08\x22\x0F\x8D\xB5\x0E\x12\x81\x04\xEE\xE0\x41"
-							"\x21\xA2\xD8\x24\x2A\x56\xB1\x82\xC4\x0A\x06\xC5\xD0\x75\xD8\xA2"
-							"\x4D\x66\x10\x48\xB0\xB6\x5D\x94\x1D\xB2\x74\x68\x2D\xDD\x41\x93"
-							"\x2E\xC1\xCA\x2D\x8D\x6D\x81\x98\x22\x25\x82\x7C\xF2\x7D\xB7\x44"
-							"\x97\x6E\xFB\xC0\x73\x7A\xDF\xCF\xF3\xFE\x9E\xEF\xEF\x79\x25\x92"
-							"\xCD\x61\xBD\x2A\x51\x94\xCA\x2E\xD9\x06\x2C\x7C\x5D\x20\x10\x0C"
-							"\x54\x36\xD1\xE9\xF5\xFA\xB4\xF1\x62\x27\x5B\xCA\x8B\x4B\x8B\x08"
-							"\x24\x93\x49\xDC\x6E\x37\x6A\xB5\x3A\xEE\x9D\x70\x92\x9B\x3C\x8F"
-							"\xF5\xB2\x62\xD3\x06\x24\x12\x09\xFE\xD1\x77\xAB\x0F\xAB\xD5\xCA"
-							"\xCF\x99\x07\xA4\x1F\xB7\x10\x19\x6B\x46\xD9\x28\x9B\xDE\x52\xF6"
-							"\x78\x3C\x18\x8D\x46\xE2\x9F\x67\x29\x4C\x74\xB1\x7A\x4D\x46\xCA"
-							"\x21\xE7\xA8\x72\x47\x7A\x3D\x87\xFA\xB2\xD9\x6C\xC6\xE9\x74\xC2"
-							"\x97\x61\x0A\xE3\x2D\xAC\xF6\x4A\x49\x0D\xEE\xE4\xF8\x11\x29\x2E"
-							"\x97\xAB\x56\xB0\x6B\x33\x0B\xB3\x5A\x2C\x16\xD2\x3F\x62\x10\xBC"
-							"\x00\x6F\x4E\xF2\xC7\x75\x82\xE2\x5B\x3D\xF1\x29\x3D\x5E\x9B\x96"
-							"\xAB\xDD\x67\x09\x85\x43\x55\x4D\xC4\xB4\x05\x6E\x9B\xB4\x64\x46"
-							"\x3A\xC9\x3C\x3C\x44\xC6\x56\x12\x7F\x2D\x81\xBF\x1D\x66\x0E\x93"
-							"\x1B\xDA\x4F\x7E\x40\xCA\x3D\xD3\x69\xF1\x5D\x9F\xCF\x57\x6E\x22"
-							"\x5E\x95\xC0\xDD\x9E\x8E\xD2\x13\x15\x84\xBA\xE0\xF7\x77\x98\x3F"
-							"\x47\xE1\x75\x33\xB9\xC1\x3D\x14\x47\x77\xC1\xF8\x6E\x9E\x3D\xB9"
-							"\xB3\xD6\xC0\xEF\xAB\x3E\xC5\xDC\xC7\x39\x9E\xDA\x1E\x71\xE3\xD2"
-							"\x29\xC8\x97\xB2\xF8\xA4\x25\x37\xDA\x40\x7E\x64\x1F\xBC\x92\xE3"
-							"\xBB\xBF\x17\xDB\x40\xBF\x28\x87\xE7\xC3\xB5\x73\x30\x18\x0C\xA5"
-							"\xF9\xDF\x93\x77\xB7\x93\x1D\x92\x53\x9C\x6A\x24\xEE\x50\x70\xBD"
-							"\xFB\x18\xC1\x60\x50\x94\xA3\xD1\x68\x4D\x59\xA1\xD1\x68\x22\xA9"
-							"\x6F\x01\xB2\x63\x6D\xE4\x5D\x4D\xF0\x4E\x85\xBD\xF7\x20\x2F\x5F"
-							"\x3C\x2F\xEF\x44\x2C\x16\xAB\x29\x4B\x04\x79\xE5\xC3\x34\x59\x47"
-							"\x1B\xC5\xD9\x56\x7C\xC3\x4A\x7A\x4C\x67\xF0\xFB\xFD\x65\xB9\xDE"
-							"\x97\x45\xFA\x75\x6A\xF2\x93\x4A\xD2\xDE\x56\xAE\xE8\x0E\x08\x8B"
-							"\x42\x28\x14\x62\x79\x65\x59\x94\x37\x5E\xDB\x7F\x08\xBB\x6D\xBF"
-							"\xD9\x80\xAA\x49\xE6\xAC\xD8\x32\xF1\xAA\x36\xA6\x5D\x8F\x48\xA9"
-							"\x3A\xB6\xF9\x3B\x57\xF1\x17\x81\x38\xA3\x74\x72\x00\xB9\xAF\x00"
-							"\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 603);
-			getPNGImage(png);
-		}
-		else if (url == "curl.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\x4E\x49\x44\x41\x54\x38\xCB"
-							"\x63\x60\xA0\x0F\x68\xF8\x7F\xE0\xC0\x81\xFF\x98\x6C\xDA\x18\xD0"
-							"\xF0\x1F\x53\x11\xD1\x06\x40\x24\x61\x98\x2C\x03\x28\xF2\x02\x44"
-							"\x02\xBB\x17\x90\x31\xDE\x30\xC0\xE6\x05\x64\x31\x4C\xEF\x51\x3B"
-							"\xBE\x09\xC7\x02\x59\xF1\x4D\x4F\x03\x06\xAF\x17\x88\x4A\x07\xC8"
-							"\x71\x8C\x8D\x8D\x2D\x1D\x00\x00\x6B\x22\xE2\xA4\xD5\xBE\x1F\x4C"
-							"\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 156);
-			getPNGImage(png);
-		}
-		else if (url == "radionomy.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\xAB\x49\x44\x41\x54\x38\xCB"
-							"\x63\x60\x00\x02\xB1\xAE\x33\xAC\x40\x5C\x0A\xC4\x37\x81\xF8\x1F"
-							"\x10\xFF\xC7\x81\xFF\x41\xD5\x80\xD4\xB2\x32\x20\x69\xDE\x81\x47"
-							"\x13\x2E\xBC\x03\x6C\x08\xD4\x34\x90\xC0\x3B\x20\x0E\x03\x62\x2E"
-							"\x06\x1C\x00\x24\x07\x55\xF3\x0E\xAA\xA7\x94\x01\xEA\x24\x10\x27"
-							"\x8C\x81\x48\x00\x35\x04\xA4\xE7\x26\x03\x92\x9F\xF1\xD9\xCC\x8A"
-							"\xC5\x25\xE0\x30\x61\x80\xF9\x09\x8B\xA6\xC9\x40\x7C\x0B\x88\x7B"
-							"\x81\xF8\x2F\x10\x37\xA0\xC9\x43\xF4\xE1\x31\x60\x03\x54\xEE\x2E"
-							"\x10\xD7\x03\xB1\x13\xB9\x06\xD8\xE3\xF0\x16\xD1\x06\x88\x50\x6A"
-							"\x80\x00\xCD\x0D\xC0\x1A\x8D\x40\x7E\x22\x10\x4F\x05\x62\x36\x1C"
-							"\x09\x0A\x1E\x8D\x14\x27\x24\x8A\x93\x32\xB9\x99\x69\x27\x7A\x8E"
-							"\x24\x2B\x3B\x03\x00\xC3\xBC\x4D\xD5\xF9\xC1\xBC\x7C\x00\x00\x00"
-							"\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 249);
-			getPNGImage(png);
-		}
-		else if (url == "chrome.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x02\xE8\x49\x44\x41\x54\x78\x01\x65\x93\xDD\x6B\xD6"
-							"\x65\x18\xC7\x3F\xD7\xFD\xB2\xFD\x9E\x47\x63\xB3\x74\x4D\xDB\xF2"
-							"\x99\x21\xC5\x93\x16\x19\x61\x27\xD1\x36\xF1\xA0\x37\x09\x02\xE7"
-							"\xEA\xC4\x88\x75\x24\x74\xE2\x69\x41\x45\x7F\xC1\x3C\x1B\x42\x45"
-							"\x50\x9E\x14\x41\x74\x12\x54\xD0\x91\x06\xE9\x81\x33\x59\xE5\x66"
-							"\x9B\x3A\x6D\xDB\xE3\xDA\xCB\xF3\x7B\xBB\xEF\xAB\x1F\x13\x65\xD5"
-							"\x07\x3E\x47\xF7\x75\x7F\xBF\x07\xF7\x7D\x09\xFF\xE1\xAF\x63\x2F"
-							"\x8A\x49\x3A\xFB\x4D\xAD\xE3\x29\x31\x66\xB7\x46\x25\xA6\xD9\xD5"
-							"\xB8\x96\x9E\x0F\xED\x6C\x16\x50\x36\xE1\xE6\x5F\x19\xE6\x2E\xB1"
-							"\x9D\xF7\xC6\xB5\x6C\x0C\x18\x01\x06\xC4\x99\x44\x43\x24\xA6\x79"
-							"\x1A\xB3\x62\xBA\x3A\x3F\x13\xD7\xF3\x09\x60\xFE\x5E\x40\xB9\xB8"
-							"\x0A\x80\xA6\x45\x53\x6A\xFE\x14\x30\xA8\x31\x4A\x35\x8C\x18\x41"
-							"\xA3\xA2\x45\xA8\x57\x01\x8F\x57\x41\xEF\x57\x0E\x69\xBB\x38\x01"
-							"\x5C\x02\x70\xA1\xB5\xC6\xD9\x47\x7D\xEF\xD3\xBF\x15\xE3\x3E\xC6"
-							"\xA1\x6A\x98\xE8\xEF\x5C\x46\x75\x43\x2D\xA9\x0C\x68\x16\x24\xE6"
-							"\xE5\x90\xE6\x61\x3C\xA6\xF2\x06\x30\xEF\xCA\x56\xE4\xAB\xD1\x1D"
-							"\x63\xEE\xB3\x5B\xC3\x07\x26\x33\xA4\xA3\x04\x03\x72\xFF\x36\x42"
-							"\x7F\x3F\x78\xB0\xE9\x34\xE4\xB7\x37\xC2\xAC\x46\xC4\xE8\xB0\xEB"
-							"\x29\xC7\x80\x0F\xDD\x3B\xA7\x1B\x0F\x47\x2F\x47\x7F\x38\xD4\x45"
-							"\xDF\xD4\x75\xB6\xB7\x03\x3C\xF9\x04\x53\xAF\xBD\xC9\xCC\x03\x0D"
-							"\x30\xC2\x9E\xCE\x3F\xD8\xEF\xC6\xD9\xC2\x39\xAC\x57\xAC\x8B\x18"
-							"\xA3\x47\xC5\xF1\x89\xBC\xF4\xCD\x0B\x47\xC4\xF2\xB9\x51\xAD\x1F"
-							"\xFA\xF4\x1A\x43\x17\x1D\x7F\x9E\xFC\x88\xAF\x69\x40\x54\x00\x04"
-							"\x61\xA4\x39\xC5\xF3\xF7\x9D\x80\xB0\x00\x22\x68\x94\x75\x8D\x76"
-							"\xD4\x10\xB4\x81\x92\x44\x67\xF8\x79\xB8\x9B\xB9\x67\xF6\x72\xD6"
-							"\xEE\x62\xEE\xD6\x0A\x8B\x7F\xB7\x59\xAA\x9C\x5D\x58\xE1\xA7\xB9"
-							"\x06\xA5\x6F\x02\x01\x94\x4A\x49\x62\x30\x0D\x17\x03\x18\x5B\x19"
-							"\x95\x56\x5F\x8D\x8B\x87\x7B\x58\x49\x0B\x16\x56\x53\x12\x6F\x01"
-							"\x48\x8B\xC0\xF2\x9A\xB2\x19\x8D\x86\x50\x5A\x9C\x16\x3A\xA3\x86"
-							"\x54\xAD\xD4\xC5\x18\x26\x77\x2E\xB1\x2F\x2C\x53\x4E\x15\xDC\x5C"
-							"\x2D\x01\xA8\x77\x78\x0E\xEE\xBC\x8E\x2F\x2F\xA3\x58\x54\x85\x50"
-							"\xBA\x34\xE4\x7E\xC6\xC5\x54\x2F\x00\x57\xC4\xCA\x3E\xE3\x85\xC5"
-							"\x6C\x89\x1B\x5B\xBF\xE5\xC8\xC1\xE7\xB8\xF4\xBB\x05\x60\xFF\xC0"
-							"\x2A\xCF\xEE\x38\x0D\xE5\x4D\xC0\x12\x4B\x47\x91\xFA\x2B\x45\xE6"
-							"\x2F\xC8\xE2\x77\x7D\x1C\xBB\xD6\x7C\xD7\xD6\xE5\x03\x5B\x37\x88"
-							"\x03\x50\xB6\x75\x74\xD3\xE3\x76\x91\xA5\xB0\x27\xFC\xC2\xDB\xBD"
-							"\xE7\x48\x0C\x54\xCD\x64\x6B\x09\x59\xBB\xF3\xBD\x8D\x67\x8C\x51"
-							"\x28\xDB\x71\x22\x06\x19\x24\x32\x6C\x6B\x82\x78\xA1\x95\xDD\x66"
-							"\x21\x6D\x51\xCF\x32\xDE\xEA\xF9\x95\x44\x84\xAA\x91\x6C\x3D\x21"
-							"\x5D\xED\xFC\xBE\xC8\xDD\x04\x80\xCC\x7E\xF9\x08\x00\xAF\xCF\x35"
-							"\x9A\xD6\xCB\x29\x57\x33\x83\xAE\x26\x62\xBC\x10\x81\x97\x6B\xF3"
-							"\x1C\xEF\x9A\x23\x14\x96\x74\xBD\x43\xF3\xB6\xFF\xB1\xCC\xED\xBD"
-							"\xAF\x2C\xD3\x5F\xEC\xE5\x2E\xA3\xB3\x7D\xBD\xD6\xC9\x58\x15\x34"
-							"\x22\x4E\x06\x1E\xF2\x45\x72\xB2\xFB\x06\x0F\x4A\x91\xE6\x85\x9D"
-							"\x0E\x85\x39\x53\x96\xE6\x5F\xCB\x24\x97\x3F\x7E\x8C\xCD\xBC\x3A"
-							"\xB9\x5D\xB6\x74\xB9\x3E\xB5\x72\xE0\x70\x7D\x7D\xF7\xF1\xAD\xCB"
-							"\xC4\x28\x57\x43\x90\xF3\x2B\x2D\xF7\xBF\x75\xFE\x07\xC1\xB8\x73"
-							"\x8C\xE9\x85\xD9\x6A\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60"
-							"\x82", 801);
-			getPNGImage(png);
-		}
-		else if (url == "firefox.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x03\x3C\x49\x44\x41\x54\x38\x11\x05\xC1\x4B\x68\x5C"
-							"\x55\x00\x80\xE1\xFF\xDC\x73\xE7\x95\x8C\x79\x4D\x26\x0E\x69\x4C"
-							"\x82\x8D\x49\x93\x2A\x41\x25\x89\x31\xE8\x46\x45\x22\x6E\x04\x11"
-							"\x45\x51\xD0\x8D\x2B\x17\x82\x10\x50\xF7\x2E\x45\x5D\xB8\x11\x5C"
-							"\xB6\x14\x2A\x5A\xAA\x3B\x43\x85\x28\xA8\x2D\x5A\x34\xE6\xD1\x4C"
-							"\x26\xCE\x8C\x93\xC7\xDC\xCC\xEB\xCE\xDC\xD7\x39\xF7\xF8\x7D\x02"
-							"\x00\x00\x00\xE0\xAB\xBD\x50\x96\x4E\xBD\x59\x3F\x8A\x57\x0D\x3C"
-							"\x08\x18\x01\x07\x29\xDB\xFA\x25\x9B\xCF\xDE\xDB\xB8\x24\x35\x00"
-							"\x00\x80\x00\xA8\x7F\x36\x67\xE5\xA2\x5D\xF1\xFE\xFC\xF1\x78\xAB"
-							"\xE3\xBF\xD7\x16\xF6\xCB\x76\x52\x5E\xC8\x24\xAC\x84\x40\x10\x46"
-							"\x2A\x4A\xC4\xAA\xBC\x38\x96\xB8\x92\x33\x9D\x2F\xE7\x9E\x9A\xAD"
-							"\x2C\x83\x01\x90\x00\xEF\x2E\x0C\x3E\xBA\x15\xAE\xBF\xBE\xE9\xCE"
-							"\x6E\x9C\x38\xCD\xD7\x72\xF6\xF6\x50\x26\xD1\x92\x75\x9D\xC7\xD3"
-							"\x31\x75\x3F\x94\xAD\x86\x3B\x9C\xE9\x36\xD6\x96\x46\x1B\xCF\x27"
-							"\x9E\xCC\xBB\x1F\x17\xB6\xFE\xFE\xF4\x36\xB1\x04\x78\x65\x7C\xEC"
-							"\x4D\xD1\xF3\x3F\x99\x32\x3B\x53\x2B\xD9\x9F\xC5\xCA\xC8\x6F\xDC"
-							"\x74\x57\x29\x47\x03\xB4\x83\x80\x66\xC7\x23\xAA\xB7\xB1\x3A\x81"
-							"\x58\x9B\x93\x63\x13\xF9\xF0\x99\xB0\x20\xF7\x3E\xBF\xB2\xBB\x6D"
-							"\x1B\x73\x59\xFC\xF9\x86\x9E\x1E\xC9\x34\xC4\x14\x0D\x92\x96\xA1"
-							"\x56\x1B\xE4\x89\xC6\x2D\xF6\xFA\x2B\xDC\xB5\x2F\x23\x23\x8D\xE8"
-							"\xFA\x94\xDB\x5D\xF6\xCA\x43\xAC\x3C\x9D\x1C\x08\xC7\xE5\xDB\xE6"
-							"\x9C\x1F\xE4\x5B\xCD\xDC\xBC\x34\xE6\x43\x23\xC4\x08\xB6\x05\x29"
-							"\x8B\x84\x0E\x99\x0C\xE0\x54\x8D\x51\x6E\x0F\x60\x39\x2D\x8C\x73"
-							"\x4E\xE8\x76\xE9\x35\x2B\x3C\xB7\x74\x4E\x7F\xA6\x9A\x08\xEB\x07"
-							"\x37\xEC\xC8\x63\x45\x79\x4C\x8A\x84\xC1\x28\xD0\xAE\x40\x0F\xDB"
-							"\x5C\xF5\xE6\xB9\xD5\x9A\xC0\x68\x07\xD5\x73\x51\x6E\x93\x38\xF4"
-							"\x99\x5A\x2C\xA0\xA3\x16\xBD\x60\xBA\xB0\x73\xFD\xE2\xBA\xED\xB9"
-							"\x0C\x11\x62\x27\x00\xE5\x41\xE3\x3F\xF8\x46\x2F\xF0\x63\xD4\x4F"
-							"\x37\x3E\x86\x58\x83\xD7\x80\xA0\x83\xF6\xBA\x3C\x94\x77\x18\xEE"
-							"\x3F\xA1\x78\x98\x4D\xEF\xB7\x06\xA7\xEC\xC0\x23\x24\x12\xB1\x25"
-							"\x8C\x15\x6B\x43\x9F\x84\x4B\x69\x87\xED\xB3\x32\xD9\xAC\x66\x3A"
-							"\xDF\xE5\x76\xA9\x9F\xC3\x33\x8F\xA4\xE9\x72\x9F\xEF\xA0\x3A\x4D"
-							"\x32\x7E\xA4\x17\x26\xED\xA2\x1D\xF8\xFC\x6A\x42\xEA\x16\x14\xD2"
-							"\x7D\x60\xA7\x0C\x6B\xE9\x0A\x0F\x4F\x9E\x12\xE9\x98\x83\x76\x92"
-							"\xFD\x68\x02\xD5\x4B\xF1\xC8\xCC\x39\x8F\x3F\x70\x42\xF7\xD8\xC7"
-							"\x2A\xC9\x5A\xAE\x19\xFF\x64\x1B\x6D\xFE\xF1\x3C\x71\xC7\xC4\xE2"
-							"\x05\x69\x19\x92\x02\x02\x0D\xBF\x57\x24\x9B\xD5\x01\xEE\x76\xB3"
-							"\x04\x96\x26\x97\x6A\xB0\x3E\xDF\x24\xD5\xD1\x9C\x15\xD3\x54\xFF"
-							"\x92\x55\x59\x8B\x4B\xF2\xEB\x03\x27\x7A\xF5\xFE\x9C\x1F\x45\xBC"
-							"\x88\x10\x49\x29\x20\x29\x21\x3F\x18\x93\xEE\x83\xA1\x74\xC8\x6A"
-							"\xC1\xE5\x9D\xC7\xDA\x2C\x8F\x87\x84\x65\xC1\xBF\xBB\x36\xC5\x43"
-							"\x79\xFD\xA5\xDC\xD1\x77\x12\xE0\xD9\xDC\x60\x31\x0E\xC4\x68\xAC"
-							"\xC4\x92\x41\x08\x61\x04\x69\x11\x73\x31\x1B\xB2\x9C\xF7\x59\x1C"
-							"\x0D\xC8\xA5\x34\xAA\x09\x5E\xDD\xC4\x61\xCB\x7C\x9F\x15\xEA\xA3"
-							"\x99\x1B\xB5\xA6\x04\xF8\xF6\xB4\x61\x9C\x40\xED\x0F\x18\x7B\x2C"
-							"\xA9\xAC\x59\xB4\xB0\xB5\x16\x28\x25\x88\x43\x81\xF2\xC1\xEB\x08"
-							"\x4A\x27\xC2\xEC\x54\xC3\x9B\xD7\x8A\xCE\x07\x1B\x7F\x54\x8A\x00"
-							"\x12\x00\xA0\x14\x04\xC1\x1D\xB7\xBB\xAD\x22\x4E\x2D\x65\xA5\x82"
-							"\x00\xDB\xF7\x31\xAD\x9E\xF1\x1C\x37\x3E\xAF\x36\xF5\xFE\xD6\x71"
-							"\x70\xED\xEA\x51\xFD\x8B\x4D\xA7\x75\x0F\x50\x00\x02\x00\x00\x00"
-							"\xB0\x81\xEC\x98\x4C\x14\x66\xD2\xE9\x89\x0B\xA9\x64\x2E\x30\x71"
-							"\x5C\x57\xCA\xA9\x06\x61\xED\x28\x0C\x6A\x80\x0B\x28\x00\x80\xFF"
-							"\x01\xD5\xC5\xB8\x35\x61\xCD\xB2\x5B\x00\x00\x00\x00\x49\x45\x4E"
-							"\x44\xAE\x42\x60\x82", 885);
-			getPNGImage(png);
-		}
-		else if (url == "safari.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x03\x2E\x49\x44\x41\x54\x38\x11\x75\xC1\x4B\x4C\x1C"
-							"\x75\x00\x07\xE0\xDF\xBC\x67\xFE\xF3\xDA\x61\xE9\xB6\xC0\x2E\x2C"
-							"\x94\xA6\x65\x23\xC5\x08\x41\xD3\x18\xAD\x35\x31\x69\x6F\x26\x90"
-							"\xE8\x49\xAE\xE8\xD5\x0B\x37\xCA\xCD\x8B\x37\x3D\x35\x69\xDA\x98"
-							"\x18\x83\x89\x26\x35\x8A\x89\x31\x5A\x63\x02\xB5\x07\xB7\x40\x28"
-							"\xB0\xB0\x0F\xB6\xFB\x90\xD9\x07\x3B\xCC\xEC\xEE\xCC\xEC\x8E\x7B"
-							"\xE0\x40\x7C\x7C\x1F\x85\xFF\xB0\xB4\xB4\x34\x23\x8A\xE2\x94\xEF"
-							"\xFB\x1B\x2B\x2B\x2B\xDB\x14\x45\x05\xF8\x1F\x14\xFE\x21\xB5\xBF"
-							"\xAF\x1E\xE5\xF3\x1F\x48\x92\xF4\x11\x91\xA4\x12\x21\xA4\x1C\x00"
-							"\x39\xDB\xB6\x1F\xA7\x52\xA9\xC7\x73\x73\x73\x0D\x9C\x43\xE1\x9C"
-							"\x64\x32\x39\x2B\x8A\xC2\x72\x26\x9D\xBE\x99\x3D\xCA\x4B\xB6\xD3"
-							"\x42\x10\x00\x22\xCF\x42\x53\xE5\x56\x37\x08\x7E\x3D\x3C\x38\x5C"
-							"\x5E\xBE\x7B\x77\x1D\x67\x18\x9C\x59\x5D\x5D\x7D\x93\xE7\xB9\x07"
-							"\x4F\x9E\x3C\x7D\x75\xEF\xA8\xCE\xB1\x72\x1C\x46\x78\x1C\x10\x86"
-							"\xD0\xEC\x88\x28\x16\x4B\x6C\xCD\x7C\x31\x6E\x1E\x1F\xDF\x1A\xBF"
-							"\x7C\x79\x73\x6B\x6B\x2B\x83\x1E\x06\x3D\x0B\x0B\x0B\xD1\xD1\x78"
-							"\xFC\x5E\x2E\xFF\x62\xB2\xD0\x54\x40\x5F\xB8\x0E\x85\x84\xA1\x13"
-							"\x02\xC7\xE7\x01\x36\x04\x86\xD1\xE0\x75\x02\x04\xFE\x89\x61\x59"
-							"\x8D\x97\x66\xA6\xA7\xD7\xFE\x4C\x26\x4F\x68\xF4\xF0\x3C\xFF\x5E"
-							"\xB9\x5C\x9A\x35\x3D\x05\x26\x1F\xC3\x5F\xCD\x0E\x52\x0D\x07\x0D"
-							"\x06\xC8\x35\x5B\x28\x17\x0E\xD0\xDA\xFB\x1D\x05\xAF\x0F\x6A\x6C"
-							"\x0A\x7D\x46\x68\x5A\x51\xD5\xF7\xD1\x43\x87\xFB\xFA\xB4\x4E\xC7"
-							"\xBF\x43\xB1\x02\x32\x6D\x03\x45\x1B\xA8\x77\x00\x4F\xE0\xE0\x0B"
-							"\x02\x94\xC6\x21\xA2\x7F\xDC\xC7\x73\x57\x41\xC5\x67\xD1\xA0\xC2"
-							"\x18\x88\xC5\x21\xCB\xE4\xCE\xE2\xE2\xA2\x4E\x0F\x0F\x0F\x5F\x92"
-							"\x09\x19\x65\x24\x03\x99\x3A\x8D\x74\xC9\x41\xBA\xEE\xC3\xF2\x19"
-							"\xFC\xF4\xF3\x53\x24\x7E\xFB\x0C\xFC\xF8\xCB\x88\xCC\xDC\x80\x04"
-							"\xC0\x69\x71\x30\x22\x31\x70\x1C\x17\x0F\x82\x60\x90\x95\x15\x85"
-							"\x84\x42\x21\xA1\x4B\xB3\xE0\xDA\x5D\x0C\xD0\x2C\x22\x9A\x88\xC4"
-							"\x25\x82\xB1\xA1\x18\xB6\xC9\x3C\x6A\x57\xDF\xC0\x81\x45\x23\xE5"
-							"\x11\x04\x39\x07\xD7\x07\x55\xB8\xED\xB6\x90\xCF\xE7\x09\xED\x79"
-							"\x9E\xA5\x6A\x9A\xAD\x4B\x0C\xF4\xB0\x06\x4F\x31\xB0\x55\xED\x80"
-							"\xF7\x4E\x91\x6D\x74\x51\x9F\x78\x1B\x0D\x51\x87\x2B\x89\x90\x06"
-							"\xFB\x61\x0C\x18\x30\x14\x0E\xA6\x69\xDA\x99\x74\xDA\xA2\x37\x36"
-							"\x36\x4A\x15\xB3\xB2\x23\x50\x1E\x86\x46\x14\x1C\xC9\x32\xC6\x06"
-							"\x78\x24\xCD\x36\x56\x8B\x1A\x44\xA2\x62\xBF\xE2\x83\x95\x45\x30"
-							"\x82\x80\x5B\x93\xFD\xF0\x4F\x2B\x48\x67\xB2\xCF\x77\xF7\xF6\x0A"
-							"\x0C\x00\x4F\xD5\x34\x89\x61\xE8\xDB\xB7\x6F\x4C\x31\x27\xBC\x82"
-							"\x1A\x58\x64\x69\x03\x3E\x2B\xC1\x2A\x05\x70\xC1\x81\x0E\xF1\x18"
-							"\x95\x80\xF9\x58\x13\xDF\x7E\xF5\x85\xF7\xEC\xD9\xE6\xA7\xA6\x69"
-							"\xAE\x33\xE8\xA9\x55\xAB\xB9\x53\xDB\x9E\x10\xE0\x5F\x9B\x7B\x7D"
-							"\x12\x6D\xA2\xC3\x62\x05\x04\x1C\x07\xC2\xF2\x08\xE9\x2C\x66\x2E"
-							"\x06\x98\xBF\xE8\xE0\x87\x2F\xEF\x63\x6D\xED\xC7\xEF\x8B\xC5\xE2"
-							"\x27\xAE\xEB\x3A\x0C\x7A\x9A\x3D\xED\x56\x6B\x33\x93\xCD\x5E\x3B"
-							"\x35\x0B\xF1\x77\xAE\xF4\x53\x37\x87\x55\xBC\x72\x81\xC1\xEC\x60"
-							"\x17\x6F\x45\x1C\x44\xCC\x1D\x7C\xFD\xF0\x5E\xF0\xE8\xD1\x77\xBF"
-							"\x94\xCB\xE5\x8F\x2D\xCB\xCA\xA0\x87\xC2\x39\xB2\x2C\xC7\x75\x5D"
-							"\xFF\x30\x16\x8D\xBE\x9B\x48\x4C\x44\x47\x46\x46\x04\x8E\xE7\x71"
-							"\x6C\x9A\xEE\xCE\xEE\x6E\x3E\xB5\x9F\xFA\xA6\x54\x28\x7C\x6E\xDB"
-							"\x76\x1A\x67\x28\xFC\x9B\x20\x49\x52\x42\xD3\xF5\xD7\x54\x4D\x1B"
-							"\xE3\x38\x0E\xAE\xEB\xA6\x6B\xD5\xEA\x7A\xB5\x52\xD9\x06\xD0\xC6"
-							"\x39\x7F\x03\x12\xDF\x5D\xB7\xD4\xC5\x56\x33\x00\x00\x00\x00\x49"
-							"\x45\x4E\x44\xAE\x42\x60\x82", 871);
-			getPNGImage(png);
-		}
-		else if (url == "ie.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x03\x50\x49\x44\x41\x54\x38\x11\x8D\xC1\x7B\x68\x1B"
-							"\x75\x00\x07\xF0\xEF\xEF\xEE\x72\x49\x2E\x97\x47\xD3\x24\xC6\x3E"
-							"\xB2\xDA\x9A\x59\xD9\xDC\x2B\x48\xB7\x76\xCC\xC1\xA8\x3A\x10\xB6"
-							"\x15\x57\x14\xDC\x40\x10\x59\xE9\x98\xFF\xC9\x90\xE1\x98\x22\x88"
-							"\x22\x28\x43\x68\x51\x51\xD8\x10\xCA\x5A\x51\xD9\xF0\xB1\x39\xD8"
-							"\xAB\xDB\x1C\x76\x63\xF6\x61\xB3\xD4\x35\x49\x93\xA6\x79\xF4\xD2"
-							"\xBC\x93\xBB\xDF\xFD\x0C\xAC\xC2\x10\x84\x7D\x3E\x04\x8F\x88\x95"
-							"\x86\xAD\x48\xFE\xEE\x67\xCA\xC2\x1A\x54\x8A\x45\xA6\xD3\x5B\x7C"
-							"\xCF\x75\x85\xE0\x7F\xF4\x9D\xBE\xDD\xD0\xD8\xE2\xEE\x5C\x67\x59"
-							"\x6C\x3E\xE8\x3E\xEB\xB3\x96\xA6\x7A\xD5\x42\xCA\x66\xD2\xB2\x77"
-							"\x41\xB9\x02\xA8\xBE\xC8\x74\x3A\x2C\xE0\x3F\xF6\x7F\x75\x4D\x7A"
-							"\x3A\xD0\xDE\xDF\xE0\x34\xBF\xE9\x37\x46\xD6\x6F\x2C\xFE\x2C\xD1"
-							"\x6C\x90\xBF\x24\xEC\xC4\x38\xDF\x35\x3D\x95\x90\x7E\x1D\x19\xE5"
-							"\x7F\x64\xAF\xF7\xED\x04\x83\x8F\xC7\x43\xFA\xBF\xBE\x2E\x6F\xEE"
-							"\x79\xEA\x7D\x5F\xB3\xF9\x44\xB7\x69\xA2\x2D\xB0\xFC\x85\x71\xA5"
-							"\x54\xE1\xC6\x9B\x8E\x60\xDE\xFB\x12\x54\xC9\xEB\xD6\x78\xE9\x45"
-							"\xA7\x97\x16\x7B\xE9\xD8\x5D\x59\xAC\x96\x38\x3C\xA4\x73\x4B\xC7"
-							"\xA1\x26\x97\xE1\xF0\x36\xF6\x9B\xD1\x1F\x3D\x89\xD9\x94\x18\x39"
-							"\x6B\x1A\xF8\x36\xA8\xAE\x3D\x4D\xAB\x6A\xD8\x21\x73\xF0\x7A\x4C"
-							"\x76\xD7\x63\xD6\x13\x47\x73\xEF\x6D\x03\x66\x63\x1C\x56\xF5\x8F"
-							"\x05\xFD\x4E\x1B\x06\xBA\x70\xD1\xD0\x1A\xFB\x06\x93\x19\xF7\xC4"
-							"\x68\xBA\xB7\xEF\xAD\x0F\xD6\xBD\x76\xAC\x49\x3A\xF0\xF7\x64\x6C"
-							"\x7F\xAD\x54\x9D\xB6\x5A\x78\x38\x1D\xA2\x23\x6A\xDE\xF8\x6A\xF3"
-							"\x4F\x17\x64\x0E\xAB\x7C\x0D\xDA\x8E\xAD\x86\x9B\x4F\xB4\x2D\x9D"
-							"\xC2\x9F\xEC\x59\xFD\x07\xD3\xE0\x97\x27\xCF\x3D\x3E\xB5\xB7\xFB"
-							"\xAA\xBC\x67\xF8\x8A\x75\xEC\xB3\x0B\x93\xD9\x64\xEE\x8C\x81\x07"
-							"\x64\x89\x87\x68\x16\xB7\x58\x9B\xDC\x9B\x09\xEA\x82\xF3\xE7\xF9"
-							"\x12\x4D\x0F\xB5\x6B\xBF\xBC\x71\xBF\xE4\xC1\xCD\x27\xDF\xD1\x0B"
-							"\x35\xE3\x2C\x61\x2C\x07\x80\xE0\x01\x46\x38\xE2\x12\x2D\xC6\x8E"
-							"\x44\x46\xC3\xED\x99\x3C\x0D\xCD\x24\x0F\x0B\xA8\x6B\xF7\xC4\x37"
-							"\xA8\xE9\x5B\xDB\x23\x4B\x2A\x2E\xFB\x06\xC0\x89\x76\x70\xB4\x6A"
-							"\x63\x8C\x88\x00\x08\xFE\x45\xA0\x97\x0B\xD5\x60\xA5\xA8\x42\xAB"
-							"\xD4\x74\x5D\xD3\xCA\x02\xD5\xCE\x9B\xB8\xC2\xD5\x5D\xB9\xE4\x5C"
-							"\xCB\x77\xB5\x43\x28\x72\xAD\xF0\xA8\x1A\x8D\xCE\xA5\x8E\x45\xEE"
-							"\x25\xCF\x99\x24\x51\xC0\x03\xAC\x94\x2F\xF3\x4C\x87\x50\xAE\xE8"
-							"\x48\x66\x35\xA8\x4A\x25\x23\x40\xCF\x78\xA0\x4C\x06\xE2\x69\xEE"
-							"\xAF\x2B\x5A\xA0\xAD\xB3\xA4\xBA\x74\x9B\x68\x70\x79\x6D\xCF\x87"
-							"\xEE\x44\xC6\xCE\xBC\x12\xC8\xA3\xEE\xE0\xE8\x84\x63\xD3\xD6\x8E"
-							"\xA3\x94\x13\x36\xCC\xC7\x6B\x58\x09\x65\x43\x6A\x22\x74\x5C\x40"
-							"\x79\xCE\xC9\x94\xC5\xE6\x16\x5A\xF8\x38\xB5\x82\x1D\x2E\x45\x1D"
-							"\x6C\xB0\xF1\x70\x38\x2C\x2F\xF7\xEC\x7E\xC6\xBC\x69\x7A\xE9\x7B"
-							"\x10\x08\xB2\x43\xDA\x27\xCA\xE6\x17\x32\x79\x5D\x28\x43\x67\x35"
-							"\x9D\x1C\x8F\x7E\xB2\x5B\x11\x48\x2E\x2C\xA1\x5C\x86\x5D\x54\xEE"
-							"\xC4\x62\xA5\x1B\x2E\x07\xB7\x5E\x96\xF8\xE7\x78\x4E\x34\xC8\x76"
-							"\xCB\x5E\xC9\x2E\xED\x41\x1D\x65\x84\xAC\x14\x28\xE2\xC9\x0A\xCB"
-							"\x2C\xE5\x47\xB2\xD1\xC4\xE7\xA8\xE3\xA0\x23\x0D\x5D\x50\x19\x2C"
-							"\xBE\xF8\xDB\x6B\x23\x8D\x89\x1B\x83\xD9\xE8\xC2\x48\x78\xA1\xA8"
-							"\xC4\x53\x35\x64\x72\x94\xA4\x73\x94\xC4\x92\x55\x16\x5E\x28\xC6"
-							"\x16\x23\xCA\x87\xA9\xFB\xF1\x23\xA1\x77\xB7\x2F\xA3\x8E\x50\x76"
-							"\x8A\x27\xE3\x43\xFB\x50\xC9\x77\x03\xEA\x1F\x84\x54\xEF\x5D\x4C"
-							"\xFA\xC3\x1F\xB1\x4F\xD7\xD8\x1B\x2D\x5D\x26\x93\xA1\x95\x81\xD1"
-							"\x72\x51\x9D\x5B\x4E\xE5\xAE\xCD\x8E\xCF\x04\x63\x43\xFD\x14\xAB"
-							"\x08\xEA\xF4\xE0\x01\x82\xF8\x94\x15\xB4\xC2\x03\x2C\xCF\xED\x9A"
-							"\xD1\xF0\x88\xFE\x01\xAA\x49\x94\xA9\xE6\x22\x1B\x06\x00\x00\x00"
-							"\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 905);
-			getPNGImage(png);
-		}
-		else if (url == "vlc.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x02\x20\x49\x44\x41\x54\x38\xCB"
-							"\x9D\x93\x4F\x48\x53\x71\x00\xC7\x3F\xBF\xF7\xDE\xDE\xDE\xB6\xE7"
-							"\xDE\x66\x30\x65\xFE\xEB\xCF\x92\x4A\x4A\xEC\x3F\x2E\x0B\xA2\xEC"
-							"\x10\x8C\x52\x30\xA3\x4B\x97\xEA\x10\x81\x78\x52\x28\x08\x3A\xD5"
-							"\xA9\x82\xB2\x82\x4E\x46\xC7\x0C\x22\x21\xE8\xCF\x41\xA8\x40\xC2"
-							"\x29\xE4\x44\x49\x62\xA6\x92\x6B\xBA\x5A\xC6\xB6\xB7\xED\x75\xC9"
-							"\x2E\x6B\xB6\xFA\x5E\xBF\x5F\xBE\x7C\xBE\x87\x2F\xAC\xA2\xF0\x39"
-							"\xED\x62\xF8\x8C\x72\x99\xFF\xD1\x83\x0E\x6F\xF5\x7C\x17\x56\xAC"
-							"\x1B\xAB\xFF\x58\xD9\xBA\x62\x39\xA9\x98\x91\xAF\x0D\x1E\x92\xAA"
-							"\xB6\x62\xF9\x1B\xB0\xD6\xEF\x6F\x2D\x96\x53\x8A\x19\xD6\x9E\xB3"
-							"\xA1\x58\x53\x23\x19\x33\x4B\x7A\x64\x2C\x04\x4F\xEF\x96\x4C\x70"
-							"\xF5\x46\x9F\xEE\xF6\x94\x1F\xB0\x84\x82\x90\x6C\xB8\x74\x77\xF0"
-							"\xDA\xCD\x3E\x4F\xC9\x04\x6B\xC2\xF7\x9A\xAB\x8C\xD6\x72\xBB\xDA"
-							"\x84\x2A\x43\xF5\xEC\xB0\x91\x1C\x7E\xD1\x02\x3C\x29\xA9\xC0\x58"
-							"\x8C\x84\xFC\xC3\x23\xB8\xC3\xA0\x1A\x60\xC4\x60\x76\xC1\x1E\xFA"
-							"\x53\x41\xC1\x84\xDB\x27\xEB\x65\xB7\x95\x3A\x22\x2B\x60\x01\x79"
-							"\x40\x75\x42\x59\x3E\x7D\xF8\xCE\xA9\x4D\xB6\xBF\x16\x24\x76\x75"
-							"\x35\xE4\xB6\xB7\x05\xB2\xC6\x5A\x72\x36\x9D\xAC\xAC\x93\x31\x6A"
-							"\x31\x1B\x8F\xD6\x2D\xED\xBC\xB0\x6D\xD5\x09\x1F\xEE\xB7\x7B\x07"
-							"\x13\x5F\xDA\x53\xCD\xDD\x7C\x2A\x77\xA2\xE6\x52\x08\x49\x90\x34"
-							"\x05\xC9\xCF\x09\xE4\xC8\x9B\xB6\x81\xF3\x5B\xA6\x8F\xDF\x1A\x5F"
-							"\x2A\x20\x88\x3E\x3C\xBD\x4F\x7B\x3D\x10\x35\x16\xA7\x2F\xD9\x1C"
-							"\x2E\x72\x42\x25\x6D\xF7\x92\x51\xBD\xE4\x25\x0D\x45\x73\xA0\x2E"
-							"\x7C\xEC\xF5\x4D\x8C\x47\x9F\xF7\xEC\x3D\x58\x40\xA0\xC5\x47\x3B"
-							"\x62\xCB\x79\xDD\x33\xFA\x08\x9F\x4F\x42\xDA\x10\xC4\x72\xFA\x90"
-							"\x64\x81\x2B\x39\x4F\xCD\xC4\x10\xE2\xFD\x63\xF1\x23\x8B\xEE\xCB"
-							"\xC4\x3A\x81\x97\x00\x02\x60\xEE\xD5\x15\xD9\xF5\xEE\xFA\x44\x7C"
-							"\x2A\x1E\x98\x99\x81\x4A\x0F\x38\x35\x50\x14\x81\xCD\x29\x90\x45"
-							"\x9E\x6F\x71\x98\x9C\x83\xAA\x6A\xA8\xDC\x6C\x44\xCD\x96\xDE\x40"
-							"\x45\x73\x8F\xA9\x00\x38\x48\x34\xDA\x95\x78\xC0\x5F\x0F\x5E\x0F"
-							"\xA4\x92\x20\xB2\x20\x59\x16\x92\x69\x21\x34\x28\xAB\x84\xDD\x35"
-							"\xE0\xA8\x00\xA1\x7D\xAD\x35\xB5\xE5\x1D\xC0\x5B\x05\x40\xCF\x0C"
-							"\x75\x2A\x1B\xFD\x00\xD8\xEB\x80\xEF\x2B\x87\xF8\xC5\xB8\x32\xD4"
-							"\x05\xE8\x80\x0C\x4A\x6A\xF0\xC4\xEF\x82\x67\xFD\x63\x93\xDE\x6C"
-							"\xEA\x9F\xDE\x9A\x76\x2F\x46\x00\x7E\x02\x6B\x20\xAD\x2C\x4A\xE3"
-							"\xCD\x0E\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 622);
-			getPNGImage(png);
-		}
-		else if (url == "fb2k.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x04\x00\x00\x00\xB5\xFA\x37"
-							"\xEA\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x01\x4C\x49\x44\x41\x54\x28\xCF"
-							"\x6D\x91\x3D\x28\xC4\x71\x1C\xC6\x9F\xDF\xEF\xDC\xFD\x4F\xE9\xF2"
-							"\x9A\xAB\x43\x28\x49\xC9\x62\xF0\x32\xB8\x52\x5E\xCA\x6D\xC2\x60"
-							"\x10\x16\x59\x44\xD8\x2E\x65\xB1\x5B\xA4\x2C\x22\xDB\x95\x41\x57"
-							"\x36\x2F\x25\x79\x49\x62\x21\x13\x65\x40\x4E\x49\x9D\xB7\xFB\x18"
-							"\x9C\xEB\x0E\x9F\xF1\xFB\xF4\x3C\xDF\x7A\x1E\x29\x89\xF1\xE7\x76"
-							"\xC9\x25\x49\x72\xF9\xDA\x6D\xA9\x32\x31\x39\x9D\x8B\x87\x77\xEE"
-							"\x26\x79\xE5\x64\xD5\xEF\xDC\x76\xAF\x18\x5F\xBA\xEE\xF1\x04\x6F"
-							"\x5E\x60\x66\xDF\xD6\xD9\xDA\xC9\x6D\xB8\x8B\x7B\x3B\xE4\xA4\xEC"
-							"\xA6\x28\xB4\x0A\x00\xC7\xB1\xA3\xC7\x04\x00\x7D\x11\xE3\x97\x49"
-							"\xFA\x5D\x0D\x27\x31\x7E\x71\xF9\x9C\xD5\x92\xCC\x30\x79\x15\x61"
-							"\xFE\xA1\x66\xCE\x14\x7C\x3F\x08\xF4\xAD\x87\x68\xE6\x3C\x25\x5D"
-							"\x10\xA4\x95\xE1\x4D\x5B\x26\x23\x19\x5B\x36\xB6\xDD\x86\xC8\xE7"
-							"\x0A\x80\x6B\x8A\x11\xCD\x84\x0F\x6C\xA5\xAC\x64\x8C\xBF\x27\xB2"
-							"\x86\x10\x21\x00\x7A\x11\x62\x89\xC1\xA8\x09\xC8\x48\x32\x39\x45"
-							"\x23\x1F\x89\x11\x84\x8B\x77\x12\x64\x23\x06\xF8\x24\x30\xF1\xD3"
-							"\x85\x35\x25\x53\x5B\xB0\x47\x14\x80\x4D\x76\x81\xD9\x7D\x5B\x9E"
-							"\x6C\x56\x92\xDB\xDD\x78\x70\x0F\xB0\xC0\x3C\x00\x67\x31\xA7\x45"
-							"\x9E\xF4\x2E\x9D\xC2\xFE\x87\xF8\x06\x8B\x2C\x13\xE1\xE9\xAD\x78"
-							"\x48\xDE\x5F\x6B\xC8\xA9\x1C\x3B\x79\x07\x38\xFD\xA8\x9E\xFE\x2B"
-							"\x4B\x92\xBB\x7C\xF4\x21\x1E\x7B\xAD\x1A\xCF\x0C\x4F\xC7\xFA\x3A"
-							"\x72\x43\xB2\xE9\xA7\x2F\x4C\x12\xCB\xB6\x7D\xA8\x6B\x13\x00\x00"
-							"\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 410);
-			getPNGImage(png);
-		}
-		else if (url == "wmp.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x02\x55\x49\x44\x41\x54\x38\xCB"
-							"\xD5\x93\x4B\x48\x94\x51\x14\xC7\xFF\xF7\x7E\xF7\x7B\xCC\xCB\xC7"
-							"\x8C\xAF\xD1\x31\xED\x81\xD1\xA6\x20\x22\x06\xAD\x45\x12\x6D\x82"
-							"\xA2\x08\x24\x42\xDA\xB5\x6F\x51\x50\xFB\x68\x23\x84\xBB\x96\x41"
-							"\x9B\xB6\x25\x84\xDA\x26\x8A\x94\x28\xA5\xA8\xA6\x30\x35\x23\xD4"
-							"\xC6\x79\xE9\x38\xE3\x7C\x8F\x7B\xEF\x69\x61\x46\xE3\xBA\x4D\x67"
-							"\x73\x76\x3F\x7E\xE7\x7F\xCE\x01\xFE\xFB\x62\x00\x70\xFD\xF1\x7C"
-							"\x6F\x22\xE6\x1C\x06\x10\xE3\x0C\x61\x00\xA6\x25\xB8\x30\x18\xB3"
-							"\x0C\x0E\xD3\x36\x85\xE0\x06\x17\x9B\x1B\x1B\x99\x8A\x62\x8B\xC2"
-							"\x09\x7D\xB8\x7D\xA2\xC3\x05\x00\x01\x00\xC9\x78\xE4\xF2\xD1\x7D"
-							"\xED\xA9\xB2\x1B\x9C\xB1\x75\xCD\x4A\xAC\xBF\x8F\xDB\xBA\xC6\xCA"
-							"\xD1\x3E\x7F\x2B\xDA\xED\x81\x73\xF2\x03\x65\x69\xA5\x0A\x51\x2D"
-							"\xB3\x39\x1F\x77\x00\x4C\xFC\x01\x70\x06\x80\x48\x8B\xD5\x99\xC6"
-							"\xFE\xC5\x91\x44\x48\x6F\x71\x88\x30\x60\x37\x44\x7E\xB4\x9C\xF6"
-							"\xBE\xF5\x5C\x2C\x49\xCD\x51\xF1\x14\x79\x41\x40\x9F\x4A\xA4\x77"
-							"\x46\x10\x00\x50\xA8\x2A\x35\x97\x2D\xAD\x5F\x98\xB9\x11\x0F\x1F"
-							"\x1F\xE6\x3C\xD4\x04\xF9\x72\x14\xE4\xCE\x21\x55\xCC\xDA\x55\xB3"
-							"\x3D\x5A\xE9\x18\xA8\x19\x8C\x18\xDF\x95\x01\x07\x00\x5F\x6A\x74"
-							"\x2F\x4F\x1C\x6B\x74\x0B\x06\x8B\x26\x21\x8E\x0C\xC1\xBA\xF2\x08"
-							"\xBC\x2B\x0D\xBD\xB6\x84\xD4\xE7\x87\x61\x59\xAD\x30\x02\x49\xCE"
-							"\xB6\x73\xAB\x03\x30\x06\x24\xCA\xF3\x9D\x14\x10\xA0\xB7\xED\x78"
-							"\xF3\x1E\x58\x43\xF7\x61\x0E\xDE\x84\xB3\xFA\x91\xBB\x9B\x65\x26"
-							"\x95\x96\xBE\xD2\xFE\xDF\x00\xF1\xBB\x13\x31\x2B\xD8\x06\x80\x76"
-							"\xB6\x03\xE9\x41\xE5\x97\xA1\x03\xA0\x2A\x49\x06\x80\xD2\x80\x4C"
-							"\x36\xDA\xBC\xCE\x80\x08\xC8\xB7\xA7\x17\xC8\x27\x90\xD2\x20\x22"
-							"\xC8\xAF\xD3\xD8\x1A\xBD\x84\xE0\xF9\x03\x94\x22\x07\x24\x8F\x34"
-							"\xF8\x96\x30\xE0\x08\x03\x51\xDB\x60\x75\x06\x04\x60\x35\xD9\x3F"
-							"\x9B\x6D\x4D\x9F\x4B\xCE\x3E\x75\xD4\x97\x69\x04\x6F\xC7\x00\x29"
-							"\x01\x26\xF0\xEE\xD0\xD5\x22\x0F\x37\x48\xF2\xD6\xA1\x88\x21\xBB"
-							"\xE1\xE9\x7A\x03\x30\xE6\x93\x21\x27\x07\x46\x16\x7F\x52\x53\x21"
-							"\x78\x3D\x06\x72\x03\xF8\x91\x94\x9E\x1A\xBC\x9B\x5B\xD9\x7B\x2A"
-							"\xE7\x4A\x42\xC5\x0D\x58\xAE\xB4\x69\x8C\xDF\xBB\xE5\x00\x08\x01"
-							"\x60\x02\x00\xB2\x0B\x99\x29\x77\x65\x2E\xCD\x80\xA9\xEF\x2D\xC3"
-							"\xA9\xCE\xF3\xD7\xE2\xB6\x72\xA9\x64\x36\x0B\x32\x9D\x30\xAB\x78"
-							"\x96\x94\x81\x59\xCC\x17\xEC\x62\x6E\x2D\x56\x5A\xCA\x30\x00\x26"
-							"\x80\x1A\xDB\x7D\xDB\xA9\x64\x17\x3F\x78\xF2\x6C\xBC\xB5\xB7\xAF"
-							"\x27\x96\x68\x6B\x73\xA2\x0D\x2D\xCC\x74\x3A\x88\xF1\xFD\x6F\x9E"
-							"\x3D\x79\x91\x79\x35\x3E\x59\x5E\x9E\xCF\xFF\xB3\x67\xFA\x05\xB0"
-							"\xB4\x12\x06\x04\xED\x6B\x1E\x00\x00\x00\x00\x49\x45\x4E\x44\xAE"
-							"\x42\x60\x82", 675);
-			getPNGImage(png);
-		}
-		else if (url == "icecast.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x02\xC7\x49\x44\x41\x54\x38\xCB"
-							"\x95\x92\x6B\x48\x93\x61\x14\xC7\x5F\x4B\x53\xBA\x78\x63\x66\x89"
-							"\x48\x89\x15\x95\xB7\xC4\xB4\x54\x4C\xA4\xCC\x10\xDC\xE5\xD5\xCD"
-							"\xCD\x4B\xD2\x74\x73\x7B\xA7\x73\xCB\xCB\x34\x35\xDC\xE6\x6D\xF3"
-							"\x92\xBE\x86\x69\x5E\xD2\xA6\xA9\x65\x98\x64\xA0\x29\xD2\x97\x0C"
-							"\xF1\x43\xA0\xF5\x41\x41\xBA\x48\x44\xA9\x88\xFA\xC5\x20\xFE\xBD"
-							"\x5A\x94\x5D\x2C\xFB\xC1\x03\x0F\x87\x73\xFE\xE7\xFF\x3C\xE7\x10"
-							"\xC4\x37\xEC\xEC\x1D\x59\xD6\x36\xF6\xE6\xC4\x06\x12\x94\xBD\xB6"
-							"\x11\x31\xA5\x07\x36\xC6\x76\xED\xB6\x71\x26\x36\xC3\xD6\xCE\xC1"
-							"\x92\xC5\x72\xDA\xB9\x76\x17\x52\x77\xEC\xE5\xC5\xD3\x63\x6C\x71"
-							"\xCB\x4B\x6F\x7F\xAE\x0B\x6B\xAF\xD3\x0E\xE6\x58\x12\xFF\xC2\x9E"
-							"\xB5\xDF\x2B\x30\x4C\xE1\x46\x95\xCE\x4C\xA8\x6A\x57\x20\x50\x0D"
-							"\x22\x22\x8E\x9E\x3E\xE4\xEA\x11\x4F\x6C\x05\x21\xD5\xE9\x1C\x97"
-							"\xD6\xF3\x5C\xAE\x7F\x01\x35\xBD\x82\xE8\xD4\x5E\x84\x73\x34\x88"
-							"\x4C\x6C\x78\xE5\x1B\x28\xF4\xF8\x6B\xF1\xC5\x8C\x01\x57\x85\xE1"
-							"\xCD\x8C\x9A\xE9\x9C\xAC\x19\x42\x6E\xC5\x38\xA2\x04\x99\x88\x52"
-							"\xF4\x22\x2A\xB5\x0F\x91\x97\x9A\xDF\x05\x9F\x4F\xF5\xF9\x63\xB1"
-							"\x88\xEA\x3C\x4C\x95\xBD\x7E\xAB\xAA\x59\x84\xC6\x30\x8A\xB2\x0A"
-							"\x13\x8A\x75\x85\x28\xD1\xEA\xD0\x7D\x6F\x18\x42\x49\x0D\x48\x46"
-							"\x84\x9D\xD4\xFA\xE1\x64\x50\xAC\xDF\x2F\x9D\x07\xBD\x52\x8D\xB3"
-							"\xEF\xD5\xF4\x32\xA4\x97\xDB\x61\x2C\xD2\xE2\x6E\x67\x07\x5A\xAF"
-							"\x57\x43\x2D\x15\xA3\xDD\x74\x1B\x55\xE5\xD5\x50\x66\xD1\x8C\x9B"
-							"\x07\x8C\x48\xDB\x62\xD0\x39\x2A\x74\xBD\x38\x4E\xD5\xEF\xAB\x30"
-							"\xCE\x7E\x5C\xB3\x4D\x15\x8E\x21\x2F\x27\x07\x49\x7C\x36\x2A\x4B"
-							"\xAA\xD0\xD6\xDC\x08\x89\x58\x8A\xDA\xEA\x6B\x68\x6F\xAA\x47\x7E"
-							"\x86\x06\x22\x49\x2D\x48\x45\x1F\xB8\x92\x8E\xE5\x80\xB3\xB2\x30"
-							"\x82\x2F\xEF\xEE\x11\x65\x3E\x81\x48\x3D\x00\x95\xBA\x10\xC3\x43"
-							"\x8F\x31\x36\xFA\x14\x94\xF2\x0A\x0C\xBA\x22\x94\xE8\xB5\x28\xC8"
-							"\xD1\xA0\xAD\xE5\x16\x5A\x1B\x6E\x40\x9F\x97\x8B\x70\x6E\x2E\x42"
-							"\x48\x03\x4E\x5F\xC8\x7A\x46\xB0\x13\x6A\xF7\x90\x29\x5D\x43\x9A"
-							"\x02\x1A\x0B\xF3\xF3\x98\x9B\x9B\x83\x20\x5A\x80\xF8\x58\x11\x74"
-							"\x45\x34\x04\x31\x72\xA4\x48\xE5\x50\x29\xD3\xC1\xE1\x70\xB0\xBC"
-							"\xBC\x82\xD2\xB2\x4A\x78\x9C\x8A\x1F\x77\x3B\x7A\xC6\x71\xFD\x19"
-							"\x64\x22\x6D\x55\x90\x9D\xBD\x60\xA2\x8D\x28\xD7\x5E\x45\x86\x2A"
-							"\x1D\x89\x62\x35\x63\xD3\x04\x9F\x10\x39\xBC\x03\xE2\x50\xA4\x2B"
-							"\x85\x97\xA7\xDF\xA7\x7A\x83\xEE\x73\x53\x4D\x15\xB8\x5C\x7E\xE8"
-							"\xF7\x4F\x64\xB6\xCF\x6A\x64\x64\x64\x61\x75\x75\x15\x75\x75\x75"
-							"\x98\x9C\x9C\x84\x48\xAC\x07\x4F\xD6\xFD\x55\x20\x58\x8E\xE3\x3E"
-							"\x1C\x3C\xEC\x7F\x34\x31\x35\x35\x35\xB4\xB4\xB4\x04\x83\xB1\x3C"
-							"\xED\xB7\x51\x5A\x5B\xDB\x99\x85\xF3\xF2\x6F\xF2\xA5\x8D\x88\xA2"
-							"\xEE\xFF\x24\xE0\x1D\x2C\xC3\x31\xF7\xD0\x1E\x07\x6B\x5B\x4B\x26"
-							"\xCF\x62\xD3\x65\xE2\x0A\xF5\xE6\xA4\xA4\xAD\x9E\x64\xC6\xF5\x43"
-							"\x40\x06\x4F\xFF\x18\xD3\x3E\x67\x77\x0B\x62\xAB\x90\xC9\xAD\x95"
-							"\xBC\x94\xAE\x75\x81\x23\x3E\x3C\xDA\xCD\xE5\xE0\x76\xE2\x7F\x60"
-							"\x9C\x98\x45\xF0\x8B\xCB\x4E\xF8\x91\x2D\x4C\xE7\x6D\x9B\xE5\x7D"
-							"\x01\xA7\x4F\x5F\xE6\xC8\x50\xBB\x4A\x00\x00\x00\x00\x49\x45\x4E"
-							"\x44\xAE\x42\x60\x82", 789);
-			getPNGImage(png);
-		}
-		else if (url == "html5.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x01\x9F\x49\x44\x41\x54\x38\xCB"
-							"\x9D\x93\xCF\x4B\x02\x41\x14\xC7\xF7\x8F\xF0\xE8\x39\xED\x26\x1D"
-							"\x82\x08\xAA\x83\xD0\x29\x22\x82\x2C\x28\xD1\x48\xA8\x4B\x25\x88"
-							"\xD4\x29\x41\x88\xF5\x10\x74\x10\xBA\xF4\xC3\x2E\x21\x44\x10\x1D"
-							"\xCB\x4E\x92\xE0\xC9\xE8\x90\x1E\x3A\xA5\xEE\xB8\xAE\xAB\x64\x98"
-							"\x85\xD9\x6B\xE7\x35\xBB\x8C\xAB\x16\xF4\xE0\x0B\xBB\xCC\x77\x3F"
-							"\x33\xF3\x7D\x6F\x85\xC2\xD4\x80\x45\x13\xFC\x53\x16\x81\xD6\x6F"
-							"\xA6\xDA\xB2\xBD\x4B\xEA\x92\x1D\xD7\x04\xBD\xB4\x97\x3C\x7E\xE0"
-							"\x1A\x82\xA2\x77\x8C\xD3\x38\xBC\x6E\x39\x3B\x54\x5F\x1F\x06\xD5"
-							"\x8D\x80\x3C\x0F\xC8\x50\x00\x89\xEE\x80\xA2\x28\x86\x54\x55\x05"
-							"\x73\x35\xE3\xBB\x50\x59\x44\x40\x86\x07\x24\x28\x40\x12\x37\xF1"
-							"\xC3\xF2\x53\x0E\xE4\xE4\x35\x28\x77\x37\xD0\xCA\xA5\x3B\xD4\xD8"
-							"\xF7\x81\xB2\x60\xA3\x80\x04\x0F\x88\x21\x20\xE0\x42\x40\xE9\xF2"
-							"\xD4\xC8\xE0\xC5\x37\xD8\xA5\xF2\x3C\x02\x62\x3C\x40\xA4\xE6\xE2"
-							"\xEA\xE4\xCF\x09\xB2\x0F\x40\x0E\x45\x28\x1D\x45\xE0\xFD\x2A\xDA"
-							"\x21\x9A\x81\x3C\x87\x00\x91\x07\x04\x70\x47\xF7\xE8\x9F\x19\xD4"
-							"\xFD\x23\x40\x66\x11\x10\xE0\x01\x1E\xFD\xC8\x34\x07\x5D\x24\xE2"
-							"\x87\xB7\x93\x6D\xD4\x57\xB3\x81\x00\x7A\x05\x69\x06\xBD\x1E\x1E"
-							"\xE0\xD4\x01\x72\xEA\x16\xAF\x60\xCE\x80\x56\xBB\x4A\xF0\xB9\x38"
-							"\x8D\x6B\x4E\x1E\xE0\x30\x00\xF7\x69\x3C\xBE\xB4\x17\xC4\x2B\xD5"
-							"\x83\x13\xD0\x3C\x0B\x23\xE0\xF3\x39\x8B\x00\xE6\x75\xF0\x00\xAB"
-							"\x01\xA0\xED\xEB\x93\x41\xEB\x31\x85\x93\xC8\xBC\x56\x81\x2F\x63"
-							"\x7C\xB5\x69\x94\xC2\x6B\x50\xBA\x38\x86\x8A\x36\x0F\x6D\xA5\x00"
-							"\x1F\xC9\x73\x68\x1C\x6C\x60\x07\xAA\x5E\xD3\x18\x73\x00\xD2\xEB"
-							"\x5F\xE0\xFB\x4F\x77\x67\x33\x40\x7A\x01\x42\x9A\xB2\x66\x00\x9D"
-							"\x7B\xD9\x65\xD3\x93\x07\xE6\x09\x09\xFD\x8A\xE5\xB1\xA2\x29\xAE"
-							"\xA9\xC6\x14\x67\xAD\xB6\x9A\xFD\xDF\x6D\xBF\x3E\xC4\xFD\x38\xE7"
-							"\x3F\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 493);
-			getPNGImage(png);
-		}
-		else if (url == "flash.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x01\x15\x49\x44\x41\x54\x38\xCB"
-							"\x95\x93\x41\x8A\xC2\x30\x14\x40\x7F\x3D\xC1\x78\x84\x7A\x04\x0F"
-							"\x20\x88\x5A\xAB\xAD\x8A\xB8\x1A\x10\xC6\xEE\xDD\x09\x6E\x5C\xBA"
-							"\x70\xA3\xCC\xC2\xBD\x17\xF0\x04\x2E\xBD\xC0\xE0\x09\xE6\x06\x95"
-							"\x42\xA1\x50\x28\xFD\x93\x84\x64\xF8\x69\xD3\xA2\x81\xB7\x69\xF3"
-							"\xDE\x4F\x03\x05\xDF\xB2\x70\xC2\x98\x02\xE0\x8C\x30\x95\xF0\x77"
-							"\x7C\x8F\xC7\x18\x37\x1A\x82\x91\xC4\x65\x40\x6D\xC0\xAA\x0E\xB8"
-							"\xA6\x80\x06\x91\x45\xC0\x30\x5D\x0B\x28\x94\x48\xE5\xFD\x7C\x8E"
-							"\xBF\x8F\x07\xF2\x65\x0C\xD4\xF1\x1D\x04\x48\x17\x95\x87\x3C\xC0"
-							"\x8F\xE6\x15\x24\x4F\x12\xB4\x5A\x98\xE7\x39\xC6\xCF\x27\x9E\x56"
-							"\xAB\x92\x2C\x02\xEA\x62\x3C\x82\x7A\x76\xBB\x5C\x30\xCB\x32\xDC"
-							"\x76\xBB\x46\xD9\xE1\x81\x11\x11\x28\x5F\xB6\x8D\x69\x9A\x6A\x50"
-							"\x59\x0B\x98\xB8\x1E\x8F\x98\x24\x89\x06\x15\x15\xE0\x92\xA3\x71"
-							"\x16\xCD\x26\x9E\xD7\x6B\x8C\xE3\x58\xB0\xE9\x74\x4A\x53\x15\x03"
-							"\x53\x20\x8A\xA2\x7F\x0E\xCB\x65\xA5\xA8\x80\x61\xE1\xBB\xC2\x30"
-							"\xC4\x9F\xFB\x1D\x77\xBE\x5F\x12\x8B\xB2\x08\x38\x86\x8B\x71\x5E"
-							"\x10\xFB\x12\x70\xDE\x90\x74\xD9\x12\xC0\xA0\x66\x63\xD5\x54\x2E"
-							"\xF6\x24\x20\x97\xCD\xF8\x7C\x03\xF6\xBF\x41\x9B\xF1\xF1\x07\x5A"
-							"\x4C\x80\x8C\x91\x5C\x9B\x60\x00\x00\x00\x00\x49\x45\x4E\x44\xAE"
-							"\x42\x60\x82", 355);
-			getPNGImage(png);
-		}
-		else if (url == "rtb.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\xA9\x49\x44\x41\x54\x38\xCB"
-							"\xAD\x53\xC1\x0D\xC4\x20\x0C\xCB\x28\x1D\x25\x4B\xF4\xDF\x51\xB2"
-							"\xD9\x8D\x76\x95\x53\x19\xB8\xD6\x04\xA9\x3A\x24\x4B\xB4\xC2\xC6"
-							"\x4E\x82\x99\x5A\x11\x91\x70\xFF\x26\xF8\xBD\x5C\x11\x9E\x04\x33"
-							"\x8D\x4B\xCC\x35\x79\xDF\x3F\xB6\x6D\xFD\x20\xF7\x77\xE0\x3F\xCE"
-							"\x3E\x6E\x1E\x09\xD8\x47\xD4\x22\x3F\x4E\x94\x6D\xE6\xAF\xE2\xB4"
-							"\x82\x29\xDB\xC7\x51\x0B\x00\xC9\xBD\xF2\x74\xDB\x20\x81\x8C\x7D"
-							"\x15\x03\x48\xEE\x78\x0B\x0E\xF7\xD6\xAD\x45\x92\x3B\xB3\x49\x47"
-							"\x04\x85\x47\xB1\xE4\x32\xC2\x4A\x84\x35\x19\x1D\x25\x97\x45\xAC"
-							"\xAA\x0D\xF2\x3D\x66\x2B\xE2\xAC\x8D\xAB\x76\xB6\x36\xAA\x41\x52"
-							"\x31\x9E\x83\xE6\xF3\x51\x56\x22\x74\x21\x47\xF9\x2F\x8F\xE9\xE5"
-							"\x73\x3E\x01\x35\x60\x01\xA4\x93\x4C\xC0\x7E\x00\x00\x00\x00\x49"
-							"\x45\x4E\x44\xAE\x42\x60\x82", 247);
-			getPNGImage(png);
-		}
-		else if (url == "ps.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x04\x00\x00\x00\xB5\xFA\x37"
-							"\xEA\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\xE2\x49\x44\x41\x54\x28\xCF"
-							"\xA5\xCE\xBF\x2B\x04\x70\x00\xC6\xE1\xEF\x24\xC2\x9D\x23\x52\x26"
-							"\xD9\x0D\x97\xED\x22\x31\x28\x93\x01\x65\xB0\xF8\x03\xAE\x8C\xCA"
-							"\x20\x75\x83\x48\xE1\xE4\x72\x49\x91\xB2\xB2\x18\x64\x40\x16\x19"
-							"\xAE\x48\x91\xF2\xF3\xBA\x52\x2C\x06\x0A\x3D\x46\x91\x53\xF2\xCE"
-							"\x4F\x6F\x9F\x10\xFE\xB2\x9C\x82\x5F\x41\x9F\x61\xEB\xEE\x8B\xA3"
-							"\x84\x98\x3A\x8D\x92\xC5\x9E\xDA\x55\x19\xB3\xA5\x5C\xB3\x27\x3F"
-							"\x82\x88\x05\xE7\x6A\x55\xD8\x2D\x06\xD2\x4E\xD5\xAA\xB1\xE8\xC7"
-							"\x86\x88\x79\xC7\x62\xCA\xEC\x7D\x07\x2F\x2E\x25\x44\xA4\x3D\x18"
-							"\x90\xF2\xFE\x09\xDE\xDC\x59\x12\xD7\xA3\x5B\xA5\x19\x37\x46\x4D"
-							"\xCB\x98\x95\xF3\x2A\xE4\xF5\x6A\xD0\x22\xEB\x44\x87\xA8\x94\x21"
-							"\x5D\x56\x1D\x19\x54\x22\x29\x6C\x8B\x6A\xB2\x2C\x6B\x44\xA7\x88"
-							"\x09\x05\x67\x56\xB4\xAA\xD7\xEF\x42\x08\xE1\xDA\x81\x39\xE3\x76"
-							"\xB4\x29\x95\x32\xA9\x5A\x5C\x46\xDE\xAD\xC7\xAF\xA9\x57\xA6\xAC"
-							"\xD9\x70\xE8\x59\x08\x21\xEC\xDB\x14\xFE\xBD\x0F\x28\x4D\xB1\x81"
-							"\xCE\x50\xD3\x95\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 304);
-			getPNGImage(png);
-		}
-		else if (url == "mplayer.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\x9C\x00\x00\x0E"
-							"\xC4\x01\x75\xF6\x84\x81\x00\x00\x01\xBE\x49\x44\x41\x54\x38\xCB"
-							"\xB5\x93\x4D\x6B\x13\x41\x18\xC7\x97\x7C\x0A\x6F\x82\x37\xBF\x80"
-							"\x57\x3F\x81\x47\xD3\x83\xD4\x80\xF5\xE2\xCB\x21\xA8\xE8\x36\xC4"
-							"\x22\xE9\xC1\x1C\x12\x85\xE2\x41\x44\x6D\x11\xC1\x43\x63\x5A\xA5"
-							"\x9A\x88\x11\x8B\x07\xA1\x07\x6F\xBE\x20\xD9\x45\x21\x31\x11\xEB"
-							"\xEE\xEC\xEC\xEE\x64\x13\x4C\xF7\xE7\xCE\x56\xEA\x45\xD1\x06\xFD"
-							"\xC3\x33\xC3\xC0\xCC\xFF\x79\x66\xE6\xF7\x18\xC6\xFF\xD4\xCB\x0D"
-							"\x9F\xA5\xBB\x82\xB9\x79\x87\xE9\xE3\x9B\x1C\x38\xF8\x99\x3D\xFB"
-							"\xFA\xEC\xDD\xDF\xE3\x71\xD3\x67\x67\xA3\xA5\x14\x4A\x0D\x79\xFD"
-							"\x36\x62\xE5\x61\x40\x75\xC1\xE7\xDC\xAC\xC7\x19\x53\xFE\x36\xA6"
-							"\x8E\x6E\x6E\x1B\x5C\xF0\x24\xEF\xC7\x5B\xEC\x56\xC3\xD1\x38\x49"
-							"\x3A\xC0\x38\x24\x3C\x86\x4C\x26\x31\x48\x0C\x66\x3C\x9F\x49\xF5"
-							"\x2A\x0C\x31\x2E\x25\x57\xD0\x3A\x3B\xEB\x73\xF5\x5A\xC8\x8D\xDB"
-							"\x8A\xC3\xD3\x82\xC5\x3B\x16\xF5\x7A\x9D\x76\xBB\x4D\xA7\xD3\xA1"
-							"\xD7\xEB\x21\xA5\xA4\xDB\xED\x62\x59\x16\x51\x14\xB1\x1A\x2A\x8C"
-							"\x5B\x72\xBB\x82\x13\x79\xC9\x91\x63\x82\x99\x93\x5E\x3A\x2F\x2E"
-							"\x3D\x21\x9F\xCF\xA7\x51\xA9\x54\x28\x14\x0A\x14\x8B\x45\x6A\xB5"
-							"\x1A\xA6\x69\xE2\x38\x0E\x57\x82\xF0\x1F\x18\xAC\x27\x83\x56\xA8"
-							"\x62\x46\xA3\x18\xE1\xC5\xA8\x41\xCC\x20\x79\x20\xD7\x75\xE9\xF7"
-							"\xFB\xB4\x5A\x2D\x1A\x8D\x46\xBA\x56\xC9\x97\xEB\xF2\xB5\x4E\x27"
-							"\xC9\x0D\xFB\x87\xC1\xDF\xE8\xAB\xB3\xC5\xEA\x5A\xC4\x9B\x77\xDF"
-							"\xD2\xF5\x94\x9F\x54\xA0\x33\xC5\x71\xFC\xC7\xC3\x1F\x3E\x8E\xB9"
-							"\x38\xEF\x72\xBF\xBE\xC1\xF2\x4A\xC4\xBD\xE5\x88\x53\x09\x02\x29"
-							"\x4C\xD5\x05\xC1\x83\xB5\x90\x47\xCD\x20\x8D\xE6\xD3\x80\x67\xCF"
-							"\xE5\x4E\xAC\xBF\x90\x98\x73\x2E\xAE\x08\xC9\x64\x32\xE4\x72\x39"
-							"\xCE\x97\xBE\xFC\x44\x59\x73\xAD\xF9\xD6\x9C\x6B\xDE\x35\xF7\x9A"
-							"\x7F\xDD\x07\xBA\x1F\xBA\x9F\x02\xAE\xDF\x74\xB0\x6C\x9F\x6C\x36"
-							"\x8B\x6D\xDB\x94\x2E\x0B\x76\xDD\x5C\xA5\xB2\xA0\x5C\xF5\x29\x95"
-							"\x3D\x26\xEA\xCE\x5F\x19\x7C\x07\xD7\xA8\xAB\xC5\x53\x48\xD2\x2A"
-							"\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 524);
-			getPNGImage(png);
-		}
-		else if (url == "apple.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x04\x00\x00\x00\xB5\xFA\x37"
-							"\xEA\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\xAD\x49\x44\x41\x54\x28\xCF"
-							"\x63\x60\xC0\x02\x1E\xFD\x67\xC0\x0D\x2E\xFD\x8F\xFA\x5F\x86\x4F"
-							"\x41\xD4\xFF\xA0\xFF\xAB\xFE\xE3\xD1\xEF\x85\x5D\xFA\xD5\xFF\x26"
-							"\xA0\xCE\xB0\xFF\x9B\xFE\x9F\x03\x2A\x48\xFB\x9F\xF5\x7F\x1F\xAA"
-							"\xB2\xAC\xFF\x6E\x40\xBB\x93\xC0\x30\x0B\x0A\x91\xA4\xCF\x81\xA5"
-							"\xB3\xFE\x17\x01\x61\x1E\x18\x16\xFD\xBF\x86\xAC\x60\x11\xD0\xE6"
-							"\x24\xA8\x14\x04\x4E\x42\xB5\x60\xDA\x7F\x3F\xB0\xBD\x08\xD8\x86"
-							"\xAA\xE0\x10\x50\x41\x12\x8A\x82\xB4\xFF\xA7\xFE\xA3\x84\x9C\xDB"
-							"\xFF\x38\xA0\x20\x32\x8C\xFB\xBF\x0B\x59\x49\x1B\x50\x20\x09\x0D"
-							"\xDE\x42\x56\x70\x0D\x18\x0A\x51\x40\x45\x08\xB8\x0C\x3D\xB8\xB6"
-							"\x01\x15\x44\xFD\xAF\x02\x06\x18\xC8\xF8\xAA\xFF\x58\xE3\xF0\xDC"
-							"\x7F\x58\xB8\x30\x10\x0F\x00\x5E\x29\xAA\xB1\xD7\x27\xEE\x1B\x00"
-							"\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 251);
-			getPNGImage(png);
-		}
-		else if (url == "synology.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x04\x00\x00\x00\xB5\xFA\x37"
-							"\xEA\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\xAA\x49\x44\x41\x54\x28\xCF"
-							"\xB5\xD0\xCD\x4A\x02\x01\x18\x85\xE1\xEF\xFE\xAF\xC0\xBD\x84\x18"
-							"\x18\x22\xA1\x09\x35\x43\x19\x3A\x88\x3F\x19\x14\x49\x24\x41\xC5"
-							"\x40\xA6\x1B\x41\x21\x62\x9E\x16\x6D\x6A\xD1\xB4\xC9\xB3\x7E\x36"
-							"\xE7\x8D\xF8\x7B\x4A\xF7\x2F\xA0\x90\xDB\x94\x81\xB1\xB6\xBA\x87"
-							"\xDF\x41\x6A\xE7\xC9\xC8\x1C\x2B\xD7\x16\x66\xEE\x14\xE6\xFA\x76"
-							"\x22\xE2\x4A\xCD\xB9\xB5\x23\x5B\x03\xC7\x1A\x6E\x34\x25\x4E\x4C"
-							"\xF4\x45\xC4\xBB\xA5\x44\x22\x33\x96\xBA\x75\x86\x54\xC5\x0B\x86"
-							"\x22\xE2\xC2\xDA\x54\xD7\xAB\xAA\xCC\xB3\x0E\x4E\x1D\xC8\x2C\xF5"
-							"\x44\xC4\xBD\xA6\x8E\x37\x1C\x5A\x58\x19\x62\xE4\xD1\xA5\x96\xFC"
-							"\xAB\x43\x01\x26\x1A\xB6\x3F\x1E\x14\xDF\x43\x7D\x98\xCA\xF7\x95"
-							"\xBA\x1C\x7C\x02\xE6\xEF\xB0\xFE\x1C\xF5\x08\xB2\x00\x00\x00\x00"
-							"\x49\x45\x4E\x44\xAE\x42\x60\x82", 248);
-			getPNGImage(png);
-		}
-		else if (url == "roku.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x04\x00\x00\x00\xB5\xFA\x37"
-							"\xEA\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\x64\x49\x44\x41\x54\x28\xCF"
-							"\x63\x60\xA0\x0A\x68\xF8\xCF\x80\x04\x03\xFE\x2F\xF8\x8F\x43\x81"
-							"\x03\x5C\x51\xC3\x7F\xEC\x26\x00\x81\x16\x98\xA5\x80\x5B\xC1\x01"
-							"\x28\x1B\xC5\x1A\x64\x05\x0B\xA0\xEC\x03\xD8\x14\x2C\x00\xDA\xAD"
-							"\x00\x75\x28\x1E\x5F\x60\xB8\x00\x53\x41\x16\x4E\x05\x50\x3F\x30"
-							"\xE0\x56\xC0\xC0\x00\x71\x83\x01\x6E\x6F\x02\x01\x98\x1D\x8A\xEA"
-							"\x0B\x07\x30\x84\xF0\xB2\xA0\x3C\x8C\x00\x27\x13\x00\x00\x9C\xD5"
-							"\x79\xC4\xEC\xC2\x17\x58\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42"
-							"\x60\x82", 178);
-			getPNGImage(png);
-		}
-		else if (url == "itunes.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0B\x13\x00\x00\x0B"
-							"\x13\x01\x00\x9A\x9C\x18\x00\x00\x03\x87\x49\x44\x41\x54\x38\xCB"
-							"\x4D\x93\x4B\x68\x5C\x65\x1C\x47\x7F\xFF\xEF\x3E\xE6\x95\x9B\x99"
-							"\x49\x9A\xF4\x26\xCD\x98\x4C\x93\x4E\x1E\x6D\x93\x4A\x5D\xB4\x2A"
-							"\x49\xB5\x69\xD0\x2A\x05\x17\x62\x0B\x85\x16\x34\x98\xB8\x51\x17"
-							"\x52\x15\x25\x62\xC1\x4D\x21\xB5\xB8\xA9\xD9\xA8\xC1\x85\x94\x08"
-							"\x52\x04\x51\x3A\xA5\xA6\x25\x09\x18\x43\x8A\xAF\xD8\x94\x32\x49"
-							"\x9A\x99\x49\xEA\xCC\x9D\xB9\xF3\xBE\x8F\xEF\x73\x13\xC1\xB3\x3F"
-							"\x67\x77\x08\x00\x88\x88\x84\x10\x00\x20\xA2\xD1\x68\x74\xE4\xC4"
-							"\xC8\xB9\xC7\x3A\x3A\x87\xEA\x83\xE1\x56\x22\x62\x05\x33\x97\x5C"
-							"\x4B\xDC\x9F\x8D\xC7\xE3\xD3\xAB\xAB\xAB\xAB\x00\xC0\x18\x63\x9C"
-							"\x73\x4E\x3B\xB2\x00\x80\xF1\xB1\xB1\x77\x9F\x38\x72\xEC\x22\xF3"
-							"\x86\x64\xBF\x16\x86\xEA\xF5\x03\x20\xD4\x6A\x35\x54\x8A\x26\x78"
-							"\x25\xCB\x7F\x5B\x9A\xFD\xE4\xD3\x2B\x57\x3E\xFC\x2F\x42\x00\x08"
-							"\x80\x98\x98\x98\x98\x6A\x8E\xEC\x1F\xAD\xB1\x3A\xEC\x6E\xEB\xB0"
-							"\x55\x2D\x4C\xDE\x80\x46\x8A\x22\x13\x83\x10\x76\xB5\xCC\x93\x89"
-							"\x84\x62\xE7\xD3\x28\x6C\xFD\x39\x73\xE1\xC2\x3B\x2F\x03\x80\x04"
-							"\x00\xA3\xA3\xAF\xBD\xD5\xD2\x31\xF0\x7E\xD2\x84\xAD\xE9\xED\x54"
-							"\x91\x7C\x32\x17\x9C\x6D\xAF\xAF\xB0\x07\x77\xE7\xE9\xAF\x5F\x7E"
-							"\x66\xBF\xCF\xC7\xA5\x6A\x29\x2B\x78\xB0\xC3\x12\xAE\xE8\x1F\xE8"
-							"\x8D\xA8\xF3\x0B\x0B\x37\x65\x5D\xD7\xF5\xFD\x03\x47\x3E\x9E\xFB"
-							"\x23\x0D\x7D\xDF\x01\x29\x61\x82\x85\x79\x09\x73\x5F\x7F\x86\xBC"
-							"\x61\xC0\xB5\x1D\x08\xCE\xE1\x58\x55\xEC\xEE\xEC\xA5\xFE\xD8\x33"
-							"\xEA\xF2\xE2\x12\x9E\xEC\x3D\xF4\x5E\x77\x77\xF7\xB4\x74\xE6\xCC"
-							"\xE9\xF1\xED\x52\xDD\x8B\xC9\xB2\xC7\xA9\x78\x1B\xA5\x6A\x40\x07"
-							"\xC1\xC5\xFD\xF8\x35\x54\xCD\x02\x98\x2C\xC1\x13\x0C\x41\x0D\x68"
-							"\x20\xC5\x0F\xA7\xE5\x71\x4A\xA6\x32\x76\x29\x97\x97\x0E\x76\xEE"
-							"\x2A\xC9\xAD\x7B\xA2\xCF\xFE\xB4\x5C\x40\x35\x14\x21\xB3\xE6\x85"
-							"\x4F\x04\xC1\x6D\x07\x6A\x43\x03\xDA\x4E\x9E\x85\xDA\xBA\x0F\x4E"
-							"\xA8\x1D\x52\x31\x8B\xD4\x37\x97\xB0\x59\x91\x91\xE5\x75\xCC\x58"
-							"\x4B\xE2\xD4\xE1\xC8\x90\x6C\xB9\x6A\xDB\xCA\x46\x0E\x1E\x45\x25"
-							"\xC5\x0E\xC0\x2F\x87\x21\x39\x29\x68\x91\xBD\xA8\x3B\x79\x0A\x8F"
-							"\x92\x40\xCE\x06\x84\x53\x86\x6D\x39\x28\x59\x2A\x52\x25\x99\x0A"
-							"\x1B\x65\x94\x0E\xD6\xB5\xCA\xB6\x23\x60\x94\x3D\x40\x49\x05\xAB"
-							"\x79\xE0\xE5\x1E\xF8\x5D\x0E\x3B\x6B\xC0\x63\x00\x39\x47\x40\x09"
-							"\x10\x90\xC9\x21\x9D\x33\x61\x14\x81\x94\xE1\x02\x26\xC1\xB2\x38"
-							"\x98\x6B\x15\x37\x43\xC1\x26\x00\x3E\xC1\xFC\x0D\xD0\x75\xA0\xB1"
-							"\x1E\x10\x12\x83\xAD\x01\x3E\x96\x47\x76\xF2\x4D\xDC\xFB\xE0\x2C"
-							"\xDC\x5A\x0D\x92\xE2\x03\x1C\x8F\xF0\x06\x1A\x41\xBC\x9A\x62\xDB"
-							"\xA9\xBF\x6F\xC7\xF6\x34\x00\x65\x45\xC4\xFC\x15\xB4\x5F\xFF\x08"
-							"\xC5\x2F\x2E\xC2\x1B\xD0\x00\x0D\x70\x96\x6E\xC0\xF8\xF1\x5B\x48"
-							"\x66\x06\xF5\x5A\x3D\xB8\xA5\x02\x59\x9B\x77\xB6\xEC\x42\x3E\xF3"
-							"\x60\x4E\xCA\x65\xD3\x1B\xCF\x0F\x8F\xBC\x3E\xBF\xA1\x7B\xFA\xA5"
-							"\x59\x2E\x96\x67\x88\x9B\x65\x04\x7B\x0E\xE0\xD1\xDE\x21\xD8\x52"
-							"\x13\x9A\xBD\x04\x2D\x12\x43\xBE\x6F\x14\x9B\xEB\x24\xEC\x95\x75"
-							"\xE9\xF4\xB0\x8A\x5B\x3F\x5C\x7D\x43\x32\x0B\x95\x5C\xA4\xC9\x15"
-							"\x7D\x87\x86\x8F\xFF\x9A\xD5\xDC\xCE\xA8\x82\x40\x57\x0F\xFD\x73"
-							"\xF4\x3C\x36\x4A\x41\x64\x9D\x00\xCC\xAE\x41\xA4\x9B\x8E\xE3\x61"
-							"\xCA\x27\xCA\x0B\xF7\xEC\xE7\x8E\x06\x24\x35\x77\xED\x72\xFC\xE6"
-							"\xEC\x57\x84\x1D\xC6\xC7\xC6\xBE\x34\xDA\xDF\x3E\xF7\x7D\x36\x04"
-							"\xD1\x15\x76\x2C\x3F\x23\xE1\x0A\x12\x42\xC0\xCD\x39\x02\x89\x82"
-							"\xC0\x6A\x5A\x7E\x21\x56\x45\x8C\xCD\x5C\xBF\x3C\x79\xE9\x25\x00"
-							"\x5C\x22\x22\x06\x40\x2C\x2E\x2E\x7E\xD7\x17\x5C\xA3\x63\xB1\xB6"
-							"\xA7\x4A\x5B\xB2\x62\xAE\x57\x59\x6D\xDB\x22\xB1\x55\x25\x2D\x53"
-							"\x64\x07\xA5\x3C\x7B\xA5\x67\xDD\xA5\xB5\xAB\x93\x9F\x4F\x4D\xBD"
-							"\x0A\x40\x10\x11\xA3\x9D\x9D\x99\x10\x82\x03\x40\x44\x0F\xF6\x0D"
-							"\x0E\x9E\x38\xDF\x10\x39\xFC\xB4\xF0\x36\xB7\x00\x8C\xA8\xB6\xBD"
-							"\x65\x6C\x2E\xDD\xB9\x73\xFB\xC6\x74\xE2\x61\xE6\xEE\xFF\x9D\x7F"
-							"\x01\x0D\x6F\xA1\x6E\xFB\xAE\xB6\x18\x00\x00\x00\x00\x49\x45\x4E"
-							"\x44\xAE\x42\x60\x82", 981);
-			getPNGImage(png);
-		}
-		else if (url == "warn.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF"
-							"\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x01\x88\x49\x44\x41\x54\x38\xCB"
-							"\x9D\x93\xCD\x4A\x02\x51\x18\x86\xA7\x24\xA2\x02\x47\xAC\x4C\x8C"
-							"\x68\x51\x37\x90\xAB\xDA\x55\x77\x90\x17\x50\x0B\x6F\xC1\xBA\x81"
-							"\x7E\xD6\x25\xD4\xA2\x85\x9B\xA0\x56\x6D\x2A\xC2\x28\xA2\xA0\xB0"
-							"\x06\x8C\x74\x61\x90\x41\x18\x92\x3F\xD8\x8F\x24\xF8\x33\xE3\xBC"
-							"\x7D\xE7\x8C\x33\x5A\x69\x69\x07\x1E\xCE\x7B\xDE\x73\xBE\xF7\xFB"
-							"\x66\x31\x82\xD0\x60\x25\xFD\xD6\xF1\xA2\x34\x08\x06\xD3\x42\xAB"
-							"\x8B\x15\x96\xDE\x56\x88\x65\x1E\xD2\x52\x31\xEB\x98\xBF\x72\x00"
-							"\xD8\xE6\xE4\x03\x8E\xD6\xA6\xC8\x5D\xD8\x79\x77\x3D\x80\x4D\xC1"
-							"\xBC\xA6\xBB\xBF\x9F\xD9\x00\xC5\xC7\x0A\x38\x2A\xE9\xEC\xB9\xAD"
-							"\xB9\x29\x32\x27\x7D\x28\xA6\x17\xA0\x16\xBC\xD5\x80\xC2\x1A\x79"
-							"\xF3\xC8\x9C\xF4\xE3\xCF\xEE\x49\x7F\x2F\xD4\x8F\x45\x62\xA9\x1A"
-							"\x40\x9A\x79\x74\xFF\xFB\x14\xF1\x3D\x0B\x0A\xB1\x39\x94\x5F\x3C"
-							"\x50\x09\x23\x80\x74\xF9\xD5\x83\x62\x6C\x16\xF1\x7D\x0B\x1A\x76"
-							"\x7F\xDC\x35\xA3\x9C\x70\x6B\x24\xDD\x46\x80\x7E\x66\xB0\x37\x75"
-							"\xA7\x88\xEE\xF4\x20\x17\x9A\x80\xF2\xE4\x82\x12\x9B\x21\x5C\xD5"
-							"\x00\xD2\xDC\x27\xB2\xB7\x93\xB8\xA7\xB7\x3F\xBA\x47\xB6\xBA\x20"
-							"\x47\xA7\xA0\x30\x1E\x18\xD3\x46\x80\xA2\xFB\x51\xCD\x67\x6F\xBF"
-							"\x4C\x11\xF2\x75\x22\x7D\x3A\x04\x39\x32\x56\x83\x13\xF2\x9D\xF3"
-							"\x9B\xA7\xF9\x89\xE3\x61\x84\xA9\xC6\xE8\x7E\xB3\xD9\x81\x52\x68"
-							"\x84\x18\x85\x4C\xBB\x1C\x26\x48\xEB\x13\x70\x4F\xF7\xC3\x9A\x0E"
-							"\x52\x0D\x9F\x42\x5A\x37\x21\x75\x64\x45\x29\x38\x40\xD8\xF9\x2E"
-							"\x57\x76\x23\x80\xCE\x72\xCD\x3D\x23\x71\x28\x42\xDA\x30\x41\x08"
-							"\x78\xDB\x91\xF2\x9B\x51\x92\xC4\x0A\x96\x1A\x5D\x87\x6B\x91\x7E"
-							"\x2E\x11\xCF\x07\xDD\x08\x78\xDB\xC0\x3F\xE1\x72\x55\xC0\x7F\x60"
-							"\xB5\x9F\x32\xEB\xC2\x92\x1E\xFA\xFF\x9A\x00\x00\x00\x00\x49\x45"
-							"\x4E\x44\xAE\x42\x60\x82", 470);
-			getPNGImage(png);
-		}
-		else if (url == "xff.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x04\x00\x00\x00\xB5\xFA\x37"
-							"\xEA\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E"
-							"\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x00\xCC\x49\x44\x41\x54\x28\xCF"
-							"\x63\x60\x08\x67\x68\x64\x68\x40\x83\xAD\x40\x28\xCC\x00\x05\xB5"
-							"\xDF\xFF\xA3\x83\xE3\xFF\x4D\xFE\x6B\xFD\xCF\xEA\xC1\xA9\xE0\xF0"
-							"\xFF\xD8\xFF\xEF\xFF\x5B\xFD\x77\x9E\x84\x43\xC1\xC1\xFF\x12\x40"
-							"\x69\xAB\xFF\x5C\xFF\x19\x8A\xB0\x2A\x40\x00\xA0\x5B\x88\x52\xD0"
-							"\xFC\x7F\xED\xFF\x9B\xFF\xE3\xFF\xBF\xFE\x1F\x0C\x86\x57\xFF\xA7"
-							"\x81\xE9\xED\x30\x05\x67\xFE\x8B\x01\x6D\xEC\xFB\xFF\xF6\x3F\xF7"
-							"\xFF\x3B\x40\xF8\xFD\xBF\xCC\xFF\x03\x40\xFA\x03\xC2\x8A\x98\xFF"
-							"\x72\xFF\xFF\x00\x15\xB0\xFE\x8F\xFE\x9F\x0A\xE4\xCB\xFC\xF7\x07"
-							"\xB2\xDE\xC0\x14\x3C\x07\x9A\x20\x05\x34\x10\x64\xC2\x95\xFF\xD7"
-							"\xC1\x0A\x76\x02\x59\xBF\x60\x0A\xC2\xFE\x97\xFF\xDF\xF1\x5F\xF1"
-							"\xFF\xA3\xFF\xBC\x50\xC7\xC9\xFC\xBF\x8F\xEC\xC8\x03\xFF\xBF\x81"
-							"\xC3\xEF\x19\x30\x88\x20\xE0\xD8\xFF\xEF\x24\x79\x93\x42\x05\x9E"
-							"\xE0\xC8\xC5\x05\xE3\x00\x1F\xF1\x7A\x19\x4B\x38\x03\x56\x00\x00"
-							"\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 282);
-			getPNGImage(png);
-		}
-		else
-		{
-			sendMessageAndClose(MSG_HTTP404);
-		}
-		return;
-	}
-	else if (m_url == "index.css")
-	{
-		const utf8 &modified = mapGet(m_httpRequestInfo.m_HTTPHeaders, utf8("if-modified-since"), utf8("0"));
-		const time_t curTime = ::time(NULL),
-					 readTime = readRFCDate(modified),
-					 diffTime = (curTime - readTime);
-
-		// check if we need to provide a copy or if we can just do a '304 Not Modified' response
-		if (!readTime || (diffTime > gOptions.m_styleCustomHeaderTime) || (diffTime > 31536000))
-		{
-			const time_t modTime = (!gOptions.m_styleCustomHeaderTime ? (gOptions.m_styleCustomHeaderTime = curTime) : gOptions.m_styleCustomHeaderTime);
-			utf8 body,
-				 header = "HTTP/1.0 200 OK\r\n"
-						  "Content-Type:text/css\r\n"
-						  "Vary:Accept-Encoding\r\n"
-						  "Cache-Control:private,max-age=31536000\r\n"
-						  + utf8(m_compressed ? "Content-Encoding:gzip\r\n" : "") +
-						  "Expires:" + getRFCDate(curTime + 31536000) + "\r\n"
-						  "Last-Modified:" + getRFCDate(modTime) + "\r\n",
-				 // v2 DNAS style
-				 g_styleV2Str = "a:visited,a:link{color:#2762AE;text-decoration:none;}"
-								"a:hover{text-decoration:underline;}"
-								".logo,.titlespan,.tsp,.inp,.tll,b.w,.infh{color:#DEAC2F;}"
-								".logo{font-weight:bold;font-size:2.25em;letter-spacing:-0.0625em;padding-left:0.1em;}"
-								"textarea,input,select,body,pre,table,b.i{color:#636363;font-family:arial,helvetica;font-size:small;}"
-								"textarea,input,select{background-color:#F0F0F0;border:1px solid #CCCCCC;}"
-								".ls,.ls td,.en,.en td,.ent,fieldset,.infb{border-collapse:collapse;border:1px solid #CCCCCC;}"
-								".ls a{display: block;}"
-								".tsp{background:#4C4C4C;}"
-								".inp{background:#636363;}"
-								".tll,.infh,.thr{background:#F0F0F0;}"
-								"div.thr{padding:0.4em;display:inline-block;}"
-								".tnl{color:#636363;font-weight:bold;text-decoration:none;}"
-								".submit{color:white;background:#2350A5;border:1px solid #CCCCCC;}"
-								"span.default{overflow:auto;border:1px solid #CCCCCC;color:#636363;display:block;}"
-								".titlespan{padding:3px 0 2px 0;display:block;}"
-								"input:disabled,font.t{color:#CCCCCC;}"
-								"hr{border:0;background-color:#CCCCCC;height:1px;margin:0 -15px;}"
-								"b.e{color:red;}"
-								"b.d{color:green;}"
-								"b.u{color:blue;}"
-								".infh{position:relative;top:-15px;margin:0 -15px;padding:2px 0px;border-bottom:1px solid #CCCCCC;}"
-								".infb{display:inline;float:left;margin:0px 15px;padding:15px 15px 10px;}",
-				 // v1 DNAS style
-				 g_styleV1Str = "a:visited,a:link,b.u{color:blue;text-decoration:none;}"
-								"a:hover{text-decoration:underline;}"
-								".logo{color:red;font-weight:bold;font-size:2.25em;letter-spacing:-0.0625em;padding-left:0.1em;}"
-								"textarea,input,select,body,pre,b.i{color:#eeeeee;background:black;font-family:arial,helvetica;font-size:small;}"
-								".ls,.en,.ent,fieldset,.infb{border-collapse:collapse;}"
-								"textarea,input,select,.ent,.ls td,.en td,.infb,span.default{border:1px solid #CCCCCC;}"
-								".inp,.infh{background:#000080;}"
-								".ls a{display: block;}"
-								".tll{background:black;}"
-								".tsp{background:#000025;}"
-								"div.thr{padding:0.4em;display:inline-block;}"
-								".thr{background:#DDDDDD;}"
-								".tnl{color:black;font-weight:bold;text-decoration:none;}"
-								"span.default{overflow:auto;color:white;display:block;}"
-								".titlespan{color:white;padding:3px 0 2px 0;display:block;}"
-								"input:disabled,font.t{color:#CCCCCC;}"
-								"hr{border:0;background-color:#CCCCCC;height:1px;margin:0 -15px;}"
-								"b.e{color:red;}"
-								"b.d{color:green;}"
-								"b.w{color:yellow;}"
-								".infh{position:relative;top:-15px;margin:0 -15px;padding:2px 0px;border-bottom:1px solid #CCCCCC;}"
-								".infb{display:inline;float:left;margin:0px 15px 10px 0px;padding:15px 15px 10px;}";
-
-			if (gOptions.m_styleCustomStr.empty())
-			{
-				bool compress = !!m_compressed;
-				const bool v2 = (gOptions.adminCSSFile() == "v2");
-				if (!v2 && !(gOptions.adminCSSFile() == "v1"))
-				{
-					body = gOptions.getIndexCSS(compress);
-				}
-
-				// fallback to v2 DNAS style
-				if (body.empty())
-				{
-					// force things to the default style if not found so we're not re-trying all the time
-					gOptions.m_styleCustomStrGZ = gOptions.m_styleCustomStr = body = (v2 ? g_styleV2Str : g_styleV1Str);
-					compress = true;
-				}
-
-				gOptions.m_styleCustomHeader = "HTTP/1.0 200 OK\r\n"
-											   "Content-Type:text/css\r\n"
-											   "Vary:Accept-Encoding\r\n"
-											   "Cache-Control:private,max-age=31536000\r\n"
-											   "Expires:" + getRFCDate(curTime + 31536000) + "\r\n"
-											   "Last-Modified:" + getRFCDate(modTime) + "\r\n";
-
-				if (compress && !gOptions.m_styleCustomStrGZ.empty() && compressData(gOptions.m_styleCustomStrGZ))
-				{
-					gOptions.m_styleCustomHeaderGZ = gOptions.m_styleCustomHeader + "Content-Encoding:gzip\r\n";
-				}
-				else
-				{
-					gOptions.m_styleCustomStrGZ.clear();
-				}
-			}
-
-			if (!gOptions.m_styleCustomStr.empty())
-			{
-				// make sure there is a gzipped version available to send if signalled as supported
-				if (m_compressed && !gOptions.m_styleCustomStrGZ.empty())
-				{
-					body = gOptions.m_styleCustomStrGZ;
-					header = gOptions.m_styleCustomHeaderGZ;
-				}
-				else
-				{
-					body = gOptions.m_styleCustomStr;
-					header = gOptions.m_styleCustomHeader;
-				}
-				header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-			}
-
-			sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-		}
-		else
-		{
-			sendMessageAndClose("HTTP/1.0 304 Not Modified\r\n\r\n");
-		}
-		return;
-	}
-
-	// now we do most of the processing depending on the mode the http instance has been started as
-	const utf8 &type = toLower(stripWhitespace(mapGet(m_httpRequestInfo.m_QueryParameters, "type", (utf8)"")));
-	const int webSetupAllowed = (m_protocols & P_WEB_SETUP);
-	const utf8 host = (relayHostName.empty() ? m_clientHostName : relayHostName),
-			   addr = (relayHostIP.empty() ? m_clientAddr : relayHostIP);
-
-	if (m_protocols & P_WEB)
-	{
-		bool auth_check = false;
-		// make sure we unescape this so we cope with some weird clients
-		utf8 password = urlUtils::unescapeString(mapGet(m_httpRequestInfo.m_QueryParameters, "pass", (utf8)"").hideAsString());
-		if (password.empty())
-		{
-			// as we need the password for some of the public pages
-			// we'll convert any 'authorization' headers into their
-			// 'pass' parameter equivalent and then do all checking
-			// based on the password which will be cleaner overall.
-			const utf8 &auth = mapGet(m_httpRequestInfo.m_HTTPHeaders, "authorization", (utf8)"");
-			const vector<utf8> &vauth = tokenizer(auth, (utf8::value_type)' ');
-			// format " Basic xxxxxxxxx"
-			const vector<__uint8> va = base64::decode((vauth.size() < 2 ? "" : vauth[1]).hideAsString().c_str());
-			password.insert(password.end(), va.begin(), va.end());
-			auth_check = true;
-		}
-		else
-		{
-			// we also support base64 encoded passwords
-			// so we need to check for them and decode
-			// before passing on to be fully checked.
-			if (password.find(utf8("YWRtaW46")) == 0)
-			{
-				vector<__uint8> va = base64::decode(password.hideAsString().c_str());
-				password.clear();
-				password.insert(password.end(), va.begin(), va.end());
-				auth_check = true;
-			}
-		}
-
-		// look at the password and check for the multi-1.x style support,
-		// extracting as needed which is likely if using the same password
-		// parameters for the title update handling that should be sent
-		utf8 dj_name;	// throw-away
-		int alt_sid = -1;
-		if (extractPassword(password, dj_name, alt_sid))
-		{
-			if (alt_sid != -1)
-			{
-				realSID = sid = alt_sid;
-			}
-
-			// if this is from a converted 'authorization' header then we
-			// need to ensure that the user is what we allow i.e. 'admin'
-			// changed b611 as Icecast sources send different values so
-			// for those cases we'll have to allow it through so it works
-			if (auth_check && !hasMount && !(dj_name == "admin"))
-			{
-				password.clear();
-			}
-		}
-
-		if (m_url == "admin.cgi")
-		{
-			// added in 2.4.8+ the ability to restrict access to the admin
-			// sections based on the IP / host reported by the connection.
-			// this is a user request as a means to help restrict access
-			// to these pages and (slightly) improve security (https would
-			// be better but for the time being, it's this and passwords).
-			if (isAdminAccessAllowed(addr, host) == false)
-			{
-				// try to redirect to something (if configured)
-				// before failing and provide a 403 response...
-				const utf8 redirectUrl = gOptions.getStreamRedirectURL((no_sid ? 0 : sid), false, false, !!m_compressed, true);
-				sendMessageAndClose((!redirectUrl.empty() ? redirectUrl : MSG_HTTP403));
-				return;
-			}
-
-			// we need a password for all of the admin.cgi methods
-			// so no point in creating it if we know it's missing
-			// and return WWW-Authenticate quicker than if we did
-			// the checks inside of protocol_admincgi like before.
-			if (!password.empty())
-			{
-				const socketOps::tSOCKET s = m_socket;
-				m_socket = socketOps::cINVALID_SOCKET;
-
-				const bool zero_sid = (((int)realSID == -1) ? true : (realSID == 0));
-				threadedRunner::scheduleRunnable(new protocol_admincgi(s, sid, no_sid, zero_sid, m_clientLogString,
-																	   password, m_referer, m_hostIP, m_userAgent,
-																	   m_httpRequestInfo));
-				m_result.done();
-			}
-			else
-			{
-				sendMessageAndClose(MSG_AUTHFAILURE401 + utf8(!HEAD_REQUEST ?
-									"<html><head>Unauthorized<title>Shoutcast "
-									"Administrator</title></head></html>" : ""));
-			}
-			return;
-		}
-		else if (m_url == "index.html")
-		{
-			// if no sid is specified, attempt to match to the only stream (v1 like behaviour)
-			// before just attempting to provide the results for the default stream id (sid=1)
-			if (no_sid)
-			{
-				streamData::streamID_t lastSID = 0;
-				if (streamData::totalActiveStreams(lastSID) != (streamData::streamID_t)DEFAULT_CLIENT_STREAM_ID)
-				{
-					path_root_summary(XFF);
-				}
-				else
-				{
-					if (realSID == 0)
-					{
-						path_root_summary(XFF, true);
-					}
-					else
-					{
-						sendMessageAndClose(redirect("index.html?sid=" + tos(lastSID), !!m_compressed));
-					}
-				}
-			}
-			else
-			{
-				path_root(sid, XFF);
-			}
-			return;
-		}
-		else if ((m_url == "7.html") || (m_url == "7"))
-		{
-			findBaseStream(no_sid, sid);
-
-			bool adminOverride = false, hide = getHideState((no_sid ? 0 : sid)), passworded = false,
-				 proceed = isViewingAllowed(sid, password, false, adminOverride, hide, passworded);
-
-			if ((hide == true) && (adminOverride == false) && (proceed == false))
-			{
-				path_redirect_url(sid, no_sid, true);
-			}
-			else
-			{
-				if (isAccessAllowed(sid, XFF) == true)
-				{
-					cacheItem *item = m_7Cache[sid];
-					if (getCachedResponse(item, m_7Lock))
-					{
-						return;
-					}
-
-					streamData::streamInfo info;
-					streamData::extraInfo extra;
-					streamData::getStreamInfo(sid, info, extra);
-
-					stats::statsData_t data;
-					stats::getStats(sid, data);
-
-					const int maxUsers = ((info.m_streamMaxUser > 0) && (info.m_streamMaxUser < gOptions.maxUser()) ? info.m_streamMaxUser : gOptions.maxUser());
-					// 7.html format is CURRENTLISTENERS STREAMSTATUS PEAKLISTENERS MAXLISTENERS UNIQUELISTENERS BITRATE SONGTITLE 
-					utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:text/html;charset=utf-8\r\n"
-								  "Cache-Control:no-cache\r\nConnection:close\r\n",
-						 body = "<html><body>" + tos(data.connectedListeners) + "," +
-								(extra.isConnected ? "1" : "0") + "," + tos(data.peakListeners) +
-								"," + (maxUsers > 0 ? tos(maxUsers) : "UNLIMITED") + "," +
-								tos(data.uniqueListeners) + "," + tos(info.m_streamBitrate) +
-								"," + aolxml::escapeXML(info.m_currentSong) + getfooterStr();
-
-					sendCachedResponse(item, m_7Cache, m_7Lock, header, body, sid);
-				}
-				else
-				{
-					sendMessageAndClose(MSG_HTTP403);
-				}
-			}
-			return;
-		}
-		else if (m_url == "stats")
-		{
-			findBaseStream(no_sid, sid);
-
-			bool adminOverride = false, hide = getHideState((no_sid ? 0 : sid)), passworded = true,
-				 proceed = isViewingAllowed(sid, password, false, adminOverride, hide, passworded);
-
-			if ((hide == true) && (adminOverride == false) && (proceed == false))
-			{
-				path_redirect_url(sid, no_sid, true);
-			}
-			else
-			{
-				if (isAccessAllowed(sid, XFF) == true)
-				{
-					const bool json = mapGet(m_httpRequestInfo.m_QueryParameters, "json", (bool)false);
-					if (json)
-					{
-						const utf8 &callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-						path_stats_json(sid, passworded, callback);
-					}
-					else
-					{
-						path_stats_xml(sid, passworded);
-					}
-				}
-				else
-				{
-					sendMessageAndClose(MSG_HTTP403);
-				}
-			}
-			return;
-		}
-		else if (m_url == "statistics")
-		{
-			bool adminOverride = false, hide = getHideState((no_sid ? 0 : sid)), passworded = true,
-				 proceed = isViewingAllowed(sid, password, true, adminOverride, hide, passworded);
-
-			if ((hide == true) && (adminOverride == false) && (proceed == false))
-			{
-				path_redirect_url(sid, no_sid, true);
-			}
-			else
-			{
-				if (isAccessAllowed(sid, XFF) == true)
-				{
-					const bool json = mapGet(m_httpRequestInfo.m_QueryParameters, "json", (bool)false);
-					if (json)
-					{
-						const utf8 &callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-						path_statistics_json(sid, passworded, callback);
-					}
-					else
-					{
-						path_statistics_xml(sid, passworded);
-					}
-				}
-				else
-				{
-					sendMessageAndClose(MSG_HTTP403);
-				}
-			}
-			return;
-		}
-		else if (m_url == "robots.txt")
-		{
-			utf8 header = "HTTP/1.0 200 OK\r\n"
-						  "Content-Type:text/plain\r\n"
-						  "Connection:close\r\nContent-Length:24\r\n\r\n",
-				 body = "User-agent:*\r\nDisallow:/";
-
-			if (gOptions.robotstxtFile() == "")
-			{
-			}
-			else
-			{
-				if (gOptions.m_robotsTxtBody.empty())
-				{
-					body = loadLocalFile(fileUtil::getFullFilePath(gOptions.robotstxtFile()));
-					if (!body.empty())
-					{
-						gOptions.m_robotsTxtBodyGZ = gOptions.m_robotsTxtBody = body;
-						gOptions.m_robotsTxtHeader = "HTTP/1.0 200 OK\r\n"
-													 "Content-Type:text/plain\r\n"
-													 "Connection:close\r\n"
-													 "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-
-						if (compressData(gOptions.m_robotsTxtBodyGZ))
-						{
-							gOptions.m_robotsTxtHeaderGZ = "HTTP/1.0 200 OK\r\n"
-														   "Content-Type:text/plain\r\n"
-														   "Connection:close\r\n"
-														   "Content-Length:" + tos(gOptions.m_robotsTxtBodyGZ.size()) + "\r\n"
-														   "Content-Encoding:gzip\r\n\r\n";
-						}
-						else
-						{
-							gOptions.m_robotsTxtBodyGZ.clear();
-						}
-					}
-					else
-					{
-						body = MSG_HTTP404;
-					}
-				}
-
-				if (!gOptions.m_robotsTxtBody.empty())
-				{
-					// make sure there is a gzipped version available to send if signalled as supported
-					if (m_compressed && !gOptions.m_robotsTxtBodyGZ.empty())
-					{
-						body = gOptions.m_robotsTxtBodyGZ;
-						header = gOptions.m_robotsTxtHeaderGZ;
-					}
-					else
-					{
-						body = gOptions.m_robotsTxtBody;
-						header = gOptions.m_robotsTxtHeader;
-					}
-				}
-			}
-
-			sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-			return;
-		}
-		else if (m_url == "crossdomain.xml")
-		{
-			path_crossdomain();
-			return;
-		}
-		else if ((m_url == "played.html") || (m_url == "played"))
-		{
-			// if no sid is specified, attempt to match to the only stream (v1 like behaviour)
-			// before just attempting to provide the results for the default stream id (sid=1)
-			if (no_sid && findBaseStream(no_sid, sid))
-			{
-				sendMessageAndClose(redirect((!gOptions.getSongHistorySize(sid) ? "index.html?sid=" : "played.html?sid=") + tos(sid), !!m_compressed));
-				return;
-			}
-			else
-			{
-				if (!no_sid && !gOptions.getSongHistorySize(sid))
-				{
-					sendMessageAndClose(redirect("index.html?sid=" + tos(sid), !!m_compressed));
-					return;
-				}
-			}
-
-			const bool json = (type == "json"), xml = (type == "xml");
-			const utf8 &hideStats = gOptions.getStreamHideStats((no_sid ? 0 : sid));
-			bool hide = (hideStats == "all") && !(hideStats == "none"), adminOverride = false, passworded = false,
-				 proceed = isViewingAllowed(sid, password, false, adminOverride, hide, passworded);
-
-			// only do a password check if we've got a hidden page
-			if ((hide == true) && !password.empty())
-			{
-				if (proceed && !(json || xml))
-				{
-					proceed = false;
-				}
-			}
-
-			// if xml or json is requested then we see if we
-			// should provide it publically or use redirect
-			if (no_sid || ((hide == true) && (proceed == false)))
-			{
-				path_redirect_url(sid, no_sid, false);
-			}
-			else
-			{
-				if (!json && !xml)
-				{
-					path_played_html(sid, XFF);
-				}
-				else
-				{
-					if (json)
-					{
-						const utf8 &callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-						path_played_json(sid, callback, proceed, XFF);
-					}
-					else
-					{
-						path_played_xml(sid, proceed, XFF);
-					}
-				}
-			}
-			return;
-		}
-		else if ((m_url == "home.html") || (m_url == "home"))
-		{
-			if (no_sid)
-			{
-				path_root_summary(XFF);
-			}
-			else
-			{
-				path_home(sid);
-			}
-			return;
-		}
-		else if ((m_url == "currentsong") || (m_url == "nextsong"))
-		{
-			const utf8 &hideStats = gOptions.getStreamHideStats((no_sid ? 0 : sid));
-			bool adminOverride = false, hide = (hideStats == "all") && !(hideStats == "none"),
-				 passworded = false, proceed = isViewingAllowed(sid, password, false, adminOverride, hide, passworded);
-
-			if ((hide == true) && (adminOverride == false) && (proceed == false))
-			{
-				path_redirect_url(sid, no_sid, true);
-			}
-			else
-			{
-				path_track(sid, (m_url == "nextsong"));
-			}
-			return;
-		}
-		else if (m_url == "nextsongs")
-		{
-			const utf8 &hideStats = gOptions.getStreamHideStats((no_sid ? 0 : sid));
-			bool adminOverride = false, hide = (hideStats == "all") && !(hideStats == "none"),
-				 passworded = false, proceed = isViewingAllowed(sid, password, false, adminOverride, hide, passworded);
-
-			if ((hide == true) && (adminOverride == false) && (proceed == false))
-			{
-				path_redirect_url(sid, no_sid, true);
-			}
-			else
-			{
-				const bool json = mapGet(m_httpRequestInfo.m_QueryParameters, "json", (bool)false);
-				if (json)
-				{
-					const utf8 &callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-					path_tracks_json(sid, callback);
-				}
-				else
-				{
-					path_tracks_xml(sid);
-				}
-			}
-			return;
-		}
-		else if (m_url == "currentmetadata")
-		{
-			const utf8 &hideStats = gOptions.getStreamHideStats((no_sid ? 0 : sid));
-			bool adminOverride = false, hide = (hideStats == "all") && !(hideStats == "none"),
-				 passworded = false, proceed = isViewingAllowed(sid, password, false, adminOverride, hide, passworded);
-
-			if (no_sid || ((hide == true) && (adminOverride == false) && (proceed == false)))
-			{
-				path_redirect_url(sid, no_sid, true);
-			}
-			else
-			{
-				const bool json = mapGet(m_httpRequestInfo.m_QueryParameters, "json", (bool)false);
-				if (json)
-				{
-					const utf8 &callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-					path_current_metadata_json(sid, callback);
-				}
-				else
-				{
-					path_current_metadata_xml(sid);
-				}
-			}
-			return;
-		}
-		else if ((m_url == "streamart") || (m_url == "playingart"))
-		{
-			const utf8 &hideStats = gOptions.getStreamHideStats((no_sid ? 0 : sid));
-			bool adminOverride = false, hide = (hideStats == "all") && !(hideStats == "none"),
-				 passworded = false, proceed = isViewingAllowed(sid, password, false, adminOverride, hide, passworded);
-
-			if (no_sid || ((hide == true) && (adminOverride == false) && (proceed == false)))
-			{
-				path_redirect_url(sid, no_sid, true);
-			}
-			else
-			{
-				path_art(sid, (m_url == "playingart"));
-			}
-			return;
-		}
-		else if ((m_url == "listen.pls") || (m_url == "listen"))
-		{
-			if (isAccessAllowed(sid, XFF) == true)
-			{
-				cacheItem *item = m_PLSCache[sid];
-				if (getCachedResponse(item, m_PLSLock, 5))
-				{
-					return;
-				}
-
-				streamData::streamInfo info;
-				streamData::extraInfo extra;
-				streamData::getStreamInfo(sid, info, extra);
-
-				int index = 1;
-				utf8 backupServer = "";
-				if (!info.m_backupServer.empty())
-				{
-					++index;
-					backupServer = "File"+tos(index)+"=" + info.m_backupServer +
-								   (!info.m_streamName.empty() ? "\nTitle"+tos(index)+"=" + info.m_streamName : "") +
-								   "\nLength"+tos(index)+"=-1\n";
-
-					if (!info.m_backupServersList.empty())
-					{
-						for (vector<utf8>::const_iterator b = info.m_backupServersList.begin(); b != info.m_backupServersList.end(); ++b)
-						{
-							++index;
-							backupServer += "File"+tos(index)+"=" + (*b) +
-											(!info.m_streamName.empty() ? "\nTitle"+tos(index)+"=" + info.m_streamName : "") +
-											"\nLength"+tos(index)+"=-1\n";
-						}
-					}
-				}
-
-				utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:audio/x-scpls\r\nConnection:close\r\n",
-					 body = "[playlist]\nNumberOfEntries=" + tos(index) +
-							"\nFile1=http://" + getClientIP(info.m_streamPublic, info.m_publicIP) + ":" +
-							tos(g_portForClients) + getStreamPath(sid, true) +
-							((streamData::getStreamContentType(sid) == "video/nsv") ? ";stream.nsv\n" : "\n") +
-							(!info.m_streamName.empty() ? "Title1=" + info.m_streamName + "\n" : "") + "Length1=-1\n" +
-							backupServer + "Version=2";
-
-				sendCachedResponse(item, m_PLSCache, m_PLSLock, header, body, sid);
-			}
-			else
-			{
-				sendMessageAndClose(MSG_HTTP403);
-			}
-			return;
-		}
-		else if (m_url == "listen.m3u")
-		{
-			if (isAccessAllowed(sid, XFF) == true)
-			{
-				cacheItem *item = m_M3UCache[sid];
-				if (getCachedResponse(item, m_M3ULock, 5))
-				{
-					return;
-				}
-
-				streamData::streamInfo info;
-				streamData::extraInfo extra;
-				streamData::getStreamInfo(sid, info, extra);
-
-				utf8 backupServer = "";
-				if (!info.m_backupServer.empty())
-				{
-					backupServer = "\n#EXTINF:-1," + info.m_streamName + "\n" + info.m_backupServer;
-					if (!info.m_backupServersList.empty())
-					{
-						for (vector<utf8>::const_iterator b = info.m_backupServersList.begin(); b != info.m_backupServersList.end(); ++b)
-						{
-							backupServer += "\n#EXTINF:-1," + info.m_streamName + "\n" + (*b);
-						}
-					}
-				}
-
-				utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:audio/x-mpegurl\r\nConnection:close\r\n",
-					 body = "#EXTM3U\n"
-							"#EXTINF:-1," + info.m_streamName + "\n"
-							"http://" + getClientIP(info.m_streamPublic, info.m_publicIP) +
-							":" + tos(g_portForClients) + getStreamPath(sid, true) +
-							(streamData::getStreamContentType(sid) == "video/nsv" ? ";stream.nsv" : "") +
-							backupServer;
-
-				sendCachedResponse(item, m_M3UCache, m_M3ULock, header, body, sid);
-			}
-			else
-			{
-				sendMessageAndClose(MSG_HTTP403);
-			}
-			return;
-		}
-		else if (m_url == "listen.asx")
-		{
-			if (isAccessAllowed(sid, XFF) == true)
-			{
-				cacheItem *item = m_ASXCache[sid];
-				if (getCachedResponse(item, m_ASXLock, 5))
-				{
-					return;
-				}
-
-				streamData::streamInfo info;
-				streamData::extraInfo extra;
-				streamData::getStreamInfo(sid, info, extra);
-
-				utf8 backupServer = "";
-				if (!info.m_backupServer.empty())
-				{
-					backupServer = "\n<entry>\n" +
-								   (!info.m_streamName.empty() ? "<title>" + aolxml::escapeXML(info.m_streamName) + "</title>\n" : "") +
-								   "<ref href=\"" + info.m_backupServer + "\"/>\n</entry>";
-					if (!info.m_backupServersList.empty())
-					{
-						for (vector<utf8>::const_iterator b = info.m_backupServersList.begin(); b != info.m_backupServersList.end(); ++b)
-						{
-							backupServer += "\n<entry>\n" +
-											(!info.m_streamName.empty() ? "<title>" + aolxml::escapeXML(info.m_streamName) + "</title>\n" : "") +
-											"<ref href=\"" + (*b) + "\"/>\n</entry>";
-						}
-					}
-					backupServer += "\n";
-				}
-
-				utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:video/x-ms-asf\r\nConnection:close\r\n",
-					 body = "<asx version=\"3.0\">\n" +
-							(!info.m_streamName.empty() ? "<title>" + aolxml::escapeXML(info.m_streamName) + "</title>\n" : "") +
-							"<entry>\n" +
-							(!info.m_streamName.empty() ? "<title>" + aolxml::escapeXML(info.m_streamName) + "</title>\n" : "") +
-							"<ref href=\"http://" + getClientIP(info.m_streamPublic, info.m_publicIP) +
-							":" + tos(g_portForClients) + getStreamPath(sid, true) +
-							(streamData::getStreamContentType(sid) == "video/nsv" ? ";stream.nsv" : "") +
-							"\"/>\n</entry>" + backupServer + "</asx>";
-
-				sendCachedResponse(item, m_ASXCache, m_ASXLock, header, body, sid);
-			}
-			else
-			{
-				sendMessageAndClose(MSG_HTTP403);
-			}
-			return;
-		}
-		else if (m_url == "listen.qtl")
-		{
-			if (isAccessAllowed(sid, XFF) == true)
-			{
-				cacheItem *item = m_QTLCache[sid];
-				if (getCachedResponse(item, m_QTLLock, 5))
-				{
-					return;
-				}
-
-				streamData::streamInfo info;
-				streamData::extraInfo extra;
-				streamData::getStreamInfo(sid, info, extra);
-
-				utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:application/x-quicktimeplayer\r\nConnection:close\r\n",
-					 body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
-							"<?quicktime type=\"application/x-quicktime-media-link\"?>"
-							"<embed autoplay=\"true\" controller=\"true\" quitwhendone=\"false\" loop=\"false\" " +
-							(!info.m_streamName.empty() ? "moviename=\"" + aolxml::escapeXML(info.m_streamName) + "\" " : "") +
-							"src=\"http://" + getClientIP(info.m_streamPublic, info.m_publicIP) + ":" +
-							tos(g_portForClients) + "/listen.pls?sid=" + tos(sid) + "\"/>";
-
-				sendCachedResponse(item, m_QTLCache, m_QTLLock, header, body, sid);
-			}
-			else
-			{
-				sendMessageAndClose(MSG_HTTP403);
-			}
-			return;
-		}
-		else if (m_url == "listen.xspf")
-		{
-			if (isAccessAllowed(sid, XFF) == true)
-			{
-				cacheItem *item = m_XSPFCache[sid];
-				if (getCachedResponse(item, m_XSPFLock, 5))
-				{
-					return;
-				}
-
-				streamData::streamInfo info;
-				streamData::extraInfo extra;
-				streamData::getStreamInfo(sid, info, extra);
-
-				utf8 backupServer = "";
-				if (!info.m_backupServer.empty())
-				{
-					backupServer = "\n<track><location>" + info.m_backupServer + "</location>\n" +
-								   (!info.m_streamName.empty() ? "<title>" + aolxml::escapeXML(info.m_streamName) + "</title>\n" : "") +
-								   "</track>";
-					if (!info.m_backupServersList.empty())
-					{
-						for (vector<utf8>::const_iterator b = info.m_backupServersList.begin(); b != info.m_backupServersList.end(); ++b)
-						{
-							backupServer += "\n<track><location>" + (*b) + "</location>\n" +
-											(!info.m_streamName.empty() ? "<title>" + aolxml::escapeXML(info.m_streamName) + "</title>\n" : "") +
-											"</track>";
-						}
-					}
-					backupServer += "\n";
-				}
-
-				utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:application/xspf+xml\r\nConnection:close\r\n",
-					 body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-							"<playlist version=\"1\" xmlns=\"http://xspf.org/ns/0/\">" +
-							(!info.m_streamName.empty() ? "<title>" + aolxml::escapeXML(info.m_streamName) + "</title>" : "") +
-							"<info>" + aolxml::escapeXML(info.m_streamURL) + "</info>"
-							"<trackList>"
-							"<track><location>http://" + getClientIP(info.m_streamPublic, info.m_publicIP) +
-							":" + tos(g_portForClients) + getStreamPath(sid, true) +
-							(streamData::getStreamContentType(sid) == "video/nsv" ? ";stream.nsv" : "") +
-							"</location>" +
-							(!info.m_streamName.empty() ? "<title>" + aolxml::escapeXML(info.m_streamName) + "</title>" : "") +
-							"</track>" + backupServer + "</trackList></playlist>";
-
-				sendCachedResponse(item, m_XSPFCache, m_XSPFLock, header, body, sid);
-			}
-			else
-			{
-				sendMessageAndClose(MSG_HTTP403);
-			}
-			return;
-		}
-		else if (m_url == "shoutcast.swf")
-		{
-			path_shoutcastswf();
-			return;
-		}
-#ifdef CONFIG_BUILDER
-		else if ((m_url == "builder") || (m_url == "setup"))
-#else
-		else if (m_url == "setup")
-#endif
-		{
-			sendMessageAndClose(redirect("index.html", !!m_compressed));
-			return;
-		}
-	}
-	else if (webSetupAllowed)
-	{
-		if ((m_url == "runserver") && (m_httpRequestInfo.m_request == HTTP_POST))
-		{
-			sendMessageAndClose("HTTP/1.0 200 OK\r\nContent-Length:0\r\n\r\n");
-			setkill(2);
-			return;
-		}
-		else if ((m_url == "exit") && (m_httpRequestInfo.m_request == HTTP_POST))
-		{
-			sendMessageAndClose("HTTP/1.0 200 OK\r\nContent-Length:0\r\n\r\n");
-			setkill(1);
-			return;
-		}
-		else if ((m_url == "config") && (m_httpRequestInfo.m_request == HTTP_POST))
-		{
-			utf8 conf_file = gStartupDirectory + "sc_serv.conf";
-			ILOG("[SETUP] Saving settings to `" + conf_file + "'");
-
-			config setupOptions;
-			setupOptions.load(conf_file, false);
-
-			const vector<string> queryTokens = tokenizer(m_httpRequestInfo.m_PostLine.toANSI(true),'&');
-			for (vector<string>::const_iterator i = queryTokens.begin(); i != queryTokens.end(); ++i)
-			{
-				const utf8 entry = urlUtils::unescapeString(*i);
-				const string::size_type pos = entry.find(utf8("="));
-				if (pos == string::npos)
-				{
-					setupOptions.setOption(entry, (utf8)"");
-				}
-				else
-				{
-					const utf8 name = entry.substr(0, pos);
-					const utf8 value = entry.substr(pos + 1);
-					setupOptions.setOption(name, value);
-				}
-			}
-
-			if (setupOptions.rewriteConfigurationFile(true, false, true))
-			{
-				ILOG("[SETUP] Saved settings to `" + conf_file + "'");
-			}
-			else
-			{
-				ILOG("[SETUP] Unable to save settings to `" + conf_file + "'. Please resolve the error(s) above.");
-			}
-
-			sendMessageAndClose("HTTP/1.0 200 OK\r\nContent-Length:0\r\n\r\n");
-			return;
-		}
-		else if (m_url == "configs")
-		{
-			const utf8 &query = stripWhitespace(mapGet(m_httpRequestInfo.m_QueryParameters, "query", (utf8)""));
-			utf8 fn = "sc_serv.conf";
-			utf8 body = "";
-
-			const vector<string> queryTokens = tokenizer(query.toANSI(true),'&');
-			for (vector<string>::const_iterator i = queryTokens.begin(); i != queryTokens.end(); ++i)
-			{
-				const utf8 entry = urlUtils::unescapeString(*i);
-				const string::size_type pos = entry.find(utf8("="));
-				if (pos != string::npos)
-				{
-					const utf8 name = entry.substr(0,pos);
-					const utf8 value = entry.substr(pos+1);
-					if (name == "fn")
-					{
-						fn = value;
-					}
-					else if (name == "body")
-					{
-						body = value;
-					}
-				}
-			}
-
-			utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:text/plain\r\n"
-						  "Content-Disposition:attachment;filename=\""+fn+"\"\r\n";
-			COMPRESS(header, body);
-			header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-			sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-			return;
-		}
-#ifdef CONFIG_BUILDER
-		else if (m_url == "collapse.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x0D\x00\x00\x00\x0D\x08\x06\x00\x00\x00\x72\xEB\xE4"
-							"\x7C\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0B\x13\x00\x00\x0B"
-							"\x13\x01\x00\x9A\x9C\x18\x00\x00\x00\xA3\x49\x44\x41\x54\x28\xCF"
-							"\xA5\x92\x3D\x0A\xC4\x20\x10\x46\x73\xA1\xDC\x2A\x37\xF3\x20\x2E"
-							"\xD8\xD8\x69\x65\x3A\x71\x2B\x1B\x1B\x4B\x21\x32\xEB\x27\xC9\xE0"
-							"\xA6\x48\xF6\x47\x78\x22\xE3\xFB\x06\x15\xA7\x65\x59\xE6\xC6\xA3"
-							"\xB1\x35\xE8\x82\x6D\xF7\xE6\xA9\x4D\x4A\x4A\x49\xB5\x56\xBA\x1A"
-							"\xD8\x87\x07\x1F\xA1\x67\x4A\x89\x3E\x19\xF0\xE0\xFF\x1E\x8A\x31"
-							"\x52\x29\xE5\x0D\xDC\xE3\x5C\x83\xC7\xA1\x10\x02\xE5\x9C\x99\xF1"
-							"\x01\xC6\x3A\x3C\x0E\xAD\xEB\xDA\xBB\xEC\x9D\x3A\xE7\x35\x80\xC7"
-							"\x21\x63\x0C\x79\xEF\x59\xC2\xFA\x60\xAC\xC1\xE3\x90\xD6\x9A\x9C"
-							"\x73\xB7\xC0\xE3\x90\x52\x8A\xAC\xB5\xB7\xC0\xFB\x2B\xA4\x84\x10"
-							"\xFD\xBC\x57\x01\xEC\xC3\x3B\x7E\xC4\xD7\x7F\xEF\x05\xFC\x4E\x08"
-							"\xFC\x0F\xA9\x38\xAE\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60"
-							"\x82", 241);
-			getPNGImage(png);
-			return;
-		}
-		else if (m_url == "expand.png")
-		{
-			const utf8 png ("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
-							"\x00\x00\x00\x0D\x00\x00\x00\x0D\x08\x06\x00\x00\x00\x72\xEB\xE4"
-							"\x7C\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0B\x13\x00\x00\x0B"
-							"\x13\x01\x00\x9A\x9C\x18\x00\x00\x00\xCC\x49\x44\x41\x54\x28\xCF"
-							"\x95\x92\x41\x0A\x83\x30\x10\x45\xBD\x90\xB7\xF2\x66\xDE\xC2\x55"
-							"\x21\x1B\xC1\x85\x6E\xD4\x85\xA0\xA6\x0D\xBA\x51\x50\x77\x42\x65"
-							"\x9A\x1F\x3A\x31\x6D\x51\x6A\xE0\xC9\x38\xF9\x2F\x31\x12\x2F\x08"
-							"\x02\x5F\x73\xD3\x3C\x35\x74\xC2\xF3\x9D\xF3\x3D\xFD\x10\x61\x18"
-							"\xD2\x3C\xCF\xB4\x6D\x1B\x1D\x8D\x65\x59\x08\x39\xE4\x21\x49\xA5"
-							"\x14\xFD\x33\x86\x61\x80\x24\x8D\x84\x97\xAB\xD2\xBD\xEF\x7B\x9A"
-							"\xA6\xE9\x83\x75\x5D\x7F\x7A\x5D\xD7\x59\xE9\xD1\xB6\x2D\x8D\xE3"
-							"\x68\x0F\x8D\x9A\x71\x7B\x4D\xD3\xEC\x52\x59\x96\x84\xDD\x00\x87"
-							"\xBE\x6B\x80\x9C\x95\xD2\x34\xA5\xBA\xAE\x49\x4A\x69\x70\x7F\x35"
-							"\xF7\x30\x9F\x65\xD9\x2E\xC5\x71\x4C\x45\x51\x18\xAA\xAA\x32\x40"
-							"\xE0\x9A\xE7\x92\x24\xB1\x92\x12\x42\x98\x55\x98\x3C\xCF\x2D\x6E"
-							"\x1F\x8B\x1F\x4A\x47\xB8\x92\x88\xA2\x88\x70\xAE\x33\xF0\x99\xC8"
-							"\xF1\x8D\xB8\x7C\xF7\x5E\x5E\xA8\x08\x66\xFF\x94\x63\xFE\x00\x00"
-							"\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82", 282);
-			getPNGImage(png);
-			return;
-		}
-		else if (m_url == "builder")
-		{
-			uniFile::filenameType fn = gStartupDirectory + "config_builder/config_builder.html";
-			size_t fileSize = uniFile::fileSize(fn);
-			uniFile::filenameType fn_js = gStartupDirectory + "config_builder/config_builder.js";
-			size_t fileSizeJS = uniFile::fileSize(fn_js);
-
-			utf8 header = MSG_NO_CLOSE_200,
-				 body = "<!DOCTYPE html><html><head>"
-						"<meta charset=\"utf-8\">"
-						"<meta name=viewport content=\"width=device-width, initial-scale=1\">"\
-						"<title>Shoutcast Configuration Builder</title>"
-						"<link href=\"index.css\" rel=\"stylesheet\" type=\"text/css\">"
-						"<link href=\"images/favicon.ico\" rel=\"shortcut icon\" type=\"" + gOptions.faviconFileMimeType() + "\">"
-						"<link href=\"config_builder.css\" rel=\"stylesheet\" type=\"text/css\">"
-						// skip config_builder.js if the main setup.html cannot be found to load
-						+ (fileSize > 0 ? utf8("<script type=\"text/javascript\" src=\"config_builder.js\"></script>") : "") +
-						"</head>"
-						"<body style=\"margin:0;\">"
-						"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>"
-						"<td><div class=\"logo\">Shoutcast Configuration Builder</div></td></tr><tr>"
-						"<td style=\"text-align:right;vertical-align:bottom;padding-right:0.1em;\">"
-						"<a target=\"_blank\" title=\"Built: "__DATE__"\" href=\"http://www.shoutcast.com\">Shoutcast Server v" +
-						addWBR(gOptions.getVersionBuildStrings() + "/" SERV_OSNAME) + "</a>"
-						"</td></tr><tr><td class=\"thr\" align=\"left\"><table width=\"100%\" "
-						"border=\"0\" cellpadding=\"5\" cellspacing=\"0\"><tr class=\"tnl\">"
-						"<td>&nbsp;<a target=\"_blank\" href=\"http://forums.shoutcast.com/forumdisplay.php?f=140\">Help</a>&nbsp;&nbsp;|&nbsp;&nbsp;"
-						" <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_Broadcaster\">Documentation</a></td></tr></table></td></tr></table><br>";
-
-			// only process if the html and js files can be found
-			if (fileSize && fileSizeJS)
-			{
-				body += loadLocalFile(fn);
-			}
-			else
-			{
-				body += "<br><table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" width=\"100%\">"
-						"<tr><td align=\"center\" id=\"counter\">"
-						"<br>There was an error finding the files required for running the configuration builder.<br>"
-						"Check that there is a 'config_builder' folder in the same folder as the server.<br><br>"
-						"<a href=\"/setup\">Click here</a> to try loading the configuration builder files again. If this message<br>"
-						"remains, you will need to seek assistance via the <a target=\"_blank\" "
-						"href=\"http://forums.shoutcast.com/forumdisplay.php?f=140\">help forum</a>.<br><br>"
-						"<input type=\"button\" value=\"Exit\" onclick=\"exit()\" class=\"submit\"></td></tr></table></tr></table></td></tr></table>"
-
-						"<script type=\"text/javascript\">"
-						"function $(id){return document.getElementById(id);}"
-						"function exit(){"
-						"$('counter').innerHTML = \"<span><b>Server Stopped</b></span><br><br>The server has now been stopped."
-						"<br>Please fix the issue shown on the prior page and retry running setup if required.\";"
-						"if(window.XMLHttpRequest){"
-						"xmlhttp=new XMLHttpRequest();"
-						"}else{"
-						"xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");"
-						"}"
-						"xmlhttp.open(\"POST\",\"exit\",true);"
-						"xmlhttp.setRequestHeader(\"Content-length\",4);"
-						"xmlhttp.send(\"exit\");"
-						"}</script>" + getfooterStr();
-			}
-
-			COMPRESS(header, body);
-			header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-			sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-			return;
-		}
-#endif
-		else if (m_url == "setup")
-		{
-			uniFile::filenameType fn = gStartupDirectory + "setup/setup.html";
-			size_t fileSize = uniFile::fileSize(fn);
-			uniFile::filenameType fn_js = gStartupDirectory + "setup/setup.js";
-			size_t fileSizeJS = uniFile::fileSize(fn_js);
-
-			utf8 header = MSG_NO_CLOSE_200,
-				 body = "<!DOCTYPE html><html><head>"
-						"<meta charset=\"utf-8\">"
-						"<meta name=viewport content=\"width=device-width, initial-scale=1\">"\
-						"<title>Shoutcast DNAS Setup</title>"
-						"<link href=\"../index.css\" rel=\"stylesheet\" type=\"text/css\">"
-						"<link href=\"../images/favicon.ico\" rel=\"shortcut icon\" type=\"" + gOptions.faviconFileMimeType() + "\">"
-						// skip setup.js if the main setup.html cannot be found to load
-						+ (fileSize > 0 ? utf8("<script type=\"text/javascript\" src=\"setup.js\"></script>") : "") +
-						"</head><body style=\"margin:0;\">"
-						"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>"
-						"<td><div class=\"logo\">Shoutcast DNAS Setup</div></td>"
-						"<td style=\"text-align:right;vertical-align:bottom;padding-right:0.1em;\">"
-						"<a target=\"_blank\" title=\"Built: " __DATE__ "\" "
-						"href=\"http://www.shoutcast.com\">Shoutcast Server v" +
-						addWBR(gOptions.getVersionBuildStrings() + "/" SERV_OSNAME) + "</a>"
-						"</td></tr><tr><td class=\"thr\" align=\"left\" colspan=\"2\">"
-						"<table width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">"
-						"<tr class=\"tnl\"><td>&nbsp;<a target=\"_blank\" "
-						"href=\"http://forums.shoutcast.com/forumdisplay.php?f=140\">Help</a>&nbsp;&nbsp;|&nbsp;&nbsp;"
-						" <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_Broadcaster\">Documentation</a></td></tr></table></td></tr></table>";
-
-			// only process if the html and js files can be found
-			if (fileSize && fileSizeJS)
-			{
-				body += loadLocalFile(fn);
-			}
-			else
-			{
-				body += "<br><table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" width=\"100%\">"
-						"<tr><td align=\"center\" id=\"counter\">"
-						"<br>There was an error finding the files required for running setup.<br>"
-						"Check there is a 'setup' folder in the same folder as the server.<br><br>"
-						"<a href=\"/setup\">Click here</a> to try loading the setup files again. If this message<br>"
-						"remains, you will need to seek assistance via the <a target=\"_blank\" "
-						"href=\"http://forums.shoutcast.com/forumdisplay.php?f=140\">help forum</a>.<br><br>"
-						"<input type=\"button\" value=\"Exit\" onclick=\"exit()\" class=\"submit\"></td></tr></table></tr></table></td></tr></table>"
-
-						"<script type=\"text/javascript\">"
-						"function $(id){return document.getElementById(id);}"
-						"function exit(){"
-						"$('counter').innerHTML = \"<span><b>Server Stopped</b></span><br><br>The server has now been stopped."
-						"<br>Please fix the issue shown on the prior page and retry running setup if required.\";"
-						"if(window.XMLHttpRequest){"
-						"xmlhttp=new XMLHttpRequest();"
-						"}else{"
-						"xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");"
-						"}"
-						"xmlhttp.open(\"POST\",\"exit\",true);"
-						"xmlhttp.setRequestHeader(\"Content-length\",4);"
-						"xmlhttp.send(\"exit\");"
-						"}</script>" + getfooterStr();
-			}
-
-			COMPRESS(header, body);
-			header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-			sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-			return;
-		}
-		else
-		{
-			utf8::size_type pos;
-			if (((pos = m_referer.rfind(utf8("setup"))) != utf8::npos) || (m_url == "setup.txt"))
-			{
-				uniFile::filenameType fn = gStartupDirectory + "setup" + m_httpRequestInfo.m_url;
-				utf8 header = "HTTP/1.0 200 OK\r\n"
-							  "Cache-Control:no-cache\r\n"
-							  "Access-Control-Allow-Origin:*\r\n"
-							  "Connection:close\r\n",
-					 body = loadLocalFile(fn);
-
-				if (!body.empty())
-				{
-					utf8 mime = "text/plain";
-					if ((pos = m_httpRequestInfo.m_url.rfind(utf8(".js"))) != utf8::npos)
-					{
-						mime = "text/javascript";
-					}
-					header += "Content-Type:" + mime + "\r\n";
-				}
-
-				COMPRESS(header, body);
-				header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-				sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-				return;
-			}
-#ifdef CONFIG_BUILDER
-			else if (((pos = m_referer.rfind(utf8("/builder"))) != utf8::npos) || (m_url == "/config_builder.txt"))
-			{
-				uniFile::filenameType fn = gStartupDirectory + "config_builder" + m_httpRequestInfo.m_url;
-				utf8 header = "HTTP/1.0 200 OK\r\n"
-							  "Cache-Control:no-cache\r\n"
-							  "Access-Control-Allow-Origin:*\r\n"
-							  "Connection:close\r\n",
-					 body = loadLocalFile(fn);
-
-				if (!body.empty())
-				{
-					utf8 mime = "text/plain";
-					if ((pos = m_url.rfind(utf8(".js"))) != utf8::npos)
-					{
-						mime = "text/javascript";
-					}
-					if ((pos = m_url.rfind(utf8(".css"))) != utf8::npos)
-					{
-						mime = "text/css";
-					}
-					if ((pos = m_url.rfind(utf8(".png"))) != utf8::npos)
-					{
-						mime = "image/png";
-					}
-					header += "Content-Type:" + mime + "\r\n";
-				}
-
-				COMPRESS(header, body);
-				header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-				sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-				return;
-			}
-#endif
-		}
-	}
-
-	// if we've gotten to here, try to look for the request coming from a browser
-	// and provide the related html page or fallback to serving up stream content
-	if ((m_httpRequestInfo.m_url == "/") &&
-		// added in 2.4.8+ so we can force through based on the 'type' parameter
-		// which allows for url/?type=.flv to work correctly whilst we also allow
-		// for setting url/?type=html to force showing of the html pages provided
-		(type.empty() || (type == "html")) &&
-	   ((m_userAgentLowered.find(utf8("mozilla")) != utf8::npos) ||
-	    (m_userAgentLowered.find(utf8("opera")) != utf8::npos)))
-	{
-		if (webSetupAllowed)
-		{
-			// if in setup mode then force everything to the /setup page
-			sendMessageAndClose(redirect("setup", !!m_compressed));
-		}
-		else
-		{
-			// if enabled then we need to block access to this page as it's not allowed to be public
-			path_redirect_url(sid, no_sid, false);
-		}
-		return;
-	}
-
-
-	// check here if we're ok to try to provide the stream to the client or not
-	// i.e. it's not a banned or not in the reserved ip list when that is enabled
-	bool htmlPage = false;
-	const streamData::streamID_t found_sid = streamData::getStreamIdFromPath(m_httpRequestInfo.m_url, htmlPage);
-	if (found_sid > 0)
-	{
-		sid = found_sid;
-	}
-    if (m_ssl)
-    {
-        streamData::streamInfo info;
-        streamData::extraInfo extra;
-        if (streamData::getStreamInfo (sid, info, extra))
-        {
-            if (info.m_allowSSL == 0)
-            {
-                sendMessageAndClose(MSG_HTTP403);
-                return;
-            }
-        }
-    }
-
-
-	// bit convoluted but it allows us to check 'icy-host' and then the
-	// client's address since it came up in testing the CDN mode that
-	// it didn't allow through connections which were configured by IP
-	// only instead of DNS - was a bug in a few builds where this checked
-	// for the 'host' value instead of the actual client address (oops)
-	// 2.4.8+ - this also looks that 'XFF' header value if provided
-	const bool validXFF = !metrics::metrics_verifyDestIP(gOptions, true, XFF).empty();
-	if (!validXFF || (isAccessAllowed(sid, XFF) == false))
-	{
-		if (isAccessAllowed(sid, addr) == false)
-		{
-			if (isAccessAllowed(sid, host, true) == false)
-			{
-				sendMessageAndClose(MSG_HTTP403);
-				return;
-			}
-		}
-	}
-
-	// now process things and redirect to the relevant page found
-	// though if it's the direct url and it's from the SC/YP tester
-	// then we really need to let it through as true stream access
-
-	// changed in 2.4.8+ to follow the 'type' parameter so it will
-	// be able to force a specific usage type as required be that
-	// sc1, sc2, flv, http, m4a or just figure it out from headers
-	const bool uvox_agent = ((m_userAgentLowered.find(utf8("ultravox/2.1")) != utf8::npos) &&
-							 !(!type.empty() && ((type == ".flv") || (type == "flv") || (type == ".fla") ||
-												 (type == "fla") || (type == "http") || (type == "sc1")))) ||
-												 (!type.empty() && (type == "sc2"));
-	const bool officialAgent = isUserAgentOfficial(m_userAgentLowered);
-	if ((htmlPage && !officialAgent && !uvox_agent) || (!type.empty() && (type == "html")))
-	{
-		sendMessageAndClose(redirect("index.html?sid=" + tos(found_sid), !!m_compressed));
-		return;
-	}
-
-	// try to redirect directly to the appropriate page based on the number of active streams
-	streamData::streamID_t lastSID = 0;
-	if (!found_sid && (streamData::totalActiveStreams(lastSID) == (streamData::streamID_t)DEFAULT_CLIENT_STREAM_ID))
-	{
-		sid = lastSID;
-	}
-
-	protocol_shoutcastClient *client = 0;
-
-	// Force v1 connection for Winamp 5.5x clients which ident with ultravox/2.1 as they do not support title updates
-	if ((m_protocols & P_SHOUTCAST2CLIENT) && uvox_agent &&
-		(m_userAgentLowered.find(utf8("winampmpeg/5.5")) == utf8::npos))
-	{	// go for Ultravox 2.1
-        client = new protocol_shoutcast2Client (*this, sid, host, addr, XFF, mapGet(m_httpRequestInfo.m_HTTPHeaders, "cdn-slave", false));
-	}
-
-	if (!client && (m_protocols & P_SHOUTCAST1CLIENT))
-	{
-		if (!type.empty() && ((type == ".flv") || (type == "flv") || (type == ".fla") || (type == "fla")))
-		{
-			client = new protocol_flvClient (*this, sid, host, addr, XFF); // flv
-		}
-		/*else if ((type == ".m4a") || (type == ".mp4"))
-		{
-			client = new protocol_m4aClient(s, sid, host, addr, m_clientPort, m_userAgent, XFF, m_referer, HEAD_REQUEST); // m4a
-		}*/
-		else
-		{
-			// from 2.4.8+, we now treat 1.x listener connections differently based on the
-			// requirement to send 1.x-style metadata or not, which if not we can go for a
-			// stipped down handler which will better frame-sync the output for reliabilty
-			// which is trickier to do with the metadata handling, hence the split handler
-			const bool sendMetadata = mapGet(m_httpRequestInfo.m_HTTPHeaders, "icy-metadata", false);
-
-			// and this is used to look for what is essentially a Shoutcast player request
-			// and if we see icy=http then we force providing the HTTP listener client and
-			// not the SC 1.x listener client as we know the player won't use that data...
-			const utf8 &http = toLower(stripWhitespace(mapGet(m_httpRequestInfo.m_QueryParameters, "icy", (utf8)"")));
-			const bool forceHTTP = ((!http.empty() && (http == "http")) || (!type.empty() && (type == "http")));
-
-			if ((gOptions.getBackupLoop(sid) == 1 ? false : (!forceHTTP ? sendMetadata : false)) ||
-				(!type.empty() && (type == "sc1")))
-			{
-				client = new protocol_shoutcast1Client (*this, sid, host, addr, XFF); // shoutcast 1 with metadata
-			}
-			else
-			{
-				client = new protocol_HTTPClient (*this, sid, host, addr, XFF);	// http (equivalent of shoutcast 1 without metadata)
-			}
-		}
-	}
-
-	if (client)
-	{
-        client->m_queryParams = encodeVariables (m_httpRequestInfo.m_QueryParameters);
-		// to prevent some of the stats / logs getting skewed
-		// then we filter out the SHOUTcast site 'test' users
-		// and we only action for GET requests, not HEAD, etc
-		if (!officialAgent && (m_httpRequestInfo.m_request == HTTP_GET) &&
-			// changed in #668 to skip doing auth on local clients
-			// as it will never provide an applicable advert group
-			// unless we're detecting a remote XFF value to use...
-			(isRemoteAddress(addr) || isRemoteAddress(XFF)))
-		{
-			DEBUG_LOG(m_clientLogString + "Starting client via auth.");
-			client->authForStream();
-		}
-		else
-		{
-			DEBUG_LOG(m_clientLogString + "Starting client directly.");
-			threadedRunner::scheduleRunnable(client);
-		}
-	}
-
-	m_result.done();
-}
-
-void protocol_HTTPStyle::state_GetLine() throw(exception)
-{
-	if (getHTTPStyleHeaderLine(DEFAULT_CLIENT_STREAM_ID, m_lineBuffer, m_clientLogString, m_postRequest == 2 ? m_postRequestLength : 0))
-	{
-		m_state = m_nextState;
-	}
-}
-
-// parse header line into key/value components and load into table
-void protocol_HTTPStyle::state_AnalyzeHTTPHeaders() throw(exception)
-{
-	m_lastActivityTime = ::time(NULL);
-
-	if ((int)m_httpRequestInfo.m_HTTPHeaders.size() >= gOptions.maxHeaderLineCount())
-	{
-		ELOG(m_clientLogString + "Max HTTP header lines exceeded");
-		sendMessageAndClose(MSG_HTTP400);
-		return;
-	}
-
-	// since a POST will get a null line, we need to check and handle it as appropriate when stripping whitespace
-	if (!m_lineBuffer.empty() && ((m_postRequest == 0) || 
-	   ((m_postRequest == 1) && (m_lineBuffer[0] != '\n') && (m_lineBuffer[0] != '\r'))))
-	{
-		m_lineBuffer = stripWhitespace(m_lineBuffer);
-	}
-
-	if (m_lineBuffer.empty())
-	{
-		m_state = &protocol_HTTPStyle::state_DetermineAction;
-		m_result.run();
-	}
-	else if ((m_postRequest == 1) && ((m_lineBuffer[0] == '\n') || (m_lineBuffer[0] == '\r')))
-	{
-		m_postRequest = 2;
-		m_nextState = &protocol_HTTPStyle::state_AnalyzeHTTPHeaders;
-		m_state = &protocol_HTTPStyle::state_GetLine;
-		m_result.read();
-		m_result.timeoutSID();
-		m_lineBuffer.clear();
-	}
-	else
-	{
-		// find the colon that divides header lines into key/value fields
-		const utf8::size_type pos = m_lineBuffer.find(utf8(":"));
-		// however in some cases (mainly found in the fire builds), the http headers may be split
-		// in a manner not expected so we have to look at the last key and append if there is one
-		// recorded which appears to be safe to do from testing vs killing the connection as was.
-		bool appended = false;
-		if ((pos == utf8::npos) && !m_postRequest)
-		{
-			if (!m_lastKey.empty())
-			{
-				utf8 oldValue = m_httpRequestInfo.m_HTTPHeaders[m_lastKey];
-				m_httpRequestInfo.m_HTTPHeaders[m_lastKey] = oldValue + stripWhitespace(m_lineBuffer.substr(pos+1));
-				DEBUG_LOG(m_clientLogString + "Appending HTTP header string to previous key [" + m_lineBuffer + "]");
-				appended = true;
-			}
-			else
-			{
-				DEBUG_LOG(m_clientLogString + "Bad HTTP header string [" + m_lineBuffer + "]");
-			}
-		}
-
-		if (m_postRequest < 2)
-		{
-			// make sure not to re-add if we're doing a header append (see above)
-			if (appended == false)
-			{
-				utf8 key = toLower(stripWhitespace(m_lineBuffer.substr(0,pos)));
-				m_lastKey = key;
-				// allow empty values. (for urls and what-not)
-				if (key.empty())
-				{
-					ELOG(m_clientLogString + "Connection rejected. Bad HTTP header string [" + m_lineBuffer + "]");
-					sendMessageAndClose(MSG_HTTP400);
-					return;
-				}
-                utf8 val = stripWhitespace(m_lineBuffer.substr(pos+1));
-				m_httpRequestInfo.m_HTTPHeaders[key] = val;
-                if (toLower(key) == "content-length")
-                {
-                    m_postRequestLength = atoi ((char*)&val[0]);
-                    if (m_postRequestLength < 0 || m_postRequestLength > 5000000)
-                    {
-                        ELOG(m_clientLogString + "Connection rejected. Content length too large [" + m_lineBuffer + "]");
-                        sendMessageAndClose(MSG_HTTP400);
-                        return;
-                    }
-                }
-			}
-		}
-		else
-		{
-			m_state = &protocol_HTTPStyle::state_DetermineAction;
-			m_result.run();
-			// copy the POST response
-			m_httpRequestInfo.m_PostLine = m_lineBuffer;
-			m_lineBuffer.clear();
-			return;
-		}
-
-		m_nextState = &protocol_HTTPStyle::state_AnalyzeHTTPHeaders;
-		m_state = &protocol_HTTPStyle::state_GetLine;
-		m_result.schedule();
-		m_result.timeoutSID();
-		m_lineBuffer.clear();
-	}
-}
-
-void protocol_HTTPStyle::state_Close() throw(exception)
-{
-	m_result.done();
-}
-
-// send buffer text
-void protocol_HTTPStyle::state_Send() throw(exception)
-{
-	if (sendDataBuffer(DEFAULT_CLIENT_STREAM_ID, m_outBuffer, m_outBufferSize, m_clientLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_HTTPStyle::sendMessageAndClose(const utf8 &msg) throw()
-{
-	m_outMsg = msg;
-	m_outBuffer = m_outMsg.c_str();
-	bandWidth::updateAmount(bandWidth::PUBLIC_WEB, (m_outBufferSize = (int)m_outMsg.size()));
-	m_state = &protocol_HTTPStyle::state_Send;
-	m_nextState = &protocol_HTTPStyle::state_Close;
-	m_result.write();
-	m_result.run();
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-utf8 protocol_HTTPStyle::getPlayedBody(const streamData::streamID_t sid)
-{
-	utf8 body = "<table border=\"0\" cellpadding=\"2\" cellspacing=\"2\">"
-				"<tr><td><b>Played @</b></td><td><b>Song Title</b></td></tr>";
-
-	streamData::streamHistory_t songHistory;
-	streamData::getStreamSongHistory(sid, songHistory);
-
-	if (songHistory.empty())
-	{
-		body += "<tr><td>No Songs Played</td></tr>";
-	}
-	else
-	{
-		for (streamData::streamHistory_t::const_iterator i = songHistory.begin(); i != songHistory.end(); ++i)
-		{
-			char buf[1024] = {0};
-			struct tm lt;
-			time_t t = (*i).m_when;
-			::localtime_s(&lt, &t);
-			snprintf(buf, sizeof(buf) - 1, "%02d:%02d:%02d", lt.tm_hour, lt.tm_min, lt.tm_sec);
-			body += "<tr><td>" + utf8(buf) + "</td><td>" + getCurrentSong((*i).m_title) + "</td>" +
-					(i == songHistory.begin() ? (streamData::isSourceConnected(sid) ?
-					"<td style=\"padding: 0 1em;\"><b>Current Song</b></td>" : "") : "") + "</tr>";
-		}
-	}
-
-	body += "</table>";
-	return body;
-}
-
-// played history page
-void protocol_HTTPStyle::path_played_html(const streamData::streamID_t sid, const utf8 &XFF) throw()
-{
-	cacheItem *item = m_htmlPlayedCache[sid];
-	if (getCachedResponse(item, m_htmlPlayedLock))
-	{
-		return;
-	}
-
-	utf8 header = MSG_NO_CLOSE_200,
-		 body = getStreamHeader(sid, "Stream History");
-
-	if (gOptions.getSongHistorySize(sid))
-	{
-		body += getStreamMiddlePlayingHeader(sid);
-	}
-
-	if (isAccessAllowed(sid, XFF) == true)
-	{
-		body += getStreamMiddleListenHeader(sid);
-	}
-
-	body += getStreamEndHeader(sid) + getPlayedBody(sid) + getIEFlexFix() + getfooterStr();
-
-	sendCachedResponse(item, m_htmlPlayedCache, m_htmlPlayedLock, header, body, sid);
-}
-
-utf8 protocol_HTTPStyle::getPlayedJSON(const streamData::streamID_t sid, utf8 &header,
-									   const utf8 &callback, const bool allowed) throw()
-{
-	const bool jsonp = !callback.empty();
-	header = "HTTP/1.0 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n";
-	utf8 body = (jsonp ? callback + "(" : "") + "[";
-
-	if (allowed)
-	{
-		streamData::streamHistory_t songHistory;
-		streamData::getStreamSongHistory(sid, songHistory);
-
-		bool first = true;
-		for (streamData::streamHistory_t::const_iterator i = songHistory.begin(); i != songHistory.end(); ++i)
-		{
-			body += (!first ? utf8(",") : "") + "{\"playedat\":" +
-					tos((*i).m_when) + "," "\"title\":\"" + escapeJSON((*i).m_title) + "\""
-					",\"metadata\":" + getCurrentJSONMetadataBody((*i).m_metadata) + "}";
-			first = false;
-		}
-	}
-
-	return (body + "]" + (jsonp ? utf8(")") : ""));
-}
-
-void protocol_HTTPStyle::path_played_json(const streamData::streamID_t sid, const utf8 &callback,
-										  const bool password, const utf8 &XFF) throw()
-{
-	cacheItem *item = m_jsonPlayedCache[sid];
-	if (getCachedResponse(item, m_jsonPlayedLock))
-	{
-		return;
-	}
-
-	const bool jsonp = !callback.empty();
-	utf8 header, body = getPlayedJSON(sid, header, callback, (password || (isAccessAllowed(sid, XFF) == true)));
-	sendCachedResponse(item, m_jsonPlayedCache, m_jsonPlayedLock, header, body, sid, jsonp);
-}
-
-utf8 protocol_HTTPStyle::getPlayedXML(const streamData::streamID_t sid, utf8 &header, const bool allowed) throw()
-{
-	header = "HTTP/1.0 200 OK\r\nContent-Type:text/xml\r\n";
-	utf8 body = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>"
-				"<SHOUTCASTSERVER><SONGHISTORY>";
-
-	if (allowed)
-	{
-		streamData::streamHistory_t songHistory;
-		streamData::getStreamSongHistory(sid, songHistory);
-
-		for (streamData::streamHistory_t::const_iterator i = songHistory.begin(); i != songHistory.end(); ++i)
-		{
-			body += "<SONG><PLAYEDAT>" + tos((*i).m_when) + "</PLAYEDAT>"
-					"<TITLE>" + aolxml::escapeXML((*i).m_title) + "</TITLE>" +
-					getCurrentXMLMetadataBody(true, (*i).m_metadata) + "</SONG>";
-		}
-	}
-
-	return (body + "</SONGHISTORY></SHOUTCASTSERVER>");
-}
-
-void protocol_HTTPStyle::path_played_xml(const streamData::streamID_t sid,
-										 const bool password, const utf8 &XFF) throw()
-{
-	cacheItem *item = m_xmlPlayedCache[sid];
-	if (getCachedResponse(item, m_xmlPlayedLock))
-	{
-		return;
-	}
-
-	utf8 header, body = getPlayedXML(sid, header, (password || (isAccessAllowed(sid, XFF) == true)));
-	sendCachedResponse(item, m_xmlPlayedCache, m_xmlPlayedLock, header, body, sid);
-}
-
-// flash x-domain file
-void protocol_HTTPStyle::path_crossdomain() throw()
-{
-	cacheItem *item = m_crossdomainCache[0];
-	if (getCachedResponse(item, m_crossdomainLock, 86400))	// 1 day
-	{
-		return;
-	}
-
-	// return either the current song or the next song to be played (if known)
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:text/x-cross-domain-policy\r\n",
-		 body = gOptions.getCrossDomainFile(!!m_compressed);
-
-	// make sure there is a gzipped version available to send if signalled as supported
-	if (m_compressed && !gOptions.m_crossdomainStrGZ.empty())
-	{
-		header += "Content-Encoding:gzip\r\n";
-		body = gOptions.m_crossdomainStrGZ;
-	}
-
-	sendCachedResponse(item, m_crossdomainCache, m_crossdomainLock, header, body);
-}
-
-// flash swf file (assumes shoutcast.swf for ease of implementation / consistency)
-void protocol_HTTPStyle::path_shoutcastswf() throw()
-{
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:application/x-shockwave-flash\r\n",
-		 body = gOptions.getShoutcastSWF(!!m_compressed);
-
-	// make sure there is a gzipped version available to send if signalled as supported
-	if (m_compressed && !gOptions.m_shoutcastSWFStrGZ.empty())
-	{
-		header += "Content-Encoding:gzip\r\n";
-		body = gOptions.m_crossdomainStrGZ;
-	}
-
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_HTTPStyle::path_redirect_url(const streamData::streamID_t sid, const bool no_sid, const bool isStats) throw()
-{
-	streamData::streamInfo info;
-	streamData::extraInfo extra;
-	streamData::getStreamInfo(sid, info, extra);
-
-	const utf8 redirectUrl = gOptions.getStreamRedirectURL((no_sid ? 0 : sid), isStats, !info.m_streamURL.empty(), !!m_compressed);
-	if (redirectUrl.empty())
-	{
-		// try to redirect directly to the appropriate page based on the number of active streams
-		streamData::streamID_t lastSID = 0;
-		if (streamData::totalActiveStreams(lastSID) == (streamData::streamID_t)DEFAULT_CLIENT_STREAM_ID)
-		{
-			sendMessageAndClose(redirect("index.html?sid=" + tos(lastSID), !!m_compressed));
-		}
-		else
-		{
-			sendMessageAndClose(redirect("index.html", !!m_compressed));
-		}
-	}
-	else
-	{
-		sendMessageAndClose(redirectUrl);
-	}
-}
-
-void protocol_HTTPStyle::path_root_summary(const utf8 &XFF, const bool force) throw()
-{
-	// if enabled then we need to block access to this page as it's not allowed to be public
-	if (gOptions.getStreamHideStats(0) == "all")
-	{
-		path_redirect_url(0, true, false);
-	}
-	else
-	{
-		utf8 header = MSG_NO_CLOSE_200,
-			 body = "<!DOCTYPE html><html><head>"
-					"<meta charset=\"utf-8\">"
-					"<meta name=viewport content=\"width=device-width, initial-scale=1\">"\
-					"<title>Shoutcast Server</title>"
-					"<link href=\"index.css\" rel=\"stylesheet\" type=\"text/css\">"
-					"<link href=\"images/favicon.ico\" rel=\"shortcut icon\" type=\"" + gOptions.faviconFileMimeType() + "\">"
-					"</head><body style=\"margin:0;\">"
-					"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>"
-					"<td><div class=\"logo\">Shoutcast Streams Status</div></td>"
-					"<td style=\"text-align:right;vertical-align:bottom;padding-right:0.1em;\">"
-					"<a target=\"_blank\" title=\"Built: " __DATE__ "\" "
-					"href=\"http://www.shoutcast.com\">Shoutcast Server v" +
-					addWBR(gOptions.getVersionBuildStrings() + "/" SERV_OSNAME) + "</a>"
-					"</td></tr><tr><td class=\"thr\" align=\"center\" colspan=\"2\">"
-					"<table width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\"><tr class=\"tnl\">"
-					"<td align=\"left\">&nbsp;<a target=\"_blank\" href=\"http://forums.shoutcast.com/forumdisplay.php?f=140\">Help</a>&nbsp;&nbsp;|&nbsp;&nbsp;"
-					" <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_Broadcaster\">Documentation</a></td>"
-					"<td align=\"right\"><a href=\"admin.cgi\">Server Login&nbsp;"
-					"<img border=\"0\" title=\"Server Login\nPassword Required\" alt=\"Server Login\nPassword Required"
-					"\" style=\"vertical-align:middle\" src=\"images/lock.png\">"
-					"</a>&nbsp;&nbsp;</td></tr></table></td></tr></table>";
-
-		utf8 streamBody = "";
-		size_t total = 0, known = streamData::totalStreams();
-
-		if (known > 0)
-		{
-			--known;	// just makes it easier to know when to insert the <hr> element
-
-			size_t inc = 0;
-			streamData::streamID_t sid = 0;
-			do
-			{
-				streamData::streamInfo info;
-				streamData::extraInfo extra;
-				if (streamData::getStreamInfo((sid = streamData::enumStreams(inc)), info, extra))
-				{
-					// increment our stream total now that we know we have one
-					++total;
-
-					utf8 tooltip = streamData::getContentType(info) + " @ " +
-								   (info.m_streamBitrate > 0 ? tos(info.m_streamBitrate) :
-								   "unknown") + " kbps" + (info.m_vbr ? " (VBR)" : "") +
-								   ", " + sampleRateStr(info.m_streamSampleRate);
-
-					streamBody += "<tr><td class=\"tnl\">"
-								  "<a href=\"index.html?sid=" + tos(sid) + "\" title=\"" + tooltip + "\">Stream #" + tos(sid) + "</a> "
-								  "<a href=\"admin.cgi?sid=" + tos(sid) + "\">(Stream Login)</a>";
-
-					if (isAccessAllowed(sid, XFF) == true)
-					{
-						streamBody += " <a href=\"listen.pls?sid=" + tos(sid) + "\">"
-									  "<img border=\"0\" title=\"Listen to Stream\" alt=\"Listen to Stream"
-									  "\" style=\"vertical-align:middle\" src=\"images/listen.png\"></a>";
-
-						streamBody += " <a href=\"played.html?sid=" + tos(sid) + "\">"
-									  "<img border=\"0\" title=\"History\" alt=\"History"
-									  "\" style=\"vertical-align:middle\" src=\"images/history.png\"></a>";
-					}
-
-					streamBody += "</td></tr><tr><td>" + (info.m_streamPublic && extra.ypConnected ?
-								  "<a target=\"_blank\" href=\"http://directory.shoutcast.com/Search?query=" +
-								  urlUtils::escapeURI_RFC3986(info.m_streamName) +
-								  "\">" + aolxml::escapeXML(info.m_streamName) + "</a>" :
-								  (info.m_streamURL.empty() ? aolxml::escapeXML(info.m_streamName) :
-								  urlLink(info.m_streamURL, info.m_streamName))) + "</td></tr>"
-								  "<tr><td>" + tooltip + "</td></tr>";
-
-					if (!getHideState(sid))
-					{
-						stats::statsData_t data;
-						stats::getStats(sid, data);
-
-						const int maxUsers = ((info.m_streamMaxUser > 0) && (info.m_streamMaxUser < gOptions.maxUser()) ? info.m_streamMaxUser : gOptions.maxUser());
-						streamBody += "<tr valign=\"top\"><td>" + tos(data.connectedListeners) +
-									  (maxUsers > 0 ? " of " + tos(maxUsers) : "") + " listeners" +
-									  (!maxUsers ? " (unlimited)" : "") +
-									  (data.connectedListeners != data.uniqueListeners ?
-									  (" (" + tos(data.uniqueListeners) + " unique)") : "") + "</td></tr>";
-					}
-					
-					if (!info.m_currentSong.empty())
-					{
-						streamBody += "<tr valign=\"top\"><td>Playing Now: "
-									  "<b><a href=\"currentsong?sid=" + tos(sid) + "\">" +
-									  getCurrentSong(info.m_currentSong) + "</a></b></td></tr>";
-
-						// only show if we have a valid current song
-						if (!info.m_comingSoon.empty())
-						{
-							streamBody += "<tr valign=\"top\"><td>Playing Next: <b><a href=\"nextsong?sid=" +
-										  tos(sid) + "\">" + aolxml::escapeXML(info.m_comingSoon) + "</a></b></td></tr>";
-						}
-					}
-
-					if (!info.m_contentType.empty() && (info.m_uvoxDataType == MP3_DATA))
-					{
-						streamBody += streamData::getHTML5Player(sid);
-					}
-
-					if (inc < known)
-					{
-						// this allows us to only add between
-						// blocks and not below the very last
-						streamBody += "<tr><td><hr></td></tr>";
-					}
-				}
-				++inc;
-			}
-			while (sid);
-		}
-
-		// if only 1 stream is active then behave like a v1 DNAS and show that stream's summary page
-		if (total == 1 && !force)
-		{
-			sendMessageAndClose(redirect("index.html", !!m_compressed));
-		}
-		else
-		{
-			body += "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" width=\"100%\">"
-					"<tr><td class=\"tsp\" align=\"center\">"
-					"Available Streams: " + tos(total) + "</td></tr></table><br>" +
-					getNewVersionMessage() +
-					"<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" "
-					"width=\"100%\" style=\"padding:0 1em;\" align=\"center\">"
-					// if there are any streams then we can add them in now we have the real total and finish off the page
-					"<tbody align=\"center\">" + streamBody + "</tbody></table>" +
-					getHTML5Remover() + getfooterStr();
-
-			COMPRESS(header, body);
-			header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-			sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-		}
-	}
-}
-
-// main admin page
-void protocol_HTTPStyle::path_root(const streamData::streamID_t sid, const utf8 &XFF) throw()
-{
-	// if enabled then we need to block access to this page as it's not allowed to be public
-	if (gOptions.getStreamHideStats(sid) == "all")
-	{
-		path_redirect_url(sid, false, false);
-	}
-	else
-	{
-		utf8 header = MSG_NO_CLOSE_200,
-			 body = getStreamHeader(sid, "Stream Status");
-
-		if (gOptions.getSongHistorySize(sid))
-		{
-			body += getStreamMiddlePlayingHeader(sid);
-		}
-
-		if (isAccessAllowed(sid, XFF) == true)
-		{
-			body += getStreamMiddleListenHeader(sid);
-		}
-
-		body += getStreamEndHeader(sid) + "<table cellpadding=\"5\" "
-				"cellspacing=\"0\" border=\"0\" width=\"100%\"><tr>"
-				"<td class=\"tsp\" align=\"center\">Current Stream "
-				"Information</td></tr></table><br>" + getNewVersionMessage();
-
-		stats::statsData_t data;
-		stats::getStats(sid, data);
-
-		streamData::streamInfo info;
-		streamData::extraInfo extra;
-		if (streamData::getStreamInfo(sid, info, extra))
-		{
-			const int maxUsers = ((info.m_streamMaxUser > 0) && (info.m_streamMaxUser < gOptions.maxUser()) ? info.m_streamMaxUser : gOptions.maxUser());
-			const bool isListable = streamData::isAllowedType(info.m_uvoxDataType);
-			body +=	"<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" align=\"center\" style=\"padding-left:1em;\"><tr valign=\"top\">"
-					"<td>Listing Status: </td>"
-					"<td><b>Stream is currently up " +
-					(info.m_streamPublic && isListable ? (!extra.ypConnected ? "" : utf8("and public")) : utf8("and private (not listed)")) +
-					(info.m_streamPublic && isListable ? (!extra.ypConnected ? 
-						(extra.ypErrorCode == -1 ? "but unable to access the Directory.<br>Listeners are allowed and the stream will act like it is private until resolved." :
-						(extra.ypErrorCode == YP_MAINTENANCE_CODE ? "but received a Directory maintenance notification.<br>Listeners are allowed to connect and the stream will act like it is private." :
-						(!info.m_authHash.empty() ?
-						 (extra.ypErrorCode != YP_NOT_VISIBLE ? "but is waiting on a Directory response." : "but is not visible on the internet "
-																"(YP error code: <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2#YP_Server_Errors\">" +
-																tos(extra.ypErrorCode) + "</a>).<br>Listeners are allowed and the stream will act like it is private until resolved.<br><br>"
-																"Resolving this issue will allow the stream to be listed in the Shoutcast Directory.") :
-													"but requires <a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">registration</a> in the Shoutcast Directory.<br>"
-													"Listeners are allowed and the stream will act like it is private until resolved."))) : "") : "") + "</b></td></tr>"
-					"<tr valign=\"top\"><td>Stream Status: </td>"
-					"<td><b>Stream is up (" + streamData::getContentType(info) + " @ " +
-					(info.m_streamBitrate > 0 ? tos(info.m_streamBitrate) : "unknown") +
-					" kbps" + (info.m_vbr ? " (VBR)" : "") + ", " +
-					sampleRateStr(info.m_streamSampleRate) + ") with " +
-					tos(data.connectedListeners) + (maxUsers > 0 ? " of " +
-					tos(maxUsers) : "") + " listeners" + (!maxUsers ? " (unlimited)" : "") +
-					(data.connectedListeners != data.uniqueListeners ? (" (" +
-					tos(data.uniqueListeners) + " unique)") : "") + "</b></td></tr>";
-
-			if (data.peakListeners > 0)
-			{
-				body += "<tr valign=\"top\"><td>Listener Peak: </td><td><b>" +
-						tos(data.peakListeners) + "</b></td></tr>";
-			}
-
-			const utf8 avgTime = timeString(data.avgUserListenTime);
-			if (!avgTime.empty())
-			{
-				body +=	"<tr valign=\"top\"><td>Avg. Play Time: </td>"
-						"<td><b>" + avgTime + "</b></td></tr>";
-			}
-
-			body += "<tr valign=\"top\"><td>Stream Name: </td><td><b>" +
-					(info.m_streamPublic && extra.ypConnected ?
-					 "<a target=\"_blank\" href=\"http://directory.shoutcast.com/Search?query=" +
-					 urlUtils::escapeURI_RFC3986(info.m_streamName) + "\">" +
-					 aolxml::escapeXML(info.m_streamName) + "</a>" :
-					 aolxml::escapeXML(info.m_streamName)) + "</b></td></tr>";
-
-			if (!info.m_streamGenre[0].empty())
-			{
-				body += "<tr valign=\"top\"><td>Stream Genre(s): </td>"
-						"<td><b>" + (info.m_streamPublic && extra.ypConnected ?
-						"<a target=\"_blank\" href=\"http://directory.shoutcast.com/Genre?name=" +
-						urlUtils::escapeURI_RFC3986(info.m_streamGenre[0]) + "\">" +
-						aolxml::escapeXML(info.m_streamGenre[0]) + "</a>" :
-						aolxml::escapeXML(info.m_streamGenre[0])) + "</b>";
-
-				for (int i = 1; i < 5; i++)
-				{
-					if (!info.m_streamGenre[i].empty())
-					{
-						body += " , <b>" + (info.m_streamPublic && extra.ypConnected ? "<a target=\"_blank\" href=\"http://directory.shoutcast.com/Genre?name=" +
-								 urlUtils::escapeURI_RFC3986(info.m_streamGenre[i]) + "\">" + aolxml::escapeXML(info.m_streamGenre[i]) + "</a>" :
-								 aolxml::escapeXML(info.m_streamGenre[i])) + "</b>";
-					}
-				}
-
-				body += "</td></tr>";
-			}
-				
-			if (!info.m_streamURL.empty())
-			{
-				body += "<tr valign=\"top\"><td>Stream Website: </td>"
-						"<td><b>" + urlLink(info.m_streamURL) + "</b></td></tr>";
-			}
-
-			if (!info.m_currentSong.empty())
-			{
-				body += "<tr valign=\"top\"><td>Playing Now: </td>"
-						"<td><b><a href=\"currentsong?sid=" + tos(sid) + "\">" +
-						getCurrentSong(info.m_currentSong) + "</a></b></td></tr>";
-
-				// only show if we have a valid current song
-				if (!info.m_comingSoon.empty())
-				{
-					body += "<tr valign=\"top\"><td>Playing Next: </td>"
-							"<td><b><a href=\"nextsong?sid=" + tos(sid) + "\">" +
-							aolxml::escapeXML(info.m_comingSoon) + "</a></b></td></tr>";
-				}
-			}
-
-			if (!info.m_contentType.empty() && (info.m_uvoxDataType == MP3_DATA))
-			{
-				body += streamData::getHTML5Player(sid);
-			}
-
-			body += "</table>";
-		}
-		else
-		{
-			body += "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" "
-					"align=\"center\"><tr valign=\"top\"><td>Stream Status: </td><td><b>";
-			const utf8 movedUrl = gOptions.stream_movedUrl(sid);
-			if (movedUrl.empty())
-			{
-				const int maxUsers = ((info.m_streamMaxUser > 0) && (info.m_streamMaxUser < gOptions.maxUser()) ? info.m_streamMaxUser : gOptions.maxUser());
-				body += "Stream is currently down" + (data.connectedListeners > 0 ?
-						" with " + tos(data.connectedListeners) + (maxUsers > 0 ? " of " +
-						tos(maxUsers) : "") + " listeners" + (!maxUsers ? " (unlimited)" : "") +
-						(data.connectedListeners != data.uniqueListeners ? (" (" +
-						tos(data.uniqueListeners) + " unique)") : "") : ".") + "<br>There is no "
-						"source connected or no stream is configured for stream #" + tos(sid);
-			}
-			else
-			{
-				body += "Stream has been moved to " + urlLink(movedUrl);
-			}
-			body += "</b></td></tr>";
-
-			if (data.peakListeners > 0)
-			{
-				body += "<tr valign=\"top\"><td>Listener Peak: </td><td><b>" +
-						tos(data.peakListeners) + "</b></td></tr>";
-			}
-
-			const utf8 avgTime = timeString(data.avgUserListenTime);
-			if (!avgTime.empty())
-			{
-				body +=	"<tr valign=\"top\"><td>Avg. Play Time: </td>"
-						"<td><b>" + avgTime + "</b></td></tr>";
-			}
-
-			body += "</table>";
-		}
-
-		body += getIEFlexFix() + getHTML5Remover() + getfooterStr();
-
-		COMPRESS(header, body);
-		header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-		sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-	}
-}
-
-// redirect to stream URL
-void protocol_HTTPStyle::path_home(const streamData::streamID_t sid) throw()
-{
-	streamData::streamInfo info;
-	streamData::extraInfo extra;
-	streamData::getStreamInfo(sid, info, extra);
-
-	utf8 streamUrl = (!info.m_streamURL.empty() ?
-					  ((info.m_streamURL.find(utf8("://")) == utf8::npos ? "http://" : "") +
-					   info.m_streamURL) : "http://www.shoutcast.com");
-
-	sendMessageAndClose(redirect(streamUrl, !!m_compressed));
-}
-
-void protocol_HTTPStyle::path_track(const streamData::streamID_t sid, const int mode) throw()
-{
-	// this is a non-compressed response as most normal titles aren't
-	// long enough or contain enough data sans gzip header and footer
-	// to make it worth trying to create a gzipped response for this.
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:text/plain;charset=utf-8\r\n", currentSong, comingSoon;
-	std::vector<uniString::utf8> nextSongs;
-	if (streamData::getStreamNextSongs(sid, currentSong, comingSoon, nextSongs))
-	{
-		// return either the current song or the next song to be played (if known)
-		utf8 body = (!mode ? (currentSong.empty() ? "" : currentSong) :
-					 (!currentSong.empty() ? comingSoon : ""));
-		header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-		sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-	}
-	else
-	{
-		sendMessageAndClose(header + "\r\n");
-	}
-}
-
-void protocol_HTTPStyle::path_tracks_json(const streamData::streamID_t sid, const utf8 &callback) throw()
-{
-	cacheItem *item = m_jsonTracksCache[sid];
-	if (getCachedResponse(item, m_jsonTracksLock))
-	{
-		return;
-	}
-
-	const bool jsonp = !callback.empty();
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n",
-		 body = (jsonp ? callback + "(" : "") + "[", currentSong, comingSoon;
-	std::vector<uniString::utf8> nextSongs;
-	if (streamData::getStreamNextSongs(sid, currentSong, comingSoon, nextSongs))
-	{
-		int index = 1;
-		for (std::vector<uniString::utf8>::const_iterator i = nextSongs.begin(); i != nextSongs.end(); ++i, index++)
-		{
-			body += (i != nextSongs.begin() ? utf8(",") : "") +
-					"{\"title\":\"" + escapeJSON((*i).empty() ? "" : (*i)) + "\"}";
-		}
-	}
-
-	body += utf8("]") + (jsonp ? ")" : "");
-
-	sendCachedResponse(item, m_jsonTracksCache, m_jsonTracksLock, header, body, sid, jsonp);
-}
-
-void protocol_HTTPStyle::path_tracks_xml(const streamData::streamID_t sid) throw()
-{
-	cacheItem *item = m_xmlTracksCache[sid];
-	if (getCachedResponse(item, m_xmlTracksLock))
-	{
-		return;
-	}
-
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:text/xml\r\n",
-		 body = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>"
-				"<SHOUTCASTSERVER><NEXTSONGS>", currentSong, comingSoon;
-	std::vector<uniString::utf8> nextSongs;
-	if (streamData::getStreamNextSongs(sid, currentSong, comingSoon, nextSongs))
-	{
-		int index = 1;
-		for (std::vector<uniString::utf8>::const_iterator i = nextSongs.begin(); i != nextSongs.end(); ++i, index++)
-		{
-			body += "<TITLE seq=\"" + tos(index) + "\">" + aolxml::escapeXML(*i) + "</TITLE>";
-		}
-	}
-
-	body += "</NEXTSONGS></SHOUTCASTSERVER>";
-
-	sendCachedResponse(item, m_xmlTracksCache, m_xmlTracksLock, header, body, sid);
-}
-
-uniString::utf8 protocol_HTTPStyle::getCurrentXMLMetadataBody(const bool mode, const utf8 &metadata)
-{
-	utf8 body = (!mode ? "<SONGMETADATA>" : "<METADATA>");
-
-	if (!metadata.empty())
-	{
-		// strip out the metadata between the <metadata /> part
-		// so it'll instead go in our own <songmetadata /> part
-		const utf8::size_type pos1 = metadata.find(METADATA), // 10 chars
-							  pos2 = metadata.find(E_METADATA); // 11 chars
-		if ((pos1 != utf8::npos) && (pos2 != utf8::npos))
-		{
-			body += stripWhitespace(metadata.substr(pos1 + 10, pos2 - pos1 - 10));
-		}
-	}
-
-	return (body + (!mode ? "</SONGMETADATA>" : "</METADATA>"));
-}
-
-void protocol_HTTPStyle::path_current_metadata_xml(const streamData::streamID_t sid) throw()
-{
-	cacheItem *item = m_xmlMetadataCache[sid];
-	if (getCachedResponse(item, m_xmlMetadataLock))
-	{
-		return;
-	}
-
-	streamData::streamHistory_t songHistory;
-	streamData::getStreamSongHistory(sid, songHistory);
-
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:text/xml\r\n",
-		 body = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>"
-		 "<SHOUTCASTSERVER>" + getCurrentXMLMetadataBody(false,
-		 (!songHistory.empty() ? songHistory[0].m_metadata : "")) +
-		 "</SHOUTCASTSERVER>";
-
-	sendCachedResponse(item, m_xmlMetadataCache, m_xmlMetadataLock, header, body, sid);
-}
-
-uniString::utf8 protocol_HTTPStyle::getCurrentJSONMetadataBody(const utf8 &metadata)
-{
-	utf8 body = "{";
-
-	if (!metadata.empty())
-	{
-		// strip out the metadata between the <metadata /> part
-		// so it'll instead go in our own <songmetadata /> part
-		const utf8::size_type pos1 = metadata.find(METADATA), // 10 chars
-							  pos2 = metadata.find(E_METADATA); // 11 chars
-		if ((pos1 != utf8::npos) && (pos2 != utf8::npos))
-		{
-			// take the xml metadata, create a new xml block from it
-			const utf8 meta = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?><meta>" +
-							  stripWhitespace(metadata.substr(pos1 + 10, pos2 - pos1 - 10)) + "</meta>";
-
-			// then split down into node+text to be able to output
-			aolxml::node *n = 0;
-			try
-			{
-				n = aolxml::node::parse(meta);
-				if (n)
-				{
-					for (aolxml::node::const_childIterator_t i = n->childrenBegin(); i != n->childrenEnd(); ++i)
-					{
-						const utf8 node = toLower((*i)->name());
-						body += (i != n->childrenBegin() ? utf8(",") : "") +
-								"\"" + escapeJSON(node) +
-								"\":" + ((*i)->childrenEmpty() ? "\"" + escapeJSON((*i)->pcdata()) + "\"" : "");
-						// if we've got a child block it should be <extension/> and so parse out
-						if (!(*i)->childrenEmpty())
-						{
-							body += "[";
-							for (aolxml::node::const_childIterator_t c = (*i)->childrenBegin(); c != (*i)->childrenEnd(); ++c)
-							{
-								const utf8 nodec = toLower((*c)->name()) + (*c)->findAttributeString("seq");
-								body += (c != (*i)->childrenBegin() ? utf8(",") : "") +
-										"{\"" + escapeJSON(nodec) +
-										"\":" + ((*c)->childrenEmpty() ? "\"" + escapeJSON((*c)->pcdata()) + "\"" : "") + "}";
-							}
-							body += "]";
-						}
-					}
-				}
-			}
-			catch(const exception &)
-			{
-			}
-			forget(n);
-		}
-	}
-
-	return (body + "}");
-}
-
-void protocol_HTTPStyle::path_current_metadata_json(const streamData::streamID_t sid, const utf8 &callback) throw()
-{
-	cacheItem *item = m_jsonMetadataCache[sid];
-	if (getCachedResponse(item, m_jsonMetadataLock))
-	{
-		return;
-	}
-
-	streamData::streamHistory_t songHistory;
-	streamData::getStreamSongHistory(sid, songHistory);
-
-	const bool jsonp = !callback.empty();
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n",
-		 body = (jsonp ? callback + "(" : "") +
-				getCurrentJSONMetadataBody((!songHistory.empty() ? songHistory[0].m_metadata : "")) +
-				(jsonp ? ")" : "");
-
-	sendCachedResponse(item, m_jsonMetadataCache, m_jsonMetadataLock, header, body, sid, jsonp);
-}
-
-utf8 protocol_HTTPStyle::getStatsXMLBody(const streamData::streamID_t sid, const bool single,
-										 const bool proceed, const socketOps::tSOCKET m_socket,
-										 stats::statsData_t& data, const bool no_copy)
-{
-	streamData::streamInfo info;
-	streamData::extraInfo extra;
-	streamData::getStreamInfo(sid, info, extra);
-
-	if (!no_copy)
-	{
-		stats::getStats(sid, data);
-	}
-
-	size_t maxUsers = gOptions.maxUser();
-
-	config::streamConfig stream;
-	if (gOptions.getStreamConfig(stream, sid))
-	{
-		maxUsers = ((stream.m_maxStreamUser > 0) && (stream.m_maxStreamUser < gOptions.maxUser()) ? stream.m_maxStreamUser : gOptions.maxUser());
-	}
-
-	utf8 body = "<CURRENTLISTENERS>" + tos(data.connectedListeners) + "</CURRENTLISTENERS>"
-				"<PEAKLISTENERS>" + tos(data.peakListeners) + "</PEAKLISTENERS>"
-				"<MAXLISTENERS>" + (maxUsers > 0 ? tos(maxUsers) : "UNLIMITED") + "</MAXLISTENERS>"
-				"<UNIQUELISTENERS>" + tos(data.uniqueListeners) + "</UNIQUELISTENERS>"
-				"<AVERAGETIME>" + tos(data.avgUserListenTime) + "</AVERAGETIME>";
-
-	for (int n = 0; n < 5; n++)
-	{
-		const utf8 num = (n ? tos(n + 1) : "");
-		body += "<SERVERGENRE" + num + ">" + aolxml::escapeXML(info.m_streamGenre[n]) + "</SERVERGENRE" + num + ">";
-	}
-
-	body += "<SERVERURL>" + aolxml::escapeXML(info.m_streamURL) + "</SERVERURL>"
-			"<SERVERTITLE>" + aolxml::escapeXML(info.m_streamName) + "</SERVERTITLE>"
-			"<SONGTITLE>" + aolxml::escapeXML(info.m_currentSong.empty() ? "" : info.m_currentSong) + "</SONGTITLE>";
-
-	if (!info.m_comingSoon.empty())
-	{
-		body += "<NEXTTITLE>" + aolxml::escapeXML(info.m_comingSoon) + "</NEXTTITLE>";
-	}
-
-	if (!info.m_streamUser.empty())
-	{
-		body += "<DJ>" + aolxml::escapeXML(info.m_streamUser) + "</DJ>";
-	}
-
-	if (!info.m_currentURL.empty())
-	{
-		body += "<SONGURL>" + aolxml::escapeXML(info.m_currentURL) + "</SONGURL>";
-	}
-
-	body += "<STREAMHITS>" + tos(data.totalStreamHits) + "</STREAMHITS>"
-			"<STREAMSTATUS>" + (extra.isConnected ? "1" : "0") + "</STREAMSTATUS>"
-			"<BACKUPSTATUS>" + (extra.isBackup ? "1" : "0") + "</BACKUPSTATUS>"
-			"<STREAMLISTED>" + (extra.ypConnected ? "1" : "0") + "</STREAMLISTED>";
-	if (!extra.ypConnected)
-	{
-		body += "<STREAMLISTEDERROR>" + tos(extra.ypErrorCode) + "</STREAMLISTEDERROR>";
-	}
-
-	// if a source is connected and we have a valid password then output this
-	if (proceed && extra.isConnected)
-	{
-		// strip down the source address for display output to an appropriate output based on settings
-		utf8 srcAddr = (extra.isBackup ? info.m_backupURL : (extra.isRelay ? info.m_relayURL : info.m_srcAddr));
-		if (gOptions.nameLookups())
-		{
-			if (!extra.isBackup && !extra.isRelay)
-			{
-				u_short port = 0;
-				string addr, hostName;
-				socketOps::getpeername(m_socket, addr, port);
-
-				string src = (extra.isBackup ? info.m_backupURL : (extra.isRelay ? info.m_relayURL : info.m_srcAddr)).hideAsString();
-				hostName = src;
-				if (!socketOps::addressToHostName(addr, port, hostName))
-				{
-					srcAddr = hostName + " (" + (src) + ")";
-				}
-			}
-		}
-
-		body += "<STREAMSOURCE>" + aolxml::escapeXML(srcAddr) + "</STREAMSOURCE>";
-
-		if (!info.m_backupURL.empty())
-		{
-			body += "<STREAMBACKUP>" + aolxml::escapeXML(info.m_backupURL) + "</STREAMBACKUP>";
-		}
-	}
-
-	body += "<STREAMPATH>" + aolxml::escapeXML(getStreamPath(sid)) + "</STREAMPATH>" +
-			(extra.isConnected ? ("<STREAMUPTIME>" + tos(::time(NULL) - streamData::getStreamUptime(sid)) + "</STREAMUPTIME>") : "") +
-			"<BITRATE>" + tos(info.m_streamBitrate) + "</BITRATE>"
-			"<SAMPLERATE>" + tos(info.m_streamSampleRate) + "</SAMPLERATE>" +
-			(info.m_vbr ? "<VBR>1</VBR>" : "") +
-			"<CONTENT>" + aolxml::escapeXML(info.m_contentType) + "</CONTENT>";
-
-	if (single)
-	{
-		body += "<VERSION>" + aolxml::escapeXML(gOptions.getVersionBuildStrings()) + " (" SERV_OSNAME ")</VERSION>";
-	}
-
-	return body;
-}
-
-void protocol_HTTPStyle::path_stats_xml(streamData::streamID_t sid, bool proceed) throw()
-{
-	cacheItem *item = m_xmlStatsCache[sid];
-	if (getCachedResponse(item, m_xmlStatsLock))
-	{
-		return;
-	}
-
-	stats::statsData_t data;
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:text/xml\r\n",
-		 body = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>"
-				"<SHOUTCASTSERVER>" + getStatsXMLBody(sid, true, proceed, m_socket, data) + "</SHOUTCASTSERVER>";
-
-	sendCachedResponse(item, m_xmlStatsCache, m_xmlStatsLock, header, body, sid);
-}
-
-void protocol_HTTPStyle::path_statistics_xml(streamData::streamID_t sid, bool proceed) throw()
-{
-	cacheItem *item = m_xmlStatisticsCache[sid];
-	if (getCachedResponse(item, m_xmlStatisticsLock))
-	{
-		return;
-	}
-
-	// this will generate a DNAS wide statistics report making it clearer on what is / isn't going on (requested by WaveStreaming)
-	size_t totalConnectedListeners = 0,
-		   totalPeakListeners = 0,
-		   totalMoved = 0;
-	time_t totalAvgUserListenTime = 0;
-
-	streamData::streamIDs_t streamIds = streamData::getStreamIds(2);
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		if ((*i).second.m_streamID)
-		{
-			streamIds.insert((*i).second.m_streamID);
-		}
-	}
-
-	utf8 block = "";
-	for (streamData::streamIDs_t::const_iterator i = streamIds.begin(); i != streamIds.end(); ++i)
-	{
-		const utf8 movedUrl = gOptions.stream_movedUrl((*i));
-		if (movedUrl.empty())
-		{
-			stats::statsData_t data;
-			stats::getStats((*i), data);
-
-			// increment the system wide totals
-			totalConnectedListeners += data.connectedListeners;
-			totalPeakListeners += data.peakListeners;
-			totalAvgUserListenTime += data.avgUserListenTime;
-
-			block += "<STREAM id=\"" + tos((*i)) + "\">" + getStatsXMLBody((*i), false, proceed, m_socket, data, true) + "</STREAM>";
-		}
-		else
-		{
-			++totalMoved;
-		}
-	}
-
-	const int maxUsers = gOptions.maxUser();
-	streamData::streamID_t lastSID = 0;
-	const utf8 main = "<STREAMSTATS>"
-					  "<TOTALSTREAMS>" + tos(streamIds.size() - totalMoved) + "</TOTALSTREAMS>"
-					  "<ACTIVESTREAMS>" + tos(streamData::totalActiveStreams(lastSID)) + "</ACTIVESTREAMS>"
-					  "<CURRENTLISTENERS>" + tos(totalConnectedListeners) + "</CURRENTLISTENERS>"
-					  "<PEAKLISTENERS>" + tos(totalPeakListeners) + "</PEAKLISTENERS>"
-					  "<MAXLISTENERS>" + (maxUsers > 0 ? tos(maxUsers) : "UNLIMITED") + "</MAXLISTENERS>"
-					  "<UNIQUELISTENERS>" + tos(stats::getTotalUniqueListeners()) + "</UNIQUELISTENERS>"
-					  "<AVERAGETIME>" + tos(totalConnectedListeners > 0 ?
-					  (totalAvgUserListenTime / totalConnectedListeners) : 0) + "</AVERAGETIME>"
-					  "<VERSION>" + aolxml::escapeXML(gOptions.getVersionBuildStrings()) + " (" SERV_OSNAME ")</VERSION>";
-
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:text/xml\r\n",
-		 body = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>"
-				"<SHOUTCASTSERVER>" + main + block + "</STREAMSTATS></SHOUTCASTSERVER>";
-
-	sendCachedResponse(item, m_xmlStatisticsCache, m_xmlStatisticsLock, header, body, sid);
-}
-
-utf8 protocol_HTTPStyle::getStatsJSONBody(const streamData::streamID_t sid, const bool single,
-										  const bool proceed, const socketOps::tSOCKET m_socket,
-										  stats::statsData_t& data, const bool no_copy)
-{
-	streamData::streamInfo info;
-	streamData::extraInfo extra;
-	streamData::getStreamInfo(sid, info, extra);
-
-	if (!no_copy)
-	{
-		stats::getStats(sid, data);
-	}
-
-	size_t maxUsers = gOptions.maxUser();
-
-	config::streamConfig stream;
-	if (gOptions.getStreamConfig(stream, sid))
-	{
-		maxUsers = ((stream.m_maxStreamUser > 0) && (stream.m_maxStreamUser < gOptions.maxUser()) ? stream.m_maxStreamUser : gOptions.maxUser());
-	}
-
-	utf8 body = (!single ? "\"id\":" + tos(sid) + "," : "") +
-				"\"currentlisteners\":" + tos(data.connectedListeners) + ","
-				"\"peaklisteners\":" + tos(data.peakListeners) + ","
-				"\"maxlisteners\":" + (maxUsers > 0 ? tos(maxUsers) : "\"unlimited\"") + ","
-				"\"uniquelisteners\":" + tos(data.uniqueListeners) + ","
-				"\"averagetime\":" + tos(data.avgUserListenTime) + ",";
-
-	for (int n = 0; n < 5; n++)
-	{
-		const utf8 num = (n ? tos(n + 1) : "");
-		body += "\"servergenre" + num + "\":\"" + aolxml::escapeXML(info.m_streamGenre[n]) + "\",";
-	}
-
-	body += "\"serverurl\":\"" + escapeJSON(info.m_streamURL) + "\","
-			"\"servertitle\":\"" + escapeJSON(info.m_streamName) + "\","
-			"\"songtitle\":\"" + escapeJSON(info.m_currentSong.empty() ? "" : info.m_currentSong) + "\",";
-
-	if (!info.m_comingSoon.empty())
-	{
-		body += "\"nexttitle\":\"" + escapeJSON(info.m_comingSoon.empty() ? "" : info.m_comingSoon) + "\",";
-	}
-
-	if (!info.m_streamUser.empty())
-	{
-		body += "\"dj\":\"" + escapeJSON(info.m_streamUser) + "\",";
-	}
-
-	if (!info.m_streamUser.empty())
-	{
-		body += "\"songurl\":\"" + escapeJSON(info.m_currentURL) + "\",";
-	}
-
-	body += "\"streamhits\":" + tos(data.totalStreamHits) + ","
-			"\"streamstatus\":" + (extra.isConnected ? "1" : "0") + ","
-			"\"backupstatus\":" + (extra.isBackup ? "1" : "0") + ","
-			"\"streamlisted\":" + (extra.ypConnected ? "1" : "0") + ",";
-	if (!extra.ypConnected)
-	{
-		body += "\"streamlistederror\":" + tos(extra.ypErrorCode) + ",";
-	}
-
-	// if a source is connected and we have a valid password then output this
-	if (proceed && extra.isConnected)
-	{
-		// strip down the source address for display output to an appropriate output based on settings
-		utf8 srcAddr = (extra.isBackup ? info.m_backupURL : (extra.isRelay ? info.m_relayURL : info.m_srcAddr));
-		if (gOptions.nameLookups())
-		{
-			if (!extra.isBackup && !extra.isRelay)
-			{
-				u_short port = 0;
-				string addr, hostName;
-				socketOps::getpeername(m_socket, addr, port);
-
-				string src = (extra.isBackup ? info.m_backupURL : (extra.isRelay ? info.m_relayURL : info.m_srcAddr)).hideAsString();
-				hostName = src;
-				if (!socketOps::addressToHostName(addr, port, hostName))
-				{
-					srcAddr = hostName + " (" + (src) + ")";
-				}
-			}
-		}
-
-		body += "\"streamsource\":\"" + escapeJSON(srcAddr) + "\",";
-
-		if (!info.m_backupURL.empty())
-		{
-			body += "\"streambackup\":\"" + escapeJSON(info.m_backupURL) + "\",";
-		}
-	}
-
-	body += "\"streampath\":\"" + escapeJSON(getStreamPath(sid)) + "\"," +
-			(extra.isConnected ? ("\"streamuptime\":" + tos(::time(NULL) - streamData::getStreamUptime(sid)) + ",") : "") +
-			"\"bitrate\":\"" + tos(info.m_streamBitrate) + "\","
-			"\"samplerate\":\"" + tos(info.m_streamSampleRate) + "\"," +
-			(info.m_vbr ? "\"vbr\":\"1\"," : "") +
-			"\"content\":\"" + escapeJSON(info.m_contentType) + "\"";
-
-	if (single)
-	{
-		body += ",\"version\":\"" + escapeJSON(gOptions.getVersionBuildStrings()) + " (" SERV_OSNAME ")\"";
-	}
-
-	return body;
-}
-
-void protocol_HTTPStyle::path_stats_json(const streamData::streamID_t sid, const bool proceed, const utf8 &callback) throw()
-{
-	const bool jsonp = !callback.empty();
-	cacheItem *item = m_jsonStatsCache[sid];
-	if (getCachedResponse(item, m_jsonStatsLock))
-	{
-		return;
-	}
-
-	stats::statsData_t data;
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n",
-		 body = (jsonp ? callback + "(" : "") + "{" +
-				getStatsJSONBody(sid, true, proceed, m_socket, data) +
-				"}" + (jsonp ? ")" : "");
-
-	sendCachedResponse(item, m_jsonStatsCache, m_jsonStatsLock, header, body, sid, jsonp);
-}
-
-void protocol_HTTPStyle::path_statistics_json(const streamData::streamID_t sid, const bool proceed, const utf8 &callback) throw()
-{
-	const bool jsonp = !callback.empty();
-	cacheItem *item = m_jsonStatisticsCache[sid];
-	if (getCachedResponse(item, m_jsonStatisticsLock))
-	{
-		return;
-	}
-
-	// this will generate a DNAS wide statistics report making it clearer on what is / isn't going on (requested by WaveStreaming)
-	size_t totalConnectedListeners = 0,
-		   totalPeakListeners = 0,
-		   totalMoved = 0;
-	time_t totalAvgUserListenTime = 0;
-
-	streamData::streamIDs_t streamIds = streamData::getStreamIds(2);
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		if ((*i).second.m_streamID)
-		{
-			streamIds.insert((*i).second.m_streamID);
-		}
-	}
-
-	utf8 block = "";
-	bool read = false;
-	for (streamData::streamIDs_t::const_iterator i = streamIds.begin(); i != streamIds.end(); ++i)
-	{
-		const utf8 movedUrl = gOptions.stream_movedUrl((*i));
-		if (movedUrl.empty())
-		{
-			stats::statsData_t data;
-			stats::getStats((*i), data);
-
-			// increment the system wide totals
-			totalConnectedListeners += data.connectedListeners;
-			totalPeakListeners += data.peakListeners;
-			totalAvgUserListenTime += data.avgUserListenTime;
-
-			block += (read ? utf8(",") : "") + "{" + getStatsJSONBody((*i), false, proceed, m_socket, data, true) +  + "}";
-			read = true;
-		}
-		else
-		{
-			++totalMoved;
-		}
-	}
-
-	streamData::streamID_t lastSID = 0;
-	const size_t total = streamIds.size() - totalMoved,
-				 activeTotal = streamData::totalActiveStreams(lastSID),
-				 maxUser = gOptions.maxUser();
-	const utf8 main = "\"totalstreams\":" + tos(total) + ","
-					  "\"activestreams\":" + tos(activeTotal) + ","
-					  "\"currentlisteners\":" + tos(totalConnectedListeners) + ","
-					  "\"peaklisteners\":" + tos(totalPeakListeners) + ","
-					  "\"maxlisteners\":" + (maxUser > 0 ? tos(maxUser) : "\"unlimited\"") + ","
-					  "\"uniquelisteners\":" + tos(stats::getTotalUniqueListeners()) + ","
-					  "\"averagetime\":" + tos(totalConnectedListeners > 0 ? (totalAvgUserListenTime / totalConnectedListeners) : 0) + ","
-					  "\"version\":\"" + escapeJSON(gOptions.getVersionBuildStrings()) + " (" SERV_OSNAME ")\"" +
-					  (total > 0 ? ",\"streams\":[" : "");
-
-	utf8 header = "HTTP/1.0 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n",
-		 body = (jsonp ? callback + "(" : "") +
-				"{" + main + block + (total > 0 ? "]" : "") + "}" +
-				(jsonp ? ")" : "");
-
-	sendCachedResponse(item, m_jsonStatisticsCache, m_jsonStatisticsLock, header, body, sid, jsonp);
-}
-
-void protocol_HTTPStyle::path_art(const streamData::streamID_t sid, int mode) throw()
-{
-	cacheItem *item = (!mode ? m_streamArtCache[sid] : m_playingArtCache[sid]);
-	if (getCachedResponse(item, (!mode ? m_streamArtLock : m_playingArtLock)))
-	{
-		return;
-	}
-
-	utf8 header = "HTTP/1.0 200 OK\r\n", body;
-	streamData *sd = streamData::accessStream(sid);
-	if (sd)
-	{
-		vector<__uint8> sc21_albumart = (mode == 0 ? sd->streamAlbumArt() : sd->streamPlayingAlbumArt());
-		if (!sc21_albumart.empty())
-		{
-			utf8 mimeType[] = {
-				"image/jpeg",
-				"image/png",
-				"image/bmp",
-				"image/gif"
-			};
-			const size_t mime = (mode == 0 ? sd->streamAlbumArtMime() : sd->streamPlayingAlbumArtMime());
-			// if not in the valid range then don't report the mime type in the generated response
-			if (mime < 4)
-			{
-				header += "Content-Type:" + mimeType[mime] + "\r\n";
-			}
-			body += utf8(&sc21_albumart[0],sc21_albumart.size());
-		}
-		sd->releaseStream();
-	}
-
-	sendCachedResponse(item, (!mode ? m_streamArtCache : m_playingArtCache),
-					   (!mode ? m_streamArtLock : m_playingArtLock), header,
-					   body, sid, false, false);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.h b/Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.h
deleted file mode 100644
index 88d04660..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_HTTPStyle.h
+++ /dev/null
@@ -1,152 +0,0 @@
-#pragma once
-#ifndef protocol_HTTPStyle_H_
-#define protocol_HTTPStyle_H_
-
-#include "threadedRunner.h"
-#include "streamData.h"
-#include "cache.h"
-#include "stats.h"
-#include <map>
-
-/*
-	Runnable object that handles protocols which use the HTTP style
-	negotiation. Depending on the details this object will hand off
-	to others (actually HTTP get or maybe audio streaming)
-*/
-
-class protocol_HTTPStyle : public runnable
-{
-friend class protocol_shoutcastClient;
-
-public:
-	enum { 
-		ACCEPT_PLAIN = 0,
-		ACCEPT_GZIP = 1,
-		ACCEPT_DEFLATE = 2
-	};
-
-	enum { 
-		HTTP_UNKNOWN = -1,
-		HTTP_GET = 0,
-		HTTP_POST = 1,
-		HTTP_HEAD = 2
-	};
-
-	struct HTTPRequestInfo
-	{
-		int					m_request;			// HTTP_GET, HTTP_POST, etc
-		int					m_AcceptEncoding;	// the received 'Accept-Encoding' values
-		uniString::utf8		m_url;				// url portion of request, unescaped
-		//////////////////////////////
-		httpHeaderMap_t		m_QueryParameters;	// unescaped
-		httpHeaderMap_t		m_HTTPHeaders;	// the received HTTP headers
-		uniString::utf8		m_PostLine;		// received POST line
-
-		HTTPRequestInfo() : m_request(HTTP_UNKNOWN), m_AcceptEncoding(ACCEPT_PLAIN) {}
-	};
-
-	const u_short			m_clientPort;
-	const uniString::utf8	m_clientHostName;
-	const uniString::utf8	m_clientAddr;
-	const uniString::utf8	m_clientLogString;
-
-private:
-	microServer::AllowableProtocols_t	m_protocols;
-	HTTPRequestInfo			m_httpRequestInfo;
-	uniString::utf8			m_userAgent;
-	uniString::utf8			m_userAgentLowered;
-	uniString::utf8			m_referer;
-	uniString::utf8			m_hostIP;
-	uniString::utf8			m_url;
-
-	uniString::utf8			m_outMsg;
-	const uniString::utf8::value_type	*m_outBuffer; // for outgoing text lines
-	int						m_outBufferSize;
-    int                     m_postRequestLength;
-
-	short					m_postRequest;
-	short					m_compressed;
-
-	uniString::utf8			m_lastKey;			// received HTTP header line key (used to cope with some weird line splits)
-	uniString::utf8			m_lineBuffer;		// received HTTP header line
-
-	typedef void (protocol_HTTPStyle::*state_t)();
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	const bool getCachedResponse(cacheItem *item, AOL_namespace::mutex &lock, const int limit = 1);
-	void sendCachedResponse(cacheItem *item, CacheMap_t &cache, AOL_namespace::mutex &lock,
-							uniString::utf8 &header, uniString::utf8 &body,
-							const streamData::streamID_t sid = 0,
-							const bool jsonp = false, const bool noCompress = false);
-
-	void sendMessageAndClose(const uniString::utf8 &msg) throw();
-
-	void state_GetLine() throw(std::exception);
-	void state_AnalyzeHTTPHeaders() throw(std::exception);
-	void state_DetermineAction() throw(std::exception);
-	void state_Close() throw(std::exception);
-	void state_Send() throw(std::exception);
-
-	void path_redirect_url(const streamData::streamID_t sid, const bool no_sid, const bool isStats) throw();
-	void path_root_summary(const uniString::utf8 &XFF, const bool force = false) throw();
-	void path_root(const streamData::streamID_t sid, const uniString::utf8 &XFF) throw();
-	void path_played_html(const streamData::streamID_t sid, const uniString::utf8 &XFF) throw();
-	void path_played_json(const streamData::streamID_t sid, const uniString::utf8 &callback,
-						  const bool password = true, const uniString::utf8 &XFF = "") throw();
-	void path_played_xml(const streamData::streamID_t sid, const bool password = true,
-						 const uniString::utf8 &XFF = "") throw();
-	void path_home(const streamData::streamID_t sid) throw();
-	void path_track(const streamData::streamID_t sid, int mode) throw();
-	void path_tracks_json(const streamData::streamID_t sid, const uniString::utf8 &callback) throw();
-	void path_tracks_xml(const streamData::streamID_t sid) throw();
-	void path_current_metadata_xml(const streamData::streamID_t sid) throw();
-	void path_current_metadata_json(const streamData::streamID_t sid, const uniString::utf8 &callback) throw();
-	void path_crossdomain() throw();
-	void path_shoutcastswf() throw();
-	void path_stats_xml(const streamData::streamID_t sid, const bool proceed) throw();
-	void path_statistics_xml(const streamData::streamID_t sid, const bool proceed) throw();
-	void path_stats_json(const streamData::streamID_t sid, const bool proceed, const uniString::utf8 &callback) throw();
-	void path_statistics_json(const streamData::streamID_t sid, const bool proceed, const uniString::utf8 &callback) throw();
-	void path_art(const streamData::streamID_t sid, const int mode) throw();
-
-	const bool isViewingAllowed(const streamData::streamID_t sid, const uniString::utf8 &password, const bool no_stream,
-								bool &adminOverride, const bool hide, bool &passworded) throw();
-	const bool isAccessAllowed(const streamData::streamID_t sid, const uniString::utf8 &hostAddr, const bool showOutput) throw();
-	const bool isAdminAccessAllowed(const uniString::utf8 &hostIP, const uniString::utf8 &hostName) throw();
-	const bool findBaseStream(bool& no_sid, streamData::streamID_t& sid);
-	const uniString::utf8 getClientIP(const bool streamPublic, const uniString::utf8 &publicIP) throw();
-	void getPNGImage(const uniString::utf8 &png) throw();
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_HTTPStyle"; }
-
-public:
-    protocol_HTTPStyle (microConnection &mc, const string &firstLine) throw(std::exception);
-
-	protocol_HTTPStyle(const socketOps::tSOCKET s, const uniString::utf8 &hostName,
-					   const uniString::utf8 &addr, const u_short port, const string &firstLine,
-					   const microServer::AllowableProtocols_t protocols) throw(std::exception);
-	virtual ~protocol_HTTPStyle() throw();
-
-	static uniString::utf8 getStatsXMLBody(const streamData::streamID_t sid, const bool single,
-										   const bool proceed, const socketOps::tSOCKET m_socket,
-										   stats::statsData_t& data, const bool no_copy = false);
-	static uniString::utf8 getStatsJSONBody(const streamData::streamID_t sid, const bool single,
-											const bool proceed, const socketOps::tSOCKET m_socket,
-											stats::statsData_t& data, const bool no_copy = false);
-	static uniString::utf8 getPlayedBody(const streamData::streamID_t sid);
-
-	static uniString::utf8 getCurrentXMLMetadataBody(const bool mode, const uniString::utf8 &metadata);
-	static uniString::utf8 getCurrentJSONMetadataBody(const uniString::utf8 &metadata);
-
-	static uniString::utf8 getPlayedJSON(const streamData::streamID_t sid, uniString::utf8 &header,
-										 const uniString::utf8 &callback, const bool allowed) throw();
-	static uniString::utf8 getPlayedXML(const streamData::streamID_t sid, uniString::utf8 &header, const bool allowed) throw();
-};
-
-const uniString::utf8 getNewVersionMessage(const uniString::utf8& ending = "<br><div align=\"center\"><hr style=\"width:99%\"></div><br>");
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_RTMPClient.cpp b/Src/Plugins/DSP/sc_serv3/protocol_RTMPClient.cpp
deleted file mode 100644
index b0c5e136..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_RTMPClient.cpp
+++ /dev/null
@@ -1,1681 +0,0 @@
-#if 0
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_RTMPClient.h"
-#include "ripList.h"
-#include "stats.h"
-#include "streamData.h"
-#include "amf.h"
-#include "w3cLog.h"
-#include "log.h"
-#include "global.h"
-#include <iomanip>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define C1_S1_C2_S2_PACKET_SIZE 1536
-#define DEFAULT_CHUNK_SIZE 128
-
-#define RTMP_MSG__SET_CHUNK_SIZE				1
-#define RTMP_MSG__ABORT							2
-#define RTMP_MSG__ACKNOWLEDGEMENT				3
-#define RTMP_MSG__USER_CONTROL_MESSAGE			4
-#define RTMP_MSG__WINDOW_ACKNOWLEDGEMENT_SIZE	5
-#define RTMP_MSG__SET_PEER_BANDWIDTH			6
-#define RTMP_MSG__AUDIO_DATA					8
-#define RTMP_MSG__VIDEO_DATA					9
-#define RTMP_MSG__DATA_AMF3						15
-#define RTMP_MSG__COMMAND_AMF3					17
-#define RTMP_MSG__DATA_AMF0						18
-#define RTMP_MSG__COMMAND_AMF0					20
-
-// user control messages
-#define RTMP_UCM_STREAM_BEGIN	0
-#define RTMP_UCM_STREAM_EOF		1
-#define RTMP_UCM_STREAM_DRY		2
-#define RTMP_UCM_SET_BUFFER		3
-#define RTMP_UCM_STREAM_IS_RECORDED	4
-#define RTMP_UCM_PING_REQUEST	6
-#define RTMP_UCM_PING_RESPONSE	7
-/////////////////////////
-
-#define RTMP_PEER_BANDWIDTH_HARD	0
-#define RTMP_PEER_BANDWIDTH_SOFT	1
-#define RTMP_PEER_BANDWIDTH_DYNAMIC	2
-
-#define DEFAULT_SERVER_WINDOW 0x2625a0 //(16 * 1024)
-
-#define DEBUG_LOG(x) { if (gOptions.RTMPClientDebug()) DLOG((x)); }
-
-#ifdef _WIN32
-#define TIMEFUNC ::timeGetTime
-#else
-#include <sys/time.h>
-static unsigned long TIMEFUNC() throw()
-{
-	struct timeval tp;
-	::gettimeofday(&tp,NULL);
-	return (tp.tv_sec * 1000) + (tp.tv_usec / 1000);
-}
-#endif
-
-static void createRTMPMsg(__uint8 msgType,long timestamp,int outboundChunkSize,const __uint8 *payload,size_t payloadSize,vector<__uint8> &result,
-							int chunkStreamID = 2,int msgStreamID = 0);
-static void createRTMPMsg(const protocol_RTMPClient::message &msg,long timestamp,int outboundChunkSize,vector<__uint8> &result);
-
-//void getRTMPMsgInfo(const vector<__uint8> &msg,__uint8 &msgType,int &payloadLength,long &timestamp,int &streamID,int &payloadOffset);
-static size_t decode4ByteValue(const __uint8 *data,size_t offset = 0) throw();
-
-static utf8 prettyPrintMessage(const protocol_RTMPClient::message &msg) throw()
-{
-	utf8 EOL(eol());
-
-	utf8 result(EOL);
-	result += "msg type=" + tos((int)msg.m_messageType) + EOL;
-
-	try
-	{
-		switch(msg.m_messageType)
-		{
-			case RTMP_MSG__SET_CHUNK_SIZE:
-				result += "chunk size=" + tos(decode4ByteValue(&(msg.m_messageData[0]))) + EOL;
-			break;
-
-			case RTMP_MSG__ABORT:
-				result += "chunk stream id=" + tos(decode4ByteValue(&(msg.m_messageData[0]))) + EOL;
-			break;
-
-			case RTMP_MSG__ACKNOWLEDGEMENT:
-				result += "sequence number=" + tos(decode4ByteValue(&(msg.m_messageData[0]))) + EOL;
-			break;
-
-			case RTMP_MSG__USER_CONTROL_MESSAGE:
-			break;
-
-			case RTMP_MSG__WINDOW_ACKNOWLEDGEMENT_SIZE:
-				result += "acknowledgement window size=" + tos(decode4ByteValue(&(msg.m_messageData[0]))) + EOL;
-			break;
-
-			case RTMP_MSG__SET_PEER_BANDWIDTH:
-				result += "acknowledgement window size=" + tos(decode4ByteValue(&(msg.m_messageData[0]))) + EOL;
-				result += "limit type=" + tos(msg.m_messageData[4]) + EOL;
-			break;
-
-			case RTMP_MSG__DATA_AMF0:
-			case RTMP_MSG__COMMAND_AMF0:
-			{
-				AMFEncoding amf0;
-				amf0.loadFromBitstream((const char *)&(msg.m_messageData[0]),(int)msg.m_messageData.size(),"");
-				result += amf0.prettyPrint();
-			}
-			break;
-
-			case RTMP_MSG__DATA_AMF3:
-			case RTMP_MSG__COMMAND_AMF3:
-			{
-				AMFEncoding amf3(3);
-				amf3.loadFromBitstream((const char *)&(msg.m_messageData[0]),(int)msg.m_messageData.size(),"");
-				result += amf3.prettyPrint();
-			}
-			break;
-		}
-	}
-	catch(const exception &ex)
-	{
-		result += string("Exception: ") + ex.what() + EOL;
-		DEBUG_LOG(msg.packetDump());
-	}	
-	catch(...)
-	{
-		result += "Exception: <unknown>" + EOL;
-		DEBUG_LOG(msg.packetDump());
-	}
-
-	return result;
-}
-
-#define TEST_FILE "C:\\Documents and Settings\\nradisch\\My Documents\\programming\\shoutcast\\current\\sc_serv2\\test.aac"
-FILE *fff = 0;
-
-utf8 protocol_RTMPClient::message::packetDump() const throw()
-{
-	ostringstream o;
-
-	int x = 0;
-	for(std::vector<__uint8>::const_iterator i = m_messageData.begin(); i != m_messageData.end(); ++i)
-	{
-		if ((x++) % 16 == 0) o << stringUtil::eol();
-		o << setw(2) << hex << (int)(*i) << " ";
-	}
-	return o.str();
-}
-
-protocol_RTMPClient::protocol_RTMPClient(socketOps::tSOCKET s,const utf8 &hostName,const utf8 &addr,int port,__uint8 C0)throw(exception)
-	:m_socket(s),m_clientHostName(hostName),m_clientAddr(addr),m_clientPort(port),m_clientLogString(dstAddrLogString(hostName,port)),
-	m_C0(C0),
-	m_S0(3),
-	m_inDataBuffer(0),
-	m_lastActivityTime(::time(0)),m_startTime(::time(0)),
-	m_lastInboundMessageStreamID(-1),
-	m_lastInboundMessageLength(-1),
-	m_lastInboundMessageTypeID(-1),
-	m_lastInboundTimestamp(-1),
-	m_windowSizeFromClient(-1),
-	m_bufferSizeFromClient(-1),
-	m_lastTitleTime(::time(0)),
-	m_bytesSentForCurrentTitle(0),
-	m_totalBytesSent(0),
-	m_objectEncodingMode(0),
-	m_removeClientFromStats(false),
-	//m_state(&protocol_RTMPClient::state_AttachToStream),
-	m_state(&protocol_RTMPClient::state_SendS0),
-	m_streamData(0)
-{
-#ifdef TEST_FILE
-	if (fff) ::fclose(fff);
-	fff = 0;
-	fff = ::fopen(TEST_FILE,"rb");
-#endif
-
-	DEBUG_LOG(__FUNCTION__);
-
-	m_inDataBufferMax = 16 * 1024;
-	m_inDataBuffer = new __uint8[m_inDataBufferMax];
-	m_inDataBufferAmt = 0;
-
-	// intialize s1 to all zeros
-	m_S1orS2.resize(C1_S1_C2_S2_PACKET_SIZE,0);
-	memset(&(m_S1orS2[0]),0,m_S1orS2.size());
-
-	// set base time
-	m_serverBaseTime = TIMEFUNC();
-	__uint32 sbt = htonl(m_serverBaseTime);
-	memcpy(&(m_S1orS2[0]),&sbt,4);
-
-	// initialize from 10 bytes of random section to random stuff. Faster than
-	// doing entire 1528 byte block and still valid
-	for(int x = 0; x < 10; ++x)
-	{
-		m_S1orS2[8+x] = rand();
-	}
-	m_outDataPtr = &m_S0;
-	m_outDataSize = 1;
-	m_inboundChunkSize = DEFAULT_CHUNK_SIZE;
-	m_outboundChunkSize = DEFAULT_CHUNK_SIZE;
-}
-
-protocol_RTMPClient::~protocol_RTMPClient() throw()
-{
-#ifdef TEST_FILE
-	if (fff) ::fclose(fff);
-	fff = 0;
-#endif
-	DEBUG_LOG(__FUNCTION__);
-
-	try
-	{
-		/*ILOG(m_clientLogString + " SHOUTcast 1 client connection closed (" +
-			 tos(::time(0) - m_startTime).c_str() + " seconds). " +
-			 mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"user-agent",utf8("")) +
-			 " [Bytes: " + tos(m_totalBytesSent).c_str() + "]");*/
-
-		if (m_removeClientFromStats)
-			stats::removeClient(m_streamID,this);
-		if (m_streamData)
-		{
-			m_streamData->abandonRTMPLimitTrigger(&m_limitTrigger);
-			streamData::streamClientLost(m_streamData);
-			m_streamData = 0;
-
-			logW3C();
-		}
-	}
-	catch(const exception &ex) 
-	{
-		ELOG(ex.what());
-	}
-
-	delete [] m_inDataBuffer;
-	m_streamData = 0;
-	socketOps::forgetTCPSocket(m_socket);
-}
-
-runnable::timeSliceResult protocol_RTMPClient::timeSlice() throw(exception)
-{
-	size_t listenerTime = gOptions.stream_listenerTime(DEFAULT_SHOUTCAST_SOURCE_STREAM);
-	if(!gOptions.read_stream_listenerTime(DEFAULT_SHOUTCAST_SOURCE_STREAM))
-	{
-		listenerTime = gOptions.listenerTime();
-	}
-
-	listenerTime *= 60; // convert to seconds
-	bool timesUp = (listenerTime && ((::time(0) - m_startTime) > (int)listenerTime));
-
-	if (m_kickNextRound || timesUp || (m_streamData && m_streamData->isDead()))
-	{
-		if (timesUp)
-			{ ILOG(m_clientLogString + " listener time exceeded.");}
-		else if (m_kickNextRound)
-			{ ILOG(m_clientLogString + " kicked");}
-		timeSliceResult result;
-		result.m_done = true;
-		return result;
-	}
-
-	return (this->*m_state)();
-}
-
-//////////////////////////////////////////////////////////////////////////////////
-///////////////////// Initial Handshake States //////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////
-
-runnable::timeSliceResult protocol_RTMPClient::state_Send() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	timeSliceResult result;
-
-	long to = sendDataBuffer(m_socket,m_outDataPtr,m_outDataSize,m_lastActivityTime,m_clientLogString);
-	if (to == 0)
-	{ // done
-		m_state = m_nextState;
-		result.m_runImmediately = true;
-	}
-	else
-	{ // some more
-		result.m_writeSet.insert(m_socket);
-		result.m_timeout.tv_sec = to;
-	}
-	return result;
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_RecvFixedAmt() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	timeSliceResult result;
-
-	assert(m_inDataRequested <= m_inDataBufferMax);
-
-	size_t amt_left = m_inDataRequested - m_inDataBufferAmt;
-	size_t amt_left2 = amt_left;
-
-	long to = getSocketData(m_socket,m_inDataBuffer,m_inDataBufferAmt,amt_left,m_lastActivityTime,m_clientLogString);
-	m_inDataBufferAmt += (amt_left2 - amt_left);
-
-	if (to == 0)
-	{ // got data
-		m_state = m_nextState;
-		result.m_runImmediately = true;
-	}
-	else
-	{ // wait some more
-		result.m_readSet.insert(m_socket);
-		result.m_timeout.tv_sec = to;
-	}
-	return result;
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_RecvMsg() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	timeSliceResult result;
-
-	m_inMsg.clear();
-
-	long to = getMsg(m_inMsg);
-
-	if (to == 0)
-	{
-		m_state = m_nextState;
-		result.m_runImmediately = true;
-		DEBUG_LOG(string(__FUNCTION__) + " received msg" + prettyPrintMessage(m_inMsg));
-	}
-	else
-	{
-		result.m_readSet.insert(m_socket);
-		result.m_timeout.tv_sec = to;
-	}
-
-	return result;
-}
-
-#define NEXT_STATE timeSliceResult result; result.m_runImmediately = true; return result;
-
-runnable::timeSliceResult protocol_RTMPClient::state_SendS0() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_outDataPtr = &m_S0;
-	m_outDataSize = 1;
-	m_state = &protocol_RTMPClient::state_Send;
-	m_nextState = &protocol_RTMPClient::state_SendS1;
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_SendS1() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_outDataPtr = &m_S1orS2[0];
-	m_outDataSize = m_S1orS2.size();
-	m_state = &protocol_RTMPClient::state_Send;
-	m_nextState = &protocol_RTMPClient::state_WaitForC1;
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_WaitForC1() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_inDataBufferAmt = 0;
-	m_inDataRequested = C1_S1_C2_S2_PACKET_SIZE;
-	m_state = &protocol_RTMPClient::state_RecvFixedAmt;
-	m_nextState = &protocol_RTMPClient::state_GotC1;
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_GotC1() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_C1ReadTime = TIMEFUNC() - m_serverBaseTime;
-	m_C1.clear();
-	m_C1.insert(m_C1.end(),m_inDataBuffer,m_inDataBuffer + C1_S1_C2_S2_PACKET_SIZE);
-	m_state = &protocol_RTMPClient::state_SendS2;
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_SendS2() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_S1orS2 = m_C1;
-	__uint32 t = htonl(m_C1ReadTime);
-	memcpy(&(m_S1orS2[4]),&t,4);
-	m_outDataPtr = &m_S1orS2[0];
-	m_outDataSize = m_S1orS2.size();
-	m_state = &protocol_RTMPClient::state_Send;
-	m_nextState = &protocol_RTMPClient::state_WaitForC2;
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_WaitForC2() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_inDataBufferAmt = 0;
-	m_inDataRequested = C1_S1_C2_S2_PACKET_SIZE;
-	m_state = &protocol_RTMPClient::state_RecvFixedAmt;
-	m_nextState = &protocol_RTMPClient::state_GotC2;
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_GotC2() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_C2.clear();
-	m_C2.insert(m_C2.end(),m_inDataBuffer,m_inDataBuffer + C1_S1_C2_S2_PACKET_SIZE);
-	m_state = &protocol_RTMPClient::state_WaitForMessage;
-	NEXT_STATE	
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_WaitForMessage() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_inDataBufferAmt = 0;
-	m_state = &protocol_RTMPClient::state_RecvMsg;
-	m_nextState = &protocol_RTMPClient::state_GotMessage;
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_GotMessage() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	switch(m_inMsg.m_messageType)
-	{
-		case RTMP_MSG__USER_CONTROL_MESSAGE:
-		return handle_USER_CONTROL_message();
-
-		case RTMP_MSG__WINDOW_ACKNOWLEDGEMENT_SIZE:
-		{
-			if (m_inMsg.m_messageData.size() != 4)
-				throwEx<runtime_error>(m_clientLogString + " Bad payload size for Window Acknowledgement message, got " + tos(m_inMsg.m_messageData.size()) + " expected 4.");
-			m_windowSizeFromClient = decode4ByteValue(&(m_inMsg.m_messageData[0]),0);
-			
-			DEBUG_LOG(m_clientLogString + " WAS from client is " + tos(m_windowSizeFromClient));
-			m_state = &protocol_RTMPClient::state_WaitForMessage;
-			NEXT_STATE
-		}
-		break;
-
-		case RTMP_MSG__COMMAND_AMF0:
-		return handle_AMF0_message();
-
-		default:
-			throwEx<runtime_error>(m_clientLogString + " " + __FUNCTION__ + " cannot dispatch message type " + tos((int)m_inMsg.m_messageType));
-	}	
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::handle_USER_CONTROL_message() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	if (m_inMsg.m_messageData.size() < 2)
-		throwEx<runtime_error>(m_clientLogString + " User control message has insufficient data.");
-
-	__uint16 t = ntohs(*(const __uint16 *)(&m_inMsg.m_messageData[0]));
-	switch(t)
-	{
-		case RTMP_UCM_SET_BUFFER:
-		{
-			if (m_inMsg.m_messageData.size() < 10)
-				throwEx<runtime_error>(m_clientLogString + " Set Buffer user control message has insufficient data.");
-			m_bufferSizeFromClient = ntohl(*(const __uint32*)&(m_inMsg.m_messageData[6]));
-			DEBUG_LOG(m_clientLogString + " Buffer size from client is " + tos(m_bufferSizeFromClient) + " milliseconds.");
-			m_state = &protocol_RTMPClient::state_WaitForMessage;
-			NEXT_STATE
-		}
-		break;
-
-		case RTMP_UCM_STREAM_BEGIN:
-			//return handle_UCM_StreamBegin();
-		break;
-	}
-
-	throwEx<runtime_error>(m_clientLogString + " User control message type " + tos(t) + " is not supported.");
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::handle_UCM_StreamBegin() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::handle_AMF0_message() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	AMFEncoding amf;
-	amf.loadFromBitstream((const char *)&(m_inMsg.m_messageData[0]),(int)m_inMsg.m_messageData.size(),m_clientLogString);
-	const AMFVal &v0 = amf.getValue(0);
-	if (v0.getString() == "connect")
-		return handle_AMF0_connect(amf);
-	if (v0.getString() == "createStream")
-		return handle_AMF0_createStream(amf);
-	if (v0.getString() == "play")
-		return handle_AMF0_play(amf);
-
-	throwEx<runtime_error>(m_clientLogString + " " + __FUNCTION__ + " Unknown AMF0 message " + v0.getString());
-	NEXT_STATE			
-}
-
-runnable::timeSliceResult protocol_RTMPClient::handle_AMF0_connect(const AMFEncoding &amf) throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-//	const AMFVal &v0 = amf.getValue(0);
-	const AMFVal &v1 = amf.getValue(1);
-	const AMFVal &v2 = amf.getValue(2);
-
-	if (v1.getNumber() != 1)
-		throwEx<runtime_error>(m_clientLogString + " Unexpected transaction number. Wanted 1, got " + tos(v1.getNumber()));
-	const AMFObject &o = v2.getObject();
-
-	const AMFVal *pv = o.getProperty("tcUrl");
-	if (!pv) throwEx<runtime_error>(m_clientLogString + " Connect command has no tcUrl value.");
-	utf8 url = pv->getString(); // use this value to create stream accessor
-
-	pv = o.getProperty("objectEncoding");
-	m_objectEncodingMode = (pv ? (int)pv->getNumber() : 0);
-
-	m_state = &protocol_RTMPClient::state_SendConnectResponse;
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::handle_AMF0_createStream(const AMFEncoding &amf) throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-//	const AMFVal &v0 = amf.getValue(0);
-	const AMFVal &v1 = amf.getValue(1);
-
-	double transaction = v1.getNumber();
-
-	AMFEncoding amf0;
-	AMFObject obj;
-	amf0.appendValue(AMFVal(utf8("_result"))); // or "_error"
-	amf0.appendValue(AMFVal((double)transaction));
-	amf0.appendValue(AMFVal());
-	amf0.appendValue(AMFVal((double)1)); //1234)); /// stream ID for client
-
-	vector<__uint8> resp;
-	amf0.serialize(resp,m_clientLogString);
-	message msg(m_inMsg);
-	msg.m_messageData = resp;
-	msg.m_messageType = RTMP_MSG__COMMAND_AMF0;
-	createRTMPMsg(msg,TIMEFUNC() - m_serverBaseTime,(int)m_outboundChunkSize,m_outDataBuffer);
-	//createRTMPMsg(RTMP_MSG__COMMAND_AMF0,m_outboundChunkSize,&(resp[0]),resp.size(),m_outDataBuffer);
-
-	m_outDataPtr = &m_outDataBuffer[0];
-	m_outDataSize = m_outDataBuffer.size();
-	m_state = &protocol_RTMPClient::state_Send;
-	m_nextState = &protocol_RTMPClient::state_WaitForMessage;
-
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::handle_AMF0_play(const AMFEncoding &amf) throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	AMFEncoding amf0;
-	amf0.appendValue(AMFVal(utf8("onStatus"))); // or "_error"
-	amf0.appendValue(AMFVal(utf8("NetStream.Play.Start")));
-
-	vector<__uint8> resp;
-	amf0.serialize(resp,m_clientLogString);
-	long ttt = TIMEFUNC();
-
-	createRTMPMsg(RTMP_MSG__COMMAND_AMF0,ttt - m_serverBaseTime,(int)m_outboundChunkSize,&(resp[0]),resp.size(),m_outDataBuffer,m_inMsg.m_chunkStreamID,m_inMsg.m_messageStreamID);
-
-	amf0.clear();
-	amf0.appendValue(AMFVal(utf8("onHeaderData")));
-	AMFEMCAArray amfA;
-	amfA.addProperty("protocol",new AMFVal(utf8("ICY")));
-	amfA.addProperty("content-type",new AMFVal(utf8("audio/aacp")));
-	amf0.appendValue(AMFVal(amfA));
-	resp.clear();
-	amf0.serialize(resp,m_clientLogString);
-	createRTMPMsg(RTMP_MSG__DATA_AMF0,ttt - m_serverBaseTime,(int)m_outboundChunkSize,&(resp[0]),resp.size(),m_outDataBuffer,m_inMsg.m_chunkStreamID,m_inMsg.m_messageStreamID);
-
-	m_outDataPtr = &m_outDataBuffer[0];
-	m_outDataSize = m_outDataBuffer.size();
-	m_state = &protocol_RTMPClient::state_Send;
-	m_nextState = &protocol_RTMPClient::state_SendAudio;
-
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_SendConnectResponse() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	m_outDataBuffer.clear();
-
-	__uint8 data[5];
-
-	long ttt = TIMEFUNC();
-	m_serverBaseTime = ttt;
-
-	(*(__uint32*)data) = htonl(DEFAULT_SERVER_WINDOW);
-	createRTMPMsg(RTMP_MSG__WINDOW_ACKNOWLEDGEMENT_SIZE,ttt - m_serverBaseTime,(int)m_outboundChunkSize,data,4,m_outDataBuffer);
-
-	data[4] = RTMP_PEER_BANDWIDTH_DYNAMIC; //_SOFT;
-	createRTMPMsg(RTMP_MSG__SET_PEER_BANDWIDTH,ttt - m_serverBaseTime,(int)m_outboundChunkSize,data,5,m_outDataBuffer);
-
-	__uint8 streamBeginData[6] = {0,0,0,0,0,0};
-
-	createRTMPMsg(RTMP_MSG__USER_CONTROL_MESSAGE,ttt - m_serverBaseTime,(int)m_outboundChunkSize,streamBeginData,6,m_outDataBuffer);
-
-	__int32 chunkSize = htonl((int)m_outboundChunkSize);
-	createRTMPMsg(RTMP_MSG__SET_CHUNK_SIZE,ttt - m_serverBaseTime,(int)m_outboundChunkSize,(const __uint8 *)&chunkSize,sizeof(chunkSize),m_outDataBuffer);
-
-	AMFEncoding amf; //(m_objectEncodingMode > 1 ? 3 : 0);
-	AMFObject obj;
-	amf.appendValue(AMFVal(utf8("_result"))); // or "_error"
-	amf.appendValue(AMFVal((double)1.0));
-	obj.addProperty("fmsVer",new AMFVal(utf8("FMS/3,5,3,824a"))); //new AMFVal(utf8("sc_serv " + version.first + " " + version.second)));
-	obj.addProperty("capabilities",new AMFVal((double)127)); //31)); // ????
-	obj.addProperty("mode",new AMFVal((double)1));
-	amf.appendValue(AMFVal(obj));
-	obj.clearProperties();
-	obj.addProperty("level",new AMFVal(utf8("status")));
-	obj.addProperty("code",new AMFVal(utf8("NetConnection.Connect.Success")));
-	obj.addProperty("description",new AMFVal(utf8("Connection succeeded.")));
-	obj.addProperty("clientid",new AMFVal((double)795525197.0));
-	obj.addProperty("objectEncoding",new AMFVal((double)m_objectEncodingMode));
-	AMFEMCAArray arry;
-	arry.addProperty("version",new AMFVal(utf8("FMS/3,5,3,824a")));
-	obj.addProperty("data",new AMFVal(arry));
-
-	amf.appendValue(AMFVal(obj));
-	vector<__uint8> resp;
-	amf.serialize(resp,m_clientLogString);
-	createRTMPMsg(RTMP_MSG__COMMAND_AMF0,ttt - m_serverBaseTime,(int)m_outboundChunkSize,&(resp[0]),resp.size(),m_outDataBuffer,m_inMsg.m_chunkStreamID,m_inMsg.m_messageStreamID);
-
-	m_outDataPtr = &m_outDataBuffer[0];
-	m_outDataSize = m_outDataBuffer.size();
-	m_state = &protocol_RTMPClient::state_Send;
-	m_nextState = &protocol_RTMPClient::state_WaitForMessage;
-	//m_nextState = &protocol_RTMPClient::state_SendAudio;
-
-	NEXT_STATE
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_SendAudio() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-#ifdef TEST_FILE
-	__uint8 buffer[1024];
-	buffer[0] = 0xaf; //FLV audio header
-	buffer[1] = 0x01;
-
-	if (::fread(&(buffer[2]),1,1022,fff) != 1022)
-		throwEx<runtime_error>("Test done!");
-
-	m_outDataBuffer.clear();
-	createRTMPMsg(RTMP_MSG__AUDIO_DATA,TIMEFUNC() - m_serverBaseTime,(int)m_outboundChunkSize,buffer,1024,m_outDataBuffer,m_inMsg.m_chunkStreamID,m_inMsg.m_messageStreamID);
-
-	m_outDataPtr = &m_outDataBuffer[0];
-	m_outDataSize = m_outDataBuffer.size();
-	m_state = &protocol_RTMPClient::state_Send;
-	m_nextState = &protocol_RTMPClient::state_SendAudio;
-
-#endif	
-	NEXT_STATE
-}
-
-/////////////////////////////////////////////////////
-/////////////////////////////////////////////////////
-
-static void encode3ByteValue(long v,__uint8 *data) throw()
-{
-	data[0] = (v >> 16) & 0xff;
-	data[1] = (v >> 8) & 0xff;
-	data[2] = (v & 0xff);
-}
-
-static void encode4ByteValue(long v,__uint8 *data) throw()
-{
-	data[0] = (v >> 24) & 0xff;
-	data[1] = (v >> 16) & 0xff;
-	data[2] = (v >> 8) & 0xff;
-	data[3] = (v & 0xff);
-}
-
-static void chunkify(int chunkStreamID,int msgStreamID,__uint8 msgTypeID,long timestamp,int outboundChunkSize,const __uint8 *data,size_t dataSize,vector<__uint8> &result)
-{
-	assert(chunkStreamID >= 2);
-
-	size_t chunkCount = 1;
-	if (dataSize > 0)
-		chunkCount = ((dataSize-1) / outboundChunkSize)+1;
-	assert(chunkCount);
-
-	for(size_t c = 0; c < chunkCount; ++c)
-	{
-		__uint8 header[18]; // largest possible header
-		__uint8 *h = header;
-
-		// size basic header
-		if (chunkStreamID >=2 && chunkStreamID <= 63)
-		{
-			*(h++) = chunkStreamID;
-		}
-		else if (chunkStreamID >= 64 && chunkStreamID <= 319)
-		{
-			*(h++) = 0;
-			*(h++) = (chunkStreamID - 64);
-		}
-		else
-		{
-			h[0] = 1;
-			h[2] = ((chunkStreamID - 64) / 256);
-			h[1] = (chunkStreamID - 64 - (h[2] * 256));
-			h+= 3;
-		}
-
-		// fill in format bits and header
-		if (c) 
-		{
-			header[0] |= 0xc0; // type 3
-		}
-		else
-		{
-			// type zero, full header
-			encode3ByteValue(timestamp < 0x00ffffff ? timestamp : 0x00ffffff,h);
-			h += 3;
-			encode3ByteValue((int)dataSize,h);
-			h += 3;
-			*(h++) = msgTypeID;
-			encode4ByteValue(msgStreamID,h);
-			h += 4;
-			if (timestamp >= 0x00ffffff)
-			{
-				encode4ByteValue(timestamp,h);
-				h += 4;
-			}		
-		}
-
-		// put header into result
-		result.insert(result.end(),header,h);
-
-		size_t payload_amt = min(dataSize,(size_t)outboundChunkSize);
-		// put payload into result
-		result.insert(result.end(),data,data + payload_amt);
-		dataSize -= payload_amt;
-		data += payload_amt;
-	}
-
-	assert(dataSize == 0);
-}
-
-static void createRTMPMsg(__uint8 msgType,long timestamp,int outboundChunkSize,const __uint8 *payload,size_t payloadSize,vector<__uint8> &result,
-						int chunkStreamID,int msgStreamID)
-{
-	//chunkify(chunkStreamID,msgStreamID,msgType,TIMEFUNC(),outboundChunkSize,payload,payloadSize,result);
-	protocol_RTMPClient::message msg;
-	msg.m_chunkStreamID = chunkStreamID;
-	msg.m_messageStreamID = msgStreamID;
-	msg.m_messageType = msgType;
-	msg.m_messageData.clear();
-	msg.m_messageData.insert(msg.m_messageData.end(),payload,payload + payloadSize);
-	createRTMPMsg(msg,timestamp,outboundChunkSize,result);
-
-	#if 0
-	// create a buffer with the message
-	long t = TIMEFUNC();
-
-	vector<__uint8> m;
-	m.resize(11 + payloadSize);
-
-	__uint8 *p = &m[0];
-	memset(p,0,11);
-	(*(__uint32*)p) = htonl(payloadSize);
-	p[0] = msgType;
-	(*(__uint32*)(&(p[4]))) = htonl(t);
-	memmove(&(p[11]),payload,payloadSize);
-
-	// chunkify
-	chunkify(2 /* chunk stream id */,0 /* msg stream ID */ ,msgType,t,outboundChunkSize,p,11 + payloadSize,result);	
-	#endif
-}
-
-static void createRTMPMsg(const protocol_RTMPClient::message &msg,long timestamp,int outboundChunkSize,vector<__uint8> &result)
-{
-	utf8 s = prettyPrintMessage(msg);
-	DEBUG_LOG(" send " + eol() + 
-		"CSID=" + tos(msg.m_chunkStreamID) + eol() + 
-		"MSID=" + tos(msg.m_messageStreamID) + eol() + 
-		"Time=" + tos(timestamp) + eol() + 
-		"MTYPE=" + tos((int)msg.m_messageType) + eol() +
-		"MLEN=" + tos(msg.m_messageData.size()) + eol() +  
-		s);
-	chunkify(msg.m_chunkStreamID,msg.m_messageStreamID,msg.m_messageType,timestamp,outboundChunkSize,&(msg.m_messageData[0]),msg.m_messageData.size(),result);
-}
-
-/////////////////////////////////////////////////////
-/////////////////////////////////////////////////////
-
-static int decode3ByteValue(const __uint8 *data,size_t offset = 0) throw()
-{
-	int result = 0;
-	result += data[offset];
-	result <<= 8;
-	result += data[offset + 1];
-	result <<= 8;
-	result += data[offset + 2];
-	return result;
-}
-
-static size_t decode4ByteValue(const __uint8 *data,size_t offset) throw()
-{
-	size_t result = 0;
-	result += data[offset];
-	result <<= 8;
-	result += data[offset + 1];
-	result <<= 8;
-	result += data[offset + 2];
-	result <<= 8;
-	result += data[offset + 3];
-	return result;
-}
-
-#if 0
-void getRTMPMsgInfo(const vector<__uint8> &msg,__uint8 &msgType,int &payloadLength,long &timestamp,int &streamID,int &payloadOffset)
-{
-	assert(msg.size() >= 11);
-	const __uint8 *p = &msg[0];
-	msgType = *(p++);
-	payloadLength = decode3ByteValue(p);
-	p+=3;
-	timestamp = decode4ByteValue(p);
-	p += 4;	
-	streamID = decode3ByteValue(p);
-	p += 3;
-	payloadOffset = 11;
-}
-#endif	
-
-// get chunk type from first byte in basic header
-static int chunkType(const __uint8 *basicHeader) throw()
-{
-	return (((*basicHeader) & 0xc0) >> 6);
-}
-
-static int calculateBasicChunkHeaderSize(const __uint8 *basicHeader) throw()
-{
-	int b = ((*basicHeader) & 0x3f);
-	switch(b)
-	{
-		case 0: return 2;
-		case 1: return 3;
-	}
-	return 1;
-}
-
-// look at complete basic header and determine how many bytes to expect in
-// the chunk header	
-static int calculateChunkMsgHeaderSize(const __uint8 *basicHeader) throw()
-{
-	switch(chunkType(basicHeader))
-	{
-		case 0: return 11;
-		case 1: return 7;
-		case 2: return 3;
-	}
-	return 0;
-}
-
-// calculate the complete size of a chunk header
-static int calculateCompleteChunkHeaderSize(const __uint8 *basicHeader) throw()
-{
-	return calculateChunkMsgHeaderSize(basicHeader) + calculateBasicChunkHeaderSize(basicHeader);
-}
-
-// look at a complete chunk header (basic and msg header) and see if we need to get
-// an extended timestamp for the chunk
-static bool chunkNeedsExtendedTimestamp(const __uint8 *basicHeader) throw()
-{
-	int f = chunkType(basicHeader);
-	if (f == 3) return false;
-	int s = calculateBasicChunkHeaderSize(basicHeader);
-	// timestamp is always just after the basic header
-	return ((basicHeader[s] == 0xff) && (basicHeader[s+1] == 0xff) && (basicHeader[s+2] == 0xff));
-}
-
-// get chunkstream ID from the basic header	
-static int getChunkStreamIDFromBasicHeader(const __uint8 *basicHeader) throw()
-{
-	int b = ((*basicHeader) & 0x3f);
-	switch(b)
-	{
-		case 0: return (basicHeader[1] + 64);
-		case 1: return (basicHeader[2] * 256 + basicHeader[1] + 64);
-	}
-	return b;
-}
-
-static int calculateMessageSize(const __uint8 *basicHeader) throw()
-{
-	if (chunkType(basicHeader) <= 1)
-	{
-		int s = calculateBasicChunkHeaderSize(basicHeader);
-		return decode3ByteValue(basicHeader + s + 3);
-	}
-	return -1;
-}
-
-static int calculateMessageTypeID(const __uint8 *basicHeader) throw()
-{
-	if (chunkType(basicHeader) <= 1)
-	{
-		int s = calculateBasicChunkHeaderSize(basicHeader);
-		return basicHeader[s + 6];
-	}
-	return -1;
-}
-
-static int calculateMessageStreamID(const __uint8 *basicHeader) throw()
-{
-	if (chunkType(basicHeader) == 0)
-	{
-		int s = calculateBasicChunkHeaderSize(basicHeader);
-		return decode3ByteValue(basicHeader + s + 7);
-	}
-	return -1;
-}
-
-static long calculateTimestamp(const __uint8 *basicHeader) throw()
-{
-	return (chunkType(basicHeader) < 3 ? decode3ByteValue(basicHeader + calculateBasicChunkHeaderSize(basicHeader)) : 0);
-}
-
-// looks in inBuffer for a complete message. If it finds one it fills in msg and returns true.
-// whether true or false, data from head of inBuffer should be removed based on amtToRemoveFromInBuffer
-bool protocol_RTMPClient::chunkSequenceComplete(const __uint8 *inBuffer,size_t amtInBuffer,size_t &amtToRemoveFromInBuffer,size_t expectedChunkSize,
-							vector<__uint8> &msg,__uint8 &msgType,int &chunkStreamID,int &messageStreamID,const uniString::utf8 &logMsgPrefix) throw(std::exception)
-{
-	bool result = false;
-	msg.clear();
-	amtToRemoveFromInBuffer = 0;
-
-	// walk through chunks
-	const __uint8 *pBegin = inBuffer;
-	const __uint8 *pEnd = inBuffer + amtInBuffer;
-	const __uint8 *p = inBuffer;
-
-	chunkStreamID = -1;
-	messageStreamID = -1;
-	int messageLength = -1;
-	int messageTypeID = -1;
-	int payloadDataSeen = 0;
-	int chunksConsolidated = 0; // for debugging
-	while(p != pEnd)
-	{
-		chunksConsolidated += 1;
-
-		// do all calculations necessary to see if we have a complete chunk
-		int tmp;
-
-		int hs = calculateCompleteChunkHeaderSize(p);
-		if ((p + hs) > pEnd)	break; // not enough data
-		if (chunkNeedsExtendedTimestamp(p))	
-			hs += 4;
-		if ((p + hs) > pEnd)	break; // not enough data
-
-		// calculate timestamp
-		long tt = calculateTimestamp(p);
-		switch(chunkType(p))
-		{
-			case 0:
-				m_lastInboundTimestamp = tt;
-			break;
-
-			case 1: case 2:
-				m_lastInboundTimestamp += tt;
-			break;
-		}
-
-		// gather and confirm chunk stream id
-		tmp = getChunkStreamIDFromBasicHeader(p);
-		if (chunkStreamID == -1)
-			chunkStreamID = tmp;
-		else if (chunkStreamID != tmp)
-			throwEx<runtime_error>(logMsgPrefix + " expected chunk stream ID " + tos(chunkStreamID) + " but got " + tos(tmp) + " instead.");
-
-		// gather and confirm message length for this chunk sequence
-		tmp = calculateMessageSize(p);
-		if ((tmp == -1) && (m_lastInboundMessageLength == -1))				throwEx<runtime_error>(logMsgPrefix + " No message length for chunk with chunk stream ID " + tos(chunkStreamID));
-		if ((tmp != -1) && (messageLength != -1) && (tmp != messageLength))	throwEx<runtime_error>(logMsgPrefix + " mismatch message length for chunk with chunk stream ID " + tos(chunkStreamID) + " initially got " + tos(messageLength) + " then received " + tos(tmp));			
-		if (tmp != -1)
-			m_lastInboundMessageLength = messageLength = tmp;
-
-		tmp = calculateMessageTypeID(p);
-		if ((tmp == -1) && (m_lastInboundMessageTypeID == -1))				throwEx<runtime_error>(logMsgPrefix + " No message type ID for chunk with chunk stream ID " + tos(chunkStreamID));
-		if ((tmp != -1) && (messageTypeID != -1) && (tmp != messageTypeID))	throwEx<runtime_error>(logMsgPrefix + " mismatch message type ID for chunk with chunk stream ID " + tos(chunkStreamID) + " initially got " + tos(messageTypeID) + " then received " + tos(tmp));
-		if (tmp != -1)
-			m_lastInboundMessageTypeID = messageTypeID = tmp;
-
-		tmp = calculateMessageStreamID(p);
-		if ((tmp == -1) && (m_lastInboundMessageStreamID == -1))				throwEx<runtime_error>(logMsgPrefix + " No message stream ID for chunk with chunk stream ID " + tos(chunkStreamID));
-		if ((tmp != -1) && (messageStreamID != -1) && (tmp != messageStreamID))	throwEx<runtime_error>(logMsgPrefix + " mismatch message stream ID for chunk with stream ID " + tos(chunkStreamID) + " initially got " + tos(messageStreamID) + " then received " + tos(tmp));
-		if (tmp != -1)
-			m_lastInboundMessageStreamID = messageStreamID = tmp;
-
-		// calculate data that should be in this chunk
-		tmp = m_lastInboundMessageLength - payloadDataSeen;
-		tmp = min(tmp,(int)expectedChunkSize);
-
-		// see if we have enough
-		if ((p + hs + tmp) > pEnd)
-			break; // nope
-
-		// yeah we do. Copy out data
-		msg.insert(msg.end(),p+hs,p+hs+tmp);
-		payloadDataSeen += tmp;
-		p = p + hs + tmp;
-
-		// are we all done?
-		if (payloadDataSeen == m_lastInboundMessageLength)
-		{
-			// yes
-			amtToRemoveFromInBuffer = p - pBegin;
-			DEBUG_LOG(logMsgPrefix + " recv" + stringUtil::eol() + 
-				" CSID=" + tos(chunkStreamID) + stringUtil::eol() +
-				" MSID=" + tos(m_lastInboundMessageStreamID) + stringUtil::eol() +
-				" Time=" + tos(m_lastInboundTimestamp) + stringUtil::eol() + 
-				" MTYPE=" + tos(m_lastInboundMessageTypeID) + stringUtil::eol() +
-				" LEN=" + tos(m_lastInboundMessageLength) + stringUtil::eol() + 
-				" REMOVED=" + tos(amtToRemoveFromInBuffer));
-					
-			msgType = m_lastInboundMessageTypeID;
-			messageStreamID = m_lastInboundMessageStreamID;
-			return true;
-		}
-	}
-
-	return result;
-}
-
-// return zero if get a msg, otherwise return timeout for read
-long protocol_RTMPClient::getMsg(message &msg) throw(exception)
-{
-	size_t amt_left = m_inDataBufferMax - m_inDataBufferAmt;
-	size_t amt_left2 = amt_left;
-
-	long to = getSocketData(m_socket,m_inDataBuffer,m_inDataBufferAmt,amt_left,m_lastActivityTime,m_clientLogString);
-	m_inDataBufferAmt += (amt_left2 - amt_left);
-
-	size_t amtToRemoveFromInBuffer = 0;
-
-	bool seqComplete = chunkSequenceComplete(m_inDataBuffer,m_inDataBufferAmt,amtToRemoveFromInBuffer,m_inboundChunkSize,msg.m_messageData,msg.m_messageType,msg.m_chunkStreamID,msg.m_messageStreamID,m_clientLogString);
-	if (amtToRemoveFromInBuffer)
-	{
-		assert(m_inDataBufferAmt >= amtToRemoveFromInBuffer);
-		if (m_inDataBufferAmt == amtToRemoveFromInBuffer)
-		{
-			m_inDataBufferAmt = 0;
-			#ifndef NDEBUG
-			memset(m_inDataBuffer,0,m_inDataBufferMax);
-			#endif
-		}
-		else
-		{
-			memmove(m_inDataBuffer,m_inDataBuffer + amtToRemoveFromInBuffer,m_inDataBufferAmt - amtToRemoveFromInBuffer);
-			m_inDataBufferAmt -= amtToRemoveFromInBuffer;
-			#ifndef NDEBUG
-			memset(m_inDataBuffer + m_inDataBufferAmt,0,m_inDataBufferMax - m_inDataBufferAmt);
-			#endif
-		}
-	}
-	if (seqComplete)
-	{
-		to = 0;
-	}
-	else
-	{
-		if (m_inDataBufferAmt == m_inDataBufferMax)
-			throwEx<runtime_error>(m_clientLogString + " inbound data buffer exceeded");
-		assert(to != 0); // ??? not sure
-		if (to == 0) 
-			to = 1;
-	}
-
-	return to;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////
-
-runnable::timeSliceResult protocol_RTMPClient::state_Close() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-	timeSliceResult result;
-	result.m_done = true;
-	return result;
-}
-
-void protocol_RTMPClient::logW3C() throw()
-{
-}
-
-#if 0
-///////////////////////////////////// W3C Logging //////////////////////////////////////////////
-
-static utf8 titleFromMetadata(const utf8 &md) throw()
-{
-	utf8 title;
-
-	utf8::size_type p1 = utf8::npos;
-	utf8::size_type p2 = utf8::npos;
-
-	p1 = md.find(utf8("itle='"));
-	if (p1 != utf8::npos)
-	{
-		p1 += 6;
-		p2 = md.find(utf8("';"),p1);
-		if (p2 != utf8::npos)
-		{
-			title = md.substr(p1,p2-p1);
-		}
-	}
-	return title;
-}
-
-// create W3C entry. Entries describe the duration a client has listened to a specific title.
-// the entry is generated on a title change, or when the client disconnects
-void protocol_RTMPClient::logW3C() throw()
-{			
-	if (gOptions.w3cEnable())
-	{
-		time_t t(::time(0));
-		time_t durationOfTitle = t - m_lastTitleTime;
-		int		bitrateOfTitle = (int)(durationOfTitle ? (8 * m_bytesSentForCurrentTitle) / durationOfTitle : 0);
-		utf8 title = titleFromMetadata(m_lastSentMetadata);
-
-		w3cLog::log(m_clientAddr,
-					m_clientHostName,
-					m_streamID,
-					title,
-					mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"user-agent",utf8("")),
-					m_bytesSentForCurrentTitle,
-					durationOfTitle,
-					bitrateOfTitle);
-
-		setW3CState();
-	}
-}
-
-// setup tracking variables for W3C log
-void protocol_RTMPClient::setW3CState() throw()
-{
-	m_lastTitleTime = ::time(0);
-	m_bytesSentForCurrentTitle = 0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void protocol_RTMPClient::aquireIntroFile() throw()
-{
-	m_streamData->getIntroFile().getSc1Data(m_introFile);
-	m_introFileOffset = 0;
-}
-
-void protocol_RTMPClient::aquireBackupFile() throw()
-{
-	m_streamData->getBackupFile().getSc1Data(m_backupFile);
-	m_backupFileOffset = 0;
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_SendText() throw(exception)
-{
-	//DLOG(__FUNCTION__);
-
-	timeSliceResult result;
-	long to = sendHTTPStyleText(m_socket,m_outBuffer,m_outBufferSize,m_lastActivityTime,m_clientLogString);
-	if (to == 0)
-	{ // sent
-		m_state = m_nextState;
-		result.m_runImmediately = true;
-	}
-	else
-	{ // try again
-		result.m_writeSet.insert(m_socket);
-		result.m_timeout.tv_sec = to;
-	}	
-	return result;
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_AttachToStream() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	timeSliceResult result;
-
-	assert(!m_streamData);
-
-	m_streamID = DEFAULT_CLIENT_STREAM_ID;
-	utf8::size_type pos = m_HTTPRequestInfo.m_url.find(utf8("/stream/"));
-	if (pos != utf8::npos)
-		m_streamID = atoi((const char *)m_HTTPRequestInfo.m_url.substr(pos + 8).c_str());
-
-	map<int,config::streamConfig> stream_configs = gOptions.getStreamConfigs();
-	for(map<int,config::streamConfig>::const_iterator i = stream_configs.begin(); i != stream_configs.end(); ++i)
-	{
-		if ((*i).second.m_urlPath == m_HTTPRequestInfo.m_url)
-		{
-			m_streamID = (*i).first;
-			break;
-		}
-
-		pos = m_HTTPRequestInfo.m_url.find((*i).second.m_urlPath);
-		if (pos != utf8::npos && pos == 0)
-		{
-			utf8 params = m_HTTPRequestInfo.m_url.substr(pos + (*i).second.m_urlPath.size());
-			if(params.find(utf8(";")) == 0 || params.find(utf8("/")) == 0 || params.find(utf8("/;")) == 0)
-			{
-				m_streamID = (*i).first;
-				break;
-			}
-		}
-	}
-
-	m_clientLogString = dstAddrLogString(m_clientHostName,m_clientPort,m_streamID);
-
-	utf8 user_agent = toLower(mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"user-agent",utf8("")));
-
-	bool isSourceActive = false;
-	m_streamData = streamData::accessStream(m_streamID,isSourceActive);
-	if (!m_streamData || !isSourceActive)
-	{
-		utf8 msg_icy401 = MSG_ICY401;
-		msg_icy401.replace(msg_icy401.find(utf8("^")),1,gOptions.getVersionBuildStrings());
-		m_outBuffer = msg_icy401.c_str();
-		m_outBufferSize = strlen(m_outBuffer);
-
-		m_state = &protocol_RTMPClient::state_SendText;
-		m_nextState = &protocol_RTMPClient::state_Close;
-		result.m_writeSet.insert(m_socket);
-		result.m_timeout.tv_sec = gOptions.getAutoDumpSourceTime();
-		ELOG(m_clientLogString + " SHOUTcast 1 client connection rejected. Stream not available. " + mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"user-agent",utf8("")));
-	}
-	else
-	{
-		// construct the response text
-		if (!stats::addClient(m_streamID,this,m_clientAddr,m_clientPort,mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"user-agent",utf8("")),g_ripList.find(m_clientAddr)))
-		{
-			utf8 backup_server = m_streamData->streamBackupServer();
-			if (backup_server.empty())
-			{
-				utf8 msg_icy503 = MSG_ICY503;
-				msg_icy503.replace(msg_icy503.find(utf8("^")),1,gOptions.getVersionBuildStrings());
-				m_outBuffer = msg_icy503.c_str();
-				m_outBufferSize = strlen(m_outBuffer);
-
-				ELOG(m_clientLogString + " SHOUTcast 1 client connection rejected. Max users reached. " + mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"user-agent",utf8("")));
-			}
-			else
-			{
-				m_redirectResponse = http302(backup_server);
-				m_outBuffer = m_redirectResponse.c_str();
-				m_outBufferSize = m_redirectResponse.size();
-				WLOG(m_clientLogString + " SHOUTcast 1 client connection rejected. Max users reached. Redirecting to " + backup_server + ". " + mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"user-agent",utf8("")));
-			}
-			m_state = &protocol_RTMPClient::state_SendText;
-			m_nextState = &protocol_RTMPClient::state_Close;
-			result.m_writeSet.insert(m_socket);
-			result.m_timeout.tv_sec = gOptions.getAutoDumpSourceTime();
-		}
-		else
-		{
-			m_removeClientFromStats = true;
-			m_sendMetadata = mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"icy-metadata",false);
-
-			m_metaInterval = gOptions.metaInterval();
-			if (m_metaInterval < 256) m_metaInterval = 256; // clamp
-
-			m_ICYOKResponse = MSG_ICY200;
-			m_ICYOKResponse += "icy-name:" + m_streamData->streamName() + "\r\n";
-			m_ICYOKResponse += "icy-genre:" + m_streamData->streamGenre() + "\r\n";
-			m_ICYOKResponse += "icy-url:" + m_streamData->streamURL() + "\r\n";
-			m_ICYOKResponse += "content-type:" + m_streamData->streamContentType() + "\r\n";
-
-			if (isUserAgentRelay(user_agent) && (!m_streamData->allowPublicRelay()))
-				m_ICYOKResponse += "icy-pub:0\r\n";
-			else
-				m_ICYOKResponse += "icy-pub:" + tos(m_streamData->streamPublic()) + "\r\n";
-			if (m_sendMetadata)
-				m_ICYOKResponse += "icy-metaint:" + tos(m_metaInterval) + "\r\n";
-			m_ICYOKResponse += "icy-br:" + m_streamData->streamName() + "\r\n";
-			m_ICYOKResponse += "\r\n";		
-
-			DEBUG_LOG(m_clientLogString + " sending [" + m_ICYOKResponse + "]");
-			m_outBuffer = m_ICYOKResponse.c_str();
-			m_outBufferSize = strlen(m_outBuffer);
-			m_state = &protocol_RTMPClient::state_SendText;
-			m_nextState = &protocol_RTMPClient::state_InitiateStream;
-			result.m_writeSet.insert(m_socket);
-			result.m_timeout.tv_sec = gOptions.getAutoDumpSourceTime();
-			ILOG(m_clientLogString + " SHOUTcast 1 client connection accepted. " + mapGet(m_HTTPRequestInfo.m_HTTPHeaders,"user-agent",utf8("")));
-		}
-	}
-
-	return result;
-	}
-
-// set read pointer to a nice distance from the write pointer. Return that distance
-streamData::ringBufferAccess_t protocol_RTMPClient::resetReadPtr() throw()
-{
-	m_readPtr = m_streamData->getSc1ClientStartPosition();
-	return m_streamData->getSc1RingBuffer().m_writePtr - m_readPtr;
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_InitiateStream() throw(exception)
-{
-	DEBUG_LOG(__FUNCTION__);
-
-	assert(m_streamData);
-
-	m_metaIntervalCounter = 0;
-	resetReadPtr();
-
-	m_underruns = 0;
-
-	// if we have an intro file send it, otherwise start streaming
-	aquireIntroFile();
-
-	m_state = (m_introFile.empty() ? &protocol_RTMPClient::state_Stream : &protocol_RTMPClient::state_SendIntroFile);
-
-	setW3CState();
-
-	timeSliceResult result;
-	result.m_runImmediately = true;
-	return result;
-}
-
-// construct the necessary metadata information and load into outbound buffers.
-void protocol_RTMPClient::sendICYMetadata(const utf8 &md) throw()
-{
-	m_ICYMetadata.clear();
-	m_ICYMetadata.push_back(1); // placeholder
-	if (md != m_lastSentMetadata) // don't sent duplicates
-	{
-		m_ICYMetadata.insert(m_ICYMetadata.end(),md.begin(),md.end());
-		if (!m_lastSentMetadata.empty())
-			logW3C();
-		m_lastSentMetadata = md;
-	}
-	unsigned int dlen = m_ICYMetadata.size();
-	if (dlen == 1) dlen = 0;
-	unsigned int l1=((dlen+15)&~15);
-	m_ICYMetadata[0] = l1/16;
-	unsigned int send_len = l1+1;
-	m_ICYMetadata.insert(m_ICYMetadata.end(),send_len - m_ICYMetadata.size(),0);
-	assert(m_ICYMetadata.size() == ((m_ICYMetadata[0] * 16)+1));
-	m_metaIntervalCounter = 0;
-
-	m_outBuffer = &m_ICYMetadata[0];
-	m_outBufferSize = m_ICYMetadata.size();
-	m_state = &protocol_RTMPClient::state_SendText;
-}
-
-// handle state where we are sending intro files	
-runnable::timeSliceResult protocol_RTMPClient::state_SendIntroFile() throw(exception)
-{
-	assert(m_streamData);
-	assert(!m_introFile.empty());
-
-	timeSliceResult result;
-
-	int autoDumpTime = gOptions.getAutoDumpSourceTime(); // don't want this value to change during this call
-
-	m_limitTrigger.clear();
-
-	size_t amt = m_introFile.size() - m_introFileOffset;
-
-	if (amt == 0)
-	{
-		// we're done with the intro file
-		m_introFile.clear();
-		m_state = &protocol_RTMPClient::state_Stream;
-		resetReadPtr();
-		result.m_runImmediately = true;
-	}
-	else if ((m_metaIntervalCounter == m_metaInterval) && m_sendMetadata) // check to see if we have to send the metadata
-	{
-		sendICYMetadata("StreamTitle='';");
-
-		m_nextState = &protocol_RTMPClient::state_SendIntroFile;
-		result.m_writeSet.insert(m_socket);
-		result.m_timeout.tv_sec = autoDumpTime;
-	}
-	else
-	{
-		// clamp amount to send if we are supporting metadata	
-		if (m_sendMetadata)
-		{
-			amt = min(amt,(m_metaInterval - m_metaIntervalCounter));
-		}
-
-		// send
-		time_t cur_time = ::time(0);
-		if (autoDumpTime > 0 && (cur_time - m_lastActivityTime) >= autoDumpTime)
-			throwEx<runtime_error>(m_clientLogString + " Timeout waiting to send data (" +
-								   tos(cur_time) + " " + tos(m_lastActivityTime) + " [" + tos(cur_time - m_lastActivityTime) + "] )");
-
-		if (!amt)
-		{
-			// nothing in the source
-			result.m_runImmediately = true;
-		}
-		else
-		{
-			int rval = ::send(m_socket,(const char *)&(m_introFile[m_introFileOffset]),amt,0);
-			if (rval == 0)
-			{
-				throwEx<runtime_error>(m_clientLogString + " Remote socket closed while sending data.");
-			}
-			else if (rval < 0)
-			{
-				rval = socketOps::errCode();
-				if (rval != SOCKETOPS_WOULDBLOCK)
-					throwEx<runtime_error>(((
-											 #ifdef _WIN32
-											 rval == WSAECONNABORTED || rval == WSAECONNRESET
-											 #else
-											 rval == ECONNABORTED || rval == ECONNRESET || rval == EPIPE
-											 #endif
-											) ? uniString::utf8("") : m_clientLogString + "Socket error while waiting to send data. " + socketErrString(rval)));
-				result.m_timeout.tv_sec = (long)(autoDumpTime - (cur_time - m_lastActivityTime));
-				result.m_writeSet.insert(m_socket);
-			}
-			else
-			{
-				m_bytesSentForCurrentTitle += rval;
-				m_totalBytesSent += rval;
-				m_lastActivityTime = ::time(NULL);
-				m_metaIntervalCounter += rval;
-				m_introFileOffset += rval;
-				assert((!m_sendMetadata) || (m_metaIntervalCounter <= m_metaInterval));
-				result.m_writeSet.insert(m_socket);
-				result.m_timeout.tv_sec = autoDumpTime;
-			}
-		}
-	}
-	return result;
-}
-
-// handle state where we are sending backup files	
-runnable::timeSliceResult protocol_RTMPClient::state_SendBackupFile() throw(exception)
-{
-	assert(m_streamData);
-	assert(!m_backupFile.empty());
-
-	timeSliceResult result;
-
-	int autoDumpTime = gOptions.getAutoDumpSourceTime(); // don't want this value to change during this call
-
-	m_limitTrigger.clear();
-
-	size_t amt = m_backupFile.size() - m_backupFileOffset;
-
-	if (streamData::isSourceConnected(m_streamData))
-	{
-		// we're done with the backup file
-		m_backupFile.clear();
-		resetReadPtr();
-		m_state = &protocol_RTMPClient::state_Stream;
-
-		result.m_runImmediately = true;
-	}
-	else if (amt == 0)
-	{
-		// we're done with the backup file. get more data
-		aquireBackupFile();
-		if (m_backupFile.empty())
-		{ // it got cleared out from under us? Try and stream
-			resetReadPtr();
-			m_state = &protocol_RTMPClient::state_Stream;
-		}
-
-		result.m_runImmediately = true;
-	}
-	else if ((m_metaIntervalCounter == m_metaInterval) && m_sendMetadata) // check to see if we have to send the metadata
-	{
-		sendICYMetadata("StreamTitle='';");
-
-		m_nextState = &protocol_RTMPClient::state_SendBackupFile;
-		result.m_writeSet.insert(m_socket);
-		result.m_timeout.tv_sec = autoDumpTime;
-	}
-	else
-	{
-		// clamp amount to send if we are supporting metadata	
-		if (m_sendMetadata)
-		{
-			amt = min(amt,(m_metaInterval - m_metaIntervalCounter));
-		}
-
-		// send
-		time_t cur_time = ::time(0);
-		if (autoDumpTime > 0 && (cur_time - m_lastActivityTime) >= autoDumpTime)
-			throwEx<runtime_error>(m_clientLogString + " Timeout waiting to send data (" +
-								   tos(cur_time) + " " + tos(m_lastActivityTime) + " [" + tos(cur_time - m_lastActivityTime) + "] )");
-
-		if (!amt)
-		{
-			// nothing in the source
-			result.m_runImmediately = true;
-		}
-		else
-		{
-			int rval = ::send(m_socket,(const char *)&(m_backupFile[m_backupFileOffset]),amt,0);
-			if (rval == 0)
-			{
-				throwEx<runtime_error>(m_clientLogString + " Remote socket closed while sending data.");
-			}
-			else if (rval < 0)
-			{
-				rval = socketOps::errCode();
-				if (rval != SOCKETOPS_WOULDBLOCK)
-					throwEx<runtime_error>(((
-											 #ifdef _WIN32
-											 rval == WSAECONNABORTED || rval == WSAECONNRESET
-											 #else
-											 rval == ECONNABORTED || rval == ECONNRESET || rval == EPIPE
-											 #endif
-											) ? uniString::utf8("") : m_clientLogString + "Socket error while waiting to send data. " + socketErrString(rval)));
-				result.m_timeout.tv_sec = (long)(autoDumpTime - (cur_time - m_lastActivityTime));
-				result.m_writeSet.insert(m_socket);
-			}
-			else
-			{
-				m_bytesSentForCurrentTitle += rval;
-				m_totalBytesSent += rval;
-				m_lastActivityTime = ::time(NULL);
-				m_metaIntervalCounter += rval;
-				m_backupFileOffset += rval;
-				assert((!m_sendMetadata) || (m_metaIntervalCounter <= m_metaInterval));
-				result.m_writeSet.insert(m_socket);
-				result.m_timeout.tv_sec = autoDumpTime;
-			}
-		}
-	}
-	return result;
-}
-
-runnable::timeSliceResult protocol_RTMPClient::state_Stream() throw(exception)
-{
-	assert(m_streamData);
-
-	timeSliceResult result;
-
-	int autoDumpTime = gOptions.getAutoDumpSourceTime(); // don't want this value to change during this call
-
-	m_limitTrigger.clear();
-
-	// check to see if we have to send the metadata
-	if ((m_metaIntervalCounter == m_metaInterval) && m_sendMetadata)
-	{
-		// send metadata
-		sendICYMetadata(m_streamData->getSc1Metadata(m_readPtr).m_songTitle);
-
-		m_nextState = &protocol_RTMPClient::state_Stream;
-		result.m_writeSet.insert(m_socket);
-		result.m_timeout.tv_sec = autoDumpTime;
-	}
-	else
-	{
-		streamData::ringBuffer_t rb = m_streamData->getSc1RingBuffer();
-
-		streamData::ringBufferAccess_t amt = rb.m_writePtr - m_readPtr;
-		if (amt > rb.m_bufferSize)
-		{
-			// the pointers are too far apart. Underrun
-			m_underruns += 1;
-			amt = resetReadPtr();
-		}
-
-		// clamp amount to send if we are supporting metadata	
-		if (m_sendMetadata)
-		{
-			amt = min(amt,(streamData::ringBufferAccess_t)(m_metaInterval - m_metaIntervalCounter));
-		}
-
-		streamData::ringBufferAccess_t offset = m_readPtr & rb.m_ptrMask;
-		// clamp again so we don't read passed end of buffer
-		amt = min(amt,rb.m_bufferSize - offset);
-
-		// send
-		time_t cur_time = ::time(0);
-		if (autoDumpTime > 0 && (cur_time - m_lastActivityTime) >= autoDumpTime)
-			throwEx<runtime_error>(m_clientLogString + " Timeout waiting to send data (" +
-								   tos(cur_time) + " " + tos(m_lastActivityTime) + " [" + tos(cur_time - m_lastActivityTime) + "] )");
-
-		if (!amt)
-		{
-			// nothing in the source
-			// If the source has gone away, and we have a backup file, send it.
-			bool sendBackupFile = false;
-
-			if (!streamData::isSourceConnected(m_streamData))
-			{
-				aquireBackupFile();
-				sendBackupFile = !m_backupFile.empty();
-			}
-			if (sendBackupFile)
-			{
-				m_state = &protocol_RTMPClient::state_SendBackupFile;
-				result.m_runImmediately = true;
-			}
-			else
-			{	
-				result.m_timeout.tv_sec = (long)(autoDumpTime - (cur_time - m_lastActivityTime));
-				m_limitTrigger.clear();
-				result.m_readSet.insert(m_limitTrigger.test());
-				m_streamData->scheduleSc1LimitTrigger(&m_limitTrigger,m_readPtr);
-			}
-		}
-		else
-		{
-			int rval = ::send(m_socket,(const char *)&(rb.m_data[offset]),amt,0);
-			if (rval == 0)
-			{
-				throwEx<runtime_error>(m_clientLogString + " Remote socket closed while sending data.");
-			}
-			else if (rval < 0)
-			{
-				rval = socketOps::errCode();
-				if (rval != SOCKETOPS_WOULDBLOCK)
-					throwEx<runtime_error>(((
-											 #ifdef _WIN32
-											 rval == WSAECONNABORTED || rval == WSAECONNRESET
-											 #else
-											 rval == ECONNABORTED || rval == ECONNRESET || rval == EPIPE
-											 #endif
-											) ? uniString::utf8("") : m_clientLogString + "Socket error while waiting to send data. " + socketErrString(rval)));
-				result.m_timeout.tv_sec = (long)(autoDumpTime - (cur_time - m_lastActivityTime));
-				result.m_writeSet.insert(m_socket);
-			}
-			else
-			{
-				m_bytesSentForCurrentTitle += rval;
-				m_totalBytesSent += rval;
-				m_lastActivityTime = ::time(NULL);
-				m_metaIntervalCounter += rval;
-				assert((!m_sendMetadata) || (m_metaIntervalCounter <= m_metaInterval));
-				m_readPtr += rval;
-				result.m_writeSet.insert(m_socket);
-				result.m_timeout.tv_sec = autoDumpTime;
-			}
-		}
-	}
-	return result;
-}
-
-#endif
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_RTMPClient.h b/Src/Plugins/DSP/sc_serv3/protocol_RTMPClient.h
deleted file mode 100644
index 457bab95..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_RTMPClient.h
+++ /dev/null
@@ -1,170 +0,0 @@
-#pragma once
-#if 0
-#ifndef protocol_RTMPClient_H_
-#define protocol_RTMPClient_H_
-
-#include "threadedRunner.h"
-#include "streamData.h"
-#include <map>
-#include <vector>
-
-class streamData;
-
-class AMFEncoding;
-
-class protocol_RTMPClient: public runnable, public clientProtocol
-{
-public:
-	class message
-	{
-	public:
-		int	m_chunkStreamID;
-		int m_messageStreamID;
-		__uint8 m_messageType;
-		std::vector<__uint8> m_messageData;
-
-		void clear() throw() { m_messageData.clear(); }
-		uniString::utf8 packetDump() const throw();
-	};
-
-private:
-	// the limit trigger is used when the client readPtr butts up against the write ptr.
-	// In this case we can't select against the socket, because it will always be ready and we'll
-	// end up in a CPU intenstive spin loop. Instead, we create a signal and give it to the streamData
-	// object with the value of our readPtr. The streamData object will signal the trigger when there
-	// is data available
-	pipeDrivenSignal<AOL_namespace::mutex>		m_limitTrigger;
-
-	socketOps::tSOCKET		m_socket;
-	const uniString::utf8	m_clientHostName;
-	const uniString::utf8	m_clientAddr;
-	const int				m_clientPort;
-	uniString::utf8			m_clientLogString;
-	const __uint8			m_C0;	// C0 packet sent from client. Has version number
-	const __uint8			m_S0;	// my response
-	std::vector<__uint8>	m_C1;	// C1 packet from client
-	std::vector<__uint8>	m_C2;	// C2 packet from client
-	std::vector<__uint8>	m_S1orS2;	// S1 or S2 packet from me
-
-	__uint8			*m_inDataBuffer;
-	size_t			m_inDataBufferMax; // max allocated
-	size_t			m_inDataBufferAmt; // amt in buffer
-	size_t			m_inDataRequested; // amt we want to read for a fixed read (C1 or C2)
-	message			m_inMsg;
-
-	const __uint8	*m_outDataPtr; // for outgoing text lines
-	size_t			m_outDataSize;
-	std::vector<__uint8>	m_outDataBuffer;
-
-	__uint32		m_serverBaseTime;	// for RTMP protocol
-	__uint32		m_C1ReadTime;
-
-	time_t					m_lastActivityTime;
-
-	time_t					m_startTime;	// when connection started, used to implement listenerTime
-
-	// inbound state
-	size_t							m_inboundChunkSize;
-	int								m_lastInboundMessageStreamID;
-	int								m_lastInboundMessageLength;
-	int								m_lastInboundMessageTypeID;
-	long							m_lastInboundTimestamp;
-	size_t							m_windowSizeFromClient;
-	int								m_bufferSizeFromClient;
-
-	// outbound state
-	size_t							m_outboundChunkSize;
-
-	long getMsg(message &msg) throw(std::exception);
-
-	//// stats for w3c logs
-	time_t					m_lastTitleTime;	// time of last title update used for w3c logs
-	__uint64				m_bytesSentForCurrentTitle; // bytes sent since last title change. used for w3c logs
-	__uint64				m_totalBytesSent;	// total bytes sent whilst the connection is open
-	uniString::utf8			m_lastSentMetadata; // no need to send duplicates. Also used for w3C tracking
-
-	int			m_objectEncodingMode;
-	///////////////////////////
-
-	////////// HTTP message buffer for 302 redirect
-//	uniString::utf8			m_redirectResponse;
-	//////////////////////////////////////////
-
-//	const protocol_HTTPStyle::HTTPRequestInfo	m_HTTPRequestInfo; // the received request and headers
-//	uniString::utf8			m_ICYOKResponse;
-//	std::vector<__uint8>	m_ICYMetadata; // metadata buffer
-
-	streamData::streamID_t	m_streamID;		// stream ID for this connection
-
-	streamData::ringBufferAccess_t	m_readPtr;	// pointer into ring buffer
-	int								m_underruns; // client too slow
-	bool							m_removeClientFromStats; // do we have to do a stats::removeClient
-
-	bool							m_sendMetadata;
-	size_t							m_metaInterval;
-	size_t							m_metaIntervalCounter; // counter for metadata updates
-
-	std::vector<__uint8>			m_introFile;
-	size_t							m_introFileOffset;
-	std::vector<__uint8>			m_backupFile;
-	size_t							m_backupFileOffset;
-
-	void aquireIntroFile() throw();
-	void aquireBackupFile() throw();
-
-	streamData::ringBufferAccess_t resetReadPtr() throw(); // return distance between read and write pointer
-	void sendICYMetadata(const uniString::utf8 &md) throw();
-
-	void logW3C() throw();
-	void setW3CState() throw();
-
-	typedef runnable::timeSliceResult (protocol_RTMPClient::*state_t)(); // throw(std::exception);
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	streamData	*m_streamData;
-
-	bool chunkSequenceComplete(const __uint8 *inBuffer,size_t amtInBuffer,size_t &amtToRemoveFromInBuffer,size_t expectedChunkSize,
-								std::vector<__uint8> &msg,__uint8 &msgType,int &chunkStreamID,int &messageStreamID,const uniString::utf8 &logMsgPrefix) throw(std::exception);
-
-	runnable::timeSliceResult state_Send() throw(std::exception);
-	runnable::timeSliceResult state_RecvFixedAmt() throw(std::exception);
-	runnable::timeSliceResult state_RecvMsg() throw(std::exception);
-
-	runnable::timeSliceResult state_WaitForC1() throw(std::exception);
-	runnable::timeSliceResult state_GotC1() throw(std::exception);
-	runnable::timeSliceResult state_WaitForC2() throw(std::exception);
-	runnable::timeSliceResult state_GotC2() throw(std::exception);
-	runnable::timeSliceResult state_SendS0() throw(std::exception);
-	runnable::timeSliceResult state_SendS1() throw(std::exception);
-	runnable::timeSliceResult state_SendS2() throw(std::exception);
-
-	runnable::timeSliceResult state_WaitForMessage() throw(std::exception);
-	runnable::timeSliceResult state_GotMessage() throw(std::exception);
-
-	runnable::timeSliceResult state_SendAudio() throw(std::exception);
-
-	runnable::timeSliceResult handle_AMF0_message() throw(std::exception);
-	runnable::timeSliceResult handle_AMF0_connect(const AMFEncoding &amf) throw(std::exception);
-	runnable::timeSliceResult handle_AMF0_createStream(const AMFEncoding &amf) throw(std::exception);
-	runnable::timeSliceResult handle_AMF0_play(const AMFEncoding &amf) throw(std::exception);
-
-	runnable::timeSliceResult handle_USER_CONTROL_message() throw(std::exception);
-	runnable::timeSliceResult handle_UCM_StreamBegin() throw(std::exception);
-
-	runnable::timeSliceResult state_SendConnectResponse() throw(std::exception);
-
-	runnable::timeSliceResult state_Close() throw(std::exception);
-
-	virtual runnable::timeSliceResult timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_RTMPClient"; }
-
-public:
-	protocol_RTMPClient(socketOps::tSOCKET s,const uniString::utf8 &hostName,const uniString::utf8 &addr,int port,
-						__uint8 C0 /* initial client packet */) throw(std::exception);
-	virtual ~protocol_RTMPClient() throw();
-};
-
-#endif
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_admincgi.cpp b/Src/Plugins/DSP/sc_serv3/protocol_admincgi.cpp
deleted file mode 100644
index 8b4b9070..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_admincgi.cpp
+++ /dev/null
@@ -1,6390 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_shoutcastClient.h"
-#include "protocol_admincgi.h"
-#include "protocol_HTTPStyle.h"
-#include "protocol_relay.h"
-#include "base64.h"
-#include "banList.h"
-#include "ripList.h"
-#include "adminList.h"
-#include "agentList.h"
-#include "uvox2Common.h"
-#include "w3cLog.h"
-#include "yp2.h"
-#include "updater.h"
-#include "aolxml/aolxml.h"
-#include "webNet/urlUtils.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-#include "bandwidth.h"
-#include "cpucount.h"
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-time_t last_update_check = 0;
-utf8 logId, logTailId, listenerId;
-
-#define DEBUG_LOG(...)      do { if (gOptions.httpStyleDebug()) DLOG(__VA_ARGS__); } while (0)
-#define LOG_NAME "ADMINCGI"
-#define LOGNAME "[" LOG_NAME "] "
-
-#define HEAD_REQUEST (m_httpRequestInfo.m_request == protocol_HTTPStyle::HTTP_HEAD)
-#define SHRINK (m_httpRequestInfo.m_AcceptEncoding & protocol_HTTPStyle::ACCEPT_GZIP)
-#define COMPRESS(header, body) if (SHRINK && compressData(body)) header += "Content-Encoding:gzip\r\n"
-
-static bool sortUniqueClientDataByTime(const stats::uniqueClientData_t &a, const stats::uniqueClientData_t &b)
-{
-	return (a.m_connectTime < b.m_connectTime);
-}
-
-utf8 getStreamAdminHeader(const streamData::streamID_t sid, const utf8& headerTitle,
-						  const int refreshRequired = 0, const bool style = false)
-{
-	return "<!DOCTYPE html><html><head>"
-		   "<meta charset=\"utf-8\">"
-		   "<meta name=viewport content=\"width=device-width, initial-scale=1\">"
-		   "<title>Shoutcast Administrator</title>"
-		   "<link href=\"index.css\" rel=\"stylesheet\" type=\"text/css\">"
-		   "<link href=\"images/favicon.ico\" rel=\"shortcut icon\" type=\"" +
-		   gOptions.faviconFileMimeType() + "\">" + (abs(refreshRequired) > 0 ?
-		   "<meta http-equiv=\"refresh\"content=\"3; url=admin.cgi?sid=" + tos(sid) + "\">" : "") +
-
-		   (style ? "<style type=\"text/css\">"
-					"li img{vertical-align:bottom;}li{padding-bottom:0.5em;}"
-					"</style>" : (utf8)"") +
-
-		   "</head><body style=\"margin:0;\">"
-		   "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>"
-		   "<td><div class=\"logo\">Shoutcast " + headerTitle + "</div></td>"
-		   "<td style=\"text-align:right;vertical-align:bottom;padding-right:0.1em;\">"
-		   "<div id=\"up\"></div><a target=\"_blank\" title=\"Built: " __DATE__"\" "
-		   "href=\"http://www.shoutcast.com\">Shoutcast Server v" +
-		   addWBR(gOptions.getVersionBuildStrings() + "/" SERV_OSNAME) + "</a></td>"
-		   "</tr><tr><td class=\"thr\" align=\"center\" colspan=\"3\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"
-		   "<tr><td class=\"thr\" align=\"center\"><div id=\"hdrbox\" class=\"tnl\" "
-		   "style=\"justify-content:space-around;display:flex;flex-flow:row wrap;\">"
-		   "<div class=\"thr\"><a href=\"admin.cgi?sid=" + tos(sid) + "\">Status &amp; Listeners</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=history\">History&nbsp;"
-		   "<img border=\"0\" title=\"History\" alt=\"History\" style=\"vertical-align:middle\" src=\"images/history.png\"></a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   + (!(gOptions.read_stream_adminPassword(sid) && !gOptions.stream_adminPassword(sid).empty()) ?
-						"<div class=\"thr\"><a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=viewlog\">Log</a> "
-						"(<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=viewlog&amp;viewlog=tail\">Tailing</a>"
-						" | <a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=viewlog&amp;viewlog=save\">Save</a>)</div>"
-						"<div class=\"thr\">&nbsp;|&nbsp;</div>" : "") +
-		   /*+ utf8(info.m_radionomyID.empty() ? warningImage(false) + "&nbsp;&nbsp;<b>Please Register Your Authhash</b><br><br>" : "") +*/
-		   "<div class=\"thr\"><a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Authhash</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=viewban\">Ban List</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=viewrip\">Reserved List</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=viewagent\">User Agent List</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"index.html?sid=" + tos(sid) + "\">Stream Logout</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi\">Server Login&nbsp;"
-		   "<img border=\"0\" title=\"Server Login\nPassword Required\" alt=\"Server Login\nPassword Required"
-		   "\" style=\"vertical-align:middle\" src=\"images/lock.png\"></a></div>"
-		   "</div></td></tr></table></td></tr></table>";
-}
-
-utf8 getServerAdminHeader(const utf8& headerTitle, const int refreshRequired = 0,
-						  const utf8& childPage = "", const int style = 0)
-{
-	return "<!DOCTYPE html><html><head>"
-		   "<meta charset=\"utf-8\">"
-		   "<meta name=viewport content=\"width=device-width, initial-scale=1\">"
-		   "<title>Shoutcast Server Administrator</title>"
-		   "<link href=\"index.css\" rel=\"stylesheet\" type=\"text/css\">"
-		   "<link href=\"images/favicon.ico\" rel=\"shortcut icon\" type=\"" +
-		   gOptions.faviconFileMimeType() + "\">" +
-
-		   (abs(refreshRequired) > 0 ? "<meta http-equiv=\"refresh\"content=\"" +
-		   tos(abs(refreshRequired)) + "; url=admin.cgi?sid=0" + childPage + "\">" : "") +
-
-		   (style ? "<style type=\"text/css\">" +
-		   (style == 1 ? ".s,.t,.st{border-style:solid;border-color:#CCCCCC;padding:0.2em 1em;text-align:center;}"
-						 ".s,.t,.st{border-width:1px;}"
-						 /* this fixes a FF quirk with some of the edges being hidden*/
-						 ".infh{position:static;}" :
-		   (style == 2 ? "li img{vertical-align:bottom;}li{padding-bottom:0.5em;}" : (utf8)"")) + "</style>" : (utf8)"") +
-
-		   "</head><body style=\"margin:0;\">"
-		   "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>"
-		   "<td><div class=\"logo\">Shoutcast " + headerTitle + "</div></td>"
-		   "<td style=\"text-align:right;vertical-align:bottom;padding-right:0.1em;\">"
-		   "<div id=\"up\"></div><a target=\"_blank\" title=\"Built: " __DATE__"\" "
-		   "href=\"http://www.shoutcast.com\">Shoutcast Server v" +
-		   addWBR(gOptions.getVersionBuildStrings() + "/" SERV_OSNAME) + "</a></td></tr>"
-		   "<tr><td class=\"thr\" align=\"center\" colspan=\"3\">"
-		   "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"
-		   "<tr><td class=\"thr\" align=\"center\"><div id=\"hdrbox\" class=\"tnl\" "
-		   "style=\"justify-content:space-around;display:flex;flex-flow:row wrap;\">"
-		   "<div class=\"thr\"><a href=\"admin.cgi?mode=help\">Help &amp; Documentation</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?mode=bandwidth\">Bandwidth Usage</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?mode=viewlog&amp;server=" + randomId(logId) + "\">Log</a> "
-		   "(<a href=\"admin.cgi?mode=viewlog&amp;server=" + logId + "&amp;viewlog=tail\">Tailing</a> | "
-		   "<a href=\"admin.cgi?mode=viewlog&amp;server=" + logId + "&amp;viewlog=save\">Save</a>)</div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi\">Summary</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?mode=viewban\">Ban List</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?mode=viewrip\">Reserved List</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"admin.cgi?mode=viewagent\">User Agent List</a></div>"
-		   "<div class=\"thr\">&nbsp;|&nbsp;</div>"
-		   "<div class=\"thr\"><a href=\"index.html\">Server Logout&nbsp;</a></div>"
-		   "</div></td></tr></table></td></tr></table>";
-}
-
-static utf8 formatSizeString(const __uint64 size)
-{
-	utf8::value_type buf[128] = {0};
-	if (size < 1024)
-	{
-		snprintf((char *)buf, sizeof(buf), "%llu B", size);
-	}
-	else if(size < 1048576)
-	{
-		snprintf((char *)buf, sizeof(buf), "%.02f KiB", size/1024.0f);
-	}
-	else if(size < 1073741824)
-	{
-		snprintf((char *)buf, sizeof(buf), "%.02f MiB", size/1048576.0f);
-	}
-	else if(size < 1099511627776LL)
-	{
-		snprintf((char *)buf, sizeof(buf), "%.02f GiB", size/1073741824.0f);
-	}
-	else
-	{
-		snprintf((char *)buf, sizeof(buf), "%.02f TiB", size/1099511627776.0f);
-	}
-	return buf;
-}
-
-utf8 getCheckedDuration(const size_t time)
-{
-	if (time >= 60)
-	{
-		if (time < 3600)
-		{
-			size_t min = (time / 60);
-			return (tos(min) + " minute" + (min != 1 ? "s" : "") + " ago");
-		}
-		else if (time < 86400)
-		{
-			size_t hour = (time / 3600);
-			return (tos(hour) + " hour" + (hour != 1 ? "s" : "") + " ago");
-		}
-		else
-		{
-			size_t week = (time / 86400);
-			return (tos(week) + " week" + (week != 1 ? "s" : "") + " ago");
-		}
-	}
-	return "less than a minute ago";
-}
-
-utf8 niceURL(utf8 srcAddr)
-{
-	if (!srcAddr.empty())
-	{
-		utf8::size_type pos = srcAddr.find(utf8("://"));
-		if (pos != utf8::npos && ((pos == 4) || (pos == 5)))
-		{
-			srcAddr = srcAddr.substr(pos + 3);
-		}
-		srcAddr = aolxml::escapeXML(srcAddr);
-
-		// look for a /stream/x/ path and strip off the end / so the
-		// link goes to the admin page instead of playing the stream
-		if (!srcAddr.empty())
-		{
-			utf8::size_type pos2 = srcAddr.find(utf8("/stream/")),
-							pos3 = srcAddr.rfind(utf8("/"));
-			if ((pos2 != utf8::npos) &&
-				((pos3 != utf8::npos) && (pos3 > pos2) &&
-				(pos3 == srcAddr.size()-1)))
-			{
-				srcAddr = srcAddr.substr(0, pos3);
-			}
-		}
-	}
-	return srcAddr;
-}
-
-void restartRelay(const config::streamConfig &info) throw()
-{
-	bool noEntry = false;
-	const int relayActive = (streamData::isRelayActive(info.m_streamID, noEntry) & 12);
-	if (!relayActive || !noEntry)
-	{
-		threadedRunner::scheduleRunnable(new protocol_relay(info));
-	}
-}
-
-void checkVersion(const time_t t)
-{
-	utf8 tempId;
-	httpHeaderMap_t queryParameters;
-	queryParameters["id"] = randomId(tempId);
-
-	yp2::runAuthHashAction(tempId, yp2::VER_CHECK, "/yp2", queryParameters,
-						   "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
-						   "<yp version=\"2\"><cmd op=\"version\" seq=\"1\">"\
-						   "<dnas>" + gOptions.getVersionBuildStrings() + "/" SERV_OSNAME "</dnas></cmd></yp>");
-
-	last_update_check = t;
-}
-
-utf8 getUptimeScript(const bool base = false, const bool stream = false, const time_t streamUptime = 0)
-{
-	// TODO need to consider improving this to better deal with leap years, etc
-	// used to increment the uptime value on the server admin page
-	return (!base ? "<script type=\"text/javascript\">"
-			"function $(id){return document.getElementById(id);}" EL : (utf8)"") +
-			"function pad(num){return(num<10?'0':'')+num;}" EL
-			"var i=" + tos((::time(NULL) - g_upTime)) + ";" EL
-
-			"function time(t,slim){" EL
-			"var min=parseInt(t/60);" EL
-			"var sec=t-parseInt(min*60);" EL
-			"var hours=parseInt(min/60);" EL
-			"min-=parseInt(hours*60);" EL
-
-			"var r=\"\";" EL
-			"var days=parseInt(hours/24);" EL
-			"hours-=parseInt(days*24);" EL
-			"var weeks=parseInt(days/7);" EL
-			"days-=parseInt(weeks*7);" EL
-			"var years=parseInt(weeks/52);" EL
-			"weeks-=parseInt(years*52);" EL
-			"if(years)r+=years+\" year\"+(years!=1?\"s\":\"\")+\" \";" EL
-			"if(weeks)r+=weeks+\" week\"+(weeks!=1?\"s\":\"\")+\" \";" EL
-			"if(days)r+=days+\" day\"+(days!=1?\"s\":\"\")+\" \";" EL
-			"if(slim){" EL
-			"r+=pad(hours)+\":\"+pad(min)+\":\"+pad(sec);" EL
-			"}else{" EL
-			"if(hours)r+=hours+\" hour\"+(hours!=1?\"s\":\"\")+\" \";" EL
-			"if(min)r+=min+\" minute\"+(min!=1?\"s\":\"\")+\" \";" EL
-			"if(sec)r+=sec+\" second\"+(sec!=1?\"s\":\"\");" EL
-			"}" EL
-			"return r;" EL
-			"}" EL
-
-			"function count(){i++;$('up').innerHTML=\"" + (sDaemon ?
-#ifdef _WIN32
-			"Service"
-#else
-			"Daemon"
-#endif
-			: "") + " Uptime: \"+(!i?\"Starting&hellip;\":time(i,1));}" EL
-			"count();setInterval(count,1000);" EL +
-
-			// used to increment the uptime value on the stream admin pages
-			(stream ?
-				"var is=" + tos(streamUptime) + ";" EL
-				"function counts(){is++;$('up2').innerHTML=\"<b>\"+(!is?\"Starting&hellip;\":time(is,0))+\"<\\/b>\";}" EL
-				"counts();setInterval(counts,1000);" EL : "") +
-
-			(!base ? "</script>" : "");
-}
-
-const bool reloadConfig(const int force)
-{
-	bool m_reloadRefresh = false;
-
-	ILOG(gOptions.logSectionName() + "Starting stream config reload from `" + fileUtil::getFullFilePath(gOptions.confFile()) + "'");
-	config newOptions;
-	newOptions.load(gOptions.confFile());
-	vector<config::streamConfig> relays;
-
-	// to ease testing, especially on remote systems, will
-	// allow toggling of the debugging options for v2.1+
-	ILOG(gOptions.logSectionName() + "Processing global configuration settings...");
-
-	if (newOptions.cdn() != gOptions.cdn())
-	{
-		ILOG(gOptions.logSectionName() + "Changing CDN mode from " + (!gOptions.cdn().empty() ? gOptions.cdn() : "off") +
-										 " to " + (!newOptions.cdn().empty() ? newOptions.cdn() : "off"));
-		try
-		{
-			gOptions.setOption(utf8("cdn"),utf8(newOptions.cdn()));
-		}
-		catch(const exception &)
-		{
-		}
-	}
-
-	if (newOptions.maxUser() != gOptions.maxUser())
-	{
-		const int old_maxUser = gOptions.maxUser(),
-				  new_maxUser = newOptions.maxUser();
-		ILOG(gOptions.logSectionName() + "Changing server maxuser from " +
-			 (old_maxUser > 0 ? tos(old_maxUser) : "unlimited") + " to " +
-			 (new_maxUser > 0 ? tos(new_maxUser) : "unlimited"));
-		gOptions.setOption(utf8("maxuser"),utf8(tos(newOptions.maxUser())));
-	}
-
-	if (newOptions.maxBitrate() != gOptions.maxBitrate())
-	{
-		ILOG(gOptions.logSectionName() + "Changing server maxbitrate from " +
-			 (gOptions.maxBitrate() > 0 ? tos(gOptions.maxBitrate()) + "bps" : "unlimited") + " to " +
-			 (newOptions.maxBitrate() > 0 ? tos(newOptions.maxBitrate()) + "bps" : "unlimited"));
-		gOptions.setOption(utf8("maxbitrate"),utf8(tos(newOptions.maxBitrate())));
-	}
-
-	if (newOptions.minBitrate() != gOptions.minBitrate())
-	{
-		ILOG(gOptions.logSectionName() + "Changing server minbitrate from " +
-			 (gOptions.minBitrate() > 0 ? tos(gOptions.minBitrate()) + "bps" : "unlimited") + " to " +
-			 (newOptions.minBitrate() > 0 ? tos(newOptions.minBitrate()) + "bps" : "unlimited"));
-		gOptions.setOption(utf8("minbitrate"),utf8(tos(newOptions.minBitrate())));
-	}
-
-	bool publicChanged = false;
-	if (newOptions.publicServer() != gOptions.publicServer())
-	{
-		ILOG(gOptions.logSectionName() + "Changing state of publicserver - killing sources as applicable");
-		gOptions.setOption(utf8("publicserver"),newOptions.publicServer());
-		publicChanged = true;
-	}
-
-	// update the server-wide hiding and redirection options
-	if (newOptions.hideStats() != gOptions.hideStats())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'hidestats'");
-		gOptions.setOption(utf8("hidestats"),utf8(newOptions.hideStats()));
-	}
-
-	if (newOptions.redirectUrl() != gOptions.redirectUrl())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'redirecturl'");
-		gOptions.setOption(utf8("redirecturl"),utf8(newOptions.redirectUrl()));
-	}
-
-	if (newOptions.ripOnly() != gOptions.ripOnly())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'riponly'");
-		gOptions.setOption(utf8("riponly"),utf8(tos(newOptions.ripOnly())));
-	}
-
-	if (newOptions.blockEmptyUserAgent() != gOptions.blockEmptyUserAgent())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'blockemptyuseragent'");
-		gOptions.setOption(utf8("blockemptyuseragent"),utf8(tos(newOptions.blockEmptyUserAgent())));
-	}
-
-	if (newOptions.metricsMaxQueue() != gOptions.metricsMaxQueue())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'metricsmaxqueue'");
-		gOptions.setOption(utf8("metricsmaxqueue"),utf8(tos(newOptions.metricsMaxQueue())));
-	}
-
-	metrics::metrics_apply(newOptions);
-
-	if (newOptions.relayReconnectTime() != gOptions.relayReconnectTime())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'relayreconnecttime'");
-		gOptions.setOption(utf8("relayreconnecttime"),utf8(tos(newOptions.relayReconnectTime())));
-	}
-
-	if (newOptions.relayConnectRetries() != gOptions.relayConnectRetries())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'relayconnectretries'");
-		gOptions.setOption(utf8("relayconnectretries"),utf8(tos(newOptions.relayConnectRetries())));
-	}
-
-	if (newOptions.backupLoop() != gOptions.backupLoop())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'backuploop'");
-		gOptions.setOption(utf8("backuploop"),utf8(tos(newOptions.backupLoop())));
-	}
-
-	if (newOptions.songHistory() != gOptions.songHistory())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'songhistory'");
-		gOptions.setOption(utf8("songhistory"),utf8(tos(newOptions.songHistory())));
-	}
-
-	if (newOptions.adminFile() != gOptions.adminFile())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'adminfile'");
-		gOptions.setOption(utf8("adminfile"),newOptions.adminFile());
-	}
-
-	if (newOptions.clacks() != gOptions.clacks())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'clacks'");
-		gOptions.setOption(utf8("clacks"),utf8(tos(newOptions.clacks())));
-	}
-
-	if (newOptions.startInactive() != gOptions.startInactive())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'startinactive'");
-		gOptions.setOption(utf8("startinactive"),utf8(tos(newOptions.startInactive())));
-	}
-
-	if (newOptions.rateLimit() != gOptions.rateLimit())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'rateLimit'");
-		gOptions.setOption(utf8("ratelimit"),utf8(tos(newOptions.rateLimit())));
-	}
-
-	if (newOptions.adTestFile() != gOptions.adTestFile())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'adtestfile'");
-		gOptions.setOption(utf8("adtestfile"),utf8(newOptions.adTestFile()));
-	}
-
-	if (newOptions.adTestFile2() != gOptions.adTestFile2())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'adtestfile2'");
-		gOptions.setOption(utf8("adtestfile2"),utf8(newOptions.adTestFile2()));
-	}
-
-	if (newOptions.adTestFile3() != gOptions.adTestFile3())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'adtestfile3'");
-		gOptions.setOption(utf8("adtestfile3"),utf8(newOptions.adTestFile3()));
-	}
-
-	if (newOptions.adTestFile4() != gOptions.adTestFile4())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'adtestfile4'");
-		gOptions.setOption(utf8("adtestfile4"),utf8(newOptions.adTestFile4()));
-	}
-
-	if (newOptions.adTestFileLoop() != gOptions.adTestFileLoop())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'adtestfileloop'");
-		gOptions.setOption(utf8("adtestfileloop"),utf8(tos(newOptions.adTestFileLoop())));
-	}
-
-	if (newOptions.metaInterval() != gOptions.metaInterval())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'metainterval'");
-		gOptions.setOption(utf8("metainterval"),utf8(tos(newOptions.metaInterval())));
-	}
-
-	if (newOptions.useXFF() != gOptions.useXFF())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'usexff'");
-		gOptions.setOption(utf8("usexff"),utf8(tos(newOptions.useXFF())));
-	}
-
-	if (newOptions.forceShortSends() != gOptions.forceShortSends())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'forceshortsends'");
-		gOptions.setOption(utf8("forceshortsends"),utf8(tos(newOptions.forceShortSends())));
-	}
-
-	if (newOptions.adminNoWrap() != gOptions.adminNoWrap())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'adminnowrap'");
-		gOptions.setOption(utf8("adminnowrap"),utf8(tos(newOptions.adminNoWrap())));
-	}
-
-	if (newOptions.adminCSSFile() != gOptions.adminCSSFile())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'admincssfile'");
-		gOptions.setOption(utf8("admincssfile"),utf8(newOptions.adminCSSFile()));
-		gOptions.m_styleCustomStr.clear();
-		gOptions.m_styleCustomStrGZ.clear();
-		gOptions.m_styleCustomHeaderTime = 0;
-	}
-
-	if (newOptions.destIP() != gOptions.destIP())
-	{
-		utf8 destBindAddr = metrics::metrics_verifyDestIP(newOptions, false);
-		ILOG(gOptions.logSectionName() + "Changing 'destip'");
-		gOptions.setOption(utf8("destip"), destBindAddr);
-
-		// if we're updating then attempt to behave like it was a new load
-		g_IPAddressForClients = destBindAddr;
-
-		if (g_IPAddressForClients.empty())
-		{
-			char s[MAXHOSTNAMELEN] = {0};
-			if (!::gethostname(s,MAXHOSTNAMELEN - 1))
-			{
-				g_IPAddressForClients = socketOps::hostNameToAddress(s,g_portForClients);
-			}
-		}
-	}
-
-	if (newOptions.publicIP() != gOptions.publicIP())
-	{
-		utf8 publicAddr = stripWhitespace(newOptions.publicIP());
-		publicAddr = stripHTTPprefix(publicAddr);
-		ILOG(gOptions.logSectionName() + "Changing 'publicip'");
-		gOptions.setOption(utf8("publicip"),publicAddr);
-	}
-
-	if (newOptions.autoDumpTime() != gOptions.autoDumpTime())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'autodumptime'");
-		gOptions.setOption(utf8("autodumptime"),utf8(tos(newOptions.autoDumpTime())));
-	}
-
-	if (newOptions.nameLookups() != gOptions.nameLookups())
-	{
-		ILOG(gOptions.logSectionName() + "Changing 'namelookups'");
-		gOptions.setOption(utf8("namelookups"),utf8(tos(newOptions.nameLookups())));
-	}
-
-	// update the YP details (can do on fly without any actual updates)
-	bool ypChanged = false;
-	bool https = ((gOptions.ypAddr() == DEFAULT_YP_ADDRESS) && uniFile::fileExists(gOptions.m_certPath));
-	utf8 oldYP = (https ? "https://" : "http://") + gOptions.ypAddr() + ":" + tos(gOptions.ypPort()) + gOptions.ypPath();
-	if (newOptions.ypAddr() != gOptions.ypAddr())
-	{
-		ypChanged = true;
-		gOptions.setOption(utf8("ypaddr"),utf8(newOptions.ypAddr()));
-	}
-	if (newOptions.ypPort() != gOptions.ypPort())
-	{
-		ypChanged = true;
-		gOptions.setOption(utf8("ypport"),utf8(tos(newOptions.ypPort())));
-	}
-	if (newOptions.ypPath() != gOptions.ypPath())
-	{
-		ypChanged = true;
-		gOptions.setOption(utf8("yppath"),utf8(newOptions.ypPath()));
-	}
-
-	if (ypChanged)
-	{
-		bool https = ((newOptions.ypAddr() == DEFAULT_YP_ADDRESS) && uniFile::fileExists(gOptions.m_certPath));
-		utf8 newYP = (https ? "https://" : "http://") + newOptions.ypAddr() + ":" + tos(newOptions.ypPort()) + newOptions.ypPath();
-		ILOG(gOptions.logSectionName() + "Changing YP details from " + oldYP + " to " + newYP);
-	}
-
-	gOptions.setOption(utf8("yp2debug"),utf8(newOptions.yp2Debug()?"1":"0"));
-	gOptions.setOption(utf8("shoutcastsourcedebug"),utf8(newOptions.shoutcastSourceDebug()?"1":"0"));
-	gOptions.setOption(utf8("uvox2sourcedebug"),utf8(newOptions.uvox2SourceDebug()?"1":"0"));
-	gOptions.setOption(utf8("httpsourcedebug"),utf8(newOptions.HTTPSourceDebug()?"1":"0"));
-	gOptions.setOption(utf8("shoutcast1clientdebug"),utf8(newOptions.shoutcast1ClientDebug()?"1":"0"));
-	gOptions.setOption(utf8("shoutcast2clientdebug"),utf8(newOptions.shoutcast2ClientDebug()?"1":"0"));
-	gOptions.setOption(utf8("httpclientdebug"),utf8(newOptions.HTTPClientDebug()?"1":"0"));
-	gOptions.setOption(utf8("flvclientdebug"),utf8(newOptions.flvClientDebug()?"1":"0"));
-	gOptions.setOption(utf8("m4aclientdebug"),utf8(newOptions.m4aClientDebug()?"1":"0"));
-	gOptions.setOption(utf8("relayshoutcastdebug"),utf8(newOptions.relayShoutcastDebug()?"1":"0"));
-	gOptions.setOption(utf8("relayuvoxdebug"),utf8(newOptions.relayUvoxDebug()?"1":"0"));
-	gOptions.setOption(utf8("relaydebug"),utf8(newOptions.relayDebug()?"1":"0"));
-	gOptions.setOption(utf8("streamdatadebug"),utf8(newOptions.streamDataDebug()?"1":"0"));
-	gOptions.setOption(utf8("httpstyledebug"),utf8(newOptions.httpStyleDebug()?"1":"0"));
-	gOptions.setOption(utf8("statsdebug"),utf8(newOptions.statsDebug()?"1":"0"));
-	gOptions.setOption(utf8("microserverdebug"),utf8(newOptions.microServerDebug()?"1":"0"));
-	gOptions.setOption(utf8("threadrunnerdebug"),utf8(newOptions.threadRunnerDebug()?"1":"0"));
-	gOptions.setOption(utf8("admetricsdebug"),utf8(newOptions.adMetricsDebug()?"1":"0"));
-	gOptions.setOption(utf8("authdebug"),utf8(newOptions.authDebug()?"1":"0"));
-
-	ILOG(gOptions.logSectionName() + "Processed global configuration settings.");
-
-	// test for the source password having changed this will be
-	// applied in general though per stream changes are likely
-	// to have been set in the earlier checks before we got here
-	if (newOptions.password() != gOptions.password())
-	{
-		gOptions.setOption(utf8("password"),newOptions.password());
-		streamData *sd = streamData::accessStream(DEFAULT_SOURCE_STREAM);
-		if (sd)
-		{
-			ILOG(gOptions.logSectionName() + "Killing all stream sources due to change of relay options.");
-			sd->killAllSources();
-			m_reloadRefresh = true;
-			sd->releaseStream();
-		}
-	}
-
-	config::streams_t new_streams, old_streams;
-	newOptions.getStreamConfigs(new_streams, false);
-	gOptions.getStreamConfigs(old_streams, false);
-
-	config::streams_t::const_iterator iNSC = new_streams.begin(), iOSC = old_streams.begin();
-
-	// if no configurations found then we can just remove everything
-	if (new_streams.empty())
-	{
-		// kick the source and clients as required on a removal
-		for (; iOSC != old_streams.end(); ++iOSC)
-		{
-			size_t streamID = (*iOSC).second.m_streamID;
-			streamData *sd = streamData::accessStream(streamID);
-			if (sd)
-			{
-				sd->killSource(streamID, sd);
-				m_reloadRefresh = true;
-			}
-			gOptions.removeStreamConfig((*iOSC).second);
-		}
-	}
-
-	// otherwise if the same or more then we can update / add as required
-	else if (new_streams.size() >= old_streams.size())
-	{
-		// if no configs specified and we're starting to add new stream configs
-		// then we really need to kick any existing sources otherwise it'll stay
-		// with the current details which will prevent a YP connection with extra
-		// checks in build 21+ to make sure it only works if there was a change.
-		if ((new_streams.size() != old_streams.size()) &&
-		    (old_streams.size() == DEFAULT_SOURCE_STREAM))
-		{
-			// kick the source and clients as required on a complete addition
-			// (wouldn't have a valid config via authhash, etc so is sensible)
-			streamData *sd = streamData::accessStream(DEFAULT_SOURCE_STREAM);
-			if (sd)
-			{
-				ILOG(gOptions.logSectionName() + "Forcing stream source disconnect due to addition of stream config(s).");
-				sd->killAllSources();
-				m_reloadRefresh = true;
-				sd->releaseStream();
-			}
-		}
-
-		for (; iNSC != new_streams.end(); ++iNSC)
-		{
-			config::streams_t::const_iterator iOSC2 = old_streams.find((*iNSC).first);
-			if (iOSC2 != old_streams.end())
-			{
-				// update required
-				__uint64 updated = gOptions.updateStreamConfig(newOptions, (*iNSC).second);
-				size_t streamID = (*iNSC).second.m_streamID;
-				streamData *sd = streamData::accessStream(streamID);
-				if (sd)
-				{
-					// otherwise do an in-place update as long as it is applicable
-					bool isRelay = sd->isRelayStream(streamID);
-					if (publicChanged || force ||
-						(!force && (updated & RELAY_URL || updated & SOURCE_PWD ||
-						 updated & PUBLIC_SRV || (updated & ALLOW_RELAY && isRelay) ||
-						 (updated & ALLOW_PUBLIC_RELAY && isRelay) || updated & CIPHER_KEY ||
-						  updated & INTRO_FILE || updated & BACKUP_FILE ||
-						  updated & BACKUP_URL || updated & MOVED_URL)))
-					{
-						sd->killSource(streamID);
-						m_reloadRefresh = true;
-
-						if (!(*iNSC).second.m_relayUrl.url().empty() &&
-						    !sd->isSourceConnected(streamID) &&
-						    gOptions.stream_movedUrl(streamID).empty())
-						{
-							relays.push_back((*iNSC).second);
-						}
-					}
-					// otherwise do an in-place update as long as it is applicable
-					else
-					{
-						sd->streamUpdate(streamID, (*iNSC).second.m_authHash, (*iNSC).second.m_maxStreamUser,
-										 (*iNSC).second.m_maxStreamBitrate, (*iNSC).second.m_minStreamBitrate);
-					}
-
-					// refresh the played history size as needed
-					if (updated & SONG_HIST)
-					{
-						sd->updateSongHistorySize();
-					}
-
-					if (updated & ARTWORK_FILE)
-					{
-						if (gOptions.read_stream_artworkFile(streamID))
-						{
-							gOptions.m_artworkBody[streamID] = loadLocalFile(fileUtil::getFullFilePath(gOptions.stream_artworkFile(streamID)), LOGNAME, 523872/*32 x (16384 - 6 - 6 - 1)*/);
-						}
-						else
-						{
-							gOptions.m_artworkBody[streamID].clear();
-							sd->clearCachedArtwork(0);
-						}
-					}
-					sd->releaseStream();
-				}
-				// otherwise if no proper update or a relay was added / is known and not connected then bump it
-				else
-				{
-					// force flag a source relay kick if this is called
-					bool noEntry = false;
-					if ((streamData::isRelayActive(streamID, noEntry) & 12))
-					{
-						// if there is a relay attempt and no new one
-						// then we need to signal it to abort trying
-						if ((*iNSC).second.m_relayUrl.url().empty())
-						{
-							streamData::setRelayActiveFlags (streamID, noEntry, 2);
-						}
-						// otherwise we need update the relay url
-						// which the attempt is trying to join to
-						// which is done by the relay handling.
-					}
-
-					if (((*iOSC2).second.m_relayUrl.url() != (*iNSC).second.m_relayUrl.url() ||
-						(updated & MOVED_URL)) && !(*iNSC).second.m_relayUrl.url().empty())
-					{
-						relays.push_back((*iNSC).second);
-						m_reloadRefresh = true;
-					}
-				}
-			}
-			else
-			{
-				// addition required
-				// no need to do anything else as there shouldn't be anything connected on this at the time
-				gOptions.addStreamConfig(newOptions, (*iNSC).second);
-				m_reloadRefresh = true;
-
-				// only attempt to start a relay url if added and a relay url exists
-				if (!(*iNSC).second.m_relayUrl.url().empty())
-				{
-					relays.push_back((*iNSC).second);
-				}
-			}
-		}
-	}
-
-	// otherwise if there are fewer stream configurations then we can update / remove as required
-	else
-	{
-		for (; iOSC != old_streams.end(); ++iOSC)
-		{
-			config::streams_t::const_iterator iOSC2 = new_streams.find((*iOSC).first);
-			if (iOSC2 != new_streams.end())
-			{
-				// update required
-				__uint64 updated = gOptions.updateStreamConfig(newOptions, (*iOSC2).second);
-				size_t streamID = (*iOSC2).second.m_streamID;
-				streamData *sd = streamData::accessStream(streamID);
-				if (sd)
-				{
-					// check what has been updated and kick the source as applicable
-					bool isRelay = sd->isRelayStream(streamID);
-					if (publicChanged || force ||
-						(!force && (updated & RELAY_URL || updated & SOURCE_PWD ||
-						 updated & PUBLIC_SRV || (updated & ALLOW_RELAY && isRelay) ||
-						 (updated & ALLOW_PUBLIC_RELAY && isRelay) || updated & CIPHER_KEY ||
-						  updated & INTRO_FILE || updated & BACKUP_FILE ||
-						  updated & BACKUP_URL || updated & MOVED_URL)))
-					{
-						sd->killSource(streamID);
-						m_reloadRefresh = true;
-
-						if (!(*iOSC2).second.m_relayUrl.url().empty() &&
-						    !sd->isSourceConnected(streamID) &&
-						    gOptions.stream_movedUrl(streamID).empty())
-						{
-							relays.push_back((*iOSC2).second);
-						}
-					}
-					// otherwise do an in-place update as long as it is applicable
-					else
-					{
-						sd->streamUpdate(streamID, (*iOSC2).second.m_authHash, (*iOSC2).second.m_maxStreamUser,
-										 (*iOSC2).second.m_maxStreamBitrate, (*iOSC2).second.m_minStreamBitrate);
-					}
-
-					// refresh the played history size as needed
-					if (updated & SONG_HIST)
-					{
-						sd->updateSongHistorySize();
-					}
-
-					if (updated & ARTWORK_FILE)
-					{
-						if (gOptions.read_stream_artworkFile(streamID))
-						{
-							gOptions.m_artworkBody[streamID] = loadLocalFile(fileUtil::getFullFilePath(gOptions.stream_artworkFile(streamID)), LOGNAME, 523872/*32 x (16384 - 6 - 6 - 1)*/);
-						}
-						else
-						{
-							gOptions.m_artworkBody[streamID].clear();
-							sd->clearCachedArtwork(0);
-						}
-					}
-					sd->releaseStream();
-				}
-			}
-			else
-			{
-				// kick the source and clients as required on a removal
-				size_t streamID = (*iOSC).second.m_streamID;
-				streamData *sd = streamData::accessStream(streamID);
-				if (sd)
-				{
-					sd->killSource(streamID, sd);
-					m_reloadRefresh = true;
-				}
-				// removal required
-				gOptions.removeStreamConfig((*iOSC).second);
-			}
-		}
-	}
-
-	// test for the require stream configs having changed
-	// only need to kick streams not known if enabled
-	if (newOptions.requireStreamConfigs() != gOptions.requireStreamConfigs())
-	{
-		gOptions.setOption(utf8("requirestreamconfigs"),utf8(newOptions.requireStreamConfigs()?"1":"0"));
-		if (newOptions.requireStreamConfigs())
-		{
-			size_t inc = 0;
-			size_t sid;
-			do
-			{
-				sid = streamData::enumStreams(inc);
-				config::streams_t streams;
-				gOptions.getStreamConfigs(streams, false);
-
-				config::streams_t::const_iterator ics = streams.find(sid);
-				if (ics == streams.end())
-				{
-					streamData *sd = streamData::accessStream(sid);
-					if (sd)
-					{
-						ILOG(gOptions.logSectionName() + "Killing source for stream #" + tos(sid) + " as it is not in the known stream config(s).", LOG_NAME, sid);
-						sd->killSource(sid, sd);
-						m_reloadRefresh = true;
-					}
-				}
-				++inc;
-			}
-			while (sid);
-		}
-	}
-
-	// finally we refresh the passwords so they're correct after any changes
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams, false);
-	gOptions.setupPasswords(streams);
-
-	// if a force was done then we really need to restart any relays
-	if (force)
-	{
-		// schedule relays
-		vector<config::streamConfig> relayList(gOptions.getRelayList());
-		if (!relayList.empty())
-		{
-			for_each(relayList.begin(),relayList.end(),restartRelay);
-		}
-	}
-	// otherwise only attempt to restart any which were added, changed, etc
-	else
-	{
-		if (!relays.empty())
-		{
-			for_each(relays.begin(),relays.end(),restartRelay);
-		}
-	}
-
-	ILOG(gOptions.logSectionName() + "Completed stream config reload from `" + fileUtil::getFullFilePath(gOptions.confFile()));
-	return m_reloadRefresh;
-}
-
-void reloadBanLists()
-{
-	// load up ban file
-	int loaded = g_banList.load(gOptions.banFile(),0),
-		count = loaded;
-
-	// per-stream options
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		// load up ban file
-		if (gOptions.read_stream_banFile((*i).first))
-		{
-			++count;
-			if (g_banList.load(gOptions.stream_banFile((*i).first),(*i).first))
-			{
-				++loaded;
-			}
-		}
-	}
-
-	if (!count)
-	{
-		ILOG("[BAN] No banned lists reloaded.");
-	}
-	else
-	{
-		if (count == loaded)
-		{
-			ILOG("[BAN] Reloaded all banned list(s).");
-		}
-		else
-		{
-			ILOG("[BAN] Partially reloaded banned list(s) - check error messages above.");
-		}
-	}
-}
-
-void reloadRipLists()
-{
-	// load up rip file
-	int loaded = g_ripList.load(gOptions.ripFile(),0),
-		count = loaded;
-
-	// per-stream options
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		// load up rip file
-		if (gOptions.read_stream_ripFile((*i).first))
-		{
-			++count;
-			if (g_ripList.load(gOptions.stream_ripFile((*i).first),(*i).first))
-			{
-				++loaded;
-			}
-		}
-	}
-
-	if (!count)
-	{
-		ILOG("[RIP] No reserved lists reloaded.");
-	}
-	else
-	{
-		if (count == loaded)
-		{
-			ILOG("[RIP] Reloaded all reserved list(s).");
-		}
-		else
-		{
-			ILOG("[RIP] Partially reloaded reserved list(s) - check error messages above.");
-		}
-	}
-}
-
-void reloadAdminAccessList()
-{
-	// load up admin access file
-	g_adminList.load(gOptions.adminFile());
-	ILOG("[ADMINCGI] Reloaded admin access list.");
-}
-
-void reloadAgentLists()
-{
-	// load up agent file
-	int loaded = g_agentList.load(gOptions.agentFile(),0),
-		count = loaded;
-
-	// per-stream options
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		// load up agent file
-		if (gOptions.read_stream_agentFile((*i).first))
-		{
-			++count;
-			if (g_agentList.load(gOptions.stream_agentFile((*i).first),(*i).first))
-			{
-				++loaded;
-			}
-		}
-	}
-
-	if (!count)
-	{
-		ILOG("[AGENT] No user agent lists reloaded.");
-	}
-	else
-	{
-		if (count == loaded)
-		{
-			ILOG("[AGENT] Reloaded all user agent list(s).");
-		}
-		else
-		{
-			ILOG("[AGENT] Partially reloaded user agent list(s) - check error messages above.");
-		}
-	}
-}
-
-void printUpdateMessage()
-{
-	// display update message where applicable
-	updater::verInfo ver;
-	if (updater::getNewVersion(ver))
-	{
-		ULOG(string(YP2_LOGNAME) + "A new DNAS version is now available: " + ver.ver);
-		ULOG(string(YP2_LOGNAME) + "The suggested download for your setup is: " + ver.url);
-		ULOG(string(YP2_LOGNAME) + "See " + ver.log + " for more information about this update and alternative download links");
-	}
-}
-
-utf8 warningImage(const bool right = true)
-{
-	return utf8(right ? "&nbsp;" : "") + "<img border=\"0\" src=\"images/warn.png\" style=\"float:" +
-		   utf8(right ? "right" : "left") + "\" "
-		   "alt=\"" + (right ? "Possible Stream Ripper" : "Please Register Your Authhash") +
-		   "\" title=\"" + (right ? "Possible Stream Ripper" : "Please Register Your Authhash") + "\">";
-}
-
-utf8 baseImage(const utf8& image, const utf8& title, const bool left = false, const bool prefix = true)
-{
-	return (prefix ? "&nbsp;" : (utf8)"") + "<img border=\"0\" src=\"images/" +
-		   (!image.empty() ? (image + ".png") : "favicon.ico") + "\" " +
-		   (left ? "style=\"float:left\" " : "") + "alt=\"" + title + "\" title=\"" + title + "\">";
-}
-
-#define xffImage() baseImage("xff", "XFF", true)
-#define mplayerImage() baseImage("mplayer", "MPlayer Client")
-#define psImage() baseImage("ps", "PlayStation Client")
-#define radioToolboxImage() baseImage("rtb", "Radio Toolbox Monitor / Player")
-#define v1Image() baseImage("v1", "v1 Client")
-#define v2Image() baseImage("v2", "v2 Client")
-#define relayImage() baseImage("relay", "Relay Connection", false, false)
-#define html5Image() baseImage("html5", "HTTP / HTML5 Client")
-#define flashImage() baseImage("flash", "Flash Client")
-#define icecastImage() baseImage("icecast", "Icecast Client / Relay")
-#define vlcImage() baseImage("vlc", "VLC Client")
-#define waImage() baseImage("wa", "Winamp Client")
-#define scImage() baseImage("", "Shoutcast Client / Relay")
-#define iOSImage() baseImage("", "iOS Client")
-#define curlImage() baseImage("curl", "cURL / libcurl Based Client")
-#define radionomyImage() baseImage("radionomy", "Radionomy Stats Collector")
-#define fb2kImage() baseImage("fb2k", "Foobar2000 Client")
-#define rokuImage() baseImage("roku", "Roku Streaming Player")
-#define WiiMCImage() baseImage("v1", "Wii Media Centre Player")
-#define synologyImage() baseImage("synology", "Audio Station (Synology) Player")
-#define appleImage() baseImage("apple", "Apple Device / OS / Client")
-#define iTunesImage() baseImage("itunes", "iTunes Client")
-#define wmpImage() baseImage("wmp", "Windows Media Player Client")
-#define chromeImage() baseImage("chrome", "Chrome Web Browser")
-#define safariImage() baseImage("safari", "Safari Web Browser")
-#define ieImage() baseImage("ie", "Internet Explorer Web Browser")
-#define firefoxImage() baseImage("firefox", "Firefox Web Browser")
-
-utf8 advertImage(const streamData::streamID_t sid, const int group, const size_t count)
-{
-	if (streamData::knownAdvertGroup(sid, group))
-	{
-		if (count > 0)
-		{
-			return baseImage("adplayed", (tos(count) + " Advert Breaks Have Been Played\nAdvert Group: " + tos(group)), false, false);
-		}
-		return baseImage("adavail", ("Waiting For First Advert Break To Play\nAdvert Group: " + tos(group)), false, false);
-	}
-	if (count > 0)
-	{
-		return baseImage("", (tos(count) + " Advert Breaks Have Been Played\nNo Applicable "
-						 "Adverts Currently Available\nAdvert Group: " + tos(group)), false, false);
-	}
-
-	return baseImage("noadavail", ("No Applicable Adverts Available\nAdvert Group: " + tos(group)), false, false);
-}
-
-utf8 getClientImage(const streamData::source_t type)
-{
-	return ((type & streamData::RADIONOMY) ? radionomyImage() :
-		   ((type & streamData::FLV) ? flashImage() :
-		   ((type & streamData::CURL_TOOL) ? curlImage() :
-		   ((type & streamData::HTTP) ? html5Image() :
-		   //((type & streamData::M4A) ? m4aImage() :
-		   ((type & streamData::SHOUTCAST2) ? ((type & streamData::RELAY) ? scImage() : waImage()) :
-		   ((type & streamData::ICECAST) ? icecastImage() :
-		   ((type & streamData::VLC) ? vlcImage() :
-		   ((type & streamData::WINAMP) ? waImage() :
-		   ((type & streamData::APPLE) ? appleImage() :
-		   ((type & streamData::ITUNES) ? iTunesImage() :
-		   ((type & streamData::WMP) ? wmpImage() :
-		   ((type & streamData::ROKU) ? rokuImage() :
-		   ((type & streamData::WIIMC) ? WiiMCImage() :
-		   ((type & streamData::SYNOLOGY) ? synologyImage() :
-		   ((type & streamData::CHROME) ? chromeImage() :
-		   ((type & streamData::SAFARI) ? safariImage() :
-		   ((type & streamData::IE) ? ieImage() :
-		   ((type & streamData::FIREFOX) ? firefoxImage() :
-		   ((type & streamData::MPLAYER) ? mplayerImage() :
-		   ((type & streamData::PS) ? psImage() :
-		   ((type & streamData::RADIO_TOOLBOX) ? radioToolboxImage() :
-		   ((type & streamData::HTML5) ? html5Image() :
-		   ((type & streamData::WARNING) ? warningImage() :
-		   ((type & streamData::SC_IRADIO) ? iOSImage() :
-		   ((type & streamData::FB2K) ? fb2kImage() : v1Image()
-		   ))))))))))))))))))))))))) +
-		   ((type & streamData::RELAY) ? relayImage() : "");
-}
-
-/*
-	Handles all HTTP requests to admin.cgi
-*/
-
-protocol_admincgi::protocol_admincgi(const socketOps::tSOCKET s, const streamData::streamID_t sid, const bool no_sid,
-									 const bool zero_sid, const utf8 &clientLogString,
-									 const uniString::utf8 &password, const uniString::utf8 &referer,
-									 const uniString::utf8 &hostIP, const uniString::utf8 &userAgent,
-									 const protocol_HTTPStyle::HTTPRequestInfo &httpRequestInfo) throw(std::exception)
-	: runnable(s), m_noSID(no_sid), m_zeroSID(zero_sid),
-	  m_saveLogFile(0), m_clientLogString(clientLogString),
-	  m_httpRequestInfo(httpRequestInfo), m_password(password),
-	  m_referer(referer), m_hostIP(hostIP), m_userAgent(userAgent),
-	  m_sid(sid), m_state(&protocol_admincgi::state_ConfirmPassword),
-	  m_nextState(0), m_outBuffer(0), m_outBufferSize(0),
-	  m_tailLogFile(false), lastChar(-1), inMsg(false),
-	  first(false), m_logFile(0)
-{
-	memset(&m_stream, 0, sizeof(m_stream));
-
-	// check for updates weekly from the last update
-	// so we're taking into account manual checks...
-	if ((m_lastActivityTime - last_update_check) > 604800)
-	{
-		checkVersion(m_lastActivityTime);
-	}
-
-	DEBUG_LOG(utf8(LOGNAME) + __FUNCTION__);
-}
-
-protocol_admincgi::~protocol_admincgi() throw()
-{
-	DEBUG_LOG(utf8(LOGNAME) + __FUNCTION__);
-
-	socketOps::forgetTCPSocket(m_socket);
-	if (m_logFile)
-	{
-		::fclose(m_logFile);
-		m_logFile = 0;
-	}
-}
-
-void protocol_admincgi::timeSlice() throw(exception)
-{
-	(this->*m_state)();
-}
-
-void protocol_admincgi::state_Close() throw(exception)
-{
-	m_result.done();
-}
-
-// send buffer text
-void protocol_admincgi::state_Send() throw(exception)
-{
-	if (sendDataBuffer(DEFAULT_CLIENT_STREAM_ID, m_outBuffer, m_outBufferSize, m_clientLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_admincgi::sendMessageAndClose(const utf8 &msg) throw()
-{
-	m_outMsg = msg;
-	m_outBuffer = m_outMsg.c_str();
-	bandWidth::updateAmount(bandWidth::PRIVATE_WEB, (m_outBufferSize = (int)m_outMsg.size()));
-	m_state = &protocol_admincgi::state_Send;
-	m_nextState = &protocol_admincgi::state_Close;
-	m_result.write();
-	m_result.run();
-}
-
-/// update the metatdata in the shoutcast ring buffer		
-void protocol_admincgi::state_UpdateMetadata() throw(exception)
-{
-	DEBUG_LOG(utf8(LOGNAME) + __FUNCTION__);
-
-	streamData::streamInfo info;
-	streamData::extraInfo extra;
-	streamData::getStreamInfo(m_sid, info, extra);
-
-	utf8 titleMsg, urlMsg, djMsg, nextMsg;
-
-	if (!m_updinfoSong.empty())
-	{
-		// use this as a way to try to ensure we've got a utf-8
-		// encoded title to improve legacy source title support
-		if (!m_updinfoSong.isValid())
-		{
-			m_updinfoSong = asciiToUtf8(m_updinfoSong.toANSI(true));
-		}
-
-		if (streamData::validateTitle(m_updinfoSong))
-		{
-			titleMsg = ("[ADMINCGI sid=" + tos(m_sid) + "] Title updated [" + m_updinfoSong + "]");
-		}
-		else
-		{
-			WLOG("Title update rejected - value not allowed: " + m_updinfoSong, LOG_NAME, m_sid);
-			m_updinfoSong = info.m_currentSong;
-		}
-	}
-	else
-	{
-		if (!info.m_currentSong.empty())
-		{
-			titleMsg = ("[ADMINCGI sid=" + tos(m_sid) + "] Title cleared");
-		}
-	}
-
-	if (!m_updinfoURL.empty())
-	{
-		urlMsg = ("[ADMINCGI sid=" + tos(m_sid) + "] Song url updated [" + m_updinfoURL + "]");
-	}
-	else
-	{
-		if (!info.m_currentURL.empty())
-		{
-			// TODO if there's a custom image then indicate using it or do not show this
-			urlMsg = ("[ADMINCGI sid=" + tos(m_sid) + "] Song url cleared");
-		}
-	}
-
-	if (!m_updinfoDJ.empty())
-	{
-		djMsg = ("[ADMINCGI sid=" + tos(m_sid) + "] DJ name updated [" + m_updinfoDJ + "]");
-	}
-	else
-	{
-		if (!info.m_streamUser.empty())
-		{
-			djMsg = ("[ADMINCGI sid=" + tos(m_sid) + "] DJ name cleared");
-		}
-	}
-
-	if (!m_updinfoNext.empty())
-	{
-		// use this as a way to try to ensure we've got a utf-8
-		// encoded title to improve legacy source title support
-		if (!m_updinfoNext.isValid())
-		{
-			m_updinfoNext = asciiToUtf8(m_updinfoNext.toANSI(true));
-		}
-
-		if (streamData::validateTitle(m_updinfoNext))
-		{
-			titleMsg = ("[ADMINCGI sid=" + tos(m_sid) + "] Next title updated [" + m_updinfoNext + "]");
-		}
-		else
-		{
-			WLOG("[ADMINCGI sid=" + tos(m_sid) + "] Next title update rejected - value not allowed: " + m_updinfoNext);
-			m_updinfoNext = info.m_comingSoon;
-		}
-	}
-	else
-	{
-		if (!info.m_comingSoon.empty())
-		{
-			nextMsg = ("[ADMINCGI sid=" + tos(m_sid) + "] Next title cleared");
-		}
-	}
-
-	streamData *sd = streamData::accessStream(m_sid);
-	if (sd)
-	{
-		utf8 sourceIdent = (!m_userAgent.empty() ? m_userAgent : utf8("Legacy / Unknown"));
-		sd->updateSourceIdent(sourceIdent, sd->isRelayStream(m_sid));
-		sd->addSc1MetadataAtCurrentPosition(LOGNAME, m_updinfoSong, m_updinfoURL, m_updinfoNext);
-		sd->updateStreamUser(m_updinfoDJ);
-		// this will call streamData::releaseStream(..)
-		streamData::streamClientLost(LOGNAME, sd, m_sid);
-
-		// we'll output any earlier generated messages now that we've sent
-		// the details to be used as otherwise they were being reported as
-		// ok which if there was an issue (e.g. bad sid#) was confusing
-		if (!titleMsg.empty())
-		{
-			ILOG(titleMsg, LOG_NAME, m_sid);
-		}
-		if (!nextMsg.empty())
-		{
-			ILOG(nextMsg, LOG_NAME, m_sid);
-		}
-		if (!urlMsg.empty())
-		{
-			ILOG(urlMsg, LOG_NAME, m_sid);
-		}
-		if (!djMsg.empty())
-		{
-			ILOG(djMsg, LOG_NAME, m_sid);
-		}
-	}
-	else
-	{
-		WLOG("[ADMINCGI sid=" + tos(m_sid) + "] Metadata update rejected as the stream does not exist", LOG_NAME, m_sid);
-	}
-
-	m_updinfoSong.clear();
-	m_updinfoURL.clear();
-	m_updinfoDJ.clear();
-
-	sendMessageAndClose(MSG_200);
-}
-
-/// update the metatdata in the shoutcast ring buffer		
-void protocol_admincgi::state_UpdateXMLMetadata() throw(exception)
-{
-	DEBUG_LOG(utf8(LOGNAME) + __FUNCTION__);
-
-	if (!m_updinfoSong.empty())
-	{
-		ILOG("XML title update [" + m_updinfoSong + "]", LOG_NAME, m_sid);
-		streamData *sd = streamData::accessStream(m_sid);
-		if (sd)
-		{
-			vector<__uint8> assembledData;
-			assembledData.insert(assembledData.end(), m_updinfoSong.begin(), m_updinfoSong.end());
-			utf8 sourceIdent = (!m_userAgent.empty() ? m_userAgent : utf8("Legacy / Unknown"));
-			sd->updateSourceIdent(sourceIdent);
-			sd->addUvoxMetadataAtCurrentPosition(MSG_METADATA_XML_NEW, assembledData);
-			// this will call streamData::releaseStream(..)
-			streamData::streamClientLost(LOGNAME, sd, m_sid);
-		}
-		else
-		{
-			WLOG("XML title update rejected as stream #" + tos(m_sid) + " does not exist", LOG_NAME, m_sid);
-		}
-		m_updinfoSong.clear();
-		m_updinfoURL.clear();
-	}
-
-	sendMessageAndClose(MSG_200);
-}
-
-void protocol_admincgi::state_ConfirmPassword() throw(std::exception)
-{
-	DEBUG_LOG(utf8(LOGNAME) + __FUNCTION__);
-
-	// this will see if we've been refered from the base admin.cgi and will allow through
-	// if the password / auth matches with the key admin account so the page is useable.
-	utf8::size_type pos;
-	if ((pos = m_referer.rfind(utf8("admin.cgi"))) != utf8::npos)
-	{
-		m_referer = m_referer.substr(pos);
-	}
-
-	const utf8& mode = mapGet(m_httpRequestInfo.m_QueryParameters, "mode", (utf8)"");
-	const bool updinfo = (mode == "updinfo");
-	const bool viewxml = (mode == "viewxml");
-	const bool viewjson = (mode == "viewjson");
-	const bool _register = (mode == "register");
-
-	// on the root admin summary page we can only allow referer admin through if looking at the stats
-	const bool adminRefer = (m_referer.find(utf8("admin.cgi")) == 0 || m_referer.find(utf8("admin.cgi?sid=0")) == 0);
-	int okReferer = (adminRefer && (viewxml || viewjson || _register));
-
-	// on the root admin summary page we can check if it's an authhash action and allow
-	// through if things match up + also allow updinfo (not ideal but maintains legacy)
-	if ((!okReferer && ((mode == "manualauthhash") || _register)) || updinfo)
-	{
-		if (!m_referer.empty())
-		{
-			okReferer = (m_referer.find(utf8("admin.cgi?sid=" + tos(m_sid) + "&mode=")) != utf8::npos);
-		}
-	}
-
-	DEBUG_LOG(LOGNAME "Referrer status: " + tos(okReferer));
-
-	// fixed in Build 18 to revert to the master passwords if there's nothing for the stream
-	utf8 streamPassword = gOptions.stream_password(m_sid);
-	if (!gOptions.read_stream_password(m_sid) && streamPassword.empty())
-	{
-		streamPassword = gOptions.password();
-	}
-
-	utf8 streamAdminPassword = gOptions.stream_adminPassword(m_sid);
-	if (!gOptions.read_stream_adminPassword(m_sid) && streamAdminPassword.empty())
-	{
-		streamAdminPassword = gOptions.adminPassword();
-	}
-
-	// this is so we can allow source password connections access to the
-	// mode=viewxml&page=1 (/stats) and mode=viewxml&page=4 (/played) so
-	// we maintain compatibility with 1.x DNAS which only had these ones
-	int page = 0;
-	bool compat_mode = false;
-	if (viewxml || viewjson)
-	{
-		page = mapGet(m_httpRequestInfo.m_QueryParameters, "page", (int)page);
-		// this will act like /stats or / played (or both
-		// if page=0)so as to better emulate the 1.x DNAS
-		if ((page == 0) || (page == 1) || (page == 4))
-		{
-			compat_mode = true;
-		}
-	}
-
-	bool proceed = (((!streamPassword.empty() && (updinfo || compat_mode) && (m_password == streamPassword)) ||
-					(!streamAdminPassword.empty() && (m_password == streamAdminPassword)) ||
-					(!gOptions.adminPassword().empty() && (m_password == gOptions.adminPassword()))));
-
-	DEBUG_LOG(LOGNAME "Password status: " + tos(proceed));
-
-	if (proceed)
-	{
-		const streamData::streamID_t this_sid = (m_zeroSID || m_noSID ? 0 : m_sid);
-		const utf8& p1 = mapGet(m_httpRequestInfo.m_QueryParameters, mode, (utf8)"");
-		DEBUG_LOG(LOGNAME "Requested mode: " + (!mode.empty() ? mode : "Not Specified"));
-		if (updinfo)
-		{
-			m_updinfoSong = stripWhitespace(mapGet(m_httpRequestInfo.m_QueryParameters, "song", (utf8)""));
-			m_updinfoURL = stripWhitespace(mapGet(m_httpRequestInfo.m_QueryParameters, "url", (utf8)""));
-			m_updinfoDJ = stripWhitespace(mapGet(m_httpRequestInfo.m_QueryParameters, "dj", (utf8)""));
-			m_updinfoNext = stripWhitespace(mapGet(m_httpRequestInfo.m_QueryParameters, "next", (utf8)""));
-			m_state = ((m_updinfoSong.find(utf8("<?xml ")) != utf8::npos) ? &protocol_admincgi::state_UpdateXMLMetadata : &protocol_admincgi::state_UpdateMetadata);
-			m_result.run();
-		}
-		else if (viewxml)
-		{
-			if (m_noSID)
-			{
-				sendMessageAndClose(redirect("index.html", SHRINK));
-			}
-			else
-			{
-				const bool iponly = mapGet(m_httpRequestInfo.m_QueryParameters, "iponly", (bool)false);
-				const bool ipcount = mapGet(m_httpRequestInfo.m_QueryParameters, "ipcount", (bool)false);
-				mode_viewxml(m_sid, page, iponly, ipcount);
-			}
-		}
-		else if (viewjson)
-		{
-			if (m_noSID)
-			{
-				sendMessageAndClose(redirect("index.html", SHRINK));
-			}
-			else
-			{
-				const bool iponly = mapGet(m_httpRequestInfo.m_QueryParameters, "iponly", (bool)false);
-				const bool ipcount = mapGet(m_httpRequestInfo.m_QueryParameters, "ipcount", (bool)false);
-				const utf8 &callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-				mode_viewjson(m_sid, page, iponly, ipcount, callback);
-			}
-		}
-		else if (_register)
-		{
-			if (m_noSID)
-			{
-				// do a sanity check so that we're only accessing this with the true adminpassword
-				if (m_zeroSID)
-				{
-					mode_summary(0);
-				}
-				// not matching the master password so show the simple summary
-				else
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-			}
-			else
-			{
-				// see if connected otherwise block any access to the pages
-				bool connected = false;
-				if (p1 == "clear")
-				{
-					bool handled = false, idHandled = false;
-					// if we get a clear then just remove from the config and reload the page
-					if (gOptions.editConfigFileEntry(m_sid, gOptions.confFile(), "", "",
-													 true, handled, idHandled, true) == false)
-					{
-						handled = false;
-					}
-					// now attempt to update internal states as appropriate if all went ok
-					if (handled == true)
-					{
-						gOptions.setOption(utf8("streamauthhash_" + tos(m_sid)), (utf8)"");
-						streamData *sd = streamData::accessStream(m_sid);
-						if (sd)
-						{
-							sd->streamUpdate(m_sid, (utf8)"", sd->streamMaxUser(),
-											 sd->streamMaxBitrate(), sd->streamMinBitrate());
-							sd->releaseStream();
-						}
-					}
-				}
-				else
-				{
-					connected = true;
-
-					// sanity checks to ensure that we're not re-adding when there is one, etc
-					streamData::streamInfo info;
-					streamData::extraInfo extra;
-					if (!streamData::getStreamInfo(m_sid, info, extra))
-					{
-						info.m_authHash = gOptions.stream_authHash(m_sid);
-					}
-
-					if (connected == true || extra.isRelay)
-					{
-						mode_register(m_sid, info);
-					}
-				}
-
-				if (connected == false)
-				{
-					sendMessageAndClose(redirect("admin.cgi?sid=" + tos(this_sid), SHRINK));
-				}
-			}
-		}
-		else if (mode == "listeners")
-		{
-			mode_listeners(this_sid);
-		}
-		else if (mode == "kicksrc")
-		{
-			if (m_noSID)
-			{
-				if (adminRefer)
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-			else
-			{
-				// kick source off system
-				streamData::killStreamSource(m_sid);
-
-				if (!m_referer.empty())
-				{
-					utf8 check = ("admin.cgi?sid=" + tos(m_sid));
-					// if the referer is the server summary page then we need to go back to it
-					sendMessageAndClose(redirect((m_referer == check ? check : "admin.cgi?sid=0"), SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-		}
-		else if (mode == "kickdst" && (!p1.empty()))
-		{
-			if (m_noSID)
-			{
-				if (adminRefer)
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-			else
-			{
-				mode_kickdst(m_sid, p1);
-			}
-		}
-		else if (mode == "viewban")
-		{
-			mode_viewban(this_sid);
-		}
-		else if (mode == "bandst" && (!p1.empty()))
-		{
-			const int mask = mapGet(m_httpRequestInfo.m_QueryParameters, "banmsk", (int)255);
-			mode_ban(this_sid, p1, mask);
-		}
-		else if (mode == "banip")
-		{
-			const utf8 &ip1 = mapGet(m_httpRequestInfo.m_QueryParameters, "ip1", (utf8)""),
-					   &ip2 = mapGet(m_httpRequestInfo.m_QueryParameters, "ip2", (utf8)""),
-					   &ip3 = mapGet(m_httpRequestInfo.m_QueryParameters, "ip3", (utf8)""),
-					   &ip4 = mapGet(m_httpRequestInfo.m_QueryParameters, "ip4", (utf8)""),
-					   &mask = mapGet(m_httpRequestInfo.m_QueryParameters, "banmsk", (utf8)"");
-			if (ip1.empty() || ip2.empty() || ip3.empty() || ip4.empty() || mask.empty())
-			{
-				if ((m_referer != utf8("admin.cgi?sid=" + tos(this_sid) + "&mode=viewban")) &&
-					(m_referer != utf8("admin.cgi?mode=viewban")))
-				{
-					sendMessageAndClose(MSG_STD200 + utf8(!HEAD_REQUEST ? "<html><head>"
-										"<title>Shoutcast Server</title></head><body>"
-										"Invalid resource</body></html>" : ""));
-				}
-				else
-				{
-					if (!m_referer.empty())
-					{
-						sendMessageAndClose(redirect("admin.cgi?sid=" + tos(this_sid) + "&mode=viewban", SHRINK));
-					}
-					else
-					{
-						sendMessageAndClose(MSG_200);
-					}
-				}
-			}
-			else
-			{
-				mode_ban(this_sid, (ip1 + "." + ip2 + "." + ip3 + "." + ip4), strtol((const char *)mask.c_str(),0,10));
-			}
-		}
-		else if (mode == "unbandst")
-		{
-			const utf8 &ip = mapGet(m_httpRequestInfo.m_QueryParameters, "bandst", (utf8)""),
-					   &mask = mapGet(m_httpRequestInfo.m_QueryParameters, "banmsk", (utf8)"");
-			if (ip.empty() || mask.empty())
-			{
-				if ((m_referer != utf8("admin.cgi?sid=" + tos(this_sid) + "&mode=viewban")) &&
-					(m_referer != utf8("admin.cgi?mode=viewban")))
-				{
-					sendMessageAndClose(MSG_STD200 + utf8(!HEAD_REQUEST ? "<html><head>"
-										"<title>Shoutcast Server</title></head><body>"
-										"Invalid resource</body></html>" : ""));
-				}
-				else
-				{
-					if (!m_referer.empty())
-					{
-						sendMessageAndClose(redirect("admin.cgi?sid=" + tos(this_sid) + "&mode=viewban", SHRINK));
-					}
-					else
-					{
-						sendMessageAndClose(MSG_200);
-					}
-				}
-			}
-			else
-			{
-				mode_unban(this_sid, ip, strtol((const char *)mask.c_str(), 0, 10));
-			}
-		}
-		else if (mode == "viewrip")
-		{
-			mode_viewrip(this_sid);
-		}
-		else if (mode == "ripip")
-		{
-			const utf8 &ip1 = mapGet(m_httpRequestInfo.m_QueryParameters, "ip1", (utf8)""),
-					   &ip2 = mapGet(m_httpRequestInfo.m_QueryParameters, "ip2", (utf8)""),
-					   &ip3 = mapGet(m_httpRequestInfo.m_QueryParameters, "ip3", (utf8)""),
-					   &ip4 = mapGet(m_httpRequestInfo.m_QueryParameters, "ip4", (utf8)"");
-			if (ip1.empty() || ip2.empty() || ip3.empty() || ip4.empty())
-			{
-				// see if we've got a host add attempt and handle as appropriately
-				if (m_hostIP.empty())
-				{
-					if ((m_referer != utf8("admin.cgi?sid=" + tos(m_sid) + "&mode=viewrip")) &&
-						(m_referer != utf8("admin.cgi?mode=viewrip")))
-					{
-						sendMessageAndClose(MSG_STD200 + utf8(!HEAD_REQUEST ? "<html><head>"
-											"<title>Shoutcast Server</title></head><body>"
-											"Invalid resource</body></html>" : ""));
-					}
-					else
-					{
-						if (!m_referer.empty())
-						{
-							sendMessageAndClose(redirect("admin.cgi?sid=" + tos(m_sid) + "&mode=viewrip", SHRINK));
-						}
-						else
-						{
-							sendMessageAndClose(MSG_200);
-						}
-					}
-				}
-				else
-				{
-					const utf8 &raw = mapGet(m_httpRequestInfo.m_QueryParameters, "ripdstraw", (utf8)"");
-					mode_rip(this_sid, m_hostIP, raw);
-				}
-			}
-			else
-			{
-				const utf8 &raw = mapGet(m_httpRequestInfo.m_QueryParameters, "ripdstraw", (utf8)"");
-				mode_rip(this_sid, (ip1 + "." + ip2 + "." + ip3 + "." + ip4), raw);
-			}
-		}
-		else if (mode == "unripdst")
-		{
-			const utf8 &ip = mapGet(m_httpRequestInfo.m_QueryParameters, "ripdst", (utf8)""),
-					   &raw = mapGet(m_httpRequestInfo.m_QueryParameters, "ripdstraw", (utf8)"");
-			if (!isAddress(ip))
-			{
-				if ((m_referer != utf8("admin.cgi?sid=" + tos(m_sid) + "&mode=viewrip")) &&
-					(m_referer != utf8("admin.cgi?mode=viewrip")))
-				{
-					sendMessageAndClose(MSG_STD200 + utf8(!HEAD_REQUEST ? "<html><head>"
-										"<title>Shoutcast Server</title></head><body>"
-										"Invalid resource</body></html>" : ""));
-				}
-				else
-				{
-					if (!m_referer.empty())
-					{
-						sendMessageAndClose(redirect("admin.cgi?sid=" + tos(m_sid) + "&mode=viewrip", SHRINK));
-					}
-					else
-					{
-						sendMessageAndClose(MSG_200);
-					}
-				}
-			}
-			else
-			{
-				mode_unrip(this_sid, ip, raw);
-			}
-		}
-		else if (mode == "ripdst" && (!p1.empty()))
-		{
-			const utf8 &raw = mapGet(m_httpRequestInfo.m_QueryParameters, "ripdstraw", (utf8)"");
-			mode_rip(this_sid, p1, raw);
-		}
-		else if (mode == "viewagent")
-		{
-			mode_viewagent(this_sid);
-		}
-		else if (mode == "unagent")
-		{
-			const utf8 &agent = mapGet(m_httpRequestInfo.m_QueryParameters, "agent", (utf8)"");
-			if (agent.empty())
-			{
-				if ((m_referer != utf8("admin.cgi?sid=" + tos(m_sid) + "&mode=viewagent")) &&
-					(m_referer != utf8("admin.cgi?mode=viewagent")))
-				{
-					sendMessageAndClose(MSG_STD200 + utf8(!HEAD_REQUEST ? "<html><head>"
-										"<title>Shoutcast Server</title></head><body>"
-										"Invalid resource</body></html>" : ""));
-				}
-				else
-				{
-					sendMessageAndClose(redirect("admin.cgi?sid=" + tos(m_sid) + "&mode=viewagent", SHRINK));
-				}
-			}
-			else
-			{
-				mode_unagent(this_sid, agent);
-			}
-		}
-		else if (mode == "agent")
-		{
-			const utf8 &agent = mapGet(m_httpRequestInfo.m_QueryParameters, "agent", (utf8)"");
-			mode_agent(this_sid, agent);
-		}
-		else if (mode == "resetxml")
-		{
-			if (m_noSID)
-			{
-				if (adminRefer)
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-			else
-			{
-				stats::resetStats(m_sid);
-				if (!m_referer.empty())
-				{
-					sendMessageAndClose(redirect("admin.cgi?sid=" + tos(m_sid), SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-		}
-		else if (mode == "clearcache")
-		{
-			// TODO consider clearing out the intro / backup files as ell as part of this...
-
-			// clear out all cached resource copies
-			gOptions.m_crossdomainStr.clear();
-			gOptions.m_crossdomainStrGZ.clear();
-			gOptions.m_shoutcastSWFStr.clear();
-			gOptions.m_shoutcastSWFStrGZ.clear();
-			gOptions.m_robotsTxtBody.clear();
-			gOptions.m_robotsTxtBodyGZ.clear();
-
-			gOptions.m_faviconBody.clear();
-			gOptions.m_faviconBodyGZ.clear();
-			gOptions.m_favIconTime = 0;
-
-			gOptions.m_styleCustomStr.clear();
-			gOptions.m_styleCustomStrGZ.clear();
-			gOptions.m_styleCustomHeaderTime = 0;
-
-			DeleteAllCaches();
-
-			last_update_check = 0;
-
-			ILOG(LOGNAME "Cleared resource cache(s).");
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect("admin.cgi", SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if (mode == "bannedlist")
-		{
-			reloadBanLists();
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect("admin.cgi", SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if (mode == "reservelist")
-		{
-			reloadRipLists();
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect("admin.cgi", SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if (mode == "adminlist")
-		{
-			reloadAdminAccessList();
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect("admin.cgi", SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if (mode == "useragentlist")
-		{
-			reloadAgentLists();
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect("admin.cgi", SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if (mode == "reload")
-		{
-			const int force = mapGet(m_httpRequestInfo.m_QueryParameters, "force", (int)0);
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect((reloadConfig(force) == true ? "admin.cgi?sid=0&refresh=3" : "admin.cgi?sid=0"), SHRINK));
-			}
-			else
-			{
-				reloadConfig(force);
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if (mode == "viewlog")
-		{
-			if (m_noSID)
-			{
-				const utf8 &server = mapGet(m_httpRequestInfo.m_QueryParameters, "server", (utf8)"");
-				if (!server.empty() && ((server == logId) || (server == logTailId)))
-				{
-					mode_viewlog(m_sid, (p1 == "tail"), (p1 == "save"), true);
-				}
-				else
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-			}
-			else
-			{
-				mode_viewlog(m_sid, (p1 == "tail"), (p1 == "save"), false);
-			}
-		}
-		else if (mode == "history")
-		{
-			if (m_noSID)
-			{
-				if (adminRefer)
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-			else
-			{
-				const utf8 &type = mapGet(m_httpRequestInfo.m_QueryParameters, "type", (utf8)"");
-				const bool json = (type == "json"), xml = (type == "xml");
-				if (!json && !xml)
-				{
-					mode_history(m_sid);
-				}
-				else
-				{
-					utf8 header, body;
-					if (json)
-					{
-						const utf8& callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-						body = protocol_HTTPStyle::getPlayedJSON(m_sid, header, callback, true);
-					}
-					else
-					{
-						body = protocol_HTTPStyle::getPlayedXML(m_sid, header, true);
-					}
-					COMPRESS(header, body);
-					header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-					sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-				}
-			}
-		}
-		else if (mode == "art")
-		{
-			if (m_noSID)
-			{
-				if (adminRefer)
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-			else
-			{
-				mode_art(m_sid, (p1 == "playing"));
-			}
-		}
-		else if (mode == "manualauthhash")
-		{
-			bool handled = false;
-			const utf8 &authhash = mapGet(m_httpRequestInfo.m_QueryParameters, "authhash", (utf8)"");
-			// make sure that we're only allow valid values
-			if (authhash.empty() || yp2::isValidAuthhash(authhash))
-			{
-				bool idHandled = false;
-				if (gOptions.editConfigFileEntry(m_sid, gOptions.confFile(), authhash, "",
-												 true, handled, idHandled, true) == false)
-				{
-					handled = false;
-				}
-
-				// changed in b69 to force the change through even if there is a config saving issue
-				// as there are cases where the authhash is gone but only updating on success would
-				// end up in the inability to start things over again e.g. with CentroCast v3 quirks
-				gOptions.setOption(utf8("streamauthhash_" + tos(m_sid)), authhash);
-			}
-
-			streamData *sd = streamData::accessStream(m_sid);
-			if (sd)
-			{
-				if (sd->isSourceConnected(m_sid))
-				{
-					utf8 oldAuthhash = sd->streamAuthhash();
-					sd->streamUpdate(m_sid, authhash, sd->streamMaxUser(),
-									 sd->streamMaxBitrate(), sd->streamMinBitrate());
-
-					ILOG(gOptions.logSectionName() + "Changed authhash for stream #" +
-						 tos(m_sid) + " to " + (authhash.empty() ? "empty" : authhash) +
-						 " [was " + (oldAuthhash.empty() ? "empty" : oldAuthhash) + "]");
-				}
-				sd->releaseStream();
-			}
-
-			// now attempt to update internal states as appropriate if all went ok
-			if (handled == true)
-			{
-				sendMessageAndClose("HTTP/1.1 200 OK\r\n"
-									"Content-Type:text/plain\r\n"
-									"Content-Length:5\r\n"
-									"Cache-Control:no-cache\r\n"
-									"Access-Control-Allow-Origin:*\r\n"
-									"Connection:close\r\n\r\n200\r\n");
-			}
-			else
-			{
-				utf8 message = "Error saving changes to the configuration file.<br>"
-							   "Check that you have write access and the<br>"
-							   "specified configuration file still exists.<br><br>"
-							   "The requested authhash change was applied.";
-				utf8 header = "HTTP/1.1 667\r\n"
-							  "Content-Type:text/plain\r\n"
-							  "Access-Control-Allow-Origin:*\r\n"
-							  "Connection:close\r\n";
-				COMPRESS(header, message);
-				header += "Content-Length:" + tos(message.size()) + "\r\n\r\n";
-				sendMessageAndClose(header + (!HEAD_REQUEST ? message : ""));
-			}
-		}
-		else if (mode == "rotate")
-		{
-			const utf8 &files = mapGet(m_httpRequestInfo.m_QueryParameters, "files", (utf8)""),
-					   &rotateType = (!(files == "log" || files == "w3c") ? "all " : (files == "log" ? "": "W3C "));
-			ILOG(LOGNAME "Rotating " + rotateType + "log file(s)");
-
-			if ((files == "log") || (files == ""))
-			{
-				ROTATE;
-				printUpdateMessage();
-				if (m_logFile)
-				{
-					::fclose(m_logFile);
-					m_logFile = 0;
-				}
-			}
-
-			// and now rotate the w3c logs (going upto the configured number of old copies to be like the log rotate)
-			rotatew3cFiles(files);
-
-			ILOG(LOGNAME "Rotated " + rotateType + "log file(s) [PID: " + tos(getpid()) + "]");
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect("admin.cgi", SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if (mode == "startrelay")
-		{
-			if (m_noSID)
-			{
-				if (adminRefer)
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-			else
-			{
-				// only attempt a source relay connection if it is not signaled
-				// as active or pending to prevent multiple attempts being run.
-				bool noEntry = false, active = (streamData::isRelayActive(m_sid, noEntry) == 1);
-				if (!active)
-				{
-					config::streamConfig stream;
-					if (gOptions.getStreamConfig(stream, m_sid))
-					{
-						restartRelay(stream);
-					}
-				}
-
-				if (!m_referer.empty())
-				{
-					utf8 check = ("admin.cgi?sid=" + tos(m_sid));
-					// if the referer is the server summary page then we need to go back to it
-					sendMessageAndClose(redirect((m_referer == check ? check : "admin.cgi?sid=0") +
-										(!active ? "&refresh=3" : ""), SHRINK));
-				}
-				else
-				{
-					sendMessageAndClose(MSG_200);
-				}
-			}
-		}
-		else if (mode == "startrelays")
-		{
-			bool refresh = false;
-			config::streams_t streams;
-			gOptions.getStreamConfigs(streams);
-			for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-			{
-				if (!(*i).second.m_relayUrl.url().empty() && !streamData::isSourceConnected((*i).first))
-				{
-					// only attempt a source relay connection if it is not signaled
-					// as active or pending to prevent multiple attempts being run.
-					bool noEntry = false, active = (streamData::isRelayActive((*i).first, noEntry) == 1);
-					if (!active)
-					{
-						ILOG(gOptions.logSectionName() + "Starting source for stream #" + tos((*i).first) + ".");
-						restartRelay((*i).second);
-						refresh = true;
-					}
-				}
-			}
-
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect("admin.cgi?sid=0" + (refresh ? "&refresh=3" : (utf8)""), SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if (mode == "kicksources")
-		{
-			bool refresh = false;
-			streamData::streamIDs_t streamIds = streamData::getStreamIds(true);
-			if (!streamIds.empty())
-			{
-				for (streamData::streamIDs_t::const_iterator i = streamIds.begin(); i != streamIds.end(); ++i)
-				{
-					// kick source off system
-					streamData::killStreamSource((*i));
-					refresh = true;
-				}
-			}
-
-			if (adminRefer)
-			{
-				sendMessageAndClose(redirect("admin.cgi?sid=0" + (refresh ? "&refresh=1" : (utf8)""), SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else if(mode == "bandwidth")
-		{
-			const utf8 &type = mapGet(m_httpRequestInfo.m_QueryParameters, "type", (utf8)"");
-			const bool json = (type == "json"), xml = (type == "xml");
-
-			if (!json && !xml)
-			{
-				const int refresh = mapGet(m_httpRequestInfo.m_QueryParameters, "refresh", 0);
-				mode_bandwidth_html(refresh);
-			}
-			else
-			{
-				if (json)
-				{
-					const utf8 &callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-					mode_bandwidth_json(callback);
-				}
-				else
-				{
-					mode_bandwidth_xml();
-				}
-			}
-		}
-		else if (mode == "ypstatus")
-		{
-			const utf8 &type = mapGet(m_httpRequestInfo.m_QueryParameters, "type", (utf8)"");
-			if ((type == "json"))
-			{
-				const utf8 &callback = mapGet(m_httpRequestInfo.m_QueryParameters, "callback", (utf8)"");
-				mode_ypstatus_json(callback);
-			}
-			else
-			{
-				mode_ypstatus_xml();
-			}
-		}
-		else if (mode == "sources")
-		{
-			mode_sources(m_hostIP);
-		}
-		else if (mode == "adgroups")
-		{
-			mode_adgroups();
-		}
-		else if (mode == "debug")
-		{
-			const utf8 &option = mapGet(m_httpRequestInfo.m_QueryParameters, "option", (utf8)"");
-			if (!option.empty() && !adminRefer)
-			{
-				// prevent direct access to being able to edit this
-				// and force a redirection to the non-param version
-				sendMessageAndClose(redirect("admin.cgi?mode=debug", SHRINK));
-				return;
-			}
-
-			const utf8 &on_off = mapGet(m_httpRequestInfo.m_QueryParameters, "on", (utf8)"");
-			mode_debug(option, (on_off == "true"), adminRefer);
-		}
-		else if (mode == "help")
-		{
-			mode_help();
-		}
-		else if (mode == "config")
-		{
-			mode_config();
-		}
-#if 0
-		else if (mode == "logs")
-		{
-			mode_logs(result);
-		}
-#endif
-		else if (mode == "version")
-		{
-			// only allow from the admin page to avoid possible spamming sttempts
-			if (adminRefer)
-			{
-				checkVersion(m_lastActivityTime);
-				sendMessageAndClose(redirect("admin.cgi?sid=0&refresh=-3", SHRINK));
-			}
-			else
-			{
-				sendMessageAndClose(MSG_200);
-			}
-		}
-		else
-		{
-			if (m_noSID)
-			{
-				// do a sanity check so that we're only accessing this with the true adminpassword
-				if (m_zeroSID)
-				{
-					mode_summary(mapGet(m_httpRequestInfo.m_QueryParameters, "refresh", 0));
-				}
-				// not matching the master password so show the simple summary
-				else
-				{
-					sendMessageAndClose(redirect("index.html", SHRINK));
-				}
-			}
-			else
-			{
-				const int refresh = mapGet(m_httpRequestInfo.m_QueryParameters, "refresh", 0);
-				mode_none(m_sid, refresh);
-			}
-		}
-	}
-	else
-	{
-		sendMessageAndClose(MSG_AUTHFAILURE401 + utf8(!HEAD_REQUEST ?
-							"<html><head>Unauthorized<title>Shoutcast "
-							"Administrator</title></head></html>" : ""));
-	}
-}
-
-void protocol_admincgi::state_SendFileHeader() throw(std::exception)
-{
-	if ((!m_saveLogFile && SHRINK) &&
-		compressDataStart(m_logFileBodyPrefix, &m_stream, (Bytef*)"sc_serv.log\0", false))
-	{
-		m_logFileHeader += "Content-Encoding:gzip\r\n";
-	}
-	m_logFileHeader += "\r\n";
-
-	m_outMsg = m_logFileHeader + (!m_saveLogFile ? tohex(m_logFileBodyPrefix.size()) + "\r\n" + m_logFileBodyPrefix + "\r\n" : "");
-	m_outBuffer = m_outMsg.c_str();
-	bandWidth::updateAmount(bandWidth::PRIVATE_WEB, (m_outBufferSize = (int)m_outMsg.size()));
-	m_state = &protocol_admincgi::state_Send;
-	m_nextState = &protocol_admincgi::state_SendFileContents;
-	m_result.write();
-
-	if (m_tailLogFile)
-	{
-		m_result.read(fileno(m_logFile));
-	}
-}
-
-void protocol_admincgi::state_SendFileFooter() throw(std::exception)
-{
-	if (SHRINK)
-	{
-		compressDataCont(m_logFileBodyFooter, &m_stream);
-	}
-	m_logFileBodyFooter = tohex(m_logFileBodyFooter.size()) + "\r\n" + m_logFileBodyFooter + "\r\n";
-	m_outBuffer = m_logFileBodyFooter.c_str();
-	bandWidth::updateAmount(bandWidth::PRIVATE_WEB, (m_outBufferSize = (int)m_logFileBodyFooter.size()));
-	m_state = &protocol_admincgi::state_Send;
-	m_nextState = &protocol_admincgi::state_SendFileEnd;
-	m_result.write();
-}
-
-void protocol_admincgi::state_SendFileEnd() throw(std::exception)
-{
-	strncpy((char*)&(m_logFileBuffer[0]), "0\r\n\r\n", 1024);
-	m_outBuffer = &(m_logFileBuffer[0]);
-	m_outBufferSize = 5;
-	m_nextState = &protocol_admincgi::state_Close;
-	bandWidth::updateAmount(bandWidth::PRIVATE_WEB, m_outBufferSize);
-	compressDataEnd(&m_stream);
-
-	m_state = &protocol_admincgi::state_Send;
-	m_nextState = &protocol_admincgi::state_Close;
-	m_result.write();
-}
-
-// this will only be receiving an already converted
-// string so no need to do the commented part again
-utf8 protocol_admincgi::escapeText(const std::vector<uniString::utf8::value_type> &s) throw()
-{
-	utf8 result;
-	result.resize(0);
-	bool inHead = false;
-	int headCount = 0;
-	const size_t amt = s.size();
-
-	for (size_t x = 0; x < amt; ++x)
-	{
-		if ((s[x] == '*') && (((x + 1) < amt) && (s[x + 1] == '*')))
-		{
-			inHead = true;
-		}
-		else if (s[x] == '\n')
-		{
-			if (!inHead)
-			{
-				if ((((x + 1) < amt) && isdigit(s[x + 1])))
-				{
-					if (inMsg)
-					{
-						result += "</b>";
-					}
-					result += "\n";
-					inMsg = false;
-				}
-				else
-				{
-					if (((x + 1) == amt))
-					{
-						if (inMsg)
-						{
-							result += "</b>";
-						}
-						result += "\n";
-						inMsg = false;
-					}
-					else
-					{
-						result += "\n\t\t\t";
-					}
-				}
-			}
-			else
-			{
-				++headCount;
-			}
-		}
-		else if ((s[x] == 'D') &&
-				(((x > 0) && (s[x - 1] == '\t')) ||
-				(!x && (lastChar == '\t'))))
-		{
-			result += "<b class=\"d\">D";
-			inMsg = true;
-		}
-		else if ((s[x] == 'E') &&
-				(((x > 0) && (s[x - 1] == '\t')) ||
-				(!x && (lastChar == '\t'))))
-		{
-			result += "<b class=\"e\">E";
-			inMsg = true;
-		}
-		else if ((s[x] == 'W') &&
-				(((x > 0) && (s[x - 1] == '\t')) ||
-				(!x && (lastChar == '\t'))))
-		{
-			result += "<b class=\"w\">W";
-			inMsg = true;
-		}
-		else if ((s[x] == 'U') &&
-				(((x > 0) && (s[x-1] == '\t')) ||
-				(!x && (lastChar == '\t'))))
-		{
-			result += "<b class=\"u\">U";
-			inMsg = true;
-		}
-		else if ((s[x] == 'I') &&
-				(((x > 0) && (s[x-1] == '\t')) ||
-				(!x && (lastChar == '\t'))))
-		{
-			if (!inHead)
-			{
-				result += "<b class=\"i\">I";
-				inMsg = true;
-			}
-		}
-		else
-		{
-			if (!inHead)
-			{
-				if (s[x] == '<')
-				{
-					result += "&lt;";
-				}
-				else if (s[x] == '>')
-				{
-					result += "&gt;";
-				}
-				else if (s[x] == '&')
-				{
-					result += "&amp;";
-				}
-				else if (s[x] == '\'')
-				{
-					result += "&apos;";
-				}
-				else if (s[x] == '"')
-				{
-					result += "&quot;";
-				}
-				else
-				{
-					result += s[x];
-				}
-			}
-			else
-			{
-				if (inHead && (headCount > 3) && (s[x] == '\t'))
-				{
-					inHead = false;
-					headCount = 0;
-					x += 5;
-				}
-			}
-		}
-		if (!s[x])
-		{
-			break;
-		}
-	}
-
-	lastChar = s[amt - 1];
-	return result;
-}
-
-void protocol_admincgi::state_SendFileContents() throw(std::exception)
-{
-	m_logFileBuffer.clear();
-	m_logFileBuffer.resize(SEND_SIZE);
-	const size_t amt = fread(&(m_logFileBuffer[0]), 1, (SEND_SIZE - 1), m_logFile);
-	if (amt > 0)
-	{
-		static utf8 out;
-		out.clear();
-
-		if (!m_saveLogFile)
-		{
-			m_logFileBuffer.resize(amt);
-			out = escapeText(m_logFileBuffer);
-		}
-		else
-		{
-			out = utf8(&(m_logFileBuffer[0]), amt);
-		}
-
-		if (!out.empty())
-		{
-			if (m_saveLogFile || (SHRINK))
-			{
-				if (m_saveLogFile == 1)
-				{
-					if (compressDataStart(out, &m_stream, (Bytef*)m_logFileName.c_str()))
-					{
-						m_saveLogFile = 2;
-					}
-				}
-				else
-				{
-					compressDataCont(out, &m_stream);
-				}
-			}
-			out = tohex(out.size()) + "\r\n" + out + "\r\n";
-			m_outBuffer = out.c_str();
-			bandWidth::updateAmount(bandWidth::PRIVATE_WEB, (m_outBufferSize = (int)out.size()));
-			m_nextState = &protocol_admincgi::state_SendFileContents;
-		}
-		else
-		{
-			m_nextState = (m_saveLogFile ? &protocol_admincgi::state_SendFileEnd : &protocol_admincgi::state_SendFileFooter);
-		}
-
-		m_state = &protocol_admincgi::state_Send;
-		m_result.write();
-
-		if (m_tailLogFile)
-		{
-			m_result.timeout(1);
-			m_result.read(fileno(m_logFile));
-		}
-	}
-	else if (ferror(m_logFile) || !m_logFile)
-	{
-		m_state = &protocol_admincgi::state_Close;
-		m_result.run();
-	}
-	else if (feof(m_logFile) && (!m_tailLogFile))
-	{
-		if (m_saveLogFile)
-		{
-			static utf8 out;
-			out.clear();
-			compressDataFinish(out, &m_stream);
-			out = tohex(out.size()) + "\r\n" + out + "\r\n";
-			m_outBuffer = out.c_str();
-			bandWidth::updateAmount(bandWidth::PRIVATE_WEB, (m_outBufferSize = (int)out.size()));
-
-			m_state = &protocol_admincgi::state_Send;
-			m_nextState = &protocol_admincgi::state_SendFileEnd;
-		}
-		else
-		{
-			m_state = &protocol_admincgi::state_SendFileFooter;
-		}
-
-		m_result.write();
-		m_result.run();
-	}
-	else
-	{
-		m_result.timeout(10);
-	}
-}
-
-// display log
-void protocol_admincgi::mode_viewlog(const streamData::streamID_t sid, const bool tail, const bool save, const bool server) throw()
-{
-	if (!save)
-	{
-		utf8 headerTitle = utf8(utf8("Server Log") + (tail ? " (Tailing)":""));
-		m_logFileHeader = MSG_NO_CLOSE_200;
-
-		m_logFileBodyPrefix += (server ? getServerAdminHeader(headerTitle) :
-										 getStreamAdminHeader(sid, headerTitle)) + getUptimeScript() +
-								(tail ? "<div style=\"padding:1em;\"><b>Showing log output from the current log "
-										"position and onwards. Click <a href=\"admin.cgi?mode=viewlog&amp;server=" +
-										randomId(logTailId) + "\">here</a> to view the complete log output or <a "
-										"href=\"admin.cgi?mode=viewlog&amp;server=" + logId + "&amp;viewlog=save\">here</a> "
-										"to save the complete log output. When tailing the log output, there may be "
-										"a delay before any new log output will appear and it may also stop updating if "
-										"there is no log activity depending on configured timeouts. Reload the page if this "
-										"should happens.</b></div>" : "") + getIEFlexFix() +
-								"<pre id=\"log\" style=\"tab-size:16;-moz-tab-size:16;-o-tab-size:16;\"><font class=\"t\">";
-
-		// doing to just make sure that the end of the output should be correct
-		m_logFileBodyFooter = "</font>\n</pre>" + getfooterStr();
-		m_tailLogFile = tail;
-
-		if (server || !(gOptions.read_stream_adminPassword(sid) && !gOptions.stream_adminPassword(sid).empty()))
-		{
-			const utf8 &file = mapGet(m_httpRequestInfo.m_QueryParameters, "file", gOptions.realLogFile());
-
-			m_logFile = uniFile::fopen(file, "r");
-			if (m_logFile)
-			{
-				m_logFileName = fileUtil::stripPath(file);
-				m_logFileName.push_back('\0');
-
-				if (m_tailLogFile)
-				{
-					::fseek(m_logFile, 0, SEEK_END);
-				}
-			}
-		}
-		else
-		{
-			utf8 body = m_logFileBodyPrefix + "Viewing Not Allowed With Current Permissions</pre>" + m_logFileBodyFooter;
-			COMPRESS(m_logFileHeader, body);
-			m_logFileHeader += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-			sendMessageAndClose(m_logFileHeader + (!HEAD_REQUEST ? body : ""));
-			return;
-		}
-
-		if (!m_logFile)
-		{
-			utf8 body = m_logFileBodyPrefix + "Log File Not Found (" +
-						stripWhitespace(errMessage()) + ")</pre>" +
-						m_logFileBodyFooter;
-			COMPRESS(m_logFileHeader, body);
-			m_logFileHeader += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-			sendMessageAndClose(m_logFileHeader + (!HEAD_REQUEST ? body : ""));
-		}
-		else
-		{
-			m_logFileHeader += "Transfer-Encoding:chunked\r\n";
-			m_state = &protocol_admincgi::state_SendFileHeader;
-			m_result.run();
-		}
-	}
-	else
-	{
-		if (server || !(gOptions.read_stream_adminPassword(sid) && !gOptions.stream_adminPassword(sid).empty()))
-		{
-			const utf8 &file = mapGet(m_httpRequestInfo.m_QueryParameters, "file", gOptions.realLogFile());
-
-			m_logFile = uniFile::fopen(file, "r");
-			if (m_logFile)
-			{
-				m_logFileName = fileUtil::stripPath(file);
-				m_logFileHeader = "HTTP/1.1 200 OK\r\n"
-								  "Content-Type:application/x-gzip-compressed\r\n"
-								  "Content-Disposition:attachment;filename=\"" +
-								  m_logFileName + ".gz\"\r\n";
-				m_saveLogFile = true;
-			}
-		}
-		else
-		{
-			sendMessageAndClose(MSG_HTTP403);
-			return;
-		}
-
-		if (!m_logFile)
-		{
-			sendMessageAndClose(MSG_HTTP404);
-		}
-		else
-		{
-			m_logFileHeader += "Transfer-Encoding:chunked\r\n";
-			m_state = &protocol_admincgi::state_SendFileHeader;
-			m_result.run();
-		}
-	}
-}
-
-// shown played history (as is also shown on the public pages if enabled)
-void protocol_admincgi::mode_history(const streamData::streamID_t sid) throw()
-{
-	utf8 header = MSG_NO_CLOSE_200,
-		 body = getStreamAdminHeader(sid, "Stream History") +
-				"<table width=\"100%\" border=\"0\" cellpadding=\"0\" "
-				"cellspacing=\"0\"><tr valign=\"top\"><td>" +
-				protocol_HTTPStyle::getPlayedBody(sid) + "</table>" +
-				getUptimeScript() + getIEFlexFix() + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-// remove an IP from the rip list
-void protocol_admincgi::mode_unrip(const streamData::streamID_t sid, const utf8 &ripAddr, const utf8 &rawIpAddr) throw()
-{
-	utf8 msg;
-	try
-	{
-		size_t stream_ID = ((gOptions.read_stream_ripFile(sid) && !gOptions.stream_ripFile(sid).empty()) ? sid : 0);
-		if (isAddress(ripAddr))
-		{
-			bool ret = g_ripList.remove(ripAddr,stream_ID,false), usingRaw = false;
-			if (!ret && !rawIpAddr.empty())
-			{
-				ret = g_ripList.remove(rawIpAddr,stream_ID,false);
-				if (ret) usingRaw = true;
-			}
-			if (ret)
-			{
-				ILOG("[RIP] Removed `" + (!usingRaw ? ripAddr : rawIpAddr) + "' from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip list");
-
-				if (gOptions.saveRipListOnExit())
-				{
-					if (stream_ID && gOptions.read_stream_ripFile(stream_ID) && !gOptions.stream_ripFile(stream_ID).empty())
-					{
-						g_ripList.save(gOptions.stream_ripFile(stream_ID),stream_ID);
-					}
-					else
-					{
-						g_ripList.save(gOptions.ripFile(),0);
-					}
-				}
-
-				stats::updateRipClients(stream_ID, (!usingRaw ? ripAddr : rawIpAddr), false);
-			}
-			else
-			{
-				ILOG("[RIP] Unable to remove `" + ripAddr + "' from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip list");
-			}
-		}
-		else
-		{
-			ILOG("[RIP] `" + ripAddr + "' is not a valid value. Skipping removing from the " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip list");
-		}
-
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer == "admin.cgi?sid=" + tos(sid) ? "" : "&mode=viewrip"), SHRINK) : MSG_200);
-	}
-	catch(const exception &ex)
-	{
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer != utf8("admin.cgi?sid=" + tos(sid) + "&mode=viewrip") ? "" : "&mode=viewrip"), SHRINK) : MSG_200);
-		ELOG(ex.what());
-	}
-
-	sendMessageAndClose(msg);
-}
-
-// add an IP / hostname to the rip list
-void protocol_admincgi::mode_rip(const streamData::streamID_t sid, const utf8 &ripAddr, const utf8 &rawIpAddr) throw()
-{
-	utf8 msg;
-	try
-	{
-		const size_t stream_ID = ((gOptions.read_stream_ripFile(sid) && !gOptions.stream_ripFile(sid).empty()) ? sid : 0);
-		if (isAddress(ripAddr))
-		{
-			if (!g_ripList.find(ripAddr,stream_ID))
-			{
-				bool added = g_ripList.add(ripAddr,stream_ID, true), usingRaw = false;
-				if (!added && !rawIpAddr.empty())
-				{
-					if (g_ripList.add(rawIpAddr,stream_ID, false))
-					{
-						usingRaw = true;
-					}
-				}
-
-				ILOG("[RIP] Added `" + (!usingRaw ? ripAddr : rawIpAddr) + "' to " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip list");
-
-				if (gOptions.saveRipListOnExit())
-				{
-					if (stream_ID && gOptions.read_stream_ripFile(stream_ID) && !gOptions.stream_ripFile(stream_ID).empty())
-					{
-						g_ripList.save(gOptions.stream_ripFile(stream_ID),stream_ID);
-					}
-					else
-					{
-						g_ripList.save(gOptions.ripFile(),0);
-					}
-				}
-				stats::updateRipClients(stream_ID, (!usingRaw ? ripAddr : rawIpAddr), true);
-			}
-			else
-			{
-				ILOG("[RIP] `" + ripAddr + "' already in the " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip list");
-			}
-		}
-		else
-		{
-			ILOG("[RIP] `" + ripAddr + "' is not a valid value. Skipping adding to the " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip list");
-		}
-
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer == "admin.cgi?sid=" + tos(sid) ? "" : "&mode=viewrip"), SHRINK) : MSG_200);
-	}
-	catch(const exception &ex)
-	{
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer != utf8("admin.cgi?sid=" + tos(sid) + "&mode=viewrip") ? "" : "&mode=viewrip"), SHRINK) : MSG_200);
-		ELOG(ex.what());
-	}
-
-	sendMessageAndClose(msg);
-}
-
-// show rip list
-void protocol_admincgi::mode_viewrip(const streamData::streamID_t sid) throw()
-{
-	vector<ripList::rip_t> rip_list;
-	g_ripList.get(rip_list,((gOptions.read_stream_ripFile(sid) && !gOptions.stream_ripFile(sid).empty()) ? sid : 0));
-
-	utf8 header = MSG_NO_CLOSE_200,
-		 headerTitle = (!sid ? "Server Reserved List" : "Stream Reserved List"),
-		 body = (!sid ? getServerAdminHeader(headerTitle) : getStreamAdminHeader(sid, headerTitle)) +
-				"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr valign=\"top\"><td>";
-
-	if (rip_list.empty())
-	{
-		body += "<b>&nbsp;No Reserved Entries</b><br>";
-	}
-	else
-	{
-		body += "<b>&nbsp;Reserved Entry List:</b><ol>";
-		for (vector<ripList::rip_t>::const_iterator i = rip_list.begin(); i != rip_list.end(); ++i)
-		{
-			body += "<li><b>" + aolxml::escapeXML((*i).m_numericIP) + "</b>" +
-					(!(*i).m_hostIP.empty() ? " (" + aolxml::escapeXML((*i).m_hostIP) + ")" : "") +
-					" - <a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=unripdst&amp;ripdst=" +
-					urlUtils::escapeURI_RFC3986((*i).m_numericIP) + "\">remove</a>";
-		}
-		body += "</ol>";
-	}
-
-	body +=
-		"</td><td style=\"padding:0 1em 0 1em;\"><br>"
-		"<table class=\"ent\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" align=\"right\">"
-		"<tr class=\"ent\">"
-		"<td class=\"inp\" align=\"center\">Reserve&nbsp;Connection Slot by IP</td>"
-		"</tr>"
-		"<form method=\"url\" action=\"admin.cgi\">"
-		"<tr>"
-		"<td><table cellspacing=\"0\" cellpadding=\"3\" border=\"0\">"
-		"<tr>"
-		"<td align=\"center\">Enter the IP address:<br><i>(example: 127.0.0.1)</i></td>"
-		"</tr>"
-		"<tr>"
-		"<td align=\"center\">"
-		"<input name=\"mode\" value=\"ripip\" type=\"hidden\">"
-		"<input name=\"sid\" value=\"" + tos(sid) + "\" type=\"hidden\">"
-		"<input name=\"ip1\" size=\"3\" maxlength=\"3\">."
-		"<input name=\"ip2\" size=\"3\" maxlength=\"3\">."
-		"<input name=\"ip3\" size=\"3\" maxlength=\"3\">."
-		"<input name=\"ip4\" size=\"3\" maxlength=\"3\">"
-		"</td>"
-		"</tr>"
-		"<tr>"
-		"<td colspan=\"2\" align=\"center\"><input class=\"submit\" type=\"submit\" value=\"Reserve IP\">"
-		"&nbsp;<input class=\"submit\" value=\"Clear\" type=\"Reset\"></td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"<td style=\"padding: 0 1em 0 0;\"><br>"
-		"<table class=\"ent\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" align=\"left\">"
-		"<tr class=\"ent\">"
-		"<td class=\"inp\" align=\"center\">Reserve Connection Slot by Host</td>"
-		"</tr>"
-		"<form method=\"url\" action=\"admin.cgi\">"
-		"<tr>"
-		"<td><table cellspacing=\"0\" cellpadding=\"3\" border=\"0\">"
-		"<tr>"
-		"<td align=\"center\">Enter the hostname:<br><i>(example: my.example.com)</i></td>"
-		"</tr>"
-		"<tr>"
-		"<td align=\"center\">"
-		"<input name=\"mode\" value=\"ripip\" type=\"hidden\">"
-		"<input name=\"sid\" value=\"" + tos(sid) + "\" type=\"hidden\">"
-		"<input name=\"ripdstraw\" size=\"30\" maxlength=\"256\">"
-		"</td>"
-		"</tr>"
-		"<tr>"
-		"<td colspan=\"2\" align=\"center\"><input class=\"submit\" type=\"submit\" value=\"Reserve Host\">"
-		"&nbsp;<input class=\"submit\" value=\"Clear\" type=\"Reset\"></td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"</tr>"
-		"</form>"
-		"</table>" +
-		getUptimeScript() +
-		getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-// show ban lists
-void protocol_admincgi::mode_viewban(const streamData::streamID_t sid) throw()
-{
-	vector<banList::ban_t> ban_list;
-	g_banList.get(ban_list,((gOptions.read_stream_banFile(sid) && !gOptions.stream_banFile(sid).empty()) ? sid : 0));
-
-	utf8 header = MSG_NO_CLOSE_200,
-		 headerTitle = (!sid ? "Server Ban List" : "Stream Ban List"),
-		 body = (!sid ? getServerAdminHeader(headerTitle) : getStreamAdminHeader(sid, headerTitle)) +
-				"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr valign=\"top\"><td>";
-
-	if (ban_list.empty())
-	{
-		body += "<b>&nbsp;No Banned Entries</b><br>";
-	}
-	else
-	{
-		body += "<b>&nbsp;Ban Entry List:</b><ol>";
-		for (vector<banList::ban_t>::const_iterator i = ban_list.begin(); i != ban_list.end(); ++i)
-		{
-			body += "<li><b>" + aolxml::escapeXML((*i).m_numericIP) + "</b>" +
-					(!(*i).m_comment.empty() ? " : <b>" + aolxml::escapeXML((*i).m_comment) + "</b>" : "") +
-					" - " + ((*i).m_mask == 255 ? "Single&nbsp;IP" : "Subnet") + "&nbsp;ban&nbsp;-&nbsp;"
-					"<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=unbandst&amp;bandst=" +
-					urlUtils::escapeURI_RFC3986((*i).m_numericIP) + "&amp;banmsk=" + tos((*i).m_mask) + "\">remove</a>";
-		}
-		body += "</ol>";
-	}
-
-	body +=
-		"</td><td style=\"padding:0 1em 0 1em;\"><br>"
-		"<table class=\"ent\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" align=\"right\">"
-		"<tr class=\"ent\">"
-		"<td class=\"inp\" align=\"center\">Ban a Single IP</td>"
-		"</tr>"
-		"<form method=\"url\" action=\"admin.cgi\">"
-		"<tr>"
-		"<td><table cellspacing=\"0\" cellpadding=\"3\" border=\"0\">"
-		"<tr>"
-		"<td align=\"center\">Enter&nbsp;the&nbsp;IP&nbsp;address:<br><i>(example: 127.0.0.1)</i></td>"
-		"</tr>"
-		"<tr>"
-		"<td align=\"center\">"
-		"<input name=\"mode\" value=\"banip\" type=\"hidden\">"
-		"<input name=\"sid\" value=\"" + tos(sid) + "\" type=\"hidden\">"
-		"<input name=\"ip1\" size=\"3\" maxlength=\"3\">."
-		"<input name=\"ip2\" size=\"3\" maxlength=\"3\">."
-		"<input name=\"ip3\" size=\"3\" maxlength=\"3\">."
-		"<input name=\"ip4\" size=\"3\" maxlength=\"3\">"
-		"<input type=\"hidden\" name=\"banmsk\" value=\"255\"></td>"
-		"</tr>"
-		"<tr>"
-		"<td colspan=\"2\" align=\"center\"><input class=\"submit\" type=\"submit\" value=\"Ban Single IP\">"
-		"&nbsp;<input class=\"submit\" value=\"Clear\" type=\"Reset\"></td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"</tr>"
-		"</form>"
-		"</table>"
-		"</td>"
-		"<td style=\"padding: 0 1em 0 0;\"><br>"
-		"<table class=\"ent\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" align=\"left\">"
-		"<tr class=\"ent\">"
-		"<td class=\"inp\" align=\"center\">Ban an Entire Subnet</td>"
-		"</tr>"
-		"<form method=\"url\" action=\"admin.cgi\">"
-		"<tr>"
-		"<td><table cellspacing=\"0\" cellpadding=\"3\" border=\"0\">"
-		"<tr>"
-		"<td align=\"center\">Enter the Subnet address:<br><i>(example: 255.255.255)</i></td>"
-		"</tr>"
-		"<tr>"
-		"<td align=\"center\">"
-		"<input name=\"mode\" value=\"banip\" type=\"hidden\">"
-		"<input name=\"sid\" value=\"" + tos(sid) + "\" type=\"hidden\">"
-		"<input name=\"ip1\" size=\"1\" maxlength=\"3\">."
-		"<input name=\"ip2\" size=\"1\" maxlength=\"3\">."
-		"<input name=\"ip3\" size=\"1\" maxlength=\"3\">.0-255"
-		"<input name=\"ip4\" value=\"0\" type=\"hidden\">"
-		"<input type=\"hidden\" name=\"banmsk\" value=\"0\"></td>"
-		"</tr>"
-		"<tr>"
-		"<td colspan=\"2\" align=\"center\"><input class=\"submit\" type=\"submit\" value=\"Ban Whole Subnet\">"
-		"&nbsp;<input class=\"submit\" value=\"Clear\" type=\"Reset\"></td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"</tr>"
-		"</form>"
-		"</table>" +
-		getUptimeScript() +
-		getIEFlexFix() +
-		getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-// remove an IP and mask from the ban list
-void protocol_admincgi::mode_unban(const streamData::streamID_t sid, const utf8 &banAddr, const int banMask) throw()
-{
-	utf8 msg;
-	try
-	{
-		const size_t stream_ID = ((gOptions.read_stream_banFile(sid) && !gOptions.stream_banFile(sid).empty()) ? sid : 0);
-		if (isAddress(banAddr))
-		{
-			if (g_banList.remove(banAddr,banMask,stream_ID,false))
-			{
-				ILOG("[BAN] Removed `" + banAddr + "/" + tos(banMask) + "' from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban list");
-
-				if (gOptions.saveBanListOnExit())
-				{
-					if (stream_ID && gOptions.read_stream_banFile(stream_ID) && !gOptions.stream_banFile(stream_ID).empty())
-					{
-						g_banList.save(gOptions.stream_banFile(stream_ID),stream_ID);
-					}
-					else
-					{
-						g_banList.save(gOptions.banFile(),0);
-					}
-				}
-			}
-			else
-			{
-				ILOG("[BAN] Unable to remove `" + banAddr + "' from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban list");
-			}
-		}
-		else
-		{
-			ILOG("[BAN] `" + banAddr + "' is not a valid value. Skipping removing from the " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban list");
-		}
-
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer == "admin.cgi?sid=" + tos(sid) ? "" : "&mode=viewban"), SHRINK) : MSG_200);
-	}
-	catch(const exception &ex)
-	{
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer != utf8("admin.cgi?sid=" + tos(sid) + "&mode=viewban") ? "" : "&mode=viewban"), SHRINK) : MSG_200);
-		ELOG(ex.what());
-	}
-
-	sendMessageAndClose(msg);
-}
-
-// add an IP and mask to the ban list
-void protocol_admincgi::mode_ban(const streamData::streamID_t sid, const utf8 &banAddrs, const int banMask) throw()
-{
-	utf8 msg;
-	try
-	{
-		const size_t stream_ID = ((gOptions.read_stream_banFile(sid) && !gOptions.stream_banFile(sid).empty()) ? sid : 0);
-		if (!g_banList.find(banAddrs,banMask,stream_ID))
-		{
-			g_banList.add(banAddrs,banMask,"",stream_ID);
-			ILOG("[BAN] Added `" + banAddrs + "/" + tos(banMask) + "' to " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban list");
-
-			if (gOptions.saveBanListOnExit())
-			{
-				if (stream_ID && gOptions.read_stream_banFile(stream_ID) && !gOptions.stream_banFile(stream_ID).empty())
-				{
-					g_banList.save(gOptions.stream_banFile(stream_ID),stream_ID);
-				}
-				else
-				{
-					g_banList.save(gOptions.banFile(),0);
-				}
-			}
-		}
-		else
-		{
-			ILOG("[BAN] `" + banAddrs + "' already in the " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " ban list");
-		}
-
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer == "admin.cgi?sid=" + tos(sid) ? "" : "&mode=viewban"), SHRINK) : MSG_200);
-	}
-	catch(const exception &ex)
-	{
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer != utf8("admin.cgi?sid=" + tos(sid) + "&mode=viewban") ? "" : "&mode=viewban"), SHRINK) : MSG_200);
-		ELOG(ex.what());
-	}
-
-	// additionally when a ban happens then we attempt to kick the client(s) at the same time
-	const utf8 &p1 = mapGet(m_httpRequestInfo.m_QueryParameters, "kickdst", (utf8)"");
-	if (!p1.empty())
-	{
-		// split out multiple clients to kick (split by a ,)
-		std::vector<uniString::utf8> addrs = tokenizer(p1, ',');
-		for (vector<uniString::utf8>::const_iterator i = addrs.begin(); i != addrs.end(); ++i)
-		{
-			if ((*i).find(utf8(".")) == utf8::npos)
-			{
-				stats::kickClient(sid, atoi((*i).hideAsString().c_str()));
-			}
-			else
-			{
-				stats::kickClient(sid, (*i));
-			}
-		}
-	}
-
-	sendMessageAndClose(msg);
-}
-
-// remove an agent from the agent list
-void protocol_admincgi::mode_unagent(const streamData::streamID_t sid, const utf8 &agent) throw()
-{
-	utf8 msg;
-	try
-	{
-		const size_t stream_ID = ((gOptions.read_stream_agentFile(sid) && !gOptions.stream_agentFile(sid).empty()) ? sid : 0);
-		bool ret = g_agentList.remove(agent,stream_ID,false);
-		if (!ret && !agent.empty())
-		{
-			ret = g_agentList.remove(agent,stream_ID,false);
-		}
-		if (ret)
-		{
-			ILOG("[AGENT] Removed `" + agent + "' from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " user agent list");
-
-			if (gOptions.saveAgentListOnExit())
-			{
-				if (stream_ID && gOptions.read_stream_agentFile(stream_ID) && !gOptions.stream_agentFile(stream_ID).empty())
-				{
-					g_agentList.save(gOptions.stream_agentFile(stream_ID),stream_ID);
-				}
-				else
-				{
-					g_agentList.save(gOptions.agentFile(),0);
-				}
-			}
-		}
-		else
-		{
-			ILOG("[AGENT] Unable to remove `" + agent + "' from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " user agent list");
-		}
-
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer == "admin.cgi?sid=" + tos(sid) ? "" : "&mode=viewagent"), SHRINK) : MSG_200);
-	}
-	catch(const exception &ex)
-	{
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer != utf8("admin.cgi?sid=" + tos(sid) + "&mode=viewagent") ? "" : "&mode=viewagent"), SHRINK) : MSG_200);
-		ELOG(ex.what());
-	}
-
-	sendMessageAndClose(msg);
-}
-
-// add an IP / hostname to the user agent list
-void protocol_admincgi::mode_agent(const streamData::streamID_t sid, const utf8 &agent) throw()
-{
-	utf8 msg;
-	try
-	{
-		const size_t stream_ID = ((gOptions.read_stream_agentFile(sid) && !gOptions.stream_agentFile(sid).empty()) ? sid : 0);
-		if (!g_agentList.find(agent,stream_ID))
-		{
-			if (g_agentList.add(agent, stream_ID, true))
-			{
-				ILOG("[AGENT] Added `" + agent + "' to " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " user agent list");					
-			}
-
-			stats::kickClientList_t kick_data;
-			stats::getClientDataForKicking(stream_ID, kick_data);
-			for (stats::kickClientList_t::const_iterator i = kick_data.begin(); i != kick_data.end(); ++i)
-			{
-				if (!(*i)->m_kicked && ((*i)->m_userAgent == agent))
-				{
-					stats::kickClient(sid, (*i)->m_unique);
-				}
-				delete (*i);
-			}
-
-			if (gOptions.saveAgentListOnExit())
-			{
-				if (stream_ID && gOptions.read_stream_agentFile(stream_ID) && !gOptions.stream_agentFile(stream_ID).empty())
-				{
-					g_agentList.save(gOptions.stream_agentFile(stream_ID),stream_ID);
-				}
-				else
-				{
-					g_agentList.save(gOptions.agentFile(),0);
-				}
-			}
-		}
-		else
-		{
-			ILOG("[AGENT] `" + agent + "' already in the " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " user agent list");
-		}
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer == "admin.cgi?sid=" + tos(sid) ? "" : "&mode=viewagent"), SHRINK) : MSG_200);
-	}
-	catch(const exception &ex)
-	{
-		msg = (!m_referer.empty() ? redirect("admin.cgi?sid=" + tos(sid) + (m_referer != utf8("admin.cgi?sid=" + tos(sid) + "&mode=viewagent") ? "" : "&mode=viewagent"), SHRINK) : MSG_200);
-		ELOG(ex.what());
-	}
-
-	sendMessageAndClose(msg);
-}
-
-// show agent list
-void protocol_admincgi::mode_viewagent(const streamData::streamID_t sid) throw()
-{
-	vector<agentList::agent_t> agent_list;
-	g_agentList.get(agent_list,((gOptions.read_stream_agentFile(sid) && !gOptions.stream_agentFile(sid).empty()) ? sid : 0));
-
-	utf8 header = MSG_NO_CLOSE_200,
-		 headerTitle = (!sid ? "Server Blocked User Agent List" :
-							   "Stream Blocked User Agent List"),
-		 body = (!sid ? getServerAdminHeader(headerTitle, 0, "", 2) : getStreamAdminHeader(sid, headerTitle, 0, true)) +
-				"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr valign=\"top\"><td>";
-
-	if (agent_list.empty())
-	{
-		body += "<b>&nbsp;No Blocked User Agents</b><br>";
-	}
-	else
-	{
-		body += "<b>&nbsp;Blocked User Agent List:</b><ol>";
-		for (vector<agentList::agent_t>::const_iterator i = agent_list.begin(); i != agent_list.end(); ++i)
-		{
-			const streamData::source_t clientType = ((streamData::source_t)streamData::UNKNOWN);
-			body += "<li>" + getClientImage(streamData::getClientType(clientType, stringUtil::toLower((*i).m_agent))) +
-					" <b>" + aolxml::escapeXML((*i).m_agent) + "</b> - <a href=\"admin.cgi?sid=" + tos(sid) +
-					"&amp;mode=unagent&amp;agent=" + urlUtils::escapeURI_RFC3986((*i).m_agent) + "\">remove</a>";
-		}
-		body += "</ol>";
-	}
-
-	body +=
-		"</td>"
-		"<td style=\"padding: 0 1em 0 0;\"><br>"
-		"<table class=\"ent\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" align=\"left\">"
-		"<tr class=\"ent\">"
-		"<td class=\"inp\" align=\"center\">Block User Agent</td>"
-		"</tr>"
-		"<form method=\"url\" action=\"admin.cgi\">"
-		"<tr>"
-		"<td><table cellspacing=\"0\" cellpadding=\"3\" border=\"0\">"
-		"<tr>"
-		"<td align=\"center\">Enter the user agent:<br><i>(example: streamripper)</i></td>"
-		"</tr>"
-		"<tr>"
-		"<td align=\"center\">"
-		"<input name=\"mode\" value=\"agent\" type=\"hidden\">"
-		"<input name=\"sid\" value=\"" + tos(sid) + "\" type=\"hidden\">"
-		"<input name=\"agent\" size=\"30\" maxlength=\"256\">"
-		"</td>"
-		"</tr>"
-		"<tr>"
-		"<td colspan=\"2\" align=\"center\"><input class=\"submit\" type=\"submit\" value=\"Block User Agent\">"
-		"&nbsp;<input class=\"submit\" value=\"Clear\" type=\"Reset\"></td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"</tr>"
-		"</table>"
-		"</td>"
-		"</tr>"
-		"</form>"
-		"</table>" +
-		getUptimeScript() +
-		getIEFlexFix() +
-		getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-// kick client(s)
-void protocol_admincgi::mode_kickdst(const streamData::streamID_t sid, const utf8 &kickAddrs) throw()
-{
-	bool refresh = false;
-	if (kickAddrs == "all")
-	{
-		// check if this is set to kick all
-		refresh = stats::kickAllClients(sid);
-	}
-	else if (kickAddrs == "duplicates")
-	{
-		// check if this is set to kick all
-		// duplicates (doing oldest first).
-		refresh = stats::kickDuplicateClients(sid);
-	}
-	else
-	{
-		// split out multiple clients to kick (split by a ,)
-		std::vector<uniString::utf8> addrs = tokenizer(kickAddrs,',');
-		for (vector<uniString::utf8>::const_iterator i = addrs.begin(); i != addrs.end(); ++i)
-		{
-			if ((*i).find(utf8(".")) == utf8::npos)
-			{
-				stats::kickClient(sid, atoi((*i).hideAsString().c_str()));
-			}
-			else
-			{
-				stats::kickClient(sid,(*i));
-			}
-		}
-	}
-
-	if (!m_referer.empty())
-	{
-		const utf8 check = ("admin.cgi?sid=" + tos(sid));
-		// if the referer is the server summary page then we need to go back to it
-		sendMessageAndClose(redirect((m_referer == check ? check : "admin.cgi?sid=0") + (refresh ? "&refresh=1" : ""), SHRINK));
-	}
-	else
-	{
-		sendMessageAndClose(MSG_200);
-	}
-}
-
-void protocol_admincgi::mode_art(const streamData::streamID_t sid, const int mode) throw()
-{
-	utf8 header = "HTTP/1.1 200 OK\r\n", body;
-	streamData *sd = streamData::accessStream(sid);
-	if (sd)
-	{
-		vector<__uint8> sc21_albumart = (mode == 0 ? sd->streamAlbumArt() : sd->streamPlayingAlbumArt());
-		if (!sc21_albumart.empty())
-		{
-			utf8 mimeType[] = {
-				"image/jpeg",
-				"image/png",
-				"image/bmp",
-				"image/gif"
-			};
-			const size_t mime = (mode == 0 ? sd->streamAlbumArtMime() : sd->streamPlayingAlbumArtMime());
-			// if not in the valid range then don't report the mime type in the generated response
-			if (mime < 4)
-			{
-				header += "Content-Type:" + mimeType[mime] + "\r\n";
-			}
-			body += utf8(&sc21_albumart[0],sc21_albumart.size());
-		}
-		sd->releaseStream();
-	}
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_register(const streamData::streamID_t sid, const streamData::streamInfo &info) throw()
-{
-	// construct a temp id for this action
-	utf8 tempId = "";
-	randomId(tempId);
-
-	bool loaded = false;
-	streamData *sd = streamData::accessStream(sid);
-	if (sd)
-	{
-		int addFailIgnore = 0, errorCode = 0;
-		loaded = sd->YP2_addSuccessful(addFailIgnore, errorCode);
-		sd->releaseStream();
-	}
-
-	utf8 header = "HTTP/1.1 200 OK\r\n"
-				  "Content-Type:text/html;charset=utf-8\r\n"
-				  "Cache-Control:no-cache\r\n",
-		 authhash = (!info.m_authHash.empty() ? info.m_authHash.substr(0, 36) : (utf8)""),
-		 body = getStreamAdminHeader(sid, "Stream Authhash") + "<br>"
-				"<form id=\"processing\" method=\"GET\" autocomplete=\"off\" onsubmit=\"return validateForm();\">"
-
-				"<div style=\"display:table;width:100%;\">"
-
-				"<div style=\"padding:0 1em;display:inline-block;float:left;max-width:15em;\">"
-				"<table class=\"ent\" cellpadding=\"15px\"><tr><td valign=\"top\">"
-				"<div align=\"center\" class=\"infh\"><b>Information</b></div><div id=\"info\">"
-				"This page allows you to enter or amend the authhash to be used for this stream."
-				"<br><br><hr><br>Authhash information is now managed online. "
-				"<a target=\"blank\" href=\"https://radiomanager.shoutcast.com\"><b>Login</b></a> "
-				"to create an authhash or update the details of an existing authhash."
-
-				"<br><br><hr><br>The same authhash should be used for all stream instances of a station "
-				"(e.g. 128kbps MP3 and 64kbps AAC streams for 'Super Awesome Radio').<br><br>This also includes all DNAS "
-				"providing the stream(s) for a station to ensure the correct listing of all stream instances."
-
-				// TODO need to have a link to the account page...
-				"<br><br><hr><br>If you remove an authhash by mistake then you can either recover it from your "
-				"<a href=\"https://radiomanager.shoutcast.com\" target=\"_blank\"><b>Shoutcast account</b></a> or you will need "
-				"to contact <a href=\"mailto:support@shoutcast.com?subject=Shoutcast%20Support\"><b>support</b></a> directly for "
-				"assistance.</div></td></tr></table><br></div>"
-
-				// TODO need to consider customising some of this ?? or just above ??
-				"<div align=\"left\" id=\"page_info\" style=\"display:inline-block;max-width:25em;padding:0 1em;\">"
-				"<div align=\"left\" id=\"header\"></div>"
-				"<table id=\"details\" style=\"width:100%;\" align=\"left\" border=\"0\">"
-
-				"<tr id=\"hide\" valign=\"top\"><td colspan=\"2\">" + utf8(!authhash.empty() &&
-				loaded && (info.m_streamSampleRate > 0) && info.m_radionomyID.empty() ?
-				warningImage(false) + "&nbsp;&nbsp;<b>Please Register Your Authhash</b><br><br>" : "") +
-
-				"<div style=\"float:right;padding:0 1em;\">"
-				"<input style=\"white-space:normal;width:6em;\" id=\"register\" class=\"submit\" type=\"button\" "
-						"onclick=\"window.open('https://radiomanager.shoutcast.com','_blank','')\" value=\"" +
-
-				(!authhash.empty() ? "Manage Authhash\"></div>"
-									 "The authhash currently configured for this stream is <b>" + authhash + "</b><br><br><br>"
-									 "To change the authhash, enter it below and click 'Save'." :
-									 "Create Authhash\"></div>"
-									 "An authhash needs to be created for this stream.<br><br><br>"
-									 "If you have just created an authhash via your "
-									 "<a target=\"blank\" href=\"https://radiomanager.shoutcast.com\"><b>account</b></a> "
-									 "or have an existing one for the stream, please enter it below and click 'Save'.") +
-
-				"<br><br></td></tr>"
-				"<tr id=\"hide\">"
-				"<td style=\"width:25%;\" align=\"right\">Authhash:</td>"
-				"<td colspan=\"2\"><input type=\"text\" style=\"width:15em;\" name=\"authhash\" id=\"authhash\" maxlength=\"36\" value=\"" + authhash + "\"></td>"
-				"</tr>"
-				"<tr>"
-				"<td id=\"status\" align=\"center\" colspan=\"3\"><br>"
-				"<input id=\"submit\" class=\"submit\" type=\"submit\" value=\"Save\">&nbsp;&nbsp;"
-				"<input id=\"clear\" class=\"submit\" value=\"Clear\" type=\"button\" "
-				"onclick=\"if(confirm('Clear the authhash and save the change now?"
-				"\\n\\nChoose Cancel to just clear the field.')){window.location='admin.cgi?sid=" + tos(sid) +
-				"&amp;mode=register&amp;register=clear';}else{$('authhash').value = '';authhashChange();}\">&nbsp;&nbsp;"
-				"<input class=\"submit\" value=\"Cancel\" type=\"button\" onclick=\"window.location='admin.cgi?sid=" + tos(sid) + "';\"></td>"
-				"</tr>"
-				"</table>"
-				"</div>"
-				"</div>"
-				"</form>"
-
-				"<script type=\"text/javascript\">"
-				"var original = \"" + /*(((mode == 3) && (auth_enabled != 1)) ?*/ info.m_authHash.substr(0, 36) /*: (utf8)"")*/ + "\";" EL
-
-				"var timeout, response;" EL
-				"function $(id){return document.getElementById(id);}" EL
-				"function trimString(str){return str.replace(/^\\s+|\\s+$/g,'');}" EL
-				+ utf8(!authhash.empty() ?
-					"function changeExisting(){" EL
-					"if($('existing').value != \"select\"){" EL
-					"$('authhash').value = $('existing').value;" EL
-					"}" EL
-					"authhashChange();" EL
-					"}" EL
-					: "")
-				+
-
-				"function getHTTP(){" EL
-				"if(window.XDomainRequest){" EL
-				"return new XDomainRequest();" EL
-				"}else if(window.XMLHttpRequest){" EL
-				"return new XMLHttpRequest();" EL
-				"}else{" EL
-				"return new ActiveXObject(\"Microsoft.XMLHTTP\");" EL
-				"}" EL
-				"}" EL
-
-				"function isValidAuthhash(str){" EL
-				"var regexp = /^[-a-fA-F\\d]+$/;" EL
-				"if(str != ''){" EL
-				"return regexp.test(str);" EL
-				"}" EL
-				"return true;" EL
-				"}" EL
-
-				"function authhashChange(){" EL
-				"var str = trimString($('authhash').value);" EL
-				"var valid = isValidAuthhash(str);" EL
-				"$('authhash').style.borderColor = (!(str.length == 0 || str.length > 36 && valid)?\"red\":\"\");" EL
-				"$('submit').disabled = (!((str.length == 0 || str.length == 36) && (original != $('authhash').value) && valid));" EL
-				"}" EL
-
-				"function validateForm(){" EL
-				"while($('hide') != null){" EL
-				"$('hide').style.display = \"none\";" EL
-				"$('hide').removeAttribute(\"id\");" EL
-				"}" EL
-				"$('status').setAttribute(\"colspan\",\"3\");" EL
-				"$('status').setAttribute(\"align\",\"left\");" EL
-				"$('status').setAttribute(\"valign\",\"middle\");" EL
-				"$('status').innerHTML = \"</td><td><b>Processing</b><br><br>This may take a while.</td>\";" EL
-
-				"var f = $('processing');" EL
-				"var params=\"\";" EL
-				"for(var i = 0; i < f.elements.length; i++ ){" EL
-				"if(f.elements[i].name != \"\"){" EL
-				"if(f.elements[i].name != \"private\" || (f.elements[i].name == \"private\" && f.elements[i].value == \"1\")){" EL
-				"params += (i != 0 ? \"&\" : \"\") + f.elements[i].name + \"=\" + encodeURIComponent(f.elements[i].value);" EL
-				"}" EL
-				"}" EL
-				"}" EL
-				"if(params==\"\"){" EL
-				"$('status').setAttribute(\"colspan\",\"3\");" EL
-				"$('status').setAttribute(\"align\",\"center\");" EL
-				"$('status').setAttribute(\"valign\",\"middle\");" EL
-				"$('status').innerHTML=\"Critical error in processing request."
-				"<br><br><b><a href=\\\"admin.cgi?sid=" + tos(sid) + "\\\">Click here to return to the Server Summary.</a></b>\";"
-				"return false;"
-				"}" EL
-
-				"var xmlhttp = getHTTP();" EL
-				"xmlhttp.open(\"GET\",\"admin.cgi?sid=" + tos(sid) + "&pass=" + gOptions.adminPassword() +
-				"&mode=manualauthhash&tempid=" + tempId + "&\"+params,true);" EL
-				"if(window.XDomainRequest){" EL
-				"xmlhttp.onerror=xmlhttp.onload=function(){" EL
-				"var code = parseInt((xmlhttp.responseText!=\"\"?xmlhttp.responseText:\"200\"));" EL
-				
-				"if(code!=200){" EL
-				"clearInterval(timeout);" EL
-				"$('status').setAttribute(\"align\",\"center\");" EL
-				"$('status').setAttribute(\"colspan\",\"2\");" EL
-				"if(code==0){" EL
-				"$('status').innerHTML = \"</td><td>"
-				"<b><br>Error Code: \"+code+\".<br>Check the DNAS is running and there is a working network connection.<br>"
-				"<br><a href=\\\"admin.cgi?sid=" + tos(sid) + "\\\">Click here to return to the Server Summary.</a></b>"
-				"</td>\";" EL
-				"}else{" EL
-				"$('status').innerHTML = \"</td><td>"
-				"<b><br>Error Code: \"+code+\".<br>\"+xmlhttp.responseText.substring(5,xmlhttp.responseText.length)+\"<br>"
-				"<br><a href=\\\"admin.cgi?sid=" + tos(sid) + "\\\">Click here to return to the Server Summary.</a></b>"
-				"</td>\";" EL
-				"}" EL
-				"}else{" EL
-				"clearInterval(timeout);" EL
-				"$('status').setAttribute(\"align\",\"center\");" EL
-				"$('status').innerHTML = \"</td><td>"
-				"Authhash was changed and saved to the configuration file. The stream will now be updated with the change.<br>"
-				"<br><a href=\\\"admin.cgi?sid=" + tos(sid) + "\\\"><b>Click here to return to the stream summary.</b></a></td>\";" EL
-				"}" EL
-
-				"};" EL
-				"}else{" EL
-				"xmlhttp.onreadystatechange=function(){" EL
-				"if(xmlhttp.readyState==4){" EL
-				"var code = parseInt((xmlhttp.responseText!=\"\"?xmlhttp.responseText:\"200\"));" EL
-				"if(code!=200){" EL
-				"clearInterval(timeout);" EL
-				"$('status').setAttribute(\"align\",\"center\");" EL
-				"$('status').setAttribute(\"colspan\",\"2\");" EL
-				"if(code==0){" EL
-				"$('status').innerHTML = \"</td><td>"
-				"<b><br>Error Code: \"+code+\".<br>Check the DNAS is running and there is a working network connection.<br>"
-				"<br><a href=\\\"admin.cgi?sid=" + tos(sid) + "\\\">Click here to return to the Server Summary.</a></b>"
-				"</td>\";" EL
-				"}else{" EL
-				"$('status').innerHTML = \"</td><td>"
-				"<b><br>Error Code: \"+code+\".<br>\"+xmlhttp.responseText.substring(5,xmlhttp.responseText.length)+\"<br>"
-				"<br><a href=\\\"admin.cgi?sid=" + tos(sid) + "\\\">Click here to return to the Server Summary.</a></b>"
-				"</td>\";" EL
-				"}" EL
-				"}" EL
-				"}else{" EL
-				"clearInterval(timeout);" EL
-				"$('status').setAttribute(\"align\",\"center\");" EL
-				"$('status').innerHTML = \"</td><td>"
-				"Authhash was changed and saved to the configuration file. The stream will now be updated with the change.<br>"
-				"<br><a href=\\\"admin.cgi?sid=" + tos(sid) + "\\\"><b>Click here to return to the stream summary.</b></a></td>\";" EL
-				"}" EL
-				"};" EL
-				"}" EL
-				"xmlhttp.send(null);" EL
-				"timeout = setInterval(countDown,250);" EL
-				"return false;" EL
-				"}" EL
-
-				"var counter=0;" EL
-				"function countDown(){" EL
-				"counter++;" EL
-				"if(counter>=5){" EL
-				"counter=0;" EL
-				"}" EL
-				"if(counter<5){" EL
-				"$('status').setAttribute(\"colspan\",\"3\");" EL
-				"$('status').setAttribute(\"align\",\"left\");" EL
-				"$('status').setAttribute(\"valign\",\"middle\");" EL
-				"$('status').innerHTML = \"<b>Processing\"+Array(counter).join(\".\")+\"</b><br><br>This may take a while.\";" EL
-				"}" EL
-				"}" EL
-
-				"function runUrlGetError(){" EL
-				"}" EL
-
-				"function runUrlGet(urlString,callback){" EL
-				"var xmlhttp = getHTTP();" EL
-				"try{" EL
-				"xmlhttp.open(\"GET\",(urlString==document.location?urlString:\"http://" +
-					gOptions.ypAddr() + ":" + tos(gOptions.ypPort()) +
-					((gOptions.ypPath() != utf8("/yp2")) ? "/yp" : "") +
-				"/\"+urlString),true);" EL
-				"if(window.XDomainRequest){" EL
-				"xmlhttp.onload=callback;" EL
-				"xmlhttp.onerror=runUrlGetError;" EL
-				"}else{" EL
-				"xmlhttp.onreadystatechange=callback;" EL
-				"}" EL
-				"response=xmlhttp;" EL
-				"xmlhttp.send(null);" EL
-				"}" EL
-				"catch(e){" EL
-				"}" EL
-				"}" EL
-
-				"function getAuthInfo(){" EL
-				"if(response.readyState == null || response.readyState==4 && response.status==200){" EL
-				"$('header').innerHTML = response.responseText;" EL
-				"}" EL
-				"}" EL
-
-				"var registerOnWindowLoad = function(callback){" EL
-				"if(window.addEventListener){" EL
-				"window.addEventListener('load',callback,false);" EL
-				"}else{" EL
-				"window.attachEvent('onload',callback);" EL
-				"}" EL
-				"}" EL
-
-				"registerOnWindowLoad(function(){" EL
-				"runUrlGet(\"authinfo_" + (authhash.empty() ? "create" : "update") +
-				"?v=" + urlUtils::escapeURI_RFC3986(gOptions.getVersionBuildStrings()) +
-				"&os=" + urlUtils::escapeURI_RFC3986(SERV_OSNAME) + "\",getAuthInfo);" EL
-				"if($('existing')!=null){" EL
-				"$('existing').onkeyup=changeExisting;" EL
-				"$('existing').onchange=changeExisting;" EL
-				"}" EL
-				"if($('authhash')!=null){" EL
-				"$('authhash').onkeyup=authhashChange;" EL
-				"$('authhash').onchange=authhashChange;" EL
-				"}" EL
-				"authhashChange();" EL
-				"});" EL
-				"</script>" +
-				getUptimeScript() +
-				getIEFlexFix() +
-				getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_listeners(const streamData::streamID_t sid) throw()
-{
-	utf8 header = MSG_NO_CLOSE_200, body;
-	// just to make sure we came from an appropriate page
-	const utf8 &server = mapGet(m_httpRequestInfo.m_QueryParameters, "server", (utf8)""),
-			   &check = ("admin.cgi?sid=" + tos(sid));
-	const bool nowrap = mapGet(m_httpRequestInfo.m_QueryParameters, "nw", (bool)gOptions.adminNoWrap());
-	const int fh = mapGet(m_httpRequestInfo.m_QueryParameters, "fh", (int)0);
-	if ((sid > 0) && (m_referer.find(check) == 0) && !server.empty() && (listenerId == server))
-	{
-		stats::currentClientList_t client_data;
-		stats::getClientDataForStream(sid, client_data);
-		if (!client_data.empty())
-		{
-			streamData::streamInfo info;
-			streamData::extraInfo extra;
-			streamData::getStreamInfo(sid, info, extra);
-
-			stats::statsData_t data;
-			stats::getStats(sid, data);
-
-			utf8 clientsBody = "<div style=\"overflow:auto;" + (!fh ? "max-height:500px;" : (utf8)"") + "\">"
-							   "<table class=\"ls\" style=\"border:0;text-align:center;" +
-							   (nowrap ? "white-space:nowrap;" : "") + "\" "
-							   "cellpadding=\"5\" cellspacing=\"0\" width=\"100%\" align=\"center\">"
-							   "<col width=\"15%\"><col width=\"50%\"><col width=\"20%\">"
-							   "<tr><td colspan=\"10\" class=\"inp\">Current Listeners</td></tr>"
-							   "<tr class=\"tll\"><td>Listener Address<br>(Host Address)</td>"
-							   "<td>User Agent</td><td>Connected<br>Duration</td>" + utf8(!info.m_radionomyID.empty() ?
-							   "<td>" + baseImage("adavail", "Advert Status", false, false) + "</td>" : "") +
-							   (data.connectedListeners != data.uniqueListeners ? "<td>Kick<br>Client</td>" : (utf8)"") +
-							   "<td>Kick<br>IP</td><td>Ban<br>IP</td><td>Ban<br>Subnet</td>"
-							   "<td>Reserve<br>Listener</td><td>Block<br>User Agent</td></tr>";
-
-			const time_t t = ::time(NULL);
-			size_t rowCount = 0;
-			// if we have non-unique clients then we need to process the list differently so as to group
-			// them together and then re-sort the output by client listener duration on the first match
-			// otherwise we revert the code back to the original un-grouped method to not waste resources
-			if (data.connectedListeners != data.uniqueListeners)
-			{
-				map<utf8,stats::uniqueClientData_t> unique_clients;
-				for (stats::currentClientList_t::const_iterator i = client_data.begin(); i != client_data.end(); ++i)
-				{
-					// if set to kicked then no need to show those (since they may re-appear if in-progress)
-					if (!(*i)->m_kicked)
-					{
-						stats::uniqueClientData_t client;
-						const bool localhost = ((*i)->m_ipAddr.find(utf8("127.")) == 0);
-
-						// look for existing instances and append the new details to the existing details
-						const map<utf8,stats::uniqueClientData_t>::const_iterator im = unique_clients.find((*i)->m_ipAddr);
-						if (im != unique_clients.end())
-						{
-							client = (*im).second;
-							client.m_userAgent += "</tr><tr" + ((*i)->m_ripClient || localhost ? utf8(" style=\"font-style:italic;\"") : "") + ">";
-							client.m_unique += ",";
-							++client.m_total;
-						}
-						else
-						{
-							client.m_connectTime = (*i)->m_startTime;
-							client.m_ipAddr = (*i)->m_ipAddr;
-							client.m_hostName = (*i)->m_hostName;
-							client.m_XFF = (*i)->m_XFF;
-							client.m_total = 1;
-						}
-
-						const int slave = ((*i)->m_clientType & streamData::SC_CDN_SLAVE);
-						client.m_userAgent += "<td " + (!client.m_XFF.empty() ? "title=\"XFF: " + aolxml::escapeXML(client.m_XFF) +
-											  "\" " : "") + "style=\"" + (!nowrap ? "" : "white-space:nowrap;") + "\"" +
-											  utf8(slave ? " class=\"thr\"" : "") + ">" + (((*i)->m_clientType & streamData::RADIONOMY) ?
-											  "Radionomy Stats Collector" : (!nowrap ? addWBR((*i)->m_userAgent) : "<div style=\"float:left;\">" +
-											  aolxml::escapeXML((*i)->m_userAgent)) + "</div>") + " <div style=\"float:right;\">" +
-											  getClientImage((*i)->m_clientType) + "</div></td>";
-						if ((*i)->m_ripClient)
-						{
-							client.m_ripAddr = true;
-						}
-
-						const time_t connected = (t - (*i)->m_startTime);
-						utf8 timer = timeString(connected, true), timerTip;
-						if (timer.empty())
-						{
-							timer = "Starting...";
-						}
-						else
-						{
-							timerTip = timeString(connected);
-						}
-
-						client.m_userAgent += "<td" + utf8(slave ? " class=\"thr\"" : "") + " title=\"" +
-											  timerTip + "\">" + aolxml::escapeXML(timer) + "</td>";
-						client.m_unique = (*i)->m_ipAddr;
-						if (!info.m_radionomyID.empty())
-						{
-							client.m_userAgent += "<td" + utf8(slave ? " class=\"thr\"" : "") + ">" + (((*i)->m_group > 0) ||
-												  (*i)->m_triggers ? advertImage(sid, (*i)->m_group, (*i)->m_triggers) :
-												  "<div title=\"Not Recognised For Adverts\">N/A</div>") + "</td>";
-						}
-						client.m_userAgent += "<td^" + utf8(slave ? " class=\"thr\"" : "") + "><a href=\"admin.cgi?sid=" +
-											  tos(sid) + "&amp;mode=kickdst&amp;kickdst=" + tos((*i)->m_unique) + "\">Kick</a>" +
-											  (client.m_total == 1 ? "</td^>" : "</td>") + "<td" + utf8(slave ? " class=\"thr\"" : "") +
-											  ">" + ((*i)->m_userAgent.empty() || ((*i)->m_userAgent == EMPTY_AGENT) ? "N/A" :
-											  "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=agent&amp;agent=" +
-											  urlUtils::escapeURI_RFC3986((*i)->m_userAgent) + "\">Block</a>") + "</td>";
-
-						unique_clients[(*i)->m_ipAddr] = client;
-					}
-
-					delete (*i);
-				}
-
-				// take the map and convert to a vector so we can then re-sort the list back into longest to least duration
-				vector<stats::uniqueClientData_t> clients;
-				for (map<utf8,stats::uniqueClientData_t>::const_iterator i = unique_clients.begin(); i != unique_clients.end(); ++i)
-				{
-					clients.push_back((*i).second);
-				}
-
-				std::sort(clients.begin(), clients.end(), sortUniqueClientDataByTime);
-
-				// and now we dump the generated list
-				for (vector<stats::uniqueClientData_t>::const_iterator i = clients.begin(); i != clients.end(); ++i)
-				{
-					const utf8 host = ((*i).m_hostName != (*i).m_ipAddr ? aolxml::escapeXML((*i).m_hostName) + " (" + (*i).m_ipAddr + ")" : (*i).m_ipAddr);
-					const bool localhost = ((*i).m_ipAddr.find(utf8("127.")) == 0);
-
-					// if we have a multiple client block then re-process so the relevant parts can
-					// be listed individually with adjustment of some of the visual styles as needed
-					utf8 multiBlock = (*i).m_userAgent;
-					uniString::utf8::size_type tpos = multiBlock.find(utf8("<td^"));
-					if (tpos != uniString::utf8::npos)
-					{
-						while (tpos != uniString::utf8::npos)
-						{
-							multiBlock.replace(tpos, 4, utf8(((*i).m_total > 1 ? "<td" : "<td colspan=\"2\"")));
-							tpos = multiBlock.find(utf8("<td^"));
-						}
-					}
-
-					tpos = multiBlock.find(utf8("</td^>"));
-					if (tpos != uniString::utf8::npos)
-					{
-						const bool hasHostName = ((*i).m_hostName != (*i).m_ipAddr);
-						utf8 endBlock = "<td" + ((*i).m_total > 1 ? " rowspan=\"" + tos((*i).m_total) + "\"" : (utf8)"") + ">" +
-										(!localhost ? "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=bandst&amp;bandst=" +
-										urlUtils::escapeURI_RFC3986((*i).m_ipAddr) + "&amp;banmsk=255" + "&amp;kickdst=" +
-										(*i).m_unique + "\">Ban</a>" : "N/A") + "</td><td" + ((*i).m_total > 1 ? " rowspan=\"" +
-										tos((*i).m_total) + "\"" : (utf8)"") + ">" + (!localhost ? "<a href=\"admin.cgi?sid=" +
-										tos(sid) + "&amp;mode=bandst&amp;bandst=" + urlUtils::escapeURI_RFC3986((*i).m_ipAddr) +
-										"&amp;banmsk=0" + "&amp;kickdst=" + (*i).m_unique + "\">Ban </a>" : "N/A") + "</td>"
-										"<td" + ((*i).m_total > 1 ? " rowspan=\"" + tos((*i).m_total) + "\"" : (utf8)"") + ">" +
-										(!localhost ? "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=" +
-										((*i).m_ripAddr ? "unripdst" : "ripdst") + "&amp;ripdst=" +
-										urlUtils::escapeURI_RFC3986((hasHostName ? (*i).m_hostName : (*i).m_ipAddr)) +
-										(hasHostName ? "&amp;ripdstraw=" + urlUtils::escapeURI_RFC3986((*i).m_ipAddr) : "") +
-										"\">" + ((*i).m_ripAddr ? "Remove" : "Add") + "</a>" : "N/A") + "</td>";
-
-						multiBlock.replace(tpos, 6, utf8(((*i).m_total > 1 ?
-										   "</td><td rowspan=\"" + tos((*i).m_total) +
-										   "\"><a href=\"admin.cgi?sid=" + tos(sid) +
-										   "&amp;mode=kickdst&amp;kickdst=" +
-										   (*i).m_unique + "\">Kick</a></td>" +
-										   endBlock : "</td>" + endBlock)));
-					}
-
-					rowCount += (*i).m_total;
-					clientsBody +=	"<tr" + ((*i).m_ripAddr || localhost ? utf8(" style=\"font-style:italic;\"") : "") + ">"
-									"<td" + ((*i).m_total > 1 ? " rowspan=\"" + tos((*i).m_total) + "\"" : "") + ">" +
-									(gOptions.useXFF() && !(*i).m_XFF.empty() ? xffImage() + " " : "") + host + "</td>" + multiBlock;
-				}
-			}
-			else
-			{
-				for (stats::currentClientList_t::const_iterator i = client_data.begin(); i != client_data.end(); ++i)
-				{
-					// if set to kicked then no need to show those (since they may re-appear if in-progress)
-					if (!(*i)->m_kicked)
-					{
-						const time_t connected = (::time(NULL) - (*i)->m_startTime);
-						utf8 timer = timeString(connected, true), timerTip;
-						if (timer.empty())
-						{
-							timer = "Starting...";
-						}
-						else
-						{
-							timerTip = timeString(connected);
-						}
-
-						const utf8 host = ((*i)->m_hostName != (*i)->m_ipAddr ? aolxml::escapeXML((*i)->m_hostName) +
-										  " (" + (*i)->m_ipAddr + ")" : (*i)->m_ipAddr);
-						const bool localhost = ((*i)->m_ipAddr.find(utf8("127.")) == 0);
-						const bool hasHostName = ((*i)->m_hostName != (*i)->m_ipAddr);
-
-						++rowCount;
-						const int slave = ((*i)->m_clientType & streamData::SC_CDN_SLAVE);
-						clientsBody += "<tr" + ((*i)->m_ripClient || localhost ? utf8(" style=\"font-style:italic;\"") : "") + ">"
-									   "<td " + (gOptions.useXFF() && !(*i)->m_XFF.empty() ? "title=\"XFF: " +
-									   aolxml::escapeXML((*i)->m_XFF) + "\">" + xffImage() + " " : ">") + host + "</td><td " +
-									   (!(*i)->m_XFF.empty() ? "title=\"XFF: " + aolxml::escapeXML((*i)->m_XFF) + "\" " : "") +
-									   "style=\"" + (!nowrap ? "" : "white-space:nowrap;") + "\"" + utf8(slave ? " class=\"thr\"" :
-									   "") + ">" + (((*i)->m_clientType & streamData::RADIONOMY) ? "Radionomy Stats Collector" :
-									   (!nowrap ? addWBR((*i)->m_userAgent) : "<div style=\"float:left;\">" +
-									   aolxml::escapeXML((*i)->m_userAgent)) + "</div>") + " <div style=\"float:right;\">" +
-									   getClientImage((*i)->m_clientType) + "</div>" + "</td><td" + utf8(slave ? " class=\"thr\"" : "") +
-									   " title=\"" + timerTip + "\">" + aolxml::escapeXML(timer) + "</td>";
-
-						if (!info.m_radionomyID.empty())
-						{
-							clientsBody += "<td" + utf8(slave ? " class=\"thr\"" : "") + ">" + (((*i)->m_group > 0) ||
-										   (*i)->m_triggers ? advertImage(sid, (*i)->m_group, (*i)->m_triggers) :
-										   "<div title=\"Not Recognised For Adverts\">N/A</div>") + "</td>";
-						}
-
-						const utf8 unique = tos((*i)->m_unique);
-						clientsBody += "<td" + utf8(slave ? " class=\"thr\"" : "") + "><a href=\"admin.cgi?sid=" +
-									   tos(sid) + "&amp;mode=kickdst&amp;kickdst=" + unique + "\">Kick</a></td><td>" +
-									   (!localhost ? "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=bandst&amp;bandst=" +
-									   urlUtils::escapeURI_RFC3986((*i)->m_ipAddr) + "&amp;banmsk=255" + "&amp;kickdst=" + unique +
-									   "\">Ban</a>" : "N/A") + "</td><td>" + (!localhost ? "<a href=\"admin.cgi?sid=" + tos(sid) +
-									   "&amp;mode=bandst&amp;bandst=" + urlUtils::escapeURI_RFC3986((*i)->m_ipAddr) + "&amp;banmsk=0"
-									   "&amp;kickdst=" + unique + "\">Ban </a>" : "N/A") + "</td><td>" + (!localhost ?
-									   "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=" + ((*i)->m_ripClient ?
-									   "unripdst" : "ripdst") + "&amp;ripdst=" + urlUtils::escapeURI_RFC3986((hasHostName ?
-									   (*i)->m_hostName : (*i)->m_ipAddr)) + (hasHostName ? "&amp;ripdstraw=" +
-									   urlUtils::escapeURI_RFC3986((*i)->m_ipAddr) : "") + "\">" + ((*i)->m_ripClient ?
-									   "Remove" : "Add") + "</a>" : "N/A") + "</td><td" + utf8(slave ? " class=\"thr\"" : "") +
-									   ">" + ((*i)->m_userAgent.empty() || ((*i)->m_userAgent == EMPTY_AGENT) ? "N/A" :
-									   "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=agent&amp;agent=" +
-									   urlUtils::escapeURI_RFC3986((*i)->m_userAgent) + "\">Block</a>") + "</td></tr>";
-					}
-
-					delete (*i);
-				}
-			}
-
-			if (rowCount > 0)
-			{
-				if (rowCount > 1)
-				{
-					clientsBody +=	"<tr><td style=\"border:0;\"></td><td style=\"padding:0;\"><a href=\"admin.cgi?sid=" +
-									tos(sid) + "&amp;mode=kickdst&amp;kickdst=duplicates\" title=\"Kick all duplicate "
-									"listeners (based on oldest first by user-agent for the same address)\"><b>Kick Duplicates</b>"
-									"</a></td><td>" + timeString(data.avgUserListenTime, true) + "</td><td style=\"padding:0;\" "
-									"colspan=\"" + utf8(data.connectedListeners != data.uniqueListeners ? "4" : "3") +
-									"\"><a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=kickdst&amp;kickdst=all\" "
-									"title=\"Kick all currently connected listeners\"><b>Kick All</b></a></td></tr>";
-				}
-
-				// only output the table if we actually had clients to show
-				body += clientsBody + "</table></div>";
-			}
-		}
-	}
-	else
-	{
-		body = "<div style=\"padding:1em;text-align:center;\"><b><img "
-			   "border=\"0\" src=\"images/warn.png\"> The current "
-			   "listener list could not be loaded. <img border=\"0\" "
-			   "src=\"images/warn.png\"><br><a href=\"admin.cgi?sid=" +
-			   tos(sid) + "&nw=" + tos(nowrap) + "&fh=" + tos(fh) +
-			   "\">Click here to reload this page</a>. If this issue "
-			   "<br>persists, try logging out and back in again.</b></div>";
-	}
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-const utf8 protocol_admincgi::getClientIP(const bool streamPublic, const utf8 &publicIP) throw()
-{
-	// test for potentially invalid IPs or ones that will cause the playlist link generation to fail
-	// attempting to use the server path provided by the YP if in public mode, otherwise uses 'host'
-	return (!streamPublic || publicIP.empty() ?
-			((g_IPAddressForClients.find(utf8("0.")) == 0 ||
-			 // allow localhost / loopback connections through for admin access
-			 ((!g_IPAddressForClients.empty() && g_IPAddressForClients.find(utf8("127.")) == 0)) ||
-			  g_IPAddressForClients.empty()) && !m_hostIP.empty() ?
-			  m_hostIP : (!m_hostIP.empty() ? m_hostIP : g_IPAddressForClients)) : publicIP);
-}
-
-void protocol_admincgi::mode_none(const streamData::streamID_t sid, const int refreshRequired) throw()
-{
-	utf8 header = MSG_NO_CLOSE_200,
-		 body = getStreamAdminHeader(sid, "Stream Status &amp; Listeners", refreshRequired);
-
-	time_t streamUptime = 0;
-	bool hasListeners = false, isConnected = false;
-
-	if (refreshRequired > 0)
-	{
-		body += "<br><table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" width=\"100%\">"
-				"<tr><td align=\"center\" id=\"counter\">"
-				"<br>Waiting " + tos(refreshRequired) + " second" + ((refreshRequired > 1) ? "s" : (utf8)"") +
-				" for any configuration changes to take effect.<br>"
-				"If not automatically redirected or do not want to wait, "
-				"<a href=\"admin.cgi?sid="+tos(sid)+"\">click here.</a>"
-				"<br><br></td></tr></table></tr></table></td></tr></table>";
-	}
-	else
-	{
-		streamData::streamInfo info;
-		streamData::extraInfo extra;
-		streamData::getStreamInfo(sid, info, extra);
-
-		stats::statsData_t data;
-		stats::getStats(sid, data);
-
-		isConnected = extra.isConnected;
-		hasListeners = (data.connectedListeners > 0);
-
-		// this is a placeholder for the listener details which we grab asynchronously for speed since #615
-		body += "<div id=\"listeners\">" + (data.connectedListeners > 0 ?
-				"<div style=\"padding:1em;text-align:center;\"><b>Loading current "
-				"listener list...</b></div>" : (utf8)"") + "</div><table cellpadding=\"5\" "
-				"cellspacing=\"0\" border=\"0\" width=\"100%\"><tr><td class=\"tsp\" "
-				"align=\"center\">Current Stream Information</td></tr></table>";
-
-		utf8 detailsBody = "";
-		bool showing = false;
-		if (!(gOptions.read_stream_adminPassword(sid) && !gOptions.stream_adminPassword(sid).empty()))
-		{
-			utf8 log = gOptions.realLogFile();
-			utf8::size_type pos = log.rfind(fileUtil::getFilePathDelimiter());
-			if ((pos != utf8::npos))
-			{
-				log = log.substr(pos + 1);
-			}
-
-			utf8 conf = gOptions.confFile();
-			pos = conf.rfind(fileUtil::getFilePathDelimiter());
-			if ((pos != utf8::npos))
-			{
-				conf = conf.substr(pos + 1);
-			}
-
-			// trim down the file paths shown to make things less cluttered on hosted setups
-			// places the full path in the 'title' so it can still be found if required, etc
-			detailsBody += "Log file: <b title=\"" +
-						   aolxml::escapeXML(fileUtil::getFullFilePath(gOptions.realLogFile())) +
-						   "\">" + aolxml::escapeXML(fileUtil::stripPath(log)) + "</b><br>"
-						   "Configuration file: <b title=\"" +
-						   aolxml::escapeXML(fileUtil::getFullFilePath(gOptions.confFile())) +
-						   "\">" + aolxml::escapeXML(fileUtil::stripPath(conf)) + "</b><br>";
-
-			showing = true;
-		}
-
-		utf8 introFile = gOptions.stream_introFile(sid);
-		if (!gOptions.read_stream_introFile(sid))
-		{
-			introFile = gOptions.introFile();
-		}
-
-		utf8 backupFile = gOptions.stream_backupFile(sid);
-		if (!gOptions.read_stream_backupFile(sid))
-		{
-			backupFile = gOptions.backupFile();
-		}
-
-		utf8 backupTitle = gOptions.stream_backupTitle(sid);
-		if (!gOptions.read_stream_backupTitle(sid))
-		{
-			backupTitle = gOptions.backupTitle();
-		}
-
-		streamData *sd = streamData::accessStream(sid);
-		detailsBody += utf8(showing ? "<br><hr><br>" : "") + "Intro file is <b title=\"" +
-							((!introFile.empty() || (sd && sd->getIntroFile().gotData()) ? (!introFile.empty() ?
-							fileUtil::getFullFilePath(introFile) : (utf8)"") : (utf8)"") + "\">" +
-							aolxml::escapeXML((!introFile.empty() || (sd && sd->getIntroFile().gotData()) ? (!introFile.empty() ?
-							fileUtil::stripPath(introFile) : "from source") : "empty")) + "</b><br>Backup file is <b title=\"" +
-							((!backupFile.empty() || (sd && sd->getBackupFile().gotData())) ? (!backupFile.empty() ?
-							fileUtil::getFullFilePath(backupFile) : (utf8)"") : (utf8)"") + "\">" +
-							aolxml::escapeXML((!backupFile.empty() || (sd && sd->getBackupFile().gotData())) ?
-							(!backupFile.empty() ? fileUtil::stripPath(backupFile) : "from source") : "empty")) + "</b><br>";
-
-		if (!backupTitle.empty() && !backupFile.empty() && !extra.isConnected)
-		{
-			detailsBody += "Backup title is: <b>" + aolxml::escapeXML(backupTitle) + "</b><br>";
-		}
-					   
-		detailsBody += "<br><hr><br>Idle timeouts are <b>" + tos(gOptions.getAutoDumpTime(sid)) + "s</b><br>";
-
-		if (extra.isConnected)
-		{
-			detailsBody += "<br><hr><br>Source connection type: <b>" +
-						   utf8(info.m_sourceType == streamData::SHOUTCAST1 ? "v1" :
-						   (info.m_sourceType == streamData::SHOUTCAST2 ? "v2" : "HTTP")) +
-						   (extra.isRelay ? " relay" + (extra.isBackup ? utf8("&nbsp;backup") : "") :
-						   (extra.isBackup ? utf8("&nbsp;backup") : "")) + "</b><br><div "
-						   "style=\"max-width:15em;\">Source user agent: <b>" +
-						   addWBR((!info.m_sourceIdent.empty() ? info.m_sourceIdent :
-						   "Legacy / Unknown")) + "</b>""</div>";
-		}
-
-		if (sd)
-		{
-			detailsBody += (extra.isConnected ? "<br><hr><br>" : "<br>");
-
-			if (sd->streamAlbumArt().empty())
-			{
-				detailsBody += "Stream artwork <b>not available</b>";
-			}
-			else
-			{
-				detailsBody += "Stream artwork <b>available</b> [&nbsp;<a href=\"/streamart?sid=" + tos(sid) + "\">view</a>&nbsp;]</b>";
-			}
-
-			detailsBody += "<br>";
-
-			if (sd->streamPlayingAlbumArt().empty())
-			{
-				detailsBody += "Playing artwork <b>not available</b>";
-			}
-			else
-			{
-				detailsBody += "Playing artwork <b>available</b> [&nbsp;<a href=\"/playingart?sid=" + tos(sid) + "\">view</a>&nbsp;]</b>";
-			}
-
-			if (!info.m_currentURL.empty() && (info.m_currentURL.find(utf8("DNAS/")) == utf8::npos))
-			{
-				detailsBody += "<br><br><hr><br>Song url from source [&nbsp;<a href=\"" +
-							   utf8((info.m_currentURL.find(utf8("://")) == utf8::npos) &&
-									(info.m_currentURL.find(utf8("&")) != 0) ? "//" : "") +
-							   info.m_currentURL + "\">view</a>&nbsp;]<br>"
-							   "<div style=\"max-width:15em;\"><b>Note:</b> "
-							   "This may not be a valid url and is intended for internal use.</div>";
-			}
-
-			sd->releaseStream();
-		}
-
-		const utf8& message = streamData::getStreamMessage(sid);
-		if (!message.empty())
-		{
-			detailsBody += "<tr><td style=\"border:0;padding:0;\"><br></td></tr>"
-						   "<tr><td align=\"center\" valign=\"top\" "
-						   "style=\"display:block;max-width:15em;padding-top:1px;\"><br>"
-						   "<div align=\"center\" class=\"infh\">"
-						   "<b>Official Message Received</b></div>" + message + "</td></tr>";
-		}
-
-		body += "<div style=\"padding:0 1em;\"><br></div>"
-				"<table width=\"100%\" align=\"center\"><tr valign=\"top\">";
-
-		const utf8 movedUrl = gOptions.stream_movedUrl(sid);
-		if (movedUrl.empty())
-		{
-			body += "<td><table class=\"en\" cellpadding=\"15px\" "
-					"style=\"border:0;margin-left:1em;\"><tr>"
-					"<td valign=\"top\"><div align=\"center\" "
-					"class=\"infh\"><b>Stream Details</b></div>" +
-					detailsBody + "</td></tr></table></td>";
-		}
-
-		const int maxUsers = ((info.m_streamMaxUser > 0) && (info.m_streamMaxUser < gOptions.maxUser()) ? info.m_streamMaxUser : gOptions.maxUser());
-		if (extra.isConnected)
-		{
-			const bool isListable = streamData::isAllowedType(info.m_uvoxDataType);
-			utf8 listenLink = "<a href=\"listen.pls?sid=" + tos(sid) + "\"><img border=\"0\" title=\"Listen to Stream\" "
-							  "alt=\"Listen to Stream\" style=\"vertical-align:middle\" src=\"images/listen.png\"></a>" +
-								  (sd && !sd->radionomyID().empty() && sd->streamAdvertMode() ?
-										  "<img border=\"0\" title=\"Active DNAS+ Stream\nMonetisation Enabled\" "
-										  "alt=\"Active DNAS+ Stream\nMonetisation Enabled\" style=\"vertical-align:middle\" "
-										  "src=\"images/adavail.png\">&nbsp;" : (utf8)"");
-
-			body += "<td><table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" style=\"padding-left:1em;\">"
-					"<tr valign=\"top\"><td colspan=\"2\">" + getNewVersionMessage() + "<td></tr>"
-					"<tr valign=\"top\"><td>Listing Status: </td><td><b>Stream is currently up " +
-					(info.m_streamPublic && isListable ? (extra.ypConnected != 1 ? "" : utf8("and public") + listenLink) : utf8("and private (not listed)") + listenLink) +
-					(info.m_streamPublic && isListable ? (extra.ypConnected != 1 ? (!yp2::isValidAuthhash(info.m_authHash) ?
-															string(info.m_authHash.empty() ? "but requires <a href=\"admin.cgi?sid=" + tos(sid) +
-																							 "&amp;mode=register\">registration</a> in the Shoutcast Directory.<br>" :
-																							 "but not listed due to an invalid authhash.<br>") +
-
-															(info.m_authHash.empty() ? "Listeners are allowed and the stream will act like it is private until resolved."
-															"<br><br>To create an authhash you will need to <a href=\"admin.cgi?sid=" + tos(sid) +
-															"&amp;mode=register\">register</a> the stream with us.<br>If you already have an existing authhash "
-															"then you can enter it <a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">here</a>.<br><br>" :
-															"Listeners are allowed and the stream will act like it is private until resolved.") :
-															(extra.ypErrorCode == 200 ? "waiting on a Directory response." :
-																(extra.ypErrorCode == YP_COMMS_FAILURE ? "unable to access the Directory.<br>Listeners are allowed and the stream will act like it is private until resolved." :
-																(extra.ypErrorCode == YP_MAINTENANCE_CODE ? "received a Directory maintenance notification: <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2#YP_Server_Errors\">" + tos(extra.ypErrorCode) +
-																											"</a><br>Listeners will be allowed though the stream will not be listed in the Directory." :
-																 "received Directory error code: <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2#YP_Server_Errors\">" + tos(extra.ypErrorCode) + "</a><br>" +
-																 (extra.ypConnected != 2 ? "" :
-																 "during a listing update. The stream may no longer appear.") +
-																 "<br>Check the server log and / or contact the server administrator.")))) : "") : "") + "</b></td></tr>"
-					"<tr valign=\"top\"><td>Stream Status: </td>"
-					"<td><b>Stream is up (" + streamData::getContentType(info) + " @ " +
-					(info.m_streamBitrate > 0 ? tos(info.m_streamBitrate) : "unknown") +
-					" kbps" + (info.m_vbr ? " (VBR)" : "") + ", " +
-					sampleRateStr(info.m_streamSampleRate) + ") with " +
-					tos(data.connectedListeners) + (maxUsers > 0 ? " of " +
-					tos(maxUsers) : "") + " listeners" + (!maxUsers ? " (unlimited)" : "") +
-					(data.connectedListeners != data.uniqueListeners ? (" (" +
-					tos(data.uniqueListeners) + " unique)") : "") + "</b></td></tr>";
-
-			if (data.peakListeners > 0)
-			{
-				body += "<tr valign=\"top\"><td>Listener Peak: </td><td><b>" +
-						tos(data.peakListeners) + "</b></td></tr>";
-			}
-
-			const utf8 avgTime = timeString(data.avgUserListenTime);
-			if (!avgTime.empty())
-			{
-				body +=	"<tr valign=\"top\"><td>Avg. Play Time: </td>"
-						"<td><b>" + avgTime + "</b></td></tr>";
-			}
-
-			body +=	"<tr valign=\"top\"><td>Stream Name: </td><td><b>" +
-					(info.m_streamPublic && extra.ypConnected ? "<a target=\"_blank\" href=\"http://directory.shoutcast.com/Search?query=" +
-					 urlUtils::escapeURI_RFC3986(info.m_streamName) + "\">" + aolxml::escapeXML(info.m_streamName) + "</a>" :
-					 aolxml::escapeXML(info.m_streamName)) + "</b></td></tr>" +
-
-					(info.m_streamPublic && extra.ypConnected ? "<tr valign=\"top\"><td alt=\"Shoutcast Directory ID\" "
-																"title=\"Shoutcast Directory ID\"><img border=\"0\" "
-																"src=\"images/favicon.ico\" style=\"vertical-align:bottom\">"
-																" ID: </td><td><b><a title=\"Shoutcast Directory ID\" href=\"http://" +
-					 
-					 gOptions.ypAddr().hideAsString() + ":" + tos(gOptions.ypPort()) + ((gOptions.ypPath() != utf8("/yp2")) ? "/yp" : "") +
-
-					 "/sbin/tunein-station.pls?id="+info.m_stationID+"\">"+info.m_stationID+"</a></b></td></tr>" : "");
-
-			if (!info.m_streamGenre[0].empty())
-			{
-				body += "<tr valign=\"top\"><td>Stream Genre(s): </td>"
-						"<td><b>" + (info.m_streamPublic && extra.ypConnected ?
-						"<a target=\"_blank\" href=\"http://directory.shoutcast.com/Genre?name=" +
-						urlUtils::escapeURI_RFC3986(info.m_streamGenre[0]) + "\">" +
-						aolxml::escapeXML(info.m_streamGenre[0]) + "</a>" :
-						aolxml::escapeXML(info.m_streamGenre[0])) + "</b>";
-
-				for (int i = 1; i < 5; i++)
-				{
-					if (!info.m_streamGenre[i].empty())
-					{
-						body += " , <b>" + (info.m_streamPublic && extra.ypConnected ? "<a target=\"_blank\" href=\"http://directory.shoutcast.com/Genre?name=" +
-								 urlUtils::escapeURI_RFC3986(info.m_streamGenre[i]) + "\">" + aolxml::escapeXML(info.m_streamGenre[i]) + "</a>" :
-								 aolxml::escapeXML(info.m_streamGenre[i])) + "</b>";
-					}
-				}
-
-				body += "</td></tr>";
-			}
-
-			if (!info.m_streamUser.empty())
-			{
-				body += "<tr valign=\"top\"><td>Stream DJ: </td>"
-						"<td><b>" + aolxml::escapeXML(info.m_streamUser) + "</b></td></tr>";
-			}
-
-			if (!info.m_streamURL.empty())
-			{
-				body += "<tr valign=\"top\"><td>Stream Website: </td>"
-						"<td><b>" + urlLink(info.m_streamURL) + "</b></td></tr>";
-			}
-
-			if (!info.m_currentSong.empty())
-			{
-				body += "<tr valign=\"top\"><td>Playing Now: </td>"
-						"<td><b><a href=\"currentsong?sid=" + tos(sid) + "\">" +
-						getCurrentSong(info.m_currentSong) + "</a></b></td></tr>";
-
-				// only show if we have a valid current song
-				if (!info.m_comingSoon.empty())
-				{
-					body += "<tr valign=\"top\"><td>Playing Next: </td>"
-							"<td><b><a href=\"nextsong?sid=" + tos(sid) + "\">" +
-							aolxml::escapeXML(info.m_comingSoon) + "</a></b></td></tr>";
-				}
-			}
-
-			// strip down the source address for display output to an appropriate output based on settings
-			utf8 srcAddr = niceURL(extra.isBackup ? info.m_backupURL : (extra.isRelay ? info.m_relayURL : info.m_srcAddr));
-			if (gOptions.nameLookups())
-			{
-				if (!extra.isBackup && !extra.isRelay)
-				{
-					u_short port = 0;
-					string addr, hostName;
-					socketOps::getpeername(m_socket, addr, port);
-
-					string src = (extra.isBackup ? info.m_backupURL : (extra.isRelay ? info.m_relayURL : info.m_srcAddr)).hideAsString();
-					hostName = src;
-					if (!socketOps::addressToHostName(addr,port,hostName))
-					{
-						srcAddr = hostName + " (" + niceURL(src) + ")";
-					}
-				}
-			}
-
-			body += "<tr valign=\"top\"><td>Stream Source: </td>"
-					"<td><b>" + (extra.isRelay || extra.isBackup ? urlLink(srcAddr) : srcAddr) + " " +
-					(extra.isRelay ? "(relaying" + (extra.isBackup ? utf8(" backup") : "") + ") " : (extra.isBackup ? "(backup) " : "")) + "</b>"
-					"[&nbsp;<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=kicksrc\">" + (extra.isRelay || extra.isBackup ? "stop" : "kick") +
-					"</a>&nbsp;]</td></tr><tr valign=\"top\"><td>Stream Uptime: </td>"
-					"<td id=\"up2\"><b>" + timeString((streamUptime = ::time(NULL) - streamData::getStreamUptime(sid))) + "</b></td></tr>";
-
-			if (!info.m_contentType.empty() && (info.m_uvoxDataType == MP3_DATA))
-			{
-				body += streamData::getHTML5Player(sid);
-			}
-					
-			body += "</table>";
-		}
-		else
-		{
-			body +=	"<td" + (movedUrl.empty() ? (utf8)"" : " align=\"center\"") + ">"
-					"<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\">"
-					"<tr valign=\"top\"><td colspan=\"2\">" + getNewVersionMessage("<br>") + "<td></tr>"
-					"<tr valign=\"top\"><td>Stream Status: </td><td><b>";
-
-			if (movedUrl.empty())
-			{
-				body += "Stream is currently down" + (data.connectedListeners > 0 ?
-						" with " + tos(data.connectedListeners) + (maxUsers > 0 ? " of " +
-						tos(maxUsers) : "") + " listeners" + (!maxUsers ? " (unlimited)" : "") +
-						(data.connectedListeners != data.uniqueListeners ? (" (" +
-						tos(data.uniqueListeners) + " unique)") : "") : ".") + "<br>There is no "
-						"source connected or no stream is configured for stream #" + tos(sid) + ".";
-			}
-			else
-			{
-				body += "Stream has been moved to " + urlLink(movedUrl) + "<br>No source connections will be allowed for this stream.";
-			}
-			body += "</b></td></tr>";
-
-			if (data.peakListeners > 0)
-			{
-				body += "<tr valign=\"top\"><td>Listener Peak: </td><td><b>" +
-						tos(data.peakListeners) + "</b></td></tr>";
-			}
-
-			utf8 avgTime = timeString(data.avgUserListenTime);
-			if (!avgTime.empty())
-			{
-				body +=	"<tr valign=\"top\"><td>Avg. Play Time: </td>"
-						"<td><b>" + avgTime + "</b></td></tr>";
-			}
-
-			// add in an option to restart a relay url...
-			if (!gOptions.stream_relayURL(sid).empty() && movedUrl.empty())
-			{
-				// strip down the source address for display output
-				utf8 srcAddr = niceURL(gOptions.stream_relayURL(sid));
-
-				// make sure we're not exposing the option to try re-connecting to a pending source relay
-				bool noEntry = false;
-				if (!(streamData::isRelayActive(sid, noEntry) == 1))
-				{
-					body += "<tr><td><br>Start Relay:</td><td><br><b>" + urlLink(srcAddr) + "</b> "
-							"[ <a href=\"admin.cgi?sid="+tos(sid)+"&amp;mode=startrelay\">start relay</a> ]</td></tr>";
-				}
-				else
-				{
-					body += "<tr><td><br>Starting Relay:</td><td><br><b>Connection pending to " +
-							urlLink(srcAddr) + "</b> [ <a href=\"admin.cgi?sid=" + tos(sid) +
-							"&amp;mode=kicksrc\">abort</a> ]</td></tr>";
-				}
-			}
-
-			body += "</table>";
-		}
-
-		body += "</td></tr></table>";
-	}
-
-	// for a refresh, we'll show a countdown so it's obvious that something is happening
-	if (refreshRequired)
-	{
-		body += "<script type=\"text/javascript\">"
-				"function $(id){return document.getElementById(id);}" EL
-				"var c = " + tos(abs(refreshRequired)) + ";" EL
-				"function countDown(){" EL
-				"c--;" EL
-				"if(c > 0){" EL
-				"$('counter').innerHTML = \"<br>Waiting \"+c+\" second\" + (c > 1 ? \"s\" : \"\") + \" for any configuration changes to take effect.<br>"
-				"If not automatically redirected or do not want to wait, <a href=\\\"admin.cgi?sid="+tos(sid)+"\\\">click here.</a><br><br>\";" EL
-				"}" EL
-				"}" EL
-				"setInterval(countDown,1000);" EL
-				"</script>";
-	}
-
-	body += getUptimeScript(false, isConnected, streamUptime) + getIEFlexFix() +
-			getHTML5Remover() + (!refreshRequired && hasListeners ?
-			 getStreamListeners(sid, mapGet(m_httpRequestInfo.m_QueryParameters, "nw", (bool)gOptions.adminNoWrap()),
-									 mapGet(m_httpRequestInfo.m_QueryParameters, "fh", (int)0)) : "") + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-utf8 getCDNMessage(const bool master, const bool slave)
-{
-	if (slave && !master)
-	{
-		return "Configured as a CDN slave<br>Authhash inheritance enabled from master";
-	}
-	else if (master && !slave)
-	{
-		return "Configured as a CDN master<br>Authhash inheritance enabled for slaves";
-	}
-	return "Configured as a CDN intermediary<br>Authhash inheritance enabled both ways";
-}
-
-utf8 getBadAuthhashMessage(const streamData::streamID_t sid, const utf8 &authHash)
-{
-	return "<div class=\"en\" style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">"
-		   "<b>Invalid Authhash Detected</b>&nbsp;&nbsp;&nbsp;<input class=\"submit\" type=\"button\" "
-		   "onclick=\"alert('An incorrect authhash is entered for this stream: " + authHash + "\\n\\n"
-		   "Use the [ Clear ] option and re-enter a valid authhash or\\nregister your stream to be "
-		   "listed in the Shoutcast directory.\\n\\nIf you think this is a valid authhash then please "
-		   "contact\\nsupport including the authhash at support@shoutcast.com.')\" value=\"?\"><br><br>"
-		   "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register&amp;register=clear\">Clear Authhash</a>"
-		   "&nbsp; | &nbsp;<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Manage Authhash</a></div>";
-}
-
-void protocol_admincgi::mode_summary(const int refreshRequired) throw()
-{
-	utf8 header = MSG_NO_CLOSE_200,
-		 streams = "",
-		 body = getServerAdminHeader("Server Summary", refreshRequired);
-
-	size_t totalListeners = 0,
-		   totalPeakListeners = 0,
-		   streamTotal = 0,
-		   movedTotal = 0;
-	map<size_t,uniString::utf8> streamBlocks;
-
-	if (refreshRequired == 0)
-	{
-		size_t inc = 0, sid = DEFAULT_SOURCE_STREAM;
-		do
-		{
-			utf8 streamBody = "";
-			sid = streamData::enumStreams(inc);
-
-			// check if we have an active source and valid sid before attempting to add
-			if (sid >= DEFAULT_SOURCE_STREAM)
-			{
-				streamData::streamInfo info;
-				streamData::extraInfo extra;
-				if (streamData::getStreamInfo(sid, info, extra))
-				{
-					stats::statsData_t data;
-					stats::getStats(sid, data);
-
-					// increment our stream total now that we know we have one
-					totalListeners += data.connectedListeners;
-					totalPeakListeners += data.peakListeners;
-
-					utf8 streamBody2 = "<tr><td align=\"center\">";
-					const bool slave = isCDNSlave(sid);
-					const bool master = isCDNMaster(sid);
-					if (master || slave)
-					{
-						streamBody2 += "<b><div class=\"en\" style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">" +
-									   getCDNMessage(master, slave) + "</div></b><br><br>";
-					}
-
-					const bool isListable = streamData::isAllowedType(info.m_uvoxDataType);
-					if (!isListable)
-					{
-						streamBody2 += "<b><div class=\"en\" style=\"padding:1em;margin-bottom:1em;display:inline-block;border-radius:0.5em;\">" +
-									   (info.m_uvoxDataType == OGG_DATA ? "OGG Vorbis based streams are not fully supported<br>and will not" :
-																		  utf8("NSV based streams are no longer able<br>to ")) +
-									   " be listed in the Shoutcast Directory.</div></b><br>";
-					}
-					/*else if (!info.m_streamPublic && gOptions.cdn().empty() && !slave && !master)
-					{
-						streamBody2 += "<b><div class=\"en\" style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">"
-									   "An authhash is not required for private streams.</div></b><br><br>";
-					}*/
-
-					if (isListable)
-					{
-						if (info.m_authHash.empty())
-						{
-							streamBody2 += "<div class=\"en\" style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">"
-										   "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Create Authhash</a>"
-										   "&nbsp; | &nbsp;<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Manage Authhash</a></div>";
-						}
-						else
-						{
-							// check that the authhash is a valid length
-							if (!yp2::isValidAuthhash(info.m_authHash))
-							{
-								streamBody2 += getBadAuthhashMessage(sid, info.m_authHash);
-							}
-							else
-							{
-								streamBody2 += "<div class=\"en\" style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">"
-											   + utf8((master || slave || info.m_streamPublic) && (info.m_streamSampleRate > 0) &&
-													  info.m_radionomyID.empty() && ((extra.ypErrorCode != YP_NOT_VISIBLE) &&
-													  (extra.ypErrorCode != YP_AUTH_ISSUE_CODE) && (extra.ypErrorCode != -1)) ?
-													  warningImage(false) + "&nbsp;&nbsp;<b>Please Register Your Authhash</b><br><br>" : "") +
-													  "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Update Authhash</a>&nbsp; | "
-													  "&nbsp;<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Manage Authhash</a></div>";
-							}
-						}
-					}
-					else
-					{
-						streamBody2 += "<div class=\"en\" style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">"
-									   "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Manage Authhash</a></div>";
-					}
-					streamBody2 += "</td></tr>";
-
-					streamData *sd = streamData::accessStream(sid);
-
-					streamBody += "<tr><td align=\"center\" class=\"tnl\">" +
-								  (sd && !sd->radionomyID().empty() && sd->streamAdvertMode() ?
-										  "<img border=\"0\" title=\"Active DNAS+ Stream\nMonetisation Enabled\" "
-										  "alt=\"Active DNAS+ Stream\nMonetisation Enabled\" style=\"vertical-align:middle\" "
-										  "src=\"images/adavail.png\">&nbsp;" : (utf8)"") +
-								  "<a href=\"index.html?sid=" + tos(sid) + "\">Stream #" + tos(sid) + "</a> "
-								  "<a href=\"admin.cgi?sid=" + tos(sid) + "\">(Stream Login)</a>" +
-								  " <a href=\"listen.pls?sid=" + tos(sid) + "\"><img border=\"0\" title=\"Listen to Stream\" "
-								  "alt=\"Listen to Stream\" style=\"vertical-align:middle\" src=\"images/listen.png\"></a>" +
-								  (sd && !sd->streamAlbumArt().empty() ? " <a href=\"/streamart?sid=" + tos(sid) + "\">"
-												"<img border=\"0\" title=\"View Stream Artwork\" alt=\"View Stream Artwork\" "
-												"style=\"vertical-align:middle;padding-left:0.5em;\" src=\"images/streamart.png\"></a>" : "") +
-								  (sd && !sd->streamPlayingAlbumArt().empty() ? " <a href=\"/playingart?sid=" + tos(sid) + "\">"
-												"<img border=\"0\" title=\"View Playing Artwork\" alt=\"View Playing Artwork\" "
-												"style=\"vertical-align:middle;padding-left:0.5em;\" src=\"images/playingart.png\"></a>" : "") +
-
-								  "</td></tr>" +
-								  (!info.m_contentType.empty() && (info.m_uvoxDataType == MP3_DATA) ?
-								  streamData::getHTML5Player(sid) : "") + streamBody2;
-
-					utf8 content = streamData::getContentType(info);
-					if (!info.m_streamUser.empty())
-					{
-						content = info.m_streamUser + " - " + content;
-					}
-
-					const int maxUsers = ((info.m_streamMaxUser > 0) && (info.m_streamMaxUser < gOptions.maxUser()) ? info.m_streamMaxUser : gOptions.maxUser());
-					const utf8 listeners = (data.connectedListeners ? (tos(data.connectedListeners) +
-										   (data.connectedListeners != data.uniqueListeners ?
-										   (" (" + tos(data.uniqueListeners) + " unique)") : "")) : "0") +
-										   (maxUsers > 0 ? " of " + tos(maxUsers) : " (unlimited)");
-
-					const utf8 listenLink = "<a href=\"listen.pls?sid=" + tos(sid) + "\"><img border=\"0\" title=\"Listen to Stream\" "
-											"alt=\"Listen to Stream\" style=\"vertical-align:middle\" src=\"images/listen.png\"></a>";
-
-					streamBody += "<tr><td align=\"center\">" +
-								  (info.m_streamPublic && extra.ypConnected ? "<a target=\"_blank\" href=\"http://directory.shoutcast.com/Search?query=" +
-								  urlUtils::escapeURI_RFC3986(info.m_streamName) + "\">" + aolxml::escapeXML(info.m_streamName) + "</a>" :
-								  aolxml::escapeXML(info.m_streamName)) + " (" + content + "&nbsp;@&nbsp;" +
-								  (info.m_streamBitrate > 0 ? tos(info.m_streamBitrate) : "unknown") +
-								  "&nbsp;kbps" + (info.m_vbr ? " (VBR)" : "") + ", " +
-								  sampleRateStr(info.m_streamSampleRate) + ")</td></tr>" +
-
-								  (!info.m_currentSong.empty() ? "<tr><td align=\"center\" style=\"padding-bottom:0;\">Playing: <b>"
-																 "<a href=\"currentsong?sid=" + tos(sid) + "\">" +
-																 aolxml::escapeXML(info.m_currentSong) + "</a></b></td></tr>" +
-																 (!info.m_comingSoon.empty() ? "<tr><td align=\"center\" style=\"padding-top:0;\">Coming: <b>"
-																  "<a href=\"currentsong?sid=" + tos(sid) + "\">" +
-																  aolxml::escapeXML(info.m_comingSoon) + "</a></b></td></tr>" : "") : "") +
-
-								  "<tr><td><table align=\"center\"><tr valign=\"top\"><td align=\"center\">"
-								  "<div style=\"text-align:left;\">Listeners: <b>" + listeners + "</b>" +
-								  (data.peakListeners > 0 ? "<br>Peak: <b>" + tos(data.peakListeners) + "</b>" : "") +
-								  (data.connectedListeners > 0 ? " [&nbsp;<a href=\"admin.cgi?sid=" +
-								  tos(sid) + "&amp;mode=kickdst&amp;kickdst=all\">kick all</a>&nbsp;]" : "") +
-								  "</div></td><td>&nbsp;&nbsp;&nbsp;</td><td align=\"center\">Status: <b>" +
-								  string(info.m_streamPublic && isListable ? (extra.ypConnected != 1 ? "" : string("Public</b><br>"
-
-								  "<div title=\"Shoutcast Directory ID\" alt=\"Shoutcast Directory ID\">"
-								  "<img border=\"0\" title=\"Shoutcast Directory ID\" alt=\"Shoutcast Directory ID\" style=\"vertical-align:bottom\" "
-								  "src=\"images/favicon.ico\"> ID: <b><a title=\"Shoutcast Directory ID\" href=\"http://" +
-								  gOptions.ypAddr().hideAsString() + ":" + tos(gOptions.ypPort()) + ((gOptions.ypPath() != utf8("/yp2")) ? "/yp" : "") +
-								  "/sbin/tunein-station.pls?id=" + info.m_stationID.hideAsString() + "\">" + info.m_stationID.hideAsString() + "</a></b></div>")) +
-
-								  (extra.ypConnected != 1 ? (!yp2::isValidAuthhash(info.m_authHash) ?
-												   " Not Listed - " + string(info.m_authHash.empty() ? "Empty" : "Invalid") + " Authhash" :
-												   (extra.ypErrorCode == 200 ? " Waiting on a Directory response" :
-														(extra.ypErrorCode == -1 ? "Unable to access the Directory.<br>Check the server log for more details.<br>The stream will behave like it is private." :
-														(extra.ypErrorCode == YP_MAINTENANCE_CODE ? "Directory is down for maintenance: <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2#YP_Server_Errors\">" +
-																									tos(extra.ypErrorCode) + "</a><br>Listeners are allowed, stream will not be listed" :
-														(extra.ypErrorCode == YP_AUTH_ISSUE_CODE ? " Please contact support as there is an issue with the authhash" : " Directory returned error code: <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2#YP_Server_Errors\">" + tos(extra.ypErrorCode) + "</a><br>" +
-														(extra.ypConnected != 2 ? "" : "during a listing update. The stream may not<br>appear in the Directory due to the error. The<br> server will attempt to re-list the stream."))))))  : "") :
-												   "Private") + "</td><td>&nbsp;&nbsp;&nbsp;</td>"
-								  "<td title=\"Source User Agent: " + addWBR((!info.m_sourceIdent.empty() ?
-								  info.m_sourceIdent : "Legacy / Unknown")) + "\">Source: <b>" +
-								  utf8(info.m_sourceType == streamData::SHOUTCAST1 ? "v1" :
-								  (info.m_sourceType == streamData::SHOUTCAST2 ? "v2" : "HTTP")) +
-								  (extra.isRelay ? " relay" + (extra.isBackup ? utf8("&nbsp;backup") : "") :
-								  (extra.isBackup ? "&nbsp;backup" : "")) + "</b> [&nbsp;<a href=\"admin.cgi?sid=" +
-								  tos(sid) + "&amp;mode=kicksrc\">" + (extra.isRelay || extra.isBackup ? "stop" : "kick") +
-								  "</a>&nbsp;]</td></tr></table></td></tr>"
-
-								  "<tr><td align=\"center\">"
-								  "<div style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\" class=\"en\">"
-								  "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=viewxml\">Summary</a>&nbsp; | &nbsp;"
-
-								  "<div style=\"display:inline-block;\"><a href=\"admin.cgi?sid=" +
-								  tos(sid) + "&amp;mode=viewxml&amp;page=3\">Listeners</a> [ <a href=\"admin.cgi?sid=" +
-								  tos(sid) + "&amp;mode=viewxml&amp;page=3&amp;ipcount=1\">Counts</a> ]</div>&nbsp; | &nbsp;"
-
-								  "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=viewxml&amp;page=4\">History</a>&nbsp; | &nbsp;"
-								  "<a href=\"currentmetadata?sid=" + tos(sid) + "\">Metadata</a>&nbsp; | &nbsp;"
-								  "<a href=\"stats?sid=" + tos(sid) + "\">Statistics</a>&nbsp;"
-								  "<a href=\"7?sid=" + tos(sid) + "\">&hellip;</a></div></td></tr>";
-
-					if (sd)
-					{
-						sd->releaseStream();
-					}
-
-					const utf8& message = streamData::getStreamMessage(sid);
-					if (!message.empty())
-					{
-						streamBody += "<tr><td align=\"center\" width=\"100%\"><table cellspacing=\"0\" cellpadding=\"15px;\" class=\"ent\" width=\"85%\">"
-									  "<tr><td valign=\"top\" align=\"center\" style=\"border:1px;display:block;\"><br>"
-									  "<div align=\"center\" class=\"infh\" style=\"margin-left:-15px;margin-right:-15px;margin-top:-14px;\">"
-									  "<b>Official Message Received</b></div>" + message + "</td></tr></table></td></tr>";
-					}
-
-					streamBlocks[sid] = streamBody;
-				}
-			}
-			++inc;
-		}
-		while (sid);
-
-		// now we check through for any known but inactive relays and then get them listed as well
-		vector<config::streamConfig> relayList(gOptions.getRelayList());
-		if (!relayList.empty())
-		{
-			for (vector<config::streamConfig>::const_iterator i = relayList.begin(); i != relayList.end(); ++i)
-			{
-				sid = (*i).m_streamID;
-				const bool exists = !(*i).m_relayUrl.url().empty();
-				if (exists && !streamData::isSourceConnected(sid))
-				{
-					stats::statsData_t data;
-					stats::getStats(sid, data);
-
-					// increment our stream total now that we know we have one
-					totalListeners += data.connectedListeners;
-					totalPeakListeners += data.peakListeners;
-
-					streamData::streamInfo info;
-					streamData::extraInfo extra;
-					streamData::getStreamInfo(sid, info, extra);
-					utf8 listeners, content, streamBody2,
-						 streamBody = "<tr align=\"center\" class=\"tnl\"><td>"
-									  "<a href=\"index.html?sid=" + tos(sid) + "\">Stream #" + tos(sid) + "</a> "
-									  "<a href=\"admin.cgi?sid=" + tos(sid) + "\">(Stream Login)</a></td></tr>";
-
-					const utf8 movedUrl = gOptions.stream_movedUrl(sid);
-					if (movedUrl.empty())
-					{
-						const bool slave = isCDNSlave(sid);
-						const bool master = isCDNMaster(sid);
-						if (master || slave)
-						{
-							streamBody2 = "<div class=\"en\" style=\"padding:1emx;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">" +
-										  getCDNMessage(master, slave) + "</div><br><br>";
-						}
-						else
-						{
-							if ((*i).m_authHash.empty())
-							{
-								streamBody2 += "<div class=\"en\" style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">"
-											   "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Create Authhash</a>"
-											   "&nbsp; | &nbsp;<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Manage Authhash</a></div>";
-							}
-							else
-							{
-								// check that the authhash is a valid length
-								if (!yp2::isValidAuthhash((*i).m_authHash))
-								{
-									streamBody2 += getBadAuthhashMessage(sid, info.m_authHash);
-								}
-								else
-								{
-									streamBody2 += "<div class=\"en\" style=\"padding:1em;margin-bottom:0.5em;display:inline-block;border-radius:0.5em;\">"
-												   + utf8((master || slave || info.m_streamPublic) && (info.m_streamSampleRate > 0) &&
-														  info.m_radionomyID.empty() && ((extra.ypErrorCode != YP_NOT_VISIBLE) &&
-														  (extra.ypErrorCode != YP_AUTH_ISSUE_CODE) && (extra.ypErrorCode != -1)) ?
-														  warningImage(false) + "&nbsp;&nbsp;<b>Please Register Your Authhash</b><br><br>" : "") +
-														  "<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Update Authhash</a>&nbsp; | "
-														  "&nbsp;<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=register\">Manage Authhash</a></div>";
-								}
-							}
-
-							if (!streamBody2.empty())
-							{
-								streamBody2 += "<br>";
-							}
-						}
-					}
-					else
-					{
-						streamBody2 = "<b>This stream is configured as having been moved or retired.<br>"
-									  "No source connections will be allowed for this stream.<br><br>"
-									  "All client connections received will be redirected to:<br>" +
-									  urlLink(movedUrl) + "</b>";
-						++movedTotal;
-					}
-
-					if (!streamBody2.empty())
-					{
-						streamBody += "<tr><td align=\"center\">" + streamBody2 + "</td></tr>";
-					}
-
-					// strip down the source address for display output
-					const utf8 srcAddr = niceURL(gOptions.stream_relayURL(sid));
-					if (movedUrl.empty())
-					{
-						bool noEntry = false;
-						const bool isListable = streamData::isAllowedType(info.m_uvoxDataType);
-						streamBody += "<tr><td><table align=\"center\"><tr valign=\"top\">"
-									  "<td" + (!extra.isConnected ? " rowspan=\"2\"" : (utf8)"") +
-									  " align=\"right\">Status: <b>" + string(info.m_streamPublic && isListable ? (extra.ypConnected != 1 ? "" : string("Public")) +
-									  (extra.ypConnected != 1 ? (!yp2::isValidAuthhash(info.m_authHash) ?
-													   " Not Listed - " + string(info.m_authHash.empty() ? "Empty" : "Invalid") + " Authhash" :
-													   (extra.ypErrorCode == 200 ? " Waiting on a Directory response" :
-															(extra.ypErrorCode == -1 ? "Unable to access the Directory.<br>Check the error server for more details.<br>The stream will behave like it is private." :
-															(extra.ypErrorCode == YP_MAINTENANCE_CODE ? "Directory is down for maintenance: <a target=\"_blank\" "
-																										"href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2#YP_Server_Errors\">" +
-																										tos(extra.ypErrorCode) + "</a><br>Listeners are allowed, stream will not be listed" :
-															(extra.ypErrorCode == YP_AUTH_ISSUE_CODE ? " Please contact support as there is an issue with the authhash" : " Directory returned "
-																									   "error code: <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2#YP_Server_Errors\">" + tos(extra.ypErrorCode) + "</a><br>" +
-															(extra.ypConnected != 2 ? "" : "during a listing update. The stream may not<br>appear in the Directory due to the error. The<br> server will attempt to re-list the stream."))))))  : "") :
-													   "Private") + "</b></td><td" + (!extra.isConnected ? " rowspan=\"2\"" : (utf8)"") + ">&nbsp;&nbsp;&nbsp;</td>"
-													   "<td title=\"Source User Agent: " + addWBR((!info.m_sourceIdent.empty() ? info.m_sourceIdent : "Legacy / Unknown")) + "\">"
-													   "Source: <b>" + (!(streamData::isRelayActive(sid, noEntry) == 1) ?
-															"Inactive relay</b> [&nbsp;<a href=\"admin.cgi?sid=" + tos(sid) +
-															"&amp;mode=startrelay\">start relay</a>&nbsp;]<br>Using: <b>" + urlLink(srcAddr) + "</b>" :
-															"Connection pending to " + urlLink(srcAddr) + "</b>"
-															" [&nbsp;<a href=\"admin.cgi?sid=" + tos(sid) + "&amp;mode=kicksrc\">abort</a>&nbsp;]") +
-
-									  // if it's an inactive stream then we also want to show any remaining connections
-									  "</td></tr>" + (data.connectedListeners > 0 ? "<tr valign=\"top\">"
-									  "<td align=\"center\"><div style=\"text-align:left;padding-top:0.5em;\">Listeners: <b>" +
-									  tos(data.connectedListeners) + "</b>" + (data.peakListeners > 0 ? " &nbsp;|&nbsp; Peak: <b>" +
-									  tos(data.peakListeners) + "</b>" : "") + " [&nbsp;<a href=\"admin.cgi?sid=" + tos(sid) +
-									  "&amp;mode=kickdst&amp;kickdst=all\">kick all</a>&nbsp;]" + "</div></td></tr>" : "") +									  
-									  "</table></td></tr>";
-					}
-					streamBlocks[sid] = streamBody;
-				}
-			}
-		}
-
-		// now we check through for any known but in-active sources & then get them listed as well
-		// new to build 70 but for fire builds makes it easier to see if a feed stream is inactive
-		config::streams_t stream_configs;
-		gOptions.getStreamConfigs(stream_configs);
-		if (!stream_configs.empty())
-		{
-			for (config::streams_t::const_iterator i = stream_configs.begin(); i != stream_configs.end(); ++i)
-			{
-				if (streamBlocks.find((*i).first) == streamBlocks.end())
-				{
-					stats::statsData_t data;
-					stats::getStats((*i).first, data);
-
-					// increment our stream total now that we know we have one
-					totalListeners += data.connectedListeners;
-					totalPeakListeners += data.peakListeners;
-
-					utf8 streamBody = "<tr><td align=\"center\" class=\"tnl\">"
-									  "<a href=\"index.html?sid=" + tos((*i).first) + "\">Stream #" + tos((*i).first) + "</a> "
-									  "<a href=\"admin.cgi?sid=" + tos((*i).first) + "\">(Stream Login)</a></td></tr>",
-						 streamBody2;
-
-					const utf8 movedUrl = gOptions.stream_movedUrl((*i).first);
-					if (movedUrl.empty())
-					{
-						utf8 authhash = (*i).second.m_authHash;
-						if (authhash.empty())
-						{
-							authhash = gOptions.stream_authHash((*i).first);
-						}
-
-						if (authhash.empty())
-						{
-							streamBody2 += "<div class=\"en\" style=\"padding:1em;margin-bottom:1em;display:inline-block;border-radius:0.5em;\">"
-										   "<a href=\"admin.cgi?sid=" + tos((*i).first) + "&amp;mode=register\">Create Authhash</a>"
-										   "&nbsp; | &nbsp;<a href=\"admin.cgi?sid=" + tos((*i).first) + "&amp;mode=register\">Manage Authhash</a></div>";
-						}
-						else
-						{
-							// check that the authhash is a valid length
-							if (!yp2::isValidAuthhash(authhash))
-							{
-								streamBody2 += getBadAuthhashMessage((*i).first, authhash);
-							}
-							else
-							{
-								streamBody2 += "<div class=\"en\" style=\"padding:1em;margin-bottom:1em;display:inline-block;border-radius:0.5em;\">"
-											   // TODO if the stream is not active then we don't know the admode
-											   //	   status and so it's easier to not show the warning until
-											   //	   we've got something that will allow us to check authhash.
-											   //+ utf8(info.m_radionomyID.empty() ? warningImage(false) + "&nbsp;&nbsp;<b>Please Register Your Authhash</b><br><br>" : "") +
-											   "<a href=\"admin.cgi?sid=" + tos((*i).first) + "&amp;mode=register\">Update Authhash</a>"
-											   "&nbsp; |&nbsp;<a href=\"admin.cgi?sid=" + tos((*i).first) + "&amp;mode=register\">Manage Authhash</a></div>";
-							}
-						}
-
-						if (!streamBody2.empty())
-						{
-							streamBody2 += "<br>";
-						}
-						streamBody2 += "<b>This stream is configured but has no source connected.</b>" +
-									   (data.connectedListeners > 0 ? "<div style=\"text-align:center;padding-top:0.5em;\">Listeners: "
-									   "<b>" + tos(data.connectedListeners) + "</b>" + (data.peakListeners > 0 ? " &nbsp;|&nbsp; "
-									   "Peak: <b>" + tos(data.peakListeners) + "</b>" : "") + " [&nbsp;<a href=\"admin.cgi?sid=" +
-									   tos(sid) + "&amp;mode=kickdst&amp;kickdst=all\">kick all</a>&nbsp;]" + "</div>" : "");
-					}
-					else
-					{
-						streamBody2 += "<b>This stream is configured as having been moved or retired.<br>"
-									   "No source connections will be allowed for this stream.<br><br>"
-									   "All client connections received will be redirected to:<br>" +
-									   urlLink(movedUrl) + "</b>";
-						++movedTotal;
-					}
-
-					if (!streamBody2.empty())
-					{
-						streamBody += "<tr><td align=\"center\">" + streamBody2 + "</td></tr>";
-					}
-
-					streamBlocks[(*i).first] = streamBody;
-				}
-			}
-		}
-
-		// this will now do a final check for any listeners which are on
-		// an un-confiured stream but are being provided a 'backupfile'.
-		const streamData::streamIDs_t activeIds = stats::getActiveStreamIds();
-		if (!activeIds.empty())
-		{
-			for (streamData::streamIDs_t::const_iterator i = activeIds.begin(); i != activeIds.end(); ++i)
-			{
-				if (streamBlocks.find((*i)) == streamBlocks.end())
-				{
-					stats::statsData_t data;
-					stats::getStats((*i), data);
-
-					// increment our stream total now that we know we have one
-					totalListeners += data.connectedListeners;
-					totalPeakListeners += data.peakListeners;
-
-					utf8 streamBody = "<tr><td align=\"center\" class=\"tnl\">"
-									  "<a href=\"index.html?sid=" + tos((*i)) + "\">Stream #" + tos((*i)) + "</a> "
-									  "<a href=\"admin.cgi?sid=" + tos((*i)) + "\">(Stream Login)</a></td></tr>",
-						 streamBody2;
-						streamBody2 += "<b>This stream is not configured and has no source connected.</b>" +
-									   (data.connectedListeners > 0 ? "<div style=\"text-align:center;padding-top:0.5em;\">Listeners: "
-									   "<b>" + tos(data.connectedListeners) + "</b>" + (data.peakListeners > 0 ? " &nbsp;|&nbsp; "
-									   "Peak: <b>" + tos(data.peakListeners) + "</b>" : "") + " [&nbsp;<a href=\"admin.cgi?sid=" +
-									   tos(sid) + "&amp;mode=kickdst&amp;kickdst=all\">kick all</a>&nbsp;]" + "</div>" : "");
-
-					if (!streamBody2.empty())
-					{
-						streamBody += "<tr><td align=\"center\">" + streamBody2 + "</td></tr>";
-					}
-
-					streamBlocks[(*i)] = streamBody;
-				}
-			}
-		}
-
-		// now build up the output since if we've factored in inactive relay connections
-		// then we could otherwise be showing the streams in an out of order manner
-		for (map<size_t,uniString::utf8>::const_iterator i = streamBlocks.begin(); i != streamBlocks.end(); ++i)
-		{
-			if (!(*i).second.empty())
-			{
-				if (streamTotal > 0)
-				{
-					streams += "<tr><td align=\"center\"><br><hr><br></td></tr>";
-				}
-				streams += (*i).second;
-				++streamTotal;
-			}
-		}
-
-		// output a refresh option if there were no active streams found
-		if (!streamTotal)
-		{
-			if (isPostSetup() && isPostSetup() <= 2)
-			{
-				streams += "<tr><td align=\"center\">"
-						   "<br><div align=\"center\" class=\"infh\" style=\"border-bottom:0;top:-19px;\">"
-						   "Setup Successfully Completed</div></td></tr><tr><td align=\"center\">"
-						   "No stream sources are currently connected.<br>"
-						   "To find newly connected sources, <a href=\"admin.cgi?sid=0\">click here.</a></td></tr>";
-				setPostSetup(isPostSetup() + 1);
-			}
-			else
-			{
-				streams += "<tr><td align=\"center\">No stream sources are currently connected.<br>"
-						   "To find newly connected sources, <a href=\"admin.cgi?sid=0\">click here.</a><br><br></td></tr>";
-			}
-		}
-		else
-		{
-			setPostSetup(0);
-		}
-	}
-	else if (refreshRequired > 0)
-	{
-		streams += "<tr><td align=\"center\" id=\"counter\">"
-				   "Waiting " + tos(refreshRequired) + " second" + ((refreshRequired > 1) ? "s" : (utf8)"") +
-				   " for any configuration changes to take effect.<br>"
-				   "If not automatically redirected or do not want to wait, "
-				   "<a href=\"admin.cgi?sid=0\">click here.</a><br><br></td></tr>";
-	}
-	else if (refreshRequired < 0)
-	{
-		streams += "<tr><td align=\"center\" id=\"counter\">"
-				   "Waiting " + tos(abs(refreshRequired)) + " second" + ((abs(refreshRequired) > 1) ? "s" : (utf8)"") +
-				   " whilst checking for any DNAS updates.<br>If not automatically redirected or do not want to wait, "
-				   "<a href=\"admin.cgi?sid=0\">click here.</a><br><br></td></tr>";
-	}
-
-	utf8 log = gOptions.realLogFile();
-	utf8::size_type pos = log.rfind(fileUtil::getFilePathDelimiter());
-	if ((pos != utf8::npos))
-	{
-		log = log.substr(pos + 1);
-	}
-
-	utf8 conf = gOptions.confFile();
-	pos = conf.rfind(fileUtil::getFilePathDelimiter());
-	if ((pos != utf8::npos))
-	{
-		conf = conf.substr(pos + 1);
-	}
-
-	const bool requires = gOptions.requireStreamConfigs();
-	body += "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" width=\"100%\">"
-			"<tr><td class=\"tsp\" align=\"center\">"
-			"Available Streams: " + tos(streamTotal - movedTotal) +
-			"&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;"
-			"Server Listeners: " + tos(totalListeners) +
-			"&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;"
-			"Peak Server Listeners: " + tos(totalPeakListeners) +
-			"&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;"
-			"Unique Listeners: " + tos(stats::getTotalUniqueListeners()) +
-			"</td></tr></table>"
-
-			"<div style=\"padding:0 1em;\">"
-			"<br><table width=\"100%\" align=\"center\"><tr valign=\"top\"><td>"
-
-			"<table class=\"en\" cellpadding=\"15px\" style=\"border:0;display:block;padding-right:1em;\"><tr>"
-			"<td valign=\"top\" style=\"max-width:20em;\">"
-			"<div align=\"center\" class=\"infh\"><b>Server Management</b></div>"
-			"Rotate Log File(s):"
-			" [&nbsp;<a href=\"admin.cgi?mode=rotate\">All</a>&nbsp;]"
-			"&nbsp; [&nbsp;<a href=\"admin.cgi?mode=rotate&amp;files=log\">Log</a>&nbsp;]"
-			"&nbsp; [&nbsp;<a href=\"admin.cgi?mode=rotate&amp;files=w3c\">W3C</a>&nbsp;]"
-			"<br><br>"
-
-			// trim down the file paths shown to make things less cluttered on hosted setups
-			// places the full path in the 'title' so it can still be found if required, etc
-			"Log File: <b title=\"" +
-			aolxml::escapeXML(fileUtil::getFullFilePath(gOptions.realLogFile())) +
-			"\">" + aolxml::escapeXML(fileUtil::stripPath(log)) + "</b><br><br>"
-			"Configuration File: <b title=\"" +
-			aolxml::escapeXML(fileUtil::getFullFilePath(gOptions.confFile())) +
-			"\">" + aolxml::escapeXML(fileUtil::stripPath(conf)) + "</b><br>"
-			"[&nbsp;<a href=\"admin.cgi?mode=config\">View</a>&nbsp;]"
-			"&nbsp; [&nbsp;<a href=\"admin.cgi?mode=reload\">Update</a>&nbsp;]"
-			"&nbsp; [&nbsp;<a href=\"admin.cgi?mode=reload&amp;force=1\">Forced</a>&nbsp;]"
-
-			"<br><br><hr><br>Source Connection Details:"
-			" [&nbsp;<a href=\"admin.cgi?mode=sources\">View</a>&nbsp;]<br>" +
-
-			(requires ? "<br><b>Note:</b> Only pre-configured streams are "
-						"allowed to connect / be run on this server.<br>" : "") +
-
-			"<br>Advert Group Details:"
-			" [&nbsp;<a href=\"admin.cgi?mode=adgroups\">View</a>&nbsp;]<br>"
-
-			"<br><hr><br>Stream Configuration(s):"
-			" [&nbsp;<a href=\"admin.cgi?sid=1&amp;mode=viewjson&amp;page=6\">JSON</a>&nbsp;]"
-			" &nbsp;[&nbsp;<a href=\"admin.cgi?sid=1&amp;mode=viewxml&amp;page=6\">XML</a>&nbsp;]<br>"
-
-			"<br>View Stream Statistics:"
-			" [&nbsp;<a href=\"statistics?json=1\">JSON</a>&nbsp;]"
-			"&nbsp; [&nbsp;<a href=\"statistics\">XML</a>&nbsp;]<br>"
-
-			"<br><hr><br>Manage Stream Source(s):<br>"
-			"[&nbsp;<a href=\"admin.cgi?mode=startrelays\">Start Relays</a>&nbsp;]"
-			"&nbsp; [&nbsp;<a href=\"admin.cgi?mode=kicksources\">Kick / Stop All</a>&nbsp;]<br>"
-
-			"<br><hr><br>Reload Banned List(s):"
-			" [&nbsp;<a href=\"admin.cgi?mode=bannedlist\">Update</a>&nbsp;]<br>"
-
-			"<br>Reload Reserved List(s):"
-			" [&nbsp;<a href=\"admin.cgi?mode=reservelist\">Update</a>&nbsp;]<br>"
-
-			"<br>Reload User Agent List(s):"
-			" [&nbsp;<a href=\"admin.cgi?mode=useragentlist\">Update</a>&nbsp;]<br>"
-
-			"<br>Reload Admin Access List:"
-			" [&nbsp;<a href=\"admin.cgi?mode=adminlist\">Update</a>&nbsp;]<br>"
-
-			"<br>Clear Resource / Page Cache:"
-			" [&nbsp;<a href=\"admin.cgi?mode=clearcache\">Clear</a>&nbsp;]<br>"
-
-			"<br><hr><br>Debugging Options:<br>"
-			"[&nbsp;<a href=\"admin.cgi?mode=debug&amp;option=all&amp;on=true\">Enable&nbsp;All</a>&nbsp;]"
-			"&nbsp; [&nbsp;<a href=\"admin.cgi?mode=debug&amp;option=all&amp;on=false\">Disable&nbsp;All</a>&nbsp;]"
-			"&nbsp; [&nbsp;<a href=\"admin.cgi?mode=debug\">Edit</a>&nbsp;]"
-
-			"<br><br><hr><br>New DNAS Release: [&nbsp;<a href=\"admin.cgi?mode=version\">Check</a>&nbsp;]<br>"
-			"Last checked: <b>" + getCheckedDuration((size_t)(m_lastActivityTime - last_update_check)) + "</b>"
-			"</td></tr></table></td><td>";
-
-	// display update message where applicable
-	updater::verInfo ver;
-	utf8 update_msg;
-	if (updater::getNewVersion(ver))
-	{
-		update_msg += "<tr><td align=\"center\" class=\"tnl\">"
-					  "<table cellspacing=\"0\" cellpadding=\"5\"><tr><td align=\"center\" class=\"infb\">"
-					  "<div align=\"center\" class=\"infh\"><b>New DNAS Version Available</b></div>A new version of the DNAS is now available:"
-					  " <b>" + ver.ver + "</b><br><br>" +
-					  (!ver.url.empty() ?
-					  ((ver.downloaded && !ver.fn.empty()) ? "The new version has been automatically downloaded to:<br><br><b>" + aolxml::escapeXML(ver.fn) + "</b><br><br>"
-															 "Please install this update as soon as possible, thank you.<br><br>"
-															 "Specific changes for this version can be found <a href=\"" + aolxml::escapeXML(ver.info) + "\"><b>here</b></a>."
-														   :
-															"Click <a href=\"" + aolxml::escapeXML(ver.url) + "\"><b>here</b></a> to download the new version of the DNAS.<br><br>"
-															"Please install this update as soon as possible, thank you.<br><br>"
-															"Specific changes for this version can be found <a href=\"" + aolxml::escapeXML(ver.info) + "\"><b>here</b></a>.") : "") +
-					  (!ver.message.empty() ? "<br>" + ver.message :
-					   (!ver.log.empty() ? "<br>For more details of the changes in this version see <a target=\"_blank\" href=\"" + aolxml::escapeXML(ver.log) + "\">" +
-					  "<b>here</b></a>." : "")) + "</td></tr></table><br></td></tr>"
-					  "<tr><td align=\"center\"><hr><br></td></tr>";
-	}
-
-	body += "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">" +
-			update_msg + streams + "</table></td></tr></table></div>" +
-			"<script type=\"text/javascript\">"
-			"function $(id){return document.getElementById(id);}" EL;
-
-	// for a refresh, we'll show a countdown so it's obvious that something is happening
-	if (refreshRequired > 0)
-	{
-		body += "var c = " + tos(refreshRequired) + ";" EL
-				"function counter(){" EL
-				"c--;" EL
-				"if(c>0){" EL
-				"$('counter').innerHTML=\"Waiting \"+c+\" second\" + (c > 1 ? \"s\" : \"\") + \" for any configuration changes to take effect.<br>"
-				"If not automatically redirected or do not want to wait, <a href=\\\"admin.cgi\\\">click here.</a><br><br>\";" EL
-				"}" EL
-				"}" EL
-				"setInterval(counter,1000);" EL;
-	}
-	else if (refreshRequired < 0)
-	{
-		body += "var c = " + tos(abs(refreshRequired)) + ";" EL
-				"function counter(){" EL
-				"c--;" EL
-				"if(c>0){" EL
-				"$('counter').innerHTML=\"Waiting \"+c+\" second\" + (c > 1 ? \"s\" : \"\") + \" whilst checking for any DNAS updates.<br>"
-				"If not automatically redirected or do not want to wait, <a href=\\\"admin.cgi\\\">click here.</a><br><br>\";" EL
-				"}" EL
-				"}" EL
-				"setInterval(counter,1000);" EL;
-	}
-
-	body += getUptimeScript(true) + "</script>" +
-			getIEFlexFix() + getHTML5Remover() + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_bandwidth_html(const int refreshRequired) throw()
-{
-	const __uint64 all = bandWidth::getAmount(bandWidth::ALL),
-				   sent = bandWidth::getAmount(bandWidth::ALL_SENT),
-				   recv = bandWidth::getAmount(bandWidth::ALL_RECV);
-	const time_t running = (::time(NULL) - g_upTime);
-
-	utf8 header = MSG_NO_CLOSE_200,
-		 body = getServerAdminHeader("Server Bandwidth Usage", refreshRequired, "&amp;mode=bandwidth&amp;refresh=" + tos(abs(refreshRequired)), 1) +
-				"<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" width=\"100%\">"
-				"<tr><td class=\"tsp\" align=\"center\">"
-				"Total: <b>" + formatSizeString(all) + (all > 0 ? " (~" + formatSizeString((all / running) * 86400) + " / day)" : "") + "</b>"
-				"&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;"
-				"Sent: <b>" + formatSizeString(sent) + (sent > 0 ? " (~" + formatSizeString((sent / running) * 86400) + " / day)" : "") + "</b>"
-				"&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;"
-				"Received: <b>" + formatSizeString(recv) + (recv > 0 ? " (~" + formatSizeString((recv / running) * 86400) + " / day)" : "") + "</b>"
-				"</td></tr></table><div><br>"
-
-				"<table align=\"center\" class=\"en\" cellspacing=\"0\" cellpadding=\"3\" style=\"border:0;\">"
-
-				"<tr class=\"infh\"><td class=\"t\">&nbsp;Total Client Data Sent</td>"
-				"<td class=\"st\"><b>" + formatSizeString(bandWidth::getAmount(bandWidth::ALL_CLIENT_SENT)) + "</b></td></tr>"
-				"<tr class=\"t\"><td>v2 Client(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::CLIENT_V2_SENT)) + "</td></tr>"
-				"<tr class=\"t\"><td>v1 Client(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::CLIENT_V1_SENT)) + "</td></tr>"
-				"<tr class=\"t\"><td>HTTP Client(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::CLIENT_HTTP_SENT)) + "</td></tr>"
-				"<tr class=\"t\"><td>FLV Client(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::CLIENT_FLV_SENT)) + "</td></tr>"
-#if 0
-				"<tr class=\"t\"><td>M4A Client(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::CLIENT_M4A_SENT)) + "</td></tr>"
-#endif
-				"<tr><td style=\"border:0;\">&nbsp;</td></tr>"
-
-				"<tr class=\"infh\"><td class=\"t\">&nbsp;Total Source Data Received</td>"
-				"<td class=\"st\"><b>" + formatSizeString(bandWidth::getAmount(bandWidth::ALL_SOURCE_RECV)) + "</b></td></tr>"
-				"<tr class=\"t\"><td>v2 Source(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::SOURCE_V2_RECV)) + "</td></tr>"
-				"<tr class=\"t\"><td>v1 Source(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::SOURCE_V1_RECV)) + "</td></tr>"
-				"<tr><td style=\"border:0;\">&nbsp;</td></tr>"
-
-				"<tr class=\"infh\"><td class=\"t\">&nbsp;Total Source Data Sent</td>"
-				"<td class=\"st\"><b>" + formatSizeString(bandWidth::getAmount(bandWidth::ALL_SOURCE_SENT)) + "</b></td></tr>"
-				"<tr class=\"t\"><td>v2 Source(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::SOURCE_V2_SENT)) + "</td></tr>"
-				"<tr class=\"t\"><td>v1 Source(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::SOURCE_V1_SENT)) + "</td></tr>"
-				"<tr><td style=\"border:0;\">&nbsp;</td></tr>"
-
-				"<tr class=\"infh\"><td class=\"t\">&nbsp;Total Relay Data Received</td>"
-				"<td class=\"st\"><b>" + formatSizeString(bandWidth::getAmount(bandWidth::ALL_RELAY_RECV)) + "</b></td></tr>"
-				"<tr class=\"t\"><td>Handshaking</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::RELAY_MISC_RECV)) + "</td></tr>"
-				"<tr class=\"t\"><td>v2 Relay(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::RELAY_V2_RECV)) + "</td></tr>"
-				"<tr class=\"t\"><td>v1 Relay(s)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::RELAY_V1_RECV)) + "</td></tr>"
-				"<tr><td style=\"border:0;\">&nbsp;</td></tr>"
-
-				"<tr class=\"infh\"><td class=\"t\">&nbsp;Total Web Page, XML and Resoures&nbsp;&nbsp;</td>"
-				"<td class=\"st\"><b>" + formatSizeString(bandWidth::getAmount(bandWidth::ALL_WEB)) + "</b></td></tr>"
-				"<tr class=\"t\"><td>Public (e.g. /stats or index.html)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::PUBLIC_WEB)) + "</td></tr>"
-				"<tr class=\"t\"><td>Private (e.g. /admin.cgi pages)</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::PRIVATE_WEB)) + "</td></tr>"
-				"<tr><td style=\"border:0;\">&nbsp;</td></tr>"
-
-				"<tr class=\"infh\"><td class=\"t\">&nbsp;Total Other Data</td>"
-				"<td class=\"st\"><b>" + formatSizeString(bandWidth::getAmount(bandWidth::ALL_OTHER)) + "</b></td></tr>"
-				"<tr class=\"t\"><td>Flash Policy Server</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::FLASH_POLICY)) + "</td></tr>"
-				"<tr class=\"t\"><td>v2 Relay(s) Sent</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::RELAY_V2_SENT)) + "</td></tr>"
-				"<tr class=\"t\"><td>YP Sent</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::YP_SENT)) + "</td></tr>"
-				"<tr class=\"t\"><td>YP Received</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::YP_RECV)) + "</td></tr>"
-				"<tr class=\"t\"><td>Listener Authentication and Metrics</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::AUTH_AND_METRICS)) + "</td></tr>"
-				"<tr class=\"t\"><td>Advert Retrieval</td>"
-				"<td class=\"s\">" + formatSizeString(bandWidth::getAmount(bandWidth::ADVERTS)) + "</td></tr>"
-
-				"</table></div>" + getUptimeScript() + getIEFlexFix() + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_bandwidth_xml() throw()
-{
-	utf8 header = "HTTP/1.1 200 OK\r\nContent-Type:text/xml\r\n",
-		 body = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>"
-				"<SHOUTCASTSERVER>"
-
-				"<TOTAL>" + tos(bandWidth::getAmount(bandWidth::ALL)) + "</TOTAL>"
-				"<SENT>" + tos(bandWidth::getAmount(bandWidth::ALL_SENT)) + "</SENT>"
-				"<RECV>" + tos(bandWidth::getAmount(bandWidth::ALL_RECV)) + "</RECV>"
-				"<TIME>" + tos((::time(NULL) - g_upTime)) + "</TIME>"
-		
-				"<CLIENTSENT>"
-				"<TOTAL>" + tos(bandWidth::getAmount(bandWidth::ALL_CLIENT_SENT)) + "</TOTAL>"
-				"<V2>" + tos(bandWidth::getAmount(bandWidth::CLIENT_V2_SENT)) + "</V2>"
-				"<V1>" + tos(bandWidth::getAmount(bandWidth::CLIENT_V1_SENT)) + "</V1>"
-				"<HTTP>" + tos(bandWidth::getAmount(bandWidth::CLIENT_HTTP_SENT)) + "</HTTP>"
-				"<FLV>" + tos(bandWidth::getAmount(bandWidth::CLIENT_FLV_SENT)) + "</FLV>"
-#if 0
-				"<M4A>" + tos(bandWidth::getAmount(bandWidth::CLIENT_M4A_SENT)) + "</M4A>"
-#endif
-				"</CLIENTSENT>"
-
-				"<SOURCERECV>"
-				"<TOTAL>" + tos(bandWidth::getAmount(bandWidth::ALL_SOURCE_RECV)) + "</TOTAL>"
-				"<V2>" + tos(bandWidth::getAmount(bandWidth::SOURCE_V2_RECV)) + "</V2>"
-				"<V1>" + tos(bandWidth::getAmount(bandWidth::SOURCE_V1_RECV)) + "</V1>"
-				"</SOURCERECV>"
-
-				"<SOURCESENT>"
-				"<TOTAL>" + tos(bandWidth::getAmount(bandWidth::ALL_SOURCE_SENT)) + "</TOTAL>"
-				"<V2>" + tos(bandWidth::getAmount(bandWidth::SOURCE_V2_SENT)) + "</V2>"
-				"<V1>" + tos(bandWidth::getAmount(bandWidth::SOURCE_V1_SENT)) + "</V1>"
-				"</SOURCESENT>"
-
-				"<RELAYRECV>"
-				"<TOTAL>" + tos(bandWidth::getAmount(bandWidth::ALL_RELAY_RECV)) + "</TOTAL>"
-				"<MISC>" + tos(bandWidth::getAmount(bandWidth::RELAY_MISC_RECV)) + "</MISC>"
-				"<V2>" + tos(bandWidth::getAmount(bandWidth::RELAY_V2_RECV)) + "</V2>"
-				"<V1>" + tos(bandWidth::getAmount(bandWidth::RELAY_V1_RECV)) + "</V1>"
-				"</RELAYRECV>"
-
-				"<WEBPAGES>"
-				"<TOTAL>" + tos(bandWidth::getAmount(bandWidth::ALL_WEB)) + "</TOTAL>"
-				"<PUBLIC>" + tos(bandWidth::getAmount(bandWidth::PUBLIC_WEB)) + "</PUBLIC>"
-				"<PRIVATE>" + tos(bandWidth::getAmount(bandWidth::PRIVATE_WEB)) + "</PRIVATE>"
-				"</WEBPAGES>"
-
-				"<OTHER>"
-				"<TOTAL>" + tos(bandWidth::getAmount(bandWidth::ALL_OTHER)) + "</TOTAL>"
-				"<FLASH>" + tos(bandWidth::getAmount(bandWidth::FLASH_POLICY)) + "</FLASH>"
-				"<RELAYSENTV2>" + tos(bandWidth::getAmount(bandWidth::RELAY_V2_SENT)) + "</RELAYSENTV2>"
-				"<YPSENT>" + tos(bandWidth::getAmount(bandWidth::YP_SENT)) + "</YPSENT>"
-				"<YPRECV>" + tos(bandWidth::getAmount(bandWidth::YP_RECV)) + "</YPRECV>"
-				"<AUTH_METRICS>" + tos(bandWidth::getAmount(bandWidth::AUTH_AND_METRICS)) + "</AUTH_METRICS>"
-				"<ADVERTS>" + tos(bandWidth::getAmount(bandWidth::ADVERTS)) + "</ADVERTS>"
-				"</OTHER>"
-				"</SHOUTCASTSERVER>";
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_bandwidth_json(const uniString::utf8& callback) throw()
-{
-	const bool jsonp = !callback.empty();
-	utf8 header = "HTTP/1.1 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n",
-		 body = (jsonp ? callback + "(" : "") +
-				"{"
-				"\"total\":" + tos(bandWidth::getAmount(bandWidth::ALL)) + ","
-				"\"sent\":" + tos(bandWidth::getAmount(bandWidth::ALL_SENT)) + ","
-				"\"recv\":" + tos(bandWidth::getAmount(bandWidth::ALL_RECV)) + ","
-				"\"time\":" + tos((::time(NULL) - g_upTime)) + ","
-				"\"clientsent\":{"
-				"\"total\":" + tos(bandWidth::getAmount(bandWidth::ALL_CLIENT_SENT)) + ","
-				"\"v2\":" + tos(bandWidth::getAmount(bandWidth::CLIENT_V2_SENT)) + ","
-				"\"v1\":" + tos(bandWidth::getAmount(bandWidth::CLIENT_V1_SENT)) + ","
-				"\"http\":" + tos(bandWidth::getAmount(bandWidth::CLIENT_HTTP_SENT)) + ","
-				"\"flv\":" + tos(bandWidth::getAmount(bandWidth::CLIENT_FLV_SENT)) +
-#if 0
-				","
-				"\"m4a\":" + tos(bandWidth::getAmount(bandWidth::CLIENT_M4A_SENT)) +
-#endif
-				"},\"sourcerecv\":{"
-				"\"total\":" + tos(bandWidth::getAmount(bandWidth::ALL_SOURCE_RECV)) + ","
-				"\"v2\":" + tos(bandWidth::getAmount(bandWidth::SOURCE_V2_RECV)) + ","
-				"\"v1\":" + tos(bandWidth::getAmount(bandWidth::SOURCE_V1_RECV)) +
-				"},\"sourcesent\":{"
-				"\"total\":" + tos(bandWidth::getAmount(bandWidth::ALL_SOURCE_SENT)) + ","
-				"\"v2\":" + tos(bandWidth::getAmount(bandWidth::SOURCE_V2_SENT)) + ","
-				"\"v1\":" + tos(bandWidth::getAmount(bandWidth::SOURCE_V2_SENT)) +
-				"},\"relayrecv\":{"
-				"\"total\":" + tos(bandWidth::getAmount(bandWidth::ALL_SOURCE_RECV)) + ","
-				"\"misc\":" + tos(bandWidth::getAmount(bandWidth::RELAY_MISC_RECV)) + ","
-				"\"v2\":" + tos(bandWidth::getAmount(bandWidth::RELAY_V2_RECV)) + ","
-				"\"v1\":" + tos(bandWidth::getAmount(bandWidth::RELAY_V1_RECV)) +
-				"},\"webpages\":{"
-				"\"total\":" + tos(bandWidth::getAmount(bandWidth::ALL_WEB)) + ","
-				"\"public\":" + tos(bandWidth::getAmount(bandWidth::PUBLIC_WEB)) + ","
-				"\"private\":" + tos(bandWidth::getAmount(bandWidth::PRIVATE_WEB)) +
-				"},\"other\":{"
-				"\"total\":" + tos(bandWidth::getAmount(bandWidth::ALL_OTHER)) + ","
-				"\"flash\":" + tos(bandWidth::getAmount(bandWidth::FLASH_POLICY)) + ","
-				"\"relaysentv2\":" + tos(bandWidth::getAmount(bandWidth::RELAY_V2_SENT)) + ","
-				"\"ypsent\":" + tos(bandWidth::getAmount(bandWidth::YP_SENT)) + "," +
-				"\"yprecv\":" + tos(bandWidth::getAmount(bandWidth::YP_RECV)) + "," +
-				"\"auth_metrics\":" + tos(bandWidth::getAmount(bandWidth::AUTH_AND_METRICS)) + "," +
-				"\"adverts\":" + tos(bandWidth::getAmount(bandWidth::ADVERTS)) +
-				"}}" + (jsonp ? utf8(")") : "");
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_ypstatus_xml() throw()
-{
-	utf8 header = "HTTP/1.1 200 OK\r\nContent-Type:text/xml\r\n",
-		 body = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>"
-				"<SHOUTCASTSERVER>";
-
-	streamData::streamIDs_t streamIds = streamData::getStreamIds();
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		if ((*i).second.m_streamID)
-		{
-			streamIds.insert((*i).second.m_streamID);
-		}
-	}
-
-	for (streamData::streamIDs_t::const_iterator i = streamIds.begin(); i != streamIds.end(); ++i)
-	{
-		streamData::streamInfo info;
-		streamData::extraInfo extra;
-		streamData::getStreamInfo((*i), info, extra);
-
-		const utf8 movedUrl = gOptions.stream_movedUrl((*i));
-		if (movedUrl.empty())
-		{
-			body += "<STREAM id=\"" + tos((*i)) + "\">" +
-					(!extra.isConnected ? "<STATUS>NOSOURCE</STATUS>" :
-						(info.m_streamPublic ? (extra.ypConnected != 1 ? (!yp2::isValidAuthhash(info.m_authHash) ?
-							(info.m_authHash.empty() ? "<STATUS>EMPTY_AUTHHASH</STATUS>" : "<STATUS>INVALID_AUTHHASH</STATUS>") :
-								(extra.ypErrorCode == 200 ? "<STATUS>WAITING</STATUS>" :
-									(extra.ypErrorCode == YP_COMMS_FAILURE ? "<STATUS>YP_NOT_FOUND</STATUS>" :
-										(extra.ypErrorCode == YP_MAINTENANCE_CODE ? "<STATUS>YP_MAINTENANCE</STATUS>" :
-											"<STATUS>ERROR</STATUS><CODE>" + tos(extra.ypErrorCode) + "</CODE>")))) :
-												"<STATUS>PUBLIC</STATUS><STNID>" + info.m_stationID + "</STNID>") :
-													"<STATUS>PRIVATE</STATUS>")) + "</STREAM>";
-		}
-		else
-		{
-			body += "<STREAM id=\"" + tos((*i)) + "\"><STATUS>MOVED</STATUS></STREAM>";
-		}
-	}
-
-	body += "</SHOUTCASTSERVER>";
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_ypstatus_json(const uniString::utf8& callback) throw()
-{
-	utf8 header = "HTTP/1.1 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n";
-
-	streamData::streamIDs_t streamIds = streamData::getStreamIds();
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		if ((*i).second.m_streamID)
-		{
-			streamIds.insert((*i).second.m_streamID);
-		}
-	}
-
-	const bool jsonp = !callback.empty();
-	utf8 body = (jsonp ? callback + "(" : "") + "{" +
-				(!streamIds.empty() ? "\"streams\":[" : "");
-
-	bool read = false;
-	for (streamData::streamIDs_t::const_iterator i = streamIds.begin(); i != streamIds.end(); ++i)
-	{
-		streamData::streamInfo info;
-		streamData::extraInfo extra;
-		streamData::getStreamInfo((*i), info, extra);
-
-		const utf8 movedUrl = gOptions.stream_movedUrl((*i));
-		if (movedUrl.empty())
-		{
-			body += (read ? utf8(",") : "") +
-					"{"
-					"\"id\":" + tos((*i)) + "," +
-					(!extra.isConnected ? "\"status\":\"" + escapeJSON("nosource") + "\"" :
-						(info.m_streamPublic ? (extra.ypConnected != 1 ? (!yp2::isValidAuthhash(info.m_authHash) ?
-							(info.m_authHash.empty() ? "\"status\":\"" + escapeJSON("empty_authhash") + "\"" :
-								"\"status\":\"" + escapeJSON("invalid_authhash") + "\"") :
-								(extra.ypErrorCode == 200 ? "\"status\":\"" + escapeJSON("waiting") + "\"" :
-									(extra.ypErrorCode == YP_COMMS_FAILURE ? "\"status\":\"" + escapeJSON("yp_not_found") + "\"" :
-										(extra.ypErrorCode == YP_MAINTENANCE_CODE ? "\"status\":\"" + escapeJSON("yp_maintenance") + "\"" :
-											"\"status\":\"" + escapeJSON("error") + "\",\"code\":" + tos(extra.ypErrorCode))))) :
-												"\"status\":\"" + escapeJSON("public") + "\",\"stnid\":" + info.m_stationID) :
-													"\"status\":\"" + escapeJSON("private") + "\"")) + "}";
-		}
-		else
-		{
-			body += (read ? utf8(",") : "") + "{\"id\":" + tos((*i)) + ","
-					"\"status\":\"" + escapeJSON("moved") + "\"}";
-		}
-		read = true;
-	}
-
-	body += (!streamIds.empty() ? utf8("]") : "") + "}" + (jsonp ? utf8(")") : "");
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_viewxml(const streamData::streamID_t sid, int page,
-									 const bool iponly, const bool ipcount) throw()
-{
-	// abort as there's nothing generated for this now
-	if (page == 2)
-	{
-		sendMessageAndClose("HTTP/1.1 200 OK\r\nContent-Type:text/xml\r\n\r\n");
-		return;
-	}
-
-	if ((page > 6) || (page < 0))
-	{
-		page = 0;
-	}
-
-	utf8 header = "HTTP/1.1 200 OK\r\nContent-Type:text/xml\r\n",
-		 body = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?><SHOUTCASTSERVER>";
-
-	if (page < 2)
-	{
-		stats::statsData_t data;
-		body += protocol_HTTPStyle::getStatsXMLBody(sid, true, true, m_socket, data);
-	}
-
-	if ((page == 0) || (page == 3))
-	{
-		time_t t = ::time(NULL);
-		body += "<LISTENERS>";
-
-		stats::currentClientList_t client_data;
-		stats::getClientDataForStream(sid, client_data);
-		map<utf8, size_t> ip_counts;
-		for (stats::currentClientList_t::const_iterator i = client_data.begin(); i != client_data.end(); ++i)
-		{
-			const utf8& host = ((*i)->m_hostName != (*i)->m_ipAddr ? (*i)->m_hostName : (*i)->m_ipAddr);
-
-			if (!ipcount)
-			{
-				if (!iponly)
-				{
-					body += "<LISTENER>"
-							"<HOSTNAME>" + aolxml::escapeXML(host) + "</HOSTNAME>"
-							"<USERAGENT>" + aolxml::escapeXML((*i)->m_userAgent) + "</USERAGENT>"
-							"<CONNECTTIME>" + tos(t - (*i)->m_startTime) + "</CONNECTTIME>"
-							"<UID>" + tos((*i)->m_unique) + "</UID>"
-							"<TYPE>" + tos((*i)->m_clientType) + "</TYPE>"
-							"<REFERER>" + aolxml::escapeXML((*i)->m_referer) + "</REFERER>"
-							"<XFF>" + aolxml::escapeXML((*i)->m_XFF) + "</XFF>"
-							"<GRID>" + tos((*i)->m_group) + "</GRID>"
-							"<TRIGGERS>" + tos((*i)->m_triggers) + "</TRIGGERS>"
-							"</LISTENER>";
-				}
-				else
-				{
-					body += "<LISTENER>"
-							"<HOSTNAME>" + aolxml::escapeXML(host) + "</HOSTNAME>"
-							"</LISTENER>";
-				}
-			}
-			else
-			{
-				++ip_counts[host];
-			}
-
-			delete (*i);
-		}
-
-		if (ipcount)
-		{
-			for (map<utf8, size_t>::const_iterator i = ip_counts.begin(); i != ip_counts.end(); ++i)
-			{
-				body += "<LISTENER>"
-						"<HOSTNAME>" + aolxml::escapeXML((*i).first) + "</HOSTNAME>"
-						"<TOTAL>" + tos((*i).second) + "</TOTAL>"
-						"</LISTENER>";
-			}
-		}
-
-		body += "</LISTENERS>";
-	}
-
-	if ((page == 0) || (page == 4) || (page == 5))
-	{
-		streamData::streamHistory_t songHistory;
-		streamData::getStreamSongHistory(sid, songHistory);
-
-		// only provide this as an option feature so as not to bloat the main xml stats unnecessarily
-		if (!(page == 5))
-		{
-			body += "<SONGHISTORY>";
-			for (streamData::streamHistory_t::const_iterator i = songHistory.begin(); i != songHistory.end(); ++i)
-			{
-				body += "<SONG><PLAYEDAT>" + tos((*i).m_when) + "</PLAYEDAT>"
-						"<TITLE>" + aolxml::escapeXML((*i).m_title) + "</TITLE>" +
-						protocol_HTTPStyle::getCurrentXMLMetadataBody(true, (*i).m_metadata) + "</SONG>";
-			}
-			body += "</SONGHISTORY>";
-		}
-		else
-		{
-			body += protocol_HTTPStyle::getCurrentXMLMetadataBody(false, (!songHistory.empty() ? songHistory[0].m_metadata : ""));
-		}
-	}
-
-	if (page == 6)
-	{
-		const int maxUsers = gOptions.maxUser();
-		body += "<STREAMCONFIGS>"
-				"<REQUIRECONFIGS>" + tos(gOptions.requireStreamConfigs()) + "</REQUIRECONFIGS>"
-				"<SERVERMAXLISTENERS>" + (maxUsers > 0 ? tos(maxUsers) : "UNLIMITED") + "</SERVERMAXLISTENERS>"
-				"<SERVERMINBITRATE>" + tos(gOptions.minBitrate()) + "</SERVERMINBITRATE>"
-				"<SERVERMAXBITRATE>" + tos(gOptions.maxBitrate()) + "</SERVERMAXBITRATE>"
-				"<TOTALCONFIGS>";
-
-		config::streams_t streams;
-		gOptions.getStreamConfigs(streams);
-
-		utf8 block = "";
-		size_t moved = 0;
-		for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-		{
-			const utf8 movedUrl = gOptions.stream_movedUrl((*i).second.m_streamID);
-			if (movedUrl.empty())
-			{
-				utf8 streamTag = ((*i).second.m_streamID > 1 ? "/stream/" + tos((*i).second.m_streamID) + "/" : "/");
-				if (!(*i).second.m_urlPath.empty())
-				{
-					streamTag = (*i).second.m_urlPath;
-				}
-
-				const utf8& authhash = (*i).second.m_authHash;
-				block += "<STREAMCONFIG id=\"" + tos((*i).second.m_streamID) + "\">"
-						 "<STREAMAUTHHASH>" + aolxml::escapeXML(authhash.empty() ? "EMPTY" : !yp2::isValidAuthhash(authhash) ? "INVALID" : authhash) + "</STREAMAUTHHASH>"
-						 "<STREAMPATH>" + aolxml::escapeXML(streamTag) + "</STREAMPATH>"
-						 "<STREAMRELAYURL>" + aolxml::escapeXML((*i).second.m_relayUrl.url()) + "</STREAMRELAYURL>"
-						 "<STREAMBACKUPURL>" + aolxml::escapeXML((*i).second.m_backupUrl.url()) + "</STREAMBACKUPURL>"
-						 "<STREAMMAXLISTENERS>" + ((*i).second.m_maxStreamUser > 0 && (*i).second.m_maxStreamUser < gOptions.maxUser() ? tos((*i).second.m_maxStreamUser) : "SERVERMAXLISTENERS") + "</STREAMMAXLISTENERS>"
-						 "<STREAMMINBITRATE>" + ((*i).second.m_minStreamBitrate > 0 ? tos((*i).second.m_minStreamBitrate) : "SERVERMINBITRATE") + "</STREAMMINBITRATE>"
-						 "<STREAMMAXBITRATE>" + ((*i).second.m_maxStreamBitrate > 0 ? tos((*i).second.m_maxStreamBitrate) : "SERVERMAXBITRATE") + "</STREAMMAXBITRATE>"
-						 "<STREAMPUBLIC>" + aolxml::escapeXML((*i).second.m_publicServer) + "</STREAMPUBLIC>"
-						 "<STREAMALLOWRELAY>" + tos((*i).second.m_allowRelay) + "</STREAMALLOWRELAY>"
-						 "<STREAMPUBLICRELAY>" + tos((*i).second.m_allowPublicRelay) + "</STREAMPUBLICRELAY>"
-						 "</STREAMCONFIG>";
-			}
-			else
-			{
-				++moved;
-			}
-		}
-
-		body += tos((streams.size() - moved)) + "</TOTALCONFIGS>" + block + "</STREAMCONFIGS>";
-	}
-
-	body += "</SHOUTCASTSERVER>";
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_viewjson(const streamData::streamID_t sid, int page,
-									  const bool iponly, const bool ipcount,
-									  const uniString::utf8& callback) throw()
-{
-	// abort as there's nothing generated for this now
-	if (page == 2)
-	{
-		sendMessageAndClose("HTTP/1.1 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n\r\n");
-		return;
-	}
-
-	if (page > 6 || page < 0)
-	{
-		page = 0;
-	}
-
-	const bool jsonp = !callback.empty();
-	utf8 header = "HTTP/1.1 200 OK\r\nContent-Type:application/json;charset=utf-8\r\n",
-		 body = (jsonp ? callback + "(" : "") + (page < 2 ? "{" : "");
-
-	if (page < 2)
-	{
-		stats::statsData_t data;
-		body += protocol_HTTPStyle::getStatsJSONBody(sid, true, true, m_socket, data);
-	}
-
-	if ((page == 0) || (page == 3))
-	{
-		time_t t = ::time(NULL);
-		body += (!page ? utf8(",\"listeners\":[") : "[");
-
-		stats::currentClientList_t client_data;
-		stats::getClientDataForStream(sid, client_data);
-		map<utf8, size_t> ip_counts;
-		for (stats::currentClientList_t::const_iterator i = client_data.begin(); i != client_data.end(); ++i)
-		{
-			const utf8& host = ((*i)->m_hostName != (*i)->m_ipAddr ? (*i)->m_hostName : (*i)->m_ipAddr);
-
-			if (!ipcount)
-			{
-				if (!iponly)
-				{
-					body += (i != client_data.begin() ? utf8(",") : "") +
-							"{"
-							"\"hostname\":\"" + escapeJSON(host) + "\","
-							"\"useragent\":\"" + escapeJSON((*i)->m_userAgent) + "\","
-							"\"connecttime\":" + tos(t - (*i)->m_startTime) + ","
-							"\"uid\":" + tos((*i)->m_unique) + ","
-							"\"type\":" + tos((*i)->m_clientType) + ","
-							"\"referer\":\"" + escapeJSON((*i)->m_referer) + "\","
-							"\"xff\":\"" + escapeJSON((*i)->m_XFF) + "\","
-							"\"grid\":" + tos((*i)->m_group) + ","
-							"\"triggers\":" + tos((*i)->m_triggers) + ""
-							"}";
-				}
-				else
-				{
-					body += (i != client_data.begin() ? utf8(",") : "") +
-							"{"
-							"\"hostname\":\"" + escapeJSON(host) + "\""
-							"}";
-				}
-			}
-			else
-			{
-				++ip_counts[host];
-			}
-
-			delete (*i);
-		}
-
-		if (ipcount)
-		{
-			for (map<utf8, size_t>::const_iterator i = ip_counts.begin(); i != ip_counts.end(); ++i)
-			{
-				body += (i != ip_counts.begin() ? utf8(",") : "") +
-						"{"
-						"\"hostname\":\"" + escapeJSON((*i).first) + "\","
-						"\"total\":" + tos((*i).second) + ""
-						"}";
-			}
-		}
-
-		body += "]";
-	}
-
-	if ((page == 0) || (page == 4) || (page == 5))
-	{
-		streamData::streamHistory_t songHistory;
-		streamData::getStreamSongHistory(sid, songHistory);
-
-		// only provide this as an option feature so as not to bloat the main xml stats unnecessarily
-		if (!(page == 5))
-		{
-			bool first = true;
-			body += (!page ? utf8(",\"songs\":[") : "[");
-			for (streamData::streamHistory_t::const_iterator i = songHistory.begin(); i != songHistory.end(); ++i)
-			{
-				body += (!first ? utf8(",") : "") + "{\"playedat\":" +
-						tos((*i).m_when) + "," "\"title\":\"" +
-						escapeJSON((*i).m_title) + "\",\"metadata\":" +
-						protocol_HTTPStyle::getCurrentJSONMetadataBody((*i).m_metadata) + "}";
-				first = false;
-			}
-			body += "]";
-		}
-		else
-		{
-			body += protocol_HTTPStyle::getCurrentJSONMetadataBody((!songHistory.empty() ? songHistory[0].m_metadata : ""));
-		}
-	}
-
-	if (page == 6)
-	{
-		const int maxUsers = gOptions.maxUser();
-		body += "{"
-				"\"requireconfigs\":" + tos(gOptions.requireStreamConfigs()) + ","
-				"\"maxlisteners\":" + (maxUsers > 0 ? tos(maxUsers) : "\"unlimited\"") + ","
-				"\"minbitrate\":" + tos(gOptions.minBitrate()) + ","
-				"\"maxbitrate\":" + tos(gOptions.maxBitrate()) + ",";
-
-		config::streams_t streams;
-		gOptions.getStreamConfigs(streams);
-
-		bool read = false;
-		utf8 block = "";
-		size_t moved = 0;
-		for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-		{
-			const utf8 movedUrl = gOptions.stream_movedUrl((*i).second.m_streamID);
-			if (movedUrl.empty())
-			{
-				utf8 streamTag = ((*i).second.m_streamID > 1 ? "/stream/" + tos((*i).second.m_streamID) + "/" : "/");
-				if (!(*i).second.m_urlPath.empty())
-				{
-					streamTag = (*i).second.m_urlPath;
-				}
-
-				utf8 authhash = (*i).second.m_authHash;
-				block += (read ? utf8(",") : "") +
-						 "{"
-						 "\"id\":" + tos((*i).second.m_streamID) + ","
-						 "\"authhash\":\"" + escapeJSON(authhash.empty() ? "empty" : !yp2::isValidAuthhash(authhash) ? "invalid" : authhash) + "\","
-						 "\"path\":\"" + escapeJSON(streamTag) + "\","
-						 "\"relayurl\":\"" + escapeJSON((*i).second.m_relayUrl.url()) + "\","
-						 "\"backupurl\":\"" + escapeJSON((*i).second.m_backupUrl.url()) + "\","
-						 "\"maxlisteners\":\"" + escapeJSON(((*i).second.m_maxStreamUser > 0) && ((*i).second.m_maxStreamUser < gOptions.maxUser()) ? tos((*i).second.m_maxStreamUser) : escapeJSON("maxlisteners")) + "\","
-						 "\"minbitrate\":\"" + escapeJSON((*i).second.m_minStreamBitrate > 0 ? tos((*i).second.m_minStreamBitrate) : escapeJSON("minbitrate")) + "\","
-						 "\"maxbitrate\":\"" + escapeJSON((*i).second.m_maxStreamBitrate > 0 ? tos((*i).second.m_maxStreamBitrate) : escapeJSON("maxbitrate")) + "\","
-						 "\"public\":\"" + escapeJSON((*i).second.m_publicServer) + "\","
-						 "\"allowrelay\":\"" + tos((*i).second.m_allowRelay) + "\","
-						 "\"publicrelay\":\"" + tos((*i).second.m_allowPublicRelay) + "\""
-						 "}";
-				read = true;
-			}
-			else
-			{
-				++moved;
-			}
-		}
-		const size_t total = (streams.size() - moved);
-		body +=	"\"total\":\"" + tos(total) + "\"" +
-				(total > 0 ? ",\"streams\":[" : "") + block +
-				(total > 0 ? utf8("]") : "") + "}";
-	}
-
-	body += (page < 2 ? utf8("}") : "") + (jsonp ? ")" : "");
-
-	COMPRESS(header, body);
-	header += "Content-Length:" + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_sources(const uniString::utf8& host) throw()
-{
-	utf8 header = MSG_NO_CLOSE_200,
-		 body = getServerAdminHeader("Server Source Connection Details") +
-				"<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" width=\"100%\">"
-				"<tr><td class=\"tsp\" align=\"center\">" +
-				utf8(gOptions.requireStreamConfigs() ? "Sources are only able to connect on the configured streams shown" :
-													   "Sources are able to connect on any \"Stream ID\" (using the appropriate details)") +
-				"</td></tr></table>"
-				"<div><br>"
-
-				"<div style=\"width:19.5em;margin: 0 0 1em 1em;\" class=\"infb\">"
-				"<div align=\"center\" class=\"infh\"><b>Information</b></div>"
-				"Here are the login details to enter in your chosen source software so it can then be used to connect to the server.<br><br>"
-				"<b>Note:</b> Names of options in the source software may vary from those shown.<br><br>"
-
-				"<b><font color=\"red\">*</font></b> This may not be correct and is a best guess from the current connection.<br><br><hr><br>"
-				"The '<b>Legacy Password</b>' is for use with legacy sources (which are sources that are not able to directly specify the "
-				"desired stream number).<br><br>This allows for use of any Shoutcast compatible source on any of the currently configured streams.<br><br>"
-				"If connecting a legacy source to stream #1, the '<b>Password</b>' value can be used.<br><br><hr><br>"
-				"The example JSON-P response uses callback=func which can be changed to a custom value as required for usage.<br><br><hr><br>"
-				
-				"For further information on connecting sources to the server, as well as ensuring that all of the required ports have been opened, "
-				"see <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_Server_Source_Support\"><b>this wiki page</b></a>.<br><br></div>";
-
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-
-	utf8 ids = "";
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		ids += (i != streams.begin() ? ", ": "") + tos((*i).second.m_streamID);
-
-		// skip over moved streams as they cannot be used, though we include the
-		// streamid above (whether or not that'll confuse people i do not know).
-		const utf8 movedUrl = gOptions.stream_movedUrl((*i).second.m_streamID);
-		if (movedUrl.empty())
-		{
-			int maxbitrate = ((*i).second.m_maxStreamBitrate > 0 ? (*i).second.m_maxStreamBitrate : gOptions.maxBitrate()),
-				minbitrate = ((*i).second.m_minStreamBitrate > 0 ? (*i).second.m_minStreamBitrate : gOptions.minBitrate());
-
-			// test for being a relay which is active - if so then we need to not show
-			// direct source login details as they will not be able to connect anyway
-			bool noEntry = false, isRelay = (*i).second.m_relayUrl.isSet();
-			if (isRelay && streamData::isRelayActive((*i).second.m_streamID, noEntry))
-			{
-				body += "<div class=\"infb\" style=\"width:19.5em;word-wrap:break-word;margin: 0 0 1em 1em;\">"
-						"<div align=\"center\" class=\"infh\">"
-						"<b>Stream #" + tos((*i).second.m_streamID) + "</b></div>"
-						"This stream has been configured for use as a relay which is currently active.<br><br>"
-						"Any source connections attempted will be blocked whilst the relay is active.<br><br>"
-						"Password: <b>" + aolxml::escapeXML((*i).second.m_password) + "</b><br>"
-						"Source: <b>" + urlLink(niceURL((*i).second.m_relayUrl.url())) + "</b><br>" +
-						(!(*i).second.m_backupUrl.url().empty() ? "Backup Source: <b>" +
-						urlLink(niceURL((*i).second.m_backupUrl.url())) + "</b><br>" : "");
-			}
-			// otherwise show direct source login details for specific as well as generic stream
-			// logins (even if configured to be a relay as long as it is inactive at the time)
-			else
-			{
-				body +=	"<div class=\"infb\" style=\"width:19.5em;word-wrap:break-word;margin: 0 0 1em 1em;\">"
-						"<div align=\"center\" class=\"infh\"><b>Stream #" + tos((*i).second.m_streamID) + "</b></div>" +
-						(isRelay ? "<b>Note:</b> Configured as a relay to use:<br><b>" +
-								   niceURL((*i).second.m_relayUrl.url()) + "</b><br><br>" : "") +
-						"Stream ID: <b>" + tos((*i).second.m_streamID) + "</b><br>"
-						"Server Address: <b>" + (!host.empty() ? host : "<enter_server_address>") + "</b> <b>(<font color=\"red\">*</font>)</b><br>"
-						"Source Port: <b>" + tos(gOptions.portBase()) + "</b><br><br>" +
-						"Password: <b>" + aolxml::escapeXML((*i).second.m_password) + "</b><br>" +
-						((*i).second.m_streamID > 1 && (g_legacyPort > 0) ? "Legacy Password: <b>" +
-						aolxml::escapeXML((*i).second.m_password) + ":#" + tos((*i).second.m_streamID) + "</b><br><br>" : "<br>") +
-						"Min Bitrate Allowed: <b>" + (!minbitrate ? "Unlimited" : tos(minbitrate / 1000) + " kbps") + "</b><br>"
-						"Max Bitrate Allowed: <b>" + (!maxbitrate ? "Unlimited" : tos(maxbitrate / 1000) + " kbps") + "</b><br><br>"
-						"Protocol Mode: <b>" + ((g_legacyPort > 0) ? "v2, v1" : "v2") + "</b><br>";
-			}
-
-			const utf8 address = "http://" + ((!host.empty() ? host : "<enter_server_address>") + ":" + tos(gOptions.portBase())),
-					   params = "?sid=" + tos((*i).second.m_streamID) + "&amp;pass=" + aolxml::escapeXML((*i).second.m_password);
-			body +=	"<br><hr><br>Listener Playlist(s):<br><b>"
-					"<a href=\"" + address + "/listen.pls?sid=" + tos((*i).second.m_streamID) + "\">PLS</a>,&nbsp;&nbsp;"
-					"<a href=\"" + address + "/listen.m3u?sid=" + tos((*i).second.m_streamID) + "\">M3U</a>,&nbsp;&nbsp;"
-					"<a href=\"" + address + "/listen.asx?sid=" + tos((*i).second.m_streamID) + "\">ASX</a>,&nbsp;&nbsp;"
-					"<a href=\"" + address + "/listen.xspf?sid=" + tos((*i).second.m_streamID) + "\">XSPF</a>,&nbsp;&nbsp;"
-					"<a href=\"" + address + "/listen.qtl?sid=" + tos((*i).second.m_streamID) + "\">QTL</a></b>"
-
-					"<br><br>Direct Stream URL(s):<br><b>"
-					"<a title=\"Flash\" alt=\"Flash\" "
-					"href=\"" + address + getStreamPath((*i).second.m_streamID) + "?type=.flv\">"
-					"<img border=\"0\" style=\"vertical-align:bottom\" src=\"images/flash.png\"> FLV</a>,&nbsp;&nbsp;"
-					"<a title=\"HTTP / HTML5\" alt=\"HTTP / HTML5\" "
-					"href=\"" + address + getStreamPath((*i).second.m_streamID) + "?type=http\">"
-					"<img border=\"0\" style=\"vertical-align:bottom\" src=\"images/html5.png\"> HTTP</a>,&nbsp;&nbsp;"
-					"<a title=\"Shoutcast 1.x\" alt=\"Shoutcast 1.x\" "
-					"href=\"" + address + getStreamPath((*i).second.m_streamID) + "?type=sc1\">"
-					"<img border=\"0\" style=\"vertical-align:bottom\" src=\"images/favicon.ico\"> 1.x</a>,&nbsp;&nbsp;"
-					"<a title=\"Shoutcast 2.x\" alt=\"Shoutcast 2.x\" "
-					"href=\"" + address + getStreamPath((*i).second.m_streamID) + "?type=sc2\">"
-					"<img border=\"0\" style=\"vertical-align:bottom\" src=\"images/favicon.ico\"> 2.x</a></b>"
-
-					"<br><br>History:<br><b>"
-					"<a href=\"" + address + "/played" + params + "&amp;type=xml\">XML</a>,&nbsp;&nbsp;"
-					"<a href=\"" + address + "/played" + params + "&amp;type=json\">JSON</a>,&nbsp;&nbsp;"
-					"<a href=\"" + address + "/played" + params + "&amp;type=json&amp;callback=func\">JSON-P</a></b>"
-
-					"<br><br>Stream Statistics:<br><b>"
-					"<a href=\"" + address + "/stats" + params + "\">XML</a>,&nbsp;&nbsp;"
-					"<a href=\"" + address + "/stats" + params + "&amp;json=1\">JSON</a>,&nbsp;&nbsp;"
-					"<a href=\"" + address + "/stats" + params + "&amp;json=1&amp;callback=func\">JSON-P</a></b><br></div>";
-		}
-	}
-
-	if (!gOptions.requireStreamConfigs())
-	{
-		const int minbitrate = gOptions.minBitrate(), maxbitrate = gOptions.maxBitrate();
-		body +=	"<div class=\"infb\" style=\"width:19.5em;word-wrap:break-word;margin: 0 0 1em 1em;\">"
-				"<div align=\"center\" class=\"infh\"><b>All" + (!ids.empty() ? " Other" : (utf8)"") + " Streams</b></div>"
-				"Stream ID: <b>&lt;any value" + (!ids.empty() ? " other than " + ids : "") + "&gt;</b><br>"
-				"Server Address: <b>" + aolxml::escapeXML(!host.empty() ? host : "<enter_server_address>") + "</b> <b>(<font color=\"red\">*</font>)</b><br>"
-				"Server Port: <b>" + tos(gOptions.portBase()) + "</b><br><br>" +
-				"Password: <b>" + aolxml::escapeXML(gOptions.password()) + "</b><br>" +
-				((g_legacyPort > 0) ? "Legacy Password: <b>" + aolxml::escapeXML(gOptions.password()) + ":#xx</b><br><br>" : "<br>") +
-				"Min Bitrate Allowed: <b>" + (!minbitrate ? "Unlimited" : tos(minbitrate / 1000) + " kbps") + "</b><br>"
-				"Max Bitrate Allowed: <b>" + (!maxbitrate ? "Unlimited" : tos(maxbitrate / 1000) + " kbps") + "</b><br><br>"
-				"Protocol Mode: <b>" + ((g_legacyPort > 0) ? "v2, v1" : "v2") + "</b><br>";
-
-		const utf8 address = "http://" + ((!host.empty() ? host : "<enter_server_address>") + ":" + tos(gOptions.portBase())),
-				   params = "?sid=xx&amp;pass=" + aolxml::escapeXML(gOptions.password());
-		body +=	"<br><hr><br>Listener Playlist(s):<br><b>"
-				"<a href=\"" + address + "/listen.pls?sid=xx\">PLS</a>,&nbsp;&nbsp;"
-				"<a href=\"" + address + "/listen.m3u?sid=xx\">M3U</a>,&nbsp;&nbsp;"
-				"<a href=\"" + address + "/listen.asx?sid=xx\">ASX</a>,&nbsp;&nbsp;"
-				"<a href=\"" + address + "/listen.xspf?sid=xx\">XSPF</a>,&nbsp;&nbsp;"
-				"<a href=\"" + address + "/listen.qtl?sid=xx\">QTL</a></b>"
-
-				"<br><br>History:<br><b>"
-				"<a href=\"" + address + "/played" + params + "&amp;type=xml\">XML</a>,&nbsp;&nbsp;"
-				"<a href=\"" + address + "/played" + params + "&amp;type=json\">JSON</a>,&nbsp;&nbsp;"
-				"<a href=\"" + address + "/played" + params + "&amp;type=json&amp;callback=func\">JSON-P</a></b>"
-
-				"<br><br>Stream Statistics:<br><b>"
-				"<a href=\"" + address + "/stats" + params + "\">XML</a>,&nbsp;&nbsp;"
-				"<a href=\"" + address + "/stats" + params + "&amp;json=1\">JSON</a>,&nbsp;&nbsp;"
-				"<a href=\"" + address + "/stats" + params + "&amp;json=1&amp;callback=func\">JSON-P</a></b>"
-				"<br><br><b>Note:</b> Replace the '<b>xx</b>' in '<b>sid=xx</b>' in all of the example links "
-				"and in the '<b>Legacy Password</b>' with the stream number.<br></div>";
-	}
-
-	body +=	"</div>" + getUptimeScript() + getIEFlexFix() + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_adgroups() throw()
-{
-	utf8 header = MSG_NO_CLOSE_200,
-		 body = getServerAdminHeader("Server Advert Group Details") +
-				"<div style=\"padding-right:1em;\"><br>"
-				"<table align=\"center\" width=\"100%\"><tr valign=\"top\">"
-				"<td><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
-				"<tr><td valign=\"top\">"
-				"<div style=\"width:13em;\" class=\"infb\">"
-				"<div align=\"center\" class=\"infh\"><b>Information</b></div>"
-				"Here you can see which active stream(s) have adverts enabled and their status of obtaining the advert details."
-				"<br><br>This can help to see if a listener should be receiving adverts or not by "
-				"checking for the listener's group id with the group ids shown for the required stream.<br><br></div>"
-
-				"</td><td valign=\"top\" width=\"100%\">"
-				"<table class=\"en\" style=\"border:0;text-align:center;word-wrap:break-word;\" "
-				"cellpadding=\"3\" cellspacing=\"0\" width=\"100%\" align=\"center\">";
-
-	const streamData::streamIDs_t streamIds = streamData::getStreamIds();
-	if (!streamIds.empty())
-	{
-		body += "<colgroup><col width=\"15%\"></colgroup>"
-				"<tr class=\"tll\"><td>Stream #</td><td>Advert Group(s)</td></tr>";
-
-		for (streamData::streamIDs_t::const_iterator i = streamIds.begin(); i != streamIds.end(); ++i)
-		{
-			streamData *sd = streamData::accessStream((*i));
-			if (sd)
-			{
-				if (sd->isSourceConnected((*i)))
-				{
-					body += "<tr><td><b>" + tos((*i)) + "</b></td>"
-							"<td style=\"max-width:0;text-align:left;\">" +
-							sd->getAdvertGroup() + "</td></tr>";
-				}
-				sd->releaseStream();
-			}
-		}
-	}
-	else
-	{
-		body += "<tr><td style=\"border:0\">There are no active streams.</b></td></tr>";
-	}
-	body += "</table></td></tr></table></td></tr></table></div>" +
-			getUptimeScript() + getIEFlexFix() + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_debug(const uniString::utf8& option, const int on_off, const bool adminRefer) throw()
-{
-	struct debug_options {
-		utf8 option;
-		utf8 desc;
-		utf8 msg;
-		bool value;
-	};
-	debug_options debug[] = {
-		{"Listener Connections", "", ""},
-		{"shoutcast1clientdebug", "Shoutcast 1.x Listener Connections", "Used to diagnose connection issues with listener connections using the legacy Shoutcast 1.x protocol"
-																		"<br>(e.g. HTTP connections indicating they support icy-metadata).", gOptions.shoutcast1ClientDebug()},
-		{"shoutcast2clientdebug", "Shoutcast 2.x Listener Connections", "Used to diagnose connection issues with listener connections using the Shoutcast 2.x protocol.", gOptions.shoutcast2ClientDebug()},
-		{"httpclientdebug", "HTTP Listener Connections", "Used to diagnose connection issues with listener connections using the HTTP protocol.", gOptions.HTTPClientDebug()},
-		{"flvclientdebug", "FLV Listener Connections", "Used to diagnose connection issues with listener connections using the FLV encapsulation.", gOptions.flvClientDebug()},
-#if 0
-		{"m4aclientdebug", "M4A Listener Connections", "Used to diagnose connection issues with listener connections using the M4A encapsulation.", gOptions.m4aClientDebug()},
-#endif
-		{"Direct Source Connections", "", ""},
-		{"shoutcastsourcedebug", "Shoutcast 1.x Source Connections", "Used to diagnose connection issues with source connections using the legacy Shoutcast 1.x protocol.", gOptions.shoutcastSourceDebug()},
-		{"uvox2sourcedebug", "Shoutcast 2.x Source Connections", "Used to diagnose connection issues with source connections using the Shoutcast 2.x protocol.", gOptions.uvox2SourceDebug()},
-		{"httpsourcedebug", "HTTP Source Connections", "Used to diagnose connection issues with source connections using HTTP PUT protocol (e.g. Icecast sources).", gOptions.HTTPSourceDebug()},
-		{"Relay Source Connections", "", ""},
-		{"relayshoutcastdebug", "Shoutcast 1.x Relay Connections", "Used to diagnose connection issues with relay connections using the legacy Shoutcast 1.x protocol.", gOptions.relayShoutcastDebug()},
-		{"relayuvoxdebug", "Shoutcast 2.x Relay Connections", "Used to diagnose connection issues with relay connections using the Shoutcast 2.x protocol.", gOptions.relayUvoxDebug()},
-		{"relaydebug", "Common Relay Handling", "Used to diagnose issues with general relay handling when a relay connection begins (non-protcool specific).", gOptions.relayDebug()},
-		{"HTTP Connections", "", ""},
-		{"httpstyledebug", "HTTP Requests", "Used to inspect HTTP requests made to the server (e.g. listener or statistic requests).", gOptions.httpStyleDebug()},
-		{"webclientdebug", "HTTP Connections", "Used to inspect and diagnose issues with HTTP connections issued by the server.", gOptions.webClientDebug()},
-		{"Shoutcast Services", "", ""},
-		{"admetricsdebug", "Advert & Metrics Handling", "Used to inspect and diagnose issues with the advert and metric activity for client connections.", gOptions.adMetricsDebug()},
-		{"yp2debug", "YP / Directory Connections", "Used to diagnose failures to connect to the Directory servers or to be listed.", gOptions.yp2Debug()},
-#if defined(_DEBUG) || defined(DEBUG)
-		// this is not enabled as we don't really want to promote the existence of this
-		{"authdebug", "Listener Auth Handling", "Used to diagnose issues with the client auth handling when clients connect to the stream.", gOptions.authDebug()},
-#endif
-		{"Miscellaneous", "", ""},
-		{"streamdatadebug", "Common Stream Handling", "Used to diagnose issues with general streaming code (non-protcool specific).", gOptions.streamDataDebug()},
-		{"statsdebug", "Client Statistics", "Used to inspect client statistics tracked by the server.", gOptions.statsDebug()},
-		{"microserverdebug", "Common Server Activity", "Used to diagnose and track common server activity.", gOptions.microServerDebug()},
-		{"threadrunnerdebug", "Thread Manager", "Used to diagnose and track the processing of threads by the thread manager.", gOptions.threadRunnerDebug()},
-	};
-
-	if (option.empty())
-	{
-		utf8 header = "HTTP/1.1 200 OK\r\n"
-					  "Cache-Control:no-cache\r\n"
-					  "Content-Type:text/html;charset=utf-8\r\n",
-			 body = getServerAdminHeader("Server Debugging Options") +
-					"<div><br>"
-					"<table align=\"center\" width=\"100%\"><tr valign=\"top\">"
-					"<td><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
-					"<tr valign=\"top\"><td>"
-					"<div style=\"max-width:15em;\" class=\"infb\">"
-					"<div align=\"center\" class=\"infh\"><b>Information</b></div>"
-					"Here you can find are all debugging options provided by the "
-					"DNAS server.<br><br>Changing the debugging options will update "
-					"the value saved in the DNAS server configuration file(s) as "
-					"needed.<br><br>Any changes are applied immediately.<br><br><hr><br>"
-
-					"<div align=\"left\"><b>All Options</b><br><br></div>"
-					"<input class=\"submit\" type=\"button\" onclick=\"toggle('all','true',1);\" name=\"all\" id=\"all\" value=\"Enable\">"
-					"&nbsp;&nbsp;&nbsp;<input class=\"submit\" type=\"button\" onclick=\"toggle('all','false',1);\" name=\"all\" id=\"all\" value=\"Disable\">"
-					"<br><br><hr><br>"
-
-					"<div align=\"left\"><b>Listener Options</b><br><br></div>"
-					"<input class=\"submit\" type=\"button\" onclick=\"toggle('listener','true',2);\" name=\"listener\" id=\"listener\" value=\"Enable\">"
-					"&nbsp;&nbsp;&nbsp;<input class=\"submit\" type=\"button\" onclick=\"toggle('listener','false',2);\" name=\"listener\" id=\"listener\" value=\"Disable\">"
-					"<br><br><hr><br>"
-
-					"<div align=\"left\"><b>Source Options</b><br><br></div>"
-					"<input class=\"submit\" type=\"button\" onclick=\"toggle('source','true',3);\" name=\"source\" id=\"sources\" value=\"Enable\">"
-					"&nbsp;&nbsp;&nbsp;<input class=\"submit\" type=\"button\" onclick=\"toggle('source','false',3);\" name=\"source\" id=\"source\" value=\"Disable\">"
-					"<br><br><hr><br>"
-
-					"<div align=\"left\"><b>Force Short Sends</b> <div id=\"forceshortsendsval\" "
-					"style=\"display:inline-block\">[" + (gOptions.forceShortSends() ? "Enabled" :
-					"Disabled") + "]</div><br><br>This inserts delays into sending stream(s)"
-					"to replicate network limiting and bandwidth issues (Default: <b>Disabled</b>).<br><br></div>"
-					"<input class=\"submit\" type=\"button\" onclick=\"toggle('forceshortsends','true',4);\" name=\"forceshortsends\" id=\"forceshortsends\" value=\"Enable\">"
-					"&nbsp;&nbsp;&nbsp;<input class=\"submit\" type=\"button\" onclick=\"toggle('forceshortsends','false',4);\" name=\"forceshortsends\" id=\"forceshortsends\" value=\"Disable\">"
-					"<br><br><hr><br>"
-
-					"<div align=\"left\"><b>Rate Limiting</b> <div "
-					"id=\"ratelimitval\" style=\"display:inline-block\">"
-					"[" + (gOptions.rateLimit() ? "Enabled" : "Disabled") +
-					"]</div><br><br>Controls the rate of output to even "
-					"it out and prefer sending larger blocks in one go instead of "
-					"doing smaller blocks more often (Default: <b>Enabled</b>).<br><br></div>"
-					"<input class=\"submit\" type=\"button\" onclick=\"toggle('ratelimit','true',5);\" name=\"ratelimit\" id=\"ratelimit\" value=\"Enable\">"
-					"&nbsp;&nbsp;&nbsp;<input class=\"submit\" type=\"button\" onclick=\"toggle('ratelimit','false',5);\" name=\"ratelimit\" id=\"ratelimit\" value=\"Disable\">"
-
-					"</div><td>";
-
-		for (size_t i = 0; i < sizeof(debug) / sizeof(debug[0]); i++)
-		{
-			if (!debug[i].desc.empty())
-			{
-				body += "<input autocomplete=\"off\" type=\"checkbox\" onclick=\"toggle('" +
-						debug[i].option + "',$('" + debug[i].option +
-						"').checked,0)\" name=\"" + debug[i].option +
-						"\" id=\"" + debug[i].option + "\"" +
-						(debug[i].value ? " checked=\"true\"" : " ") + " value=\"" +
-						(debug[i].value ? "1" : "0") + "\">" "<label for=\"" +
-						debug[i].option + "\" title=\"" + debug[i].option +
-						"\" style=\"padding-left: 7px;\"><b>" + debug[i].desc + "</b></label>"
-						"<div style=\"padding:5px 0 0 27px;\">" + debug[i].msg + "</div><br>";
-			}
-			else
-			{
-				body += (i ? "<br>" : (utf8)"") + "<b><u>" + debug[i].option + "</u>:</b><br><br>";
-			}
-		}
-
-		body += "</td></tr></table></td></tr></table></div>"
-				+ getUptimeScript() +
-				"<script type=\"text/javascript\">" EL
-				"function toggle(opt, on, mode) {" EL
-				"if(window.XMLHttpRequest){" EL
-				"xmlhttp=new XMLHttpRequest();" EL
-				"}else{" EL
-				"xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");" EL
-				"}" EL
-				"xmlhttp.open(\"GET\",\"admin.cgi?pass="+gOptions.adminPassword()+"&mode=debug&option=\"+opt+\"&on=\"+on,true);" EL
-				"xmlhttp.send(null);" EL
-				"if(mode == 1){" EL
-				"var labels = document.getElementsByTagName('LAB EL');" EL
-				"for (var i = 0; i < labels.length; i++) {" EL
-				"if (labels[i].htmlFor != '') {" EL
-				"$(labels[i].htmlFor).checked=(on=='true'?'true':'');"
-				"}" EL
-				"}" EL
-				"}" EL
-				"else if(mode == 2){" EL
-				"var labels = ['shoutcast1clientdebug', 'shoutcast2clientdebug', 'httpclientdebug', 'flvclientdebug'/*, 'm4aclientdebug'*/];" EL
-				"for (var i = 0; i < labels.length; i++) {" EL
-				"$(labels[i]).checked=(on=='true'?'true':'');"
-				"}" EL
-				"}" EL
-				"else if(mode == 3){" EL
-				"var labels = ['shoutcastsourcedebug', 'uvox2sourcedebug', 'httpsourcedebug', 'relayshoutcastdebug', 'relayuvoxdebug', 'relaydebug'];" EL
-				"for (var i = 0; i < labels.length; i++) {" EL
-				"$(labels[i]).checked=(on=='true'?'true':'');"
-				"}" EL
-				"}" EL
-				"else if(mode == 4){" EL
-				"$('forceshortsendsval').innerHTML=(on=='true'?'[Enabled]':'[Disabled]');" EL
-				"}" EL
-				"else if(mode == 5){" EL
-				"$('ratelimitval').innerHTML=(on=='true'?'[Enabled]':'[Disabled]');" EL
-				"}" EL
-				"}</script>" + getIEFlexFix() + getfooterStr();
-
-		COMPRESS(header, body);
-		header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-		sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-	}
-	else
-	{
-		if (option == "all")
-		{
-			ILOG(LOGNAME + utf8(on_off ? "Enabling" : "Disabling") + " all debugging options");
-			for (size_t i = 0; i < sizeof(debug) / sizeof(debug[0]); i++)
-			{
-				if (!debug[i].desc.empty())
-				{
-					// always set even if the saving fails so we've got something working
-					try
-					{
-						gOptions.setOption(debug[i].option, utf8(tos(on_off)));
-					}
-					catch(const exception &)
-					{
-					}
-
-					bool handled = false, idHandled = false;
-					// if we get a clear then just remove from the config and reload the page
-					if (gOptions.editConfigFileEntry(0, gOptions.confFile(), debug[i].option, tos(on_off),
-													 true, handled, idHandled, true) == false)
-					{
-						ELOG(LOGNAME "Error saving debug option: `" + debug[i].option + "'");
-					}
-				}
-			}
-		}
-		else if (option == "listener")
-		{
-			ILOG(LOGNAME + utf8(on_off ? "Enabling" : "Disabling") + " all listener debugging options");
-			const utf8 options[] = {"shoutcast1clientdebug", "shoutcast2clientdebug", "httpclientdebug", "flvclientdebug"/*, "m4aclientdebug"*/};
-			for (size_t i = 0; i < sizeof(options) / sizeof(options[0]); i++)
-			{
-				// always set even if the saving fails so we've got something working
-				try
-				{
-					gOptions.setOption(options[i], utf8(tos(on_off)));
-				}
-				catch(const exception &)
-				{
-				}
-
-				bool handled = false, idHandled = false;
-				// if we get a clear then just remove from the config and reload the page
-				if (gOptions.editConfigFileEntry(0, gOptions.confFile(), options[i], tos(on_off),
-												 true, handled, idHandled, true) == false)
-				{
-					ELOG(LOGNAME "Error saving debug option: `" + options[i] + "'");
-				}
-			}
-		}
-		else if (option == "source")
-		{
-			ILOG(LOGNAME + utf8(on_off ? "Enabling" : "Disabling") + " all source debugging options");
-			const utf8 options[] = {"shoutcastsourcedebug", "uvox2sourcedebug", "httpsourcedebug",
-									"relayshoutcastdebug", "relayuvoxdebug", "relaydebug"};
-			for (size_t i = 0; i < sizeof(options) / sizeof(options[0]); i++)
-			{
-				// always set even if the saving fails so we've got something working
-				try
-				{
-					gOptions.setOption(options[i], utf8(tos(on_off)));
-				}
-				catch(const exception &)
-				{
-				}
-
-				bool handled = false, idHandled = false;
-				// if we get a clear then just remove from the config and reload the page
-				if (gOptions.editConfigFileEntry(0, gOptions.confFile(), options[i], tos(on_off),
-												 true, handled, idHandled, true) == false)
-				{
-					ELOG(LOGNAME "Error saving debug option: `" + options[i] + "'");
-				}
-			}
-		}
-		else
-		{
-			ILOG(LOGNAME + utf8(on_off ? "Enabling" : "Disabling") + " the `" + option + "' debugging options");
-
-			// always set even if the saving fails so we've got something working
-			gOptions.setOption(option, utf8(tos(on_off)));
-
-			bool handled = false, idHandled = false;
-			// if we get a clear then just remove from the config and reload the page
-			if (gOptions.editConfigFileEntry(0, gOptions.confFile(), option, tos(on_off),
-											 true, handled, idHandled, true) == false)
-			{
-				ELOG(LOGNAME "Error saving debug option: `" + option + "'");
-			}
-		}
-
-		if (adminRefer)
-		{
-			sendMessageAndClose(redirect("admin.cgi", SHRINK));
-		}
-		else
-		{
-			sendMessageAndClose(MSG_200);
-		}
-	}
-}
-
-void protocol_admincgi::mode_help() throw()
-{
-	utf8 libs = "<u>Supporting Libraries</u>:<br><br>";
-	std::vector<uniString::utf8> parts = tokenizer(utf8(curl_version()), ' ');
-	for (vector<uniString::utf8>::const_iterator i = parts.begin(); i != parts.end(); ++i)
-	{
-		utf8::size_type pos = (*i).find('/');
-		if (pos != utf8::npos)
-		{
-			libs += (*i).substr(0, pos) + utf8(": <b>") + (*i).substr(pos + 1) + utf8("</b>");
-		}
-		else
-		{
-			libs += "<b>" + (*i) + "</b>";
-		}
-
-
-		if ((*i).find((utf8)"libcurl") != utf8::npos)
-		{
-			libs += " (<a target=\"_blank\" href=\"http://curl.haxx.se/\"><b>site</b></a>)";
-		}
-		else if ((*i).find((utf8)"OpenSSL") != utf8::npos)
-		{
-			libs += " (<a target=\"_blank\" href=\"http://www.openssl.org/\"><b>site</b></a>)";
-		}
-		else if ((*i).find((utf8)"zlib") != utf8::npos)
-		{
-			libs += " (<a target=\"_blank\" href=\"http://www.zlib.net/\"><b>site</b></a>)";
-		}
-		libs += "<br>";
-	}
-
-	const int cpu_count = gOptions.getCPUCount();
-	const utf8 cpu = "CPU Count: <b>" + tos(cpucount()) + "</b> -> " +
-					 (cpu_count == cpucount() ? "using " + utf8(cpu_count > 1 ? "all" : "the") +
-					 " available CPU" + (cpu_count > 1 ? "s" : "") : tos(cpu_count) +
-					 " specified to be used") + "<br><br>";
-
-	XML_Expat_Version expat = XML_ExpatVersionInfo();
-	utf8 header = MSG_NO_CLOSE_200,
-		 body = getServerAdminHeader("Server Help &amp; Documentation") +
-
-				"<div><br>"
-
-				"<div style=\"width:19em;margin: 0 0 1em 1em;\" class=\"infb\">"
-				"<div align=\"center\" class=\"infh\"><b>Help</b></div>"
-				"If you are having issues, you should first try to contact your "
-				"hosting provider.<br><br>If running the DNAS server yourself (or if instructed "
-				"to do so), then you can use our <a target=\"_blank\" "
-				"href=\"http://forums.shoutcast.com/forumdisplay.php?f=140\"><b>forum</b></a> "
-				"or you can contact <a href=\"mailto:support@shoutcast.com?subject=Shoutcast%20Support\">"
-				"<b>Shoutcast support</b></a> directly (e.g. if the issue relates to an "
-				"account / authhash issue).<br><br><b>Note:</b> If using the <a target=\"_blank\" "
-				"href=\"http://forums.shoutcast.com/forumdisplay.php?f=140\"><b>forum</b></a>, "
-				"do not post any information which could be used to compromise "
-				"your account / authhash / etc (e.g. passwords and authhash(s)).<br><br></div>"
-
-				"<div style=\"width:19em;margin: 0 0 1em 1em;\" class=\"infb\">"
-				"<div align=\"center\" class=\"infh\"><b>Documentation</b></div>"
-				"Supporting documentation for using the DNAS server from setup "
-				"to getting statistics from the server are <a target=\"_blank\" "
-				"href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_Broadcaster\"><b>online</b></a>.<br><br>"
-				"Otherwise a local copy can usually be found on the host machine at:<br><br>"
-				"<div style=\"word-break:break-all;\"><b>" + aolxml::escapeXML(gStartupDirectory) +
-				"</b></div><br><b>Note:</b>  The local copy is usually correct for the version being "
-				"used and the <a target=\"_blank\" href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_Broadcaster\">"
-				"<b>online</b></a> version will be for the most recent release.<br><br></div>"
-
-				"<div style=\"width:19em;margin: 0 0 1em 1em;\" class=\"infb\">"
-				"<div align=\"center\" class=\"infh\"><b>About</b></div>"
-				"Information about the DNAS server and the supporting libraries currently used.<br><br>"
-				"Version: <b>" + addWBR(gOptions.getVersionBuildStrings()) + "</b><br>"
-				"Platform: <b>" + SERV_OSNAME "</b><br>"
-				"Built: <b>" __DATE__"</b><br><br>"
-				+ libs +	// libcurl, openssl, zlib
-				"expat: <b>" + tos(expat.major) + "." + tos(expat.minor) + "." + tos(expat.micro) + "</b>"
-				" (<a target=\"_blank\" href=\"http://www.libexpat.org/\"><b>site</b></a>)"
-				//#ifdef _WIN32
-				//"<br>pthread-win32: <b>" PTW32_VERSION_STR "-mod</b>"
-				//" (<a target=\"_blank\" href=\"https://github.com/GerHobbelt/pthread-win32\"><b>site</b></a>)"
-				//#endif
-				"<br><br></div></div>"
-				
-				"<div style=\"width:19em;margin: 0 0 1em 1em;\" class=\"infb\"><div "
-				"align=\"center\" class=\"infh\"><b>Diagnostics</b></div>" + cpu +
-				"<u>Current thread &amp; runner usage</u>:<br><br>" +
-				threadedRunner::getRunnabledetails() + "<br></div></div>"
-				
-				+ getUptimeScript() + getIEFlexFix() + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-void protocol_admincgi::mode_config() throw()
-{
-	utf8 conf = gOptions.confFile();
-	utf8::size_type pos = conf.rfind(fileUtil::getFilePathDelimiter());
-	if ((pos != utf8::npos))
-	{
-		conf = conf.substr(pos + 1);
-	}
-
-	utf8 header = MSG_NO_CLOSE_200,
-		 body = getServerAdminHeader("Server Configuration Settings") +
-				"<div><div style=\"padding:1em;\"><b>This page shows the custom configuration settings "
-				"that this DNAS server is currently using. (Settings which match DNAS server defaults "
-				"may not be shown.)<br><br><u>Note #1:</u> To change these values, you will need to edit the "
-				"<u title=\"" + aolxml::escapeXML(fileUtil::getFullFilePath(gOptions.confFile())) + "\">" +
-				(!conf.empty() ? conf : "sc_serv.conf") + "</u> file on your server. See <a target=\"_blank\" "
-				"href=\"http://wiki.shoutcast.com/wiki/SHOUTcast_DNAS_Server_2#Configuration_File\">here</a> "
-				"for more information.<br><br><u>Note #2:</u> This is not the same as the actual configuration file "
-				"(i.e. the structure of the configuration file(s) being used is not shown)</b></div>" +
-				gOptions.dumpConfigFile() + "<br></div>" + getUptimeScript() + getIEFlexFix() + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-
-#if 0
-void protocol_admincgi::mode_logs() throw()
-{
-	utf8 header = "HTTP/1.1 200 OK\r\n"
-				  "Cache-Control:no-cache\r\n"
-				  "Content-Type:text/html;charset=utf-8\r\n",
-		 headerTitle = "Server Log Management", childPage = "";
-
-	bool bwstyle = false;
-	int refreshRequired = 0;
-	utf8 body = s_serverAdminHeading;
-
-	body += "<div style=\"padding:0 1em;\"><br>"
-			"<table align=\"center\" width=\"100%\"><tr valign=\"top\">"
-			"<td><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"padding-left:1em;\">"
-			"<tr valign=\"top\"><td>"
-			"<div style=\"width:215px;\" class=\"infb\">"
-			"<div align=\"center\" class=\"infh\"><b>Information</b></div>"
-			"Here you can find are all debugging options provided by the DNAS server.<br><br>Changing the debugging "
-			"options will update the value saved in the DNAS server configuration file(s) as needed.<br><br>"
-			"Any changes are applied immediately.<br><br></div>"
-
-			"<td>";
-
-	utf8 logfile = gOptions.realLogFile();
-
-	body += "<div style=\"padding-bottom:5px;\">Current log file:</div>";
-	body += "<div class=\"en\" style=\"padding-left:27px;padding:10px;margin-bottom:1em;"
-			"display:inline-block;border-radius:5px;\"><b>" +
-			aolxml::escapeXML(fileUtil::stripPath(logfile)) + "</b>"
-			"&nbsp;&nbsp;&nbsp;<a href=\"admin.cgi?mode=viewlog&amp;server=1\">View</a>"
-			"&nbsp;&nbsp;&nbsp;<a href=\"admin.cgi?mode=viewlog&amp;server=1&amp;viewlog=save\">Save</a>"
-			"<br>Size: <b>" + formatSizeString(uniFile::fileSize(logfile)) + "</b></div><br>";
-
-	utf8 rotated = fileUtil::stripSuffix(logfile) + "_*." + fileUtil::getSuffix(logfile);
-	body += "<div style=\"padding-bottom:5px;\">Older log file(s):</div>";
-	body += "<div>";
-	#ifdef _WIN32
-	vector<wstring> fileList = fileUtil::directoryFileList(utf8(fileUtil::getFullFilePath(rotated)).toWString(), L"", true, true);
-	#else
-	vector<string> fileList = fileUtil::directoryFileList(fileUtil::getFullFilePath(rotated), "");
-	#endif
-	if (!fileList.empty())
-	{
-		#ifdef _WIN32
-		for (vector<wstring>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-		#else
-		for (vector<string>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-		#endif
-		{
-			#ifdef _WIN32
-			utf32 u32file(*i);
-			utf8 u8f(u32file.toUtf8());
-			body += "<div class=\"en\" style=\"padding-left:27px;padding:10px;margin-bottom:1em;"
-					"display:inline-block;border-radius:5px;\"><b>" + fileUtil::stripPath(u8f) + "</b>"
-					"<div style=\"float:right;\">&nbsp;&nbsp;&nbsp;<a href=\"admin.cgi?mode=viewlog&amp;server=1&amp;file=" +
-					urlUtils::escapeURI_RFC3986(u8f) + "\">View</a>&nbsp;&nbsp;&nbsp;"
-					"<a href=\"admin.cgi?mode=viewlog&amp;server=1&amp;viewlog=save&amp;file=" +
-					urlUtils::escapeURI_RFC3986(u8f) + "\">Save</a></div><br>Size: <b>" +
-					formatSizeString(uniFile::fileSize(u8f)) + "</b>"
-					"<br>Last Modified: <b>" + getRFCDate(uniFile::fileTime(u8f)) + "</b></div><br>";
-			#else
-			body += "<div style=\"padding-left:27px;\"><b>" + fileUtil::stripPath(*i) + "</b>&nbsp;&nbsp;&nbsp;"
-			"<a href=\"admin.cgi?mode=viewlog&amp;server=1&amp;viewlog=save&amp;file="+urlUtils::escapeURI_RFC3986(*i)+"\">Save</a></div>";
-			#endif
-		}
-	}
-	body += "</div>";
-#if 0
-	utf8 archived = fileUtil::stripSuffix(logfile) + "_*.gz";
-	body += "<div style=\"padding:5px 0 0 27px;\"><b>Log file (archived):</b> "/* + aolxml::escapeXML(fileUtil::getFullFilePath(archived)) + */"</div><br>";
-	body += "<div>";
-	#ifdef _WIN32
-	fileList = fileUtil::directoryFileList(utf8(fileUtil::getFullFilePath(archived)).toWString(), L"", true, true);
-	#else
-	fileList = fileUtil::directoryFileList(fileUtil::getFullFilePath(archived), "");
-	#endif
-	if (!fileList.empty())
-	{
-		#ifdef _WIN32
-		for (vector<wstring>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-		#else
-		for (vector<string>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-		#endif
-		{
-			#ifdef _WIN32
-			utf32 u32file(*i);
-			utf8 u8f(u32file.toUtf8());
-			body += "<div style=\"padding-left:27px;\">" + fileUtil::stripPath(u8f) + "</div>";
-			#else
-			body += "<div style=\"padding-left:27px;\">" + fileUtil::stripPath(*i) + "</div>";
-			#endif
-		}
-	}
-	body += "</div>";
-
-	body += "<hr>";
-
-	utf8 w3cfile = gOptions.w3cLog();
-	body += "<div style=\"padding:5px 0 0 27px;\">W3C file: " + aolxml::escapeXML(fileUtil::getFullFilePath(w3cfile)) + "</div><br>";
-	utf8 archived = fileUtil::stripSuffix(w3cfile) + "_*.gz";
-	body += "<div style=\"padding:5px 0 0 27px;\">W3C file (archived): " + aolxml::escapeXML(fileUtil::getFullFilePath(archived)) + "</div><br>";
-	archived = fileUtil::stripSuffix(w3cfile) + "_*_w3c.gz";
-	body += "<div style=\"padding:5px 0 0 27px;\">W3C file (archived 2): " + aolxml::escapeXML(fileUtil::getFullFilePath(archived)) + "</div><br>";
-	body += "<div>";
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-	for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-	{
-		// w3c logging
-		if (gOptions.read_stream_w3cLog((*i).first))
-		{
-			body += "<div style=\"padding:5px 0 0 27px;\">Stream W3C file: " + aolxml::escapeXML(fileUtil::getFullFilePath(gOptions.stream_w3cLog((*i).first))) + "</div><br>";
-		}
-	}
-	body += "</div>";
-	body += "<hr>";
-	body += "<div>";
-	#ifdef _WIN32
-	fileList = fileUtil::directoryFileList(gStartupDirectory.toWString() + L"sc_w3c*.log", L"", true, true);
-	#else
-	fileList = fileUtil::directoryFileList(gStartupDirectory.hideAsString() + "sc_w3c*.log", "");
-	#endif
-	if (!fileList.empty())
-	{
-		#ifdef _WIN32
-		for (vector<wstring>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-		#else
-		for (vector<string>::const_iterator i = fileList.begin(); i != fileList.end(); ++i)
-		#endif
-		{
-			#ifdef _WIN32
-			utf32 u32file(*i);
-			utf8 u8f(u32file.toUtf8());
-			body += "<div style=\"padding-left:27px;\">" + fileUtil::stripPath(u8f) + "</div>";
-			#else
-			body += "<div style=\"padding-left:27px;\">" + fileUtil::stripPath(*i) + "</div>";
-			#endif
-		}
-	}
-	body += "</div>";
-#endif
-	body += "</td></tr></table></td></tr></table></div>"
-			+ getUptimeScript() +
-			"<script type=\"text/javascript\">" EL
-			"function toggle(opt, on, all) {" EL
-			"if(window.XMLHttpRequest){" EL
-			"xmlhttp=new XMLHttpRequest();" EL
-			"}else{" EL
-			"xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");" EL
-			"}" EL
-			"xmlhttp.open(\"GET\",\"admin.cgi?pass="+gOptions.adminPassword()+"&mode=debug&option=\"+opt+\"&on=\"+on,true);" EL
-			"xmlhttp.send(null);" EL
-			"if(all){" EL
-			"var labels = document.getElementsByTagName('LAB EL');" EL
-			"for (var i = 0; i < labels.length; i++) {" EL
-			"if (labels[i].htmlFor != '') {" EL
-			"$(labels[i].htmlFor).checked=(on=='true'?'true':'');"
-			"}" EL
-			"}" EL
-			"}" EL
-			"}</script>" + getfooterStr();
-
-	COMPRESS(header, body);
-	header += "Content-Length: " + tos(body.size()) + "\r\n\r\n";
-	sendMessageAndClose(header + (!HEAD_REQUEST ? body : ""));
-}
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_admincgi.h b/Src/Plugins/DSP/sc_serv3/protocol_admincgi.h
deleted file mode 100644
index eeec9327..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_admincgi.h
+++ /dev/null
@@ -1,115 +0,0 @@
-#pragma once
-#ifndef protocol_admincgi_H_
-#define protocol_admincgi_H_
-
-#include "threadedRunner.h"
-#include "protocol_HTTPStyle.h"
-#include "streamData.h"
-
-// this class takes any necessary actions indicated by an HTTP
-// call with the /admin.cgi url
-class protocol_admincgi: public runnable
-{
-private:
-	const bool	m_noSID;
-	const bool	m_zeroSID;
-	short		m_saveLogFile;
-
-	const uniString::utf8			m_clientLogString;
-	const protocol_HTTPStyle::HTTPRequestInfo	m_httpRequestInfo;
-	const uniString::utf8			m_password;
-	uniString::utf8					m_referer;
-	const uniString::utf8			m_hostIP;
-	const uniString::utf8			m_userAgent;
-	const streamData::streamID_t	m_sid;
-
-	virtual uniString::utf8 name() const throw() { return "protocol_admincgi"; }
-	void timeSlice() throw(std::exception);
-	typedef void (protocol_admincgi::*state_t)();
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	const uniString::utf8::value_type	*m_outBuffer;	// for outgoing text lines
-	int									m_outBufferSize;
-
-	bool m_tailLogFile;
-	// for log file output colouring
-	char lastChar;
-	bool inMsg;
-	bool first;
-
-	uniString::utf8	m_outMsg;
-	uniString::utf8	m_updinfoSong;	// for the updinfo so we're not re-processing after checking
-	uniString::utf8	m_updinfoURL;	// for the updinfo so we're not re-processing after checking
-	uniString::utf8	m_updinfoDJ;	// for the updinfo so we're not re-processing after checking
-	uniString::utf8	m_updinfoNext;	// for the updinfo so we're not re-processing after checking
-
-	// for log file transmission
-	FILE*			m_logFile;
-	uniString::utf8	m_logFileName;
-	uniString::utf8	m_logFileHeader;
-	uniString::utf8	m_logFileBodyPrefix;
-	uniString::utf8	m_logFileBodyFooter;
-	std::vector<uniString::utf8::value_type> m_logFileBuffer;
-	z_stream m_stream;
-
-	void state_ConfirmPassword() throw(std::exception);
-	void state_Send() throw(std::exception);
-	void state_Close() throw(std::exception);
-	void state_UpdateMetadata() throw(std::exception);
-	void state_UpdateXMLMetadata() throw(std::exception);
-	void state_SendFileHeader() throw(std::exception);
-	void state_SendFileFooter() throw(std::exception);
-	void state_SendFileContents() throw(std::exception);
-	void state_SendFileEnd() throw(std::exception);
-
-	void sendMessageAndClose(const uniString::utf8 &msg) throw();
-
-	void mode_none(const streamData::streamID_t sid, const int refreshRequired) throw();
-	void mode_kickdst(const streamData::streamID_t sid, const uniString::utf8 &kickAddrs) throw();
-	void mode_ban(const streamData::streamID_t sid, const uniString::utf8 &banAddrs, const int banMask) throw();
-	void mode_unban(const streamData::streamID_t sid, const uniString::utf8 &banAddr, const int banMask) throw();
-	void mode_viewban(const streamData::streamID_t sid) throw();
-	void mode_viewrip(const streamData::streamID_t sid) throw();
-	void mode_rip(const streamData::streamID_t sid, const uniString::utf8 &ripAddr, const uniString::utf8 &rawIpAddr) throw();
-	void mode_unrip(const streamData::streamID_t sid, const uniString::utf8 &ripAddr, const uniString::utf8 &rawIpAddr) throw();
-	void mode_viewagent(const streamData::streamID_t sid) throw();
-	void mode_agent(const streamData::streamID_t sid, const uniString::utf8 &agent) throw();
-	void mode_unagent(const streamData::streamID_t sid, const uniString::utf8 &agent) throw();
-	void mode_viewxml(const streamData::streamID_t sid, int page, const bool iponly, const bool ipcount) throw();
-	void mode_viewjson(const streamData::streamID_t sid, int page, const bool iponly, const bool ipcount, const uniString::utf8& callback) throw();
-	void mode_viewlog(const streamData::streamID_t sid, const bool tail, const bool save, const bool server) throw();
-	void mode_art(const streamData::streamID_t sid, const int mode) throw();
-	void mode_register(const streamData::streamID_t sid, const streamData::streamInfo &info) throw();
-	void mode_listeners(const streamData::streamID_t sid) throw();
-	void mode_summary(const int refreshRequired) throw();
-	void mode_bandwidth_html(const int refreshRequired) throw();
-	void mode_bandwidth_xml() throw();
-	void mode_bandwidth_json(const uniString::utf8& callback) throw();
-	void mode_ypstatus_xml() throw();
-	void mode_ypstatus_json(const uniString::utf8& callback) throw();
-	void mode_sources(const uniString::utf8& host) throw();
-	void mode_adgroups() throw();
-	void mode_debug(const uniString::utf8& option, const int on_off, const bool adminRefer) throw();
-	void mode_logs() throw();
-	void mode_history(const streamData::streamID_t sid) throw();
-	void mode_help() throw();
-	void mode_config() throw();
-
-	const uniString::utf8 getClientIP(const bool streamPublic, const uniString::utf8 &publicIP) throw();
-	uniString::utf8 escapeText(const std::vector<uniString::utf8::value_type> &s) throw();
-
-public:
-	protocol_admincgi(const socketOps::tSOCKET s, const streamData::streamID_t sid, const bool no_sid,
-					  const bool zero_sid, const uniString::utf8 &clientLogString,
-					  const uniString::utf8 &password, const uniString::utf8 &referer,
-					  const uniString::utf8 &hostIP, const uniString::utf8 &m_userAgent,
-					  const protocol_HTTPStyle::HTTPRequestInfo &httpRequestInfo) throw(std::exception);
-	~protocol_admincgi() throw();
-};
-
-extern uniString::utf8 logId;
-const uniString::utf8 randomId(uniString::utf8 &temp);
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_backup.cpp b/Src/Plugins/DSP/sc_serv3/protocol_backup.cpp
deleted file mode 100644
index 2ebe5562..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_backup.cpp
+++ /dev/null
@@ -1,538 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <assert.h>
-#include "protocol_backup.h"
-#include "protocol_relay_shoutcast.h"
-#include "protocol_relay_uvox.h"
-#include "bandwidth.h"
-#include "streamData.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-#define LOGNAME             "BACKUP"
-
-#define DEBUG_LOG(...)      do { if (gOptions.relayDebug()) DLOG(__VA_ARGS__); } while (0)
-
-protocol_backup::protocol_backup(const config::streamConfig &info, const int originalBitrate, const uniString::utf8& originalMimeType) throw()
-	: m_originalMimeType(originalMimeType), m_outBuffer(0),
-	  m_outBufferSize(0), m_originalBitrate(originalBitrate), m_retryCount(0),
-	  m_backupWaitingToReconnect(false), m_backupSentConnectWait(false),
-	  m_skip(false), m_tryRelaySource(false), m_backupReconnectStartTime(0),
-	  m_state(&protocol_backup::state_Initial), m_nextState(0),
-	  m_backupInfo(info), m_originalbackupInfo(info), m_redirectCount(0)
-{
-	m_srcPort = m_backupInfo.m_backupUrl.port();
-	m_srcAddrName = m_backupInfo.m_backupUrl.server();
-	m_srcURLpart = m_backupInfo.m_backupUrl.path();
-	m_srcLogString = "[BACKUP " + m_srcAddrName + ":" + tos(m_srcPort) +
-					 (m_srcURLpart == "/" ? "" : m_srcURLpart) +
-					 " sid=" + tos(m_backupInfo.m_streamID) + "] ";
-
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-}
-
-protocol_backup::~protocol_backup() throw()
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	socketOps::forgetTCPSocket(m_socket);
-}
-
-void protocol_backup::timeSlice() throw(exception)
-{
-	// check if the DNAS has stopped or that the relay hasn't been stopped as
-	// otherwise this'll sit and keep making backup attempts when not needed,
-	// making sure that we've given the backup at least an attempt to connect
-
-    bool serverDown = iskilled();
-    bool noEntry = false, inactive = ((streamData::isRelayActive(m_backupInfo.m_streamID, noEntry) & 8) != 8);
-
-    if (serverDown || noEntry || inactive)
-    {
-        bool noEntry = false;
-        streamData::setRelayActiveFlags (m_backupInfo.m_streamID, noEntry, 0, 8);
-
-        ILOG (m_srcLogString + "Termination for source backup detected", LOGNAME, m_originalbackupInfo.m_streamID);
-        m_result.done();
-        return;
-    }
-
-	if (m_backupWaitingToReconnect && (::time(NULL) < m_backupReconnectStartTime))
-	{
-		// an error occured in the past and we are waiting for the appropriate time interval before we do anything
-        m_result.schedule(350);
-        return;
-	}
-	else
-	{
-		// normal running
-		try
-		{
-			(this->*m_state)();
-		}
-		catch(const exception &ex)
-		{
-			// close socket and move into waiting state for reconnect
-			socketOps::forgetTCPSocket(m_socket);
-
-			// but first see if we've hit the retry limit (which can be set as zero to keep on going)
-			++m_retryCount;
-			int retryLimit = gOptions.relayConnectRetries();
-			DEBUG_LOG(m_srcLogString + __FUNCTION__ + utf8(" m_retryCount:") + tos(m_retryCount) + " retryLimit:" + tos(retryLimit) + " m_tryRelaySource: " + tos(m_tryRelaySource), LOGNAME, m_originalbackupInfo.m_streamID);
-			if ((retryLimit == 0) || (m_retryCount < retryLimit && retryLimit > 0))
-			{
-				utf8 msg = ex.what();
-				if (!msg.empty())
-				{
-					ELOG(ex.what());
-				}
-
-				m_backupWaitingToReconnect = true;
-				m_state = &protocol_backup::state_Initial;
-				m_backupInfo = m_originalbackupInfo;
-				m_backupReconnectStartTime = ::time(NULL) + gOptions.relayReconnectTime();
-                m_result.schedule (550);
-			}
-			else
-			{
-                bool noEntry = false;
-                streamData::setRelayActiveFlags (m_backupInfo.m_streamID, noEntry, 0, 8);
-
-				throwEx<runtime_error>(m_srcLogString + ex.what());
-			}
-		}
-	}
-}
-
-// parse out backupInfo object
-void protocol_backup::state_Initial() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	// if m_retryCount is over 1 then pull the stream relay url from
-	// the config details as we could be in a re-try or having done
-	// a config reload and the stream relay url has then since changed
-	// - this primarily aids a config change for a pending relay join
-	if (m_retryCount > 0)
-	{
-        m_backupInfo.m_backupUrl = gOptions.stream_backupURL (m_backupInfo.m_streamID);
-        m_backupInfo.m_relayUrl = gOptions.stream_relayURL (m_backupInfo.m_streamID);
-	}
-
-	m_srcAddrName = m_backupInfo.m_backupUrl.server();
-	m_srcPort = m_backupInfo.m_backupUrl.port();
-	m_srcURLpart = m_backupInfo.m_backupUrl.path();
-
-	m_srcLogString = "[BACKUP " + m_srcAddrName + ":" + tos(m_srcPort) +
-					 (m_srcURLpart == "/" ? "" : m_srcURLpart) +
-					 " sid=" + tos(m_backupInfo.m_streamID) + "] ";
-
-	// make sure we're not trying to run a backup which is the same relay as failed
-	if (m_backupInfo.m_relayUrl.isSet())
-	{
-		// check on individual parts as the general url may not be formatted the same
-		// as well as checking against the 'streampath' version is specified for the
-		// /stream/x/ alternative (am sure someone is going to try to hack on that).
-		if (!m_tryRelaySource &&
-		    (m_backupInfo.m_relayUrl.server() == m_srcAddrName) &&
-		    (m_backupInfo.m_relayUrl.port() == m_srcPort) &&
-		    (m_backupInfo.m_relayUrl.path() == m_srcURLpart))
-		{
-            bool noEntry = false;
-            streamData::setRelayActiveFlags (m_backupInfo.m_streamID, noEntry, 0, 8);
-
-			ELOG(m_srcLogString + "Backup source rejected. The backup cannot be the same as the original relay source.", LOGNAME, m_originalbackupInfo.m_streamID);
-			m_result.done();
-			return;
-		}
-		else
-		{
-			if ((m_backupInfo.m_relayUrl.server() == m_srcAddrName) &&
-			    (m_backupInfo.m_relayUrl.port() == m_srcPort))
-			{
-				utf8::size_type pos = (!m_srcURLpart.empty() ? m_srcURLpart.find(utf8("/stream/")) : utf8::npos);
-				streamData::streamID_t streamID = 0;
-				if (pos != utf8::npos)
-				{
-					streamID = atoi((const char *)m_srcURLpart.substr(pos + 8).c_str());
-				}
-
-				if (streamID > 0)
-				{
-					bool htmlPage = false;
-					if (!m_tryRelaySource && streamData::getStreamIdFromPath(m_backupInfo.m_relayUrl.path(), htmlPage) == streamID)
-					{
-                        bool noEntry = false;
-                        streamData::setRelayActiveFlags (m_backupInfo.m_streamID, noEntry, 0, 8);
-
-						ELOG(m_srcLogString + "Backup source rejected. The backup cannot be the same as the original relay source.", LOGNAME, m_originalbackupInfo.m_streamID);
-						m_result.done();
-						return;
-					}
-				}
-			}
-		}
-	}
-
-	m_state = &protocol_backup::state_ResolveServer;
-	m_result.run();
-}
-
-// resolve server name to numeric address	
-void protocol_backup::state_ResolveServer() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	assert(m_socket == socketOps::cINVALID_SOCKET);
-	m_socket = socketOps::createTCPSocketTHROW();
-	socketOps::setNonblock(m_socket,true);
-	m_srcAddrNumeric = socketOps::hostNameToAddress(m_srcAddrName.hideAsString(), m_srcPort);
-	if (m_srcAddrNumeric.empty())
-	{
-        bool noEntry = false;
-        streamData::setRelayActiveFlags (m_backupInfo.m_streamID, noEntry, 0, 8);
-
-        m_result.done();
-        return;
-	}
-
-	m_state = &protocol_backup::state_Connect;
-	m_result.run();
-}
-
-// TCP connect	
-void protocol_backup::state_Connect() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	assert(m_socket != socketOps::cINVALID_SOCKET);
-
-	bool isSourceActive = false, relayRunning = false;
-	streamData *sd = streamData::accessStream(m_backupInfo.m_streamID, isSourceActive);
-	if (sd)
-	{
-		relayRunning = sd->isRelayStream(m_backupInfo.m_streamID);
-		sd->releaseStream();
-	}
-
-	if ((isSourceActive == false) || relayRunning)
-	{
-		if ((m_retryCount > 0) && !m_skip)
-		{
-			ILOG(m_srcLogString + "Connecting to source backup [attempt #" + tos(m_retryCount+1) + "]", LOGNAME, m_originalbackupInfo.m_streamID);
-		}
-
-		m_skip = false;
-		socketOps::connect(m_socket, m_srcAddrNumeric, m_srcPort);
-
-		m_lastActivityTime = ::time(NULL);
-		m_state = &protocol_backup::state_ConnectWait;
-		m_result.run();
-	}
-	else
-	{
-        bool noEntry = false;
-        streamData::setRelayActiveFlags (m_backupInfo.m_streamID, noEntry, 0, 8);
-
-		m_result.done();
-	}
-}
-
-// wait for connect to complete
-void protocol_backup::state_ConnectWait() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	assert(m_socket != socketOps::cINVALID_SOCKET);
-
-	time_t cur_time;
-	const int autoDumpSourceTime = detectAutoDumpTimeout (cur_time, m_originalbackupInfo.m_streamID, m_srcLogString + "Timeout trying to connect");
-
-    if (streamData::isSourceConnected (m_backupInfo.m_streamID))
-    {
-        bool noEntry = false;
-        streamData::setRelayActiveFlags (m_backupInfo.m_streamID, noEntry, 0, 8);
-
-        ILOG (m_srcLogString + "Original stream available, Abort trying to " +
-                (m_retryCount > 0 ? "re-" : "") +
-                "connect to the source backup", LOGNAME, m_originalbackupInfo.m_streamID);
-        m_result.done();
-        return;
-    }
-
-	// not pretty but the 'sent' checks allow this to work within the expected timeouts
-	// irrespective of being run on Windows or Linux as it could just sit and do nothing
-	// for a few minutes if there was no network activity on the DNAS causing there to be
-	// no attempt made to re-connect to the backup source (hopefully resolved in build 56)
-	string error;
-	socketOps::nonBlockConnect_t connectResult = socketOps::nonBlockingConnectWait(m_socket, error);
-	switch (connectResult)
-	{
-		case socketOps::NBC_ERROR:
-		{
-			throwEx<runtime_error>(m_srcLogString + error);
-			break;
-		}
-		case socketOps::NBC_INPROGRESS:
-		{
-            // try again but wait a bit
-            m_result.schedule(100);
-            m_result.timeout((autoDumpSourceTime - (int)(cur_time - m_lastActivityTime)));
-            break;
-        }
-        case socketOps::NBC_CONNECTED:
-		{
-			m_lastActivityTime = ::time(NULL);
-			m_state = &protocol_backup::state_SendGreeting;
-			m_result.run();
-			break;
-		}
-		default:
-		{
-            ELOG(m_srcLogString + "Unknown non-blocking connect state.", LOGNAME, m_originalbackupInfo.m_streamID);
-            throwEx<runtime_error>("");
-        }
-	}
-}
-
-void protocol_backup::state_SendGreeting() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	m_HTTPHeaders.clear();
-	m_HTTPGreetingResponse.clear();
-
-	string cdn;
-	if (isCDNSlave(m_backupInfo.m_streamID))
-	{
-		cdn = "cdn-slave:1\r\n";
-	}
-
-	m_lineBuffer = "GET " + m_srcURLpart + " " + "HTTP/1.1\r\n" +
-				   "Host:" + stripHTTPprefix(m_srcAddrName) + ":" + tos(m_srcPort) + "\r\n" +
-				   "User-Agent:" + g_userAgent + " Relay" +
-				   (!m_tryRelaySource ? " Backup" : "") + "\r\n" +
-				   "Ultravox transport type:TCP\r\n" +
-				   "Accept:*/*\r\n" +
-				   "icy-metadata:1\r\n" +
-				   cdn +
-				   "icy-host:" + metrics::metrics_verifyDestIP(gOptions) + "\r\n\r\n";
-
-	DEBUG_LOG(m_srcLogString + "Sending request [" + eol() + stripWhitespace(m_lineBuffer) + eol() + "]", LOGNAME, m_originalbackupInfo.m_streamID);
-	m_outBuffer = &(m_lineBuffer[0]);
-	bandWidth::updateAmount(bandWidth::RELAY_MISC_RECV, (m_outBufferSize = (int)m_lineBuffer.size()));
-
-	m_lastActivityTime = ::time(NULL);
-	m_state = &protocol_backup::state_Send;
-	m_nextState = &protocol_backup::state_GetGreetingResponse;
-
-	m_result.write();
-	m_result.timeoutSID(m_originalbackupInfo.m_streamID);
-}
-
-// send whatever is in outBuffer
-void protocol_backup::state_Send() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	if (sendDataBuffer(m_backupInfo.m_streamID, m_outBuffer, m_outBufferSize, m_srcLogString))
-	{
-		m_state = m_nextState;
-		m_lineBuffer.clear();
-	}
-}
-
-void protocol_backup::state_GetLine() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	if (getHTTPStyleHeaderLine(m_backupInfo.m_streamID, m_lineBuffer, m_srcLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_backup::state_GetGreetingResponse() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	m_state = &protocol_backup::state_GetLine;
-	m_nextState = &protocol_backup::state_AnalyzeGreetingResponse;
-
-	m_lastActivityTime = ::time(NULL);
-	m_result.read();
-	m_result.timeoutSID(m_originalbackupInfo.m_streamID);
-}
-
-// analyze header lines in greeting response	
-void protocol_backup::state_AnalyzeGreetingResponse() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	m_lastActivityTime = ::time(NULL);
-
-	if ((int)m_HTTPHeaders.size() >= gOptions.maxHeaderLineCount())
-	{
-        ELOG (m_srcLogString + "Max HTTP header lines exceeded", LOGNAME, m_originalbackupInfo.m_streamID);
-		throwEx<runtime_error>("");
-	}
-
-	m_lineBuffer = stripWhitespace(m_lineBuffer);
-	if (m_lineBuffer.empty())
-	{
-		m_state = &protocol_backup::state_DetermineProtocol;
-		m_result.run();
-	}
-	else
-	{
-		if (m_HTTPGreetingResponse.empty())
-		{
-			m_HTTPGreetingResponse = m_lineBuffer;
-		}
-		else
-		{
-			// find the colon that divides header lines into key/value fields
-			utf8::size_type pos = m_lineBuffer.find(utf8(":"));
-			if (pos == utf8::npos)
-			{
-                ELOG (m_srcLogString + "Connection rejected. Bad HTTP header string [" + m_lineBuffer + "]", LOGNAME, m_originalbackupInfo.m_streamID);
-                throwEx<runtime_error>("");
-			}
-
-			utf8 key = toLower(stripWhitespace(m_lineBuffer.substr(0, pos)));
-			utf8 value = stripWhitespace(m_lineBuffer.substr(pos + 1));
-			// allow empty values. (for urls and what-not)
-			if (key.empty())
-			{
-                ELOG (m_srcLogString + "Connection rejected. Bad HTTP header string [" + m_lineBuffer + "]", LOGNAME, m_originalbackupInfo.m_streamID);
-                throwEx<runtime_error>("");
-			}
-			m_HTTPHeaders[key] = value;
-		}
-
-		m_state = &protocol_backup::state_GetLine;
-		m_nextState = &protocol_backup::state_AnalyzeGreetingResponse;
-		m_result.read();
-		m_result.timeoutSID(m_originalbackupInfo.m_streamID);
-		m_lineBuffer.clear();
-	}
-}
-
-void protocol_backup::state_DetermineProtocol() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalbackupInfo.m_streamID);
-
-	if (m_HTTPGreetingResponse.empty())
-	{
-        ELOG (m_srcLogString + "Empty greeting response", LOGNAME, m_originalbackupInfo.m_streamID);
-        throwEx<runtime_error>("");
-	}
-
-	// parse into three fields
-	utf8 s = m_HTTPGreetingResponse;
-
-	utf8::size_type pos = (!s.empty() ? s.find(utf8(" ")) : utf8::npos);
-	if (pos == utf8::npos)
-	{
-        ELOG (m_srcLogString + "Badly formed response line [" + m_HTTPGreetingResponse + "]", LOGNAME, m_originalbackupInfo.m_streamID);
-        throwEx<runtime_error>("");
-	}
-
-	s = stripWhitespace(s.substr(pos));
-	pos = (!s.empty() ? s.find(utf8(" ")) : utf8::npos);
-	if (pos == utf8::npos)
-	{
-        ELOG (m_srcLogString + "Badly formed response line [" + m_HTTPGreetingResponse + "]", LOGNAME, m_originalbackupInfo.m_streamID);
-        throwEx<runtime_error>("");
-	}
-
-	int resultCode = utf8(s.substr(0, pos)).toInt();
-	if (resultCode == 200)
-	{
-		utf8 diag;
-		for (httpHeaderMap_t::const_iterator i = m_HTTPHeaders.begin(); i != m_HTTPHeaders.end(); ++i)
-		{
-			diag += (*i).first + ": " + (*i).second + eol();
-		}
-		DEBUG_LOG(m_srcLogString + "Received headers [" + eol() + stripWhitespace(diag) + eol() + "]", LOGNAME, m_originalbackupInfo.m_streamID);
-
-		const socketOps::tSOCKET s = m_socket;
-		m_socket = socketOps::cINVALID_SOCKET;
-
-		// changed order of this in build 19 so that all uvox2 is reported as misc/ultravox
-		// and we then base things off the user-agent containing 'Ultravox/2.1'
-		// we look at content-type to determine the protocol
-		if ((m_HTTPHeaders["content-type"] == "misc/ultravox") &&
-			(m_HTTPHeaders["server"].find(utf8("Ultravox/2.1")) != utf8::npos))
-		{
-			// uvox 2.1
-			threadedRunner::scheduleRunnable(new protocol_relay_uvox(s, m_originalbackupInfo, m_srcAddrName, m_srcAddrNumeric,
-																	 m_srcPort, (m_srcURLpart == "/" ? "" : m_srcURLpart),
-																	 m_HTTPHeaders, m_originalBitrate, m_originalMimeType,
-																	 !m_tryRelaySource));
-		}
-		else
-		{
-			// shoutcast
-			threadedRunner::scheduleRunnable(new protocol_relay_shoutcast(s, m_originalbackupInfo, m_srcAddrName, m_srcAddrNumeric,
-																		  m_srcPort, (m_srcURLpart == "/" ? "" : m_srcURLpart),
-																		  m_HTTPHeaders, m_originalBitrate, m_originalMimeType,
-																		  !m_tryRelaySource));
-		}
-
-		m_result.done();
-	}
-	else if ((resultCode >= 300) && (resultCode < 400))
-	{
-		utf8 location = m_HTTPHeaders["location"];
-
-		// do we maybe have a /stream/x url and gotten a /index.html?sid=# redirect?
-		// if so then we should attempt to access a relay on /stream/x/ (note end / )
-		utf8::size_type pos = (!location.empty() ? location.find(utf8("/index.html?sid=")) : utf8::npos);
-		if (pos != utf8::npos)
-		{
-			streamData::streamID_t foundID = atoi((const char *)location.substr(pos + 16).c_str());
-			utf8::size_type pos2 = m_backupInfo.m_backupUrl.path().find(utf8("/stream/"));
-			if (pos2 != utf8::npos)
-			{
-				streamData::streamID_t origID = atoi((const char *)m_backupInfo.m_backupUrl.path().substr(pos2 + 8).c_str());
-				if (foundID == origID)
-				{
-					m_backupInfo.m_backupUrl = m_backupInfo.m_backupUrl.url() + "/";
-					gOptions.setOption(utf8("streambackupurl_" + tos(m_originalbackupInfo.m_streamID)),
-									   m_backupInfo.m_backupUrl.url());
-
-					m_skip = true;
-					m_state = &protocol_backup::state_Initial;
-					socketOps::forgetTCPSocket(m_socket);
-					m_result.run();
-					WLOG(m_srcLogString + "Received an invalid redirect to `" + location + "' - trying " + m_backupInfo.m_backupUrl.url(), LOGNAME, m_originalbackupInfo.m_streamID);
-					return;
-				}
-			}
-		}
-
-		ILOG(m_srcLogString + "Received redirect to " + location, LOGNAME, m_originalbackupInfo.m_streamID);
-		if (++m_redirectCount > gOptions.maxHTTPRedirects())
-		{
-            WLOG (m_srcLogString + "Max redirects exceeded", LOGNAME, m_originalbackupInfo.m_streamID);
-            throwEx<runtime_error>("");
-		}
-
-		m_skip = true;
-		m_backupInfo.m_backupUrl = location;
-		m_state = &protocol_backup::state_Initial;
-		socketOps::forgetTCPSocket(m_socket);
-		m_result.run();
-	}
-	else
-	{
-        WLOG (m_srcLogString + (resultCode >= 400 ?  "Source responded with error [" : "Unsupported HTTP response code [") +
-                m_HTTPGreetingResponse + "]", LOGNAME, m_originalbackupInfo.m_streamID);
-        throwEx<runtime_error>("");
-    }
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_backup.h b/Src/Plugins/DSP/sc_serv3/protocol_backup.h
deleted file mode 100644
index 5f83bf18..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_backup.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#pragma once
-#ifndef protocol_backup_H_
-#define protocol_backup_H_
-
-#include "threadedRunner.h"
-
-/*
-	Runnable object that handles the initial part of a backup connection
-	which is basically the same as a relay connection bar a different name.
-	Makes the connection to the source and determines what type of protocol
-	should be used, then hands off to the particular relay protocol
-	(shoutcast or uvox relay)
-*/
-
-class protocol_backup: public runnable
-{			
-private:
-	uniString::utf8 m_srcAddrName;		// server DNS name or value as specified in backupInfo
-	std::string m_srcAddrNumeric;	// resolved numeric addr
-	uniString::utf8 m_srcURLpart;		// server
-
-	uniString::utf8 m_originalMimeType;	// original mimetype for checking
-
-	uniString::utf8 m_srcLogString;
-	httpHeaderMap_t m_HTTPHeaders;
-	uniString::utf8 m_HTTPGreetingResponse; // first line of response
-
-	const uniString::utf8::value_type *m_outBuffer; // for outgoing text lines
-	int m_outBufferSize;
-	const int m_originalBitrate;	// original bitrate for checking
-
-	uniString::utf8 m_lineBuffer;		// in/out lines
-
-	int		m_retryCount;
-	bool	m_backupWaitingToReconnect;
-	bool	m_backupSentConnectWait;
-	bool	m_skip;
-	bool	m_tryRelaySource;
-
-	time_t m_backupReconnectStartTime;
-
-	typedef void (protocol_backup::*state_t)();
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	config::streamConfig		m_backupInfo;
-	const config::streamConfig	m_originalbackupInfo; // used for reconnects later on
-
-	u_short	m_srcPort;			// server port
-	short	m_redirectCount;
-
-	void state_Initial() throw(std::exception);
-	void state_ResolveServer() throw(std::exception);
-	void state_Connect() throw(std::exception);
-	void state_ConnectWait() throw(std::exception);
-	void state_SendGreeting() throw(std::exception);
-	void state_GetGreetingResponse() throw(std::exception);
-	void state_AnalyzeGreetingResponse() throw(std::exception);
-	void state_DetermineProtocol() throw(std::exception);
-	void state_Send() throw(std::exception);
-	void state_GetLine() throw(std::exception);
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_backup"; }
-
-public:
-	protocol_backup(const config::streamConfig &info, const int originalBitrate, const uniString::utf8& originalMimeType) throw();
-	virtual ~protocol_backup() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_flvClient.cpp b/Src/Plugins/DSP/sc_serv3/protocol_flvClient.cpp
deleted file mode 100644
index 205621e9..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_flvClient.cpp
+++ /dev/null
@@ -1,275 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_flvClient.h"
-#include "ripList.h"
-#include "stats.h"
-#include "streamData.h"
-#include "w3cLog.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "FLV.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(...)      do { if (gOptions.flvClientDebug()) DLOG(__VA_ARGS__); } while (0)
-#define AD_DEBUG_LOG(...)   do { if (gOptions.adMetricsDebug()) DLOG(__VA_ARGS__); } while (0)
-
-protocol_flvClient::protocol_flvClient (protocol_HTTPStyle &hs, const streamData::streamID_t streamID,
-        const uniString::utf8 &hostName, const uniString::utf8 &addr, const uniString::utf8 &XFF) throw (std::exception)
-
-    : protocol_shoutcastClient (hs, streamID, hostName, addr, XFF, streamData::FLV)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-    m_timestamp = 0;
-    m_fileOffset = 0;
-	setCallback (&protocol_shoutcastClient::state_AttachToStream);
-}
-
-protocol_flvClient::~protocol_flvClient() throw()
-{
-	cleanup("FLV", gOptions.flvClientDebug(), false, true);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void protocol_flvClient::timeSlice() throw(exception)
-{
-	int ret = doTimeSlice();
-	if (ret == 1)
-	{
-		m_state = &protocol_flvClient::state_Stream;
-		return;
-	}
-	else if (ret == 2)
-	{
-		return;
-	}
-
-	(this->*m_state)();
-}
-
-
-void protocol_flvClient::setCallback (protocol_shoutcastClient::state_t callback, protocol_shoutcastClient::state_t next)
-{
-    m_state = callback ? callback : m_nextState;
-    m_nextState = callback ? next : NULL;
-}
-
-
-void protocol_flvClient::state_Close() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	m_result.done();
-}
-
-void protocol_flvClient::state_SendText() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-
-	if (sendText())
-	{
-		m_metaIntervalCounter = 0;
-		m_state = m_nextState;
-	}
-}
-
-// find the appropriate stream and try to attach to it
-void protocol_flvClient::state_AttachToStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	int read_bitrate = 0;
-	m_streamData = streamData::accessStream(m_streamID);
-	if (!m_streamData)
-	{
-		if (processReject("FLV", bandWidth::CLIENT_FLV_SENT, MSG_ICY_HTTP401,
-						  MSG_ICY_HTTP401_LEN, &read_bitrate))
-		{
-			goto fall_through;
-		}
-
-		m_state = &protocol_shoutcastClient::state_SendText;
-		m_nextState = &protocol_shoutcastClient::state_Close;
-	}
-	else
-	{
-fall_through:
-
-		// for FLV, we can only support specific sample rates before we
-		// have playback / compatibility issues vs what the spec wants.
-		if (m_streamData)
-		{
-			const unsigned int samplerate = m_streamData->streamSampleRate();
-			if ((m_streamData->streamUvoxDataType() == MP3_DATA) &&
-				((samplerate != 44100) && (samplerate != 22050) && (samplerate != 11025)))
-			{
-				m_outBuffer = MSG_ICY_HTTP401.c_str();
-				bandWidth::updateAmount(bandWidth::CLIENT_FLV_SENT, (m_outBufferSize = MSG_ICY_HTTP401_LEN));
-
-				m_state = &protocol_shoutcastClient::state_SendText;
-				m_nextState = &protocol_shoutcastClient::state_Close;
-				m_result.write();
-				m_result.timeoutSID(m_streamID);
-				m_ignoreDisconnect = true;
-
-				if (gOptions.logClients())
-				{
-					ELOG(m_clientLogString + "FLV client connection rejected. Stream samplerate is " +
-						 sampleRateStr(samplerate) + " which is not supported for MP3-in-FLV streaming " +
-						 "(only 44.1 kHz, 22.05 kHz and 11.025 kHz samplerates are allowed).");
-				}
-
-				return;
-			}
-		}
-
-		const utf8 movedUrl = gOptions.stream_movedUrl(m_streamID);
-		if (movedUrl.empty())
-		{
-			const int add = processAdd("FLV", bandWidth::CLIENT_FLV_SENT,
-									   MSG_ICY_HTTP401, MSG_ICY_HTTP401_LEN, movedUrl,
-									   (m_streamData ? m_streamData->streamBackupServer() : ""));
-			if (add != 1)
-			{
-				m_state = &protocol_shoutcastClient::state_SendText;
-				m_nextState = &protocol_shoutcastClient::state_Close;
-			}
-			else
-			{
-				const bool isPodcast = (!m_streamData && (gOptions.getBackupLoop(m_streamID) == 1));
-				m_OKResponse = MSG_ICY_HTTP200 + "Content-Type:video/x-flv\r\n";
-
-				if (!m_streamData)
-				{
-					utf8 path = getStreamPath(m_streamID);
-					if (!path.empty() && path.find(utf8("/")) == 0)
-					{
-						path = path.substr(1);
-					}
-
-					if (isPodcast)
-					{
-						m_OKResponse += "Content-Disposition:attachment;filename=\"" + path + "\"\r\n"
-										"Content-Length:" + tos(m_backupFile.size()) + "\r\n";
-					}
-				}
-
-				if (gOptions.clacks())
-				{
-					m_OKResponse += "X-Clacks-Overhead:GNU Terry Pratchett\r\n";
-				}
-				m_OKResponse += "\r\n";
-
-				DEBUG_LOG(m_clientLogString + "Sending [" + eol() + stripWhitespace(m_OKResponse) + eol() + "]");
-				m_outBuffer = m_OKResponse.c_str();
-				bandWidth::updateAmount(bandWidth::CLIENT_FLV_SENT, (m_outBufferSize = (int)m_OKResponse.size()));
-				m_state = &protocol_shoutcastClient::state_SendText;
-				if (!m_headRequest)
-				{
-					m_nextState = &protocol_shoutcastClient::state_InitiateStream;
-				}
-				else
-				{
-					m_removeClientFromStats = false;
-					m_ignoreDisconnect = true;
-					m_nextState = &protocol_shoutcastClient::state_Close;
-				}
-				m_result.write();
-				m_result.timeoutSID(m_streamID);
-				m_result.run();
-
-				// when the client is added, we get back the unique id of the connection
-				// but we now check for being > 0 as we need to filter out some of the
-				// YP connections from being counted as valid clients for stats, etc
-				reportNewListener("FLV");
-			}
-		}
-		else
-		{
-			// if we get to here then we attempt to redirect the clients to the moved url
-			// which is useful if the stream has moved hosting or it has been deprecated.
-			streamMovedOrRejected("FLV", bandWidth::CLIENT_FLV_SENT, movedUrl, 2);
-			m_state = &protocol_shoutcastClient::state_SendText;
-			m_nextState = &protocol_shoutcastClient::state_Close;
-		}
-	}
-}
-
-void protocol_flvClient::state_SendIntro() throw(exception)
-{
-	state_SendIntroFile();
-	if (m_introFile.empty())
-	{
-		acquireIntroFile();
-		if (m_introFile.empty())
-		{
-			m_state = &protocol_shoutcastClient::state_Stream;
-		}
-		else
-		{
-			m_state = &protocol_shoutcastClient::state_SendIntroFile;
-		}
-	}
-}
-
-void protocol_flvClient::state_InitiateStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	resetReadPtr();
-
-	if (!m_streamData || m_introFile.empty())
-	{
-		// send intro file if we have it
-		acquireIntroFile();
-		m_state = (m_introFile.empty() ? &protocol_shoutcastClient::state_Stream : &protocol_shoutcastClient::state_SendIntroFile);
-	}
-	else
-	{
-		m_state = &protocol_shoutcastClient::state_SendIntro;
-	}
-
-	setW3CState();
-
-	m_result.run();
-}
-
-
-void protocol_flvClient::processFrame (int type, const unsigned char *buf, unsigned int len)
-{
-	bool is_mp3 = (type == MP3_DATA);
-	unsigned int read_samplerate = 0;
-	int read_bitrate = 0;
-	bool read_mono = true;
-	__uint8 asc_header[2] = {0};
-
-	if (len < 7)
-		return;
-	if (is_mp3)
-		getMP3FrameInfo ((char*)buf, &read_samplerate, &read_bitrate, &read_mono);
-	else
-		getADTSFrameInfo ((char*)buf, &read_samplerate, asc_header);
-
-	createFLVTag (m_output, (char*)&buf [is_mp3 ? 0 : 7], len - (is_mp3 ? 0 : 7),
-			m_timestamp, is_mp3, read_mono, read_samplerate, read_bitrate, asc_header, m_streamID);
-}
-
-
-
-void protocol_flvClient::return_403(void)
-{
-	protocol_shoutcastClient::return_403();
-	m_state = &protocol_shoutcastClient::state_SendText;
-	m_nextState = &protocol_shoutcastClient::state_Close;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_flvClient.h b/Src/Plugins/DSP/sc_serv3/protocol_flvClient.h
deleted file mode 100644
index 11105bf7..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_flvClient.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-#ifndef protocol_flvClient_H_
-#define protocol_flvClient_H_
-
-#include "protocol_shoutcastClient.h"
-#include <vector>
-
-class streamData;
-
-class protocol_flvClient: public protocol_shoutcastClient
-{
-private:
-
-	typedef void (protocol_flvClient::*state_t)();
-	state_t m_state;
-	state_t m_nextState;
-
-	int		m_timestamp;
-	int		m_fileOffset;
-
-	void state_AttachToStream() throw(std::exception);
-	void state_Close() throw(std::exception);
-	void state_SendText() throw(std::exception);
-	void state_InitiateStream() throw(std::exception);
-	void state_SendIntro() throw(std::exception);
-
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_flvClient"; }
-
-public:
-    protocol_flvClient (protocol_HTTPStyle &hs, const streamData::streamID_t streamID, const uniString::utf8 &hostName, const uniString::utf8 &addr, const uniString::utf8 &XFF) throw(std::exception);
-
-	protocol_flvClient(const socketOps::tSOCKET s, const streamData::streamID_t streamID,
-					   const uniString::utf8 &hostName, const uniString::utf8 &addr,
-					   const u_short port, const uniString::utf8 &userAgent,
-					   const uniString::utf8 &XFF, const uniString::utf8 &referer,
-					   const bool headRequest) throw(std::exception);
-	virtual ~protocol_flvClient() throw();
-
-	virtual void setCallback (protocol_shoutcastClient::state_t callback = NULL, protocol_shoutcastClient::state_t next = NULL);
-	void processFrame (int type, const unsigned char *buf, unsigned int len);
-
-	void return_403(void);
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_m4aClient.cpp b/Src/Plugins/DSP/sc_serv3/protocol_m4aClient.cpp
deleted file mode 100644
index 11dad38c..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_m4aClient.cpp
+++ /dev/null
@@ -1,674 +0,0 @@
-#if 0
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_m4aClient.h"
-#include "ripList.h"
-#include "stats.h"
-#include "streamData.h"
-#include "w3cLog.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(x) { if (gOptions.m4aClientDebug()) DLOG((x)); }
-#define AD_DEBUG_LOG(x) { if (gOptions.adMetricsDebug()) DLOG((x)); }
-
-protocol_m4aClient::protocol_m4aClient(const socketOps::tSOCKET s, const streamData::streamID_t streamID,
-									   const utf8 &hostName, const utf8 &addr, const u_short port,
-									   const utf8 &userAgent, const utf8 &XFF, const utf8 &referer,
-									   const bool headRequest) throw(exception)
-	: protocol_shoutcastClient(s, port, streamData::M4A, hostName,
-							   (streamID <= 0 || streamID > INT_MAX ? DEFAULT_CLIENT_STREAM_ID : streamID),
-							   stats::getNewClientId(), userAgent, referer, addr, XFF, headRequest),
-
-	  m_state(&protocol_m4aClient::state_AttachToStream), m_nextState(0)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-}
-
-protocol_m4aClient::~protocol_m4aClient() throw()
-{
-	cleanup("M4A", gOptions.m4aClientDebug());
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void protocol_m4aClient::timeSlice() throw(exception)
-{
-	int ret = doTimeSlice(result);
-	if (ret == 1)
-	{
-		m_state = &protocol_m4aClient::state_Stream;
-		return;
-	}
-	else if (ret == 2)
-	{
-		return;
-	}
-
-	(this->*m_state)();
-}
-
-void protocol_m4aClient::state_Close() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	m_result.done();
-}
-
-void protocol_m4aClient::state_SendText() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-
-	if (sendText())
-	{
-		m_metaIntervalCounter = 0;
-		m_state = m_nextState;
-	}
-}
-
-// find the appropriate stream and try to attach to it
-void protocol_m4aClient::state_AttachToStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	m_streamData = streamData::accessStream(m_streamID);
-	if (!m_streamData)
-	{
-		if (processReject("M4A", bandWidth::CLIENT_M4A_SENT, MSG_ICY_HTTP401,
-						  MSG_ICY_HTTP401_LEN, &read_bitrate, &dataType))
-		{
-			goto fall_through;
-		}
-
-		m_state = &protocol_m4aClient::state_SendText;
-		m_nextState = &protocol_m4aClient::state_Close;
-	}
-	else
-	{
-fall_through:
-		const utf8 movedUrl = gOptions.stream_movedUrl(m_streamID);
-		if (movedUrl.empty())
-		{
-			const int add = processAdd("FLV", bandWidth::CLIENT_M4A_SENT,
-									   MSG_ICY_HTTP401, MSG_ICY_HTTP401_LEN, movedUrl,
-									   (m_streamData ? m_streamData->streamBackupServer() : ""));
-			if (add != 1)
-			{
-				m_state = &protocol_m4aClient::state_SendText;
-				m_nextState = &protocol_m4aClient::state_Close;
-			}
-			else
-			{
-				const bool isPodcast = (!m_streamData && (gOptions.getBackupLoop(m_streamID) == 1));
-				m_OKResponse = MSG_ICY_HTTP200 + "Content-Type:audio/mp4\r\n";
-
-				if (!m_streamData)
-				{
-					utf8 path = getStreamPath(m_streamID);
-					if (!path.empty() && path.find(utf8("/")) == 0)
-					{
-						path = path.substr(1);
-					}
-
-					if (isPodcast)
-					{
-						m_OKResponse += "Content-Disposition:attachment;filename=\"" + path + "\"\r\n"
-										"Content-Length:" + tos(m_backupFile.size()) + "\r\n";
-					}
-				}
-
-				if (gOptions.clacks())
-				{
-					m_OKResponse += "X-Clacks-Overhead:GNU Terry Pratchett\r\n";
-				}
-				m_OKResponse += "\r\n";
-
-				DEBUG_LOG(m_clientLogString + "Sending [" + eol() + stripWhitespace(m_OKResponse) + eol() + "]");
-				m_outBuffer = m_OKResponse.c_str();
-				bandWidth::updateAmount(bandWidth::CLIENT_M4A_SENT, (m_outBufferSize = (int)m_OKResponse.size()));
-				m_state = &protocol_m4aClient::state_SendText;
-				if (!m_headRequest)
-				{
-					m_nextState = &protocol_m4aClient::state_InitiateStream;
-				}
-				else
-				{
-					m_removeClientFromStats = false;
-					m_ignoreDisconnect = true;
-					m_nextState = &protocol_m4aClient::state_Close;
-				}
-				m_result.write();
-				m_result.timeoutSID(m_streamID);
-				m_result.run();
-
-				// when the client is added, we get back the unique id of the connection
-				// but we now check for being > 0 as we need to filter out some of the
-				// YP connections from being counted as valid clients for stats, etc
-				reportNewListener("M4A");
-			}
-		}
-		else
-		{
-			// if we get to here then we attempt to redirect the clients to the moved url
-			// which is useful if the stream has moved hosting or it has been deprecated.
-			streamMovedOrRejected("M4A", bandWidth::CLIENT_M4A_SENT, movedUrl, 2);
-			m_state = &protocol_m4aClient::state_SendText;
-			m_nextState = &protocol_m4aClient::state_Close;
-		}
-	}
-}
-
-void protocol_m4aClient::state_SendIntro() throw(exception)
-{
-	state_SendIntroFile();
-	if (m_introFile.empty())
-	{
-		acquireIntroFile();
-		if (m_introFile.empty())
-		{
-			m_state = &protocol_m4aClient::state_Stream;
-		}
-		else
-		{
-			m_state = &protocol_m4aClient::state_SendIntroFile;
-		}
-	}
-}
-
-void protocol_m4aClient::state_InitiateStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	resetReadPtr();
-
-	if (!m_streamData || (m_streamData && m_introFile.empty()))
-	{
-		// send intro file if we have it
-		acquireIntroFile();
-		m_state = (m_introFile.empty() ? &protocol_m4aClient::state_Stream : &protocol_m4aClient::state_SendIntroFile);
-	}
-	else
-	{
-		m_state = &protocol_m4aClient::state_SendIntro;
-	}
-
-	setW3CState();
-
-	m_result.run();
-}
-
-// handle state where we are sending intro files
-void protocol_m4aClient::state_SendIntroFile() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	resetCommon();
-
-	time_t cur_time;
-	const bool debug = gOptions.m4aClientDebug();
-	const int autoDumpTime = detectAutoDumpTimeout(cur_time, m_lastActivityTime, (m_clientLogString +
-												   "Timeout waiting to send data"),
-												   (!m_ignoreDisconnect && debug), m_streamID);
-
-	if (m_shortSend.empty() && (m_frameCount > calculateFrameLimit(cur_time)))
-	{
-		if (calculateDelay((autoDumpTime - (int)(cur_time - m_lastActivityTime))))
-		{
-			// if we're at the limit then we're going to need to sit and spin
-			// which will need to be a bit short of the required frame rate
-			// so that we've got a bit of leeway on scheduling delays, etc
-			return;
-		}
-	}
-
-	int amt = (int)(m_introFile.size() - m_introFileOffset);
-	if (amt == 0)
-	{
-		// we're done with the intro file
-		m_introFile.clear();
-		m_introFile.resize(0);
-		m_introFileOffset = 0;
-		m_lastActivityTime = ::time(NULL);
-		m_state = &protocol_m4aClient::state_Stream;
-		resetReadPtr();
-		m_result.run();
-	}
-	else if (amt > 0)
-	{
-		const bool debug = gOptions.m4aClientDebug();
-		checkListenerIsValid(debug);
-
-		if (!m_lastSentMetadata.empty())
-		{
-			logW3C();
-			m_lastSentMetadata.clear();
-		}
-
-		amt = min(amt, SEND_SIZE);
-
-		int len = (int)amt,
-			frames = 0;	// this will be uvox frames as we pre-process earlier to ensure
-						// that the audio frames are frame-synced when this is created
-		bool advert = false;
-		doM4AFrameSync(m_streamData->streamUvoxDataType(), debug, m_introFileOffset,
-					   (const char*)&m_introFile[0], cur_time, m_streamData->streamBitrate(),
-					   m_streamData->streamSampleRate(), len, frames, advert);
-
-		int rval = doSend(debug, cur_time, autoDumpTime);
-		if (rval > 0)
-		{
-			bandWidth::updateAmount(bandWidth::CLIENT_M4A_SENT, rval);
-			m_bytesSentForCurrentTitle += rval;
-			m_totalBytesSent += rval;
-			m_lastActivityTime = ::time(NULL);
-			m_metaIntervalCounter += rval;
-			// we adjust by the pre-M4A size
-			m_introFileOffset += len;
-		}
-
-		updateFrameCount(frames, cur_time);
-
-		handleShortSend(autoDumpTime, cur_time, rval);
-	}
-}
-
-// handle state where we are sending backup files
-void protocol_m4aClient::state_SendBackupFile() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	resetCommon();
-
-	int amt = (int)(m_backupFile.size() - m_backupFileOffset);
-
-	if (streamData::isSourceConnected(m_streamID))
-	{
-		if (m_streamData)
-		{
-			m_streamData->releaseStream();
-		}
-		m_streamData = streamData::accessStream(m_streamID);
-
-		// we're done with the backup file
-		m_backupFile.clear();
-		m_backupFile.resize(0);
-		m_backupFileOffset = 0;
-		m_backupLoopTries = 0;
-		m_lastActivityTime = ::time(NULL);
-		m_state = &protocol_m4aClient::state_Stream;
-		resetReadPtr();
-		m_result.run();
-	}
-	else if (amt == 0)
-	{
-		const int backuploop = gOptions.getBackupLoop(m_streamID);
-		if (!backuploop || (m_backupLoopTries <= backuploop))
-		{
-			// we're done with the backup file. get more data
-			acquireBackupFile();
-			if (!m_backupFile.empty())
-			{
-				++m_backupLoopTries;
-				resetReadPtr();
-				m_lastActivityTime = ::time(NULL);
-				m_state = &protocol_m4aClient::state_Stream;
-			}
-		}
-		else if (backuploop && (m_backupLoopTries < backuploop))
-		{
-			m_backupFileOffset = 0;
-			m_backupFile.clear();
-		}
-		else
-		{
-			resetReadPtr();
-			m_backupFileOffset = 0;
-			m_lastActivityTime = ::time(NULL);
-			m_state = &protocol_m4aClient::state_Stream;
-		}
-
-		m_result.run();
-	}
-	else if (amt > 0)
-	{
-		const bool debug = gOptions.m4aClientDebug();
-		checkListenerIsValid(debug);
-
-		time_t cur_time;
-		const int autoDumpTime = detectAutoDumpTimeout(cur_time, m_lastActivityTime, (m_clientLogString +
-													   "Timeout waiting to send data"),
-													   (!m_ignoreDisconnect && debug), m_streamID);
-
-		if (m_shortSend.empty() && (m_frameCount > calculateFrameLimit(cur_time)))
-		{
-			if (calculateDelay((autoDumpTime - (int)(cur_time - m_lastActivityTime))))
-			{
-				// if we're at the limit then we're going to need to sit and spin
-				// which will need to be a bit short of the required frame rate
-				// so that we've got a bit of leeway on scheduling delays, etc
-				return;
-			}
-		}
-
-		if (!m_lastSentMetadata.empty())
-		{
-			logW3C();
-			m_lastSentMetadata.clear();
-		}
-
-		amt = min(amt, SEND_SIZE);
-
-		int len = (int)amt, backup_type = MP3_DATA,
-			frames = 0;	// this will be uvox frames as we pre-process earlier to ensure
-						// that the audio frames are frame-synced when this is created
-		if (!m_streamData)
-		{
-			utf8 backupFile = gOptions.stream_backupFile(m_streamID);
-			if (!gOptions.read_stream_backupFile(m_streamID))
-			{
-				backupFile = gOptions.backupFile();
-			}
-			if (!backupFile.empty())
-			{
-				backup_type = ((backupFile.rfind((utf8)".aac") == utf8::npos) ? MP3_DATA : AACP_DATA);
-			}
-		}
-
-		bool advert = false;
-		doM4AFrameSync((m_streamData ? m_streamData->streamUvoxDataType() : backup_type),
-					   debug, m_backupFileOffset, (const char*)&m_backupFile[0], cur_time,
-					   (m_streamData ? m_streamData->streamBitrate() : 0),
-					   (m_streamData ? m_streamData->streamSampleRate() : 0), len, frames, advert);
-
-		int rval = doSend(debug, cur_time, autoDumpTime);
-		if (rval > 0)
-		{
-			bandWidth::updateAmount(bandWidth::CLIENT_M4A_SENT, rval);
-			m_bytesSentForCurrentTitle += rval;
-			m_totalBytesSent += rval;
-			m_lastActivityTime = ::time(NULL);
-			m_metaIntervalCounter += rval;
-			// we adjust by the pre-M4A size
-			m_backupFileOffset += len;
-		}
-
-		updateFrameCount(frames, cur_time);
-
-		handleShortSend(autoDumpTime, cur_time, rval);
-	}
-}
-
-// handle state where we are sending advert content
-void protocol_m4aClient::state_SendAdverts() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-
-	resetCommon();
-
-	streamData::specialFileData *ad = m_adAccess.getAd(m_streamID, m_streamData->advertGroups, !!m_streamData->m_adTest);
-	int amt = (ad ? (int)(ad->m_sc1Buffer.size() - m_adAccess.offset) : 0);
-
-	while (true)
-	{
-		// DLOG ("amount remaining to be sent " + tos(amt));
-		if (amt > 0)
-		{
-			break;
-		}
-		if (m_adAccess.anotherAd(m_streamID, m_streamData->advertGroups, !!m_streamData->m_adTest))
-		{
-			ad = m_adAccess.getAd(m_streamID, m_streamData->advertGroups, !!m_streamData->m_adTest);
-			amt = (ad ? (int)(ad->m_sc1Buffer.size() - m_adAccess.offset) : 0);
-			continue;
-		}
-		// no more adverts
-		m_lastActivityTime = ::time(NULL);
-		m_state = &protocol_m4aClient::state_Stream;
-		m_adAccess.stopAdRun(m_streamID, m_streamData->advertGroups, !!m_streamData->m_adTest);
-		// go to the latest point in the ring buffer.
-		resetReadPtr();
-		m_result.run();
-		m_result.timeoutSID(m_streamID);
-
-		ILOG(m_clientLogString + "Transitioning back to stream [Agent: `" +
-			 m_userAgent + "', UID: " + tos(m_unique) + ", GRID: " + tos(m_group) + "]");
-		return;
-	}
-
-	try
-	{
-		const bool debug = gOptions.m4aClientDebug();
-		checkListenerIsValid(debug);
-
-		time_t cur_time;
-		const int autoDumpTime = detectAutoDumpTimeout(cur_time, m_lastActivityTime, (m_clientLogString +
-													   "Timeout waiting to send data"),
-													   (!m_ignoreDisconnect && debug), m_streamID);
-
-		if (m_shortSend.empty() && (m_frameCount > calculateFrameLimit(cur_time)))
-		{
-			if (calculateDelay((autoDumpTime - (int)(cur_time - m_lastActivityTime))))
-			{
-				// if we're at the limit then we're going to need to sit and spin
-				// which will need to be a bit short of the required frame rate
-				// so that we've got a bit of leeway on scheduling delays, etc
-				return;
-			}
-		}
-
-		if (!m_lastSentMetadata.empty())
-		{
-			logW3C();
-			m_lastSentMetadata.clear();
-		}
-
-		amt = min(amt, SEND_SIZE);
-
-		int len = (int)amt,
-			frames = 0;	// this will be uvox frames as we pre-process earlier to ensure
-						// that the audio frames are frame-synced when this is created
-		bool advert = false;
-		doM4AFrameSync(m_streamData->streamUvoxDataType(), (int)m_adAccess.offset,
-					   debug, (const char*)&ad->m_sc1Buffer[0], cur_time,
-					   m_streamData->streamBitrate(), m_streamData->streamSampleRate(),
-					   len, frames, advert);
-
-		int rval = doSend(debug, cur_time, autoDumpTime);
-		if (rval > 0)
-		{
-			bandWidth::updateAmount(bandWidth::CLIENT_M4A_SENT, rval);
-			m_bytesSentForCurrentTitle += rval;
-			m_totalBytesSent += rval;
-			m_lastActivityTime = ::time(NULL);
-			m_metaIntervalCounter += rval;
-			// we adjust by the pre-M4A size
-			m_adAccess.offset += len;
-
-			m_nextState = &protocol_m4aClient::state_SendText;
-		}
-
-		updateFrameCount(frames, cur_time);
-
-		handleShortSend(autoDumpTime, cur_time, rval);
-	}
-	catch (std::runtime_error)
-	{
-		m_adAccess.stopAdRun(m_streamID, m_streamData->advertGroups, !!m_streamData->m_adTest);
-		throw;
-	}
-}
-
-void protocol_m4aClient::state_Stream() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-
-	resetCommon();
-
-	const time_t cur_time = ::time(NULL);
-	const bool debug = gOptions.m4aClientDebug();
-	const int autoDumpTime = gOptions.getAutoDumpTime(m_streamID); // don't want this value to change during this call
-	if ((autoDumpTime > 0) && ((cur_time - m_lastActivityTime) >= autoDumpTime))
-	{
-		throwEx<runtime_error>((!m_ignoreDisconnect && debug ?
-								(m_clientLogString + "Timeout waiting to send data (" +
-								 tos(cur_time) + " " + tos(m_lastActivityTime) + " [" +
-								 tos(cur_time - m_lastActivityTime) + "] )") : (utf8)""));
-	}
-
-	if (m_shortSend.empty() && (m_frameCount > calculateFrameLimit(cur_time)))
-	{
-		if (calculateDelay((autoDumpTime - (int)(cur_time - m_lastActivityTime))))
-		{
-			// if we're at the limit then we're going to need to sit and spin
-			// which will need to be a bit short of the required frame rate
-			// so that we've got a bit of leeway on scheduling delays, etc
-			return;
-		}
-	}
-
-	const streamData::ringBuffer_t rb = (m_streamData ? m_streamData->getSc1RingBuffer() : streamData::ringBuffer_t());
-	streamData::ringBufferAccess_t amt = (m_streamData ? (rb.m_writePtr - m_readPtr) : 0);
-	if ((amt > 0) && (amt > rb.m_data.size()))
-	{
-		// the pointers are too far apart. Underrun
-		resetReadPtr(&amt);
-	}
-
-	std::vector<__uint8>& rem = getRemainder();
-	const streamData::ringBufferAccess_t offset = (m_readPtr & rb.m_ptrMask);
-	// clamp again so we don't read pass the end of the buffer
-	//
-	// if we've got more in remainder than what we're wanting
-	// to send then we'll prioritise the remainder data first
-	// before trying to acquire more new data to try to send.
-	amt = min(amt, min((rb.m_data.size() - offset), (streamData::ringBufferAccess_t)max(0, (SEND_SIZE - rem.size()))));
-
-	bool advert = false;
-	int remainder = 0, len = (int)amt,
-		frames = 0;	// this will be uvox frames as we pre-process earlier to ensure
-					// that the audio frames are frame-synced when this is created
-	if ((len > 0) || !rem.empty() || !m_shortSend.empty())
-	{
-		const std::vector<__uint8>::const_iterator pos = rb.m_data.begin();
-		std::vector<__uint8>& tempBuf;
-		// if we had anything left over then now we
-		// need to copy it back into the buffer and
-		// adjust the max data amount to be read in
-		if (!rem.empty() && ((len + rem.size()) <= (BUF_SIZE * 4)))
-		{
-			tempBuf.insert(tempBuf.end(), rem.begin(), rem.end());
-			tempBuf.insert(tempBuf.end(), pos + offset, pos + (offset + len));
-			len += m_remainderSize;
-		}
-		else if (len > 0)
-		{
-			tempBuf.insert(tempBuf.end(), pos + offset, pos + (offset + len));
-		}
-		rem.clear();
-
-		remainder = doM4AFrameSync((m_streamData ? m_streamData->streamUvoxDataType() : MP3_DATA),
-								   debug, 0, cur_time, (m_streamData ? m_streamData->streamBitrate() : 0),
-								   (m_streamData ? m_streamData->streamSampleRate() : 0),
-								   len, frames, advert, true);
-	}
-
-	// if no data then we need to just go to adverts
-	// otherwise we need to see what we've got and
-	// if we can, then transition to adverts or spin
-	// and wait for the current data to be sent and
-	// then we should be able to re-process into ads
-	if (m_output.empty())
-	{
-		// this will close the stream or go to backups as needed
-		if (handleNoData("M4A", remainder, amt, autoDumpTime, cur_time))
-		{
-			m_state = &protocol_m4aClient::state_SendBackupFile;
-		}
-		else
-		{
-			if (processAdvertTrigger(advert))
-			{
-				m_state = &protocol_m4aClient::state_SendAdverts;
-				return;
-			}
-
-			// at this point, we're in a bit of a weird state
-			// as we've not been able to generate / retrieve
-			// anything and if we don't slwo down things then
-			// we need to delay things to allow it to catchup
-			if (m_frameCount > calculateFrameLimit(cur_time))
-			{
-				// determine things based on the 'next' second when working out
-				// the differential as that's how long we want to wait to run
-				m_result.schedule((int)((__uint64)((cur_time + 1) * 1000) - m_result.m_currentTime));
-			}
-			else
-			{
-				// just go with an arbitrary value as we cannot
-				// be certain when we're going to get data next
-				// and we don't know the impact on playback etc
-				m_result.schedule(100);
-			}
-
-			m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-			m_result.write();
-		}
-	}
-	else
-	{
-		processTitleW3C();
-
-		int rval = doSend(debug, cur_time, autoDumpTime);
-		if (rval > 0)
-		{
-			bandWidth::updateAmount(bandWidth::CLIENT_M4A_SENT, rval);
-			m_bytesSentForCurrentTitle += rval;
-			m_totalBytesSent += rval;
-			m_lastActivityTime = ::time(NULL);
-			m_metaIntervalCounter += rval;
-
-			if (processAdvertTrigger(advert))
-			{
-				m_state = &protocol_m4aClient::state_SendAdverts;
-				remainder = 0;
-			}
-		}
-
-		// as we're keeping a copy of the remainder / non-sent data
-		// we need to move the readptr on so that it doesn't cause
-		// the stream to effectively stick on the same point and in
-		// turn then lead to resetReadPtr() being called (skipping)
-		m_readPtr += amt;
-		updateFrameCount(frames, cur_time);
-
-		handleShortSend(autoDumpTime, cur_time, rval);
-
-		// we only keep the remainder if
-		// there's no advert to provide
-		m_remainderSize = remainder;
-	}
-}
-
-void protocol_m4aClient::return_403(void)
-{
-	protocol_shoutcastClient::return_403();
-	m_state = &protocol_m4aClient::state_SendText;
-	m_nextState = &protocol_m4aClient::state_Close;
-}
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_m4aClient.h b/Src/Plugins/DSP/sc_serv3/protocol_m4aClient.h
deleted file mode 100644
index 8455754f..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_m4aClient.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-#if 0
-#ifndef protocol_m4aClient_H_
-#define protocol_m4aClient_H_
-
-#include "protocol_shoutcastClient.h"
-#include <vector>
-
-class streamData;
-
-class protocol_m4aClient: public protocol_shoutcastClient
-{
-private:
-	typedef void (protocol_m4aClient::*state_t)();
-	state_t m_state;
-	state_t m_nextState;
-
-	void state_AttachToStream() throw(std::exception);
-	void state_Close() throw(std::exception);
-	void state_SendText() throw(std::exception);
-	void state_InitiateStream() throw(std::exception);
-	void state_Stream() throw(std::exception);
-	void state_SendIntroFile() throw(std::exception);
-	void state_SendIntro() throw(std::exception);
-	void state_SendBackupFile() throw(std::exception);
-	void state_SendAdverts() throw(std::exception);
-
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_m4aClient"; }
-
-public:
-	protocol_m4aClient(const socketOps::tSOCKET s, const streamData::streamID_t streamID,
-					   const uniString::utf8 &hostName, const uniString::utf8 &addr,
-					   const u_short port, const uniString::utf8 &userAgent,
-					   const uniString::utf8 &XFF, const uniString::utf8 &referer) throw(std::exception);
-	virtual ~protocol_m4aClient() throw();
-
-	void return_403(void);
-};
-
-#endif
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_relay.cpp b/Src/Plugins/DSP/sc_serv3/protocol_relay.cpp
deleted file mode 100644
index 6db504ec..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_relay.cpp
+++ /dev/null
@@ -1,544 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <assert.h>
-#include "protocol_relay.h"
-#include "protocol_backup.h"
-#include "protocol_relay_shoutcast.h"
-#include "protocol_relay_uvox.h"
-#include "bandwidth.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-// g_streamSourceRelayIsActive
-// This is a map of sid to int, where the int is a bitmap of flags, the bits being
-// 0 - registered, some runnable is working with this.
-// 1 - shutdown of relay requested.
-// 2 - primary relay in use
-// 3 - backup runnable started
-
-#define LOGNAME             "RELAY"
-#define DEBUG_LOG(...)      do { if (gOptions.relayDebug()) DLOG(__VA_ARGS__); } while (0)
-
-protocol_relay::protocol_relay(const config::streamConfig &info, const bool retry) throw()
-	: m_redirectCount(0), m_outBuffer(0), m_outBufferSize(0), m_relayWaitingToReconnect(false),
-	  m_relaySentConnectWait(false), m_retryRelay(retry), m_skip(false),
-      m_backupStarted(false), m_registered(false), m_relayInfo(info),
-	  m_originalRelayInfo(info), m_retryCount(0), m_relayReconnectStartTime(::time(NULL)),
-	  m_state(&protocol_relay::state_Initial), m_nextState(0)
-{
-	streamData::setRelayActive (info.m_streamID, -1);       // make sure entry exists
-
-	m_srcPort = m_relayInfo.m_relayUrl.port();
-	m_srcAddrName = m_relayInfo.m_relayUrl.server();
-	m_srcURLpart = m_relayInfo.m_relayUrl.path();
-	m_srcLogString = "[RELAY " + m_srcAddrName + ":" + tos(m_srcPort) +
-					 (m_srcURLpart == "/" ? "" : m_srcURLpart) +
-					 " sid=" + tos(m_relayInfo.m_streamID) + "] ";
-
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-}
-
-protocol_relay::~protocol_relay() throw()
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	socketOps::forgetTCPSocket(m_socket);
-    if (m_registered)
-    {
-        bool noEntry = false;
-        streamData::setRelayActiveFlags (m_originalRelayInfo.m_streamID, noEntry, 0, 7);
-    }
-}
-
-void protocol_relay::timeSlice() throw(exception)
-{
-	if (iskilled())
-	{
-		m_result.done();
-		return;
-	}
-
-    // normal running
-    try
-    {
-        if (m_registered && m_relayWaitingToReconnect && (::time(NULL) < m_relayReconnectStartTime))
-        {
-            // an error occured in the past and we are waiting for the appropriate time interval before we do anything
-            bool noEntry = false;
-            int status = streamData::isRelayActive(m_originalRelayInfo.m_streamID, noEntry);
-            if ((status & 2) == 0) // if no shutdown req
-            {
-                m_result.schedule(400);
-                return;
-            }
-            DEBUG_LOG (m_srcLogString + "relay shutdown req", LOGNAME, m_originalRelayInfo.m_streamID);
-            throwEx<runtime_error>("");
-        }
-        (this->*m_state)();
-    }
-    catch(const exception &ex)
-    {
-        // close socket and move into waiting state for reconnect
-        socketOps::forgetTCPSocket(m_socket);
-
-        // but first see if we've hit the retry limit (which can be set as zero to keep on going)
-        ++m_retryCount;
-        int retryLimit = gOptions.relayConnectRetries();
-        bool noEntry = false;
-
-        DEBUG_LOG(m_srcLogString + __FUNCTION__ + utf8(" m_retryCount:") + tos(m_retryCount) + " retryLimit:" + tos(retryLimit), LOGNAME, m_originalRelayInfo.m_streamID);
-        int status = streamData::setRelayActiveFlags (m_originalRelayInfo.m_streamID, noEntry, 0, 4);
-
-#if defined(_DEBUG) || defined(DEBUG)
-        bool relayActive = status & 4 ? true : false;
-
-        DLOG(m_srcLogString + __FUNCTION__ + " a: " + tos(retryLimit) +
-                " " + tos(m_retryCount) + " "+tos(relayActive) + " " +
-                tos(m_retryCount < retryLimit && retryLimit > 0) + " " +
-                tos(((m_retryCount < retryLimit && retryLimit > 0)) && relayActive),LOGNAME, m_originalRelayInfo.m_streamID);
-#endif
-
-        if (noEntry == false && (status & 2) == 0) // is relay still configured
-        {
-            if ((status & 8) == 0)
-                startBackupConnection ("");  // kick backup off if present, in case of repeated failure
-
-            utf8 msg = ex.what();
-            if (!msg.empty())
-            {
-                ELOG (ex.what(), LOGNAME, m_originalRelayInfo.m_streamID);
-            }
-
-            if (retryLimit == 0 || (m_retryCount < retryLimit && retryLimit > 0))
-            {
-
-                m_relayWaitingToReconnect = true;
-                m_state = &protocol_relay::state_Initial;
-                m_relayInfo = m_originalRelayInfo;
-                m_relayReconnectStartTime = ::time(NULL) + gOptions.relayReconnectTime();
-                m_result.schedule (550);
-                DLOG (m_srcLogString + "reconnect time " + tos ((long)m_relayReconnectStartTime), LOGNAME, m_originalRelayInfo.m_streamID);
-                return;
-            }
-        }
-        else
-        {
-            utf8 ss = m_srcLogString + "Abort trying to ";
-            if (m_retryCount > 0)
-                ss += "re";
-            ss += "connect to the source relay";
-            ILOG (ss, LOGNAME, m_originalRelayInfo.m_streamID);
-        }
-        m_result.done();
-    }
-}
-
-// parse out relayInfo object
-void protocol_relay::state_Initial() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	// if we have a moved stream then now we have the stream id
-	// then we need to check and block the source as applicable
-	utf8 movedUrl = gOptions.stream_movedUrl(m_relayInfo.m_streamID);
-	if (!movedUrl.empty())
-	{
-        ELOG (m_srcLogString + "Relay connection aborted. Stream is configured as having moved.", LOGNAME, m_originalRelayInfo.m_streamID);
-		m_result.done();
-		return;
-	}
-
-    bool noEntry = false;
-    if (m_registered == false)
-    {
-        int state = streamData::setRelayActiveFlags (m_originalRelayInfo.m_streamID, noEntry, 1);
-        if (state < 0)
-        {
-            ILOG (m_srcLogString + "waiting on other relay termination", LOGNAME, m_originalRelayInfo.m_streamID);
-            streamData::setRelayActiveFlags (m_originalRelayInfo.m_streamID, noEntry, 2);  // request shutdown of other relay
-            m_result.schedule (100);
-            return;
-        }
-        m_registered = true;
-    }
-    int state = streamData::setRelayActiveFlags (m_originalRelayInfo.m_streamID, noEntry, 4);
-
-    if (noEntry || (state & 2) == 2)
-    {
-        ILOG (m_srcLogString + "relay shutting down", LOGNAME, m_originalRelayInfo.m_streamID);
-        m_result.done();
-        return;
-    }
-
-	// if m_retryCount is over 1 then pull the stream relay url from
-	// the config details as we could be in a re-try or having done
-	// a config reload and the stream relay url has then sinc changed
-	// - this primarily aids a config change for a pending relay join
-	if (m_retryCount > 0)
-	{
-		m_relayInfo.m_relayUrl = gOptions.stream_relayURL(m_originalRelayInfo.m_streamID);
-	}
-    m_relayWaitingToReconnect = false;
-	m_srcAddrName = m_relayInfo.m_relayUrl.server();
-	m_srcPort = m_relayInfo.m_relayUrl.port();
-	m_srcURLpart = m_relayInfo.m_relayUrl.path();
-
-	m_srcLogString = "[RELAY " + m_srcAddrName + ":" + tos(m_srcPort) +
-					 (m_srcURLpart == "/" ? "" : m_srcURLpart) +
-					 " sid=" + tos(m_relayInfo.m_streamID) + "] ";
-
-	m_state = &protocol_relay::state_ResolveServer;
-	m_result.run();
-}
-
-
-// resolve server name to numeric address	
-void protocol_relay::state_ResolveServer() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	assert(m_socket == socketOps::cINVALID_SOCKET);
-	m_socket = socketOps::createTCPSocketTHROW();
-	socketOps::setNonblock(m_socket, true);
-	m_srcAddrNumeric = socketOps::hostNameToAddress(m_srcAddrName.hideAsString(), m_srcPort);
-	if (m_srcAddrNumeric.empty())
-	{
-        ELOG (m_srcLogString + "Could not resolve host address", LOGNAME, m_originalRelayInfo.m_streamID);
-        throwEx<runtime_error>("");
-	}
-
-	m_state = &protocol_relay::state_Connect;
-	m_result.run();
-}
-
-// TCP connect	
-void protocol_relay::state_Connect() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	assert(m_socket != socketOps::cINVALID_SOCKET);
-
-	if (!m_skip)
-    {
-        utf8 ss = m_srcLogString;
-        if (m_retryCount > 0)
-        {
-            ss += "Trying to restore connection to source relay [attempt #";
-            ss += tos(m_retryCount+1) + "]";
-        }
-        else
-            ss += "Connecting to source relay";
-        ILOG (ss, LOGNAME, m_originalRelayInfo.m_streamID);
-    }
-
-	m_skip = false;
-	socketOps::connectTHROW (m_socket, m_srcAddrNumeric, m_srcPort);
-
-	m_lastActivityTime = ::time(NULL);
-	m_state = &protocol_relay::state_ConnectWait;
-	m_result.run();
-}
-
-// wait for connect to complete
-void protocol_relay::state_ConnectWait() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	assert(m_socket != socketOps::cINVALID_SOCKET);
-
-	time_t cur_time;
-	const int autoDumpSourceTime = detectAutoDumpTimeout (cur_time, m_originalRelayInfo.m_streamID, (m_srcLogString + "Timeout trying to connect"));
-
-    bool noEntry = false, relayActive = ((streamData::isRelayActive(m_originalRelayInfo.m_streamID, noEntry) & 6) == 4);
-    if (!relayActive && !noEntry)
-    {
-        throwEx<runtime_error>("");
-    }
-
-	string error;
-	socketOps::nonBlockConnect_t connectResult = socketOps::nonBlockingConnectWait(m_socket, error);
-	switch (connectResult)
-	{
-		case socketOps::NBC_ERROR:
-		{
-            ELOG (m_srcLogString + error, LOGNAME, m_originalRelayInfo.m_streamID);
-            throwEx<runtime_error>("");
-			break;
-		}
-		case socketOps::NBC_INPROGRESS:
-		{
-            // try again but wait a bit
-            m_result.schedule(100);
-            m_result.timeout((autoDumpSourceTime - (int)(cur_time - m_lastActivityTime)));
-            break;
-        }
-        case socketOps::NBC_CONNECTED:
-		{
-			m_lastActivityTime = ::time(NULL);
-			m_state = &protocol_relay::state_SendGreeting;
-			m_result.run();
-			break;
-		}
-		default:
-		{
-            ELOG (m_srcLogString + "Unknown non-blocking connect state.", LOGNAME, m_originalRelayInfo.m_streamID);
-            throwEx<runtime_error>("");
-		}
-	}
-}
-
-void protocol_relay::state_SendGreeting() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	m_HTTPHeaders.clear();
-	m_HTTPGreetingResponse.clear();
-
-	string cdn;
-	if (isCDNSlave(m_relayInfo.m_streamID))
-	{
-		cdn = "cdn-slave:1\r\n";
-	}
-
-	m_lineBuffer = "GET " + m_srcURLpart + " " + "HTTP/1.1\r\n" +
-				   "Host:" + stripHTTPprefix(m_srcAddrName) + ":" + tos(m_srcPort) + "\r\n" +
-				   "User-Agent:" + g_userAgent + " Relay\r\n" +
-				   "Ultravox transport type:TCP\r\n" +
-				   "Accept:*/*\r\n" +
-				   "icy-metadata:1\r\n" +
-				   cdn +
-				   "icy-host:" + metrics::metrics_verifyDestIP(gOptions) + "\r\n\r\n";
-
-	DEBUG_LOG(m_srcLogString + "Sending request [" + eol() + stripWhitespace(m_lineBuffer) + eol() + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-	m_outBuffer = &(m_lineBuffer[0]);
-	bandWidth::updateAmount(bandWidth::RELAY_MISC_RECV, (m_outBufferSize = (int)m_lineBuffer.size()));
-
-	m_lastActivityTime = ::time(NULL);
-	m_state = &protocol_relay::state_Send;
-	m_nextState = &protocol_relay::state_GetGreetingResponse;
-
-	m_result.write();
-	m_result.timeoutSID(m_originalRelayInfo.m_streamID);
-}
-
-// send whatever is in outBuffer
-void protocol_relay::state_Send() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	if (sendDataBuffer(m_relayInfo.m_streamID, m_outBuffer, m_outBufferSize, m_srcLogString))
-	{
-		m_state = m_nextState;
-		m_lineBuffer.clear();
-	}
-}
-
-void protocol_relay::state_GetLine() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	if (getHTTPStyleHeaderLine(m_relayInfo.m_streamID, m_lineBuffer, m_srcLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_relay::state_GetGreetingResponse() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	m_state = &protocol_relay::state_GetLine;
-	m_nextState = &protocol_relay::state_AnalyzeGreetingResponse;
-
-	m_lastActivityTime = ::time(NULL);
-	m_result.read();
-	m_result.timeoutSID(m_originalRelayInfo.m_streamID);
-}
-
-// analyze header lines in greeting response	
-void protocol_relay::state_AnalyzeGreetingResponse() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	m_lastActivityTime = ::time(NULL);
-
-	if ((int)m_HTTPHeaders.size() >= gOptions.maxHeaderLineCount())
-	{
-		throwEx<runtime_error>(m_srcLogString + "Max HTTP header lines exceeded");
-	}
-
-	m_lineBuffer = stripWhitespace(m_lineBuffer);
-	if (m_lineBuffer.empty())
-	{
-		m_state = &protocol_relay::state_DetermineProtocol;
-		m_result.run();
-	}
-	else
-	{
-		if (m_HTTPGreetingResponse.empty())
-		{
-			m_HTTPGreetingResponse = m_lineBuffer;
-		}
-		else
-		{
-			// find the colon that divides header lines into key/value fields
-			utf8::size_type pos = m_lineBuffer.find(utf8(":"));
-			if (pos == utf8::npos)
-			{
-				throwEx<runtime_error>(m_srcLogString + "Connection rejected. Bad HTTP header string [" + m_lineBuffer + "]");
-			}
-
-			utf8 key = toLower(stripWhitespace(m_lineBuffer.substr(0, pos)));
-			utf8 value = stripWhitespace(m_lineBuffer.substr(pos + 1));
-			// allow empty values. (for urls and what-not)
-			if (key.empty())
-			{
-				throwEx<runtime_error>(m_srcLogString + "Connection rejected. Bad HTTP header string [" + m_lineBuffer + "]");
-			}
-			m_HTTPHeaders[key] = value;
-		}
-
-		m_state = &protocol_relay::state_GetLine;
-		m_nextState = &protocol_relay::state_AnalyzeGreetingResponse;
-		m_result.read();
-		m_result.timeoutSID(m_originalRelayInfo.m_streamID);
-		m_lineBuffer.clear();
-	}
-}
-
-void protocol_relay::state_DetermineProtocol() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	if (m_HTTPGreetingResponse.empty())
-	{
-		throwEx<runtime_error>(m_srcLogString + "Empty greeting response");
-	}
-
-	// parse into three fields
-	utf8 s = m_HTTPGreetingResponse;
-
-	utf8::size_type pos = (!s.empty() ? s.find(utf8(" ")) : utf8::npos);
-	if (pos == utf8::npos)
-	{
-		ELOG (m_srcLogString + "Badly formed response line [" + m_HTTPGreetingResponse + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-		throwEx<runtime_error>("");
-	}
-
-	s = stripWhitespace(s.substr(pos));
-	pos = (!s.empty() ? s.find(utf8(" ")) : utf8::npos);
-	if (pos == utf8::npos)
-	{
-        ELOG (m_srcLogString + "Badly formed response line [" + m_HTTPGreetingResponse + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-        throwEx<runtime_error>("");
-	}
-
-	int resultCode = utf8(s.substr(0, pos)).toInt();
-	if (resultCode == 200)
-	{
-		utf8 diag;
-		for (httpHeaderMap_t::const_iterator i = m_HTTPHeaders.begin(); i != m_HTTPHeaders.end(); ++i)
-		{
-			diag += (*i).first + ": " + (*i).second + eol();
-		}
-		DEBUG_LOG(m_srcLogString + "Received headers [" + eol() + stripWhitespace(diag) + eol() + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-
-		const socketOps::tSOCKET s = m_socket;
-
-		m_result.done();
-
-		// changed order of this in build 19 so that all uvox2 is reported as misc/ultravox
-		// and we then base things off the user-agent containing 'Ultravox/2.1'
-		// we look at content-type to determine the protocol
-		if ((m_HTTPHeaders["content-type"] == "misc/ultravox") &&
-			(m_HTTPHeaders["server"].find(utf8("Ultravox/2.1")) != utf8::npos))
-		{
-			// uvox 2.1
-			threadedRunner::scheduleRunnable(new protocol_relay_uvox(s, m_originalRelayInfo, m_srcAddrName, m_srcAddrNumeric,
-																	 m_srcPort, (m_srcURLpart == "/" ? "" : m_srcURLpart), m_HTTPHeaders));
-		}
-		else
-		{
-			// shoutcast
-			threadedRunner::scheduleRunnable(new protocol_relay_shoutcast(s, m_originalRelayInfo, m_srcAddrName, m_srcAddrNumeric,
-																		  m_srcPort, (m_srcURLpart == "/" ? "" : m_srcURLpart), m_HTTPHeaders));
-		}
-        m_socket = socketOps::cINVALID_SOCKET;
-        m_backupStarted = false; // any backup client should terminate automatically
-	}
-	else if ((resultCode >= 300) && (resultCode < 400))
-	{
-		utf8 location = m_HTTPHeaders["location"];
-
-		// do we maybe have a /stream/x url and gotten a /index.html?sid=# redirect?
-		// if so then we should attempt to access a relay on /stream/x/ (note end / )
-		utf8::size_type pos = (!location.empty() ? location.find(utf8("/index.html?sid=")) : utf8::npos);
-		if (pos != utf8::npos)
-		{
-			streamData::streamID_t foundID = atoi((const char *)location.substr(pos + 16).c_str());
-			utf8::size_type pos2 = m_relayInfo.m_relayUrl.path().find(utf8("/stream/"));
-			if (pos2 != utf8::npos)
-			{
-				streamData::streamID_t origID = atoi((const char *)m_relayInfo.m_relayUrl.path().substr(pos2 + 8).c_str());
-				if (foundID == origID)
-				{
-					m_relayInfo.m_relayUrl = m_relayInfo.m_relayUrl.url() + "/";
-					gOptions.setOption(utf8("streamrelayurl_"+tos(m_originalRelayInfo.m_streamID)),
-									   m_relayInfo.m_relayUrl.url());
-
-					m_skip = true;
-					m_state = &protocol_relay::state_Initial;
-					socketOps::forgetTCPSocket(m_socket);
-					m_result.run();
-					WLOG(m_srcLogString + "Received an invalid redirect to `" + location + "' - trying " + m_relayInfo.m_relayUrl.url(), LOGNAME, m_originalRelayInfo.m_streamID);
-					return;
-				}
-			}
-		}
-
-		WLOG(m_srcLogString + "Received redirect to " + location, LOGNAME, m_originalRelayInfo.m_streamID);
-		if (++m_redirectCount > gOptions.maxHTTPRedirects())
-		{
-            ELOG ("Max redirects exceeded", LOGNAME, m_originalRelayInfo.m_streamID);
-            throwEx<runtime_error>("");
-		}
-
-		m_skip = true;
-		m_relayInfo.m_relayUrl = location;
-		m_state = &protocol_relay::state_Initial;
-		socketOps::forgetTCPSocket(m_socket);
-		m_result.run();
-	}
-	else
-	{
-        ELOG ((resultCode >= 400 ? "Source responded with error [" : "Unsupported HTTP response code [") + m_HTTPGreetingResponse + "]");
-        throwEx<runtime_error>("");
-	}
-}
-
-#ifdef INCLUDE_BACKUP_STREAMS
-void protocol_relay::startBackupConnection(uniString::utf8 errorMessage) throw(exception)
-{
-    if (!m_relayInfo.m_backupUrl.url().empty() && m_backupStarted == false)
-    {
-        if (errorMessage.empty() == false)
-            ELOG(m_srcLogString + errorMessage, LOGNAME, m_originalRelayInfo.m_streamID);
-        // this should pass through the bitrate of the original stream but as we do not
-        // know what it is then we have to effectively force through to allow the backup
-
-        bool noEntry = false;
-        streamData::setRelayActiveFlags (m_originalRelayInfo.m_streamID, noEntry, 8);
-        threadedRunner::scheduleRunnable(new protocol_backup(m_relayInfo, 0, ""));
-        m_backupStarted = true;
-        return;
-    }
-}
-#else
-void protocol_relay::startBackupConnection(uniString::utf8) throw(exception)
-{
-}
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_relay.h b/Src/Plugins/DSP/sc_serv3/protocol_relay.h
deleted file mode 100644
index ba01c1ee..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_relay.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#pragma once
-#ifndef protocol_relay_H_
-#define protocol_relay_H_
-
-#include "threadedRunner.h"
-
-/*
-	Runnable object that handles the initial part of a relay connection.
-	Makes the connection to the source and determines what type of protocol
-	should be used, then hands off to that particular protocol
-	(shoutcast or uvox relay)
-*/
-
-class protocol_relay: public runnable
-{			
-private:
-	u_short							m_srcPort;			// server port
-	short							m_redirectCount;
-
-	uniString::utf8	m_srcAddrName;		// server DNS name or value as specified in relayInfo
-	std::string		m_srcAddrNumeric;	// resolved numeric addr
-	uniString::utf8	m_srcURLpart;		// server 
-
-	uniString::utf8	m_srcLogString;
-	httpHeaderMap_t	m_HTTPHeaders;
-	uniString::utf8	m_HTTPGreetingResponse; // first line of response
-
-	const uniString::utf8::value_type	*m_outBuffer; // for outgoing text lines
-	int				m_outBufferSize;
-
-	bool			m_relayWaitingToReconnect;
-	bool			m_relaySentConnectWait;
-	bool			m_retryRelay;
-	bool			m_skip;
-    bool            m_backupStarted;
-    bool            m_registered;       // true if runnable is ok to start. new relay have to wait for exisitng one to drop
-
-	uniString::utf8	m_lineBuffer;		// in/out lines
-
-	config::streamConfig		m_relayInfo;
-	const config::streamConfig	m_originalRelayInfo; // used for reconnects later on
-
-	/// reconnects
-	int				m_retryCount;
-	time_t			m_relayReconnectStartTime;
-
-	typedef void (protocol_relay::*state_t)();
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	void state_Initial() throw(std::exception);
-	void state_ResolveServer() throw(std::exception);
-	void state_Connect() throw(std::exception);
-	void state_ConnectWait() throw(std::exception);
-	void state_SendGreeting() throw(std::exception);
-	void state_GetGreetingResponse() throw(std::exception);
-	void state_AnalyzeGreetingResponse() throw(std::exception);
-	void state_DetermineProtocol() throw(std::exception);
-	void state_Send() throw(std::exception);
-	void state_GetLine() throw(std::exception);
-	void startBackupConnection(uniString::utf8 errorMessage) throw(std::exception);
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_relay"; }
-
-public:
-	protocol_relay(const config::streamConfig &info, const bool retry = false) throw();
-	virtual ~protocol_relay() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_relay_shoutcast.cpp b/Src/Plugins/DSP/sc_serv3/protocol_relay_shoutcast.cpp
deleted file mode 100644
index 91c06f79..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_relay_shoutcast.cpp
+++ /dev/null
@@ -1,455 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include "protocol_relay_shoutcast.h"
-#include "protocol_backup.h"
-#include "protocol_relay.h"
-#include "streamData.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(...)  do { if (gOptions.relayShoutcastDebug()) DLOG(__VA_ARGS__); } while (0)
-#define LOGNAME         "RELAY"
-
-protocol_relay_shoutcast::protocol_relay_shoutcast(socketOps::tSOCKET s,
-			const config::streamConfig &originalRelayInfo, const uniString::utf8 &srcAddrName,
-			const uniString::utf8 &srcAddrNumeric, const int srcPort,
-			const uniString::utf8 &srcURLpart, httpHeaderMap_t &headers,
-			const int originalBitrate, const uniString::utf8& originalMimeType, const bool backup)
-	: runnable(s), m_originalBitrate(originalBitrate), m_originalRelayInfo(originalRelayInfo),
-	  m_metadataInterval(mapGet(headers, "icy-metaint", (short unsigned int)0)),
-	  m_backup(backup), m_denied(false), m_remainderSize(0),
-	  m_remainder(new __uint8[BUF_SIZE * 4]), m_srcAddrName(srcAddrName),
-	  m_srcAddrNumeric(srcAddrNumeric), m_srcURLpart(srcURLpart), m_streamData(0),
-	  m_srcLogString((!backup ? "[RELAY " : "[BACKUP ") + m_srcAddrName + ":" +
-					 tos(srcPort) + m_srcURLpart + " sid=" +
-					 tos(originalRelayInfo.m_streamID) + "] "),
-	  m_bytesSinceMetadata(0), m_metadataSizeByte(-1)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, originalRelayInfo.m_streamID);
-    bool noEntry = false;
-    streamData::isRelayActive (m_originalRelayInfo.m_streamID, noEntry);
-
-	// for a backup we need to check that the mimetype matches the original source
-	// as otherwise there will be issues with the transition between the sources!
-	utf8 mimeType = fixMimeType(mapGet(headers, "content-type", utf8("audio/mpeg")));
-	if (m_backup && !originalMimeType.empty() && (originalMimeType != mimeType))
-	{
-		ELOG(m_srcLogString + "Backup source rejected. The content type does not match the original stream "
-			 "source - detected `" + mimeType + "' instead of `" + originalMimeType + "'.", (char*)m_srcLogString.c_str(), originalRelayInfo.m_streamID);
-		m_state = &protocol_relay_shoutcast::state_CloseConnection;
-		return;
-	}
-	m_originalMimeType = mimeType;
-
-	// for a backup we need to check that the bitrate matches the original source
-	// as otherwise there will be issues with the transition between the sources!
-	const int bitrate = getStreamBitrate(headers);
-	if (m_backup && (m_originalBitrate > 0) && (m_originalBitrate != bitrate) && (m_originalBitrate/1000 != bitrate))
-	{
-		ELOG(m_srcLogString + "Backup source rejected. The bitrate "
-			 "does not match the original stream source - detected " +
-			 tos(bitrate) + " kbps instead of " +
-			 tos(m_originalBitrate) + " kbps.", (char*)m_srcLogString.c_str(), originalRelayInfo.m_streamID);
-		m_state = &protocol_relay_shoutcast::state_CloseConnection;
-		return;
-	}
-	m_originalBitrate = bitrate;
-
-	// check that these bitrates are allowed (looking at both max and average values)
-	int streamMaxBitrate = 0, streamMinBitrate = 0;
-	const int ret = gOptions.isBitrateDisallowed(originalRelayInfo.m_streamID, bitrate,
-												 streamMaxBitrate, streamMinBitrate);
-	if (ret)
-	{
-		m_denied = true;
-		utf8 mode = ((streamMaxBitrate == streamMinBitrate) ? "of" : (ret == 2 ? "up to" : "from"));
-		ELOG(m_srcLogString + (!m_backup ? "Relay" : "Backup") +
-			 " source rejected. Only bitrates " + mode + " " +
-			 tos((ret == 1 ? streamMinBitrate : streamMaxBitrate) / 1000) + " kbps are allowed "
-			 "- detected " + tos(bitrate) + " kbps.", LOGNAME, m_originalRelayInfo.m_streamID);
-		m_state = &protocol_relay_shoutcast::state_CloseConnection;
-		return;
-	}
-
-	bool allowPublicRelay = gOptions.stream_allowPublicRelay(m_originalRelayInfo.m_streamID);
-	if (!gOptions.read_stream_allowPublicRelay(m_originalRelayInfo.m_streamID))
-	{
-		allowPublicRelay = gOptions.allowPublicRelay();
-	}
-	headers["icy-pub"] = (allowPublicRelay ? "1" : "0");
-
-	/// data might be encoded in url portion, so decode.
-	config::streamConfig stream;
-	const bool found = gOptions.getStreamConfig(stream, m_originalRelayInfo.m_streamID);
-	m_streamData = streamData::createStream(streamData::streamSetup(m_srcLogString,
-											m_originalRelayInfo.m_relayUrl.server(),
-											(found ? stream.m_authHash : ""), "",
-											m_originalRelayInfo.m_relayUrl.url(),
-											m_originalRelayInfo.m_backupUrl.url(),
-											streamData::SHOUTCAST1,
-											m_originalRelayInfo.m_streamID,
-											m_originalRelayInfo.m_relayUrl.port(),
-											m_originalRelayInfo.m_maxStreamUser,
-											m_originalRelayInfo.m_maxStreamBitrate,
-											m_originalRelayInfo.m_minStreamBitrate,
-											m_originalRelayInfo.m_allowPublicRelay,
-											m_backup, getStreamSamplerate(headers),
-											mapGet(headers, "icy-vbr", (bool)false), headers));
-	if (!m_streamData)
-	{
-		throwEx<runtime_error>(m_srcLogString + "Could not create " +
-							   (!m_backup ? "relay" : "backup") + " connection.");
-	}
-
-	// attempt to determine the version of the source based
-	// on the icy-notice2 line (assuming it is provided etc)
-	utf8 sourceIdent = mapGet(headers, "icy-notice2", utf8());
-	m_streamData->updateSourceIdent(sourceIdent, true);
-	sourceIdent = mapGet(headers, "server", utf8());
-	m_streamData->updateSourceIdent(sourceIdent, true);
-
-	ILOG(m_srcLogString + "Connected to Shoutcast 1 source " + (!m_backup ? "relay" : "backup") + ".", LOGNAME, m_originalRelayInfo.m_streamID);
-	m_state = &protocol_relay_shoutcast::state_GetStreamData;
-}
-
-void protocol_relay_shoutcast::cleanup()
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	if (m_streamData)
-	{
-		int killed = m_streamData->isKill();
-		// if this was a kill i.e. when a source re-joins then we need to keep things intact
-		if (!killed)
-		{
-			streamData::streamSourceLost(m_srcLogString, m_streamData, m_originalRelayInfo.m_streamID);
-            m_streamData = 0;
-            bool remove_relay = false;
-            if (gOptions.stream_relayURL(m_originalRelayInfo.m_streamID).empty() &&
-                    gOptions.stream_backupURL(m_originalRelayInfo.m_streamID).empty())
-                remove_relay = true;
-            if (remove_relay)
-                streamData::removeRelayStatus (m_originalRelayInfo.m_streamID);
-		}
-		else
-		{
-			m_streamData->setKill(false);
-		}
-	}
-
-	socketOps::forgetTCPSocket(m_socket);
-	forgetArray(m_remainder);
-}
-
-protocol_relay_shoutcast::~protocol_relay_shoutcast() throw()
-{
-    DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-    ILOG(m_srcLogString + "Disconnected from Shoutcast 1 source " +
-            (!m_backup ? "relay" : "backup"), (char*)m_srcLogString.c_str(), m_originalRelayInfo.m_streamID);
-    cleanup();
-}
-
-void protocol_relay_shoutcast::timeSlice() throw(exception)
-{
-	const int killed = (m_streamData ? m_streamData->isKill() : 0);
-
-    try
-    {
-        if (m_streamData && (m_streamData->isDead() || (!m_backup && killed == 1) || (m_backup && killed == 2)))
-        {
-            DLOG(m_srcLogString + "Detected termination of stream", LOGNAME, m_originalRelayInfo.m_streamID);
-            m_state = &protocol_relay_shoutcast::state_Fail;
-        }
-		return (this->*m_state)();
-	}
-	catch (const exception &ex)
-	{
-		// on error, we should get ready to retry if applicable
-        utf8 str = ex.what();
-        if (!str.empty())
-        {
-            ELOG(ex.what(), LOGNAME, m_originalRelayInfo.m_streamID);
-        }
-        if (m_streamData)
-            m_streamData->setKill (0);
-        m_state = &protocol_relay_shoutcast::state_Fail;
-        m_result.run();
-    }
-}
-
-void protocol_relay_shoutcast::state_Fail() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	if (!m_backup)
-	{
-		cleanup();
-		threadedRunner::scheduleRunnable(new protocol_relay(m_originalRelayInfo));
-	}
-#ifdef INCLUDE_BACKUP_STREAMS
-	else
-	{
-		threadedRunner::scheduleRunnable(new protocol_backup(m_originalRelayInfo, m_originalBitrate, m_originalMimeType));
-	}
-#endif
-	m_result.done();
-}
-
-void protocol_relay_shoutcast::state_GetMetadata() throw(exception)
-{
-	time_t cur_time;
-	const bool debug = gOptions.relayShoutcastDebug();
-	const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_originalRelayInfo.m_streamID, (m_srcLogString + "Timeout waiting for stream data"));
-
-	while (m_metadataSizeByte != 0)
-	{
-		char buf[BUF_SIZE] = {0};
-		// don't read beyond metadata interval
-		int amt = (m_metadataSizeByte < 0 ? 1 : m_metadataSizeByte);
-		amt = min(amt, (BUF_SIZE - 1));
-
-		int rval = 0;
-		if ((rval = recv (buf, amt, 0x0)) < 1)
-		{
-			if (rval == 0)
-			{
-				throwEx<runtime_error>((debug ? (m_srcLogString + "Remote socket "
-									   "closed while waiting for stream data.") : (utf8)""));
-			}
-			else if (rval < 0)
-			{
-				rval = socketOps::errCode();
-				if (rval != SOCKETOPS_WOULDBLOCK)
-				{
-					throwEx<runtime_error>((debug ? (m_srcLogString + "Socket error "
-										   "while waiting for stream data. " +
-										   socketErrString(rval)) : (utf8)""));
-				}
-
-				m_result.schedule();
-				m_result.read();
-				m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-				return;
-			}
-		}
-		bandWidth::updateAmount(bandWidth::RELAY_V1_RECV, rval);
-		m_lastActivityTime = ::time(NULL);
-		if (m_metadataSizeByte < 0)
-		{
-			m_metadataSizeByte = buf[0] * 16;
-			m_metadataBuffer.clear();
-		}
-		else
-		{
-			m_metadataBuffer.insert(m_metadataBuffer.end(), buf, buf + rval);
-			m_metadataSizeByte -= rval;
-		}
-	}
-
-	// parse and add
-	// this will pull StreamTitle='' and StreamUrl='' from the string
-	if (!m_metadataBuffer.empty())
-	{
-		bool song = false, url = false, next = false;
-		utf8 songStr, urlStr, nextStr;
-
-		// StreamTitle=''
-		utf8::size_type pos_start = m_metadataBuffer.find(utf8("itle='"));
-		if (pos_start != utf8::npos)
-		{
-			pos_start += 6;
-			utf8::size_type pos_end = m_metadataBuffer.find(utf8("';"));
-			if (pos_end != utf8::npos)
-			{
-				songStr = m_metadataBuffer.substr(pos_start,pos_end - pos_start);
-				if (!songStr.empty() && !songStr.isValid())
-				{
-					// use this as a way to try to ensure we've got a utf-8
-					// encoded title to improve legacy source title support
-					songStr = asciiToUtf8(songStr.toANSI(true));
-				}
-
-				// advance the buffer as StreamUrl=''; has to follow StreamTitle=''
-				m_metadataBuffer = m_metadataBuffer.substr(pos_end + 2);
-				song = true;
-			}
-			else
-			{
-				ELOG(m_srcLogString + "Bad metadata string [" + m_metadataBuffer + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-			}
-		}
-
-		// StreamUrl=''
-		pos_start = m_metadataBuffer.find(utf8("mUrl='"));
-		if (pos_start != utf8::npos)
-		{
-			pos_start += 6;
-			utf8::size_type pos_end = m_metadataBuffer.find(utf8("';"));
-			if (pos_end != utf8::npos)
-			{
-				urlStr = m_metadataBuffer.substr(pos_start,pos_end - pos_start);
-				url = true;
-			}
-			else
-			{
-				ELOG(m_srcLogString + "Bad metadata string [" + m_metadataBuffer + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-			}
-		}
-
-		// StreamNext=''
-		pos_start = m_metadataBuffer.find(utf8("mNext='"));
-		if (pos_start != utf8::npos)
-		{
-			pos_start += 7;
-			utf8::size_type pos_end = m_metadataBuffer.find(utf8("';"));
-			if (pos_end != utf8::npos)
-			{
-				nextStr = m_metadataBuffer.substr(pos_start,pos_end - pos_start);
-				next = true;
-			}
-			else
-			{
-				ELOG(m_srcLogString + "Bad metadata string [" + m_metadataBuffer + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-			}
-		}
-
-		if (!song && !url && !next)
-		{
-			ELOG(m_srcLogString + "Bad metadata string [" + m_metadataBuffer + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-		}
-		else
-		{
-			if (m_streamData->addSc1MetadataAtCurrentPosition(m_srcLogString, songStr, urlStr, nextStr) & 1)
-			{
-				ILOG(m_srcLogString + "Title update [" + songStr + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-			}
-		}
-	}
-
-	// it's streaming time
-	m_metadataSizeByte = -1;
-	m_metadataBuffer.clear();
-	m_bytesSinceMetadata = 0;
-	m_state = &protocol_relay_shoutcast::state_GetStreamData;
-
-	m_result.run();
-}
-
-void protocol_relay_shoutcast::state_GetStreamData() throw(exception)
-{
-	time_t cur_time;
-
-
-    try
-    {
-        const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_originalRelayInfo.m_streamID, (m_srcLogString + "Timeout waiting for stream data"));
-
-        int bitrate = m_streamData->streamBitrate();
-        const int type = m_streamData->streamUvoxDataType();
-        while ((!m_metadataInterval) || (m_bytesSinceMetadata < m_metadataInterval)) 
-        {
-            char buf[BUF_SIZE * 4] = {0};
-            // don't read beyond metadata interval otherwise we'll have audio glitching issues :o(
-            int amt = ((m_metadataInterval > 0) ? m_metadataInterval - m_bytesSinceMetadata : BUF_SIZE);
-            amt = min(amt, (BUF_SIZE - 1));
-
-            // if we had anything left over then now we
-            // need to copy it back into the buffer and
-            // adjust the max data amount to be read in
-            if ((m_remainderSize > 0) && ((amt + m_remainderSize) <= (BUF_SIZE * 4)))
-            {
-                memcpy(buf, m_remainder, m_remainderSize);
-            }
-            else
-            {
-                m_remainderSize = 0;
-            }
-
-            // adjust the position in the buffer based on the prior
-            // state of the remaining data as part of frame syncing
-            int rval = 0;
-            if ((rval = recv (&buf[m_remainderSize], amt, 0x0)) < 1)
-            {
-                if (rval < 0)
-                {
-                    rval = socketOps::errCode();
-                    if (rval == SOCKETOPS_WOULDBLOCK)
-                    {
-                        m_result.schedule (70);
-                        m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-                        return;
-                    }
-                    WLOG (m_srcLogString + "Socket error while waiting for data. " + socketErrString(rval), LOGNAME, m_originalRelayInfo.m_streamID);
-                }
-                else
-                    ILOG (m_srcLogString + "Remote socket closed while waiting for data.", LOGNAME, m_originalRelayInfo.m_streamID);
-                throwEx<runtime_error> ("");
-            }
-
-            // update these details before we mess with anything
-            // else as we have read things and it's needed to
-            // ensure that we don't break the metadata detection
-            bandWidth::updateAmount(bandWidth::RELAY_V1_RECV, rval);
-            m_bytesSinceMetadata += rval;
-
-            // if we're here then we account for what we already had in the total
-            // so that we then don't skip the new data read with the original data
-            rval += m_remainderSize;
-            m_remainderSize = 0;
-            amt = rval;
-
-            if (m_streamData->syncToStream(m_remainderSize, m_remainder, amt, bitrate,
-                        type, buf, m_srcLogString))
-            {
-                m_denied = true;
-                ELOG (m_srcLogString + (!m_backup ? "Relay" : "Backup") +
-                        " source rejected. Unable to sync to the stream. Please "
-                        "check the source is valid and in a supported format.", LOGNAME, m_originalRelayInfo.m_streamID);
-                throwEx<runtime_error> ("");
-            }
-
-            m_lastActivityTime = ::time(NULL);
-        }
-
-        if (m_metadataInterval > 0)
-        {
-            // it's metadata time!
-            m_metadataSizeByte = -1;
-            m_metadataBuffer.clear();
-            m_state = &protocol_relay_shoutcast::state_GetMetadata;
-        }
-
-        m_result.run();
-    }
-    catch (exception &e)
-    {
-        // if there was a failure, now see if we have a backup and attempt to run
-        // before we remove the current handling of the dropped source connection
-        vector<config::streamConfig> backupInfo = gOptions.getBackupUrl(m_originalRelayInfo.m_streamID);
-        if (!m_backup && !backupInfo.empty() && !m_denied)
-        {
-            m_denied = true;
-            if (m_streamData)
-            {
-                m_streamData->clearCachedMetadata();
-                streamData::streamSourceLost(m_srcLogString, m_streamData, m_originalRelayInfo.m_streamID);
-                m_streamData = 0;
-            }
-        }
-        throw;
-    }
-}
-
-void protocol_relay_shoutcast::state_CloseConnection() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	m_result.done();
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_relay_shoutcast.h b/Src/Plugins/DSP/sc_serv3/protocol_relay_shoutcast.h
deleted file mode 100644
index 07872249..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_relay_shoutcast.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#pragma once
-#ifndef protocol_relay_shoutcast_H_
-#define protocol_relay_shoutcast_H_
-
-#include "threadedRunner.h"
-
-class streamData;
-
-class protocol_relay_shoutcast: public runnable
-{
-	int m_originalBitrate;	// original bitrate for checking
-	uniString::utf8 m_originalMimeType;		// original mimetype for checking
-	const config::streamConfig m_originalRelayInfo;
-
-	short unsigned int m_metadataInterval;	// interval on source
-	const bool m_backup;	// used to change log output depending on relay or backup usage
-	bool m_denied;			// used to prevent source disconnected messages e.g. for failed passwords
-
-	short unsigned int m_remainderSize;
-	__uint8 *m_remainder;
-
-	const uniString::utf8	m_srcAddrName;
-	const uniString::utf8	m_srcAddrNumeric;
-	const uniString::utf8	m_srcURLpart;
-
-	uniString::utf8	m_metadataBuffer;
-
-	streamData *m_streamData;
-	const uniString::utf8	m_srcLogString;
-
-	typedef void (protocol_relay_shoutcast::*state_t)();
-	state_t	m_state;
-
-	int m_bytesSinceMetadata;
-	int m_metadataSizeByte;	// metadata length indicator
-
-	void state_GetStreamData() throw(std::exception);
-	void state_GetMetadata() throw(std::exception);
-	void state_Fail() throw(std::exception);
-	void state_CloseConnection() throw(std::exception);
-
-	void cleanup();
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_relay_shoutcast"; }
-
-public:
-	protocol_relay_shoutcast(const socketOps::tSOCKET s, const config::streamConfig &originalRelayInfo,
-							 const uniString::utf8 &srcAddrName, const uniString::utf8 &srcAddrNumeric,
-							 const int srcPort, const uniString::utf8 &srcURLpart,
-							 httpHeaderMap_t &httpHeaders, const int originalbitrate = 0,
-							 const uniString::utf8& originalMimeType = "", const bool backup = false);
-	~protocol_relay_shoutcast() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_relay_uvox.cpp b/Src/Plugins/DSP/sc_serv3/protocol_relay_uvox.cpp
deleted file mode 100644
index 94dcfcd1..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_relay_uvox.cpp
+++ /dev/null
@@ -1,693 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include "protocol_relay_uvox.h"
-#include "protocol_backup.h"
-#include "protocol_relay.h"
-#include "streamData.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(...)  do { if (gOptions.relayUvoxDebug()) DLOG(__VA_ARGS__); } while (0)
-#define LOGNAME         "RELAY"
-
-protocol_relay_uvox::protocol_relay_uvox(const socketOps::tSOCKET s, const config::streamConfig &originalRelayInfo,
-										 const uniString::utf8 &srcAddrName, const uniString::utf8 &srcAddrNumeric,
-										 const int srcPort, const uniString::utf8 &srcURLpart,
-										 const httpHeaderMap_t &httpHeaders, const int originalBitrate,
-										 const uniString::utf8& originalMimeType, const bool backup)  throw(runtime_error)
-	: runnable(s), m_backup(backup), m_denied(false), m_remainderSize(0),
-	  m_remainder(new __uint8[BUF_SIZE * 4]), m_srcAddrName(srcAddrName),
-	  m_srcAddrNumeric(srcAddrNumeric), m_srcURLpart(srcURLpart),
-	  m_srcLogString((!backup ? "[RELAY " : "[BACKUP ") + m_srcAddrName +
-					  ":" + tos(srcPort) + m_srcURLpart + " sid=" +
-					  tos(originalRelayInfo.m_streamID) + "] "),
-	  m_outData(new __uint8[MAX_MESSAGE_SIZE]), m_outBuffer(0), m_outBufferSize(0),
-	  m_originalRelayInfo(originalRelayInfo), m_streamData(0), m_nextState(0)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	// we need to look in the response headers and figure out what's going on
-
-	// mime type. For uvox2 there is none, for shoutcast 2 it must be there
-	// changed in build 22 to match new specs as there's no part in brackets now
-	// i.e. should just be 'misc/ultravox if it's a SC2 stream being relayed
-
-	// fixed in build 23 so we set the mime type to the source's details
-	// which means older clients can connect and keeps relaying to specs
-	switch (strtol((const char*)mapGet(httpHeaders, "ultravox-class-type", utf8()).c_str(), 0, 16))
-	{
-		case MP3_DATA:
-		{
-			m_configData.m_mimeType = "audio/mpeg";
-			break;
-		}
-		case AAC_LC_DATA:
-		case AACP_DATA:
-		{
-			m_configData.m_mimeType = "audio/aacp";
-			break;
-		}
-		case OGG_DATA:
-		{
-			m_configData.m_mimeType = "audio/ogg";
-			break;
-		}
-		default:
-		{
-			m_configData.m_mimeType = mapGet(httpHeaders, "content-type", utf8("audio/mpeg"));
-			break;
-		}
-	}
-
-	if (m_configData.m_mimeType.empty())
-	{
-		throwEx<runtime_error>(m_srcLogString + "No mime-type specified.");
-	}
-
-	utf8 cdn_authhash;
-	if (mapGet(httpHeaders, "cdn-master", false))
-	{
-		DEBUG_LOG(m_srcLogString + "CDN master response received by slave", LOGNAME, m_originalRelayInfo.m_streamID);
-		utf8 authhash = mapGet(httpHeaders, "cdn-token", utf8());
-		authhash = XTEA_decipher(authhash.c_str(), authhash.size(), bob().c_str(), bob().size());
-		if (yp2::isValidAuthhash(authhash))
-		{
-			cdn_authhash = authhash;
-		}
-		else
-		{
-			DEBUG_LOG(m_srcLogString + "CDN master response rejected - invalid master authash provided", LOGNAME, m_originalRelayInfo.m_streamID);
-		}
-	}
-
-	// for a backup we need to check that the mimetype matches the original source
-	// as otherwise there will be issues with the transition between the sources!
-	if (m_backup && !originalMimeType.empty() && (originalMimeType != m_configData.m_mimeType))
-	{
-		ELOG(m_srcLogString + "Backup source rejected. The content type does not match the original stream "
-			 "source - detected `" + m_configData.m_mimeType + "' instead of `" + originalMimeType + "'.", LOGNAME, m_originalRelayInfo.m_streamID);
-		loadAndSendMsg("NAK:Unsupported mime type", MSG_BROADCAST_SETUP, &protocol_relay_uvox::state_CloseConnection);
-		return;
-	}
-
-	utf8 p = mapGet(httpHeaders,"ultravox-max-msg",utf8());
-	if (p.empty())
-	{
-		throwEx<runtime_error>(m_srcLogString + "Missing Ultravox-Max-Msg header");
-	}
-
-	int max_msg = p.toInt();
-	if ((max_msg < 256) || (max_msg > MAX_PAYLOAD_SIZE))
-	{
-		throwEx<runtime_error>(m_srcLogString + "Bad Ultravox-Max-Msg value " + tos(max_msg));
-	}
-
-	p = mapGet(httpHeaders, "ultravox-samplerate", utf8("0"));
-	int samplerate = p.toInt();
-	if (samplerate < 0)
-	{
-		throwEx<runtime_error>(m_srcLogString + "Bad samplerate specified (" + tos(samplerate) + ")");
-	}
-
-	// this is basically a hint that should only appear
-	// if relaying a MP3 VBR stream from a 2.5+ DNAS...
-	p = mapGet(httpHeaders, "ultravox-vbr", utf8("0"));
-	const bool vbr = !!p.toInt();
-
-	m_configData.m_avgBitrate = 0;
-	m_configData.m_maxBitrate = 0;
-	p = mapGet(httpHeaders, "ultravox-avg-bitrate", utf8("0"));
-	m_configData.m_avgBitrate = p.toInt();
-	p = mapGet(httpHeaders, "ultravox-max-bitrate", utf8("0"));
-	m_configData.m_maxBitrate = p.toInt();
-	p = mapGet(httpHeaders, "ultravox-bitrate", utf8("0"));
-
-	int x = p.toInt();
-	if (x > 0)
-	{
-		m_configData.m_maxBitrate = m_configData.m_avgBitrate = x;
-	}
-
-	if (m_configData.m_avgBitrate <= 0)
-	{
-		throwEx<runtime_error>(m_srcLogString + "Bad avg bitrate specified (" +
-							   tos(m_configData.m_avgBitrate) + ")");
-	}
-
-	if (m_configData.m_maxBitrate <= 0)
-	{
-		throwEx<runtime_error>(m_srcLogString + "Bad max bitrate specified (" +
-							   tos(m_configData.m_maxBitrate) + ")");
-	}
-
-	// for a backup we need to check that the bitrate matches the original source
-	// as otherwise there will be issues with the transition between the sources!
-	int bitrate = max(m_configData.m_avgBitrate, m_configData.m_maxBitrate);
-	if (m_backup && (originalBitrate > 0) && (originalBitrate != bitrate))
-	{
-		ELOG(m_srcLogString + "Backup source rejected. The bitrate "
-			 "does not match the original stream source - detected " +
-			 tos(bitrate / 1000) + " kbps instead of " +
-			 tos(originalBitrate / 1000) + " kbps.");
-		loadAndSendMsg("NAK:Bit Rate Error", MSG_BROADCAST_SETUP, &protocol_relay_uvox::state_CloseConnection);
-		return;
-	}
-
-	// check that these bitrates are allowed (looking at both max and average values)
-	int streamMaxBitrate = 0, streamMinBitrate = 0;
-	const int ret = gOptions.isBitrateDisallowed(originalRelayInfo.m_streamID, bitrate,
-												 streamMaxBitrate, streamMinBitrate);
-	if (ret)
-	{
-		m_denied = true;
-		utf8 mode = ((streamMaxBitrate == streamMinBitrate) ? "of" : (ret == 2 ? "up to" : "from"));
-		ELOG(m_srcLogString + (!m_backup ? "Relay" : "Backup") +
-			 " source rejected. Only bitrates " + mode + " " +
-			 tos((ret == 1 ? streamMinBitrate : streamMaxBitrate) / 1000) + " kbps are allowed "
-			 "- detected " + tos(bitrate / 1000) + " kbps.");
-		loadAndSendMsg("NAK:Bit Rate Error", MSG_BROADCAST_SETUP, &protocol_relay_uvox::state_CloseConnection);
-		return;
-	}
-
-
-	m_configData.m_minimumBufferSize = m_configData.m_desiredBufferSize = 0;
-
-	m_configData.m_icyName = mapGet(httpHeaders,"ultravox-title", (utf8)"");
-	m_configData.m_icyGenre = mapGet(httpHeaders,"ultravox-genre", utf8("Misc"));
-	m_configData.m_icyURL = mapGet(httpHeaders,"ultravox-url", (utf8)"");
-	m_configData.m_icyPub = m_originalRelayInfo.m_allowPublicRelay;
-
-	config::streamConfig stream;
-	const bool found = gOptions.getStreamConfig(stream, m_originalRelayInfo.m_streamID);
-
-	m_streamData = streamData::createStream(streamData::streamSetup(m_srcLogString,
-											m_originalRelayInfo.m_relayUrl.server(),
-											(!cdn_authhash.empty() ? cdn_authhash :
-											(found ? stream.m_authHash : "")), "",
-											m_originalRelayInfo.m_relayUrl.url(),
-											m_originalRelayInfo.m_backupUrl.url(),
-											streamData::SHOUTCAST2,
-											m_originalRelayInfo.m_streamID,
-											m_originalRelayInfo.m_relayUrl.port(),
-											m_originalRelayInfo.m_maxStreamUser,
-											m_originalRelayInfo.m_maxStreamBitrate,
-											m_originalRelayInfo.m_minStreamBitrate,
-											m_originalRelayInfo.m_allowPublicRelay,
-											m_backup, samplerate, vbr, m_configData));
-	if (!m_streamData)
-	{
-		throwEx<runtime_error>(m_srcLogString + "Could not create " + (!m_backup ?
-							   "relay" : "backup") + " connection.");
-	}
-
-	// attempt to determine the version of the source based
-	// on the icy-notice2 line (assuming it is provided etc)
-	utf8 sourceIdent = mapGet(httpHeaders, "icy-notice2", utf8());
-	m_streamData->updateSourceIdent(sourceIdent, true);
-	sourceIdent = mapGet(httpHeaders, "server", utf8());
-	m_streamData->updateSourceIdent(sourceIdent, true);
-
-	DEBUG_LOG(m_srcLogString + "Stream configuration [" + eol() + m_configData.toLogString() + eol() + "]");
-	ILOG(m_srcLogString + "Connected to Shoutcast 2 source " + (!m_backup ? "relay" : "backup") + ".");
-	m_state = &protocol_relay_uvox::state_GetStreamData;
-}
-
-void protocol_relay_uvox::cleanup()
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (m_streamData)
-	{
-		int killed = m_streamData->isKill();
-		if (!m_denied)
-		{
-			ILOG(m_srcLogString + "Disconnected from Shoutcast 2 source " +
-				 (!m_backup ? "relay" : "backup") +
-				 (!killed ? "." : " - original source connected."));
-		}
-
-		// if this was a kill i.e. when a source re-joins then we need to keep things intact
-		if (!killed)
-		{
-			streamData::streamSourceLost(m_srcLogString, m_streamData, m_originalRelayInfo.m_streamID);
-			m_streamData = 0;
-            bool remove_relay = false;
-            if (gOptions.stream_relayURL(m_originalRelayInfo.m_streamID).empty() &&
-                    gOptions.stream_backupURL(m_originalRelayInfo.m_streamID).empty())
-                remove_relay = true;
-            if (remove_relay)
-                streamData::removeRelayStatus (m_originalRelayInfo.m_streamID);
-		}
-		else
-		{
-			m_streamData->setKill(false);
-		}
-	}
-
-	socketOps::forgetTCPSocket(m_socket);
-	forgetArray(m_outData);
-	forgetArray(m_remainder);
-}
-
-protocol_relay_uvox::~protocol_relay_uvox() throw()
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	cleanup();
-}
-
-void protocol_relay_uvox::timeSlice() throw(exception)
-{
-	const int killed = (m_streamData ? m_streamData->isKill() : 0);
-    try
-    {
-        if (m_streamData && (m_streamData->isDead() || (!m_backup && killed == 1) || (m_backup && killed == 2)))
-        {
-            DLOG(m_srcLogString + "Detected termination of stream", LOGNAME, m_originalRelayInfo.m_streamID);
-            m_state = &protocol_relay_uvox::state_Fail;
-        }
-        (this->*m_state)();
-    }
-    catch (const exception &ex)
-    {
-		// on error, we should get ready to retry if applicable
-		utf8 str = ex.what();
-		if (!str.empty())
-		{
-			ELOG(ex.what());
-		}
-        if (m_streamData)
-            m_streamData->setKill (0);
-		m_state = &protocol_relay_uvox::state_Fail;
-		m_result.run();
-	}
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////// Similar to protocol_uvox2Source from here on in ///////////////////////////
-
-template<typename T>
-void protocol_relay_uvox::loadAndSendMsg(const T &msg, int type, state_t nextState) throw()
-{
-	formMessage(msg, type, m_outData, m_outBufferSize);
-	bandWidth::updateAmount(bandWidth::RELAY_V2_SENT, m_outBufferSize);
-	m_outBuffer = m_outData;
-	m_state = &protocol_relay_uvox::state_SendBuffer;
-	m_nextState = nextState;
-}
-
-// load outbound message into buffer, and establish state to transition to after send
-#define SEND_AND_TRANSITION(msg, vtype, state)\
-	loadAndSendMsg(msg, vtype, state);\
-	m_result.write();\
-	m_result.run();\
-	return;
-
-// get next packet, without acknowledgement
-#define NEXT_PACKET\
-	m_inBuffer.clear();\
-	m_nextState = m_state;\
-	m_state = &protocol_relay_uvox::state_GetPacket;\
-	m_result.read();\
-	m_result.schedule();\
-	m_result.timeoutSID(m_originalRelayInfo.m_streamID);\
-	return;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-void protocol_relay_uvox::state_GetPacket() throw(exception)
-{
-	time_t cur_time;
-
-    try
-    {
-        const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_originalRelayInfo.m_streamID, (m_srcLogString + "Timeout waiting for data"));
-
-        while (true)
-        {
-            // calculate optimal read size
-            char buf[BUF_SIZE] = {0};
-            int amt = MAX_MESSAGE_SIZE;
-            int len = (int)m_inBuffer.size();
-
-            if (!len)
-            {
-                amt = UV2X_HDR_SIZE;
-            }
-            else if (len >= UV2X_HDR_SIZE)
-            {
-                amt = min(MAX_MESSAGE_SIZE, (int)((ntohs(reinterpret_cast<const uv2xHdr*>(&(m_inBuffer[0]))->msgLen) + UV2X_OVERHEAD) - len));
-            }
-            else
-            {
-                amt = min(MAX_MESSAGE_SIZE, (UV2X_OVERHEAD - len));
-            }
-
-            int rval = 0;
-            if ((rval = recv (buf, amt, 0x0)) < 1)
-            {
-                if (rval < 0)
-                {
-                    rval = socketOps::errCode();
-                    if (rval == SOCKETOPS_WOULDBLOCK)
-                    {
-                        m_result.schedule (70);
-                        m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-                        return;
-                    }
-                    WLOG (m_srcLogString + "Socket error while waiting for data. " + socketErrString(rval), LOGNAME, m_originalRelayInfo.m_streamID);
-                }
-                else
-                    ILOG (m_srcLogString + "Remote socket closed while waiting for data.", LOGNAME, m_originalRelayInfo.m_streamID);
-                throwEx<runtime_error> ("");
-            }
-
-            m_lastActivityTime = ::time(NULL);
-            m_inBuffer.insert(m_inBuffer.end(), buf, buf + rval);
-
-            len = (int)m_inBuffer.size();
-            if ((len > 1) && (len <= UV2X_HDR_SIZE))
-            {
-                // check for sync byte as we cannot be
-                // certain of good data coming in from
-                // the connection and so we check it
-                int found = -1;
-                for (int i = 0; i < len - 1; i++)
-                {
-                    // check for sync byte
-                    if ((buf[i] == UVOX2_SYNC_BYTE) && (buf[i + 1] == 0))
-                    {
-                        found = i;
-                        break;
-                    }
-                }
-
-                // track what we've received for the bandwidth stats
-                bandWidth::updateAmount(bandWidth::RELAY_V2_RECV, len);
-
-                if (found != -1)
-                {
-                    // we need to re-sync and so need to
-                    // clear the buffer and replace it
-                    // according to the re-sync position
-                    if (found > 0)
-                    {
-                        DEBUG_LOG(m_srcLogString + "Shoutcast 2 source relay re-synced to stream [pos: " + tos(found) + "].");
-
-                        m_inBuffer.clear();
-
-                        // we insert in to the start of the buffer
-                        // what appears to be 'good' sync'd data.
-                        m_inBuffer.insert(m_inBuffer.end(), &buf[found], &buf[found] + rval - found);
-                    }
-                }
-                else
-                {
-                    // and then we clear out the buffer which
-                    // is ok to do since we're trying to find
-                    // the frame (as first or next in stream)
-                    m_inBuffer.clear();
-                }
-
-                continue;
-            }
-            else if (len > MAX_MESSAGE_SIZE)
-            {
-                bandWidth::updateAmount(bandWidth::RELAY_V2_RECV, len);
-                throwEx<runtime_error>(m_srcLogString + "UVOX packet is too large"
-                        " [got: " + tos(len) + " bytes, max: " +
-                        tos(MAX_MESSAGE_SIZE) + " bytes]");
-            }
-            else if (len > UV2X_HDR_SIZE)
-            {
-                if ((int)(ntohs(reinterpret_cast<const uv2xHdr*>(&(m_inBuffer[0]))->msgLen) + UV2X_OVERHEAD) == len)
-                {
-                    // got it
-                    bandWidth::updateAmount(bandWidth::RELAY_V2_RECV, len);
-
-                    m_result.run();
-                    m_state = m_nextState;
-                    return;
-                }
-            }
-        }
-    }
-    catch (exception &e)
-    {
-        // if there was a failure, now see if we have a backup and attempt to run
-        // before we remove the current handling of the dropped source connection
-        vector<config::streamConfig> backupInfo = gOptions.getBackupUrl(m_originalRelayInfo.m_streamID);
-        if (!m_backup && !backupInfo.empty() && !m_denied)
-        {
-            m_denied = true;
-            if (m_streamData)
-            {
-                m_streamData->clearCachedMetadata();
-                streamData::streamSourceLost(m_srcLogString, m_streamData, m_originalRelayInfo.m_streamID);
-                m_streamData = 0;
-            }
-        }
-        throw;
-    }
-}
-
-void protocol_relay_uvox::state_SendBuffer() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	if (sendDataBuffer(m_originalRelayInfo.m_streamID, m_outBuffer, m_outBufferSize, m_srcLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-// normal streaming state
-void protocol_relay_uvox::state_GetStreamData() throw(std::exception)
-{
-	if (!m_inBuffer.empty())
-	{
-		const uv2xHdr *voxHdr = (const uv2xHdr*)(&(m_inBuffer[0]));
-		const __uint16 voxMsgType = ntohs(voxHdr->msgType);
-
-		if ((voxMsgType >= 0x7000) && (voxMsgType < 0x9000))
-		{
-			// if we have old uvox, then we don't know our mime-type (since old uvox 2 doesn't
-			// specify it, though 2.1 does). In the case that mime_type is empty, inspect the packet type and
-			// set it in the stream
-			if (m_configData.m_mimeType.empty())
-			{
-				switch (voxMsgType)
-				{
-					case MP3_DATA:
-					{
-						m_configData.m_mimeType = "audio/mpeg";
-						break;
-					}
-					case AAC_LC_DATA:
-					case AACP_DATA:
-					{
-						m_configData.m_mimeType = "audio/aacp";
-						break;
-					}
-					case OGG_DATA:
-					{
-						m_configData.m_mimeType = "audio/ogg";
-						break;
-					}
-				}
-
-				if (!m_configData.m_mimeType.empty())
-				{
-					m_streamData->streamSetMimeType(m_configData.m_mimeType);
-				}
-			}
-
-			char buf[BUF_SIZE * 4] = {0};
-			__uint16 amt = ntohs(voxHdr->msgLen);
-
-			// if we had anything left over then now we
-			// need to copy it back into the buffer and
-			// adjust the max data amount to be read in
-			if ((m_remainderSize > 0) && ((amt + m_remainderSize) <= (BUF_SIZE * 4)))
-			{
-				memcpy(buf, m_remainder, m_remainderSize);
-			}
-			else
-			{
-				m_remainderSize = 0;
-			}
-
-			memcpy(&buf[m_remainderSize], (const __uint8 *)((&(m_inBuffer[UV2X_HDR_SIZE]))), amt);
-			amt += m_remainderSize;
-			m_remainderSize = 0;
-
-			int br = m_streamData->streamBitrate();
-			if (m_streamData->syncToStream (m_remainderSize, m_remainder, amt, br, voxMsgType, buf, m_srcLogString))
-			{
-				m_denied = true;
-				throwEx<runtime_error>(m_srcLogString + (!m_backup ? "Relay" : "Backup") +
-									   " source rejected. Unable to sync to the stream. Please "
-									   "check the source is valid and in a supported format.");
-			}
-		}
-		else if ((voxMsgType >= 0x3000) && (voxMsgType < 0x5000))
-		{
-			DEBUG_LOG(m_srcLogString + "Cacheable metadata received type=0x" + tohex(voxMsgType), LOGNAME, m_originalRelayInfo.m_streamID);
-			const __uint16 voxPayloadSize = ntohs(voxHdr->msgLen);
-			if (voxPayloadSize >= UV2X_META_HDR_SIZE) // make sure there's enough data
-			{
-				const __uint8 *contents = (const __uint8 *)((&(m_inBuffer[UV2X_HDR_SIZE])));
-				const uv2xMetadataHdr *metaHdr = reinterpret_cast<const uv2xMetadataHdr*>(contents);
-				const __uint16 metadataID = ntohs(metaHdr->id);
-				const __uint16 metadataSpan = ntohs(metaHdr->span);
-				const __uint16 metadataIndex = ntohs(metaHdr->index) - 1;
-				const __uint8* metadataContents = contents + UV2X_META_HDR_SIZE;
-				const size_t metadataContentsSize = voxPayloadSize - UV2X_META_HDR_SIZE;
-
-				if ((metadataSpan <= MAX_METADATA_FRAGMENTS) &&
-					(metadataSpan > 0) &&
-					(metadataIndex < MAX_METADATA_FRAGMENTS) &&
-					(metadataIndex < metadataSpan))
-				{
-					assemblyTableIndex_t ati = makeAssemblyTableIndex(voxMsgType, metadataID);
-					metadataEntry_t &me = m_metadataAssemblyTable[ati];
-
-					if (metadataSpan != me.m_expectedFragments) // span changed, clear the entire thing
-					{
-						__uint16 expectedFragments = me.m_expectedFragments;
-						me.clear();
-						DEBUG_LOG(m_srcLogString + "Cacheable metadata reset due to span change [" + tos(metadataSpan) + "," + tos(expectedFragments) + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-					}
-
-					me.m_expectedFragments = metadataSpan;
-					if (me.m_fragments[metadataIndex].m_isValid) // duplicate fragment, clear the entire thing
-					{
-						me.clear();
-						DEBUG_LOG(m_srcLogString + "Cacheable metadata reset due to duplicate fragment", LOGNAME, m_originalRelayInfo.m_streamID);
-					}
-
-					me.m_fragments[metadataIndex].m_isValid = true;
-					me.m_fragments[metadataIndex].m_fragment.insert(me.m_fragments[metadataIndex].m_fragment.end(),
-																	metadataContents, metadataContents + metadataContentsSize);
-
-					if ((++me.m_receivedFragments) == me.m_expectedFragments)
-					{
-						// assembly, send and clear
-						vector<__uint8> assembledData;
-						for (__uint16 x = 0; x < me.m_expectedFragments; ++x)
-						{
-							assembledData.insert(assembledData.end(), me.m_fragments[x].m_fragment.begin(), me.m_fragments[x].m_fragment.end());
-						}
-
-						// send
-						m_streamData->addUvoxMetadataAtCurrentPosition(voxMsgType,assembledData);
-
-						if (gOptions.relayUvoxDebug())
-						{
-							if ((voxMsgType >= 0x3000) && (voxMsgType < 0x4000))
-							{
-								ILOG(m_srcLogString + "Got complete metadata message type=0x" + tohex(voxMsgType) +
-													  " [" + tos(assembledData.size()) + " bytes]" +
-													  " id=" + tos(metadataID) +
-													  " span=" + tos(metadataSpan) +
-													  " content=" + eol() + utf8(&(assembledData[0]), assembledData.size()), LOGNAME, m_originalRelayInfo.m_streamID);
-							}
-							else
-							{
-								ILOG(m_srcLogString + "Got complete metadata message type=0x" + tohex(voxMsgType) +
-													  " [" + tos(assembledData.size()) + " bytes]" +
-													  " id=" + tos(metadataID) +
-													  " span=" + tos(metadataSpan), LOGNAME, m_originalRelayInfo.m_streamID);
-							}
-						}
-						else
-						{
-							if ((voxMsgType >= 0x3000) && (voxMsgType < 0x4000))
-							{
-								utf8 currentSong, comingSoon;
-								std::vector<uniString::utf8> nextSongs;
-								m_streamData->getStreamNextSongs(m_originalRelayInfo.m_streamID, currentSong, comingSoon, nextSongs);
-
-								if (!currentSong.empty())
-								{
-									if (!comingSoon.empty())
-									{
-										ILOG(m_srcLogString + "Title update [now: \"" + currentSong + "\", next: \"" + comingSoon + "\"]", LOGNAME, m_originalRelayInfo.m_streamID);
-									}
-									else
-									{
-										ILOG(m_srcLogString + "Title update [" + currentSong + "]", LOGNAME, m_originalRelayInfo.m_streamID);
-									}
-									m_streamData->resetAdvertTriggers(currentSong);
-								}
-							}
-						}
-
-						// clear
-						m_metadataAssemblyTable.erase(ati);
-					}
-				}
-				else
-				{
-					ELOG(m_srcLogString + "Badly formed metadata packet type=0x" + tohex(voxMsgType) + " id=" +
-						 tos(metadataID) + " span=" + tos(metadataSpan) + " index=" + tos(metadataIndex + 1), LOGNAME, m_originalRelayInfo.m_streamID);
-				}
-			}
-			else
-			{
-				ELOG(m_srcLogString + "Badly formed metadata packet type=0x" + tohex(voxMsgType) +
-					 " content of packet is too small payloadsize=" + tos(voxPayloadSize), LOGNAME, m_originalRelayInfo.m_streamID);
-			}
-		}
-		else if ((voxMsgType >= 0x5000) && (voxMsgType < 0x7000))
-		{
-			// pass thru metadata
-			DEBUG_LOG(m_srcLogString + "Pass thru metadata");
-			m_streamData->writeSc21(m_inBuffer); // like data, but don't write to sc1 buffers
-		}
-		else
-		{
-			ELOG(m_srcLogString + "Unknown or out of sequence packet " + tos(voxMsgType), LOGNAME, m_originalRelayInfo.m_streamID);
-			if ((voxMsgType < 0x2000) && (voxMsgType != MSG_FILE_TRANSFER_DATA))
-			{
-				// probably have to NAK it
-				SEND_AND_TRANSITION("NAK:Unsupported packet type", voxMsgType, &protocol_relay_uvox::state_GetStreamData);
-			}
-		}
-	}
-
-	NEXT_PACKET;
-}
-
-void protocol_relay_uvox::state_Fail() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	if (!m_backup)
-	{
-		cleanup();
-		threadedRunner::scheduleRunnable(new protocol_relay(m_originalRelayInfo, true));
-	}
-#ifdef INCLUDE_BACKUP_STREAMS
-	else
-	{
-        threadedRunner::scheduleRunnable(new protocol_backup(m_originalRelayInfo, max(m_configData.m_avgBitrate/1000,
-                        m_configData.m_maxBitrate/1000), m_configData.m_mimeType));
-	}
-#endif
-	m_result.done();
-}
-
-void protocol_relay_uvox::state_CloseConnection() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__, LOGNAME, m_originalRelayInfo.m_streamID);
-
-	m_result.done();
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_relay_uvox.h b/Src/Plugins/DSP/sc_serv3/protocol_relay_uvox.h
deleted file mode 100644
index 50350e0e..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_relay_uvox.h
+++ /dev/null
@@ -1,108 +0,0 @@
-#pragma once
-#ifndef protocol_relay_uvox_H_
-#define protocol_relay_uvox_H_
-
-#include "threadedRunner.h"
-#include "streamData.h"
-#include "uvox2Common.h"
-
-class protocol_relay_uvox: public runnable
-{
-private:
-	const bool				m_backup;	// used to change log output depending on relay or backup usage
-	bool					m_denied;			// used to prevent source disconnected messages e.g. for failed passwords
-
-	short unsigned int		m_remainderSize;
-	__uint8 *				m_remainder;
-
-	const uniString::utf8	m_srcAddrName;
-	const uniString::utf8	m_srcAddrNumeric;
-	const uniString::utf8	m_srcURLpart;
-	const uniString::utf8	m_srcLogString;
-
-	///////////// for outgoing data //////////////////////////////
-	__uint8 *				m_outData;
-	const __uint8 *			m_outBuffer; // for outgoing data lines
-	int						m_outBufferSize;
-
-	const config::streamConfig m_originalRelayInfo;
-
-	///////////// incoming data ////////////////////////////////////
-	std::vector<__uint8>	m_inBuffer;
-	////////////////////////////////////////////////////////////
-
-	///////////////////////////////////////////////////////////////////////	
-	//// data structures for assembling cached metadata
-	typedef std::vector<__uint8> metadataFragment_t;
-	struct metadataFragmentEntry_t
-	{
-		metadataFragment_t m_fragment;
-		bool m_isValid;
-
-		void clear() throw() {m_isValid = false; m_fragment.clear(); }
-		metadataFragmentEntry_t() throw():m_isValid(false){}
-	};
-
-	typedef metadataFragmentEntry_t metadataFragmentCollection_t[MAX_METADATA_FRAGMENTS];
-	#pragma pack(push, 1)
-	struct metadataEntry_t
-	{
-		__uint16 m_expectedFragments;
-		__uint16 m_receivedFragments;
-		metadataFragmentCollection_t m_fragments;
-
-		void clear() throw()
-		{
-			for (int x = 0; x < MAX_METADATA_FRAGMENTS; ++x)
-			{
-				m_fragments[x].clear();
-			}
-			m_receivedFragments = 0;
-		}
-		metadataEntry_t() throw() : m_expectedFragments(0), m_receivedFragments(0) { }
-	};
-	#pragma pack(pop)
-
-	typedef __uint32 assemblyTableIndex_t;
-	static assemblyTableIndex_t makeAssemblyTableIndex(__uint16 voxMsgType,__uint16 metadataID) throw() 
-	{
-		return ((((assemblyTableIndex_t)voxMsgType) << 16) | metadataID);
-	}
-
-	typedef std::map<assemblyTableIndex_t,metadataEntry_t> metadataAssemblyTable_t;
-	metadataAssemblyTable_t	m_metadataAssemblyTable;
-	/////////////////////////////////////////////////////
-
-	streamData *m_streamData;
-
-	typedef void (protocol_relay_uvox::*state_t)();
-
-	void state_GetPacket() throw(std::exception);
-	void state_SendBuffer() throw(std::exception);
-	void state_GetStreamData() throw(std::exception);
-	void state_Fail() throw(std::exception);
-	void state_CloseConnection() throw(std::exception);
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	streamData::uvoxConfigData_t m_configData;
-
-	void cleanup();
-
-	template<typename T> void loadAndSendMsg(const T &msg, int type,state_t nextState) throw();
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_relay_uvox"; }
-
-public:
-	protocol_relay_uvox(const socketOps::tSOCKET s, const config::streamConfig &originalRelayInfo,
-						const uniString::utf8 &srcAddrName, const uniString::utf8 &srcAddrNumeric,
-						const int srcPort, const uniString::utf8 &srcURLpart,
-						const httpHeaderMap_t &httpHeaders, const int originalBitrate = 0,
-						const uniString::utf8& originalMimeType = "", const bool backup = false) throw(std::runtime_error);
-	~protocol_relay_uvox() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_shoutcast1Client.cpp b/Src/Plugins/DSP/sc_serv3/protocol_shoutcast1Client.cpp
deleted file mode 100644
index c8621176..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_shoutcast1Client.cpp
+++ /dev/null
@@ -1,417 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_shoutcast1Client.h"
-#include "ripList.h"
-#include "stats.h"
-#include "streamData.h"
-#include "w3cLog.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(...)      do { if (gOptions.shoutcast1ClientDebug()) DLOG(__VA_ARGS__); } while (0)
-#define AD_DEBUG_LOG(...)   do { if (gOptions.adMetricsDebug()) DLOG(__VA_ARGS__); } while (0)
-
-
-protocol_shoutcast1Client::protocol_shoutcast1Client (protocol_HTTPStyle &hs, const streamData::streamID_t streamID,
-        const uniString::utf8 &hostName, const uniString::utf8 &addr, const uniString::utf8 &XFF) throw (std::exception)
-
-    : protocol_shoutcastClient (hs, streamID, hostName, addr, XFF, streamData::SHOUTCAST1)
-{
-	setCallback (&protocol_shoutcastClient::state_AttachToStream);
-}
-
-protocol_shoutcast1Client::~protocol_shoutcast1Client() throw()
-{
-	cleanup("Shoutcast 1", gOptions.shoutcast1ClientDebug());
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void protocol_shoutcast1Client::timeSlice() throw(exception)
-{
-	int ret = doTimeSlice();
-	if (ret == 1)
-	{
-		m_state = &protocol_shoutcastClient::state_Stream;
-		return;
-	}
-	else if (ret == 2)
-	{
-		return;
-	}
-
-	(this->*m_state)();
-}
-
-void protocol_shoutcast1Client::setCallback (protocol_shoutcastClient::state_t callback, protocol_shoutcastClient::state_t next)
-{
-    m_state = callback ? callback : m_nextState;
-    m_nextState = callback ? next : NULL;
-}
-
-
-void protocol_shoutcast1Client::state_Close() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	m_result.done();
-}
-
-// find the appropriate stream and try to attach to it
-void protocol_shoutcast1Client::state_AttachToStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	int read_bitrate = 0, dataType = 0;
-	m_streamData = streamData::accessStream(m_streamID);
-	if (!m_streamData)
-	{
-		m_outBuffer = MSG_ICY_HTTP401.c_str();
-		bandWidth::updateAmount(bandWidth::CLIENT_V1_SENT, (m_outBufferSize = MSG_ICY_HTTP401_LEN));
-
-		if (processReject("Shoutcast 1", bandWidth::CLIENT_V1_SENT, MSG_ICY_HTTP401,
-						  MSG_ICY_HTTP401_LEN, &read_bitrate, &dataType))
-		{
-			goto fall_through;
-		}
-
-		m_state = &protocol_shoutcastClient::state_SendText;
-		m_nextState = &protocol_shoutcastClient::state_Close;
-	}
-	else
-	{
-fall_through:
-		const utf8 movedUrl = gOptions.stream_movedUrl(m_streamID);
-		if (movedUrl.empty())
-		{
-			const int add = processAdd("Shoutcast 1", bandWidth::CLIENT_V1_SENT,
-									   MSG_ICY_HTTP401, MSG_ICY_HTTP401_LEN, movedUrl,
-									   (m_streamData ? m_streamData->streamBackupServer() : ""));
-			if (add != 1)
-			{
-				m_state = &protocol_shoutcastClient::state_SendText;
-				m_nextState = &protocol_shoutcastClient::state_Close;
-			}
-			else
-			{
-				const bool isPodcast = (!m_streamData && (gOptions.getBackupLoop(m_streamID) == 1));
-				m_OKResponse = (m_clientType == streamData::WMP ? MSG_ICY200 : MSG_ICY_HTTP200);
-				if (!isPodcast)
-				{
-					utf8 title = (m_streamData ? m_streamData->streamName() : gOptions.stream_backupTitle(m_streamID));
-					if (!m_streamData)
-					{
-						if (!gOptions.read_stream_backupTitle(m_streamID))
-						{
-							title = gOptions.backupTitle();
-						}
-
-						if (title.empty())
-						{
-							title = gOptions.stream_backupFile(m_streamID);
-							if (!gOptions.read_stream_backupFile(m_streamID))
-							{
-								title = gOptions.backupFile();
-							}
-
-							if (!title.empty())
-							{
-								title = fileUtil::stripSuffix(fileUtil::stripPath(title));
-							}
-						}
-					}
-
-					m_OKResponse += "icy-name:" + title + "\r\n"
-									"icy-genre:";
-					if (m_streamData)
-					{
-						for (int i = 0; i < 5; i++)
-						{
-							if (!m_streamData->m_streamInfo.m_streamGenre[i].empty())
-							{
-								m_OKResponse += (i ? ", " : "") + m_streamData->m_streamInfo.m_streamGenre[i];
-							}
-						}
-					}
-					else
-					{
-						m_OKResponse += "Misc";
-					}
-
-					m_OKResponse += "\r\n"
-									"icy-br:" + tos((m_streamData ? m_streamData->streamBitrate() : read_bitrate)) + "\r\n" +
-									"icy-sr:" + tos((m_streamData ? m_streamData->streamSampleRate() : 0)) + "\r\n" +
-									(m_streamData ? (m_streamData->streamIsVBR() ? "icy-vbr:1\r\n" : "") : "");
-				}
-
-				if (m_streamData)
-				{
-					m_OKResponse += "icy-url:" + m_streamData->streamURL() + "\r\n";
-
-					if (isUserAgentRelay(toLower(m_userAgent)) && (!m_streamData->allowPublicRelay()))
-					{
-						m_OKResponse += "icy-pub:0\r\n";
-					}
-					else
-					{
-						m_OKResponse += "icy-pub:" + tos(m_streamData->streamPublic()) + "\r\n";
-					}
-
-					m_OKResponse += "content-type:" + m_streamData->streamContentType() + "\r\n";
-				}
-				else
-				{
-					utf8 path = getStreamPath(m_streamID);
-					if (!path.empty() && path.find(utf8("/")) == 0)
-					{
-						path = path.substr(1);
-					}
-
-					m_OKResponse += "Content-Type:" + utf8(dataType == AACP_DATA ? "audio/aacp" : "audio/mpeg") + "\r\n";
-
-					if (!isPodcast)
-					{
-						//m_OKResponse += "icy-url:" + utf8("TODO") + "\r\n";
-
-						utf8 pub = toLower(gOptions.stream_publicServer(m_streamID));
-						if (pub.empty())
-						{
-							pub = toLower(gOptions.publicServer());
-						}
-						if (pub == "always")
-						{
-							m_OKResponse += "icy-pub:1\r\n";
-						}
-						else if (pub == "never")
-						{
-							m_OKResponse += "icy-pub:0\r\n";
-						}
-					}
-					else
-					{
-						m_OKResponse += "Content-Disposition:attachment;filename=\"" + path + "\"\r\n"
-										"Content-Length:" + tos(m_backupFile.size()) + "\r\n";
-					}
-				}
-
-				// ignore setting if we've already determined we shouldn't send in-stream metadata
-				// otherwise for some clients where we force disable just in-case, if it explicitly
-				// includes a valid "icy-metadata" header, then see if we should override things...
-				m_OKResponse += "icy-metaint:" + tos(m_metaInterval) + "\r\n";
-
-				if (gOptions.clacks())
-				{
-					m_OKResponse += "X-Clacks-Overhead:GNU Terry Pratchett\r\n";
-				}
-				m_OKResponse += "\r\n";
-
-				DEBUG_LOG(m_clientLogString + "Sending [" + eol() + stripWhitespace(m_OKResponse) + eol() + "]");
-				m_outBuffer = m_OKResponse.c_str();
-				bandWidth::updateAmount(bandWidth::CLIENT_V1_SENT, (m_outBufferSize = (int)m_OKResponse.size()));
-				m_state = &protocol_shoutcastClient::state_SendText;
-				if (!m_headRequest)
-				{
-					m_nextState = &protocol_shoutcastClient::state_InitiateStream;
-				}
-				else
-				{
-					m_removeClientFromStats = false;
-					m_ignoreDisconnect = true;
-					m_nextState = &protocol_shoutcastClient::state_Close;
-				}
-				m_result.write();
-				m_result.timeoutSID(m_streamID);
-				m_result.run();
-
-				if (!m_userAgent.empty() && toLower(m_userAgent).find(utf8("shoutcast-to-dnas message sender")) == 0)
-				{
-					utf8::size_type pos = toLower(m_userAgent).find(utf8("[message:"));
-					if (pos != utf8::npos)
-					{
-						utf8 message = m_userAgent.substr(pos + 9);
-						pos = message.rfind(utf8("]"));
-						if (pos != utf8::npos)
-						{
-							message = message.substr(0, pos);
-						}
-
-						if ((message.find(utf8("!doctype")) != utf8::npos) ||
-							(message.find(utf8("<script")) != utf8::npos) ||
-							(message.find(utf8("<html")) != utf8::npos) ||
-							(message.find(utf8("<body")) != utf8::npos) ||
-							(message.find(utf8("<div")) != utf8::npos) ||
-							(message.find(utf8("http://")) != utf8::npos) ||
-							(message.find(utf8("https://")) != utf8::npos))
-						{
-							WLOG("[MESSAGE sid=" + tos(m_streamID) + "] Invalid message received.");
-						}
-						else
-						{
-							WLOG("[MESSAGE sid=" + tos(m_streamID) + "] " + ((message == "<clear>") ? "Message cleared." : message));
-							if (m_streamData)
-							{
-								m_streamData->updateStreamMessage(m_streamID, message);
-							}
-						}
-						m_ignoreDisconnect = true;
-					}
-				}
-				else
-				{
-					// setGroup(500); // for testing
-					// when the client is added, we get back the unique id of the connection
-					// but we now check for being > 0 as we need to filter out some of the
-					// YP connections from being counted as valid clients for stats, etc
-					reportNewListener("Shoutcast 1");
-				}
-			}
-		}
-		else
-		{
-			// if we get to here then we attempt to redirect the clients to the moved url
-			// which is useful if the stream has moved hosting or it has been deprecated.
-			streamMovedOrRejected("Shoutcast 1", bandWidth::CLIENT_V1_SENT, movedUrl, 2);
-			m_state = &protocol_shoutcastClient::state_SendText;
-			m_nextState = &protocol_shoutcastClient::state_Close;
-		}
-	}
-}
-
-void protocol_shoutcast1Client::state_SendIntro() throw(exception)
-{
-	state_SendIntroFile();
-	if (m_introFile.empty())
-	{
-		acquireIntroFile();
-		if (m_introFile.empty())
-		{
-			m_state = &protocol_shoutcastClient::state_Stream;
-		}
-		else
-		{
-			m_state = &protocol_shoutcastClient::state_SendIntroFile;
-		}
-	}
-}
-
-void protocol_shoutcast1Client::state_InitiateStream() throw(exception)
-{
-	resetReadPtr();
-
-	// if it's a SHOUTcast Directory test connection then we send just the title (which will
-	// be a default string if nothing is available) which will still allow the connection to
-	// work and validate the stream exists whilst only sending the minimum of data nededed.
-	if (!m_userAgent.empty() && (toLower(m_userAgent) == utf8("shoutcast directory tester")))
-	{
-		// TODO check if artwork needs to also be indicated
-		const utf8 metadata = fixICYMetadata((m_streamData ? m_streamData->getSc1Metadata(m_readPtr).m_songTitle : ""));
-		sendICYMetadata((!metadata.empty() ? metadata : "StreamTitle='';"));
-		m_nextState = &protocol_shoutcastClient::state_Close;
-		m_ignoreDisconnect = true;
-	}
-	else
-	{
-		if (!m_streamData || m_introFile.empty())
-		{
-			// send intro file if we have it
-			acquireIntroFile();
-			m_state = (m_introFile.empty() ? &protocol_shoutcastClient::state_Stream : &protocol_shoutcastClient::state_SendIntroFile);
-		}
-		else
-		{
-			m_state = &protocol_shoutcastClient::state_SendIntro;
-		}
-
-		setW3CState();
-	}
-
-	m_result.run();
-}
-
-// construct the necessary metadata information and load into outbound buffers.
-void protocol_shoutcast1Client::sendICYMetadata(const utf8 &md) throw()
-{
-	m_ICYMetadata.clear();
-	m_ICYMetadata.push_back(1); // placeholder
-	if (md != m_lastSentMetadata) // don't sent duplicates
-	{
-		m_ICYMetadata.insert(m_ICYMetadata.end(),md.begin(),md.end());
-		if (!m_lastSentMetadata.empty())
-		{
-			logW3C();
-		}
-		m_lastSentMetadata = md;
-	}
-
-	unsigned int dlen = (unsigned int)m_ICYMetadata.size();
-	if (dlen == 1)
-	{
-		dlen = 0;
-	}
-	unsigned int l1 = ((dlen + 15) & ~15);
-	m_ICYMetadata[0] = l1 / 16;
-	unsigned int send_len = l1 + 1;
-	m_ICYMetadata.insert(m_ICYMetadata.end(), send_len - m_ICYMetadata.size(), 0);
-	//assert(m_ICYMetadata.size() == (size_t)((m_ICYMetadata[0] * 16) + 1));
-	m_metaIntervalCounter = 0;
-
-	m_outBuffer = &m_ICYMetadata[0];
-	bandWidth::updateAmount(bandWidth::CLIENT_V1_SENT, (m_outBufferSize = (int)m_ICYMetadata.size()));
-	m_nextState = m_state;
-	m_state = &protocol_shoutcastClient::state_SendText;
-	m_result.run();
-}
-
-
-int protocol_shoutcast1Client::doSend(const bool debug, const time_t cur_time, const int autoDumpTime, int adjust) throw(std::runtime_error)
-{
-	// we are going to do a forced short-send if we
-	// are now needing to be trying to send metadata
-	int size = (int)m_output.size();
-	int rval = 0;
-
-	if ((m_metaIntervalCounter + size) > m_metaInterval)
-	{
-		adjust = (size - ((m_metaIntervalCounter + size) - m_metaInterval));
-		if (adjust)
-		{
-			rval = protocol_shoutcastClient::doSend(debug, cur_time, autoDumpTime, adjust);
-			// DLOG ("Adjusted send ret " + tos(rval) + " for per-meta " + tos(adjust));
-		}
-
-		if (rval == adjust)
-		{
-			const utf8 metadata = (!m_streamData ? "StreamTitle='';" :
-					fixICYMetadata((m_streamData ?
-							m_streamData->getSc1Metadata(m_readPtr).m_songTitle : "")));
-
-			sendICYMetadata(metadata);
-			return rval;
-		}
-		size = adjust;
-	}
-	else
-		rval = protocol_shoutcastClient::doSend(debug, cur_time, autoDumpTime);
-	m_metaIntervalCounter += rval;
-	if (rval < size)
-		m_result.schedule(120);
-
-	return rval;
-}
-
-
-void protocol_shoutcast1Client::return_403(void)
-{
-	protocol_shoutcastClient::return_403();
-	setCallback (&protocol_shoutcastClient::state_SendText, &protocol_shoutcastClient::state_Close);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_shoutcast1Client.h b/Src/Plugins/DSP/sc_serv3/protocol_shoutcast1Client.h
deleted file mode 100644
index 970acc7e..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_shoutcast1Client.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-#ifndef protocol_shoutcast1Client_H_
-#define protocol_shoutcast1Client_H_
-
-#include "protocol_shoutcastClient.h"
-#include <vector>
-
-class streamData;
-
-class protocol_shoutcast1Client: public protocol_shoutcastClient
-{
-private:
-
-	typedef void (protocol_shoutcast1Client::*state_t)();
-	state_t m_state;
-	state_t m_nextState;
-
-	std::vector<__uint8>	m_ICYMetadata; // metadata buffer
-
-	void state_AttachToStream() throw(std::exception);
-	void state_Close() throw(std::exception);
-	void state_InitiateStream() throw(std::exception);
-	void state_SendIntro() throw(std::exception);
-
-	void sendICYMetadata(const uniString::utf8 &md) throw();
-
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_shoutcast1Client"; }
-
-public:
-    protocol_shoutcast1Client (protocol_HTTPStyle &hs, const streamData::streamID_t streamID,
-            const uniString::utf8 &hostName, const uniString::utf8 &addr, const uniString::utf8 &XFF) throw(std::exception);
-
-	virtual ~protocol_shoutcast1Client() throw();
-
-	virtual void setCallback (protocol_shoutcastClient::state_t callback = NULL, protocol_shoutcastClient::state_t next = NULL);
-	virtual int doSend(const bool debug, const time_t cur_time, const int autoDumpTime, int adjust = 0) throw(std::runtime_error);
-
-	void return_403(void);
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_shoutcast2Client.cpp b/Src/Plugins/DSP/sc_serv3/protocol_shoutcast2Client.cpp
deleted file mode 100644
index 745f46c9..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_shoutcast2Client.cpp
+++ /dev/null
@@ -1,568 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "protocol_shoutcast2Client.h"
-#include "ripList.h"
-#include "stats.h"
-#include "streamData.h"
-#include "w3cLog.h"
-#include "metadata.h"
-#include "uvox2Common.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME             "DST"
-#define DEBUG_LOG(...)      do { if (gOptions.shoutcast2ClientDebug()) DLOG(__VA_ARGS__); } while(0)
-#define AD_DEBUG_LOG(...)   do { if (gOptions.adMetricsDebug()) DLOG(__VA_ARGS__); } while(0)
-
-protocol_shoutcast2Client::protocol_shoutcast2Client (protocol_HTTPStyle &hs, const streamData::streamID_t streamID,
-        const uniString::utf8 &hostName, const uniString::utf8 &addr,const uniString::utf8 &XFF, const bool cdnSlave)
-
-    : protocol_shoutcastClient (hs, streamID, hostName, addr, XFF, streamData::SHOUTCAST2), m_cdnSlave(cdnSlave)
-{
-    DEBUG_LOG(m_clientLogString + __FUNCTION__, LOGNAME, streamID);
-    m_state = &protocol_shoutcast2Client::state_AttachToStream;
-    m_nextState = NULL;
-}
-
-protocol_shoutcast2Client::~protocol_shoutcast2Client() throw()
-{
-	cleanup("Shoutcast 2", gOptions.shoutcast2ClientDebug(), true);
-}
-
-///////////////////////////////////// W3C Logging //////////////////////////////////////////////
-
-// create W3C entry. Entries describe the duration a client has listened to a specific
-//  title. the entry is generated on a title change, or when the client disconnects
-void protocol_shoutcast2Client::logW3C() throw()
-{
-	if (gOptions.w3cEnable())
-	{
-		vector<utf8::value_type> md;
-		if (!m_lastMetadata.empty())
-		{
-			// loop through packets and reassemble. Since we put this stuff in there, we don't need to do integrity checks
-			size_t total_data_size = m_lastMetadata.size();
-			for (size_t x = 0; x < total_data_size;)
-			{
-				if ((UV2X_OVERHEAD + UV2X_META_HDR_SIZE) > (total_data_size - x))
-				{
-					break; // out of data
-				}
-
-				const uv2xHdr *voxHdr = (const uv2xHdr*)(&(m_lastMetadata[x]));
-				const __uint8 *contents = (const __uint8 *)((&(m_lastMetadata[x])) + UV2X_HDR_SIZE);
-				const __uint8* metadataContents = contents + UV2X_META_HDR_SIZE;
-				const size_t metadataContentsSize = ntohs(voxHdr->msgLen) - UV2X_META_HDR_SIZE;
-
-				if ((UV2X_OVERHEAD + UV2X_META_HDR_SIZE + metadataContentsSize) > (total_data_size - x))
-				{
-					break; // out of data
-				}
-
-				md.insert(md.end(), metadataContents,metadataContents + metadataContentsSize);
-				x += UV2X_OVERHEAD + UV2X_META_HDR_SIZE + metadataContentsSize;
-			}
-		}
-
-		utf8 md_s(md.begin(), md.end());
-
-		// do a sanity check when trying to form the metadata if a uvox 2 connection
-		// is attempted from an older Winamp client e.g. 5.54 - means a connection
-		// can be made from the client without it aborting if there's no metadata.
-		utf8 title;
-		if (!md_s.empty())
-		{
-			title = metadata::get_song_title_from_3902(md_s);
-		}
-
-		doLogW3C(title);
-	}
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void protocol_shoutcast2Client::timeSlice() throw(exception)
-{
-	int ret = doTimeSlice(true);
-	if (ret == 1)
-	{
-		m_state = &protocol_shoutcastClient::state_Stream;
-		return;
-	}
-	else if (ret == 2)
-	{
-		return;
-	}
-
-	(this->*m_state)();
-}
-
-
-void protocol_shoutcast2Client::setCallback (protocol_shoutcastClient::state_t callback, protocol_shoutcastClient::state_t next)
-{
-    m_state = callback ? callback : m_nextState;
-    m_nextState = callback ? next : NULL;
-}
-
-
-void protocol_shoutcast2Client::state_Close() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	m_result.done();
-}
-
-void protocol_shoutcast2Client::state_SendText() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-
-	if (sendText())
-	{
-		m_state = m_nextState;
-	}
-}
-
-// find the appropriate stream and try to attach to it
-void protocol_shoutcast2Client::state_AttachToStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	int read_bitrate = 0;
-	m_streamData = streamData::accessStream(m_streamID);
-	if (!m_streamData)
-	{
-		if (processReject("Shoutcast 2", bandWidth::CLIENT_V2_SENT, MSG_HTTP404,
-						  MSG_HTTP404_LEN, &read_bitrate, 0, true))
-		{
-			goto fall_through;
-		}
-
-		m_state = &protocol_shoutcast2Client::state_SendText;
-		m_nextState = &protocol_shoutcast2Client::state_Close;
-	}
-	else
-	{
-fall_through:
-		const utf8 movedUrl = gOptions.stream_movedUrl(m_streamID);
-		if (movedUrl.empty())
-		{
-			// we use this to control the cdn mode so we'll only provide the
-			// headers needed if it's all enabled and the client asks for it
-			string cdn;
-			if (isCDNMaster(m_streamID) && m_cdnSlave)
-			{
-				DEBUG_LOG(m_clientLogString + "CDN slave request received by master", LOGNAME, m_streamID);
-				utf8 authhash = (m_streamData ? m_streamData->streamAuthhash() : "");
-				if (yp2::isValidAuthhash(authhash))
-				{
-					utf8 key = XTEA_encipher(authhash.c_str(), authhash.size(), bob().c_str(), bob().size());
-					cdn = "cdn-master:1\r\n"
-						  "cdn-token:" + key.hideAsString() + "\r\n";
-					m_clientType = ((streamData::source_t)(m_clientType | streamData::SC_CDN_SLAVE));
-				}
-				else
-				{
-					DEBUG_LOG(m_clientLogString + "CDN slave request not sent - invalid authhash provided", LOGNAME, m_streamID);
-				}
-			}
-
-			const int add = processAdd("FLV", bandWidth::CLIENT_V2_SENT,
-									   MSG_HTTP404, MSG_HTTP404_LEN, movedUrl,
-									   (m_streamData ? m_streamData->streamBackupServer() : ""));
-			if (add != 1)
-			{
-				m_state = &protocol_shoutcast2Client::state_SendText;
-				m_nextState = &protocol_shoutcast2Client::state_Close;
-			}
-			else
-			{
-				utf8 pub = "0", genre = "";
-				const bool isPodcast = (!m_streamData && (gOptions.getBackupLoop(m_streamID) == 1));
-				if (!isPodcast)
-				{
-					pub = (m_streamData ? tos(m_streamData->streamPublic()) : "1");
-					if (m_streamData)
-					{
-						if (isUserAgentRelay(toLower(m_userAgent)) && (!m_streamData->allowPublicRelay()))
-						{
-							pub = "0";
-						}
-
-						for (int i = 0; i < 5; i++)
-						{
-							if (!m_streamData->m_streamInfo.m_streamGenre[i].empty())
-							{
-								genre += (i ? ", " : "") + m_streamData->m_streamInfo.m_streamGenre[i];
-							}
-						}
-					}
-					// if running from a backup file then no need to set the states
-					else
-					{
-						pub = toLower(gOptions.stream_publicServer(m_streamID));
-						if (pub.empty())
-						{
-							pub = toLower(gOptions.publicServer());
-						}
-						if (pub == "always")
-						{
-							pub = "1";
-						}
-						else if (pub == "never")
-						{
-							pub = "0";
-						}
-					}
-				}
-				else
-				{
-					// TODO how do we handle podcasts for 2.x
-					//		as we should somehow swap to 1.x
-				}
-
-				utf8 title = (m_streamData ? m_streamData->streamName() : gOptions.stream_backupTitle(m_streamID));
-				if (!m_streamData)
-				{
-					if (!gOptions.read_stream_backupTitle(m_streamID))
-					{
-						title = gOptions.backupTitle();
-					}
-
-					if (title.empty())
-					{
-						title = gOptions.stream_backupFile(m_streamID);
-						if (!gOptions.read_stream_backupFile(m_streamID))
-						{
-							title = gOptions.backupFile();
-						}
-
-						if (!title.empty())
-						{
-							title = fileUtil::stripSuffix(fileUtil::stripPath(title));
-						}
-					}
-				}
-
-				m_OKResponse = MSG_UVOX_HTTP200 +
-							   "icy-pub:" + pub + "\r\n" + cdn +
-							   "Ultravox-SID:" + tos(m_streamID) + "\r\n" +
-							   "Ultravox-Bitrate:" + tos(m_streamData ? m_streamData->streamAvgBitrate() : (read_bitrate * 1000)) + "\r\n" +
-							   "Ultravox-Samplerate:" + tos(m_streamData ? m_streamData->streamSampleRate() : 0) + "\r\n" +
-							   "Ultravox-Title:" + title + "\r\n" +
-							   "Ultravox-Genre:" + genre + "\r\n" +
-							   "Ultravox-URL:" + (m_streamData ? m_streamData->streamURL() : (utf8)""/*"TODO"*/) + "\r\n" +
-							   "Ultravox-Max-Msg:" + tos(MAX_PAYLOAD_SIZE) + "\r\n" +
-							   "Ultravox-Class-Type:" + tohex(m_streamData ? m_streamData->streamUvoxDataType() : MP3_DATA) + "\r\n" +
-							   (m_streamData && m_streamData->streamIsVBR() ? "Ultravox-VBR:1\r\n" : "") +
-							   (gOptions.clacks() ? "X-Clacks-Overhead:GNU Terry Pratchett\r\n\r\n" : "\r\n");
-
-				DEBUG_LOG(m_clientLogString + "Sending [" + eol() + stripWhitespace(m_OKResponse) + eol() + "]");
-				m_outBuffer = m_OKResponse.c_str();
-				bandWidth::updateAmount(bandWidth::CLIENT_V2_SENT, (m_outBufferSize = (int)m_OKResponse.size()));
-				m_state = &protocol_shoutcast2Client::state_SendText;
-				if (!m_headRequest)
-				{
-					m_nextState = &protocol_shoutcast2Client::state_InitiateStream;
-				}
-				else
-				{
-					m_removeClientFromStats = false;
-					m_ignoreDisconnect = true;
-					m_nextState = &protocol_shoutcast2Client::state_Close;
-				}
-				m_result.write();
-				m_result.timeoutSID(m_streamID);
-				m_result.run();
-
-				// when the client is added, we get back the unique id of the connection
-				// but we now check for being > 0 as we need to filter out some of the
-				// YP connections from being counted as valid clients for stats, etc
-				reportNewListener("Shoutcast 2");
-			}
-		}
-		else
-		{
-			// if we get to here then we attempt to redirect the clients to the moved url
-			// which is useful if the stream has moved hosting or it has been deprecated.
-			streamMovedOrRejected("Shoutcast 2", bandWidth::CLIENT_V2_SENT, movedUrl, 2);
-			m_state = &protocol_shoutcast2Client::state_SendText;
-			m_nextState = &protocol_shoutcast2Client::state_Close;
-		}
-	}
-}
-
-void protocol_shoutcast2Client::state_SendCachedMetadata() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	if (sendDataBuffer(m_streamID, m_outBuffer, m_outBufferSize, m_clientLogString))
-	{
-		bool playingAlbumArt = false;
-
-		// send intro file if we have it
-		acquireIntroFile(true);
-
-		// see if there's any albumart and attempt to send stream and then playing or whatever is present
-		m_cachedMetadata = (m_streamData ? m_streamData->getSc21StreamAlbumArt(0xFFFFFFFF) : streamData::uvoxMetadata_t());
-		if (m_cachedMetadata.empty())
-		{
-			m_cachedMetadata = m_streamData->getSc21PlayingAlbumArt(m_readPtr);
-			playingAlbumArt = true;
-		}
-
-		if (m_cachedMetadata.empty())
-		{
-			// send intro file if we have it
-			acquireIntroFile(true);
-			m_state = (m_introFile.empty() ? &protocol_shoutcastClient::state_Stream : &protocol_shoutcastClient::state_SendIntroFile);
-		}
-		else
-		{
-			bandWidth::updateAmount(bandWidth::CLIENT_V2_SENT, (m_outBufferSize = (int)m_cachedMetadata.size()));
-			m_outBuffer = (uniString::utf8::value_type*)&(m_cachedMetadata[0]); // slam cast so we can reuse variable
-			m_state = (playingAlbumArt == false ? &protocol_shoutcast2Client::state_SendCachedStreamAlbumArt : &protocol_shoutcast2Client::state_SendCachedPlayingAlbumArt);
-		}
-	}
-}
-
-void protocol_shoutcast2Client::state_InitiateStream() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__);
-
-	resetReadPtr(true);
-
-	m_cachedMetadata = (m_streamData ? m_streamData->getSc21Metadata(m_readPtr) : streamData::uvoxMetadata_t());
-
-	if (m_cachedMetadata.empty())
-	{
-		// send intro file if we have it
-		acquireIntroFile(true);
-		m_state = (m_introFile.empty() ? &protocol_shoutcastClient::state_Stream : &protocol_shoutcastClient::state_SendIntro);
-	}
-	else
-	{
-		bandWidth::updateAmount(bandWidth::CLIENT_V2_SENT, (m_outBufferSize = (int)m_cachedMetadata.size()));
-		m_outBuffer = (uniString::utf8::value_type*)&(m_cachedMetadata[0]); // slam cast so we can reuse variable
-		m_state = &protocol_shoutcast2Client::state_SendCachedMetadata;
-	}
-
-	m_result.run();
-}
-
-void protocol_shoutcast2Client::state_SendCachedStreamAlbumArt() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__ + "sending stream albumart: " + tos(m_outBufferSize) +
-			  " bytes, mime type: " + tos(m_streamData->streamAlbumArtMime()));
-
-	if (sendDataBuffer(m_streamID, m_outBuffer, m_outBufferSize, m_clientLogString))
-	{
-		// if all went ok then look to send the playing album art if it is present otherwise do intro / stream data
-		m_cachedMetadata = m_streamData->getSc21PlayingAlbumArt(m_readPtr);
-
-		if (m_cachedMetadata.empty())
-		{
-			// send intro file if we have it
-			acquireIntroFile(true);
-			m_state = (m_introFile.empty() ? &protocol_shoutcastClient::state_Stream : &protocol_shoutcastClient::state_SendIntroFile);
-		}
-		else
-		{
-			bandWidth::updateAmount(bandWidth::CLIENT_V2_SENT, (m_outBufferSize = (int)m_cachedMetadata.size()));
-			m_outBuffer = (uniString::utf8::value_type*)&(m_cachedMetadata[0]); // slam cast so we can reuse variable
-			m_state = &protocol_shoutcast2Client::state_SendCachedPlayingAlbumArt;
-		}
-	}
-}
-
-void protocol_shoutcast2Client::state_SendCachedPlayingAlbumArt() throw(exception)
-{
-	DEBUG_LOG(m_clientLogString + __FUNCTION__ + "sending playing albumart: " + tos(m_outBufferSize) +
-			  " bytes, mime type: " + tos(m_streamData->streamPlayingAlbumArtMime()));
-
-	if (sendDataBuffer(m_streamID, m_outBuffer, m_outBufferSize, m_clientLogString))
-	{
-		// send intro file if we have it
-		acquireIntroFile(true);
-		m_state = (m_introFile.empty() ? &protocol_shoutcastClient::state_Stream : &protocol_shoutcastClient::state_SendIntroFile);
-	}
-}
-
-
-void protocol_shoutcast2Client::return_403(void)
-{
-	protocol_shoutcastClient::return_403();
-	m_state = &protocol_shoutcast2Client::state_SendText;
-	m_nextState = &protocol_shoutcast2Client::state_Close;
-}
-
-
-const int protocol_shoutcast2Client::doFrameSync(const int type, const bool debug, const int len,
-                                                    const int offset, const std::vector<__uint8>& inbuf,
-                                                    const time_t /*cur_time */, const int, const unsigned int,
-                                                    int &frames, bool &advert,
-                                                    bool fill_remainder) throw()
-{
-    bool mp3;
-    int end = 0;
-
-    if (streamData::isAllowedType(type, mp3))
-    {
-        int last = min (len, (int)(inbuf.size() - offset));
-        const unsigned char *buf;
-
-        if (m_remainder.empty () || offset < last)
-        {
-            buf = &inbuf [offset];
-            // DLOG ("last " + tos(last) + ", off " + tos(offset));
-        }
-        else
-        {
-            const std::vector<__uint8>::const_iterator pos = inbuf.begin();
-            size_t cc = min (inbuf.size(), (size_t)len);
-
-            cc = min (cc, (size_t)4096);
-            if (cc > m_remainder.size())
-                cc -= m_remainder.size();
-            if (cc < 1 || cc > inbuf.size())
-            {
-                ILOG ("sync2, cc is " + tos (cc));
-                abort();
-            }
-            m_remainder.insert (m_remainder.end(), inbuf.begin(), inbuf.begin() + cc);
-
-            buf = &m_remainder [0];
-            last = min (len, (int)m_remainder.size());
-            fill_remainder = false;
-            // DLOG ("merged remainder, now " + tos (last) + ", added " + tos(cc));
-        }
-        if (last > 8)
-        {
-            int last_size = 0;
-            //double fps_limit = m_fps*2;
-
-            fill_remainder = false;
-
-            for (int i = 0; (i < last-8) && !iskilled();)
-            {
-                const uv2xHdr *voxHdr = (const uv2xHdr*)(&(buf[i]));
-                const int msgLen = ntohs(voxHdr->msgLen);
-                const int found = ((voxHdr->sync == UVOX2_SYNC_BYTE) &&
-                        (msgLen > UV2X_OVERHEAD) &&
-                        (msgLen <= MAX_PAYLOAD_SIZE) ? (msgLen + UV2X_OVERHEAD) : 0);
-
-                // need to find frames and that the input is the correct format!
-                //
-                // is a bit of a pain for AAC though as we've already done the
-                // rough bitrate match when the advert / intro / backup was read
-                // we'll just pass things through as though the bitrate is ok...
-                if ((found > 0)) // && (found <= len))
-                {
-                    if (!frames)
-                    {
-                        end = i;
-                        protocol_shoutcastClient::createFrameRate(mp3, (m_streamData ? m_streamData->streamSampleRate() : 0));
-                    }
-
-                    i += (last_size = found);
-                    // only count valid full-size frames
-                    if (i <= last)
-                    {
-                        //const std::vector<__uint8>::const_iterator pos = inbuf.begin();
-
-                        m_output.insert(m_output.end(), buf+end, buf+end+last_size);
-                        end += last_size;
-
-                        // we only want to count audio frames and not metadata
-                        const __uint16 voxMsgType = ntohs(voxHdr->msgType);
-                        if ((voxMsgType >= 0x7000) && (voxMsgType < 0x9000))
-                        {
-                            ++frames;
-                        }
-                        // DLOG ("frame " + tos(m_frameCount+frames) + " (" + tos(found) + ") last " + tos(last) + " end " + tos(end) + " i " + tos(i));
-                    }
-                    else
-                    {
-                        // DLOG ("EOB, " + tos (i) + ", " + tos(offset) + ", " + tos(inbuf.size()));
-                        if (m_remainder.empty())
-                        {
-                            if (i+offset > inbuf.size())
-                                fill_remainder = true;
-                        }
-                        else if (end + offset < inbuf.size())
-                            fill_remainder = true;
-                        break;
-                    }
-                }
-                else
-                {
-                    // we now look for the "SCAdvert" marker
-                    // for detecting if we've got an advert.
-                    if (i < (len - 8) && ((buf[i]) == 'S') && ((buf[i+1]) == 'C'))
-                    {
-                        if (!memcmp(&buf[i], "SCAdvert", 8))
-                        {
-                            if (frames == 0)
-                            {
-                                // DLOG ("Found SCAdvert");
-                                advert = true;
-                                end += 8;
-                                m_remainder.clear();
-                            }
-                            break;
-                        }
-                    }
-                    else
-                    {
-                        // if we found something but there is not enough
-                        // data in the read buffer then we'll abort asap
-                        if ((found > 0) && (found > len))
-                        {
-                            break;
-                        }
-
-                        if (m_frameCount && debug)
-                        {
-                            DLOG(m_clientLogString + "Bad frame found at pos: " +
-                                    tos(i) + " [" + tos(found) + "]", LOGNAME, m_streamID);
-                        }
-                    }
-                    // otherwise we just need to move on and keep
-                    // looking for what is a valid starting frame
-                    ++i;
-                }
-            }
-        }
-        else
-            fill_remainder = true;
-        if (m_remainder.empty() == false && frames)
-            m_remainder.clear();
-        if (fill_remainder)
-        {
-            const int remainder = (last - end);
-            if (remainder > 0)
-                m_remainder.insert(m_remainder.end(), buf + end, buf + (end + remainder));
-        }
-    }
-    return (len - end);
-}
-
-
-void protocol_shoutcast2Client::setIntro (vector<__uint8> &buf, int uvoxDataType)
-{
-    m_introFile.clear();
-    if (buf.empty())
-        return;
-    streamData::convertRawToUvox (m_introFile, buf, uvoxDataType, 0, 0);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_shoutcast2Client.h b/Src/Plugins/DSP/sc_serv3/protocol_shoutcast2Client.h
deleted file mode 100644
index ec89e127..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_shoutcast2Client.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#pragma once
-#ifndef protocol_shoutcast2Client_H_
-#define protocol_shoutcast2Client_H_
-
-#include "protocol_shoutcastClient.h"
-#include <vector>
-
-class streamData;
-
-class protocol_shoutcast2Client: public protocol_shoutcastClient
-{
-private:
-	typedef void (protocol_shoutcast2Client::*state_t)();
-	state_t	m_state;
-	state_t m_nextState;
-
-	/// w3c logging
-	streamData::uvoxMetadata_t		m_lastMetadata; // used for w3C tracking
-	/////////////////////
-
-	streamData::uvoxMetadata_t	m_cachedMetadata; // cached metadata that must be sent at connect time
-
-	const bool	m_cdnSlave;		// based on the connection header
-
-	void state_AttachToStream() throw(std::exception);
-	void state_Close() throw(std::exception);
-	void state_SendText() throw(std::exception);
-	void state_InitiateStream() throw(std::exception);
-	void state_SendCachedMetadata() throw(std::exception);
-	void state_SendCachedStreamAlbumArt() throw(std::exception);
-	void state_SendCachedPlayingAlbumArt() throw(std::exception);
-
-	void logW3C() throw();
-	const int doFrameSync(const int type, const bool debug, const int len,
-			const int offset, const std::vector<__uint8>& buf,
-			const time_t cur_time, const int bitrate,
-			const unsigned int samplerate, int &frames,
-			bool &advert, const bool fill_remainder = false) throw();
-
-	virtual void timeSlice() throw(std::exception);
-	virtual void setCallback (protocol_shoutcastClient::state_t callback, protocol_shoutcastClient::state_t next);
-	virtual uniString::utf8 name() const throw() { return "protocol_shoutcast2Client"; }
-
-public:
-    protocol_shoutcast2Client (protocol_HTTPStyle &hs, const streamData::streamID_t streamID,const uniString::utf8 &hostName, const uniString::utf8 &addr,const uniString::utf8 &XFF, const bool cdnSlave);
-	virtual ~protocol_shoutcast2Client() throw();
-
-    virtual void setIntro(vector<__uint8> &v, int uvoxDataType);
-
-	void return_403(void);
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_shoutcastClient.cpp b/Src/Plugins/DSP/sc_serv3/protocol_shoutcastClient.cpp
deleted file mode 100644
index 97b0427c..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_shoutcastClient.cpp
+++ /dev/null
@@ -1,1917 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#ifndef MSG_DONTWAIT
-#define MSG_DONTWAIT 0
-#endif
-#endif
-#include <stdio.h>
-#include "protocol_shoutcastClient.h"
-#include "ripList.h"
-#include "stats.h"
-#include "streamData.h"
-#include "w3cLog.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "metrics.h"
-#include "auth.h"
-#include "yp2.h"
-#include "FLV.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME             "DST"
-#define AD_DEBUG_LOG(...)   do { if (gOptions.adMetricsDebug()) DLOG(__VA_ARGS__); } while(0)
-
-protocol_shoutcastClient::protocol_shoutcastClient (protocol_HTTPStyle &hs, const streamData::streamID_t streamID,
-        const uniString::utf8 &hostName, const uniString::utf8 &clientAddr, const uniString::utf8 &XFF, const streamData::source_t clientType)
-
-    : runnable (hs),  m_streamID(streamID <= 0 || streamID > INT_MAX ? DEFAULT_CLIENT_STREAM_ID : streamID),
-    m_unique(stats::getNewClientId()),  m_adAccess(clientType == streamData::SHOUTCAST2)
-{
-    m_newListener = m_timerStart = (time_t)0;
-    m_timerFrames = m_frameLimit = m_frameCount = 0;
-    m_fps = 0.0;
-    m_bytesSentForCurrentTitle = m_totalBytesSent = 0;
-    m_metaIntervalCounter = m_backupLoopTries = m_outBufferSize = 0;
-    m_backupFileOffset = m_introFileOffset = 0;
-    m_readPtr = 0;
-    m_outBuffer = NULL;
-    m_streamData = NULL;
-    m_kickNextRound = m_ignoreDisconnect = false;
-    m_lagOffset = 0;
-    setGroup (m_unique);
-
-    m_headRequest = (hs.m_httpRequestInfo.m_request == protocol_HTTPStyle::HTTP_HEAD);
-    m_clientType = streamData::getClientType (clientType, stringUtil::toLower (hs.m_userAgent)); // double toLower work ??
-    m_removeClientFromStats = (isUserAgentOfficial (stringUtil::toLower (hs.m_userAgent)) == false);
-
-    if (gOptions.useXFF() && !XFF.empty() && metrics::metrics_verifyDestIP (gOptions, true, XFF).empty() == false)
-        m_clientAddr = XFF;
-    else
-        m_clientAddr = clientAddr;
-    m_clientLogString = dstAddrLogString (hostName, hs.m_clientPort, XFF, streamID);
-
-    m_clientHostName = hostName;
-
-    m_metaInterval = gOptions.getMetaInterval (streamID);
-    m_userAgent = hs.m_userAgent;
-    m_referer = hs.m_referer;
-    m_XFF = XFF;
-    m_startTime = m_lastTitleTime = ::time(NULL);
-}
-
-
-// setup tracking variables for W3C log
-void protocol_shoutcastClient::setW3CState() throw()
-{
-	m_lastTitleTime = ::time(NULL);
-	m_bytesSentForCurrentTitle = 0;
-}
-
-int protocol_shoutcastClient::detectAutoDumpTimeout (time_t &cur_time, const size_t streamID, const uniString::utf8 &msg) throw(runtime_error)
-{
-    const int autoDumpTime = gOptions.getAutoDumpTime(streamID);
-    cur_time = ::time(NULL);
-    if ((autoDumpTime > 0) && ((cur_time - m_lastActivityTime) >= autoDumpTime))
-    {
-        if (m_ignoreDisconnect == false)
-            DLOG (msg, LOGNAME, streamID);
-        throwEx<runtime_error>("");
-    }
-    return autoDumpTime;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void protocol_shoutcastClient::acquireIntroFile(const bool sc2) throw()
-{
-	// if we've already loaded something then we won't keep
-	// trying to re-acquire it for speed and consistency
-	// whilst this specific client is connected at the time
-	if (m_streamData && m_introFile.empty())
-	{
-		if (!sc2)
-		{
-			m_streamData->getIntroFile().getSc1Data(m_introFile);
-		}
-		else
-		{
-			m_streamData->getIntroFile().getSc2Data(m_introFile);
-		}
-	}
-
-	m_introFileOffset = 0;
-}
-
-int protocol_shoutcastClient::acquireBackupFile(int *dataType, const bool sc2) throw()
-{
-	int read_bitrate = 0;
-	// if we've already loaded something then we won't keep
-	// trying to re-acquire it for speed and consistency
-	// whilst this specific client is connected at the time
-	if (m_backupFile.empty())
-	{
-		if (m_streamData)
-		{
-			if (!sc2)
-			{
-				m_streamData->getBackupFile().getSc1Data(m_backupFile);
-			}
-			else
-			{
-				m_streamData->getBackupFile().getSc2Data(m_backupFile);
-			}
-
-			m_streamData->streamSampleRate();
-		}
-		else
-		{
-			// for when there is no stream, we'll manually load the
-			// file and try to do what we can to get it running...
-			utf8 backupFile = gOptions.stream_backupFile(m_streamID);
-			if (!gOptions.read_stream_backupFile(m_streamID))
-			{
-				backupFile = gOptions.backupFile();
-			}
-
-			if (!backupFile.empty())
-			{
-				const int backuploop = gOptions.getBackupLoop(m_streamID);
-				if (!backuploop || (m_backupLoopTries <= backuploop))
-				{
-					int streamBitrate = gOptions.stream_maxBitrate(m_streamID);
-					if (!gOptions.read_stream_maxBitrate(m_streamID) || !streamBitrate)
-					{
-						streamBitrate = gOptions.maxBitrate();
-					}
-					if (streamBitrate)
-					{
-						streamBitrate /= 1000;
-					}
-
-					unsigned int read_samplerate = 0;
-					const int type = ((toLower(backupFile).rfind(utf8(".aac")) == (backupFile.size() - 4)) ? AACP_DATA : MP3_DATA);
-					streamData::specialFileData loadBackupFile((backuploop == 1 ? "podcast" : "backup"));
-					read_bitrate = loadBackupFile.loadFromFile(backupFile, streamBitrate, type, read_samplerate, m_clientLogString);
-					if (!sc2)
-					{
-						loadBackupFile.getSc1Data(m_backupFile);
-					}
-					else
-					{
-						loadBackupFile.getSc2Data(m_backupFile);
-					}
-					if (dataType)
-					{
-						*dataType = type;
-                        createFrameRate ((type==MP3_DATA), loadBackupFile.m_samplerate);
-					}
-				}
-				else if (backuploop && (m_backupLoopTries < backuploop))
-				{
-					m_backupFile.clear();
-				}
-			}
-		}
-	}
-
-	m_backupFileOffset = 0;
-
-	return read_bitrate;
-}
-
-const int protocol_shoutcastClient::doTimeSlice(const bool sc2) throw(exception)
-{
-	int listenerTime = (int)gOptions.stream_listenerTime(m_streamID);
-	if (!gOptions.read_stream_listenerTime(m_streamID))
-	{
-		listenerTime = (int)gOptions.listenerTime();
-	}
-
-	listenerTime *= 60; // convert to seconds
-	const bool timesUp = listenerTime && ((::time(NULL) - m_startTime) > listenerTime);
-	if (m_kickNextRound || timesUp || (m_streamData && m_streamData->isDead() && m_backupFile.empty()))
-	{
-		if (timesUp)
-		{
-			ILOG(m_clientLogString + "Listener time exceeded.", LOGNAME, m_streamID);
-		}
-		else if (m_kickNextRound)
-		{
-			ILOG(m_clientLogString + "Kicked [Agent: `" + m_userAgent + "', UID: " + tos(m_unique) + ", GRID: " + tos(getGroup()) + "]", LOGNAME, m_streamID);
-		}
-		else
-		{
-			const int backuploop = gOptions.getBackupLoop(m_streamID);
-			if (!backuploop || (m_backupLoopTries <= backuploop))
-			{
-				// we're done with the backup file. get more data
-				acquireBackupFile(0, sc2);
-				if (!m_backupFile.empty())
-				{
-					++m_backupLoopTries;
-					m_lastActivityTime = ::time(NULL);
-					return 1;
-				}
-			}
-			else if (backuploop && (m_backupLoopTries < backuploop))
-			{
-				m_backupFileOffset = 0;
-				m_backupFile.clear();
-			}
-		}
-
-		m_result.done();
-		return 2;
-	}
-
-	return 0;
-}
-
-const bool protocol_shoutcastClient::sendText() throw(exception)
-{
-	return sendDataBuffer(m_streamID, m_outBuffer, m_outBufferSize, m_clientLogString);
-}
-
-void protocol_shoutcastClient::resetCommon() throw()
-{
-    if (m_newListener == 0)
-    {
-        time_t now = ::time (NULL);
-        if (m_removeClientFromStats && m_streamData && m_streamData->streamPublic())
-        {
-            if (m_startTime + 3 < now)
-            {
-                metrics::metrics_listener_new(*this);
-                m_streamData->advertGroups.attachGroupQueue (this->m_adAccess);
-                m_newListener = now;
-            }
-        }
-        else
-            m_newListener = now;
-    }
-    if (m_streamData)
-        m_adAccess.changedGroup (m_streamData->advertGroups);
-}
-
-// set read pointer to a nice distance from the write pointer. Return that distance
-const streamData::ringBufferAccess_t protocol_shoutcastClient::resetReadPtr(std::vector<__uint8>& data, const bool sc2) throw()
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DLOG(m_clientLogString + __FUNCTION__);
-#endif
-
-	// we also reset the remainder handling as
-	// by this point, it's unlikely that it's
-	// worth trying to keep up and so we reset
-	m_remainder.clear();
-
-    m_lagOffset = 0;
-	if (m_streamData)
-	{
-		m_readPtr = m_streamData->getClientStartPosition(sc2);
-		streamData::ringBufferAccess_t amt = 0;
-		return m_streamData->getStreamData(amt, m_readPtr, data, 0, sc2);
-	}
-	else
-	{
-		m_readPtr = 0;
-		return 0;
-	}
-}
-
-void protocol_shoutcastClient::resetReadPtr(const bool sc2) throw()
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DLOG(m_clientLogString + __FUNCTION__);
-#endif
-
-	// we also reset the remainder handling as
-	// by this point, it's unlikely that it's
-	// worth trying to keep up and so we reset
-	m_remainder.clear();
-
-	if (m_streamData == NULL)
-	{
-		m_readPtr = 0;
-		return;
-	}
-    m_lagOffset = 0;
-    if (m_adAccess.inAdvertMode ())
-    {
-        const streamData::adTrigger *t = m_adAccess.getCurrentTrigger();
-        streamData::ringBufferAccess_t ptr;
-
-        if (t)
-            ptr = sc2 ? t->m_returnPtrSC2 : t->m_returnPtrSC1;
-        else
-        {
-            ptr = sc2 ? m_streamData->advertGroups.m_returnPtrSC2 : m_streamData->advertGroups.m_returnPtrSC1;
-            if (!ptr)
-                ptr = (sc2 ? m_streamData->m_sc21_packet_starts : m_streamData->m_sc1_packet_starts).back();
-        }
-        streamData::ringBufferAccess_t lag = ((sc2 ? m_streamData->m_sc21_ring_buffer : m_streamData->m_sc1_ring_buffer).m_writePtr - m_readPtr);
-
-        if (lag < (sc2 ? m_streamData->m_sc21_ring_buffer : m_streamData->m_sc1_ring_buffer).m_data.size())
-            m_lagOffset = (sc2 ? m_streamData->m_sc21_ring_buffer : m_streamData->m_sc1_ring_buffer).m_writePtr - m_readPtr;
-        else
-        {
-            ptr = (sc2 ? m_streamData->m_sc21_ring_buffer : m_streamData->m_sc1_ring_buffer).m_writePtr;
-            m_lagOffset = 0;
-        }
-
-        m_readPtr = m_streamData->getClientStartPosition (ptr, sc2);
-        // DLOG ("lag offset is " + tos (m_lagOffset) + " readptr " + tos (m_readPtr));
-    }
-    else if (m_totalBytesSent > 30000)
-    {
-        std::deque<streamData::ringBufferAccess_t> &starts = (sc2 ? m_streamData->m_sc21_packet_starts : m_streamData->m_sc1_packet_starts);
-        if (starts.size())
-            m_readPtr = m_streamData->getClientStartPosition (starts.back(), sc2);
-        else
-            m_readPtr = 0;
-    }
-    else
-        m_readPtr = m_streamData->getClientStartPosition(sc2);
-}
-
-
-void protocol_shoutcastClient::resetReadPtr (streamData::ringBufferAccess_t ptr, bool sc2) throw()
-{
-	m_readPtr = (m_streamData ? m_streamData->getClientStartPosition (ptr, sc2) : 0);
-    m_lagOffset = 0;
-}
-
-
-const __uint64 protocol_shoutcastClient::calculateFrameLimit(const time_t cur_time)
-{
-	// to allow for a burst on joining the stream for listener pre-buffering
-	// and stuff, we're trying to give an ~5sec of data before we rate limit
-	// without such handling then a number of listeners stutter at the start
-	if (gOptions.rateLimit())
-	{
-		time_t conn;
-
-		if (m_timerStart)
-		{
-			conn = (cur_time ? cur_time : ::time(NULL)) - m_timerStart;
-			float fps = conn > 0 ? ((m_timerFrames) / (float)conn) : 0;
-			//DLOG ("ad rate values are " + tos (conn) + " TF " + tos((long)m_timerFrames));
-			if (fps > m_fps)
-			{
-				//DLOG ("rate in calc is " + tos (fps));
-				return 0; // cause a stall
-			}
-		}
-	}
-	// just to make sure something is returned then we'll
-	// take the current number of frames and adjust by the
-	// intended rate. much better than returning zero rate
-	return (__uint64)(m_frameCount + m_fps);
-}
-
-void protocol_shoutcastClient::updateFrameCount(const int frames, const time_t)
-{
-	if (m_timerStart)
-		m_timerFrames += frames;
-	m_frameCount += frames;
-}
-
-const bool protocol_shoutcastClient::calculateDelay(const int autoDumpTime)
-{
-	bool delayed = false;
-	const double diff = ((m_frameCount * 1.0) / (max((time_t)1, (m_lastActivityTime - m_startTime))) - m_fps);
-	if (diff >= 0.0)
-	{
-		// if we're at the limit then we're going to need to sit and spin
-		// which will need to be a bit short of the required frame rate
-		// so that we've got a bit of leeway on scheduling delays, etc
-		// determine things based on the 'next' second when working out
-		// the differential as that's how long we want to wait to run
-		m_result.schedule((int)(m_result.m_currentTime - (__uint64)(m_lastActivityTime * 1000)));
-		delayed = true;
-	}
-
-	m_result.write();
-	if (autoDumpTime != -1)
-	{
-		m_result.timeout(autoDumpTime);
-	}
-	else
-	{
-		m_result.timeoutSID(m_streamID);
-	}
-	return delayed;
-}
-
-
-int protocol_shoutcastClient::doSend(const bool debug, const time_t cur_time,
-        const int autoDumpTime, int adjust) throw(runtime_error)
-{
-	int l = (adjust ? adjust : (int)m_output.size()), rval = -1;
-    if (l == 0) return 0;
-	if (l > 0)
-	{
-		if (!gOptions.forceShortSends())
-		{
-			rval = send ((const char*)&m_output[0], l, 0);
-		}
-		else
-		{
-			static unsigned int v = 0;
-			if (((++v) % 7) == 0)
-			{
-				char ch = 0;
-				rval = ::recv(m_socket, &ch, 1, MSG_DONTWAIT | MSG_PEEK);
-				l = 1;
-			}
-			else
-			{
-				rval = send ((const char*)&m_output[0], l, 0);
-			}
-		}
-	}
-    if (rval > 0)
-    {
-        m_totalBytesSent += rval;
-        if (rval < l)
-            m_result.timeout (0,100);
-        else
-            m_result.timeout (0,10);
-        return rval;
-    }
-
-	if (rval == 0)
-	{
-        if (!m_ignoreDisconnect && debug)
-            ELOG (m_clientLogString + "Remote socket closed while sending data.", LOGNAME, m_streamID);
-        throwEx<runtime_error>("");
-	}
-	if (rval < 0)
-	{
-		rval = socketOps::errCode();
-		if (rval != SOCKETOPS_WOULDBLOCK)
-		{
-            if (debug && (
-#ifdef _WIN32
-                        (rval == WSAECONNABORTED) || (rval == WSAECONNRESET)
-#else
-                        (rval == ECONNABORTED) || (rval == ECONNRESET) || (rval == EPIPE)
-#endif
-                        ))
-                DLOG (m_clientLogString + "Socket error while waiting to send data. " + socketErrString(rval), LOGNAME, m_streamID);
-                throwEx<runtime_error>("");
-		}
-
-		m_result.schedule();
-		m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-
-		rval = 0;
-	}
-	return rval;
-}
-
-void protocol_shoutcastClient::checkListenerIsValid(const bool debug) throw(std::runtime_error)
-{
-	char ch = 0;
-	int rval = ::recv(m_socket, &ch, 1, MSG_DONTWAIT | MSG_PEEK);
-	if (rval == 0)
-	{
-		throwEx<runtime_error>((!m_ignoreDisconnect && debug ? (m_clientLogString +
-							   "Remote socket closed while sending data.") : (utf8)""));
-	}
-	if (rval < 0)
-	{
-		rval = socketOps::errCode();
-		if (rval != SOCKETOPS_WOULDBLOCK)
-		{
-			throwEx<runtime_error>((debug ? (((
-									#ifdef _WIN32
-									(rval == WSAECONNABORTED) || (rval == WSAECONNRESET)
-									#else
-									(rval == ECONNABORTED) || (rval == ECONNRESET) || (rval == EPIPE)
-									#endif
-									) ? (utf8)"" : m_clientLogString +
-									"Socket error while waiting to send data. " +
-									socketErrString(rval))) : (utf8)""));
-		}
-	}
-}
-
-const utf8 protocol_shoutcastClient::getContainer() const
-{
-	return ((m_clientType & streamData::FLV) ? "video/x-flv" :
-		   ((m_clientType & streamData::M4A) ? "audio/mp4" :
-		   ((m_clientType & streamData::SHOUTCAST2) ? "misc/ultravox" : "")));
-}
-
-void protocol_shoutcastClient::authForStream(streamData *_sd)
-{
-	streamData *sd = (_sd ? _sd : streamData::accessStream(m_streamID));
-	if (sd)
-	{
-		if (!sd->radionomyID().empty() && sd->streamAdvertMode())
-		{
-			httpHeaderMap_t vars;
-			auth::auth_info *info = new auth::auth_info();
-            const streamData::streamInfo &stream = sd->getInfo();
-
-			vars["action"] = "listener_add";
-			vars["tstamp"] = tos(::time(NULL));
-			vars["host"] = sd->streamPublicIP();
-			vars["radionomyid"] = vars["ref"] = sd->radionomyID();
-			vars["id"] = tos(m_unique);
-			vars["ip"] = m_clientAddr;
-			vars["srvid"] = stream.m_serverID;
-            if (m_queryParams.empty())
-                vars["mount"] = getStreamPath (m_streamID);
-            else
-                vars["mount"] = getStreamPath (m_streamID) + "?" + m_queryParams;
-
-			vars["agent"] = m_userAgent;
-			vars["referer"] = m_referer;
-			vars["bitrate"] = tos(sd->streamBitrate());
-			vars["codec"] = sd->streamContentType();
-			vars["contr"] = getContainer();
-            info->m_dataType = sd->streamUvoxDataType();
-			if (!_sd)
-			{
-				sd->releaseStream();
-			}
-
-			info->post = encodeVariables(vars);
-			info->client = this;
-			info->sid = m_streamID;
-
-			if (_sd)
-			{
-				info->delayed_auth = true;
-				info->group = 0;
-			}
-			auth::schedule(info);
-			return;
-		}
-
-		if (!_sd)
-		{
-			sd->releaseStream();
-		}
-	}
-
-	if (!_sd)
-	{
-		// if we need to auth after the listener
-		// joined the stream due to DNAS / stream
-		// start-up then we don't want to re-add
-		threadedRunner::scheduleRunnable(this);
-	}
-}
-
-void protocol_shoutcastClient::return_403()
-{
-	m_outBuffer = (const utf8::value_type*)"HTTP/1.1 403 Forbidden\r\n"
-										   "Connection:close\r\n\r\n";
-	m_outBufferSize = 44;
-	m_lastActivityTime = ::time(NULL);
-}
-
-// create W3C entry. Entries describe the duration a client has listened to a specific title.
-// the entry is generated on a title change, or when the client disconnects
-void protocol_shoutcastClient::doLogW3C(const utf8 &title) throw()
-{
-	if (gOptions.w3cEnable())
-	{
-		time_t durationOfTitle = (::time(NULL) - m_lastTitleTime);
-		w3cLog::log(m_streamID, m_clientAddr, m_clientHostName, title,
-					m_userAgent, m_bytesSentForCurrentTitle, durationOfTitle,
-					(int)(durationOfTitle ? (8 * m_bytesSentForCurrentTitle) / durationOfTitle : 0));
-
-		setW3CState();
-	}
-}
-
-#if 0
-const bool protocol_shoutcastClient::handleNoData(const utf8 &logString, const int remainder,
-												  const streamData::ringBufferAccess_t amt,
-												  const int autoDumpTime, const time_t cur_time,
-												  const bool sc2)
-{
-	// nothing in the source
-	// if the source has gone away, and we have a backup file, send it.
-	bool sendBackupFile = false, ret = false;
-	if (!streamData::isSourceConnected(m_streamID))
-	{
-		const int backuploop = gOptions.getBackupLoop(m_streamID);
-		if (!backuploop || (m_backupLoopTries <= backuploop))
-		{
-			acquireBackupFile(0, sc2);
-		}
-		else if (backuploop && (m_backupLoopTries < backuploop))
-		{
-			m_backupFile.clear();
-		}
-		sendBackupFile = !m_backupFile.empty();
-
-		if (sendBackupFile && backuploop && (m_backupLoopTries > backuploop))
-		{
-			// clear trying to play the backup
-			sendBackupFile = false;
-			m_backupFile.clear();
-		}
-	}
-	else
-	{
-		// if we're here then we'll have tried to do something
-		// but are very likely are not able to due to being at
-		// the frame rate limit or we're not able to send yet
-		// but we need to move the readPtr on if anything was
-		// read was well as then making sure that we maintain
-		// the remainder otherwise we can gltich on playback.
-		if (amt > 0)
-		{
-			m_readPtr += amt;
-		}
-
-		if (!remainder)
-		{
-			m_remainder.clear();
-		}
-
-		// if we're starting and we're not able to correctly
-		// sync to the stream then this will abort otherwise
-		// we can potentially sit and spin which isn't good.
-		if (!m_frameCount && (remainder > 0) && (remainder == (int)amt))
-		{
-			m_ignoreDisconnect = true;
-			ELOG(m_clientLogString + logString + " client connection closed. Unable to sync to the stream (" +
-				 tos(::time(NULL) - m_startTime).c_str() + " seconds)" + " Agent: `" + m_userAgent + "', UID: " +
-				 tos(m_unique) + ", GRID: " + tos(getGroup()) + " [amt=" + tos(amt) + ", rem=" + tos(remainder) + "]");
-			m_result.done();	// state_Close
-			m_result.write();
-			m_result.timeout(autoDumpTime);
-		}
-	}
-
-	if (sendBackupFile)
-	{
-		// we also reset the remainder handling as
-		// there is no need to send the remainder.
-		m_remainder.clear();
-		// this is to clear up things with the stream
-		// as we can otherwise be in a weird state if
-		// the source then later returns and we have
-		// a listener still present via backup mode.
-		if (m_streamData)
-		{
-			m_streamData->releaseStream();
-			m_streamData = 0;
-		}
-		++m_backupLoopTries;
-		ret = true;	// state_SendBackupFile
-		m_result.run();
-	}
-	else
-	{
-		m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-		m_result.read(m_limitTrigger.test());
-		if (m_streamData)
-		{
-			m_streamData->scheduleLimitTrigger(&m_limitTrigger, m_readPtr, sc2);
-		}
-		else
-		{
-			m_result.done();	// state_Close
-			m_result.write();
-			m_result.timeout(autoDumpTime);
-		}
-	}
-
-	return ret;
-}
-#endif
-
-void protocol_shoutcastClient::createFrameRate(const bool mp3, const int samplerate)
-{
-	// now we have some stream data we can create
-	// a fps for this which we'll assume standard
-	// rates if not all of the info is available.
-	// this is mainly for AAC where we assume a
-	// 44.1kHz samplerate (~43.06 fps) as default
-	if (!m_fps)
-	{
-		m_fps = (mp3 ? 1000.0 / 26 : ((1.0 / (1024.0 / (samplerate > 0 ? samplerate : 44100)))));
-	}
-}
-
-void protocol_shoutcastClient::setupWorkingBuffer(const std::vector<__uint8>& data, std::vector<__uint8>& tempBuf, int& len) throw()
-{
-	// if we had anything left over then now we
-	// need to copy it back into the buffer and
-	// adjust the max data amount to be read in
-	if (!m_remainder.empty() && ((len + m_remainder.size()) <= (BUF_SIZE * 4)))
-	{
-		tempBuf = m_remainder;
-		tempBuf.insert(tempBuf.end(), data.begin(), data.end());
-		len += (int)m_remainder.size();
-	}
-	else if (len > 0)
-	{
-		tempBuf = data;
-	}
-	m_remainder.clear();
-}
-
-#if 0
-const int protocol_shoutcastClient::doUvoxFrameSync(const int type, const bool debug, const int len,
-													const int offset, const std::vector<__uint8>& buf,
-													const time_t cur_time, int &frames, bool &advert,
-													const bool fill_remainder) throw()
-{
-	bool mp3;
-	if (streamData::isAllowedType(type, mp3))
-	{
-		if (!m_shortSend.empty())
-		{
-			m_output.insert(m_output.end(), m_shortSend.begin(), m_shortSend.end());
-			m_shortSend.clear();
-
-			if (!fill_remainder)
-			{
-				// for intro / backup / advert then it's
-				// better to just send what was left and
-				// then look at processing new when this
-				// is empty else it'll duplicate output.
-				return 0;
-			}
-		}
-
-		int end = 0;
-		if ((len > 8) && !buf.empty())
-		{
-			int last_size = 0;
-			for (int i = 0; (i < (len - 8)) && !iskilled();)
-			{
-				const uv2xHdr *voxHdr = (const uv2xHdr*)(&(buf[i + offset]));
-				const int msgLen = ntohs(voxHdr->msgLen);
-				const int found = ((voxHdr->sync == UVOX2_SYNC_BYTE) &&
-								   (msgLen > UV2X_OVERHEAD) &&
-								   (msgLen <= MAX_PAYLOAD_SIZE) ? (msgLen + UV2X_OVERHEAD) : 0);
-
-				// need to find frames and that the input is the correct format!
-				//
-				// is a bit of a pain for AAC though as we've already done the
-				// rough bitrate match when the advert / intro / backup was read
-				// we'll just pass things through as though the bitrate is ok...
-				if ((found > 0) && (found <= len))
-				{
-					if (!frames)
-					{
-						end = (i + offset);
-						protocol_shoutcastClient::createFrameRate(mp3, (m_streamData ? m_streamData->streamSampleRate() : 0));
-					}
-
-					i += (last_size = found);
-
-					// only count valid full-size frames
-					if (i <= len)
-					{
-						if (advert)
-						{
-							// skip over the advert trigger
-							end += 8;
-						}
-
-						const std::vector<__uint8>::const_iterator pos = buf.begin();
-						m_output.insert(m_output.end(), pos + end, pos + (end + last_size));
-						end += last_size;
-
-						// we only want to count audio frames and not metadata
-						const __uint16 voxMsgType = ntohs(voxHdr->msgType);
-						if ((voxMsgType >= 0x7000) && (voxMsgType < 0x9000))
-						{
-							++frames;
-						}
-
-						// we use this to help clamp to the desired frame
-						// rate as well as not sending anything else asap
-						if (advert || (gOptions.rateLimit() ? (frames > m_fps) ||
-									   ((m_frameCount + frames) > calculateFrameLimit(cur_time)) : 0))
-						{
-							break;
-						}
-					}
-				}
-				else
-				{
-					// we now look for the "SCAdvert" marker
-					// for detecting if we've got an advert.
-					if ((i <= len + 8) && ((buf[i + offset]) == 'S') && ((buf[i + offset + 1]) == 'C'))
-					{
-						if (!memcmp(&buf[i + offset], "SCAdvert", 8))
-						{
-							advert = true;
-							i += 8;
-						}
-						else
-						{
-							++i;
-						}
-					}
-					else
-					{
-						// if we found something but there is not enough
-						// data in the read buffer then we'll abort asap
-						if ((found > 0) && (found > len))
-						{
-							break;
-						}
-
-						if (m_frameCount && debug)
-						{
-							DLOG(m_clientLogString + "Bad frame found at pos: " +
-								 tos(i) + " [" + tos(found) + "]");
-						}
-
-						// otherwise we just need to move on and keep
-						// looking for what is a valid starting frame
-						++i;
-					}
-				}
-			}
-		}
-
-		if (fill_remainder && !buf.empty())
-		{
-			const int remainder = (len - end);
-			if (remainder > 0)
-			{
-				const std::vector<__uint8>::const_iterator pos = buf.begin();
-				m_remainder.insert(m_remainder.end(), pos + end, pos + (end + remainder));
-			}
-			return remainder;
-		}
-	}
-	return 0;
-}
-#endif
-
-
-const int protocol_shoutcastClient::doFrameSync(const int type, const bool debug, const int len,
-		const int offset, const std::vector<__uint8>& inbuf,
-		const time_t /*cur_time*/, const int bitrate,
-		const unsigned int samplerate, int &frames,
-		bool &advert, bool fill_remainder) throw()
-{
-	bool mp3;
-	int end = 0;
-	bool VBR = m_streamData ? m_streamData->streamIsVBR() : false;
-
-	if (streamData::isAllowedType(type, mp3))
-	{
-		int last = min (len, (int)(inbuf.size() - offset));
-		const unsigned char *buf;
-
-		if (m_remainder.empty () || offset < last)
-		{
-			buf = &inbuf [offset];
-			//DLOG ("last " + tos(last) + ", off " + tos(offset));
-		}
-		else
-		{
-			// const std::vector<__uint8>::const_iterator pos = inbuf.begin();
-			size_t cc = min (inbuf.size(), (size_t)len);
-
-			cc = min (cc, (size_t)4096);
-			if (cc > m_remainder.size())
-				cc -= m_remainder.size();
-			if (cc < 1 || cc > inbuf.size())
-			{
-			    ILOG ("sync, cc is " + tos(cc));
-			    abort();
-			}
-			m_remainder.insert (m_remainder.end(), inbuf.begin(), inbuf.begin() + cc);
-
-			buf = &m_remainder [0];
-			last = min (len, (int)m_remainder.size());
-			fill_remainder = false;
-			// DLOG ("merged remainder, len " + tos(len) + " now " + tos (last) + ", added " + tos(cc));
-		}
-
-		if (last > 8)
-		{
-			int last_size = 0;
-            bool report_frame_settings = m_streamData ? true : false;
-
-			fill_remainder = false;
-
-			for (int i = 0; (i < last-8) && !iskilled();)
-			{
-				unsigned int read_samplerate = 0;
-				int read_bitrate = bitrate;
-				//const char* f = (const char *)&(buf[(i + offset)]);
-				const int found = (mp3 ? getMP3FrameInfo ((char*)buf+i, &read_samplerate, &read_bitrate) :
-						getADTSFrameInfo ((char*)buf+i, &read_samplerate));
-
-                if (found > len)   // do we need more
-                    break;
-                if (found > 0)
-                {
-                    bool bitrate_odd = (VBR || (read_bitrate == 0 || read_bitrate == bitrate)) ? false : true;
-                    bool srate_odd = (samplerate == 0 || samplerate == read_samplerate) ? false : true;
-
-                    // need to find frames and that the input is the correct format!
-                    //
-                    // is a bit of a pain for AAC though as we've already done the
-                    // rough bitrate match when the advert / intro / backup was read
-                    // we'll just pass things through as though the bitrate is ok...
-                    if (report_frame_settings && (bitrate_odd || srate_odd))
-                    {
-                        utf8 msg = m_clientLogString + "Frame settings changed, could cause playback problems:";
-                        if (bitrate_odd)
-                        {
-                            msg += " bitrate " + tos(read_bitrate) + "(" + tos(bitrate) + ")";
-                            m_streamData->m_streamInfo.m_streamBitrate = read_bitrate;
-                        }
-                        if (srate_odd)
-                        {
-                            msg += " samplerate " + tos(read_samplerate) + "(" + tos(samplerate) + ")";
-                        }
-                        WLOG (msg, LOGNAME, m_streamID);
-                        protocol_shoutcastClient::createFrameRate(mp3, read_samplerate);
-                        report_frame_settings = false;
-                    }
-                    if (!frames)
-                    {
-                        end = i;
-                        protocol_shoutcastClient::createFrameRate(mp3, read_samplerate);
-                    }
-
-                    i += (last_size = found);
-
-                    // only count valid full-size frames
-                    if (i <= last)
-                    {
-                        processFrame (type, buf + end, last_size);
-                        ++frames;
-                        end += last_size;
-                        if (m_output.size() > SEND_SIZE)
-                            break;
-                    }
-                    else
-                    {
-                        // DLOG ("EOB, " + tos (i) + ", " + tos(offset) + ", " + tos(inbuf.size()));
-                        if (m_remainder.empty())
-                        {
-                            if (i+offset > inbuf.size())
-                                fill_remainder = true;
-                        }
-                        else if (end + offset < inbuf.size())
-                            fill_remainder = true;
-                        break;
-                    }
-                    continue;
-                }
-                // we now look for the "SCAdvert" marker
-                // for detecting if we've got an advert.
-                if (i < (len - 8) && ((buf[i]) == 'S') && ((buf[i+1]) == 'C'))
-                {
-                    if (!memcmp(&buf[i], "SCAdvert", 8))
-                    {
-                        if (frames == 0)
-                        {
-                            // DLOG ("Found SCAdvert");
-                            advert = true;
-                            end += 8;
-                            m_remainder.clear();
-                        }
-                        break;
-                    }
-                }
-                if (m_frameCount && debug)
-                {
-                    DLOG(m_clientLogString + "Bad frame found at pos: " +
-                            tos(i) + " [" + tos(found) + "], " +
-                            tos(read_bitrate) + "(" + tos(bitrate) + "), " +
-                            tos(read_samplerate) + "(" + tos(samplerate) + ")", LOGNAME, m_streamID);
-                }
-                // looking for what is a valid starting frame
-                ++i;
-			}
-		}
-		else
-			fill_remainder = true;
-
-        if (m_remainder.empty() == false)
-        {
-            if (last < m_remainder.size())
-                fill_remainder = false;
-            if (frames)
-                m_remainder.clear();
-        }
-        if (last < (inbuf.size() - offset))
-            fill_remainder = false;
-
-		if (fill_remainder)
-		{
-			const int remainder = (last - end);
-			if (remainder > 0)
-				m_remainder.insert(m_remainder.end(), buf + end, buf + (end + remainder));
-		}
-	}
-	return (len - end);
-}
-
-
-void protocol_shoutcastClient::processFrame (int, const unsigned char *buf, unsigned int len)
-{
-	//#define USE_CHUNKED
-#ifdef USE_CHUNKED
-	const utf8 chunked_start (tohex(len) + "\r\n"), chunked_end("\r\n");
-	m_output->insert (m_output->end(), chunked_start.begin(), chunked_start.end());
-#endif
-	//const std::vector<__uint8>::const_iterator pos = buf.begin();
-	m_output.insert (m_output.end(), buf, buf + len);
-#ifdef USE_CHUNKED
-	m_output.insert (m_output.end(), chunked_end.begin(), chunked_end.end());
-#endif
-}
-
-
-const int protocol_shoutcastClient::addClient()
-{
-    size_t stream_id = (gOptions.read_stream_ripFile(m_streamID) && !gOptions.stream_ripFile(m_streamID).empty()) ? m_streamID : 0;
-
-    return stats::addClient (m_streamID, m_clientHostName, m_clientAddr, m_userAgent,
-            g_ripList.find (m_clientAddr, stream_id), m_unique, this);
-}
-
-
-void protocol_shoutcastClient::reportNewListener(const utf8 &logString)
-{
-	if (!logString.empty() && gOptions.logClients())
-	{
-		if (m_removeClientFromStats)
-		{
-			// setGroup (500);
-			// ILOG(m_clientLogString + logString + " client connection accepted. User-Agent: `" +
-				 // m_userAgent + "', UID: " + tos(m_unique) + ", GRID: " + tos(getGroup()), LOGNAME, m_streamID);
-			utf8 s = m_clientLogString + logString + " client connection accepted. User-Agent: `" +
-				 m_userAgent + "', UID: " + tos(m_unique) + ", GRID: " + tos(getGroup());
-            ILOG (s, LOGNAME, m_streamID);
-		}
-		else
-		{
-			m_ignoreDisconnect = true;
-		}
-	}
-}
-
-void protocol_shoutcastClient::reportStopListener()
-{
-	if (m_removeClientFromStats && m_streamData && m_streamData->streamPublic())
-	{
-		metrics::metrics_listener_drop(*this);
-	}
-}
-
-const bool protocol_shoutcastClient::processAdvertTrigger(const bool advert)
-{
-	if (advert && m_streamData)
-	{
-		// check if we've got an advert trigger and if the stream is either
-		// public or it is private but the DNAS is running in any CDN mode.
-		if ((m_streamData->m_streamInfo.m_streamPublic ||
-			(!gOptions.cdn().empty())) &&
-			// if a CDN slave then we're ok to send the stream but we don't
-			// want to be sending the adverts to it as those should instead
-			// be actioned on the slave's ->listener handling and not here.
-			!isCDNSlave(m_streamID))
-		{
-			// DLOG ("in trigger with g " + tos(m_group));
-			if ((getGroup() > 0) || m_streamData->m_adTest)
-			{
-				if (m_adAccess.haveAdverts(m_streamID, m_streamData->advertGroups, m_readPtr))
-				{
-					time_t now = ::time(NULL);
-					ILOG(m_clientLogString + "Transitioning to advert(s) [Agent: `" +
-						 m_userAgent + "', UID: " + tos(m_unique) + ", GRID: " + tos(getGroup()) + "]", LOGNAME, m_streamID);
-					m_lastActivityTime = now;
-					stats::updateTriggers(m_streamID, m_unique);
-					m_adAccess.total_processed = 0;
-					m_adAccess.start_time = now;
-					m_remainder.clear();
-					m_result.schedule(60);
-                    m_result.timeoutSID(m_streamID);
-					return true;
-				}
-				else
-				{
-					AD_DEBUG_LOG("[ADVERT sid=" + tos(m_streamID) + "] Advert trigger detected - no advert(s) available "
-								 "[Agent: `" + m_userAgent + "', UID: " + tos(m_unique) + ", Group: " + tos(getGroup()) + "]", LOGNAME, m_streamID);
-				}
-			}
-		}
-	}
-	return false;
-}
-
-const utf8 protocol_shoutcastClient::fixICYMetadata(utf8 metadata)
-{
-	// we use this to provide a nicer title to clients when the advert update occurs
-	// for detected relays, we will skip over the filtering so it will be relayed on
-	if (!metadata.empty() && !(((streamData::source_t)(m_clientType & streamData::RELAY))) &&
-		!metadata.find(utf8("StreamTitle='Advert:")) && !metadata.find(utf8("StreamTitle='Advert!")))
-	{
-		// got a first matching block
-		metadata = metadata.replace(13, 7, (utf8)"");
-
-		// look for an end block
-		utf8::size_type pos = metadata.find(utf8("Advert:"));
-		if (pos != utf8::npos)
-		{
-			metadata = metadata.replace(pos, 7, (utf8)"");
-		}
-		metadata = stripWhitespace(metadata);
-	}
-	return metadata;
-}
-
-// create W3C entry. Entries describe the duration a client has listened to a specific title.
-// the entry is generated on a title change, or when the client disconnects
-void protocol_shoutcastClient::logW3C() throw()
-{
-	utf8 title;
-	if (!m_lastSentMetadata.empty())
-	{
-		utf8::size_type p1 = m_lastSentMetadata.find(utf8("itle='"));
-		if (p1 != utf8::npos)
-		{
-			p1 += 6;
-			utf8::size_type p2 = m_lastSentMetadata.find(utf8("';"),p1);
-			if (p2 != utf8::npos)
-			{
-				title = m_lastSentMetadata.substr(p1, p2 - p1);
-			}
-		}
-	}
-	doLogW3C(title);
-}
-
-void protocol_shoutcastClient::processTitleW3C() throw()
-{
-	if (gOptions.w3cEnable()) // put inside this if block, because this can slow us down a bit
-	{
-		if (m_metaIntervalCounter >= m_metaInterval)
-		{
-			m_metaIntervalCounter = 0;
-			const utf8 metadata = fixICYMetadata((m_streamData ? m_streamData->getSc1Metadata(m_readPtr).m_songTitle : ""));
-			if (m_lastSentMetadata != metadata)
-			{
-				logW3C();
-				m_lastSentMetadata = metadata;
-			}
-		}
-	}
-}
-
-void protocol_shoutcastClient::streamMovedOrRejected(const utf8 &logString, const bandWidth::usageType_t type,
-													 const utf8 &serverUrl, const int mode) throw()
-{
-	// if we get to here then we attempt to redirect the clients to the moved url
-	// which is useful if the stream has moved hosting or it has been deprecated.
-	if (!mode)
-	{
-		m_outBuffer = MSG_HTTP503;
-		bandWidth::updateAmount(type, (m_outBufferSize = MSG_HTTP503_LEN));
-	}
-	else
-	{
-		const utf8::size_type check = (!serverUrl.empty() ? serverUrl.find(utf8("://")) : 0);
-		if (check == utf8::npos)
-		{
-			m_OKResponse = http302("http://" + serverUrl);
-		}
-		else
-		{
-			m_OKResponse = http302(serverUrl);
-		}
-
-		m_OKResponse = http302(serverUrl);
-		m_outBuffer = m_OKResponse.c_str();
-		bandWidth::updateAmount(type, (m_outBufferSize = (int)m_OKResponse.size()));
-	}
-	m_ignoreDisconnect = true;
-
-	if (gOptions.logClients())
-	{
-		switch (mode)
-		{
-			case 0:
-			{
-				ELOG(m_clientLogString + logString + " client connection "
-					 "rejected. Max users reached. Agent: `" + m_userAgent + "'", LOGNAME, m_streamID);
-				break;
-			}
-			case 1:
-			{
-				WLOG(m_clientLogString + logString + " client connection rejected. Max users "
-					 "reached. Redirecting to " + serverUrl + ". Agent: `" + m_userAgent + "'", LOGNAME, m_streamID);
-				break;
-			}
-			case 2:
-			{
-				WLOG(m_clientLogString + logString + " client connection rejected. Stream has "
-					 "moved. Redirecting to " + serverUrl + ". Agent: `" + m_userAgent + "'", LOGNAME, m_streamID);
-				break;
-			}
-		}
-	}
-
-	m_result.run();
-	m_result.write();
-	m_result.timeoutSID(m_streamID);
-}
-
-void protocol_shoutcastClient::cleanup(const utf8 &logString, const bool debug, const bool , const bool altLog) throw(exception)
-{
-	if (debug)
-	{
-		DLOG(m_clientLogString + logString + " " + __FUNCTION__, LOGNAME, m_streamID);
-	}
-
-	try
-	{
-		if (gOptions.logClients() && !m_ignoreDisconnect)
-		{
-			ILOG(m_clientLogString + logString + " client connection closed (" +
-				 tos(::time(NULL) - m_startTime).c_str() + " seconds)" + " [Bytes: " +
-				 tos(m_totalBytesSent).c_str() + "] Agent: `" + m_userAgent +
-				 "', UID: " + tos(m_unique) + ", GRID: " + tos(getGroup()), LOGNAME, m_streamID);
-		}
-
-		if (m_removeClientFromStats)
-		{
-			stats::removeClient(m_streamID, m_unique);
-			// create W3C entry. Entries describe the duration a client has listened to a specific title.
-			// the entry is generated on a title change, or when the client disconnects
-			if (!altLog)
-			{
-				logW3C();
-			}
-			else
-			{
-				doLogW3C();
-			}
-		}
-
-		if (m_streamData)
-		{
-			releaseAdvert();
-			m_streamData->advertGroups.detachGroupQueue (m_adAccess);
-
-			reportStopListener();
-
-			m_streamData->releaseStream();
-			m_streamData = 0;
-		}
-	}
-	catch(const exception &ex) 
-	{
-		ELOG(ex.what());
-	}
-}
-
-const int protocol_shoutcastClient::processAdd(const utf8 &logString, const bandWidth::usageType_t type,
-											   const utf8 &msg, const int msgLen, const utf8 &movedUrl,
-											   const utf8 &serverUrl) throw()
-{
-	// if we've got a HEAD request then we need to just force things through
-	const int add = (!m_headRequest ? addClient() : 1);
-	if (add != 1)
-	{
-		if (!add)
-		{
-			utf8 backup_server = (m_streamData ? m_streamData->streamBackupServer() : "");
-			if (backup_server.empty())
-			{
-				streamMovedOrRejected(logString, type, movedUrl, 0);
-			}
-			else
-			{
-				streamMovedOrRejected(logString, type, serverUrl, 1);
-			}
-		}
-		else
-		{
-			m_outBuffer = msg.c_str();
-			bandWidth::updateAmount(type, (m_outBufferSize = msgLen));
-
-			m_result.write();
-			m_result.timeoutSID(m_streamID);
-			m_ignoreDisconnect = true;
-
-			if (gOptions.logClients())
-			{
-				const bool missing = (add == -1);
-				ELOG(m_clientLogString + logString + " client connection rejected. "
-					 "Client connection " + (missing ? "missing a" : "from a banned") +
-					 " user-agent" + (missing ? "." : ": `" + m_userAgent + "'"), LOGNAME, m_streamID);
-			}
-		}
-	}
-	return add;
-}
-
-const bool protocol_shoutcastClient::processReject(const utf8 &logString, const bandWidth::usageType_t type,
-												   const utf8 &msg, const int msgLen, int *read_bitrate,
-												   int *dataType, const bool sc2) throw()
-{
-	m_outBuffer = msg.c_str();
-	bandWidth::updateAmount(type, (m_outBufferSize = msgLen));
-
-	m_result.write();
-	m_result.timeoutSID(m_streamID);
-	m_ignoreDisconnect = true;
-	if (gOptions.logClients())
-	{
-		// to prevent some of the stats / logs getting skewed
-		// then we filter out the SHOUTcast site 'test' users
-		if (m_removeClientFromStats)
-		{
-			const utf8 movedUrl = gOptions.stream_movedUrl(m_streamID);
-			if (movedUrl.empty())
-			{
-				*read_bitrate = acquireBackupFile(dataType, sc2);
-				if (!m_backupFile.empty())
-				{
-					m_ignoreDisconnect = false;
-					return true;//goto fall_through;
-				}
-				else
-				{
-					ELOG(m_clientLogString + logString + " client connection rejected. " +
-						 (!iskilled() ? "Stream not available as there is no source connected" :
-						 "Server is shutting down") + ". Agent: `" + m_userAgent + "'", LOGNAME, m_streamID);
-				}
-			}
-			else
-			{
-				// if we get to here then we attempt to redirect the clients to the moved url
-				// which is useful if the stream has moved hosting or it has been deprecated.
-				streamMovedOrRejected(logString, type, movedUrl, 2);
-			}
-		}
-	}
-	return false;
-}
-
-
-void protocol_shoutcastClient::state_SendIntroFile() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-    // DLOG(m_clientLogString + __FUNCTION__);
-#endif
-    bool sc2 = (m_clientType & streamData::SHOUTCAST2) ? true : false;
-
-    resetCommon();
-
-    time_t cur_time;
-    const bool debug = gOptions.HTTPClientDebug();
-    const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_streamID, (m_clientLogString + "Timeout waiting to send data"));
-
-    if (m_timerStart == 0)
-    {
-        m_timerStart = cur_time - 10; // prime the rate regulation
-        m_timerFrames = (__uint64)m_fps * 10;
-        time_t conn = ::time(NULL) - m_startTime;
-        if (conn >= 0 && conn < 3)
-           m_timerStart -= (3 - conn);
-    }
-    if (m_frameCount > calculateFrameLimit(cur_time))
-    {
-        m_result.schedule(150);
-        m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-        //DLOG ("Limited at " + tos(m_frameCount));
-
-        return;
-    }
-    int amt = (int)(m_introFile.size() - m_introFileOffset);
-    if (amt == 0)
-    {
-        // we're done with the intro file
-        m_introFile.clear();
-        m_introFile.resize(0);
-        m_introFileOffset = 0;
-        m_lastActivityTime = ::time(NULL);
-        setCallback (&protocol_shoutcastClient::state_Stream);
-        resetReadPtr (sc2);
-        m_result.run();
-    }
-    else if (amt > 0)
-    {
-        checkListenerIsValid(debug);
-
-        if (!m_lastSentMetadata.empty())
-        {
-            logW3C();
-            m_lastSentMetadata.clear();
-        }
-
-        amt = min(amt, SEND_SIZE);
-
-        int len = (int)amt,
-            frames = 0; // this will be uvox frames as we pre-process earlier to ensure
-                        // that the audio frames are frame-synced when this is created
-        bool advert = false;
-        if (m_output.size() < 2000)
-        {
-            int rval = doFrameSync(m_streamData->streamUvoxDataType(), debug,
-                    len, m_introFileOffset, m_introFile,
-                    cur_time, m_streamData->streamBitrate(),
-                    m_streamData->streamSampleRate(), frames, advert);
-            m_introFileOffset += (len - rval);
-            //DLOG ("offset now " + tos (m_introFileOffset));
-            updateFrameCount(frames, cur_time);
-        }
-
-        int rval = doSend(debug, cur_time, autoDumpTime);
-        if (rval > 0)
-        {
-            bandWidth::updateAmount(bandWidth::CLIENT_HTTP_SENT, rval);
-            m_bytesSentForCurrentTitle += rval;
-            m_lastActivityTime = ::time(NULL);
-            if (rval < m_output.size())
-            {
-                //DLOG ("short send " + tos(rval) + "/" + tos(m_output.size()));
-                m_output.erase (m_output.begin(), m_output.begin() + rval);
-                m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-                m_result.write();
-                return;
-            }
-            m_output.clear();
-        }
-        m_result.schedule(20);
-        m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-    }
-}
-
-
-void protocol_shoutcastClient::state_SendIntro() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-    // AD_DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-    state_SendIntroFile();
-    if (m_introFile.empty())
-    {
-        acquireIntroFile();
-        if (m_introFile.empty())
-        {
-            setCallback (&protocol_shoutcastClient::state_Stream);
-        }
-        else
-        {
-            setCallback (&protocol_shoutcastClient::state_SendIntroFile);
-        }
-    }
-}
-
-
-void protocol_shoutcastClient::state_Stream() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-    //DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-
-    resetCommon();
-
-    const time_t cur_time = ::time(NULL);
-    const bool debug = gOptions.shoutcast1ClientDebug();
-    const int autoDumpTime = gOptions.getAutoDumpTime(m_streamID); // don't want this value to change during this call
-    int remain = autoDumpTime - (int)(cur_time - m_lastActivityTime);
-
-    if ((autoDumpTime > 0) && ((cur_time - m_lastActivityTime) >= autoDumpTime))
-    {
-        throwEx<runtime_error>((!m_ignoreDisconnect && debug ?
-                                (m_clientLogString + "Timeout waiting to send data (" +
-                                 tos(cur_time) + " " + tos(m_lastActivityTime) + " [" +
-                                 tos(cur_time - m_lastActivityTime) + "] )") : (utf8)""));
-    }
-
-    bool advert = false;
-    bool sc2 = (m_clientType & streamData::SHOUTCAST2) ? true : false;
-    AOL_namespace::rwLock &lock = (sc2 ? m_streamData->m_sc21StreamLock : m_streamData->m_sc1StreamLock);
-
-    do
-    {
-        int samplerate = (m_streamData ? m_streamData->streamSampleRate() : 0);
-        int bitrate = (m_streamData ? m_streamData->streamBitrate() : 0);
-        int type = (m_streamData ? m_streamData->streamUvoxDataType() : MP3_DATA);
-
-        m_result.timeout (remain);
-        if (streamData::isSourceConnected (m_streamID) == false)
-        {
-            acquireBackupFile (0, sc2);
-            //DLOG ("listener detected source drop, backup " + utf8(m_backupFile.size() ? "present" : "not present"));
-            if (m_backupFile.size())
-            {
-                setCallback (&protocol_shoutcastClient::state_SendBackupFile);
-                m_timerStart = 0;
-                m_backupLoopTries = 1;
-                m_result.run();
-                return;
-            }
-            if (m_streamData == NULL)
-            {
-                m_result.schedule (300);
-                return;
-            }
-        }
-
-        stackRWLock sl (lock, false, false);
-        if (sl.tryRdLock() == false)
-        {
-                m_result.schedule (3);
-                return;
-        }
-        int frames = 0;
-
-        if (m_output.size() < 2000)
-        {
-            streamData::ringBufferAccess_t lag = ((sc2 ? m_streamData->m_sc21_ring_buffer : m_streamData->m_sc1_ring_buffer).m_writePtr - m_readPtr);
-
-            if (lag == 0)
-            {
-                if (m_frameCount > calculateFrameLimit(cur_time))
-                {
-                    m_result.schedule(333);
-                }
-                else
-                {
-                    m_result.schedule(150);
-                }
-                return;
-            }
-
-            const streamData::ringBufferAccess_t offset = (m_readPtr & (sc2 ? m_streamData->m_sc21_ring_buffer : m_streamData->m_sc1_ring_buffer).m_ptrMask);
-
-            if (lag > (sc2 ? m_streamData->m_sc21_ring_buffer : m_streamData->m_sc1_ring_buffer).m_data.size())
-                break; // off the queue, lagging too much
-
-            lag -= m_lagOffset;
-
-            size_t remainder = doFrameSync (type, debug, (int)lag, (int)offset,
-                    (sc2 ? m_streamData->m_sc21_ring_buffer : m_streamData->m_sc1_ring_buffer).m_data,
-                    cur_time, bitrate, samplerate, frames, advert, true);
-
-            m_readPtr += (lag-remainder);
-            updateFrameCount (frames, cur_time);
-        }
-        // processTitleW3C();    needs looking into 
-
-        // lets jump out if there isn't much to send except in cases where an advert, as we need to
-        // process the transistion
-        if (m_output.size() < 1000 && (frames || advert == false))
-        {
-            //DLOG ("not enough to send really");
-            m_result.schedule(150);
-            return;
-        }
-        int rval = doSend (debug, cur_time, autoDumpTime);
-        if (rval > 0)
-        {
-            bandWidth::updateAmount(bandWidth::CLIENT_V1_SENT, rval);
-            m_bytesSentForCurrentTitle += rval;
-            m_lastActivityTime = ::time(NULL);
-
-            if (rval < m_output.size())
-            {
-                // DLOG ("short send " + tos(rval) + "/" + tos(m_output.size()));
-                m_output.erase (m_output.begin(), m_output.begin() + rval);
-                // if we short send and don't need to transition to advert then jump out
-                if (advert == false)
-                {
-                    m_result.schedule(80); // back off on sending too much
-                    return;
-                }
-            }
-            else
-                m_output.clear();
-        }
-        if (processAdvertTrigger(advert))
-        {
-            // DLOG ("advert detected by listener");
-            setCallback (&protocol_shoutcastClient::state_SendAdverts);
-            m_result.schedule(200);
-        }
-        else
-            m_result.schedule(10);
-        return;
-    } while (0);
-
-    m_result.schedule();
-    resetReadPtr (sc2);
-}
-
-
-
-// handle state where we are sending backup files
-void protocol_shoutcastClient::state_SendBackupFile() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-    // DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-    bool sc2 = (m_clientType & streamData::SHOUTCAST2) ? true : false;
-
-    resetCommon();
-
-    int amt = (int)(m_backupFile.size() - m_backupFileOffset);
-
-    if (amt == 0)
-    {
-        const int backuploop = gOptions.getBackupLoop(m_streamID);
-        if (!backuploop || (m_backupLoopTries <= backuploop))
-        {
-            // we're done with the backup file. get more data
-            acquireBackupFile (0, sc2);
-            if (m_backupFile.empty())
-            {
-                ++m_backupLoopTries;
-                resetReadPtr (sc2);
-                m_lastActivityTime = ::time(NULL);
-                setCallback (&protocol_shoutcastClient::state_Stream);
-                return;
-            }
-        }
-        else if (backuploop && (m_backupLoopTries < backuploop))
-        {
-            m_backupFileOffset = 0;
-            m_backupFile.clear();
-        }
-        else
-        {
-            resetReadPtr (sc2);
-            m_backupFileOffset = 0;
-            m_lastActivityTime = ::time(NULL);
-            setCallback (&protocol_shoutcastClient::state_Stream);
-        }
-        m_result.run();
-    }
-    else if (amt > 0)
-    {
-        const bool debug = gOptions.HTTPClientDebug();
-        checkListenerIsValid(debug);
-
-        time_t cur_time = ::time(NULL);
-        const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_streamID, (m_clientLogString + "Timeout waiting to send data"));
-
-        if (m_timerStart == 0)
-        {
-            int adj = m_frameCount < 50 ? 3 : 10;
-            m_timerStart = cur_time - 10; // prime the rate regulation, make it on the slow side to rejoin queue
-            m_timerFrames = (__uint64)m_fps * adj;
-        }
-        if (m_frameCount > calculateFrameLimit(cur_time))
-        {
-            m_result.schedule (333);
-            m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-            return;
-        }
-
-        if (!m_lastSentMetadata.empty())
-        {
-            logW3C();
-            m_lastSentMetadata.clear();
-        }
-
-        amt = min(amt, SEND_SIZE);
-        int len = (int)amt, backup_type = MP3_DATA,
-            frames = 0; // this will be uvox frames as we pre-process earlier to ensure
-                        // that the audio frames are frame-synced when this is created
-        if (!m_streamData)
-        {
-            utf8 backupFile = gOptions.stream_backupFile(m_streamID);
-            if (!gOptions.read_stream_backupFile(m_streamID))
-            {
-                backupFile = gOptions.backupFile();
-            }
-            if (!backupFile.empty())
-            {
-                backup_type = ((backupFile.rfind((utf8)".aac") == utf8::npos) ? MP3_DATA : AACP_DATA);
-            }
-        }
-
-        bool advert = false;
-        if (m_output.size() < 4096)
-        {
-            int rval = doFrameSync((m_streamData ? m_streamData->streamUvoxDataType() : backup_type),
-                    debug, len, m_backupFileOffset, m_backupFile, cur_time,
-                    (m_streamData ? m_streamData->streamBitrate() : 0),
-                    (m_streamData ? m_streamData->streamSampleRate() : 0), frames, advert);
-            m_backupFileOffset += (len - rval);
-            updateFrameCount (frames, cur_time);
-        }
-        int rval = doSend(debug, cur_time, autoDumpTime);
-
-        m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-        if (rval > 0)
-        {
-            bandWidth::updateAmount(bandWidth::CLIENT_HTTP_SENT, rval);
-            m_bytesSentForCurrentTitle += rval;
-            m_lastActivityTime = cur_time;
-            if (rval < m_output.size())
-            {
-                // DLOG ("short send " + tos(rval) + "/" + tos(m_output.size()));
-                m_output.erase (m_output.begin(), m_output.begin() + rval);
-                return;
-            }
-            m_output.clear();
-            // look at moving now that a complete frame is sent
-            if (streamData::isSourceConnected (m_streamID))
-            {
-                if (m_streamData)
-                {
-                    m_streamData->releaseStream();
-                }
-                m_streamData = streamData::accessStream(m_streamID);
-
-                if (m_streamData->m_sc1_packet_starts.size() == 0)
-                {
-                    m_result.schedule (100);  // no data from stream, so ignore for now.
-                    return;
-                }
-
-                // we're done with the backup file
-                m_backupFile.clear();
-                m_backupFile.resize(0);
-                m_backupFileOffset = 0;
-                m_backupLoopTries = 0;
-                setCallback (&protocol_shoutcastClient::state_Stream);
-                resetReadPtr (sc2);
-                m_result.run();
-                return;
-            }
-            m_result.schedule ((rval/512) + 15);
-        }
-        else
-            m_result.schedule(90);
-    }
-}
-
-
-
-// handle state where we are sending advert content
-void protocol_shoutcastClient::state_SendAdverts() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-    //AD_DEBUG_LOG(m_clientLogString + __FUNCTION__);
-#endif
-
-    resetCommon();
-
-    streamData::specialFileData *ad = m_adAccess.getAd(m_streamID, m_streamData->advertGroups, !!m_streamData->m_adTest);
-    bool sc2 = (m_clientType & streamData::SHOUTCAST2) ? true : false;
-
-    while (true)
-    {
-        if (ad)
-        {
-            std::vector<__uint8> &adBuffer = (sc2 ? ad->m_sc2Buffer : ad->m_sc1Buffer);
-            int amt = (ad ? (int)(adBuffer.size() - m_adAccess.offset) : 0);
-
-            if (amt > 0)
-                break;
-        }
-        if (m_adAccess.anotherAd(m_streamID, m_streamData->advertGroups, !!m_streamData->m_adTest))
-        {
-            ad = m_adAccess.getAd (m_streamID, m_streamData->advertGroups, !!m_streamData->m_adTest);
-            continue;
-        }
-        // no more adverts
-        m_lastActivityTime = ::time(NULL);
-        if (m_timerStart)
-        {
-            // add a small retry here to allow for queue priming after adverts
-            m_result.schedule (300);
-            m_result.timeoutSID(m_streamID);
-            m_timerStart = 0;
-            //DLOG ("kicking back to retry before transition");
-            return;
-        }
-        setCallback (&protocol_shoutcastClient::state_Stream);
-        resetReadPtr (sc2); // this should do a search for a nearest matching frame
-        releaseAdvert();
-        m_result.schedule ();
-        m_result.timeoutSID(m_streamID);
-
-        ILOG(m_clientLogString + "Transitioning back to stream [Agent: `" +
-                m_userAgent + "', UID: " + tos(m_unique) + ", GRID: " + tos(getGroup()) + "]", LOGNAME, m_streamID);
-        return;
-    }
-
-    try
-    {
-        std::vector<__uint8> &adBuffer = (sc2 ? ad->m_sc2Buffer : ad->m_sc1Buffer);
-        int amt = (ad ? (int)(adBuffer.size() - m_adAccess.offset) : 0);
-        const bool debug = gOptions.HTTPClientDebug();
-        checkListenerIsValid(debug);
-
-        time_t cur_time;
-        const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_streamID, (m_clientLogString + "Timeout waiting to send data"));
-
-        if (m_timerStart == 0)
-        {
-            m_timerStart = cur_time - 8; // prime the rate regulation, make it on the slow side to rejoin queue
-            m_timerFrames = (__uint64)m_fps * 8;
-        }
-        if (m_frameCount > calculateFrameLimit(cur_time))
-        {
-            m_result.schedule(333);
-            m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-            // DLOG ("throttle in send adverts, count " + tos(m_frameCount));
-            return;
-        }
-
-        if (!m_lastSentMetadata.empty())
-        {
-            logW3C();
-            m_lastSentMetadata.clear();
-        }
-
-        amt = min(amt, SEND_SIZE);
-
-        int len = (int)amt,
-            frames = 0; // this will be uvox frames as we pre-process earlier to ensure
-                        // that the audio frames are frame-synced when this is created
-        bool advert = false;
-        if (m_output.size() < 4096)
-        {
-            int rval = doFrameSync (m_streamData->streamUvoxDataType(), debug, len,
-                        (int)m_adAccess.offset, adBuffer,
-                        cur_time, m_streamData->streamBitrate(),
-                        m_streamData->streamSampleRate(), frames, advert);
-            int processed = len - rval;
-            m_adAccess.offset += processed;
-            m_adAccess.total_processed += processed;
-            updateFrameCount (frames, cur_time);
-        }
-        int rval = doSend(debug, cur_time, autoDumpTime);
-        m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-        if (rval > 0)
-        {
-            bandWidth::updateAmount(bandWidth::CLIENT_HTTP_SENT, rval);
-            m_bytesSentForCurrentTitle += rval;
-            m_lastActivityTime = ::time(NULL);
-            if (rval < m_output.size())
-            {
-                // DLOG ("short send " + tos(rval) + "/" + tos(m_output.size()));
-                m_output.erase (m_output.begin(), m_output.begin() + rval);
-                return;
-            }
-            m_output.clear();
-        }
-        m_result.write();
-    }
-    catch (std::runtime_error &)
-    {
-        releaseAdvert();
-        throw;
-    }
-}
-
-
-void protocol_shoutcastClient::state_SendText() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-    // AD_DEBUG_LOG (m_clientLogString + __FUNCTION__);
-#endif
-
-    if (sendDataBuffer (m_streamID, m_outBuffer, m_outBufferSize, m_clientLogString))
-    {
-        setCallback ();
-    }
-}
-
-// wrapper for the StopAdRun, as we also need to kick off some listener metrics
-void protocol_shoutcastClient::releaseAdvert ()
-{
-    if (m_adAccess.inAdvertMode ())
-    {
-        metrics::adSummary summary;
-
-        summary.sid = m_streamID;
-        summary.path = getStreamPath (m_streamID);
-        summary.tstamp = ::time(NULL);
-        summary.id = m_adAccess.getCurrentTrigger()->m_id;
-        summary.sd = m_streamData;
-        metrics_adListener (*this, summary);
-
-        m_adAccess.stopAdRun (m_streamID, m_streamData->advertGroups, false);
-    }
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_shoutcastClient.h b/Src/Plugins/DSP/sc_serv3/protocol_shoutcastClient.h
deleted file mode 100644
index ab1bcb43..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_shoutcastClient.h
+++ /dev/null
@@ -1,209 +0,0 @@
-#pragma once
-#ifndef protocol_shoutcastClient_H_
-#define protocol_shoutcastClient_H_
-
-#include "threadedRunner.h"
-#include "streamData.h"
-#include "stats.h"
-#include "bandwidth.h"
-#include "protocol_HTTPStyle.h"
-
-
-#pragma pack(push, 1)
-class protocol_shoutcastClient: public runnable, public clientProtocol
-{
-public:
-    friend class protocol_HTTPStyle;
-
-	typedef void (protocol_shoutcastClient::*state_t)();
-    protocol_shoutcastClient (protocol_HTTPStyle &hs, const streamData::streamID_t streamID, const uniString::utf8 &hostName, const uniString::utf8 &clientAddr, const uniString::utf8 &XFF, const streamData::source_t clientType);
-
-	protocol_shoutcastClient(const socketOps::tSOCKET socket, const u_short port,
-							 const streamData::source_t clientType, const uniString::utf8 &hostName,
-							 const streamData::streamID_t streamID, const size_t unique,
-							 const uniString::utf8 &userAgent, const uniString::utf8 &referer,
-							 const uniString::utf8 &clientAddr, const uniString::utf8 &XFF,
-							 const bool headRequest);
-
-	virtual ~protocol_shoutcastClient() throw()
-	{
-		m_streamData = 0;
-		socketOps::forgetTCPSocket(m_socket);
-	}
-
-	virtual void setIntro(vector<__uint8> &v, int uvoxDataType = MP3_DATA) { m_introFile = v; m_introFileOffset = 0; (void)uvoxDataType; }
-
-	virtual void acquireIntroFile(const bool sc2 = false) throw();
-	virtual int acquireBackupFile(int *dataType = 0, const bool sc2 = false) throw();
-
-	void kickNextRound() throw() { m_kickNextRound = true; }
-
-	void setGroup(size_t group) throw() { m_adAccess.setGroup (group); }
-	const size_t getGroup() const throw() { return m_adAccess.getGroup(); }
-
-	const size_t getUnique() const throw() { return m_unique; }
-	const streamData::source_t getClientType() const throw() { return m_clientType; }
-	const time_t getStartTime() const throw() { return m_startTime; }
-
-	const uniString::utf8 getXFF() const throw() { return m_XFF; }
-	const uniString::utf8 getUserAgent() const throw() { return (!m_userAgent.empty() ? m_userAgent : EMPTY_AGENT); }
-	const uniString::utf8 getReferer() const throw() { return m_referer; }
-
-	void return_403();
-
-	const streamData::ringBufferAccess_t resetReadPtr(std::vector<__uint8>& data, const bool sc2 = false) throw();
-	void resetReadPtr(const bool sc2 = false) throw();
-	void resetReadPtr (streamData::ringBufferAccess_t ptr, bool sc2) throw();
-
-	const int doTimeSlice(const bool sc2 = false) throw(std::exception);
-	void resetCommon() throw();
-
-	const bool sendText() throw(std::exception);
-
-	void setupWorkingBuffer(const std::vector<__uint8>& data, std::vector<__uint8>& tempBuf, int& len) throw();
-
-	virtual void processFrame (int type, const unsigned char *buf, unsigned int len);
-
-	const int doFLVFrameSync(const int type, const bool debug, const int offset,
-							 const std::vector<__uint8>& buf, const time_t cur_time,
-							 const int bitrate, const unsigned int samplerate,
-							 int &len, int &frames, bool &advert, int &timestamp,
-							 const bool fill_remainder = false) throw();
-
-	virtual const int doFrameSync(const int type, const bool debug, const int len,
-							  const int offset, const std::vector<__uint8>& buf,
-							  const time_t cur_time, const int bitrate,
-							  const unsigned int samplerate, int &frames,
-							  bool &advert, const bool fill_remainder = false) throw();
-
-	void createFrameRate(const bool mp3, const int samplerate);
-	const __uint64 calculateFrameLimit(const time_t cur_time = 0);
-	void updateFrameCount(const int frames, const time_t cur_time = 0);
-	const bool calculateDelay(const int autoDumpTime = -1);
-	virtual int doSend(const bool debug, const time_t cur_time,
-					 const int autoDumpTime, int adjust = 0) throw(std::runtime_error);
-	void checkListenerIsValid(const bool debug) throw(std::runtime_error);
-
-	void setW3CState() throw();
-	const uniString::utf8 getContainer() const;
-	void authForStream(streamData *_sd = 0);
-
-	const bool handleNoData(const uniString::utf8 &logString, const int remainder,
-							const streamData::ringBufferAccess_t amt,
-							const int autoDumpTime, const time_t cur_time,
-							const bool sc2 = false);
-
-	void streamMovedOrRejected(const uniString::utf8 &logString, const bandWidth::usageType_t type,
-							   const uniString::utf8 &serverUrl, const int mode) throw();
-
-	const bool processAdvertTrigger(const bool advert);
-
-	const uniString::utf8 fixICYMetadata(uniString::utf8 metadata);
-	void logW3C() throw();
-	void doLogW3C(const uniString::utf8 &title = "") throw();
-	void processTitleW3C() throw();
-
-	const adGroupAccess &getAdAccess () const { return m_adAccess; }
-	void releaseAdvert();
-
-	const int processAdd(const uniString::utf8 &logString, const bandWidth::usageType_t type,
-						 const uniString::utf8 &msg, const int msgLen,
-						 const uniString::utf8 &movedUrl, const uniString::utf8 &serverUrl) throw();
-	const bool processReject(const uniString::utf8 &logString, const bandWidth::usageType_t type,
-							 const uniString::utf8 &msg, const int msgLen, int *read_bitrate,
-							 int *dataType = 0, const bool sc2 = false) throw();
-
-	const int addClient();
-	void reportNewListener(const uniString::utf8 &logString = "");
-	void reportStopListener();
-
-	void cleanup(const uniString::utf8 &logString, const bool debug,
-				 const bool sc2 = false, const bool altLog = false) throw(exception);
-
-    virtual int detectAutoDumpTimeout (time_t &cur_time, const size_t streamID, const uniString::utf8 &msg) throw(runtime_error);
-
-	virtual void state_AttachToStream() throw(exception) = 0;
-	virtual void state_Close() throw(std::exception) = 0;
-	virtual void state_InitiateStream() throw(std::exception) = 0;
-	virtual void state_SendText() throw(std::exception);
-	virtual void state_SendAdverts() throw(std::exception);
-	virtual void state_Stream() throw(std::exception);
-	virtual void state_SendBackupFile() throw(std::exception);
-	virtual void state_SendIntroFile() throw(std::exception);
-	virtual void state_SendIntro() throw(std::exception);
-
-	virtual void setCallback (state_t callback = NULL, state_t next = NULL) = 0;
-
-	friend class auth::authService;
-	friend void metrics::metrics_listener_new(const protocol_shoutcastClient &client);
-	friend void metrics::metrics_listener_drop(const protocol_shoutcastClient &client);
-	friend void stats::catchPreAddClients(const streamData::streamID_t id);
-
-protected:
-	uniString::utf8	m_clientHostName;
-	const streamData::streamID_t	m_streamID;		// stream ID for this connection
-
-	const size_t			m_unique;		// clients' unique id
-	uniString::utf8	m_userAgent;	// client's user agent string
-	uniString::utf8	m_referer;		// client's referer string
-	uniString::utf8	        m_queryParams;		// client's query parameters
-
-	streamData::source_t	m_clientType;	// stream client type
-
-	bool					m_removeClientFromStats; // do we have to do a stats::removeClient
-	bool					m_kickNextRound;
-	bool					m_headRequest;
-	bool					m_ignoreDisconnect;	// used to prevent the 'client connection closed (0 seconds) [Bytes: 0] Agent:'
-												// message if redirecting or if max limit was reached which keeps logs cleaner
-
-	time_t					m_startTime;	// when connection started, used to implement listenerTime
-	time_t					m_newListener;  // when the new listener metric was sent
-	time_t					m_timerStart; // for time regulated sending
-	__uint64				m_timerFrames;  // amount sent during timer;
-
-	streamData				*m_streamData;
-
-	uniString::utf8	m_clientLogString;
-	uniString::utf8	m_clientAddr;	// client's address
-	uniString::utf8	m_XFF;
-	uniString::utf8			m_OKResponse;
-
-	uniString::utf8			m_lastSentMetadata; // used for w3C tracking
-
-	std::vector<__uint8>	m_introFile;
-	int						m_introFileOffset;
-	int						m_backupFileOffset;
-	std::vector<__uint8>	m_backupFile;
-	int						m_backupLoopTries;
-    unsigned int            m_lagOffset;
-
-    adGroupAccess	m_adAccess;
-
-	//// stats for w3c logs
-	time_t		m_lastTitleTime;	// time of last title update used for w3c logs
-	__uint64	m_bytesSentForCurrentTitle; // bytes sent since last title change. used for w3c logs
-	__uint64	m_totalBytesSent;	// total bytes sent whilst the connection is open
-	///////////////////////////
-
-	streamData::ringBufferAccess_t	m_readPtr;		// pointer into ring buffer (main playback)
-
-	const uniString::utf8::value_type	*m_outBuffer; // for outgoing text lines
-	int									m_outBufferSize;
-
-	unsigned short	m_metaInterval;
-	unsigned short			m_metaIntervalCounter; // counter for metadata updates
-
-	double		m_fps;
-	__uint64	m_frameLimit;		// how many frames we're allowed
-	__uint64	m_frameCount;		// how many frames we've provided
-
-	std::vector<__uint8> m_shortSend;	// used to keep a copy of the data from short sends
-										// which will be re-inserted into the output buffer
-										// before processing more audio data to the output.
-	std::vector<__uint8> m_remainder;
-	std::vector<__uint8> m_output;
-
-};
-#pragma pack(pop)
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_shoutcastSource.cpp b/Src/Plugins/DSP/sc_serv3/protocol_shoutcastSource.cpp
deleted file mode 100644
index b8b3ec23..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_shoutcastSource.cpp
+++ /dev/null
@@ -1,439 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include "protocol_shoutcastSource.h"
-#include "protocol_backup.h"
-#include "streamData.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(...)      do { if (gOptions.shoutcastSourceDebug()) DLOG(__VA_ARGS__); } while (0)
-#define LOGNAME             "SRC"
-
-protocol_shoutcastSource::protocol_shoutcastSource (microConnection &mc, const uniString::utf8 &password) throw (std::exception)
-
-    : runnable (mc), m_srcPort(mc.m_srcPort), m_srcAddr(mc.m_srcAddress)
-{
-    m_srcStreamID = DEFAULT_SOURCE_STREAM;
-    m_denied = false;
-    m_remainder = new __uint8[BUF_SIZE * 4];
-    m_remainderSize = 0;
-    m_outBuffer = NULL;
-    m_outBufferSize = 0;
-    m_streamData = NULL;
-
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	// we're looking to see if this is an updated 1.x source
-	// which is able to indicate the stream # for the stream
-	// so that we're able to support multiple 1.x sources so
-	// we need to parse the password and extract the parts
-	utf8 m_srcPassword = password;
-	extractPassword(m_srcPassword, m_srcUserID, m_srcStreamID);
-
-	// ensure that only valid stream id's are allowed to connect (1 -> 2147483647)
-	if (!m_srcStreamID || (m_srcStreamID > INT_MAX))
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Bad Stream ID (" + tos(m_srcStreamID) + "). Stream ID cannot be below 1 or above 2147483647.");
-
-		m_outBuffer = MSG_BADSTREAMID;
-		bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_BADSTREAMID_LEN));
-		m_state = &protocol_shoutcastSource::state_SendBuffer;
-		m_nextState = &protocol_shoutcastSource::state_CloseConnection;
-		return;
-	}
-
-	// update the log message for the read stream number
-	m_srcLogString = srcAddrLogString (m_srcAddr, m_srcPort, m_srcStreamID);
-
-	// if we have a moved stream then now we have the stream id
-	// then we need to check and block the source as applicable
-	utf8 movedUrl = gOptions.stream_movedUrl(m_srcStreamID);
-
-	if (!movedUrl.empty())
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Shoutcast 1 source rejected. Stream is configured as having moved.");
-
-		m_outBuffer = MSG_STREAMMOVED;
-		bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_STREAMMOVED_LEN));
-		m_state = &protocol_shoutcastSource::state_SendBuffer;
-		m_nextState = &protocol_shoutcastSource::state_CloseConnection;
-		return;
-	}
-
-	// as we are a v1 source then we must adhere to the master password
-	// instead of using a specific per stream password as in v2 streams
-	// though we also accept connections as sid=1 so check for that too
-	utf8 srcPassword = gOptions.stream_password(m_srcStreamID);
-	if (srcPassword.empty())
-	{
-		srcPassword = gOptions.password();
-	}
-
-	if (m_srcPassword.empty() || (m_srcPassword != srcPassword))
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Shoutcast 1 source connection denied" + (m_srcUserID.empty() ? "" : " for user (" + m_srcUserID + ")") +
-                ". " + (m_srcPassword.empty() ? "Empty password not allowed." : "Bad password: " + m_srcPassword), LOGNAME, m_srcStreamID);
-		m_outBuffer = MSG_INVALIDPASSWORD;
-		bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_INVALIDPASSWORD_LEN));
-		m_state = &protocol_shoutcastSource::state_SendBuffer;
-		m_nextState = &protocol_shoutcastSource::state_CloseConnection;
-	}
-	else
-	{
-		// if we've got a source already connected and it's not a backup
-		// then it's better that we just abort processing now than later
-		bool isSourceActive = false;
-		streamData *sd = streamData::accessStream(m_srcStreamID, isSourceActive);
-		if (sd && (isSourceActive == true) && (sd->isBackupStream(m_srcStreamID) == false))
-		{
-			m_denied = true;
-			ELOG(m_srcLogString + "Shoutcast 1 source rejected. A source is already connected.", LOGNAME, m_srcStreamID);
-			m_outBuffer = MSG_STREAMINUSE;
-			bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_STREAMINUSE_LEN));
-			m_state = &protocol_shoutcastSource::state_SendBuffer;
-			m_nextState = &protocol_shoutcastSource::state_CloseConnection;
-		}
-		else
-		{
-			ILOG(m_srcLogString + "Shoutcast 1 source connection starting.", LOGNAME, m_srcStreamID);
-			m_outBuffer = MSG_VALIDPASSWORD;
-			bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_VALIDPASSWORD_LEN));
-			m_state = &protocol_shoutcastSource::state_SendBuffer;
-			m_nextState = &protocol_shoutcastSource::state_GetHeaders;
-		}
-
-		if (sd)
-		{
-			sd->releaseStream();
-		}
-	}
-}
-
-protocol_shoutcastSource::~protocol_shoutcastSource() throw()
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (m_streamData)
-	{
-		streamData::streamSourceLost(m_srcLogString, m_streamData, m_srcStreamID);
-		m_streamData = 0;
-	}
-
-	socketOps::forgetTCPSocket(m_socket);
-	forgetArray(m_remainder);
-
-	if (!m_denied)
-	{
-		ILOG(m_srcLogString + "Shoutcast 1 source disconnected.", LOGNAME, m_srcStreamID);
-	}
-}
-
-
-void protocol_shoutcastSource::state_AnalyzeHeaders() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	int maxHeaderLineCount = gOptions.maxHeaderLineCount();
-	if ((int)m_headers.size() >= maxHeaderLineCount)
-	{
-		m_denied = true;
-		throwEx<runtime_error>(m_srcLogString + "Max icy header lines exceeded");
-	}
-
-	m_lineBuffer = stripWhitespace(m_lineBuffer);
-	if (m_lineBuffer.empty())
-	{
-		// adjust icy headers for titleFormat and urlFormat 
-		utf8 titleFormat = gOptions.titleFormat();
-		utf8 urlFormat = gOptions.urlFormat();
-		if (!titleFormat.empty())
-		{
-			utf8::size_type pos = titleFormat.find(utf8("%s"));
-			m_headers["icy-name"] = (pos == utf8::npos ? titleFormat : titleFormat.replace(pos,2,m_headers["icy-name"]));
-		}
-
-		if (!urlFormat.empty())
-		{
-			utf8::size_type pos = urlFormat.find(utf8("%s"));
-			m_headers["icy-url"] = (pos == utf8::npos ? urlFormat : urlFormat.replace(pos,2,m_headers["icy-url"]));
-		}
-
-		// dump icy headers to log
-		if (gOptions.shoutcastSourceDebug())
-		{
-			for (map<utf8,utf8>::const_iterator i = m_headers.begin(); i != m_headers.end(); ++i)
-			{
-				DEBUG_LOG(m_srcLogString + "Source client header [" + (*i).first + ":" + (*i).second + "]");
-			}
-		}
-
-		config::streamConfig stream;
-		const bool found = gOptions.getStreamConfig(stream, m_srcStreamID);
-		if (!found && gOptions.requireStreamConfigs())
-		{
-			m_denied = true;
-			throwEx<runtime_error>(m_srcLogString + "Shoutcast 1 source rejected. Stream " +
-								   tos(m_srcStreamID) + " must be defined in config file");
-		}
-
-		// check that these bitrates are allowed (looking at both max and average values)
-		const int bitrate = getStreamBitrate(m_headers) * 1000;
-		int streamMaxBitrate = 0, streamMinBitrate = 0;
-		const int ret = gOptions.isBitrateDisallowed(m_srcStreamID, bitrate, streamMaxBitrate, streamMinBitrate);
-		if (ret)
-		{
-			m_denied = true;
-			utf8 mode = ((streamMaxBitrate == streamMinBitrate) ? "of" : (ret == 2 ? "up to" : "from"));
-			throwEx<runtime_error>(m_srcLogString + "Shoutcast 1 source rejected. Only bitrates " +
-								  mode + " " + tos((ret == 1 ? streamMinBitrate : streamMaxBitrate) / 1000) +
-								   " kbps are allowed - detected " + tos(bitrate / 1000) + " kbps.");
-		}
-
-		m_streamData = streamData::createStream(streamData::streamSetup(m_srcLogString, m_srcAddr,
-												(found ? stream.m_authHash : ""), m_srcUserID, "",
-												stream.m_backupUrl.url(), streamData::SHOUTCAST1,
-												m_srcStreamID, m_srcPort, stream.m_maxStreamUser,
-												stream.m_maxStreamBitrate, stream.m_minStreamBitrate,
-												stream.m_allowPublicRelay, false, getStreamSamplerate(m_headers),
-												mapGet(m_headers, "icy-vbr", (bool)false), m_headers));
-		if (!m_streamData)
-		{
-			m_denied = true;
-			ELOG(m_srcLogString + "Shoutcast 1 source rejected. A source is already connected.");
-			m_outBuffer = MSG_STREAMINUSE;
-			bandWidth::updateAmount(bandWidth::SOURCE_V1_SENT, (m_outBufferSize = MSG_STREAMINUSE_LEN));
-			m_state = &protocol_shoutcastSource::state_SendBuffer;
-			m_nextState = &protocol_shoutcastSource::state_CloseConnection;
-			m_result.run();
-			return;
-		}
-
-		utf8 sourceIdent = mapGet(m_headers, "user-agent", utf8());
-		m_streamData->updateSourceIdent(sourceIdent);
-
-		m_state = &protocol_shoutcastSource::state_GetStreamData;
-		m_result.read();
-	}
-	else
-	{
-		// find the colon that divides header lines into key/value fields
-		utf8::size_type pos = m_lineBuffer.find(utf8(":"));
-		utf8 key = toLower(stripWhitespace(m_lineBuffer.substr(0, pos)));
-		if (pos == utf8::npos)
-		{
-			if (!key.empty() && ((key == "icy-name") || (key == "icy-url")))
-			{
-				// allow through icy-name and icy-url if there is
-				// a titleformat and urlformat to use respectively
-			}
-			else
-			{
-				m_denied = true;
-				throwEx<runtime_error>(m_srcLogString + "Shoutcast 1 source connection rejected. "
-									   "Bad icy header string [" + m_lineBuffer + "]");
-			}
-		}
-
-		utf8 value = stripWhitespace(m_lineBuffer.substr(pos+1));
-		if (key.empty() || value.empty())
-		{
-			if (!key.empty() && value.empty())
-			{
-				if (key == "icy-genre")
-				{
-					value = "Misc";
-				}
-				else if (((key == "icy-name") && !gOptions.titleFormat().empty()) ||
-						 ((key == "icy-url") && !gOptions.urlFormat().empty()))
-				{
-					// allow through icy-name and icy-url if there is
-					// a titleformat and urlformat to use respectively
-				}
-				else
-				{
-					if (key == "icy-url")
-					{
-						value = "http://www.shoutcast.com";
-					}
-					else if (!((key == "icy-irc") || (key == "icy-aim") || (key == "icy-icq")))
-					{
-						m_denied = true;
-						throwEx<runtime_error>(m_srcLogString + "Shoutcast 1 source connection rejected. "
-											   "Bad icy header string [" + m_lineBuffer + "]");
-					}
-				}
-			}
-			else
-			{
-				m_denied = true;
-				throwEx<runtime_error>(m_srcLogString + "Shoutcast 1 source connection rejected. "
-									   "Bad icy header string [" + m_lineBuffer + "]");
-			}
-		}
-		m_headers[key] = value;
-		m_nextState = &protocol_shoutcastSource::state_AnalyzeHeaders;
-		m_state = &protocol_shoutcastSource::state_GetLine;
-		m_result.read();
-		m_lineBuffer.clear();
-	}
-}
-
-void protocol_shoutcastSource::timeSlice() throw(std::exception)
-{
-	try
-	{
-		if (m_streamData && m_streamData->isDead())
-		{
-			m_result.done();
-			return;
-		}
-		(this->*m_state)();
-	}
-    catch(const exception &)
-    {
-        if (m_streamData && !m_denied)
-        {
-            // if there was a failure, now see if we have a backup and attempt to run
-            // before we remove the current handling of the dropped source connection
-            vector<config::streamConfig> backupInfo = gOptions.getBackupUrl(m_srcStreamID);
-            if (!backupInfo.empty())
-            {
-                streamData::streamInfo info;
-                streamData::extraInfo extra;
-                if (streamData::getStreamInfo (m_streamData->ID(), info, extra) && info.m_allowBackupURL)
-                {
-                    m_denied = true;
-                    m_streamData->clearCachedMetadata();
-                    streamData::streamSourceLost(m_srcLogString, m_streamData, m_srcStreamID);
-                    m_streamData = 0;
-                    ILOG (m_srcLogString + "Shoutcast 1 source disconnected - trying source backup.", LOGNAME, m_srcStreamID);
-                    threadedRunner::scheduleRunnable(new protocol_backup(backupInfo[0], getStreamBitrate(m_headers),
-                                fixMimeType(m_headers["content-type"])));
-                }
-                else
-                    WLOG ("Stream backup URL not allowed", LOGNAME, m_srcStreamID);
-            }
-        }
-        throw;
-	}
-}
-
-void protocol_shoutcastSource::state_SendBuffer() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (sendDataBuffer(m_srcStreamID, m_outBuffer, m_outBufferSize, m_srcLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_shoutcastSource::state_GetLine() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (getHTTPStyleHeaderLine(m_srcStreamID, m_lineBuffer, m_srcLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_shoutcastSource::state_GetHeaders() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-	m_state = &protocol_shoutcastSource::state_GetLine;
-	m_nextState = &protocol_shoutcastSource::state_AnalyzeHeaders;
-	m_result.read();
-}
-
-void protocol_shoutcastSource::state_GetStreamData() throw(exception)
-{
-/*#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-#endif*/
-
-    time_t cur_time;
-
-    const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_srcStreamID, (m_srcLogString + "Timeout waiting for stream data"));
-
-    int bitrate = m_streamData->streamBitrate();
-    const int type = m_streamData->streamUvoxDataType();
-    while (true)
-    {
-        char buf[BUF_SIZE * 4] = {0};
-        int amt = (BUF_SIZE - 1);
-
-        // if we had anything left over then now we
-        // need to copy it back into the buffer and
-        // adjust the max data amount to be read in
-        if ((m_remainderSize > 0) && ((amt + m_remainderSize) <= (BUF_SIZE * 4)))
-        {
-            memcpy(buf, m_remainder, m_remainderSize);
-        }
-        else
-        {
-            m_remainderSize = 0;
-        }
-
-        // adjust the position in the buffer based on the prior
-        // state of the remaining data as part of frame syncing
-        int rval = 0;
-        if ((rval = recv (&buf[m_remainderSize], (BUF_SIZE - 1), 0x0)) < 1)
-        {
-            if (rval < 0)
-            {
-                rval = socketOps::errCode();
-                if (rval == SOCKETOPS_WOULDBLOCK)
-                {
-                    m_result.schedule(85);
-                    m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-                    return;
-                }
-                DLOG (m_srcLogString + "Socket error while waiting for data. " + socketErrString(rval), LOGNAME, m_srcStreamID);
-            }
-            else
-                DLOG (m_srcLogString + "Remote socket closed while waiting for data.", LOGNAME, m_srcStreamID);
-
-            throwEx<runtime_error> ((utf8)"");
-        }
-
-        // update these details before we mess with anything
-        bandWidth::updateAmount(bandWidth::SOURCE_V1_RECV, rval);
-
-        // if we're here then we account for what we already had in the total
-        // so that we then don't skip the new data read with the original data
-        rval += m_remainderSize;
-        m_remainderSize = 0;
-        amt = rval;
-
-        if (m_streamData->syncToStream(m_remainderSize, m_remainder, amt,
-                    bitrate, type, buf, m_srcLogString))
-        {
-            m_denied = true;
-            throwEx<runtime_error>(m_srcLogString + "Shoutcast 1 source disconnected. "
-                    "Unable to sync to the stream. Please check the "
-                    "source is valid and in a supported format.");
-        }
-
-        m_lastActivityTime = ::time(NULL);
-        m_result.schedule(25);
-    }
-}
-
-void protocol_shoutcastSource::state_CloseConnection() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	m_result.done();
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_shoutcastSource.h b/Src/Plugins/DSP/sc_serv3/protocol_shoutcastSource.h
deleted file mode 100644
index b9116165..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_shoutcastSource.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#pragma once
-#ifndef protocol_shoutcastSource_H_
-#define protocol_shoutcastSource_H_
-
-#include "threadedRunner.h"
-#include <map>
-
-class streamData;
-
-/*
-	Runnable object that handles the shoutcast source (broadcaster)
-	protocol
-*/
-
-class protocol_shoutcastSource: public runnable
-{
-private:
-	const u_short			m_srcPort;
-	short unsigned int		m_remainderSize;
-	bool					m_denied;	// used to prevent source disconnected messages e.g. for failed passwords
-	// is a padding hole around here...
-	__uint8 *				m_remainder;
-	const uniString::utf8	m_srcAddr;
-	uniString::utf8			m_srcLogString;
-	uniString::utf8			m_srcUserID;
-	int						m_srcStreamID;
-	int						m_outBufferSize;
-	const uniString::utf8::value_type	*m_outBuffer; // for outgoing text lines
-	uniString::utf8			m_lineBuffer;	// received header line
-	httpHeaderMap_t			m_headers;		// the received source headers
-	streamData				*m_streamData;	// associated stream object
-
-	typedef void (protocol_shoutcastSource::*state_t)();
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	void state_ConfirmPassword() throw(std::exception);
-	void state_SendBuffer() throw(std::exception);
-	void state_GetLine() throw(std::exception);
-	void state_GetHeaders() throw(std::exception);
-	void state_AnalyzeHeaders() throw(std::exception);
-	void state_CloseConnection() throw(std::exception);
-	void state_GetStreamData() throw(std::exception);
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_shoutcastSource"; }
-
-public:
-	protocol_shoutcastSource (microConnection &mc, const uniString::utf8 &password) throw(std::exception);
-
-	protocol_shoutcastSource(const socketOps::tSOCKET s, const uniString::utf8 &addr,
-							 const u_short port, const uniString::utf8 &password) throw(std::exception);
-	virtual ~protocol_shoutcastSource() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_uvox2Source.cpp b/Src/Plugins/DSP/sc_serv3/protocol_uvox2Source.cpp
deleted file mode 100644
index f67d9df4..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_uvox2Source.cpp
+++ /dev/null
@@ -1,1010 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include "protocol_uvox2Source.h"
-#include "protocol_backup.h"
-#include "uvox2Common.h"
-#include "streamData.h"
-#include "global.h"
-#include "bandwidth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define DEBUG_LOG(...)  do { if (gOptions.uvox2SourceDebug()) DLOG(__VA_ARGS__); } while (0)
-#define LOGNAME         "SRC"
-
-
-protocol_uvox2Source::protocol_uvox2Source (microConnection &mc, const __uint8 *firstPacket, const int sizeOfFirstPacket) throw(exception)
-
-    : runnable (mc), m_srcPort(mc.m_srcPort), m_srcAddr(mc.m_srcHostName)
-{
-    m_srcLogString = srcAddrLogString (m_srcAddr, m_srcPort);
-    m_outData = new __uint8 [MAX_MESSAGE_SIZE];
-    m_remainder = new __uint8 [BUF_SIZE * 4];
-    m_remainderSize = 0;
-    m_srcStreamID = DEFAULT_SOURCE_STREAM;
-    m_outBuffer = NULL;
-    m_outBufferSize = 0;
-    m_flushCachedMetadata = false;
-    m_specialFileBytesExpected = 0;
-    m_denied = false;
-    m_streamData = NULL;
-    m_loop = 0;
-    m_state = &protocol_uvox2Source::state_SendCrypto;
-    m_nextState = NULL;
-
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	ILOG(m_srcLogString + "Shoutcast 2 source connection starting.", LOGNAME, m_srcStreamID);
-
-	m_configData.m_maxBitrate = 0;
-	m_configData.m_avgBitrate = 0;
-	m_configData.m_desiredBufferSize = 0;
-	m_configData.m_minimumBufferSize = 0;
-
-	if (sizeOfFirstPacket > MAX_MESSAGE_SIZE)
-	{
-		m_denied = true;
-		throw runtime_error(m_srcLogString.hideAsString() + "Initial data packet too large (" + tos(sizeOfFirstPacket) + ")");
-	}
-
-	bandWidth::updateAmount(bandWidth::SOURCE_V2_RECV, sizeOfFirstPacket);
-	m_inBuffer.insert(m_inBuffer.end(), firstPacket, firstPacket + sizeOfFirstPacket);
-}
-
-protocol_uvox2Source::~protocol_uvox2Source() throw()
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (m_streamData)
-	{
-		streamData::streamSourceLost(m_srcLogString, m_streamData, m_srcStreamID);
-		m_streamData = 0;
-	}
-
-	socketOps::forgetTCPSocket(m_socket);
-	forgetArray(m_outData);
-	forgetArray(m_remainder);
-
-	if (!m_denied)
-	{
-		ILOG(m_srcLogString + "Shoutcast 2 source disconnected.", LOGNAME, m_srcStreamID);
-	}
-}
-
-void protocol_uvox2Source::timeSlice() throw(std::exception)
-{
-	try
-	{
-		if (m_streamData && m_streamData->isDead())
-		{
-			m_result.done();
-			return;
-		}
-		(this->*m_state)();
-	}
-	catch(const exception &)
-	{
-        // if there was a failure, now see if we have a backup and attempt to run
-        // before we remove the current handling of the dropped source connection
-        vector<config::streamConfig> backupInfo = gOptions.getBackupUrl(m_srcStreamID);
-        if (!backupInfo.empty() && !m_denied)
-        {
-            m_denied = true;
-            if (m_streamData)
-            {
-                m_streamData->clearCachedMetadata();
-                streamData::streamSourceLost(m_srcLogString, m_streamData, m_srcStreamID);
-                m_streamData = 0;
-            }
-#ifdef INCLUDE_BACKUP_STREAMS
-            ILOG(m_srcLogString + "Shoutcast 2 source disconnected - trying source backup.", LOGNAME, m_srcStreamID);
-            threadedRunner::scheduleRunnable(new protocol_backup(backupInfo[0],
-                        max(m_configData.m_avgBitrate/1000, m_configData.m_maxBitrate/1000),
-                        m_configData.m_mimeType));
-#endif
-        }
-        throw;
-	}
-}
-
-void protocol_uvox2Source::state_CloseConnection() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	m_result.done();
-}
-
-void protocol_uvox2Source::state_SendBuffer() throw(exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	if (sendDataBuffer(m_srcStreamID, m_outBuffer, m_outBufferSize, m_srcLogString))
-	{
-		m_state = m_nextState;
-	}
-}
-
-void protocol_uvox2Source::state_GetPacket() throw(exception)
-{
-	time_t cur_time;
-
-    const int autoDumpTime = detectAutoDumpTimeout (cur_time, m_srcStreamID, (m_srcLogString + "Timeout waiting for data"));
-
-    while (true)
-    {
-        // calculate optimal read size
-        char buf[BUF_SIZE] = {0};
-        int amt = MAX_MESSAGE_SIZE;
-        int len = (int)m_inBuffer.size();
-
-        if (!len)
-        {
-            amt = UV2X_HDR_SIZE;
-        }
-        else if (len >= UV2X_HDR_SIZE)
-        {
-            amt = min(MAX_MESSAGE_SIZE, (int)((ntohs(reinterpret_cast<const uv2xHdr*>(&(m_inBuffer[0]))->msgLen) + UV2X_OVERHEAD) - len));
-        }
-        else
-        {
-            amt = min(MAX_MESSAGE_SIZE, (UV2X_OVERHEAD - len));
-        }
-
-        int rval = 0;
-        if ((rval = recv (buf, amt, 0x0)) < 1)
-        {
-            if (rval < 0)
-            {
-                m_loop = 0;
-                rval = socketOps::errCode();
-                if (rval == SOCKETOPS_WOULDBLOCK)
-                {
-                    m_result.schedule(75);
-                    m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-                    return;
-                }
-                WLOG (m_srcLogString + "Socket error while waiting for data. " + socketErrString(rval), LOGNAME, m_srcStreamID);
-            }
-            else
-                DLOG (m_srcLogString + "Remote socket closed while waiting for data.", LOGNAME, m_srcStreamID);
-
-            throwEx<runtime_error> ("");
-        }
-        if (rval < amt)
-            m_loop = 100000; // force a stop when processed.
-
-        m_lastActivityTime = ::time(NULL);
-        m_inBuffer.insert(m_inBuffer.end(), buf, buf + rval);
-
-        len = (int)m_inBuffer.size();
-        if ((len > 1) && (len <= UV2X_HDR_SIZE))
-        {
-            // check for sync byte as we cannot be
-            // certain of good data coming in from
-            // the connection and so we check it
-            int found = -1;
-            for (int i = 0; i < len - 1; i++)
-            {
-                // check for sync byte
-                if ((buf[i] == UVOX2_SYNC_BYTE) && (buf[i + 1] == 0))
-                {
-                    found = i;
-                    break;
-                }
-            }
-
-            // track what we've received for the bandwidth stats
-            bandWidth::updateAmount(bandWidth::SOURCE_V2_RECV, len);
-
-            if (found != -1)
-            {
-                // we need to re-sync and so need to
-                // clear the buffer and replace it
-                // according to the re-sync position
-                if (found > 0)
-                {
-                    DEBUG_LOG(m_srcLogString + "Shoutcast 2 source re-synced to stream [pos: " + tos(found) + "].");
-
-                    m_inBuffer.clear();
-
-                    // we insert in to the start of the buffer
-                    // what appears to be 'good' sync'd data.
-                    m_inBuffer.insert(m_inBuffer.end(), &buf[found], &buf[found] + rval - found);
-                }
-            }
-            else
-            {
-                // and then we clear out the buffer which
-                // is ok to do since we're trying to find
-                // the frame (as first or next in stream)
-                m_inBuffer.clear();
-            }
-
-            continue;
-        }
-        else if (len > MAX_MESSAGE_SIZE)
-        {
-            m_denied = true;
-            bandWidth::updateAmount(bandWidth::SOURCE_V2_RECV, rval);
-            throwEx<runtime_error>(m_srcLogString + "UVOX packet is too large"
-                    " [got: " + tos(len) + " bytes, max: " +
-                    tos(MAX_MESSAGE_SIZE) + " bytes]");
-        }
-        else if (len > UV2X_HDR_SIZE)
-        {
-            if ((int)(ntohs(reinterpret_cast<const uv2xHdr*>(&(m_inBuffer[0]))->msgLen) + UV2X_OVERHEAD) == len)
-            {
-                // got it
-                bandWidth::updateAmount(bandWidth::SOURCE_V2_RECV, rval);
-
-                m_result.run();
-                m_state = m_nextState;
-                return;
-            }
-        }
-    }
-}
-
-template<typename T>
-void protocol_uvox2Source::loadAndSendMsg(const T &msg, int type, state_t nextState) throw()
-{
-	formMessage(msg, type, m_outData, m_outBufferSize);
-	bandWidth::updateAmount(bandWidth::SOURCE_V2_SENT, m_outBufferSize);
-	m_outBuffer = m_outData;
-	m_state = &protocol_uvox2Source::state_SendBuffer;
-	m_nextState = nextState;
-}
-
-// load outbound message into buffer, and establish state to transition to after send
-#define SEND_AND_TRANSITION(msg, vtype, state)\
-	loadAndSendMsg(msg, vtype, state);\
-	m_result.write();\
-	m_result.run();\
-	return;
-
-// get a packet and then transition to indicated state
-#define GET_AND_TRANSITION(a)\
-	m_inBuffer.clear();\
-	m_state = &protocol_uvox2Source::state_GetPacket;\
-	m_nextState = a;\
-	m_result.run();\
-	m_result.read();\
-	m_result.timeoutSID(m_srcStreamID);\
-	return;
-
-// send a packet then transition to closed state
-#define SEND_AND_CLOSE(a, b)\
-	SEND_AND_TRANSITION(a, b, &protocol_uvox2Source::state_CloseConnection)
-
-// get next packet, without acknowledgement
-#define NEXT_PACKET\
-	m_inBuffer.clear();\
-	m_nextState = m_state;\
-	m_state = &protocol_uvox2Source::state_GetPacket;\
-	m_result.schedule();\
-	m_result.timeoutSID(m_srcStreamID);\
-	return;
-
-void protocol_uvox2Source::state_ConfirmPasswordGet() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	GET_AND_TRANSITION(&protocol_uvox2Source::state_ConfirmPassword);
-}
-
-void protocol_uvox2Source::state_SendCrypto() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	// parse the contents of the packet to get user,password,streamid etc.
-	const uv2xHdr *voxHdr = (const uv2xHdr*)(&(m_inBuffer[0]));
-	const __uint16 voxMsgType = ntohs(voxHdr->msgType);
-
-	if (voxMsgType != MSG_CIPHER)
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Out of sequence uvox packet. Got " + tos(voxMsgType) + " but expected " + tos(MSG_CIPHER), LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Sequence Error", voxMsgType);
-	}
-
-	const char *contents = (const char *)((&(m_inBuffer[UV2X_HDR_SIZE])));
-	if (strcmp(contents,"2.1"))
-	{
-		ELOG(m_srcLogString + "Cipher request has bad version (" + contents + ")", LOGNAME, m_srcStreamID);
-		SEND_AND_TRANSITION("NAK:Version Error", voxMsgType, &protocol_uvox2Source::state_ConfirmPasswordGet);
-	}
-
-	m_cipherKey = gOptions.stream_uvoxCipherKey(m_srcStreamID);
-	if (!gOptions.read_stream_uvoxCipherKey(m_srcStreamID) || m_cipherKey.empty())
-	{
-		m_cipherKey = gOptions.uvoxCipherKey();
-	}
-
-	SEND_AND_TRANSITION(("ACK:" + m_cipherKey).hideAsString(), voxMsgType, &protocol_uvox2Source::state_ConfirmPasswordGet);
-}
-
-// get stream,userID and password out of MSG_AUTH (0x1001) packet
-void protocol_uvox2Source::state_ConfirmPassword() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	// parse the contents of the packet to get user,password,streamid etc.
-	const uv2xHdr *voxHdr = (const uv2xHdr*)(&(m_inBuffer[0]));
-	const __uint16 voxMsgType = ntohs(voxHdr->msgType);
-
-	if (voxMsgType != MSG_AUTH)
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Out of sequence uvox packet. Got " + tos(voxMsgType) + " but expected " + tos(MSG_AUTH), LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Sequence Error", voxMsgType);
-	}
-
-	const char *contents = (const char *)((&(m_inBuffer[UV2X_HDR_SIZE])));
-	const char *pos = strstr(contents, ":");
-	if (!pos) 
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Bad uvox packet " + tos(voxMsgType) + ". No version field.", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Parse Error", voxMsgType);
-	}
-
-	std::string srcVersion = stripWhitespace(string(contents, pos));
-	if (srcVersion != "2.1") 
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Uvox version of type " + srcVersion + " is not accepted. Expecting 2.1", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Version Error", voxMsgType);
-	}
-
-	contents = pos+1;
-	pos = strstr(contents, ":");
-	if (!pos) 
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Bad uvox packet " + tos(voxMsgType) + ". No SID field.", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Parse Error", voxMsgType);
-	}
-
-	int sourceStreamID = atoi(string(contents, pos).c_str());
-	// ensure that only valid stream id's are allowed to connect (1 -> 2147483647)
-	if (!sourceStreamID || (sourceStreamID > INT_MAX))
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Bad Stream ID (" + tos(sourceStreamID) + "). Stream ID cannot be below 1 or above 2147483647.", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Stream ID Error", voxMsgType);
-	}
-
-	// if we have a moved stream then now we have the stream id
-	// then we need to check and block the source as applicable
-	utf8 movedUrl = gOptions.stream_movedUrl(sourceStreamID);
-	if (!movedUrl.empty())
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Shoutcast 2 source rejected. Stream is configured as having moved.", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Deny", voxMsgType);
-	}
-
-	m_srcStreamID = sourceStreamID;
-
-	// if stream configs are required then we have an error if we didn't find one
-	if (gOptions.requireStreamConfigs())
-	{
-		config::streamConfig stream;
-		if (!gOptions.getStreamConfig(stream, m_srcStreamID))
-		{
-			m_denied = true;
-			ELOG(m_srcLogString + "Shoutcast 2 source rejected. Stream " + tos(m_srcStreamID) + " must be defined in config file.", LOGNAME, m_srcStreamID);
-			SEND_AND_CLOSE("NAK:2.1:Stream ID Error", voxMsgType);
-		}
-	}
-
-	contents = pos+1;
-	pos = strstr(contents, ":");
-	if (!pos) 
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Bad uvox packet " + tos(voxMsgType) + ". No UID field.", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Parse Error", voxMsgType);
-	}
-	m_srcUserID = string(contents, pos);
-	if (!(m_srcUserID.size() % 16))
-	{
-		m_srcUserID = XTEA_decipher(m_srcUserID.c_str(), m_srcUserID.size(), m_cipherKey.c_str(), m_cipherKey.size());
-	}
-	else
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Bad username format. Size of parameters not matching specification.", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Parse Error", voxMsgType);
-	}
-
-	contents = pos + 1;
-	utf8 srcPassword = contents;
-
-	if (!(srcPassword.size() % 16))
-	{
-		srcPassword = XTEA_decipher(srcPassword.c_str(), srcPassword.size(), m_cipherKey.c_str(), m_cipherKey.size());
-	}
-	else
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Bad password format. Size of parameters not matching specification.", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Parse Error", voxMsgType);
-	}
-
-	// if no stream configuration is specified then we need to fallback
-	utf8 password = gOptions.stream_password(m_srcStreamID);
-	if (!gOptions.read_stream_password(m_srcStreamID) || password.empty())
-	{
-		password = gOptions.password();
-	}
-
-	// look at the password and check for the multi-1.x style support,
-	// extracting as needed so we are consistent with all other modes.
-	// note: we ignore the other parameters and just want 'password'.
-	utf8 dj_name;	// throw-away (equivalent of 'm_srcUserID')
-	extractPassword(srcPassword, dj_name, sourceStreamID);
-
-	if (srcPassword != password)
-	{
-		m_denied = true;
-		ELOG(m_srcLogString + "Shoutcast 2 source connection denied" + (m_srcUserID.empty() ? "" : " for user (" + m_srcUserID + ")") +
-			 " on stream #" + tos(m_srcStreamID) + ". " + (srcPassword.empty() ? "Empty password not allowed." : "Bad password: " + srcPassword), LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:2.1:Deny", voxMsgType);
-	}
-
-	// if we've got a source already connected and it's not a backup
-	// then it's better that we just abort processing now than later
-	bool isSourceActive = false;
-	streamData *sd = streamData::accessStream(m_srcStreamID, isSourceActive);
-	if (sd && (isSourceActive == true) && (sd->isBackupStream(m_srcStreamID) == false))
-	{
-		sd->releaseStream();
-		m_denied = true;
-		ELOG(m_srcLogString + "Shoutcast 2 source rejected. A source is already connected.", LOGNAME, m_srcStreamID);
-		SEND_AND_CLOSE("NAK:Stream In Use", voxMsgType);
-	}
-
-	if (sd)
-	{
-		sd->releaseStream();
-	}
-
-	m_srcLogString = srcAddrLogString(m_srcAddr, m_srcPort, m_srcStreamID);
-	DEBUG_LOG(m_srcLogString + "Password accepted. Stream id is " + tos(m_srcStreamID), LOGNAME, m_srcStreamID);
-	SEND_AND_TRANSITION("ACK:2.1:Allow", voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-}
-
-// first part of stream configuration state, get the next packet, then process it
-void protocol_uvox2Source::state_StreamConfigurationGet() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	GET_AND_TRANSITION(&protocol_uvox2Source::state_StreamConfiguration);
-}
-
-// handle various stream configuration packets
-// note: to allow real negotiation, most errors are rejected, but do not cause the connection to be shut
-void protocol_uvox2Source::state_StreamConfiguration() throw(std::exception)
-{
-	DEBUG_LOG(m_srcLogString + __FUNCTION__);
-
-	const uv2xHdr *voxHdr = (const uv2xHdr*)(&(m_inBuffer[0]));
-	const char *contents = (const char *)((&(m_inBuffer[UV2X_HDR_SIZE])));
-	const __uint16 voxMsgType = ntohs(voxHdr->msgType);
-
-	switch (voxMsgType)
-	{
-		case MSG_MIME_TYPE:
-		{
-			// this is mainly to cope with legacy / incomplete uvox2.x implementations
-			m_configData.m_mimeType = contents;
-			DEBUG_LOG(m_srcLogString + "original mime type=" + m_configData.m_mimeType, LOGNAME, m_srcStreamID);
-			m_configData.m_mimeType = fixMimeType(m_configData.m_mimeType);
-			DEBUG_LOG(m_srcLogString + "mime type=" + m_configData.m_mimeType, LOGNAME, m_srcStreamID);
-			break;
-		}
-		case MSG_BROADCAST_SETUP:
-		{
-			const char *pos = strstr(contents, ":");
-			if (!pos)
-			{
-				ELOG(m_srcLogString + "Bad uvox packet " + tos(voxMsgType) + ". No avg bitrate field.", LOGNAME, m_srcStreamID);
-				SEND_AND_TRANSITION("NAK:Parse Error", voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-			}
-			m_configData.m_avgBitrate = atoi(string(contents,pos).c_str());
-			contents = pos + 1;
-			m_configData.m_maxBitrate = atoi(contents);
-
-			// check that these bitrates are allowed (looking at both max and average values)
-			const int bitrate = max(m_configData.m_avgBitrate, m_configData.m_maxBitrate);
-			int streamMaxBitrate = 0, streamMinBitrate = 0;
-			const int ret = gOptions.isBitrateDisallowed(m_srcStreamID, bitrate, streamMaxBitrate, streamMinBitrate);
-			if (ret)
-			{
-				m_denied = true;
-				utf8 mode = ((streamMaxBitrate == streamMinBitrate) ? "of" : (ret == 2 ? "up to" : "from"));
-				ELOG(m_srcLogString + "Shoutcast 2 source rejected. Only bitrates " + mode + " " +
-					 tos((ret == 1 ? streamMinBitrate : streamMaxBitrate) / 1000) +
-					 " kbps are allowed - detected " + tos(bitrate / 1000) + " kbps.", LOGNAME, m_srcStreamID);
-				SEND_AND_CLOSE("NAK:Bit Rate Error", voxMsgType);
-			}
-
-			DEBUG_LOG(m_srcLogString + "avg bitrate=" + tos(m_configData.m_avgBitrate) + " max bitrate=" + tos(m_configData.m_maxBitrate), LOGNAME, m_srcStreamID);
-			break;
-		}
-		case MSG_NEGOTIATE_BUFFER_SIZE:
-		{
-			const char *pos = strstr(contents, ":");
-			if (!pos)
-			{
-				ELOG(m_srcLogString + "Bad uvox packet " + tos(voxMsgType) + ". No desired buffer size field.", LOGNAME, m_srcStreamID);
-				SEND_AND_TRANSITION("NAK:Parse Error", voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-			}
-			m_configData.m_desiredBufferSize = atoi(string(contents, pos).c_str());
-			contents = pos + 1;
-			m_configData.m_minimumBufferSize = atoi(contents);
-			DEBUG_LOG(m_srcLogString + "desired buffer size=" + tos(m_configData.m_desiredBufferSize) + " min buffer size=" + tos(m_configData.m_minimumBufferSize), LOGNAME, m_srcStreamID);
-			SEND_AND_TRANSITION("ACK:" + tos(m_configData.m_desiredBufferSize), voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-		}
-		case MSG_MAX_PAYLOAD_SIZE:
-		{
-			const char *pos = strstr(contents, ":");
-			if (!pos)
-			{
-				ELOG(m_srcLogString + "Bad uvox packet " + tos(voxMsgType) + ". Parse error.", LOGNAME, m_srcStreamID);
-				SEND_AND_TRANSITION("NAK:Parse Error", voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-			}
-			int max1 = atoi(string(contents, pos).c_str());
-			contents = pos + 1;
-			int max2 = atoi(contents);
-			DEBUG_LOG(m_srcLogString + "max payload size 1=" + tos(max1) + " max payload size 2=" + tos(max2), LOGNAME, m_srcStreamID);
-			int new_max = max(max1, max2);
-			if ((new_max > MAX_PAYLOAD_SIZE) || (new_max < 256))
-			{
-				ELOG(m_srcLogString + "Bad max payload size of " + tos(new_max), LOGNAME, m_srcStreamID);
-				SEND_AND_TRANSITION("NAK:Payload Size Error", voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-			}
-
-			SEND_AND_TRANSITION("ACK:" + tos(MAX_PAYLOAD_SIZE), voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-		}
-		case MSG_ICYNAME:
-		{
-			m_configData.m_icyName = contents;
-			utf8 titleFormat = gOptions.titleFormat();
-			if (!titleFormat.empty())
-			{
-				utf8::size_type pos = titleFormat.find(utf8("%s"));
-				m_configData.m_icyName = (pos == utf8::npos ? titleFormat : titleFormat.replace(pos, 2, m_configData.m_icyName));
-			}
-			DEBUG_LOG(m_srcLogString + "icy-name=" + m_configData.m_icyName, LOGNAME, m_srcStreamID);
-			break;
-		}
-		case MSG_ICYGENRE:
-		{
-			m_configData.m_icyGenre = contents;
-			DEBUG_LOG(m_srcLogString + "icy-genre=" + m_configData.m_icyGenre, LOGNAME, m_srcStreamID);
-			break;
-		}
-		case MSG_ICYURL:
-		{
-			m_configData.m_icyURL = contents;
-			if (m_configData.m_icyURL.empty())
-			{
-				m_configData.m_icyURL = "http://www.shoutcast.com";
-			}
-			utf8 urlFormat = gOptions.urlFormat();
-			if (!urlFormat.empty())
-			{
-				utf8::size_type pos = urlFormat.find(utf8("%s"));
-				m_configData.m_icyURL = (pos == utf8::npos ? urlFormat : urlFormat.replace(pos,2,m_configData.m_icyURL));
-			}
-			DEBUG_LOG(m_srcLogString + "icy-url=" + m_configData.m_icyURL, LOGNAME, m_srcStreamID);
-			break;
-		}
-		case MSG_ICYPUB:
-		{
-			m_configData.m_icyPub = atoi(contents);
-			DEBUG_LOG(m_srcLogString + "icy-pub=" + tos(m_configData.m_icyPub), LOGNAME, m_srcStreamID);
-			break;
-		}
-		case MSG_STANDBY:
-		{
-			DEBUG_LOG(m_srcLogString + "Standby", LOGNAME, m_srcStreamID);
-			if (m_streamData)
-			{
-				SEND_AND_CLOSE("NAK:Sequence Error", voxMsgType);
-			}
-			else
-			{
-				try
-				{
-					// build the correct path for the stream clients
-					config::streamConfig stream;
-					const bool found = gOptions.getStreamConfig(stream, m_srcStreamID);
-					m_streamData = streamData::createStream(streamData::streamSetup(m_srcLogString, m_srcAddr,
-															(found ? stream.m_authHash : ""), m_srcUserID, "",
-															(found ? stream.m_backupUrl.url() : ""),
-															streamData::SHOUTCAST2, m_srcStreamID, m_srcPort,
-															(found ? stream.m_maxStreamUser : 0),
-															(found ? stream.m_maxStreamBitrate : 0),
-															(found ? stream.m_minStreamBitrate : 0),
-															(found ? stream.m_allowPublicRelay : true),
-															false, 0, false, m_configData));
-				}
-				catch(const exception &ex)
-				{
-					ELOG(m_srcLogString + ex.what(), LOGNAME, m_srcStreamID);
-					SEND_AND_TRANSITION(string("NAK:") + ex.what(), voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-				}
-
-				if (!m_streamData)
-				{
-					m_denied = true;
-					ELOG(m_srcLogString + "Shoutcast 2 source rejected. A source is already connected.", LOGNAME, m_srcStreamID);
-					SEND_AND_CLOSE("NAK:Stream In Use", voxMsgType);
-				}
-				else
-				{
-					if (m_flushCachedMetadata)
-					{
-						m_streamData->clearCachedMetadata();
-						m_metadataAssemblyTable.clear();
-					}
-					m_flushCachedMetadata = false;
-				}
-			}
-			DEBUG_LOG(m_srcLogString + "Stream configuration complete. [" + eol() + m_configData.toLogString() + eol() + "]", LOGNAME, m_srcStreamID);
-			SEND_AND_TRANSITION("ACK:Data transfer mode", voxMsgType, &protocol_uvox2Source::state_StreamDataGet);
-		}
-		case MSG_FLUSH_CACHED_METADATA:
-		{
-			DEBUG_LOG(m_srcLogString + "Flush cached metadata", LOGNAME, m_srcStreamID);
-			m_metadataAssemblyTable.clear();
-			m_flushCachedMetadata = true;
-			break;
-		}
-		case MSG_TERMINATE:
-		{
-			DEBUG_LOG(m_srcLogString + "Terminate", LOGNAME, m_srcStreamID);
-			throwEx<runtime_error> ("");
-            break;
-		}
-		case MSG_LISTENER_AUTHENTICATION: // not supported, just ACK it
-		{
-			WLOG(m_srcLogString + "Listener Auth - not supported", LOGNAME, m_srcStreamID);
-			break;
-		}
-		default: // out of sequence
-		{
-			ELOG(m_srcLogString + "Unknown or out of sequence packet " + tos(voxMsgType), LOGNAME, m_srcStreamID);
-			SEND_AND_TRANSITION("NAK:Sequence Error", voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-		}
-	}
-
-	SEND_AND_TRANSITION("ACK", voxMsgType, &protocol_uvox2Source::state_StreamConfigurationGet);
-}
-
-// this is needed to allow the source to process the
-// response before starting to send the stream data
-void protocol_uvox2Source::state_StreamDataGet() throw(std::exception)
-{
-	GET_AND_TRANSITION(&protocol_uvox2Source::state_GetStreamData);
-}
-
-// normal streaming state
-void protocol_uvox2Source::state_GetStreamData() throw(std::exception)
-{
-	if (!m_inBuffer.empty())
-	{
-		const uv2xHdr *voxHdr = (const uv2xHdr*)(&(m_inBuffer[0]));
-		const __uint16 voxMsgType = ntohs(voxHdr->msgType);
-
-		if ((voxMsgType >= 0x7000) && (voxMsgType < 0x9000))
-		{
-			// if we have old uvox, then we don't know our mime-type (since old uvox 2 doesn't
-			// specify it, though 2.1 does). In the case that mime_type is empty, inspect the packet type and
-			// set it in the stream
-			if (m_configData.m_mimeType.empty())
-			{
-				switch (voxMsgType)
-				{
-					case MP3_DATA:
-					{
-						m_configData.m_mimeType = "audio/mpeg";
-						break;
-					}
-					case AAC_LC_DATA:
-					case AACP_DATA:
-					{
-						m_configData.m_mimeType = "audio/aacp";
-						break;
-					}
-					case OGG_DATA:
-					{
-						m_configData.m_mimeType = "audio/ogg";
-						break;
-					}
-				}
-
-				if (!m_configData.m_mimeType.empty())
-				{
-					m_streamData->streamSetMimeType(m_configData.m_mimeType);
-				}
-			}
-
-            __uint16 amt = ntohs(voxHdr->msgLen);
-            vector <__uint8>  tempbuf;
-            const char *buf;
-
-            // if we had anything left over then now we
-            // need to copy it back into the buffer
-            if (m_remainderSize > 0 && m_remainder)
-            {
-                tempbuf.insert (tempbuf.end(), m_remainder, m_remainder+m_remainderSize);
-                tempbuf.insert (tempbuf.end(), m_inBuffer.begin() + UV2X_HDR_SIZE, m_inBuffer.begin()+UV2X_HDR_SIZE+amt);
-                amt = (__uint16)tempbuf.size();
-                buf = (char *)&tempbuf[0];
-            }
-            else
-            {
-                // buf.insert (buf.end(), m_inBuffer.begin() + UV2X_HDR_SIZE, m_inBuffer.begin()+UV2X_HDR_SIZE+amt);
-                buf = (char*)&m_inBuffer [UV2X_HDR_SIZE];
-            }
-
-            m_remainderSize = 0;
-
-			int br = m_streamData->streamBitrate();
-			if (m_streamData->syncToStream (m_remainderSize, m_remainder, amt, br,
-										   m_streamData->streamUvoxDataType(), buf,
-										   m_srcLogString))
-			{
-				m_denied = true;
-				throwEx<runtime_error>(m_srcLogString + "Shoutcast 2 source disconnected. "
-									   "Unable to sync to the stream. Please check the "
-									   "source is valid and in a supported format.");
-			}
-            if (++m_loop < 20)
-            {
-                // force several small uvox packets to read/processed for now
-                m_inBuffer.clear();
-                m_nextState = m_state;
-                m_state = &protocol_uvox2Source::state_GetPacket;
-                m_result.run();
-                return;
-            }
-            m_loop = 0;
-		}
-		else if ((voxMsgType >= 0x3000) && (voxMsgType < 0x5000))
-		{
-			DEBUG_LOG(m_srcLogString + "Cacheable metadata received type=0x" + tohex(voxMsgType), LOGNAME, m_srcStreamID);
-			const __uint16 voxPayloadSize = ntohs(voxHdr->msgLen);
-			if (voxPayloadSize >= UV2X_META_HDR_SIZE) // make sure there's enough data
-			{
-				const __uint8 *contents = (const __uint8 *)((&(m_inBuffer[UV2X_HDR_SIZE])));
-				const uv2xMetadataHdr *metaHdr = reinterpret_cast<const uv2xMetadataHdr*>(contents);
-				const __uint16 metadataID = ntohs(metaHdr->id);
-				const __uint16 metadataSpan = ntohs(metaHdr->span);
-				const __uint16 metadataIndex = ntohs(metaHdr->index) - 1;
-				const __uint8* metadataContents = contents + UV2X_META_HDR_SIZE;
-				const size_t metadataContentsSize = voxPayloadSize - UV2X_META_HDR_SIZE;
-
-				if ((metadataSpan <= MAX_METADATA_FRAGMENTS) &&
-					(metadataSpan > 0) &&
-					(metadataIndex < MAX_METADATA_FRAGMENTS) &&
-					(metadataIndex < metadataSpan))
-				{
-					assemblyTableIndex_t ati = makeAssemblyTableIndex(voxMsgType, m_srcStreamID);
-					metadataEntry_t &me = m_metadataAssemblyTable[voxMsgType][ati];
-
-					if (metadataSpan != me.m_expectedFragments) // span changed, clear the entire thing
-					{
-						__uint16 expectedFragments = me.m_expectedFragments;
-						me.clear();
-						DEBUG_LOG(m_srcLogString + "Cacheable metadata reset due to span change [" + tos(metadataSpan) + "," + tos(expectedFragments) + "]", LOGNAME, m_srcStreamID);
-					}
-
-					me.m_expectedFragments = metadataSpan;
-					if (me.m_fragments[metadataIndex].m_isValid) // duplicate fragment, clear the entire thing
-					{
-						me.clear();
-						DEBUG_LOG(m_srcLogString + "Cacheable metadata reset due to duplicate fragment", LOGNAME, m_srcStreamID);
-					}
-
-					me.m_fragments[metadataIndex].m_isValid = true;
-					me.m_fragments[metadataIndex].m_fragment.insert(me.m_fragments[metadataIndex].m_fragment.end(),
-																	metadataContents, metadataContents + metadataContentsSize);
-
-					if ((++me.m_receivedFragments) == me.m_expectedFragments)
-					{
-						// assembly, send and clear
-						vector<__uint8> assembledData;
-						for (__uint16 x = 0; x < me.m_expectedFragments; ++x)
-						{
-							assembledData.insert(assembledData.end(), me.m_fragments[x].m_fragment.begin(), me.m_fragments[x].m_fragment.end());
-						}
-
-						// send
-						m_streamData->addUvoxMetadataAtCurrentPosition(voxMsgType,assembledData);
-
-						if (gOptions.uvox2SourceDebug())
-						{
-							if ((voxMsgType >= 0x3000) && (voxMsgType < 0x4000))
-							{
-								ILOG(m_srcLogString + "Got complete metadata message type=0x" + tohex(voxMsgType) +
-													  " [" + tos(assembledData.size()) + " bytes]" +
-													  " id=" + tos(metadataID) +
-													  " span=" + tos(metadataSpan) +
-													  " content=" + eol() + utf8(&(assembledData[0]), assembledData.size()), LOGNAME, m_srcStreamID);
-							}
-							else
-							{
-								ILOG(m_srcLogString + "Got complete metadata message type=0x" + tohex(voxMsgType) +
-													  " [" + tos(assembledData.size()) + " bytes]" +
-													  " id=" + tos(metadataID) +
-													  " span=" + tos(metadataSpan), LOGNAME, m_srcStreamID);
-							}
-						}
-						else
-						{
-							if ((voxMsgType >= 0x3000) && (voxMsgType < 0x4000))
-							{
-								utf8 currentSong, comingSoon;
-								std::vector<uniString::utf8> nextSongs;
-								m_streamData->getStreamNextSongs(m_srcStreamID, currentSong, comingSoon, nextSongs);
-
-								if (!currentSong.empty())
-								{
-									if (!comingSoon.empty())
-									{
-										ILOG(m_srcLogString + "Title update [now: \"" + currentSong + "\", next: \"" + comingSoon + "\"]", LOGNAME, m_srcStreamID);
-									}
-									else
-									{
-										ILOG(m_srcLogString + "Title update [" + currentSong + "]", LOGNAME, m_srcStreamID);
-									}
-									m_streamData->resetAdvertTriggers(currentSong);
-								}
-							}
-							else
-							{
-								utf8 mimeType[] = {
-									"image/jpeg",
-									"image/png",
-									"image/bmp",
-									"image/gif"
-								};
-
-								__uint16 ArtType = voxMsgType & 0x0F00;
-								if (!assembledData.size())
-								{
-									ILOG(m_srcLogString + ((ArtType & MSG_METADATA_PLAYING_ART) ? "Playing" : "Stream") + " artwork cleared", LOGNAME, m_srcStreamID);
-									m_streamData->clearCachedArtwork(((ArtType & MSG_METADATA_PLAYING_ART) ? 1 : 0));
-								}
-								else
-								{
-									ILOG(m_srcLogString + ((ArtType & MSG_METADATA_PLAYING_ART) ? "Playing" : "Stream") +
-										 " artwork update [mime=" + mimeType[(voxMsgType & 0x00FF)] + ", " + tos(assembledData.size()) + " bytes]", LOGNAME, m_srcStreamID);
-								}
-							}
-						}
-
-						// clear
-						m_metadataAssemblyTable[voxMsgType].erase(ati);
-					}
-				}
-				else
-				{
-					ELOG(m_srcLogString + "Badly formed metadata packet type=0x" + tohex(voxMsgType) + " id=" +
-						 tos(metadataID) + " span=" + tos(metadataSpan) + " index=" + tos(metadataIndex + 1), LOGNAME, m_srcStreamID);
-				}
-			}
-			else
-			{
-				ELOG(m_srcLogString + "Badly formed metadata packet type=0x" + tohex(voxMsgType) +
-					 " content of packet is too small payloadsize=" + tos(voxPayloadSize), LOGNAME, m_srcStreamID);
-			}
-		}
-		else if ((voxMsgType >= 0x5000) && (voxMsgType < 0x7000))
-		{
-			// pass thru metadata
-			DEBUG_LOG(m_srcLogString + "Pass thru metadata", LOGNAME, m_srcStreamID);
-			m_streamData->writeSc21(m_inBuffer); // like data, but don't write to sc1 buffers
-		}
-		else if (voxMsgType == MSG_FILE_TRANSFER_BEGIN)
-		{
-			const __uint8 *contents = (const __uint8 *)((&(m_inBuffer[UV2X_HDR_SIZE])));
-			const __uint8 *pos = (const __uint8*)strstr((const char *)contents, ":");
-			if (!pos)
-			{
-				ELOG(m_srcLogString + "Bad uvox packet " + tos(voxMsgType) + ". Parse error.", LOGNAME, m_srcStreamID);
-				SEND_AND_TRANSITION("NAK:Parse Error", voxMsgType, &protocol_uvox2Source::state_StreamDataGet);
-			}
-			m_specialFileType = toLower(string(contents, pos));
-			if ((m_specialFileType != "intro") && (m_specialFileType != "backup"))
-			{
-				ELOG(m_srcLogString + "Bad uvox packet " + tos(voxMsgType) + " Special file type (" + m_specialFileType + ") is not supported", LOGNAME, m_srcStreamID);
-				SEND_AND_TRANSITION("NAK:Type Error", voxMsgType, &protocol_uvox2Source::state_StreamDataGet);
-			}
-
-			contents = pos + 1;
-			m_specialFileBytesExpected = atoi((const char *)contents);
-			if (m_specialFileBytesExpected > gOptions.maxSpecialFileSize())
-			{
-				ELOG(m_srcLogString + "Bad special file size " + tos(m_specialFileBytesExpected) + ". Parse error.", LOGNAME, m_srcStreamID);
-				m_specialFileBytesExpected = 0;
-				SEND_AND_TRANSITION("NAK:Size Error",voxMsgType,&protocol_uvox2Source::state_StreamDataGet);
-			}
-
-			m_specialFileBytes.clear();
-			if (m_specialFileBytesExpected == 0)
-			{
-				ILOG(m_srcLogString + "Clearing " + m_specialFileType + " file.", LOGNAME, m_srcStreamID);
-				streamData::specialFileData &fd = (m_specialFileType == "intro" ? m_streamData->getIntroFile() : m_streamData->getBackupFile());
-				fd.replaceData(m_specialFileBytes, m_streamData->streamUvoxDataType(),
-							   m_streamData->streamBitrate(), m_streamData->streamSampleRate());
-			}
-			else
-			{
-				ILOG(m_srcLogString + "Beginning " + m_specialFileType + " file transfer of size " + tos(m_specialFileBytesExpected) + " bytes.", LOGNAME, m_srcStreamID);
-			}
-			SEND_AND_TRANSITION("ACK", voxMsgType, &protocol_uvox2Source::state_StreamDataGet);
-		}
-		else if (voxMsgType == MSG_FILE_TRANSFER_DATA)
-		{
-			// do not NAK or ACK this packet
-			if (m_specialFileBytesExpected > 0)
-			{
-				int amt = ntohs(voxHdr->msgLen);
-				if (amt > m_specialFileBytesExpected)
-				{
-					WLOG(m_srcLogString + "Received too many bytes during special file transfer for " + m_specialFileType + ". Data will be truncated", LOGNAME, m_srcStreamID);
-					amt = m_specialFileBytesExpected;
-				}
-
-				const __uint8 *contents = (const __uint8 *)((&(m_inBuffer[UV2X_HDR_SIZE])));
-				m_specialFileBytes.insert(m_specialFileBytes.end(), contents, contents + amt);
-				m_specialFileBytesExpected -= amt;
-				if (m_specialFileBytesExpected == 0)
-				{
-					streamData::specialFileData &fd = (m_specialFileType == "intro" ? m_streamData->getIntroFile() : m_streamData->getBackupFile());
-					fd.replaceData(m_specialFileBytes, m_streamData->streamUvoxDataType(),
-								   m_streamData->streamBitrate(), m_streamData->streamSampleRate());
-					m_specialFileBytes.clear();
-					string fileType = m_specialFileType;
-					fileType[0] -= ('a' - 'A');
-					ILOG(m_srcLogString + fileType + " file transfer complete.", LOGNAME, m_srcStreamID);
-				}
-			}
-		}
-		else if (voxMsgType == MSG_FLUSH_CACHED_METADATA)
-		{
-			ILOG(m_srcLogString + "Flush cached metadata", LOGNAME, m_srcStreamID);
-			m_streamData->clearCachedMetadata();
-			m_metadataAssemblyTable.clear();
-			SEND_AND_TRANSITION("ACK", voxMsgType, &protocol_uvox2Source::state_StreamDataGet);
-		}
-		else if (voxMsgType == MSG_TERMINATE)
-		{
-			ILOG(m_srcLogString + "Terminate", LOGNAME, m_srcStreamID);
-			throwEx<runtime_error> ("");
-		}
-		else
-		{
-			ELOG(m_srcLogString + "Unknown or out of sequence packet " + tos(voxMsgType), LOGNAME, m_srcStreamID);
-			if ((voxMsgType < 0x2000) && (voxMsgType != MSG_FILE_TRANSFER_DATA))
-			{
-				// probably have to NAK it
-				SEND_AND_TRANSITION("NAK:Unsupported packet type", voxMsgType, &protocol_uvox2Source::state_StreamDataGet);
-			}
-		}
-	}
-
-	NEXT_PACKET;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/protocol_uvox2Source.h b/Src/Plugins/DSP/sc_serv3/protocol_uvox2Source.h
deleted file mode 100644
index 1bd7343c..00000000
--- a/Src/Plugins/DSP/sc_serv3/protocol_uvox2Source.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#pragma once
-#ifndef protocol_uvox2Source_H_
-#define protocol_uvox2Source_H_
-
-#include "threadedRunner.h"
-#include "streamData.h"
-#include "uvox2Common.h"
-#include <map>
-
-class streamData;
-
-/*
-	Runnable object that handles the uvox 2 and 2.1 source (broadcaster)
-	protocol
-*/
-
-class protocol_uvox2Source: public runnable
-{
-private:
-	int						m_srcStreamID;
-	const u_short			m_srcPort;
-
-	bool					m_flushCachedMetadata;	// flush cached metadata when source connects
-	bool					m_denied;				// used to prevent source disconnected messages e.g. for failed passwords
-
-	const uniString::utf8	m_srcAddr;
-	uniString::utf8			m_srcLogString;
-
-	///////////// for outgoing data //////////////////////////////
-	__uint8					*m_outData;
-	const __uint8			*m_outBuffer; // for outgoing data lines
-	int						m_outBufferSize;
-	///////////////////////////////////////////////////////////////
-
-	/////////// temporary storage buffer for special file transfers (uvox 0x1050) /////////////////
-	int						m_specialFileBytesExpected;
-	std::vector<__uint8>	m_specialFileBytes;
-	std::string				m_specialFileType;
-
-	///////////// incoming data ////////////////////////////////////
-	std::vector<__uint8>	m_inBuffer;
-	////////////////////////////////////////////////////////////
-
-	streamData				*m_streamData; // associated stream object
-
-	///// source information
-	uniString::utf8	m_srcUserID;
-	uniString::utf8	m_cipherKey; // for uvox 2.1
-	streamData::uvoxConfigData_t	m_configData;
-
-	///////////////////////////////////////////////////////////////////////	
-	//// data structures for assembling cached metadata
-	typedef std::vector<__uint8>	metadataFragment_t;
-	struct metadataFragmentEntry_t
-	{
-		metadataFragment_t	m_fragment;
-		bool				m_isValid;
-
-		void clear() throw()
-		{
-			m_isValid = false;
-			m_fragment.clear();
-		}
-		metadataFragmentEntry_t() throw() : m_isValid(false) {}
-	};
-
-	typedef metadataFragmentEntry_t metadataFragmentCollection_t[MAX_METADATA_FRAGMENTS];
-	struct metadataEntry_t
-	{
-		metadataFragmentCollection_t	m_fragments;
-		__uint16						m_expectedFragments;
-		__uint16						m_receivedFragments;
-
-		void clear() throw()
-		{
-			for (int x = 0; x < MAX_METADATA_FRAGMENTS; ++x)
-			{
-				m_fragments[x].clear();
-			}
-			m_receivedFragments = 0;
-		}
-		metadataEntry_t() throw() : m_expectedFragments(0), m_receivedFragments(0) {}
-	};
-
-	typedef __uint32 assemblyTableIndex_t;
-	static assemblyTableIndex_t makeAssemblyTableIndex(__uint16 voxMsgType,__uint16 metadataID) throw() 
-	{
-		return ((((assemblyTableIndex_t)voxMsgType) << 16) | metadataID);
-	}
-
-	typedef std::map<assemblyTableIndex_t,metadataEntry_t> metadataAssemblyTable_t;
-	std::map<__uint16,metadataAssemblyTable_t> m_metadataAssemblyTable;
-	/////////////////////////////////////////////////////
-
-	typedef void (protocol_uvox2Source::*state_t)();
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	__uint8					*m_remainder;
-	short unsigned int		m_remainderSize;
-    int                     m_loop; // hack until the read handler can process more than 1 packet at a time
-
-	void state_SendBuffer() throw(std::exception);
-	void state_ConfirmPasswordGet() throw(std::exception);
-	void state_ConfirmPassword() throw(std::exception);
-	void state_SendCrypto() throw(std::exception);
-	void state_CloseConnection() throw(std::exception);
-	void state_StreamConfiguration() throw(std::exception);
-	void state_StreamConfigurationGet() throw(std::exception);
-	void state_GetPacket() throw(std::exception);
-	void state_StreamDataGet() throw(std::exception);
-	void state_GetStreamData() throw(std::exception);
-
-	template<typename T> void loadAndSendMsg(const T &msg,int type,state_t nextState) throw();
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "protocol_uvox2Source"; }
-
-public:
-    protocol_uvox2Source (microConnection &mc, const __uint8 *firstPacket, const int sizeOfFirstPacket) throw(exception);
-
-	protocol_uvox2Source(const socketOps::tSOCKET s, const uniString::utf8 &addr, const u_short port,
-						 const __uint8 *firstPacket, const int sizeOfFirstPacket) throw(std::exception);
-	virtual ~protocol_uvox2Source() throw();
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/readme.txt b/Src/Plugins/DSP/sc_serv3/readme.txt
deleted file mode 100644
index e7daea4d..00000000
--- a/Src/Plugins/DSP/sc_serv3/readme.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-Building sc_serv2
------------------
-
-The build dependencies for sc_serv2 are expat and zlib and these already have a pre-built
-library stored in the 'libs' folder. Otherwise everything else is built from the contents
-of the sc_serv3 folder so the libs only need to be updated rarely.
-
-It is assumed in all cases that there is a valid gcc + g++ tool chain in place along with
-all standard libraries for building tools on the platform being used.
-
-
-Win32 / Win64
--------------
-
-The MSVC 2008 project builds straight from here with it using the pre-built libraries.
-
-As from DNAS v2.6, additional libcurl, libssl & libcrypto .lib files are required.
-External zip files can be downloaded from the Nullsoft github repo:
-https://github.com/Radionomy/Nullsoft/blob/master/Shoutcast/sc_serv3/deps/win32.7z
-https://github.com/Radionomy/Nullsoft/blob/master/Shoutcast/sc_serv3/deps/win64.7z
-
-Extract locally to Shoutcast\sc_serv3\deps
-
-
-BSD / Mac OS X / Linux
-----------------------
-
-The following is only needed if there is an update of the dependency library current
-setup requires building expat before you can build sc_serv2 itself (not ideal but as it
-is usually a build once event on the dependencies then it isn't too much of an issue...).
-
-EXPAT
------
-
-In most cases just running ./unix_build_expat in the aolxml folder will build it.
-
-
-ZLIB
-----
-
-./configure --static && make
-
-May also need to set (or applicable):
-
-    export CC="/usr/bin/gcc44"
-
-in order to get it using the desired version of GCC on the system used to build this.
-
-
------------
-
-Once all of the dependencies have been built then you just need to do "(g)make release"
-to get a build. The make stage accepts the following modes:
-
-    clean
-    release
-    fire
-    debug
-
-
-Building on Centos 7 (on x64)
------------------------------
-Packages to install to enable compilation
-    sudo yum install gcc-c++
-    sudo yum install openssl-devel
-    sudo yum install libstdc++-static
-    
-    curl http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/libcurl-devel-7.61.1-22.el8.x86_64.rpm > libcurl-devel.rpm
-    sudo rpm install libcur-devel.rpm
-
-If the directory deps/x86_64/lib does not exists create it
-    mkdir -p deps/x86_64/lib
-Copy the static dependencies to this directory
-    cp libs/Aol_XML/Linux_x86_64/libexpat.a deps/x86_64/lib/
-    cp libs/zlib/Linux_x86_64/libz.a deps/x86_64/lib/
-
-Notes
------
-
-Building assumes that both the C and C++ compilers are correctly setup on the machine.
-When doing the linux build on ubuntu 10.10 the g++ compiler was not available leading to
-"error trying to exec 'cc1plus' execvp" errors during building. The fix is:
-
-    sudo apt-get install g++
-
-When doing the linux build on Centos 5.5 the g++ compiler was not available leading to
-"gcc: error trying to exec 'cc1plus': execvp: No such file or directory". The fix is:
-
-    yum install gcc-c++
diff --git a/Src/Plugins/DSP/sc_serv3/resource.h b/Src/Plugins/DSP/sc_serv3/resource.h
deleted file mode 100644
index e16fd8f7..00000000
--- a/Src/Plugins/DSP/sc_serv3/resource.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by sc_serv.rc
-//
-#define IDI_ICY                         101
-
-// Next default values for new objects
-// 
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        102
-#define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1001
-#define _APS_NEXT_SYMED_VALUE           101
-#endif
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/ripList.cpp b/Src/Plugins/DSP/sc_serv3/ripList.cpp
deleted file mode 100644
index b7e9348f..00000000
--- a/Src/Plugins/DSP/sc_serv3/ripList.cpp
+++ /dev/null
@@ -1,391 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#else
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#endif
-
-#include <algorithm>
-#include <stdio.h>
-#include "ripList.h"
-#include "global.h"
-#include "stl/stringUtils.h"
-#include "macros.h"
-#include "webNet/socketOps.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-#include <assert.h>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-#define LOGNAME "[RIP] "
-
-#ifdef _WIN32
-typedef unsigned long in_addr_t;
-#endif
-
-ripList g_ripList;
-
-class ripList::impl
-{
-private:
-	struct ripEntrySave
-	{
-		FILE *f;
-		size_t stream_ID;
-	};
-
-	struct ripEntry: public rip_t
-	{
-		in_addr_t	m_ip;		// ip as binary type. Old style, but that's how the old sc_serv did it and we'll
-								// continue to do it that way until we're ready to break the old software
-
-		void save(ripEntrySave entrySave) throw(exception)
-		{
-			if (m_stream_ID == entrySave.stream_ID)
-			{
-				utf8 s(m_numericIP + eol());
-				if (fwrite(s.c_str(),1,s.size(),entrySave.f) != s.size())
-				{
-					throwEx<tagged_error>(LOGNAME "I/O error writing " + (!entrySave.stream_ID ? "global" : "sid=" + tos(entrySave.stream_ID)) + " rip file");
-				}
-			}
-		}
-
-		bool validIP() throw()
-		{
-			return ((m_ip != INADDR_NONE) && (m_ip != 0));
-		}
-
-		static in_addr_t stringToIP(const utf8 &sIP, utf8 &hostIP)
-		{
-			// default is to assume a raw IP address in the list
-			in_addr_t ip =  inet_addr((const char *)sIP.c_str());
-			if (ip == INADDR_NONE)
-			{
-				// though if that fails then attempt to
-				// get an IP address from a hostname...
-				string sHost;
-				try
-				{
-					sHost = socketOps::hostNameToAddress(sIP.hideAsString());
-				}
-				catch(...)
-				{
-				}
-				if (!sHost.empty())
-				{
-					ip =  inet_addr((const char *)sHost.c_str());
-					if (ip != INADDR_NONE)
-					{
-						hostIP = sHost;
-					}
-				}
-			}
-			return ip;
-		}
-
-		ripEntry(const utf8 &numericIP, const size_t stream_ID) throw() : rip_t(numericIP, stream_ID), m_ip(stringToIP(numericIP, m_hostIP)) {}
-		ripEntry() throw() : m_ip(0) {}
-	};
-
-	AOL_namespace::mutex	m_lock;
-	list<ripEntry>			m_list;
-
-public:
-	bool load(const uniFile::filenameType &fn, size_t stream_ID) throw(exception)
-	{
-		if (fn.empty())
-		{
-			throwEx<tagged_error>(LOGNAME "No " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip file");
-		}
-		else if (gOptions.microServerDebug())
-		{
-			DLOG(LOGNAME "Attempting to read rip file: " + fileUtil::getFullFilePath(fn));
-		}
-
-		stackLock sml(m_lock);
-
-		FILE *f = uniFile::fopen(fn,"rb");
-		if (!f) return false;
-
-		bool updating = (!m_list.empty());
-		m_list.clear();
-
-		try 
-		{
-			int l = 0;
-			int count = 0;
-			while (true)
-			{
-				char buffer[4096] = {0};
-
-				if (!fgets(buffer, sizeof(buffer), f)) break; // get a line
-
-				++l; // increment line counter
-
-				utf8 s;
-
-				// skip utf-8 BOM
-				if ((strlen(buffer) > 2) &&
-					(((unsigned char*)buffer)[0] == 0xef) &&
-					(((unsigned char*)buffer)[1] == 0xbb) &&
-					(((unsigned char*)buffer)[2] == 0xbf))
-				{
-					s = &(buffer[3]);
-				}
-				else
-				{
-					s = buffer;
-				}
-
-				ripEntry e(stripWhitespace(s),stream_ID);
-
-				if (!e.validIP())
-				{
-					WLOG(LOGNAME "Line " + tos(l) + " of " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip list has been ignored (bad IP)");
-				}
-				else
-				{
-					if (this->find(e.m_numericIP,e.m_stream_ID,false) == false)
-					{
-						m_list.push_back(e);
-						++count;
-					}
-				}
-			}
-			if (!updating)
-			{
-				if (count > 0)
-				{
-					ILOG(LOGNAME "Reserved " + tos(count) + " IP" + (count != 1 ? "'s" : "") +
-								 " from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip file");
-				}
-				else if (gOptions.microServerDebug())
-				{
-					DLOG(LOGNAME "No IPs read from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip file");
-				}
-			}
-			else
-			{
-				ILOG(LOGNAME "Reloaded " + tos(count) + " Reserved IP" + (count != 1 ? "'s" : "") +
-					 " from " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) + " rip file");
-			}
-		}
-		catch(...)
-		{
-			if (f) ::fclose(f);
-			throw;
-		}
-		if (f) ::fclose(f);
-		return true;
-	}
-
-	void save(const uniFile::filenameType &fn,size_t stream_ID) throw(exception)
-	{
-		stackLock sml(m_lock);
-
-		FILE *f = uniFile::fopen(fn,"wb");
-		if (!f)
-		{
-			throwEx<tagged_error>(LOGNAME "Could not open " + (!stream_ID ? "global" : "sid=" + tos(stream_ID)) +
-								  " rip file `" + fn + "' for writing (" + errMessage().hideAsString() + ")");
-		}
-		try 
-		{
-			ripEntrySave entrySave;
-			entrySave.f = f;
-			entrySave.stream_ID = stream_ID;
-			for_each(m_list.begin(),m_list.end(),bind2nd(mem_fun_ref(&ripEntry::save),entrySave));
-		}
-		catch(...)
-		{
-			if (f) ::fclose(f);
-			throw;
-		}
-		if (f) ::fclose(f);
-
-		if (!uniFile::fileSize(fn))
-		{
-			uniFile::unlink(fn);
-		}
-	}
-
-	bool add(const utf8 &ipAddr, const size_t stream_ID, const bool soft) throw(exception)
-	{
-		// skip loopback addresses as we treat them specially anyway
-		if ((ipAddr.find(utf8("127.")) == utf8::npos))
-		{
-			ripEntry e(ipAddr, stream_ID);
-			if (!e.validIP())
-			{
-				if (!soft)
-				{
-					throwEx<runtime_error>(LOGNAME "Invalid IP specified - `" + ipAddr + "'");
-				}
-				else
-				{
-					return false;
-				}
-			}
-
-			stackLock sml(m_lock);
-			m_list.push_back(e);
-			return true;
-		}
-		return false;
-	}
-
-	// true if removed
-	bool remove(const utf8 &ipAddr, const size_t stream_ID, const bool allStream, const bool fallback = false, const bool use_lock = true)
-	{
-		if (use_lock)
-		{
-			stackLock sml(m_lock);
-		}
-
-		for (list<ripEntry>::iterator i = m_list.begin(); i != m_list.end(); ++i)
-		{
-			if (
-				(allStream || ((!allStream && ((*i).m_numericIP == ipAddr)) || ((*i).m_hostIP == ipAddr))) &&
-				((*i).m_stream_ID == stream_ID))
-			{
-				m_list.erase(i);
-				return true;
-			}
-		}
-
-		// attempt to see if we've got a hostname which has not been detected from the loading mapping
-		if (!fallback)
-		{
-			string sHost;
-			try
-			{
-				sHost = socketOps::hostNameToAddress(ipAddr.hideAsString());
-			}
-			catch(...)
-			{
-			}
-			if (!sHost.empty())
-			{
-				return remove(sHost, stream_ID, allStream, true, false);
-			}
-		}
-
-		return false;
-	}
-
-	// true if found
-	bool find(const utf8 &ipAddr, const size_t stream_ID, const bool use_lock = true) throw()
-	{
-		if (use_lock)
-		{
-			stackLock sml(m_lock);
-		}
-
-		if (!m_list.empty())
-		{
-			for (list<ripEntry>::const_iterator i = m_list.begin(); i != m_list.end(); ++i)
-			{
-				if (((*i).m_stream_ID == stream_ID) &&
-					((ipAddr == (*i).m_numericIP) || (ipAddr == (*i).m_hostIP)))
-				{
-					return true;
-				}
-			}
-		}
-
-		return false;
-	}
-
-	void get(std::vector<ripList::rip_t> &rl, size_t stream_ID) throw()
-	{
-		stackLock sml(m_lock);
-
-		for (list<ripEntry>::const_iterator i = m_list.begin(); i != m_list.end(); ++i)
-		{
-			if ((*i).m_stream_ID == stream_ID)
-			{
-				rl.push_back(*i);
-			}
-		}
-	}
-};
-
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-ripList::ripList() : m_impl(0)
-{
-	m_impl = new ripList::impl;
-}
-
-ripList::~ripList() throw()
-{
-	forget(m_impl);
-}
-
-bool ripList::load(const uniFile::filenameType &fn, size_t stream_ID) throw()
-{
-	assert(m_impl);
-
-	bool result(false);
-
-	try
-	{
-		result = m_impl->load(fn,stream_ID);
-	}
-	catch(const exception &ex)
-	{
-		ELOG(ex.what());
-	}
-	return result;
-}
-
-bool ripList::save(const uniFile::filenameType &fn, size_t stream_ID) throw()
-{
-	assert(m_impl);
-
-	bool result(false);
-
-	try
-	{
-		m_impl->save(fn,stream_ID);
-		result = true;
-	}
-	catch(const exception &ex)
-	{
-		ELOG(ex.what());
-	}
-	return result;
-}
-
-// throws if parameters are invalid
-bool ripList::add(const utf8 &ipAddr, const size_t stream_ID, const bool soft) throw(exception)
-{
-	assert(m_impl);
-	return m_impl->add(ipAddr, stream_ID, soft);
-}
-
-// true if removed
-bool ripList::remove(const utf8 &ipAddr, const size_t stream_ID, const bool allStream) throw()
-{
-	assert(m_impl);
-	return m_impl->remove(ipAddr, stream_ID, allStream);
-}
-
-// true if found
-bool ripList::find(const utf8 &ipAddr, const size_t stream_ID) throw()
-{
-	assert(m_impl);
-	return m_impl->find(ipAddr, stream_ID);
-}
-
-void ripList::get(vector<ripList::rip_t> &bl, const size_t stream_ID) throw()
-{
-	assert(m_impl);
-	m_impl->get(bl, stream_ID);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/ripList.h b/Src/Plugins/DSP/sc_serv3/ripList.h
deleted file mode 100644
index 9ae418a2..00000000
--- a/Src/Plugins/DSP/sc_serv3/ripList.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-#ifndef ripList_H_
-#define ripList_H_
-
-#include "unicode/uniFile.h"
-
-// class that manages lists of reserved IPs
-// these are remote addresses that must always be allowed in no matter what.
-
-class ripList
-{
-private:
-	class impl;
-	impl	*m_impl;
-
-public:
-	struct rip_t
-	{
-		uniString::utf8		m_numericIP;
-		uniString::utf8		m_hostIP;		// used to hold the converted IP from a hostname
-		size_t				m_stream_ID;	// used to differentiate
-
-		rip_t(const uniString::utf8 &numericIP, const size_t stream_ID) throw() : m_numericIP(numericIP), m_stream_ID(stream_ID) {}
-		rip_t() throw() : m_stream_ID(0) {}
-	};
-
-	// throws if parameters are invalid
-	bool add(const uniString::utf8 &ipAddr, const size_t stream_ID, const bool soft) throw(std::exception);
-	// true if removed
-	bool remove(const uniString::utf8 &ipAddr, const size_t stream_ID, const bool allStream) throw();
-	// true if found
-	bool find(const uniString::utf8 &ipAddr, const size_t stream_ID) throw();
-
-	bool load(const uniFile::filenameType &fn, const size_t stream_ID) throw();
-	bool save(const uniFile::filenameType &fn, const size_t stream_ID) throw();
-
-	ripList();
-	~ripList() throw();
-
-	// for web administration reference
-	void get(std::vector<rip_t> &rl, size_t stream_ID) throw();
-};
-
-extern ripList g_ripList;
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/sc_serv.rc b/Src/Plugins/DSP/sc_serv3/sc_serv.rc
deleted file mode 100644
index 080ed630..00000000
--- a/Src/Plugins/DSP/sc_serv3/sc_serv.rc
+++ /dev/null
@@ -1,112 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE 
-BEGIN
-    "resource.h\0"
-END
-
-2 TEXTINCLUDE 
-BEGIN
-    "#include ""afxres.h""\r\n"
-    "\0"
-END
-
-3 TEXTINCLUDE 
-BEGIN
-    "\r\n"
-    "\0"
-END
-
-#endif    // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 777,21,01,2023
- PRODUCTVERSION 2,6,1,777
- FILEFLAGSMASK 0x17L
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x1L
- FILESUBTYPE 0x0L
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-        BLOCK "040904b0"
-        BEGIN
-            VALUE "CompanyName", "Radionomy SA"
-            VALUE "FileDescription", "Shoutcast DNAS v2.6.1"
-            VALUE "FileVersion", "777, 21, 01, 2022"
-            VALUE "InternalName", "sc_serv.exe"
-            VALUE "LegalCopyright", "Copyright � 2014-2023 Radionomy SA"
-            VALUE "LegalTrademarks", "Shoutcast is a trademark of Radionomy SA"
-            VALUE "OriginalFilename", "sc_serv.exe"
-            VALUE "ProductName", "Shoutcast DNAS v2.6.1"
-            VALUE "ProductVersion", "2, 6, 1, 777"
-        END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x409, 1200
-    END
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_ICY                 ICON                    "icy.ico"
-#endif    // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif    // not APSTUDIO_INVOKED
-
diff --git a/Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj b/Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj
deleted file mode 100644
index 4d3d1187..00000000
--- a/Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj
+++ /dev/null
@@ -1,393 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <VCProjectVersion>17.0</VCProjectVersion>
-    <ProjectGuid>{5A93B2EA-61E0-4079-A002-06B4EA498853}</ProjectGuid>
-    <RootNamespace>sc_serv</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    <WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v142</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v142</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>false</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v142</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v142</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>false</WholeProgramOptimization>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
-    <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-    <LinkIncremental>false</LinkIncremental>
-    <IncludePath>$(IncludePath)</IncludePath>
-    <LibraryPath>$(LibraryPath)</LibraryPath>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
-    <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
-    <LinkIncremental>false</LinkIncremental>
-    <GenerateManifest>false</GenerateManifest>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
-    <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
-    <GenerateManifest>false</GenerateManifest>
-    <LinkIncremental>false</LinkIncremental>
-    <IncludePath>$(IncludePath)</IncludePath>
-    <LibraryPath>$(LibraryPath)</LibraryPath>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
-    <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
-    <LinkIncremental>false</LinkIncremental>
-    <GenerateManifest>false</GenerateManifest>
-  </PropertyGroup>
-  <PropertyGroup Label="Vcpkg">
-    <VcpkgEnableManifest>false</VcpkgEnableManifest>
-    <VcpkgEnabled>true</VcpkgEnabled>
-  </PropertyGroup>
-  <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <VcpkgUseStatic>false</VcpkgUseStatic>
-    <VcpkgInstalledDir>
-    </VcpkgInstalledDir>
-    <VcpkgConfiguration>Debug</VcpkgConfiguration>
-    <VcpkgTriplet>x86-windows-static</VcpkgTriplet>
-  </PropertyGroup>
-  <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <VcpkgInstalledDir>
-    </VcpkgInstalledDir>
-    <VcpkgUseStatic>false</VcpkgUseStatic>
-    <VcpkgTriplet>x86-windows-static</VcpkgTriplet>
-  </PropertyGroup>
-  <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <VcpkgInstalledDir>
-    </VcpkgInstalledDir>
-    <VcpkgUseStatic>false</VcpkgUseStatic>
-    <VcpkgTriplet>x86-windows-static</VcpkgTriplet>
-    <VcpkgConfiguration>Debug</VcpkgConfiguration>
-  </PropertyGroup>
-  <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <VcpkgInstalledDir>
-    </VcpkgInstalledDir>
-    <VcpkgUseStatic>false</VcpkgUseStatic>
-    <VcpkgTriplet>x86-windows-static</VcpkgTriplet>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;nmrCommon;GeoIP\libGeoIP;..\..\..\external_dependencies\vcpkg\$(PlatformShortName)-windows-static\include;.\deps\win32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;WINVER=0x0601;XML_STATIC;_DEBUG;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>false</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <DisableSpecificWarnings>4290;4996;4512;4505;4244;4127;4100;4057;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>crypt32.lib;version.lib;ws2_32.lib;shlwapi.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <GenerateMapFile>true</GenerateMapFile>
-      <SubSystem>Console</SubSystem>
-      <LargeAddressAware>true</LargeAddressAware>
-      <TargetMachine>MachineX86</TargetMachine>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>nmrCommon;deps\win64\include;GeoIP\libGeoIP;libcurl\include;pthread-win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0500;WINVER=0x0500;ZLIB_WINAPI;CURL_STATICLIB;XML_STATIC;PTW32_STATIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>false</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <DisableSpecificWarnings>4290;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>crypt32.lib;version.lib;ws2_32.lib;shlwapi.lib;wldap32.lib;expat.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>LinkVerboseLib</ShowProgress>
-      <AdditionalLibraryDirectories>$(ProjectDir)..\..\..\external_dependencies\expat\$(PlatformShortName)_$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <GenerateMapFile>true</GenerateMapFile>
-      <SubSystem>Console</SubSystem>
-      <LargeAddressAware>true</LargeAddressAware>
-      <TargetMachine>MachineX64</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>.;nmrCommon;GeoIP\libGeoIP;..\..\..\external_dependencies\vcpkg\$(PlatformShortName)-windows-static\include;.\deps\win32\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;WINVER=0x0601;XML_STATIC;NDEBUG;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <DisableSpecificWarnings>4290;4996;4512;4505;4244;4127;4100;4057;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>crypt32.lib;version.lib;ws2_32.lib;shlwapi.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <LargeAddressAware>true</LargeAddressAware>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <GenerateMapFile>true</GenerateMapFile>
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
-      <AdditionalIncludeDirectories>nmrCommon;GeoIP\libGeoIP;deps\win64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0500;WINVER=0x0500;ZLIB_WINAPI;CURL_STATICLIB;XML_STATIC;PTW32_STATIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <DisableSpecificWarnings>4290;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-    </ClCompile>
-    <ProjectReference>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>crypt32.lib;version.lib;ws2_32.lib;shlwapi.lib;wldap32.lib;expat.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <ShowProgress>NotSet</ShowProgress>
-      <AdditionalLibraryDirectories>$(ProjectDir)..\..\..\external_dependencies\expat\$(PlatformShortName)_$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <LargeAddressAware>true</LargeAddressAware>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
-      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="adminList.cpp" />
-    <ClCompile Include="ADTSHeader.cpp" />
-    <ClCompile Include="agentList.cpp" />
-    <ClCompile Include="aolxml\aolxml.cpp" />
-    <ClCompile Include="aolxml\aolxmlutils.cpp" />
-    <ClCompile Include="auth.cpp" />
-    <ClCompile Include="bandwidth.cpp" />
-    <ClCompile Include="banList.cpp" />
-    <ClCompile Include="base64.cpp" />
-    <ClCompile Include="cache.cpp" />
-    <ClCompile Include="config.cpp" />
-    <ClCompile Include="cpucount.cpp" />
-    <ClCompile Include="filenameMetadata.cpp" />
-    <ClCompile Include="FLV.cpp" />
-    <ClCompile Include="GeoIP\libGeoIP\GeoIP.c" />
-    <ClCompile Include="GeoIP\libGeoIP\md5.c" />
-    <ClCompile Include="GeoIP\libGeoIP\regionName.c" />
-    <ClCompile Include="GeoIP\libGeoIP\timeZone.c" />
-    <ClCompile Include="global.cpp" />
-    <ClCompile Include="main.cpp" />
-    <ClCompile Include="metadata.cpp" />
-    <ClCompile Include="metrics.cpp" />
-    <ClCompile Include="MP3Header.cpp" />
-    <ClCompile Include="nmrCommon\file\fileUtils.cpp" />
-    <ClCompile Include="nmrCommon\services\baseOptions.cpp" />
-    <ClCompile Include="nmrCommon\services\logger.cpp" />
-    <ClCompile Include="nmrCommon\services\serviceMain.cpp" />
-    <ClCompile Include="nmrCommon\services\stdServiceImpl.cpp" />
-    <ClCompile Include="nmrCommon\threading\thread.cpp" />
-    <ClCompile Include="nmrCommon\unicode\uniFile.cpp" />
-    <ClCompile Include="nmrCommon\unicode\uniString.cpp" />
-    <ClCompile Include="nmrCommon\win32\rezFuncs.cpp" />
-    <ClCompile Include="protocol_admincgi.cpp" />
-    <ClCompile Include="protocol_backup.cpp" />
-    <ClCompile Include="protocol_FlashPolicyServer.cpp" />
-    <ClCompile Include="protocol_flvClient.cpp" />
-    <ClCompile Include="protocol_HTTPClient.cpp" />
-    <ClCompile Include="protocol_HTTPSource.cpp" />
-    <ClCompile Include="protocol_HTTPStyle.cpp" />
-    <ClCompile Include="protocol_m4aClient.cpp" />
-    <ClCompile Include="protocol_relay.cpp" />
-    <ClCompile Include="protocol_relay_shoutcast.cpp" />
-    <ClCompile Include="protocol_relay_uvox.cpp" />
-    <ClCompile Include="protocol_shoutcast1Client.cpp" />
-    <ClCompile Include="protocol_shoutcast2Client.cpp" />
-    <ClCompile Include="protocol_shoutcastClient.cpp" />
-    <ClCompile Include="protocol_shoutcastSource.cpp" />
-    <ClCompile Include="protocol_uvox2Source.cpp" />
-    <ClCompile Include="ripList.cpp" />
-    <ClCompile Include="stats.cpp" />
-    <ClCompile Include="streamData.cpp" />
-    <ClCompile Include="threadedRunner.cpp" />
-    <ClCompile Include="updater.cpp" />
-    <ClCompile Include="uvox2Common.cpp" />
-    <ClCompile Include="w3cLog.cpp" />
-    <ClCompile Include="webClient.cpp" />
-    <ClCompile Include="webNet\socketOps.cpp" />
-    <ClCompile Include="webNet\urlUtils.cpp" />
-    <ClCompile Include="yp2.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="adminList.h" />
-    <ClInclude Include="ADTSHeader.h" />
-    <ClInclude Include="agentList.h" />
-    <ClInclude Include="aolxml\aolxml.h" />
-    <ClInclude Include="auth.h" />
-    <ClInclude Include="bandwidth.h" />
-    <ClInclude Include="banList.h" />
-    <ClInclude Include="base64.h" />
-    <ClInclude Include="cache.h" />
-    <ClInclude Include="config.h" />
-    <ClInclude Include="cpucount.h" />
-    <ClInclude Include="FLV.h" />
-    <ClInclude Include="GeoIP\libGeoIP\GeoIP.h" />
-    <ClInclude Include="GeoIP\libGeoIP\GeoIP_internal.h" />
-    <ClInclude Include="GeoIP\libGeoIP\global.h" />
-    <ClInclude Include="GeoIP\libGeoIP\md5.h" />
-    <ClInclude Include="GeoIP\libGeoIP\types.h" />
-    <ClInclude Include="global.h" />
-    <ClInclude Include="metadata.h" />
-    <ClInclude Include="metrics.h" />
-    <ClInclude Include="MP3Header.h" />
-    <ClInclude Include="nmrCommon\file\fileUtils.h" />
-    <ClInclude Include="nmrCommon\services\baseOptions.h" />
-    <ClInclude Include="nmrCommon\services\logger.h" />
-    <ClInclude Include="nmrCommon\services\serviceMain.h" />
-    <ClInclude Include="nmrCommon\services\stdServiceImpl.h" />
-    <ClInclude Include="nmrCommon\stl\functors.h" />
-    <ClInclude Include="nmrCommon\stl\stlx.h" />
-    <ClInclude Include="nmrCommon\stl\stringUtils.h" />
-    <ClInclude Include="nmrCommon\threading\MT_stl.h" />
-    <ClInclude Include="nmrCommon\threading\thread.h" />
-    <ClInclude Include="nmrCommon\unicode\uniFile.h" />
-    <ClInclude Include="nmrCommon\unicode\uniString.h" />
-    <ClInclude Include="nmrCommon\win32\rezFuncs.h" />
-    <ClInclude Include="protocol_admincgi.h" />
-    <ClInclude Include="protocol_backup.h" />
-    <ClInclude Include="protocol_FlashPolicyServer.h" />
-    <ClInclude Include="protocol_flvClient.h" />
-    <ClInclude Include="protocol_HTTPClient.h" />
-    <ClInclude Include="protocol_HTTPSource.h" />
-    <ClInclude Include="protocol_HTTPStyle.h" />
-    <ClInclude Include="protocol_m4aClient.h" />
-    <ClInclude Include="protocol_relay.h" />
-    <ClInclude Include="protocol_relay_shoutcast.h" />
-    <ClInclude Include="protocol_relay_uvox.h" />
-    <ClInclude Include="protocol_shoutcast1Client.h" />
-    <ClInclude Include="protocol_shoutcast2Client.h" />
-    <ClInclude Include="protocol_shoutcastClient.h" />
-    <ClInclude Include="protocol_shoutcastSource.h" />
-    <ClInclude Include="protocol_uvox2Source.h" />
-    <ClInclude Include="resource.h" />
-    <ClInclude Include="ripList.h" />
-    <ClInclude Include="stats.h" />
-    <ClInclude Include="streamData.h" />
-    <ClInclude Include="threadedRunner.h" />
-    <CustomBuild Include="updater.h" />
-    <ClInclude Include="uvox2Common.h" />
-    <ClInclude Include="versions.h" />
-    <ClInclude Include="w3cLog.h" />
-    <ClInclude Include="webClient.h" />
-    <ClInclude Include="webNet\socketops.h" />
-    <ClInclude Include="webNet\urlUtils.h" />
-    <ClInclude Include="yp2.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <Image Include="icy.ico" />
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="messagefile.mc">
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mc %(Filename)%(Extension)
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(Filename).rc;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mc %(Filename)%(Extension)
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(Filename).rc;%(Outputs)</Outputs>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="messagefile.rc" />
-    <ResourceCompile Include="sc_serv.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj.filters b/Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj.filters
deleted file mode 100644
index 96d430dd..00000000
--- a/Src/Plugins/DSP/sc_serv3/sc_serv.vcxproj.filters
+++ /dev/null
@@ -1,478 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
-    </Filter>
-    <Filter Include="nmrCommon">
-      <UniqueIdentifier>{c34a54ac-e9e7-4c8a-b9f9-9cc7758d3d21}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="nmrCommon\services">
-      <UniqueIdentifier>{3f82ce9b-8dc8-424a-bdde-8c342e7feb9b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="nmrCommon\threading">
-      <UniqueIdentifier>{fb22ca6f-a754-4d98-b944-dd2661f51e25}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="nmrCommon\unicode">
-      <UniqueIdentifier>{22dcd7de-78a0-42dc-aaee-5e0e04ac5b77}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="nmrCommon\win32">
-      <UniqueIdentifier>{1988542f-b8aa-4c7c-8fb6-12b0e2526d28}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="nmrCommon\stl">
-      <UniqueIdentifier>{58a554bb-7523-4c5d-9241-bd5415e2c419}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="nmrCommon\file">
-      <UniqueIdentifier>{91c2a3ab-9a23-4d9e-bcd6-5b0d3e510903}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="webNet">
-      <UniqueIdentifier>{9ee51758-e92b-4ad9-aee0-ed69e46618d3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="aolxml">
-      <UniqueIdentifier>{1ddb836e-12e8-49a1-b8c2-909481bb2c6d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="flashPolicyServer">
-      <UniqueIdentifier>{737011da-050f-44ad-b3b6-5d567f7e4637}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="listener_clients">
-      <UniqueIdentifier>{5ee15fe3-52cc-4159-923c-e836529f487a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="listener_clients\Header Files">
-      <UniqueIdentifier>{67d8861d-7f54-4184-80dd-c9678138388c}</UniqueIdentifier>
-      <Extensions>*.h</Extensions>
-    </Filter>
-    <Filter Include="yp">
-      <UniqueIdentifier>{6e00589b-88ef-4ea1-8f8b-51596a345943}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="geoip">
-      <UniqueIdentifier>{a656032e-a732-4832-b3a3-0bcea8f6d791}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="updater">
-      <UniqueIdentifier>{07a48b1f-8e08-4e90-93b4-71653561b78a}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="metrics">
-      <UniqueIdentifier>{d27744f0-c242-402c-95be-646dc831abea}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="auth">
-      <UniqueIdentifier>{60d7f6d7-1b1e-464a-894b-52daa21450eb}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="aac">
-      <UniqueIdentifier>{95b2a92c-2e41-4f7c-810d-a04ae787d388}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="mp3">
-      <UniqueIdentifier>{8b2c078c-2c94-41bc-9132-db30125dc6d2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="flv">
-      <UniqueIdentifier>{a969a98a-24a4-4466-95a2-829958825065}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="source_clients">
-      <UniqueIdentifier>{bdb6b5dd-09ef-4fd9-83b9-7ca8b40a7695}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="source_clients\Header Files">
-      <UniqueIdentifier>{1358113b-a1a5-45ec-8c3a-69915899e621}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="web_ui">
-      <UniqueIdentifier>{46611830-1bd8-417e-9843-14aa9c2e3a92}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="web_ui\Header Files">
-      <UniqueIdentifier>{d9918193-0071-4850-8917-f7ad4516fc3b}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="adminList.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="agentList.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="bandwidth.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="banList.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="base64.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="cache.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="config.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="cpucount.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="filenameMetadata.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="global.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="main.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="metadata.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="ripList.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="stats.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="streamData.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="threadedRunner.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="uvox2Common.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="w3cLog.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="webClient.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\services\baseOptions.cpp">
-      <Filter>nmrCommon\services</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\services\logger.cpp">
-      <Filter>nmrCommon\services</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\services\serviceMain.cpp">
-      <Filter>nmrCommon\services</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\services\stdServiceImpl.cpp">
-      <Filter>nmrCommon\services</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\threading\thread.cpp">
-      <Filter>nmrCommon\threading</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\unicode\uniFile.cpp">
-      <Filter>nmrCommon\unicode</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\unicode\uniString.cpp">
-      <Filter>nmrCommon\unicode</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\win32\rezFuncs.cpp">
-      <Filter>nmrCommon\win32</Filter>
-    </ClCompile>
-    <ClCompile Include="nmrCommon\file\fileUtils.cpp">
-      <Filter>nmrCommon\file</Filter>
-    </ClCompile>
-    <ClCompile Include="webNet\socketOps.cpp">
-      <Filter>webNet</Filter>
-    </ClCompile>
-    <ClCompile Include="webNet\urlUtils.cpp">
-      <Filter>webNet</Filter>
-    </ClCompile>
-    <ClCompile Include="aolxml\aolxml.cpp">
-      <Filter>aolxml</Filter>
-    </ClCompile>
-    <ClCompile Include="aolxml\aolxmlutils.cpp">
-      <Filter>aolxml</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_FlashPolicyServer.cpp">
-      <Filter>flashPolicyServer</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_flvClient.cpp">
-      <Filter>listener_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_HTTPClient.cpp">
-      <Filter>listener_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_m4aClient.cpp">
-      <Filter>listener_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_shoutcast1Client.cpp">
-      <Filter>listener_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_shoutcast2Client.cpp">
-      <Filter>listener_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_shoutcastClient.cpp">
-      <Filter>listener_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="yp2.cpp">
-      <Filter>yp</Filter>
-    </ClCompile>
-    <ClCompile Include="GeoIP\libGeoIP\GeoIP.c">
-      <Filter>geoip</Filter>
-    </ClCompile>
-    <ClCompile Include="GeoIP\libGeoIP\md5.c">
-      <Filter>geoip</Filter>
-    </ClCompile>
-    <ClCompile Include="GeoIP\libGeoIP\regionName.c">
-      <Filter>geoip</Filter>
-    </ClCompile>
-    <ClCompile Include="GeoIP\libGeoIP\timeZone.c">
-      <Filter>geoip</Filter>
-    </ClCompile>
-    <ClCompile Include="updater.cpp">
-      <Filter>updater</Filter>
-    </ClCompile>
-    <ClCompile Include="metrics.cpp">
-      <Filter>metrics</Filter>
-    </ClCompile>
-    <ClCompile Include="auth.cpp">
-      <Filter>auth</Filter>
-    </ClCompile>
-    <ClCompile Include="ADTSHeader.cpp">
-      <Filter>aac</Filter>
-    </ClCompile>
-    <ClCompile Include="MP3Header.cpp">
-      <Filter>mp3</Filter>
-    </ClCompile>
-    <ClCompile Include="FLV.cpp">
-      <Filter>flv</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_backup.cpp">
-      <Filter>source_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_HTTPSource.cpp">
-      <Filter>source_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_relay.cpp">
-      <Filter>source_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_relay_shoutcast.cpp">
-      <Filter>source_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_relay_uvox.cpp">
-      <Filter>source_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_shoutcastSource.cpp">
-      <Filter>source_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_uvox2Source.cpp">
-      <Filter>source_clients</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_admincgi.cpp">
-      <Filter>web_ui</Filter>
-    </ClCompile>
-    <ClCompile Include="protocol_HTTPStyle.cpp">
-      <Filter>web_ui</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="adminList.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="agentList.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="bandwidth.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="banList.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="base64.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="cache.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="cpucount.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="global.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="metadata.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="resource.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="ripList.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="stats.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="streamData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="threadedRunner.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="uvox2Common.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="versions.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="w3cLog.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="webClient.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\services\baseOptions.h">
-      <Filter>nmrCommon\services</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\services\logger.h">
-      <Filter>nmrCommon\services</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\services\serviceMain.h">
-      <Filter>nmrCommon\services</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\services\stdServiceImpl.h">
-      <Filter>nmrCommon\services</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\threading\MT_stl.h">
-      <Filter>nmrCommon\threading</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\threading\thread.h">
-      <Filter>nmrCommon\threading</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\unicode\uniFile.h">
-      <Filter>nmrCommon\unicode</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\unicode\uniString.h">
-      <Filter>nmrCommon\unicode</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\win32\rezFuncs.h">
-      <Filter>nmrCommon\win32</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\stl\functors.h">
-      <Filter>nmrCommon\stl</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\stl\stlx.h">
-      <Filter>nmrCommon\stl</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\stl\stringUtils.h">
-      <Filter>nmrCommon\stl</Filter>
-    </ClInclude>
-    <ClInclude Include="nmrCommon\file\fileUtils.h">
-      <Filter>nmrCommon\file</Filter>
-    </ClInclude>
-    <ClInclude Include="webNet\socketops.h">
-      <Filter>webNet</Filter>
-    </ClInclude>
-    <ClInclude Include="webNet\urlUtils.h">
-      <Filter>webNet</Filter>
-    </ClInclude>
-    <ClInclude Include="aolxml\aolxml.h">
-      <Filter>aolxml</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_FlashPolicyServer.h">
-      <Filter>flashPolicyServer</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_flvClient.h">
-      <Filter>listener_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_HTTPClient.h">
-      <Filter>listener_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_m4aClient.h">
-      <Filter>listener_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_shoutcast1Client.h">
-      <Filter>listener_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_shoutcast2Client.h">
-      <Filter>listener_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_shoutcastClient.h">
-      <Filter>listener_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="yp2.h">
-      <Filter>yp</Filter>
-    </ClInclude>
-    <ClInclude Include="GeoIP\libGeoIP\GeoIP.h">
-      <Filter>geoip</Filter>
-    </ClInclude>
-    <ClInclude Include="GeoIP\libGeoIP\GeoIP_internal.h">
-      <Filter>geoip</Filter>
-    </ClInclude>
-    <ClInclude Include="GeoIP\libGeoIP\global.h">
-      <Filter>geoip</Filter>
-    </ClInclude>
-    <ClInclude Include="GeoIP\libGeoIP\md5.h">
-      <Filter>geoip</Filter>
-    </ClInclude>
-    <ClInclude Include="GeoIP\libGeoIP\types.h">
-      <Filter>geoip</Filter>
-    </ClInclude>
-    <ClInclude Include="metrics.h">
-      <Filter>metrics</Filter>
-    </ClInclude>
-    <ClInclude Include="auth.h">
-      <Filter>auth</Filter>
-    </ClInclude>
-    <ClInclude Include="ADTSHeader.h">
-      <Filter>aac</Filter>
-    </ClInclude>
-    <ClInclude Include="MP3Header.h">
-      <Filter>mp3</Filter>
-    </ClInclude>
-    <ClInclude Include="FLV.h">
-      <Filter>flv</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_backup.h">
-      <Filter>source_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_HTTPSource.h">
-      <Filter>source_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_relay.h">
-      <Filter>source_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_relay_shoutcast.h">
-      <Filter>source_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_relay_uvox.h">
-      <Filter>source_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_shoutcastSource.h">
-      <Filter>source_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_uvox2Source.h">
-      <Filter>source_clients\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_admincgi.h">
-      <Filter>web_ui\Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="protocol_HTTPStyle.h">
-      <Filter>web_ui\Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <Image Include="icy.ico">
-      <Filter>Resource Files</Filter>
-    </Image>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="messagefile.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="sc_serv.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="messagefile.mc">
-      <Filter>Resource Files</Filter>
-    </CustomBuild>
-    <CustomBuild Include="updater.h">
-      <Filter>updater</Filter>
-    </CustomBuild>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/Src/Plugins/DSP/sc_serv3/stats.cpp b/Src/Plugins/DSP/sc_serv3/stats.cpp
deleted file mode 100644
index bfdeda21..00000000
--- a/Src/Plugins/DSP/sc_serv3/stats.cpp
+++ /dev/null
@@ -1,862 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-
-#include "protocol_shoutcastClient.h"
-#include "stats.h"
-#include "agentList.h"
-#include "services/stdServiceImpl.h"
-#include <map>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-static AOL_namespace::mutex	g_statLock;
-
-#define DEBUG_LOG(...) do { if (gOptions.statsDebug()) DLOG(__VA_ARGS__); } while (0)
-
-#define LOGNAME "[STATS] "
-
-const utf8 EMPTY_AGENT("**EMPTY**");
-
-struct statTableEntry_t
-{
-	size_t m_peakListeners;
-	size_t m_totalStreamHits;
-	typedef map<size_t, stats::clientData_t*> clientEntry_t;
-	clientEntry_t m_clientData;
-
-	statTableEntry_t() : m_peakListeners(0), m_totalStreamHits(0) {}
-};
-
-typedef map<streamData::streamID_t,statTableEntry_t> streamStatTable_t;
-
-static streamStatTable_t g_streamStatTable;
-static size_t g_totalClients;
-static size_t g_uniqueClientId;
-
-const size_t stats::getNewClientId()
-{
-	return ++g_uniqueClientId;
-}
-
-static bool _kickNonRipClientFromStream(const streamData::streamID_t id) throw()
-{
-	bool kicked = false;
-
-	// first try our stream
-	streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-	if (ti != g_streamStatTable.end())
-	{
-		statTableEntry_t &ste = (*ti).second;
-		if (!ste.m_clientData.empty())
-		{
-			statTableEntry_t::clientEntry_t &ce = ste.m_clientData;
-
-			for (statTableEntry_t::clientEntry_t::iterator ci = ce.begin(); (ci != ce.end()) && (!kicked); ++ci)
-			{
-				if ((!(*ci).second->m_kicked) && (!(*ci).second->m_ripClient))
-				{
-					(*ci).second->m_kicked = true;
-					if ((*ci).second->m_client)
-					{
-						(*ci).second->m_client->kickNextRound();
-					}
-					kicked = true;
-				}
-			}
-		}
-	}
-
-	return kicked;
-}
-
-static bool _kickRandomNonRipClient(const streamData::streamID_t id, const bool anyStream) throw()
-{
-	bool kicked = _kickNonRipClientFromStream(id);
-	if ((!kicked) && anyStream)
-	{
-		for (streamStatTable_t::const_iterator i = g_streamStatTable.begin(); (i != g_streamStatTable.end()) && (!kicked); ++i)
-		{
-			kicked = _kickNonRipClientFromStream((*i).first);
-		}
-	}
-
-	return kicked;
-}
-
-const int stats::addClient(const streamData::streamID_t id, const utf8 &hostName,
-						   const utf8 &ipAddr, const utf8 &userAgent, const bool ripClient,
-						   const size_t clientUnique, protocol_shoutcastClient *client)
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		// to prevent some of the stats / logs getting skewed
-		// then we filter out the SHOUTcast site 'test' users
-		if (isUserAgentOfficial(toLower(userAgent)))
-		{
-			return 1;
-		}
-
-		statTableEntry_t &ste = g_streamStatTable[id];
-		++ste.m_totalStreamHits;
-
-		if (ste.m_clientData.find(clientUnique) == ste.m_clientData.end())
-		{
-			// seen this crop up a bit and seem dodgy so rejecting (may change based on usage feedback)
-			if (userAgent.empty() && gOptions.blockEmptyUserAgent())
-			{
-				return -1;
-			}
-
-			// this will check against a blocked 'user agent' list
-			// so we can give stations a means to block bad clients
-			// e.g. Winamp/5.0 or Bass/2.x or something like that
-			if (!userAgent.empty() && g_agentList.find(userAgent, ((gOptions.read_stream_agentFile(id) && !gOptions.stream_agentFile(id).empty()) ? id : 0)))
-			{
-				return -2;
-			}
-
-			streamData::streamInfo info;
-			streamData::extraInfo extra;
-			streamData::getStreamInfo(id, info, extra);
-			const int _maxUser = gOptions.maxUser(),
-					  maxUsers = ((info.m_streamMaxUser > 0) && (info.m_streamMaxUser < _maxUser) ? info.m_streamMaxUser : _maxUser);
-
-			const size_t num_clients = ste.m_clientData.size();
-			const bool over = ((maxUsers && ((int)num_clients >= maxUsers)) ||
-							   (_maxUser && ((int)g_totalClients >= _maxUser)));
-			if (over && !ripClient)
-			{
-				return 0; // too many, and we are not allowed to boot anyone
-			}
-
-			if (over && ripClient)	// too many, and we are allowed to try to boot someone...
-			{
-				// if total reserved is already at the listener limit then nothing else to do
-				if (getTotalRipClients(id) < num_clients)
-				{
-					// we only allow the new listener to join as long as we can kick someone
-					if (!_kickRandomNonRipClient(id, true))
-					{
-						return 0;
-					}
-				}
-				else
-				{
-					return 0;
-				}
-			}
-
-			ste.m_clientData[clientUnique] = new stats::clientData_t(hostName, ipAddr, ripClient, client);
-			ste.m_peakListeners = max(ste.m_clientData.size(), ste.m_peakListeners);
-			++g_totalClients;
-
-			DEBUG_LOG(LOGNAME "System wide listener total now " + tos(g_totalClients));
-
-			return 1;
-		}
-	}
-	return 0;
-}
-
-
-// hacky, to maintain a count in here, should be one in sd
-long stats::getUserCount (const streamData::streamID_t id)
-{
-    long c = 0;
-    if (id > 0)
-    {
-        stackLock sml(g_statLock);
-        statTableEntry_t &ste = g_streamStatTable[id];
-        c = ste.m_clientData.size();
-    }
-    return c;
-}
-
-
-void stats::removeClient(const streamData::streamID_t id, const size_t clientUnique)
-{
-	if ((id > 0) && (g_totalClients > 0))
-	{
-		stackLock sml(g_statLock);
-
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.find(clientUnique);
-				if (i != ste.m_clientData.end())
-				{
-					delete i->second;
-					ste.m_clientData.erase(clientUnique);
-
-					g_totalClients -= 1;
-					DEBUG_LOG(LOGNAME "System wide listener total now " + tos(g_totalClients));
-				}
-			}
-		}
-	}
-}
-
-// get stats. Some values, like newSessions and newConnects set a flag so that clients are only counted once.
-// This is fine for touch reporting, but sometimes we want to fetch this information and, since we are not touching YP,
-// do not want to set the flags indicating that things have been counted. The "resetAccumulators" flag controls this.
-// Set to true for touch, false otherwise
-void stats::getStats(streamData::streamID_t id, statsData_t &data, bool resetAccumulators) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-
-			data.peakListeners = ste.m_peakListeners;
-			data.totalStreamHits = ste.m_totalStreamHits;
-
-			if (!ste.m_clientData.empty())
-			{
-				set<utf8> ipTable;
-
-				time_t t = ::time(NULL);
-				data.connectedListeners = ste.m_clientData.size();
-				__uint64 total_listen_time = 0;
-				for (statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked)
-					{
-						if (ipTable.find((*i).second->m_ipAddr) == ipTable.end())
-						{
-							++data.uniqueListeners;
-						}
-						ipTable.insert((*i).second->m_ipAddr);
-					}
-
-					total_listen_time += (t - (*i).second->m_client->getStartTime());
-					if (!(*i).second->m_connectCounted)
-					{
-						if (resetAccumulators)
-						{
-							(*i).second->m_connectCounted = true;
-						}
-						++data.newConnects;
-					}
-
-					if ((!(*i).second->m_fiveMinuteCumeCounted) && ((t - (*i).second->m_client->getStartTime()) > (5 * 60)))
-					{
-						if (resetAccumulators)
-						{
-							(*i).second->m_fiveMinuteCumeCounted = true;
-						}
-						++data.newSessions;
-					}
-				}
-
-				data.avgUserListenTime = (data.connectedListeners ? (int)(total_listen_time / data.connectedListeners) : 0);
-			}
-		}
-	}
-}
-
-void stats::getFinalStats() throw()
-{
-	stackLock sml(g_statLock);
-
-	size_t totalPeak = 0;
-	utf8 msg;
-
-	if (!g_streamStatTable.empty())
-	{
-		for (streamStatTable_t::const_iterator ti = g_streamStatTable.begin(); ti != g_streamStatTable.end(); ++ti)
-		{
-			size_t peakListeners = (*ti).second.m_peakListeners;
-			totalPeak += peakListeners;
-			msg += (msg.size() > 0 ? ",#" : "#") + tos((*ti).first) + ":" + tos(peakListeners);
-		}
-	}
-
-	if (totalPeak > 0)
-	{
-		msg += (!g_streamStatTable.empty() ? "," : (utf8)"") + "Total: " + tos(totalPeak);
-		ILOG(LOGNAME "Peak numbers: " + msg);
-	}
-}
-
-const streamData::streamIDs_t stats::getActiveStreamIds() throw()
-{
-	stackLock sml(g_statLock);
-
-	streamData::streamIDs_t activeIds;
-
-	for (streamStatTable_t::const_iterator ti = g_streamStatTable.begin(); ti != g_streamStatTable.end(); ++ti)
-	{
-		// we check this to make sure that we're only
-		// adding 'active' details and skip inactive
-		const statTableEntry_t &ste = (*ti).second;
-		if (!ste.m_clientData.empty())
-		{
-			if (activeIds.find((*ti).first) == activeIds.end())
-			{
-				activeIds.insert((*ti).first);
-			}
-		}
-	}
-
-	return activeIds;
-}
-
-const size_t stats::getTotalUniqueListeners() throw()
-{
-	stackLock sml(g_statLock);
-
-	size_t uniqueListeners = 0;
-
-	set<utf8> ipTable;
-
-	for (streamStatTable_t::const_iterator ti = g_streamStatTable.begin(); ti != g_streamStatTable.end(); ++ti)
-	{
-		const statTableEntry_t &ste = (*ti).second;
-		if (!ste.m_clientData.empty())
-		{
-			for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-			{
-				if (!(*i).second->m_kicked)
-				{
-					if (ipTable.find((*i).second->m_ipAddr) == ipTable.end())
-					{
-						++uniqueListeners;
-					}
-					ipTable.insert((*i).second->m_ipAddr);
-				}
-			}
-		}
-	}
-
-	return uniqueListeners;
-}
-
-const size_t stats::getTotalRipClients(streamData::streamID_t id) throw()
-{
-	size_t uniqueListeners = 0;
-
-	if (id > 0)
-	{
-		streamStatTable_t::const_iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			const statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked && (*i).second->m_ripClient)
-					{
-						++uniqueListeners;
-					}
-				}
-			}
-		}
-	}
-
-	return uniqueListeners;
-}
-
-void stats::updateRipClients(const streamData::streamID_t id, const uniString::utf8& ripAddr, const bool mode)
-{
-	stackLock sml(g_statLock);
-
-	if (id)
-	{
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked && ((*i).second->m_ipAddr == ripAddr))
-					{
-						(*i).second->m_ripClient = mode;
-					}
-				}
-			}
-		}
-	}
-	else
-	{
-		for (streamStatTable_t::iterator i = g_streamStatTable.begin(); i != g_streamStatTable.end(); ++i)
-		{
-			statTableEntry_t &ste = (*i).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::iterator c = ste.m_clientData.begin(); c != ste.m_clientData.end(); ++c)
-				{
-					if (!(*c).second->m_kicked && ((*c).second->m_ipAddr == ripAddr))
-					{
-						(*c).second->m_ripClient = mode;
-					}
-				}
-			}
-		}
-	}
-}
-
-void stats::resetStats(const streamData::streamID_t id) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-			// reset peak and stream hits to current client connection level
-			ste.m_totalStreamHits = ste.m_peakListeners = ste.m_clientData.size();
-		}
-	}
-}
-
-void stats::updatePeak(const streamData::streamID_t id, const size_t peakListeners) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		statTableEntry_t &ste = ((ti != g_streamStatTable.end()) ? (*ti).second : g_streamStatTable[id]);
-		ste.m_peakListeners = max(peakListeners, ste.m_peakListeners);
-	}
-}
-
-void stats::updateTriggers(const streamData::streamID_t id, const size_t unique) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked && ((*i).first == unique))
-					{
-						++(*i).second->m_triggers;
-						break;
-					}
-				}
-			}
-		}
-	}
-}
-
-static bool sortCurrentClientDataByTime(const stats::currentClientData_t* a, const stats::currentClientData_t* b)
-{
-	return (a->m_startTime < b->m_startTime);
-}
-
-// get all client data blocks for stream
-void stats::getClientDataForStream(const streamData::streamID_t id, currentClientList_t &client_data) throw()
-{
-	stackLock sml(g_statLock);
-
-	if (id > 0)
-	{
-		streamStatTable_t::const_iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			const statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked)
-					{
-						currentClientData_t* client = new currentClientData_t((*i).second->m_hostName, (*i).second->m_ipAddr,
-																			  (*i).second->m_client->getXFF(), (*i).second->m_client->getUserAgent(),
-																			  (*i).second->m_client->getReferer(), (*i).second->m_triggers,
-																			  (*i).second->m_client->getUnique(), (*i).second->m_client->getStartTime(),
-																			  (*i).second->m_client->getGroup(), (*i).second->m_client->getClientType(),
-																			  (*i).second->m_fiveMinuteCumeCounted, (*i).second->m_connectCounted,
-																			  (*i).second->m_ripClient, (*i).second->m_kicked);
-						client_data.push_back(client);
-					}
-				}
-			}
-		}
-	}
-	else
-	{
-		for (streamStatTable_t::const_iterator i = g_streamStatTable.begin(); i != g_streamStatTable.end(); ++i)
-		{
-			const statTableEntry_t &ste = (*i).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked)
-					{
-						currentClientData_t* client = new currentClientData_t((*i).second->m_hostName, (*i).second->m_ipAddr,
-																			  (*i).second->m_client->getXFF(), (*i).second->m_client->getUserAgent(),
-																			  (*i).second->m_client->getReferer(), (*i).second->m_triggers,
-																			  (*i).second->m_client->getUnique(), (*i).second->m_client->getStartTime(),
-																			  (*i).second->m_client->getGroup(), (*i).second->m_client->getClientType(),
-																			  (*i).second->m_fiveMinuteCumeCounted, (*i).second->m_connectCounted,
-																			  (*i).second->m_ripClient, (*i).second->m_kicked);
-						client_data.push_back(client);
-					}
-				}
-			}
-		}
-	}
-
-	std::sort(client_data.begin(), client_data.end(), sortCurrentClientDataByTime);
-}
-
-void stats::getClientDataForKicking(const streamData::streamID_t id, kickClientList_t &kick_data) throw()
-{
-	stackLock sml(g_statLock);
-
-	if (id > 0)
-	{
-		streamStatTable_t::const_iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			const statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked)
-					{
-						kickClientData_t* client = new kickClientData_t((*i).second->m_client->getUserAgent(),
-																		(*i).second->m_client->getUnique(),
-																		(*i).second->m_kicked);
-						kick_data.push_back(client);
-					}
-				}
-			}
-		}
-	}
-	else
-	{
-		for (streamStatTable_t::const_iterator i = g_streamStatTable.begin(); i != g_streamStatTable.end(); ++i)
-		{
-			const statTableEntry_t &ste = (*i).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked)
-					{
-						kickClientData_t* client = new kickClientData_t((*i).second->m_client->getUserAgent(),
-																		(*i).second->m_client->getUnique(),
-																		(*i).second->m_kicked);
-						kick_data.push_back(client);
-					}
-				}
-			}
-		}
-	}
-}
-
-void stats::catchPreAddClients(const streamData::streamID_t id)
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		// make sure the client still exists before calling it
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					// if we find an active listener which has m_group = -1 then
-					// we need to get the listener to do a listener_add request.
-					if (!(*i).second->m_kicked &&
-						(*i).second->m_client->m_removeClientFromStats &&
-						((*i).second->m_client->getGroup() == -1))
-					{
-						// we only want to do this once
-						// so we'll set it to group = 0
-						// and it'll not be done again.
-						(*i).second->m_client->setGroup(0);
-
-						DEBUG_LOG((*i).second->m_client->m_clientLogString + "Re-authenticating listener for adverts / metrics.");
-
-						// using this to force an attept to check but only for non
-						// 'local' listener connections which won't get a group id
-						if ((isRemoteAddress((*i).second->m_client->m_clientAddr) ||
-							 isRemoteAddress((*i).second->m_client->m_XFF)))
-						{
-							(*i).second->m_client->authForStream((*i).second->m_client->m_streamData);
-						}
-						(*i).second->m_client->reportNewListener();
-					}
-				}
-			}
-		}
-	}
-}
-
-// set flag in client so it will bail on next round. This is safe since the client object
-// cannot delete itself until calling stats::removeClient() which is protected by the g_statLock	
-void stats::kickClient(const streamData::streamID_t id, const size_t unique) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		// make sure the client still exists before calling it
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked && ((*i).first == unique))
-					{
-						(*i).second->m_kicked = true;
-						if ((*i).second->m_client)
-						{
-							(*i).second->m_client->kickNextRound();
-						}
-						break;
-					}
-				}
-			}
-		}
-	}
-}
-
-void stats::kickClient(const streamData::streamID_t id, const uniString::utf8& ipAddr) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		// make sure the client still exists before calling it
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked && ((*i).second->m_ipAddr == ipAddr))
-					{
-						(*i).second->m_kicked = true;
-						if ((*i).second->m_client)
-						{
-							(*i).second->m_client->kickNextRound();
-						}
-					}
-				}
-			}
-		}
-	}
-}
-
-const bool stats::kickAllClients(const streamData::streamID_t id, const bool allStreams) throw()
-{
-	bool kicked = false;
-	if ((id > 0) && !allStreams)
-	{
-		stackLock sml(g_statLock);
-
-		// make sure the client still exists before calling it
-		streamStatTable_t::iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked)
-					{
-						(*i).second->m_kicked = true;
-						if ((*i).second->m_client)
-						{
-							(*i).second->m_client->kickNextRound();
-							kicked = true;
-						}
-					}
-				}
-			}
-		}
-	}
-	else if (!id && allStreams)
-	{
-		stackLock sml(g_statLock);
-
-		for (streamStatTable_t::iterator ti = g_streamStatTable.begin(); ti != g_streamStatTable.end(); ++ti)
-		{
-			statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked)
-					{
-						(*i).second->m_kicked = true;
-						if ((*i).second->m_client)
-						{
-							(*i).second->m_client->kickNextRound();
-							kicked = true;
-						}
-					}
-				}
-			}
-		}
-	}
-
-	return kicked;
-}
-
-static bool sortClientDataByTime(const stats::clientData_t &a, const stats::clientData_t &b)
-{
-	return (a.m_client->getStartTime() < b.m_client->getStartTime());
-}
-
-const bool stats::kickDuplicateClients(const streamData::streamID_t id) throw()
-{
-	bool kicked = false;
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-
-		// we first spin through all of the connected listeners and work out
-		// which listener addresses have more than one connection against it
-		streamStatTable_t::const_iterator ti = g_streamStatTable.find(id);
-		if (ti != g_streamStatTable.end())
-		{
-			map<utf8, size_t> ipTable;
-
-			const statTableEntry_t &ste = (*ti).second;
-			if (!ste.m_clientData.empty())
-			{
-				for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-				{
-					if (!(*i).second->m_kicked)
-					{
-						if (ipTable.find((*i).second->m_ipAddr) == ipTable.end())
-						{
-							ipTable[(*i).second->m_ipAddr] = 1;
-						}
-						else
-						{
-							++ipTable[(*i).second->m_ipAddr];
-						}
-					}
-				}
-			}
-
-			if (!ipTable.empty())
-			{
-				for (map<utf8, size_t>::const_iterator ip = ipTable.begin(); ip != ipTable.end(); ++ip)
-				{
-					// we now only look at addresses with multiple clients
-					// being reported for the address which has been noted
-					if (ip->second > 1)
-					{
-						map<utf8, size_t> agentTable;
-
-						for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-						{
-							if (!(*i).second->m_kicked && (ip->first == (*i).second->m_ipAddr))
-							{
-								const utf8 userAgent = (*i).second->m_client->getUserAgent();
-								if (agentTable.find(userAgent) == agentTable.end())
-								{
-									agentTable[userAgent] = 1;
-								}
-								else
-								{
-									++agentTable[userAgent];
-								}
-							}
-						}
-
-						if (!agentTable.empty())
-						{
-							std::vector<clientData_t> data;
-							for (map<utf8, size_t>::const_iterator ai = agentTable.begin(); ai != agentTable.end(); ++ai)
-							{
-								// this should now just leave us with duplicate
-								// user-agents connected from the same address
-								if (ai->second > 1)
-								{
-									// now we need to process through and get the
-									// details needed so we can finally kick them
-									for (statTableEntry_t::clientEntry_t::const_iterator i = ste.m_clientData.begin(); i != ste.m_clientData.end(); ++i)
-									{
-										if (!(*i).second->m_kicked &&
-											(ip->first == (*i).second->m_ipAddr) &&
-											(ai->first == (*i).second->m_client->getUserAgent()))
-										{
-											data.push_back(*(*i).second);
-										}
-									}
-								}
-							}
-
-							// now we've got data, we sort by data and then
-							// process through the final set of data & kick
-							if (!data.empty())
-							{
-								std::sort(data.begin(), data.end(), sortClientDataByTime);
-								// remove the newest and kick the remainder
-								data.pop_back();
-
-								for (vector<stats::clientData_t>::iterator i = data.begin(); i != data.end(); ++i)
-								{
-									if (!(*i).m_kicked)
-									{
-										(*i).m_kicked = true;
-										if ((*i).m_client)
-										{
-											(*i).m_client->kickNextRound();
-											kicked = true;
-										}
-									}
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-	return kicked;
-}
-
-const bool stats::kickRandomNonRipClient(const streamData::streamID_t id, const bool anyStream) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_statLock);
-		return _kickRandomNonRipClient(id, anyStream);
-	}
-	return false;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/stats.h b/Src/Plugins/DSP/sc_serv3/stats.h
deleted file mode 100644
index d902b112..00000000
--- a/Src/Plugins/DSP/sc_serv3/stats.h
+++ /dev/null
@@ -1,173 +0,0 @@
-#pragma once
-#ifndef stats_H_
-#define stats_H_
-
-#include "streamData.h"
-
-extern uniString::utf8 niceURL(uniString::utf8 srcAddr);
-
-extern const uniString::utf8 EMPTY_AGENT;
-
-namespace stats
-{
-	struct clientData_t
-	{
-		uniString::utf8				m_hostName;			// holds the hostname (usually only available with namelookups=1)
-		uniString::utf8				m_ipAddr;
-		size_t						m_triggers;			// number of valid advert triggers done for the client
-		protocol_shoutcastClient*	m_client;			// reference to the client (mainly for kicking)
-		bool						m_fiveMinuteCumeCounted;	// already reported against 5 minute session (cm)
-		bool						m_connectCounted;	// already reported against new connects (ht)
-		bool						m_ripClient;		// client cannot be autobooted
-		bool						m_kicked;			// was ordered to be kicked and will go away soon
-
-		clientData_t(const uniString::utf8 &hostName, const uniString::utf8 &ipAddr,
-					 const bool ripClient, protocol_shoutcastClient* client) throw()
-					: m_hostName(niceURL(hostName)), m_ipAddr(niceURL(ipAddr)),
-					  m_triggers(0), m_client(client), m_fiveMinuteCumeCounted(false),
-					  m_connectCounted(false), m_ripClient(ripClient), m_kicked(false) {}
-	};
-
-	const size_t getNewClientId();
-
-	// return false if reach maxUsers for that stream or all streams. If ripClient == true, then this client MUST be added, even
-	// if it means we have to boot someone
-	const int addClient(const streamData::streamID_t id, const uniString::utf8& hostName,
-						const uniString::utf8 &ipAddr, const uniString::utf8 &userAgent,
-						const bool ripClient, const size_t clientUnique,
-						protocol_shoutcastClient *client);
-	void removeClient(const streamData::streamID_t id, const size_t clientUnique);
-
-	struct statsData_t
-	{
-		size_t connectedListeners;	// li
-		time_t avgUserListenTime;	// alt
-		size_t newSessions;			// cm
-		size_t newConnects;			// ht
-		size_t peakListeners;
-		size_t uniqueListeners;
-		size_t totalStreamHits;		// total hits against stream since start
-
-		statsData_t() throw() : connectedListeners(0), avgUserListenTime(0),
-								newSessions(0), newConnects(0), peakListeners(0),
-								uniqueListeners(0), totalStreamHits(0) {}
-	};
-
-	// get stats. Some values, like newSessions and newConnects set a flag so that clients are only counted once.
-	// This is fine for touch reporting, but sometimes we want to fetch this information and, since we are not touching YP,
-	// do not want to set the flags indicating that things have been counted. The "resetAccumulators" flag controls this.
-	// Set to true for touch, false otherwise	
-	void getStats(const streamData::streamID_t id, statsData_t &data, bool resetAccumulators = false) throw();
-
-	// provides log message when the DNAS is stopped of stream 'peak' values
-	void getFinalStats() throw();
-
-	// works out the total number of unique listeners even if connected to different streams
-	const size_t getTotalUniqueListeners() throw();
-
-	// works out the active stream ids so we can also catch listeners
-	// on non-configured streams but are being provided the backup
-	const streamData::streamIDs_t getActiveStreamIds() throw();
-
-    // get the current number of listeners on the specified stream
-    long getUserCount (const streamData::streamID_t id);
-
-	// wsorks out the total number of reserved listeners on the specified stream
-	const size_t getTotalRipClients(const streamData::streamID_t id) throw();
-
-	// updates the appropriate clients (by stream) against any changes to the reserved list
-	void updateRipClients(const streamData::streamID_t id, const uniString::utf8& ripAddr, const bool mode);
-
-	// only resets peakListeners and totalStreamHits currently with peakListeners set to current listeners if there are any
-	void resetStats(const streamData::streamID_t id) throw();
-
-	// used only during a YP 'add' to help restore the previous peak level (if applicable)
-	void updatePeak(const streamData::streamID_t id, const size_t peakListeners) throw();
-
-	void updateTriggers(const streamData::streamID_t id, const size_t unique) throw();
-
-	struct currentClientData_t
-	{
-		const uniString::utf8		m_hostName;		// holds the hostname (usually only available with namelookups=1)
-		const uniString::utf8		m_ipAddr;
-		const uniString::utf8		m_XFF;
-		const uniString::utf8		m_userAgent;
-		const uniString::utf8		m_referer;
-
-		const size_t				m_triggers;		// number of valid advert triggers done for the client
-		const size_t				m_unique;		// clients' unique id
-
-		const time_t				m_startTime;	// when connection started, used to implement listenerTime
-
-		const int					m_group;		// advert group id
-		const streamData::source_t	m_clientType;	// stream client type
-
-		const bool					m_fiveMinuteCumeCounted;	// already reported against 5 minute session (cm)
-		const bool					m_connectCounted;			// already reported against new connects (ht)
-		const bool					m_ripClient;				// client cannot be autobooted
-		const bool					m_kicked;					// was ordered to be kicked and will go away soon
-
-		currentClientData_t(const uniString::utf8 &hostName, const uniString::utf8 &ipAddr,
-							const uniString::utf8 &XFF, const uniString::utf8 &userAgent,
-							const uniString::utf8 &referer, const size_t triggers,
-							const size_t unique, const time_t startTime,
-							const int group, const streamData::source_t	clientType,
-							const bool fiveMinuteCumeCounted, const bool connectCounted,
-							const bool ripClient, const bool kicked) throw()
-						: m_hostName(niceURL(hostName)), m_ipAddr(niceURL(ipAddr)), m_XFF(XFF),
-						  m_userAgent(userAgent), m_referer(referer), m_triggers(triggers),
-						  m_unique(unique), m_startTime(startTime), m_group(group),
-						  m_clientType(clientType), m_fiveMinuteCumeCounted(fiveMinuteCumeCounted),
-						  m_connectCounted(connectCounted), m_ripClient(ripClient), m_kicked(kicked) {}
-	};
-
-	typedef std::vector<currentClientData_t*> currentClientList_t;
-	void getClientDataForStream(const streamData::streamID_t id, currentClientList_t &client_data) throw();
-
-
-	struct kickClientData_t
-	{
-		const uniString::utf8		m_userAgent;
-		const size_t				m_unique;		// clients' unique id
-		const bool					m_kicked;					// was ordered to be kicked and will go away soon
-
-		kickClientData_t(const uniString::utf8 &userAgent, const size_t unique, const bool kicked) throw()
-						: m_userAgent(userAgent), m_unique(unique), m_kicked(kicked) {}
-	};
-
-	typedef std::vector<kickClientData_t*> kickClientList_t;
-	void getClientDataForKicking(const streamData::streamID_t id, kickClientList_t &kick_data) throw();
-
-	void catchPreAddClients(const streamData::streamID_t id);
-
-	// kick client if it's still around
-	void kickClient(const streamData::streamID_t id, const size_t unique) throw();
-	void kickClient(const streamData::streamID_t id, const uniString::utf8& ipAddr) throw();
-
-	// kick all clients currently connected
-	const bool kickAllClients(const streamData::streamID_t id, const bool allStreams = false) throw();
-
-	// kick all duplicate clients currently connected
-	// based on the older first and by the user-agent
-	const bool kickDuplicateClients(const streamData::streamID_t id) throw();
-
-	// kick a random nonRip client. return true if successful. If anyStream, then we can boot
-	// someone from another stream if we have to
-	const bool kickRandomNonRipClient(const streamData::streamID_t id, const bool anyStream = true) throw();
-
-	struct uniqueClientData_t
-	{
-		time_t m_connectTime;			// longest connection time of group
-		uniString::utf8	m_hostName;		// holds the hostname (usually only available with namelookups=1)
-		uniString::utf8 m_ipAddr;
-		uniString::utf8	m_XFF;
-		uniString::utf8 m_userAgent;	// either holds a raw or processed list of user agents
-		uniString::utf8 m_unique;		// unique id of the client
-		size_t m_total;					// total number of clients on this
-		bool m_ripAddr;					// if the address is reserved or not
-
-		uniqueClientData_t() throw() : m_connectTime(0), m_total(0), m_ripAddr(false) {}
-	};
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/streamData.cpp b/Src/Plugins/DSP/sc_serv3/streamData.cpp
deleted file mode 100644
index 6a78b00f..00000000
--- a/Src/Plugins/DSP/sc_serv3/streamData.cpp
+++ /dev/null
@@ -1,5666 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#include <string.h>
-#define strncasecmp _strnicmp
-#endif
-#include <assert.h>
-#include <list>
-#include <stdio.h>
-#include <fstream>
-#include <sstream>
-#include "streamData.h"
-#include "metadata.h"
-#include "stats.h"
-#include "aolxml/aolxml.h"
-#include "stl/stringUtils.h"
-#include "stl/stlx.h"
-#include "global.h"
-#include "protocol_shoutcastClient.h"
-#include "bandwidth.h"
-#include "uvox2Common.h"
-#include "base64.h"
-#include "file/fileUtils.h"
-#include "ADTSHeader.h"
-#include "MP3Header.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-#define DEBUG_LOG(...)          do { if (gOptions.streamDataDebug()) DLOG(__VA_ARGS__); } while(0)
-#define AD_DEBUG_LOG(...)       do { if (gOptions.adMetricsDebug()) DLOG(__VA_ARGS__); } while(0)
-#define ADLOGNAME               "ADVERT"
-#define LOGNAME                 "STREAMDATA"
-
-/////////// statics ///
-
-AOL_namespace::mutex						streamData::g_streamMapLock;
-set<streamData*>							streamData::g_streams;		// all the streams, including those that are "dying"
-map<streamData::streamID_t, streamData*>	streamData::g_streamMap;
-map<streamData::streamID_t, time_t>			streamData::g_streamUptime;
-map<streamData*, int>						streamData::g_streamReferenceCounts;
-map<streamData*, bool>						streamData::g_streamSourceIsConnected;	// is the source connected
-AOL_namespace::mutex						streamData::g_sourceRelayMapLock;
-map<streamData::streamID_t, int>			streamData::g_streamSourceRelayIsActive;	// is the source relay active e.g. connected or trying to connect or needs to die?
-AOL_namespace::mutex						streamData::g_streamSongHistoryMapLock;
-map<streamData::streamID_t, streamData::streamHistory_t>	streamData::g_streamSongHistoryMap;
-static AOL_namespace::mutex					g_streamMessageMapLock;
-static std::map<streamData::streamID_t, utf8>	g_streamMessageMap;
-
-// global pool related
-AOL_namespace::mutex                                streamData::adGroups::adContentLock;
-list<streamData::specialFileData*>                  streamData::adGroups::adContentPending;
-time_t                                              streamData::adGroups::m_nextDownloadRun;
-streamData::adGroups::gpool                         streamData::adGroups::adData;
-
-#ifdef LICENCE_FREE
-
-int streamData::streamInfo::m_allowSSL_global = 1;
-int streamData::streamInfo::m_allowAllFormats_global = 1;
-int streamData::streamInfo::m_allowBackupURL_global = 1;
-int streamData::streamInfo::m_allowMaxBitrate_global = 0;
-
-#else
-// default free version settings if no licence check response
-//
-int streamData::streamInfo::m_allowSSL_global = 1;
-int streamData::streamInfo::m_allowAllFormats_global = 1;
-int streamData::streamInfo::m_allowMaxBitrate_global = 0;
-int streamData::streamInfo::m_allowBackupURL_global = 1;
-#endif
-
-
-// just make sure we drop the collected adverts, helps track memory leakage
-streamData::adGroups::gpool::~gpool()
-{
-    for (; begin() != end(); )
-    {
-        delete begin()->second;
-        erase (begin());
-    }
-}
-
-#if defined(_DEBUG) || defined(DEBUG)
-map<streamData::streamID_t, FILE*>			streamData::g_streamSaving;
-#endif
-
-static size_t handle_returned_header(void *ptr, size_t size, size_t nmemb, void *stream);
-static size_t handle_returned_data(void *ptr, size_t size, size_t nmemb, void *stream);
-int xferinfo(void *p, curl_off_t /*dltotal*/, curl_off_t /*dlnow*/, curl_off_t /*ultotal*/, curl_off_t /*ulnow*/);
-
-class streamData::adGroups::adGroupsRetriever
-{
-public:
-	stringstream	ss;
-	CURL			*m_curl;
-	utf8			post;
-	streamData::streamID_t	m_sid;
-	char*			m_curl_error;
-    int				cleanup;
-	int				loaded;
-    string          last_uuid;
-
-	adGroupsRetriever(const utf8 &url, const streamData::streamID_t sid) : m_curl(0), m_sid(sid), cleanup(0), loaded(0)
-    {
-		m_curl_error = new char[CURL_ERROR_SIZE];
-		memset(m_curl_error, 0, CURL_ERROR_SIZE);
-
-		streamData *sd = streamData::accessStream(sid);
-		if (sd)
-		{
-			if (!sd->radionomyID().empty() && sd->streamAdvertMode())
-			{
-				m_curl = webClient::setupCurlDefaults(m_curl, ADLOGNAME, (url + "/?radionomyid=" + sd->radionomyID()), 0, 30L, sid);
-				if (m_curl)
-				{
-                    const streamData::streamInfo &stream = sd->getInfo();
-
-					curl_easy_setopt(m_curl, CURLOPT_HEADERFUNCTION, handle_returned_header);
-					curl_easy_setopt(m_curl, CURLOPT_HEADERDATA, this);
-					curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, handle_returned_data);
-					curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, &ss);
-					curl_easy_setopt(m_curl, CURLOPT_ERRORBUFFER, &(m_curl_error[0]));
-
-					// use progress/xfer functions to trap for the server kill case
-					curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, 0L);
-					curl_easy_setopt(m_curl, CURLOPT_XFERINFOFUNCTION, xferinfo);
-					curl_easy_setopt(m_curl, CURLOPT_XFERINFODATA, (long)sid);
-
-#ifdef CURLOPT_PASSWDFUNCTION
-					curl_easy_setopt (m_curl, CURLOPT_PASSWDFUNCTION, my_getpass);
-#endif
-
-                    httpHeaderMap_t vars;
-                    vars["tstamp"] = tos(::time(NULL));
-                    vars["host"] = sd->streamPublicIP();
-                    vars["path"] = getStreamPath(sid);
-                    vars["radionomyid"] = vars["ref"] = sd->radionomyID();
-                    vars["srvid"] = stream.m_serverID;
-                    vars["bitrate"] = tos(sd->streamBitrate());
-                    vars["codec"] = sd->streamContentType();
-                    vars["server"] = "Shoutcast v" + gOptions.getVersionBuildStrings();
-                    vars["port"] = tos(g_portForClients);
-
-					post = encodeVariables(vars);
-					curl_easy_setopt(m_curl, CURLOPT_POSTFIELDSIZE, post.size());
-					curl_easy_setopt(m_curl, CURLOPT_COPYPOSTFIELDS, post.c_str());
-                    last_uuid = sd->advertGroups.lastUUID;
-                    if (last_uuid == "")
-                        AD_DEBUG_LOG ("sending no UUID", ADLOGNAME, sid);
-                    else
-                        AD_DEBUG_LOG ("sending UUID " + tos(last_uuid), ADLOGNAME, sid);
-					cleanup = 0;
-					loaded = 1;
-				}
-                else
-                    WLOG ("Unable to create link for map", LOGNAME, sid);
-			}
-			// some clients may have already connected to the stream before
-			// it had been publically listed, so for those we need to force
-			// an update of the stream's information so we have the new lot
-			else if (sd->m_streamInfo.m_streamPublic || !gOptions.cdn().empty())
-			{
-				int addFailIgnore = 0, errorCode = 0;
-				if (sd->YP2_addSuccessful(addFailIgnore, errorCode))
-				{
-					loaded = 2;
-				}
-			}
-			sd->releaseStream();
-		}
-    }
-
-	~adGroupsRetriever()
-	{
-		if (m_curl)
-		{
-			// incase we're mid-processig then we don't
-			// want to do this otherwise things go boom
-			// instead we allow it to remain and it'll
-			// be cleaned up once the abort is actioned
-			if (loaded && cleanup)
-			{
-				curl_easy_cleanup(m_curl);
-			}
-			m_curl = 0;
-		}
-
-		forgetArray(m_curl_error);
-
-		loaded = cleanup = 0;
-	}
-};
-
-
-static size_t handle_returned_header(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-    int amount = (int)(size * nmemb);
-    size_t remain = amount;
-    const char *p = (const char*)ptr, *eol = (const char*)memchr (p, '\r', amount);
-    class streamData::adGroups::adGroupsRetriever *feed = (streamData::adGroups::adGroupsRetriever*)stream;
-
-    if (eol == NULL)
-        return 0;
-
-    remain = eol - p;
-    if (remain > 13 && strncasecmp (p, "bluebox-uuid:", 13) == 0)
-    {
-        p += 13;
-        size_t skip = strspn (p, " \t");
-        remain -= (13 + skip);
-        p += skip;
-        feed->last_uuid = string (p, remain);
-        DEBUG_LOG ("identified uuid as :" + tos (feed->last_uuid) + ":", ADLOGNAME);
-    }
-    bandWidth::updateAmount(bandWidth::ADVERTS, amount);
-    return amount;
-}
-
-static size_t handle_returned_data(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-    stringstream *ss = (stringstream*)stream;
-    size_t length = size * nmemb;
-    if (ss)
-    {
-        ss->write((const char*)ptr, length);
-    }
-
-    bandWidth::updateAmount(bandWidth::ADVERTS, length);
-    return length;
-}
-
-int xferinfo(void *p, curl_off_t /*dltotal*/, curl_off_t /*dlnow*/, curl_off_t /*ultotal*/, curl_off_t /*ulnow*/)
-{
-    long sid = (long)p;
-    const int killed = iskilled();
-
-    if (killed || (sid >= 0 && !streamData::isSourceConnected((size_t)sid)))
-    {
-        WLOG("[ADVERT sid=" + tos(sid) + "] Aborting data transfer due to the " +
-                (killed ? "server shutting down." : "stream source disconnecting."), ADLOGNAME, sid);
-        return -1;
-    }
-    return 0;
-}
-
-// assumes the g_streamMapLock is set. Creates a stream based on the config data, installs it into
-// the necessary tables and returns the result
-streamData* streamData::_createNewStream(const streamSetup& setup) throw(exception)
-{
-	if (setup.m_sid > 0)
-	{
-		streamData *result = new streamData(setup);
-		if (result)
-		{
-			g_streamMap[setup.m_sid] = result;
-			g_streams.insert(result);
-			g_streamUptime[setup.m_sid] = ::time(NULL);
-			g_streamReferenceCounts[result] = 1;
-			g_streamSourceIsConnected[result] = true;
-			DEBUG_LOG(setup.m_logString + "Creating new stream for ID " + tos(setup.m_sid), LOGNAME, setup.m_sid);
-			return result;
-		}
-		else
-		{
-			DEBUG_LOG(setup.m_logString + "Failed to create new stream for ID " + tos(setup.m_sid));
-		}
-	}
-	return 0;
-}
-
-/*
-	Create a type 1 (old shoutcast) stream. A number of things can happen here
-	1) Sources are disabled - return NULL
-	2) Stream does not exist - create a new one
-	3) If the stream exists and a source is connected, return NULL
-	4) If the stream exists, but the source is not connected, then check the stream configuration.
-		a) Compatible, return the streamData
-		b) Incompatible, boot clients, move stream to dead pool, create a new one
-*/
-streamData* streamData::createStream(const streamSetup& setup) throw(exception)
-{
-	streamData *result = 0;
-
-	if (setup.m_sid > 0)
-	{
-		stackLock sml(g_streamMapLock);
-
-		// does the stream exist
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(setup.m_sid);
-
-		if (i == g_streamMap.end())
-		{
-			// case 2) The stream does not exist
-			result = _createNewStream(setup);
-		}
-		else // cases 3 and 4
-		{
-			streamData *sd = (*i).second;
-			// data structure integrity
-			assert(g_streamSourceIsConnected.find(sd) != g_streamSourceIsConnected.end());
-			assert(g_streams.find(sd) != g_streams.end());
-			assert(g_streamReferenceCounts.find(sd) != g_streamReferenceCounts.end());
-			assert(g_streamReferenceCounts[sd] > 0);
-
-			if (!g_streamSourceIsConnected[sd])
-			{
-				// case 4 - stream exists and source is not connected
-				if (sd->isSourceCompatible(setup))
-				{
-					// case 4a - streams exists and is compatible
-					sd->sourceReconnect(setup);
-					g_streamSourceIsConnected[sd] = true;
-					++g_streamReferenceCounts[sd];
-					result = sd;
-				}
-				else
-				{
-					if (!setup.m_backupURL.empty() && !sd->isBackupStream(setup.m_sid))
-					{
-						sd->sourceReconnect(setup);
-						g_streamSourceIsConnected[sd] = true;
-						++g_streamReferenceCounts[sd];
-						result = sd;
-					}
-					// case 4b - source is incompatible. Move current stream to the dead pool and create a new one
-					else
-					{
-						DEBUG_LOG(setup.m_logString + "Source has changed. Moving old stream " +
-								  tos(setup.m_sid) + " to dead pool and creating a new one.", LOGNAME, setup.m_sid);
-						// if you call die on a stream you MUST remove it from the g_streamMap
-						_moveStreamToDeadPool(setup.m_sid);
-						result = _createNewStream(setup);
-					}
-				}
-			}
-			// else, case 3 - source is connected. Do nothing and return default intializer of result (NULL)
-			else
-			{
-				// if we have a backup running and a non-backup trying
-				// to connect then we should allow it to connect to it
-				if (!setup.m_backup && sd->isBackupStream(setup.m_sid))
-				{
-					// case 4xxx - source is incompatible. Move current stream to the dead pool and create a new one
-					sd->setKill((sd->isBackupStream(setup.m_sid) ? 2 : 1));
-					sd->sourceReconnect(setup);
-					g_streamSourceIsConnected[sd] = true;
-					++g_streamReferenceCounts[sd];
-					result = sd;
-				}
-				// otherwise block the source connection from joining
-				// as we should not override an existing true source.
-			}
-		}
-	}
-	if (result)
-	    result->m_startTime = ::time(NULL);
-	return result;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////	
-// putting a stream, conceptually, into the dead pool requires a specific order of operations
-// to avoid structure corruption. This order is different depending on the reference point
-// so these calls cover the scenarios
-void streamData::_moveStreamToDeadPool(streamData *sd) throw()
-{
-	if (sd)
-	{
-		g_streamMap.erase(sd->ID()); // do this before calling die, since die() clears objects stream ID()
-		g_streamUptime.erase(sd->ID());
-		sd->die();
-	}
-}
-
-void streamData::removeRelayStatus(streamID_t ID)
-{
-	#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(__FUNCTION__, LOGNAME, ID);
-	#endif
-	stackLock sml(g_sourceRelayMapLock);
-
-	map<streamID_t, int>::iterator r = g_streamSourceRelayIsActive.find(ID);
-	if (r != g_streamSourceRelayIsActive.end())
-	{
-		g_streamSourceRelayIsActive.erase(r);
-    }
-}
-
-
-void streamData::_moveStreamToDeadPool(map<streamID_t, streamData*>::iterator i) throw()
-{
-	// if you call die on a stream you MUST remove it from the g_streamMap
-	(*i).second->die();
-
-	g_streamUptime.erase((*i).second->m_ID);
-	g_streamMap.erase(i);
-}
-
-bool streamData::isAllowedType(const int type)
-{
-	bool mp3;
-	return isAllowedType(type, mp3);
-}
-
-bool streamData::isAllowedType(const int type, bool& mp3)
-{
-	mp3 = (type == MP3_DATA);
-	return (mp3 || (type == AACP_DATA) || (type == AAC_LC_DATA));
-}
-
-void streamData::_moveStreamToDeadPool(streamData::streamID_t id) throw()
-{
-	if (id > 0)
-	{
-		map<streamID_t, streamData*>::iterator i = g_streamMap.find(id);
-		if (i != g_streamMap.end())
-		{
-			_moveStreamToDeadPool(i);
-		}
-	}
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////
-
-// you must hold the g_streamMapLock before calling this. increases the reference count
-// on stream with indicated ID. returns stream object
-streamData* streamData::_increaseReferenceCount(streamID_t id)
-{
-	streamData *result = 0;
-
-	if (id > 0)
-	{
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-
-		if (i != g_streamMap.end())
-		{
-			assert((*i).second);
-			map<streamData*, int>::iterator ic = g_streamReferenceCounts.find((*i).second);
-			assert(ic != g_streamReferenceCounts.end());
-			assert((*ic).second);
-			++(*ic).second;
-			result = (*i).second;
-		}
-	}
-	return result;
-}
-
-// you must hold the g_streamMapLock before calling this. Decreases the reference count
-// on the stream. Returns stream object if reference count has not reached zero
-void streamData::_reduceReferenceCount(const utf8& logString, streamData *sd, const streamID_t id)
-{
-	if (sd && (id > 0))
-	{
-		map<streamData*, int>::iterator ic = g_streamReferenceCounts.find(sd);
-
-		// integrity checks
-		assert(ic != g_streamReferenceCounts.end());
-		assert(g_streams.find(sd) != g_streams.end());
-		assert(g_streamSourceIsConnected.find(sd) != g_streamSourceIsConnected.end());
-
-		///////////////////
-		if (ic != g_streamReferenceCounts.end())
-		{
-			if (--(*ic).second <= 0)
-			{
-				// clean it up
-                if (id)
-                {
-                    g_streamMap.erase(id);
-                    g_streamUptime.erase(id);
-                }
-
-                g_streamReferenceCounts.erase(ic);
-                g_streamSourceIsConnected.erase(sd);
-                g_streams.erase(sd);
-                delete sd;
-                sd = NULL;
-
-                if (id)
-                {
-                    DEBUG_LOG (logString + "Cleaning up stream as no references remain", LOGNAME, id);
-                }
-			}
-			else
-			{
-				DEBUG_LOG (logString + "Stream still has " + tos((*ic).second) + " reference" + ((*ic).second > 1 ? "s" : ""), LOGNAME, id);
-			}
-		}
-	}
-}
-
-void streamData::streamSourceLost(const utf8& logString, streamData *sd, const streamID_t id)
-{
-	if (sd && (id > 0))
-	{
-		stackLock sml(g_streamMapLock);
-
-		assert(g_streamSourceIsConnected[sd]);
-		g_streamSourceIsConnected[sd] = false;
-		_reduceReferenceCount(logString, sd, id);
-
-		// if we are auto dumping our users, then move
-		// the stream to the dead pool immediately
-		bool autoDumpUsers = gOptions.stream_autoDumpUsers(id);
-		if (!gOptions.read_stream_autoDumpUsers(id))
-		{
-			autoDumpUsers = gOptions.autoDumpUsers();
-		}
-
-		if (autoDumpUsers)
-		{
-			_moveStreamToDeadPool(id);
-		}
-	}
-
-    // if there are still listeners but no sources
-    // then (without this) the listeners will halt
-    // this will force things to keep things alive
-    threadedRunner::wakeup();
-}
-
-void streamData::streamClientLost(const utf8& logString, streamData *sd, const streamID_t id)
-{
-	if (sd && (id > 0))
-	{
-		stackLock sml(g_streamMapLock);
-
-		_reduceReferenceCount(logString, sd, id);
-	}
-}
-
-void streamData::streamUpdate(const streamID_t id, const uniString::utf8 &authHash,
-							  const int streamMaxUser, const int streamMaxBitrate,
-							  const int streamMinBitrate) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_streamMapLock);
-
-		bool authChanged = (m_streamInfo.m_authHash != authHash);
-		if (authChanged && !m_streamInfo.m_authHash.empty())
-		{
-			YP2_remove();
-		}
-
-		m_streamInfo.m_authHash = authHash;
-		m_streamInfo.m_streamMaxBitrate = streamMaxBitrate;
-		m_streamInfo.m_streamMinBitrate = streamMinBitrate;
-		m_streamInfo.m_streamMaxUser = streamMaxUser;
-
-		if (authChanged && !authHash.empty())
-		{
-			YP2_add();
-		}
-	}
-}
-
-void streamData::updateSourceIdent(uniString::utf8& sourceIdent, const bool relay) throw()
-{
-	// attempt to determine the version of the source connected
-	if (!sourceIdent.empty())
-	{
-		utf8::size_type pos = sourceIdent.find(utf8("<BR>"));
-		if (pos != utf8::npos)
-		{
-			sourceIdent = sourceIdent.substr(0, pos);
-		}
-		pos = sourceIdent.find(utf8("Ultravox/2.1 "));
-		if (pos != utf8::npos && pos == 0)
-		{
-			sourceIdent = sourceIdent.substr(13);
-		}
-
-		if (!sourceIdent.empty() && ((!relay && m_streamInfo.m_sourceType != SHOUTCAST2) || relay))
-		{
-			if (m_streamInfo.m_sourceIdent.empty() ||
-				(m_streamInfo.m_sourceIdent == utf8("Legacy / Unknown")))
-			{
-				m_streamInfo.m_sourceIdent = sourceIdent;
-			}
-		}
-	}
-}
-
-// Client wants access to the stream. returns null if stream does not exist
-// this one is only called by protocol_admincgi in order to allow metadata updates
-// from sc_trans. Actual client connects should use the accessStream(streamID_t,bool)
-// call, to allow consideration for whether the stream is is actually connected, or
-// to allow rejection if yp2 has not returned stream information yet.
-streamData* streamData::accessStream(streamID_t id) throw()
-{
-	#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(__FUNCTION__, LOGNAME, id);
-	#endif
-
-	if (id > 0)
-	{
-		try
-		{
-			if (g_streamMapLock.timedLock(3000))
-			{
-				streamData *sd = _increaseReferenceCount(id);
-				g_streamMapLock.unlock();
-				return sd;
-			}
-		}
-		catch (const exception &ex)
-		{
-			WLOG(utf8("Failed to acquire lock(1): ") + ex.what(), LOGNAME, id);
-		}
-	}
-	return 0;
-}
-
-streamData* streamData::accessStream(streamID_t id, bool &isSourceActive) throw()
-{
-	#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(utf8(__FUNCTION__) + "(2)", LOGNAME, id);
-	#endif
-
-	if (id > 0)
-	{
-		try
-		{
-			if (g_streamMapLock.timedLock(3000))
-			{
-				streamData *sd = _increaseReferenceCount(id);
-				if (sd)
-				{
-					assert(g_streamSourceIsConnected.find(sd) != g_streamSourceIsConnected.end());
-					isSourceActive = g_streamSourceIsConnected[sd];
-				}
-				g_streamMapLock.unlock();
-				return sd;
-			}
-		}
-		catch (const exception &ex)
-		{
-			WLOG(utf8("Failed to acquire lock(2): ") + ex.what(), LOGNAME, id);
-		}
-	}
-
-	isSourceActive = false;
-	return 0;
-}
-
-void streamData::releaseStream()
-{
-	#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(__FUNCTION__, LOGNAME, this->ID());
-	#endif
-
-	stackLock sml(g_streamMapLock);
-
-	_reduceReferenceCount(utf8(), this, this->ID());
-}
-//////////
-
-bool streamData::isSourceConnected(streamData::streamID_t id) throw()
-{
-	if ((id > 0) && g_streamMapLock.timedLock(3000))
-	{
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-		if (i == g_streamMap.end())
-		{
-			g_streamMapLock.unlock();
-			return false;
-		}
-
-		const bool connected = g_streamSourceIsConnected[(*i).second];
-		g_streamMapLock.unlock();
-		return connected;
-	}
-	return false;
-}
-
-// is a relay source active either from trying to connect or connected
-// (which also includes backup sources to prevent multiple spawning)
-int streamData::isRelayActive(streamData::streamID_t id, bool &noEntry) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_sourceRelayMapLock);
-
-		map<streamID_t,int>::const_iterator i = g_streamSourceRelayIsActive.find(id);
-		if (i == g_streamSourceRelayIsActive.end())
-		{
-			noEntry = true;
-			#if defined(_DEBUG) || defined(DEBUG)
-			DEBUG_LOG("[STREAMDATA sid=" + tos(id) + "] isRelayActive: " + tos(id) + " ~0", LOGNAME, id);
-			#endif
-			return 0;
-		}
-
-		try
-		{
-			// only signal active if 1 since 2 is used to signal being stopped
-			#if defined(_DEBUG) || defined(DEBUG)
-			DEBUG_LOG("[STREAMDATA sid=" + tos(id) + "] isRelayActive: " + tos(id) + " " + tos((id == (*i).first) ? (*i).second : 0), LOGNAME, id);
-			#endif
-			return ((id == (*i).first) ? (*i).second : 0);
-		}
-		catch(...)
-		{
-		}
-	}
-	return 0;
-}
-
-int streamData::setRelayActiveFlags (streamData::streamID_t id, bool &noEntry, int flags, int mask)
-{
-    int state = 0;
-    string msg;
-
-    if (id <= 0 || (mask == 0 && flags <= 0))
-        return -1;
-    do
-    {
-        stackLock sml(g_sourceRelayMapLock);
-
-        if (flags < 0)
-        {
-            map<streamID_t, int>::iterator r = g_streamSourceRelayIsActive.find (id);
-            if (r != g_streamSourceRelayIsActive.end())
-            {
-                state = (*r).second;
-                flags = state & mask;
-                msg = " is " + tos (state) + ", flags " + tos(flags) + "/" + tos(mask);
-                break; // it exists, so skip the setting (flags is nonsensical) and just possible log it
-            }
-            g_streamSourceRelayIsActive[id] = 0;    // create entry in map with 0 value;
-            noEntry = true;
-            return 0;
-        }
-        int &v = g_streamSourceRelayIsActive[id];
-
-        if (mask == 0)
-            mask = flags;
-        flags &= mask;  // only focus on the requested bits.
-        if ((v & mask) == flags)
-        {
-           state = v;
-           break;  // already set as this, so return -1
-        }
-        msg = " was " + tos (v) + ", flags " + tos(flags) + "/" + tos(mask);
-        v = (v & ~mask) | (flags & mask);
-        state = v;
-        flags = ~state; // invalidate the last test as we have done the change.
-
-    } while (0);
-
-#if defined(_DEBUG) || defined(DEBUG)
-    DEBUG_LOG("[STREAMDATA sid=" + tos(id) + "] RelayActiveFlags: " + tos(id) + " " + tos(state) + msg, LOGNAME, id);
-#endif
-    noEntry = false;
-    if ((state & mask) == flags)
-        return -1;
-    return state;
-}
-
-void streamData::setRelayActive(streamData::streamID_t id, int state) throw()
-{
-    int p;
-    do
-    {
-        if (id <= 0)
-            return;
-
-        stackLock sml(g_sourceRelayMapLock);
-
-        if (state < 0)
-        {
-            map<streamID_t, int>::iterator r = g_streamSourceRelayIsActive.find (id);
-            if (r != g_streamSourceRelayIsActive.end())
-            {
-                p = state = (*r).second;
-                break; // it exists, so skip setting it and just report it
-            }
-            state = 0;  // create entry in map with 0 value;
-        }
-        p = g_streamSourceRelayIsActive[id] = state;
-    } while (0);
-
-#if defined(_DEBUG) || defined(DEBUG)
-    string msg = " was " + tos (p);
-    DEBUG_LOG("[STREAMDATA sid=" + tos(id) + "] setRelayActive: " + tos(id) + " " + tos(state) + msg, LOGNAME, id);
-#endif
-}
-
-///////////  are used in main() to facilitate an orderly shutdown that sends the
-///////////  necessary remsrv to YP
-// send die signal to all streams
-void streamData::killAllSources() throw()
-{
-	stackLock sml(g_streamMapLock);
-
-	// if you call die on a stream you must remove it from the g_streamMap
-	for_each(g_streams.begin(),g_streams.end(),mem_fun(&streamData::die));
-	g_streamMap.clear();
-}
-
-// total of all streamData objects, including those that are dying
-size_t streamData::totalStreams() throw()
-{
-	if (g_streamMapLock.timedLock(3000))
-	{
-		const size_t total = g_streams.size();
-		g_streamMapLock.unlock();
-		return total;
-	}
-
-	return 0;
-}
-
-size_t streamData::totalActiveStreams(size_t &lastSID) throw()
-{
-	size_t total = 0;
-	if (totalStreams() > 0)
-	{
-		size_t inc = 0;
-		size_t sid = 0;
-		do
-		{
-			streamInfo info;
-			extraInfo extra;
-			sid = enumStreams(inc);
-			if (getStreamInfo(sid, info, extra))
-			{
-				++total;
-				lastSID = sid;
-			}
-			++inc;
-		}
-		while (sid);
-	}
-	return total;
-}
-
-// enumerate the available number of streams actually present
-size_t streamData::enumStreams(const size_t index) throw()
-{
-	stackLock sml(g_streamMapLock);
-
-	if (index < g_streamMap.size())
-	{
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.begin();
-		size_t inc = 0;
-		while (inc < index)
-		{
-			++inc;
-			++i;
-		}
-		return (*i).second->ID();
-	}
-	return 0;
-}
-
-// enumerate the available number of streams to get the stream ids
-streamData::streamIDs_t streamData::getStreamIds(const int mode) throw()
-{
-	streamIDs_t streamIds;
-	if (totalStreams() > 0)
-	{
-		size_t inc = 0;
-		size_t sid = 0;
-		do
-		{
-			sid = streamData::enumStreams(inc);
-			++inc;
-			if (sid)
-			{
-				streamIds.insert(sid);
-			}
-		}
-		while (sid);
-	}
-
-	if (mode)
-	{
-		// now we check through for any known but inactive relays
-		// and then get them included for being kicked as well
-		vector<config::streamConfig> relayList(gOptions.getRelayList());
-		if (!relayList.empty())
-		{
-			for (vector<config::streamConfig>::const_iterator i = relayList.begin(); i != relayList.end(); ++i)
-			{
-				streamIds.insert((*i).m_streamID);
-			}
-		}
-
-		if (mode == 2)
-		{
-			// this will now do a final check for any listeners which are on
-			// an un-confiured stream but are being provided a 'backupfile'.
-			streamData::streamIDs_t activeIds = stats::getActiveStreamIds();
-			if (!activeIds.empty())
-			{
-				for (streamData::streamIDs_t::const_iterator i = activeIds.begin(); i != activeIds.end(); ++i)
-				{
-					streamIds.insert((*i));
-				}
-			}
-		}
-	}
-
-	return streamIds;
-}
-
-void streamData::killStreamSource(const streamID_t id) throw()
-{
-	if (id > 0)
-	{
-		// handle relays / backups a bit differently from normal streams
-		// since if it's not been able to connect or is backup mode then
-		// the normal 'isSourceConnected' will not be able to kill it.
-		if ((!gOptions.stream_relayURL(id).empty() && gOptions.stream_movedUrl(id).empty()) ||
-			streamData::isRelayStream(id) || streamData::isBackupStream(id))
-		{
-			bool noEntry = false, active = ((streamData::isRelayActive(id, noEntry) & 12));
-			if (active)
-			{
-				ILOG(gOptions.logSectionName() + "Kicking source for stream #" + tos(id) + ".", LOGNAME, id);
-
-				// kick source off system
-				streamData::killSource(id);
-			}
-		}
-		else if (streamData::isSourceConnected(id))
-		{
-			ILOG(gOptions.logSectionName() + "Kicking source for stream #" + tos(id) + ".", LOGNAME, id);
-
-			// kick source off system
-			streamData::killSource(id);
-		}
-	}
-}
-
-// used by web interface to dump a specific source
-void streamData::killSource(const streamID_t id, streamData *sd) throw()
-{
-	if ((id > 0) && g_streamMapLock.timedLock(3000))
-	{
-		if (sd)
-		{
-			g_streamSourceIsConnected[sd] = false;
-			_reduceReferenceCount(utf8(), sd, sd->ID());
-		}
-
-		// force flag a source relay kick if this is called
-		bool noEntry = false;
-		if ((isRelayActive(id, noEntry) & 12))
-		{
-			setRelayActiveFlags (id, noEntry, 2);
-		}
-		_moveStreamToDeadPool(id);
-
-		g_streamMapLock.unlock();
-	}
-}
-
-// you must remove this streamData object from the g_streamMap immediately before or after calling
-// this, otherwise you'll corrupt the static structures.
-// Reason: die will cause the streamData to be removed from g_streams, but since die() causes ID() to return zero,
-// it will not get removed from g_streamMap
-void streamData::die() throw()
-{
-	if (!m_dead)
-	{
-		stackLock sml(m_stateLock);
-		_YP2_remove();
-		m_dead = 1;
-	}
-}
-
-/////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////
-utf8 streamData::getStreamContentType(const streamID_t id) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_streamMapLock);
-
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-		return (i == g_streamMap.end() ? (utf8)"" : (*i).second->streamContentType());
-	}
-	return "";
-}
-
-const bool streamData::updateSourceSampleRate(unsigned int& samplerate, const unsigned int read_samplerate) throw()
-{
-	// we do some extra checking so we make sure we're got
-	// consecutive frames that are at the same samplerate
-	// otherwise we can end up with the checking spinning
-	//DLOG ("samp " + tos(samplerate) + " read " + tos(read_samplerate) + " last" + tos(m_lastStreamSampleRate));
-	if (read_samplerate > 0)
-	{
-		if ((m_lastStreamSampleRate == 0) ||
-				(m_lastStreamSampleRate == read_samplerate))
-		{
-			// we've got something that matches
-			m_streamInfo.m_streamSampleRate = samplerate = read_samplerate;
-			m_lastStreamSampleRate = read_samplerate;
-			return true;
-		}
-	}
-	return false;
-}
-
-bool streamData::isRelayStream(const streamID_t id) throw()
-{
-	bool result = false;
-	if (id > 0)
-	{
-		stackLock sml(g_streamMapLock);
-
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-		if (i != g_streamMap.end())
-		{
-			assert(g_streams.find((*i).second) != g_streams.end());
-			result = !(*i).second->m_streamInfo.m_relayURL.empty();
-		}
-	}
-	return result;
-}
-
-bool streamData::isBackupStream(const streamID_t id) throw()
-{
-	bool result = false;
-	if (id > 0)
-	{
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-		if (i != g_streamMap.end())
-		{
-			assert(g_streams.find((*i).second) != g_streams.end());
-			// check if there is a backup specified and also if we've been set as being a running backup
-			result = (!(*i).second->m_streamInfo.m_backupURL.empty() && (*i).second->m_streamInfo.m_backup);
-		}
-	}
-	return result;
-}
-
-bool streamData::getStreamInfo(const streamID_t id, streamInfo &info, extraInfo &extra) throw()
-{
-	if (id > 0)
-	{
-		extra.ypConnected = 0;
-
-		stackLock sml(g_streamMapLock);
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-		if (i == g_streamMap.end())
-		{
-			extra.ypErrorCode = 200;
-			extra.isConnected = false;
-			extra.isRelay = false;
-			extra.isBackup = false;
-		}
-		else
-		{
-			assert(g_streams.find((*i).second) != g_streams.end());
-			assert(g_streamSourceIsConnected.find((*i).second) != g_streamSourceIsConnected.end());
-
-			info = (*i).second->m_streamInfo;
-			extra.isConnected = g_streamSourceIsConnected[(*i).second];
-			extra.isRelay = !(*i).second->m_streamInfo.m_relayURL.empty();
-			extra.isBackup = (!(*i).second->m_streamInfo.m_backupURL.empty() && (*i).second->m_streamInfo.m_backup);
-
-			extra.ypErrorCode = info.m_ypResponseCode;
-			extra.ypConnected = ((*i).second->m_streamInfo.m_streamPublic && (info.m_ypResponseCode == 200));
-
-		}
-	}
-	else
-	{
-		extra.ypConnected = 0;
-		extra.ypErrorCode = 200;
-		extra.isConnected = false;
-		extra.isRelay = false;
-		extra.isBackup = false;
-	}
-
-	return extra.isConnected;
-}
-
-void streamData::getStreamSongHistory(const streamID_t id, streamHistory_t& songHistory) throw()
-{
-	if (id > 0)
-	{
-		stackLock sml(g_streamSongHistoryMapLock);
-		map<streamID_t, streamHistory_t>::const_iterator i = g_streamSongHistoryMap.find(id);
-		if (i != g_streamSongHistoryMap.end())
-		{
-			songHistory = (*i).second;
-		}
-	}
-}
-
-bool streamData::getStreamNextSongs(const streamID_t id, uniString::utf8& currentSong,
-									uniString::utf8& comingSoon,
-									vector<uniString::utf8>& nextSongs) throw()
-{
-	bool isConnected = false;
-	if (id > 0)
-	{
-		stackLock sml(g_streamMapLock);
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-		if (i != g_streamMap.end())
-		{
-			assert(g_streams.find((*i).second) != g_streams.end());
-			assert(g_streamSourceIsConnected.find((*i).second) != g_streamSourceIsConnected.end());
-			isConnected = g_streamSourceIsConnected[(*i).second];
-			currentSong = (*i).second->m_streamInfo.m_currentSong;
-			comingSoon = (*i).second->m_streamInfo.m_comingSoon;
-			nextSongs = (*i).second->m_streamInfo.m_nextSongs;
-		}
-	}
-	return isConnected;
-}
-
-utf8 streamData::getContentType(const streamData::streamInfo &info) throw()
-{
-	utf8 content;
-	if (info.m_uvoxDataType == MP3_DATA)
-	{
-		content = "MP3";
-	}
-	else if (info.m_uvoxDataType == AACP_DATA || info.m_uvoxDataType == AAC_LC_DATA)
-	{
-		content = "HE-AAC";
-	}
-	else if (info.m_uvoxDataType == OGG_DATA)
-	{
-		content = "OGG Vorbis";
-	}
-	else
-	{
-		content = aolxml::escapeXML(!info.m_contentType.empty() ? info.m_contentType : "unknown");
-		if (content == "video/nsv")
-		{
-			content = "NSV";
-		}
-	}
-	return content;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////
-/*********************************************************************************************/
-////////////////////////////////////////////////////////////////////////////////////////////////
-
-// file names for intro and backup files can have %d in them which should be replace by the bitrate
-static uniFile::filenameType parseSpecialName(const uniFile::filenameType &rootName, const size_t bitrate) throw()
-{
-	uniFile::filenameType result = rootName;
-	if (!result.empty())
-	{
-		uniFile::filenameType::size_type pos = result.find(uniFile::filenameType("%d"));
-		if (pos != uniFile::filenameType::npos)
-		{
-			result.replace(pos,2,uniFile::filenameType(tos(bitrate)));
-		}
-	}
-	return result;
-}
-
-
-int streamData::convertRawToUvox (vector<__uint8> &sc2buffer, const vector<__uint8> &buf,
-        const int uvoxDataType, const int bitrate, const unsigned int samplerate) throw()
-{
-    __uint64 frameCount = 0;
-    int last_size = 0, end = 0;
-	const int len = (int)buf.size();
-    const bool mp3 = (uvoxDataType == MP3_DATA);
-
-    for (int i = 0; (i < (len - 8)) && !iskilled();)
-    {
-        unsigned int read_samplerate = 0;
-        __uint8 asc_header[2] = {0};
-        int read_bitrate = 0;
-        const int found = (mp3 ? getMP3FrameInfo((const char*)&(buf[i]), &read_samplerate, &read_bitrate) :
-                getADTSFrameInfo((const char*)&(buf[i]), &read_samplerate, asc_header));
-
-        // need to find frames and that the input is the correct format!
-        //
-        // is a bit of a pain for AAC though as we've already done the
-        // rough bitrate match when the advert / intro / backup was read
-        // we'll just pass things through as though the bitrate is ok...
-        if ((found > 0) && (mp3 && bitrate ? (read_bitrate == bitrate) : 1) &&
-                (!mp3 || !samplerate || (samplerate == read_samplerate)))
-        {
-            if (!frameCount)
-            {
-                end = i;
-            }
-
-            i += (last_size = found);
-
-            // only count valid full-size frames
-            if (i <= len)
-            {
-                formMessage(&buf[end], last_size, uvoxDataType, sc2buffer);
-                end += last_size;
-                ++frameCount;
-            }
-            else
-            {
-                break;
-            }
-        }
-        else
-        {
-            ++i;
-        }
-    }
-    return frameCount;
-}
-
-
-// take raw file data and build sc1 and sc2 data buffers
-void streamData::specialFileData::updateUvoxData (const int uvoxDataType,
-        const int bitrate, const unsigned int samplerate) throw()
-{
-    const vector<__uint8> &buf = m_sc1Buffer;
-
-    m_sc2Buffer.clear();
-    if (buf.size() > 0) // can't take subscript of data[0] if siz==0
-    {
-        int frames = convertRawToUvox (m_sc2Buffer, buf, uvoxDataType, bitrate, samplerate);
-        if (frames)
-            m_samplerate = samplerate;
-        m_missing = (frames ? false : true);
-        m_lastUsed = ::time(NULL);
-    }
-}
-
-// replace data with collection of uvox packets with given data type
-void streamData::specialFileData::replaceData(const vector<__uint8> &data, const int uvoxDataType,
-											  const int bitrate, const unsigned int samplerate) throw()
-{
-    stackLock sml(m_lock);
-
-    m_sc1Buffer = data;
-
-    updateUvoxData (uvoxDataType, bitrate, samplerate);
-}
-
-
-void streamData::specialFileData::release (specialFileData *f)
-{
-    AD_DEBUG_LOG ("[STREAMDATA] content release " + f->m_description + ", count was " + tos (f->m_refcount));
-    if (f->m_refcount > 1)
-    {
-        --f->m_refcount;
-        f->m_lastUsed = ::time (NULL);
-        return;
-    }
-    delete f;
-}
-
-
-int streamData::specialFileData::verifyData (const utf8 &logString)
-{
-    // attempt to strip out any tags from the file
-    // to increase client connection reliability
-
-    size_t siz = m_sc1Buffer.size();
-    // check for ID3v2.x tag
-    if (siz > 3 &&
-            (m_sc1Buffer[0] == 'I') &&
-            (m_sc1Buffer[1] == 'D') &&
-            (m_sc1Buffer[2] == '3'))
-    {
-        int id3len = make28BitValue(&m_sc1Buffer[6]) + 10;
-        m_sc1Buffer.erase (m_sc1Buffer.begin(), m_sc1Buffer.begin()+id3len);
-        siz = m_sc1Buffer.size();
-    }
-
-    // check for ID3v1.x tag
-    if (siz > 128 &&
-            (m_sc1Buffer[siz-128] == 'T') &&
-            (m_sc1Buffer[siz-127] == 'A') &&
-            (m_sc1Buffer[siz-126] == 'G'))
-    {
-        m_sc1Buffer.resize(siz -= 128);
-    }
-
-    // check for Lyrics3 tag
-    if (siz > 20 &&
-            (m_sc1Buffer[siz-9] == 'L') &&
-            (m_sc1Buffer[siz-8] == 'Y') &&
-            (m_sc1Buffer[siz-7] == 'R') &&
-            (m_sc1Buffer[siz-6] == 'I') &&
-            (m_sc1Buffer[siz-5] == 'C') &&
-            (m_sc1Buffer[siz-4] == 'S') &&
-            (m_sc1Buffer[siz-3] == '2') &&
-            (m_sc1Buffer[siz-2] == '0') &&
-            (m_sc1Buffer[siz-1] == '0'))
-    {
-        size_t length = 9;
-        while (length < siz - 10)
-        {
-            if ((m_sc1Buffer[siz-length] == 'L') &&
-                    (m_sc1Buffer[siz-length+1] == 'Y') &&
-                    (m_sc1Buffer[siz-length+2] == 'R') &&
-                    (m_sc1Buffer[siz-length+3] == 'I') &&
-                    (m_sc1Buffer[siz-length+4] == 'C') &&
-                    (m_sc1Buffer[siz-length+5] == 'S') &&
-                    (m_sc1Buffer[siz-length+6] == 'B') &&
-                    (m_sc1Buffer[siz-length+7] == 'E') &&
-                    (m_sc1Buffer[siz-length+8] == 'G') &&
-                    (m_sc1Buffer[siz-length+9] == 'I') &&
-                    (m_sc1Buffer[siz-length+10] == 'N'))
-            {
-                m_sc1Buffer.resize(siz -= length);
-                break;
-			}
-			++length;
-		}
-    }
-
-    // check for Ape tag
-    if (siz > 8)
-    {
-        size_t pos = 0;
-        while (pos < siz - 8)
-        {
-            if (siz > 32 &&
-                    (m_sc1Buffer[pos] == 'A') &&
-                    (m_sc1Buffer[pos+1] == 'P') &&
-                    (m_sc1Buffer[pos+2] == 'E') &&
-                    (m_sc1Buffer[pos+3] == 'T') &&
-                    (m_sc1Buffer[pos+4] == 'A') &&
-                    (m_sc1Buffer[pos+5] == 'G') &&
-                    (m_sc1Buffer[pos+6] == 'E') &&
-                    (m_sc1Buffer[pos+7] == 'X'))
-            {
-                struct HeaderData
-                {
-                    __uint32 version;
-                    __uint32 size;
-                    __uint32 items;
-                    __uint32 flags;
-                };
-                HeaderData *header = (HeaderData*)&(m_sc1Buffer[pos+8]);
-                int size = header->size;
-                int flags = header->flags;
-
-                enum
-                {
-                    FLAG_HEADER_HAS_HEADER = (1 << 31),
-                    FLAG_HEADER_NO_FOOTER = (1 << 30),
-                    FLAG_HEADER_IS_HEADER = (1 << 29)
-                };
-
-                if (!!(flags & FLAG_HEADER_IS_HEADER) && !(flags & FLAG_HEADER_NO_FOOTER))
-                {
-                    size += 32;
-                }
-                if (!(flags & FLAG_HEADER_IS_HEADER) && !!(flags & FLAG_HEADER_HAS_HEADER))
-                {
-                    size += 32;
-                }
-                m_sc1Buffer.resize(siz -= size);
-                break;
-            }
-            ++pos;
-        }
-    }
-    int len = (int)m_sc1Buffer.size();
-    if (len > 4)
-    {
-        parserInfo *parser = NULL;
-        unsigned syncFrames = 0;
-
-        getFrameInfo (parser, syncFrames, (unsigned char*)&(m_sc1Buffer[0]), len, 0);
-        if (parser)
-        {
-            utf8 msg = logString;
-
-            if (parser->m_reduce)
-                m_sc1Buffer.resize (len - parser->m_reduce);
-            msg += " Loaded ";
-            msg += m_description;
-            msg += ", ";
-            msg += tos(m_sc1Buffer.size());
-            msg += " bytes, ";
-            msg += parser->m_description;
-            if (parser->m_duration < 1)
-            {
-                msg += " (frames ";
-                msg += tos(parser->m_frameCount);
-                msg += ")";
-            }
-            m_bitrate = parser->m_bitrate;
-            m_samplerate = parser->m_samplerate;
-            m_duration = parser->m_duration;
-            DEBUG_LOG (msg, LOGNAME);
-            updateUvoxData (parser->getUvoxType(), parser->m_bitrate, parser->m_samplerate);
-            delete parser;
-            return 0;
-        }
-        if (m_description.empty() == false)
-            WLOG (logString + " Trouble parsing " + m_description);
-
-    }
-    m_sc1Buffer.clear();
-    return -1;
-}
-
-
-int streamData::cleanFileData(uniFile::filenameType fn, vector<__uint8> &buffer, size_t siz,
-							  const int bitrate, const unsigned int samplerate,
-							  const int /*uvoxDataType*/, const utf8& logString,
-							  const utf8& /*description*/, unsigned int &read_samplerate)
-{
-	// attempt to strip out any tags from the file
-	// to increase client connection reliability
-
-	// check for ID3v2.x tag
-	if (siz > 3 &&
-	    (buffer[0] == 'I') &&
-	    (buffer[1] == 'D') &&
-	    (buffer[2] == '3'))
-	{
-        int id3len = make28BitValue(&buffer[6]) + 10;
-        buffer.erase (buffer.begin(), buffer.begin()+id3len);
-		siz = buffer.size();
-	}
-
-	// check for ID3v1.x tag
-	if (siz > 128 &&
-	    (buffer[siz-128] == 'T') &&
-	    (buffer[siz-127] == 'A') &&
-	    (buffer[siz-126] == 'G'))
-	{
-		buffer.resize(siz -= 128);
-	}
-
-	// check for Lyrics3 tag
-	if (siz > 20 &&
-	    (buffer[siz-9] == 'L') &&
-	    (buffer[siz-8] == 'Y') &&
-	    (buffer[siz-7] == 'R') &&
-	    (buffer[siz-6] == 'I') &&
-	    (buffer[siz-5] == 'C') &&
-	    (buffer[siz-4] == 'S') &&
-	    (buffer[siz-3] == '2') &&
-	    (buffer[siz-2] == '0') &&
-	    (buffer[siz-1] == '0'))
-	{
-		size_t length = 9;
-		while (length < siz - 10)
-		{
-		   if ((buffer[siz-length] == 'L') &&
-			   (buffer[siz-length+1] == 'Y') &&
-			   (buffer[siz-length+2] == 'R') &&
-			   (buffer[siz-length+3] == 'I') &&
-			   (buffer[siz-length+4] == 'C') &&
-			   (buffer[siz-length+5] == 'S') &&
-			   (buffer[siz-length+6] == 'B') &&
-			   (buffer[siz-length+7] == 'E') &&
-			   (buffer[siz-length+8] == 'G') &&
-			   (buffer[siz-length+9] == 'I') &&
-			   (buffer[siz-length+10] == 'N'))
-			{
-				buffer.resize(siz -= length);
-				break;
-			}
-			++length;
-		}
-	}
-
-	// check for Ape tag
-	if (siz > 8)
-	{
-		size_t pos = 0;
-		while (pos < siz - 8)
-		{
-			if (siz > 32 &&
-			    (buffer[pos] == 'A') &&
-			    (buffer[pos+1] == 'P') &&
-			    (buffer[pos+2] == 'E') &&
-			    (buffer[pos+3] == 'T') &&
-			    (buffer[pos+4] == 'A') &&
-			    (buffer[pos+5] == 'G') &&
-			    (buffer[pos+6] == 'E') &&
-			    (buffer[pos+7] == 'X'))
-			{
-				struct HeaderData
-				{
-					__uint32 version;
-					__uint32 size;
-					__uint32 items;
-					__uint32 flags;
-				};
-				HeaderData *header = (HeaderData*)&(buffer[pos+8]);
-				int size = header->size;
-				int flags = header->flags;
-
-				enum
-				{
-					FLAG_HEADER_HAS_HEADER = (1 << 31),
-					FLAG_HEADER_NO_FOOTER = (1 << 30),
-					FLAG_HEADER_IS_HEADER = (1 << 29)
-				};
-
-				if (!!(flags & FLAG_HEADER_IS_HEADER) && !(flags & FLAG_HEADER_NO_FOOTER))
-				{
-					size += 32;
-				}
-				if (!(flags & FLAG_HEADER_IS_HEADER) && !!(flags & FLAG_HEADER_HAS_HEADER))
-				{
-					size += 32;
-				}
-				buffer.resize(siz -= size);
-				break;
-			}
-			++pos;
-		}
-	}
-
-	int read_bitrate = 0;
-    do
-    {
-			int len = (int)buffer.size();//, start = 0, end = 0;
-			if (len > 4)
-			{
-                parserInfo *parser = NULL;
-                unsigned syncFrames = 0;
-                getFrameInfo (parser, syncFrames, (unsigned char*)&(buffer[0]), len, 0);
-                if (parser)
-                {
-                    read_bitrate = parser->m_bitrate;
-                    read_samplerate = parser->m_samplerate;
-                    int ok = true;
-                    utf8 msg = logString;
-
-                    if (((read_bitrate == bitrate) || !bitrate) &&
-                            ((read_samplerate == samplerate) || !samplerate))
-                        msg += " Loaded ";
-                    else
-                    {
-                        msg += " Mismatched ";
-                        ok = false;
-                    }
-                    msg += fn;
-                    msg += ", ";
-                    msg += tos(buffer.size());
-                    msg += " bytes, ";
-                    msg += parser->m_description;
-                    if (parser->m_duration < 1)
-                    {
-                        msg += " (frames ";
-                        msg += tos(parser->m_frameCount);
-                        msg += ")";
-                    }
-                    delete parser;
-                    if (ok)
-                    {
-                        DEBUG_LOG (msg, LOGNAME);
-                        break;
-                    }
-                    WLOG (msg, LOGNAME);
-                }
-                else if (fn.empty() == false)
-                    WLOG (logString + " Trouble parsing " + fn);
-			}
-            buffer.clear();
-
-    } while (0);
-
-	return read_bitrate;
-}
-
-int streamData::specialFileData::loadFromFile(const uniFile::filenameType &name, const int bitrate,
-											  const int /*uvoxDataType*/, const unsigned int samplerate,
-											  const utf8& logString) throw()
-{
-	stackLock sml(m_lock);
-
-	m_sc1Buffer.clear();
-	m_sc2Buffer.clear();
-	vector<__uint8> &buffer = m_sc1Buffer;
-	int read_bitrate = 0;
-
-	uniFile::filenameType fn = parseSpecialName(name, bitrate);
-	if (!fn.empty())
-	{
-        // KH, fopen etc can take some time if you are dealing with many files at once, in icecast
-        // I used the lower level open/seek/tell calls in the end. library allocates buffers.
-        //
-		FILE *f = uniFile::fopen(fn,"rb");
-		if (f)
-		{
-			if (!::fseek(f, 0, SEEK_END))
-			{
-				int maxSpecialFileSize = gOptions.maxSpecialFileSize();
-				size_t siz = ::ftell(f);
-				if ((siz > 0) && ((int)siz <= maxSpecialFileSize))
-				{
-					::fseek(f, 0, SEEK_SET);
-					buffer.resize (siz);
-					if (::fread(&(buffer[0]), 1, siz, f) != siz)
-					{
-						ELOG(logString + " Error reading " + m_description + " file `" + fn + "'");
-					}
-					else
-                    {
-                        unsigned int read_samplerate = 0;
-                        size_t original_size = buffer.size();
-
-                        verifyData ("");
-                        read_bitrate = m_bitrate;
-                        read_samplerate = m_samplerate;
-						if (buffer.size() > 0)
-						{
-							ILOG(logString + " Loaded " + m_description + " file `" + fn + "' (" + tos(original_size) + " bytes"  +
-												(original_size != buffer.size() ? " - processed down to " + tos(buffer.size()) + " bytes" : "") + ")");
-						}
-						else
-						{
-							WLOG(logString + "Skipped " + m_description + " file `" + fn +
-								 "' as it is incompatible with the current stream format. Expected " +
-								 tos(bitrate) + " kbps, got " + (read_bitrate > 0 ? tos(read_bitrate) : "unknown") +
-								 " kbps. Expected " + sampleRateStr(samplerate) + ", got " + sampleRateStr(read_samplerate) + ".");
-						}
-					}
-				}
-				else
-				{
-					ELOG(logString + m_description + " " + fn + " has bad size (" + tos(siz) + ").");
-				}
-			}
-			else
-			{
-				ELOG(logString + "Could not seek to end of " + m_description + " file `" + fn + "'");
-			}
- 			::fclose(f);
- 		}
-		else
-		{
-			ELOG(logString + "Could not open " + m_description + " file `" +
-				 fn + "' (" + errMessage().hideAsString() + ")");
-		}
-	}
-	return read_bitrate;
-}
-
-void streamData::_setupBuffers(const utf8& logString, const bool re_init) throw()
-{
-	// load intro and backup files
-	size_t stream_ID = ID();
-	utf8 introFile = gOptions.stream_introFile(stream_ID);
-	if (!gOptions.read_stream_introFile(stream_ID))
-	{
-		introFile = gOptions.introFile();
-	}
-
-	m_introFile.loadFromFile(introFile, m_streamInfo.m_streamBitrate,
-							 m_streamInfo.m_uvoxDataType,
-							 m_streamInfo.m_streamSampleRate, logString);
-
-
-	utf8 backupFile = gOptions.stream_backupFile(stream_ID);
-	if (!gOptions.read_stream_backupFile(stream_ID))
-	{
-		backupFile = gOptions.backupFile();
-	}
-
-	m_backupFile.loadFromFile(backupFile, m_streamInfo.m_streamBitrate,
-							  m_streamInfo.m_uvoxDataType,
-							  m_streamInfo.m_streamSampleRate, logString);
-
-#if 0
-	utf8 adTestFile = gOptions.stream_adTestFile(stream_ID);
-	if (!gOptions.read_stream_adTestFile(stream_ID))
-	{
-		adTestFile = gOptions.adTestFile();
-	}
-
-	m_adTestFile.loadFromFile(adTestFile, m_streamInfo.m_streamBitrate,
-							  m_streamInfo.m_uvoxDataType,
-							  m_streamInfo.m_streamSampleRate, logString);
-
-	utf8 adTestFile2 = gOptions.stream_adTestFile2(stream_ID);
-	if (!gOptions.read_stream_adTestFile2(stream_ID))
-	{
-		adTestFile2 = gOptions.adTestFile2();
-	}
-
-	m_adTestFile2.loadFromFile(adTestFile2, m_streamInfo.m_streamBitrate,
-							   m_streamInfo.m_uvoxDataType,
-							   m_streamInfo.m_streamSampleRate, logString);
-
-	utf8 adTestFile3 = gOptions.stream_adTestFile3(stream_ID);
-	if (!gOptions.read_stream_adTestFile3(stream_ID))
-	{
-		adTestFile3 = gOptions.adTestFile3();
-	}
-
-	m_adTestFile3.loadFromFile(adTestFile3, m_streamInfo.m_streamBitrate,
-							   m_streamInfo.m_uvoxDataType,
-							   m_streamInfo.m_streamSampleRate, logString);
-
-	utf8 adTestFile4 = gOptions.stream_adTestFile4(stream_ID);
-	if (!gOptions.read_stream_adTestFile4(stream_ID))
-	{
-		adTestFile4 = gOptions.adTestFile4();
-	}
-
-	m_adTestFile4.loadFromFile(adTestFile4, m_streamInfo.m_streamBitrate,
-							   m_streamInfo.m_uvoxDataType,
-							   m_streamInfo.m_streamSampleRate, logString);
-#endif
-	/////////////////////////////////////////////
-
-	// determine configuration of ring buffer
-	size_t requestedSize = gOptions.fixedBufferSize();
-
-	if ((gOptions.bufferType() == 1) && (m_streamInfo.m_streamBitrate > 0))
-	{
-		DEBUG_LOG(logString + "Calculating buffer size from time (" +
-							  tos(m_streamInfo.m_streamBitrate) + " kbps for " +
-							  tos(gOptions.adaptiveBufferSize()) + "s)", LOGNAME, stream_ID);
-		requestedSize = (size_t)((gOptions.adaptiveBufferSize() * m_streamInfo.m_streamBitrate * 1024) / 8);
-	}
-
-	size_t bufferHardLimit = gOptions.bufferHardLimit();
-	requestedSize = min(requestedSize, bufferHardLimit);
-
-	DEBUG_LOG(logString + "Requested fixed size of " + tos(requestedSize), LOGNAME, stream_ID);
-	// make sure it's a power of two
-	size_t powerOfTwo = 1;
-	while (true)
-	{
-		size_t n = powerOfTwo * 2;
-		if (n >= requestedSize)
-		{
-			requestedSize = n;
-			break;
-		}
-		else	
-		{
-			powerOfTwo = n;
-		}
-	}
-
-	if (re_init)
-	{
-		DEBUG_LOG(logString + "Re-initialising buffers", LOGNAME, stream_ID);
-		m_sc1_ring_buffer.m_writePtr = m_sc21_ring_buffer.m_writePtr = 0;
-	}
-
-	DEBUG_LOG(logString + "Using buffer size of " + tos(requestedSize), LOGNAME, stream_ID);
-	m_sc1_ring_buffer.m_data.resize(requestedSize);
-	m_sc21_ring_buffer.m_data.resize(requestedSize);
-	m_sc1_ring_buffer.m_writePtr = m_sc21_ring_buffer.m_writePtr = 0;
-	m_sc1_ring_buffer.m_ptrMask = m_sc21_ring_buffer.m_ptrMask = (requestedSize - 1);
-}
-
-uniString::utf8 streamData::getYPStreamTitle() throw()
-{
-	// in order to determine if we should update the title in YP, we should
-	// get the title based on where a client would be if he/she connected right now
-	const sc1MetadataAndExtensionInfo md = getSc1Metadata(0xFFFFFFFF);
-	if (!md.m_songTitle.empty())
-	{
-		const utf8::size_type pos1 = md.m_songTitle.find(utf8("StreamTitle='")),
-							  pos2 = (pos1 == utf8::npos ? utf8::npos : md.m_songTitle.find(utf8("';"),pos1+13));
-
-		utf8 metadata = stripWhitespace((pos1 == utf8::npos) || (pos2 == utf8::npos) ? (utf8)"" : md.m_songTitle.substr(pos1+13,pos2-pos1-13));
-		// we use this to provide a nicer title to the YP when the advert update occurs
-		int remove_size = 7;
-		utf8::size_type pos = metadata.find(utf8("Advert:"));
-		if (pos != 0)
-		{
-			pos = metadata.find(utf8("Advert!"));
-		}
-
-		if (!metadata.empty() && (pos == 0))
-		{
-			// got a first matching block
-			metadata = metadata.replace(0, remove_size, (utf8)"");
-
-			// look for an end block
-			pos = metadata.find(utf8("Advert!"));
-			if (pos == utf8::npos)
-			{
-				remove_size = 7;
-				pos = metadata.find(utf8("Advert:"));
-			}
-			else
-			{
-				remove_size = 12;
-			}
-
-			if (pos != utf8::npos)
-			{
-				metadata = metadata.replace(pos, remove_size, (utf8)"");
-			}
-
-			metadata = stripWhitespace(metadata);
-		}
-
-		return metadata;
-	}
-	return (utf8)"";
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////// YP2 Messaging ///////////////////////////////////////////////////////////////////////////////
-void streamData::_YP2_add() throw() // yp2
-{
-	// only allow formats that we support
-	if (isAllowedType(m_streamInfo.m_uvoxDataType) &&
-		(m_streamInfo.m_avgBitrate > 0) &&
-		(m_streamInfo.m_streamSampleRate > 0))
-	{
-		if ((!m_dead) && m_ID && m_streamInfo.m_streamPublic)
-		{
-#if 0
-			// in order to determine if we should update the title in YP, we should
-			// get the title based on where a client would be if he/she connected right now
-			const sc1MetadataAndExtensionInfo md = getSc1Metadata(0xFFFFFFFF);
-			const utf8 songTitle = getYPStreamTitle();
-
-			yp2::ypInfo info(m_yp2SessionKey, m_ID, m_streamInfo.m_authHash,
-							 m_streamInfo.m_vbr, m_streamInfo.m_streamPublic,
-							 !m_sc21AlbumArtData[0].empty(), !m_sc21AlbumArtData[1].empty());
-
-			info.bitrate = m_streamInfo.m_avgBitrate;
-			info.samplerate = m_streamInfo.m_streamSampleRate;
-			info.peakClientConnections = m_streamInfo.m_streamPeakUser;
-			info.maxClientConnections = ((m_streamInfo.m_streamMaxUser > 0) &&
-										 (m_streamInfo.m_streamMaxUser < gOptions.maxUser()) ?
-										 m_streamInfo.m_streamMaxUser : gOptions.maxUser());
-			info.mimeType = m_streamInfo.m_contentType;
-			info.relayURL = m_streamInfo.m_relayURL;
-			info.songMetadataForYP2 = (!md.m_songMetadataForYP2.empty() ? stripWhitespace(md.m_songMetadataForYP2) :
-									   (!songTitle.empty() ? "<title seq=\"1\">" + aolxml::escapeXML(songTitle) + "</title>" : ""));
-			info.sourceIdent = m_streamInfo.m_sourceIdent;
-			info.sourceUser = m_streamInfo.m_streamUser;
-
-			m_yp2SessionKey = yp2::add(info, m_creating);
-#endif
-			if (m_yp2SessionKey != yp2::INVALID_SESSION_KEY)
-			{
-				m_lastTouchTitle.clear();
-			}
-
-			if (!m_maxYPInterval)
-			{
-				m_maxYPInterval = gOptions.ypReportInterval();	
-			}
-		}
-	}
-}
-
-void streamData::YP2_add() throw() // yp2
-{
-	stackLock sml(m_stateLock);
-
-	_YP2_add();
-}
-
-// check status and update stream info
-void streamData::YP2_updateInfo(const yp2::stationInfo &info) throw()
-{
-    stackLock sml(m_stateLock);
-    int maxbitrate = info.m_allowMaxBitrate > 0 ? info.m_allowMaxBitrate : m_streamInfo.m_allowMaxBitrate_global;
-    int allformats = info.m_allowAllFormats < 0 ? m_streamInfo.m_allowAllFormats_global : info.m_allowAllFormats;
-
-    m_streamInfo.m_streamName = info.m_streamTitle;
-    m_streamInfo.m_radionomyID = info.m_radionomyID;
-#if 0
-    for (int i = 0; i < 5; i++)
-    {
-        m_streamInfo.m_streamGenre[i] = info.m_streamGenre[i];
-    }
-    m_streamInfo.m_streamURL = info.m_broadcasterURL;
-    m_streamInfo.m_backupServer = info.m_backupServer;
-    m_streamInfo.m_backupServersList = info.m_backupServersList;
-    m_streamInfo.m_publicIP = info.m_publicIP;
-#endif
-    if (m_streamInfo.m_ypResponseCode == 0)
-        metrics::metrics_stream_up (m_ID, m_streamInfo.m_radionomyID, info.m_serverID, gOptions.publicIP(), getStartTime());
-
-    m_streamInfo.m_advertMode = info.m_advertMode;
-    m_streamInfo.m_ypResponseCode = info.m_responseCode;
-
-    // use global default if per-stream settings not provided
-    m_streamInfo.m_allowSSL = info.m_allowSSL < 0 ? m_streamInfo.m_allowSSL_global : info.m_allowSSL;
-    m_streamInfo.m_allowAllFormats = allformats;
-    m_streamInfo.m_allowMaxBitrate = maxbitrate;
-    m_streamInfo.m_allowBackupURL = info.m_allowBackupURL < 0 ? m_streamInfo.m_allowBackupURL_global : info.m_allowBackupURL;
-    m_streamInfo.m_stationID = info.m_stationID;
-    m_streamInfo.m_serverID = info.m_serverID;
-    advertGroups.setType (info.m_advertType);
-
-    if (gOptions.adMetricsDebug())
-    {
-        string s = "using licence attribs, bitrate ";
-        if (m_streamInfo.m_allowMaxBitrate)
-            s += tos (m_streamInfo.m_allowMaxBitrate);
-        else
-            s += "unrestricted";
-        s += ", fmts ";
-        s += tos (m_streamInfo.m_allowAllFormats);
-        s += ", ssl ";
-        s += tos (m_streamInfo.m_allowSSL);
-        s += ", backup ";
-        s += tos (m_streamInfo.m_allowBackupURL);
-        s += ", ad ";
-        s += tos (m_streamInfo.m_advertMode);
-        if (m_streamInfo.m_advertMode == 1)
-        {
-            s += ", ad mode ";
-            s += info.m_advertType.hideAsString();
-            if (advertGroups.m_type == ADVERT_MAP_PAUSE)  // maybe magic as well
-            {
-                size_t min_buf = m_streamInfo.m_streamBitrate * 1000 * 300 / 8;    // 5 minutes
-                size_t powerOfTwo = 1;
-                while (true)
-                {
-                    size_t n = powerOfTwo * 2;
-                    if (n >= min_buf)
-                    {
-                        min_buf = n;
-                        break;
-                    }
-                    else
-                    {
-                        powerOfTwo = n;
-                    }
-                }
-
-                if (min_buf > m_sc1_ring_buffer.m_data.size())
-                {
-                    m_sc1_ring_buffer.m_data.resize (min_buf);
-                    m_sc21_ring_buffer.m_data.resize(min_buf);
-                    m_sc1_ring_buffer.m_ptrMask = m_sc21_ring_buffer.m_ptrMask = (min_buf - 1);
-                    s += ", resized buffer to ";
-                    s += tos (min_buf);
-                }
-            }
-        }
-        DLOG (s, LOGNAME, m_ID);
-    }
-}
-
-bool streamData::YP2_addSuccessful(int &addFailIgnore, int &errorCode) throw()
-{
-	stackLock sml(m_stateLock);
-
-	yp2::addState_t result = yp2::addStatus(m_yp2SessionKey, addFailIgnore, errorCode);
-	return (!addFailIgnore ? (result == yp2::ADD_SUCCEEDED) : true);
-}
-
-void streamData::_YP2_remove() throw()
-{
-	if ((!m_dead) && m_ID && m_streamInfo.m_streamPublic)
-	{
-#if 0
-		yp2::ypInfo info(m_yp2SessionKey, m_ID, m_streamInfo.m_authHash,
-						 m_streamInfo.m_vbr, m_streamInfo.m_streamPublic);
-
-		info.streamStartTime = m_startTime;
-		info.peakClientConnections = m_streamInfo.m_streamPeakUser;
-		info.maxClientConnections = ((m_streamInfo.m_streamMaxUser > 0) &&
-									 (m_streamInfo.m_streamMaxUser < gOptions.maxUser()) ?
-									 m_streamInfo.m_streamMaxUser : gOptions.maxUser());
-
-		yp2::remove(info);
-#endif
-        pushMetricsYP();
-        metrics::metrics_stream_down (m_ID, m_streamInfo.m_radionomyID,
-                m_streamInfo.m_serverID, gOptions.publicIP(), m_startTime);
-	}
-}
-
-void streamData::YP2_remove() throw()
-{
-	stackLock sml(m_stateLock);
-
-	_YP2_remove();
-}
-
-#if 0
-inline void streamData::YP2_update() throw()
-{
-        m_stateLock.lock();
-
-	time_t t = ::time(NULL), elapsed = (t - m_lastYPTime);
-	if (((m_streamInfo.m_streamPublic || !gOptions.cdn().empty()) && (!m_dead) && m_ID &&
-						// make sure we're looking at min and max intervals to ensure we send updates
-						// even when playing long mixes otherwise we can potentially drop off the YP.
-						//
-						// 2.4.8 we now have a fixed min-interval but if there's been no YP add yet
-						// then we have a 2sec minimum which is a bit more response whilst allowing
-						// for failed sources / relay connections to do things so we don't YP spam
-						(elapsed >= (m_yp2SessionKey ? 10 : 2) || elapsed >= m_maxYPInterval)))
-	{
-		// make sure we're added
-		if (m_yp2SessionKey == 0)
-		{
-			_YP2_add();
-		}
-
-		if (m_yp2SessionKey)
-		{
-			// in order to determine if we should update the title in YP, we should
-			// get the title based on where a client would be if he/she connected right now
-			m_stateLock.unlock();
-			const uniString::utf8 songTitle = getYPStreamTitle();
-
-			// its touch time
-			if ((songTitle != m_lastTouchTitle) || (elapsed >= m_maxYPInterval))
-			{
-				yp2::ypInfo info(m_yp2SessionKey, m_ID, m_streamInfo.m_authHash,
-								 m_streamInfo.m_vbr, m_streamInfo.m_streamPublic,
-								 !m_sc21AlbumArtData[0].empty(), !m_sc21AlbumArtData[1].empty());
-
-				stats::statsData_t data;
-				stats::getStats(m_ID, data, true);
-
-				info.numListeners = data.connectedListeners;							// li
-				info.avgUserListenTime = data.avgUserListenTime;						// alt
-				info.numberOfClientsConnectedMoreThanFiveMinutes = data.newSessions;	// cm
-				info.numberOfClientConnectsSinceLastUpdate = data.newConnects;			// ht
-				info.numUniqueListeners = data.uniqueListeners;
-
-				const ringBufferAccess_t startPos = getClientStartPosition();
-				const sc1MetadataAndExtensionInfo md = getSc1Metadata((!startPos ? 0xFFFFFFFF : startPos));
-
-				//info.peakClientConnections = m_streamInfo.m_streamPeakUser;
-				info.maxClientConnections = ((m_streamInfo.m_streamMaxUser > 0) &&
-											 (m_streamInfo.m_streamMaxUser < gOptions.maxUser()) ?
-											 m_streamInfo.m_streamMaxUser : gOptions.maxUser());
-				info.songMetadataForYP2 = (!md.m_songMetadataForYP2.empty() ? stripWhitespace(md.m_songMetadataForYP2) :
-										   "<title seq=\"1\">" + aolxml::escapeXML(songTitle) + "</title>");
-				info.sourceIdent = m_streamInfo.m_sourceIdent;
-				info.sourceUser = m_streamInfo.m_streamUser;
-				info.bitrate = m_streamInfo.m_avgBitrate;
-				info.samplerate = m_streamInfo.m_streamSampleRate;
-				info.mimeType = m_streamInfo.m_contentType;
-				info.relayURL = m_streamInfo.m_relayURL;
-
-				m_stateLock.lock();
-				yp2::updateResult ur = yp2::update(info);
-
-				m_maxYPInterval = ur.m_maxYPInterval;
-				if (ur.m_requestQueued)
-				{
-					m_lastYPTime = t;
-					m_lastTouchTitle = songTitle;
-				}
-				m_stateLock.unlock();
-			}
-			return;
-		}
-	}
-        m_stateLock.unlock();
-}
-#endif
-
-int streamData::YP_SrvID(const streamID_t id) throw()
-{
-	if (id > 0)
-	{
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-		if (i == g_streamMap.end())
-		{
-			return 0;
-		}
-		return yp2::getSrvID((*i).second->m_yp2SessionKey);
-	}
-	return 0;
-}
-
-int streamData::YP_StnID(const streamID_t id) throw()
-{
-	if (id > 0)
-	{
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(id);
-		if (i == g_streamMap.end())
-		{
-			return 0;
-		}
-		return yp2::getStnID((*i).second->m_yp2SessionKey);
-	}
-	return 0;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-streamData::streamData(const streamSetup& setup) throw()
-	: m_ID(setup.m_sid), m_nextYPPush(::time(NULL)+10),
-	  m_maxYPInterval(gOptions.ypReportInterval()),
-	  m_yp2SessionKey(111), m_creating(0),
-	  m_kill(0), m_dead(0), m_adTest(0), m_insertAdvert(false),
-	  m_lastStreamSampleRate(setup.m_sampleRate),
-	  m_lastStreamBitrate(0), m_syncFrameCount(0),
-	  m_introFile("intro"), m_backupFile("backup"),
-	  m_adTestFile("test advert"), m_adTestFile2("test advert"),
-	  m_adTestFile3("test advert"), m_adTestFile4("test advert"),
-      advertGroups(this), m_parser(NULL)
-{
-	sourceReconnect(setup);
-	_setupBuffers(srcAddrLogString(setup.m_srcAddr, setup.m_srcPort, setup.m_sid));
-}
-
-streamData::~streamData() throw()
-{
-	DEBUG_LOG("[STREAMDATA sid=" + tos(m_ID) + "] " + __FUNCTION__, LOGNAME, m_ID);
-
-	//YP2_remove();
-
-	m_sc1_ring_buffer.m_writePtr = m_sc21_ring_buffer.m_writePtr = 0;
-    delete m_parser;
-}
-
-// sc1 style. Return false if stream is already connected
-void streamData::sourceReconnect(const streamSetup& setup) throw()
-{
-	stackLock sml(m_stateLock);
-
-	const bool uvox = (setup.m_sourceType == SHOUTCAST2),
-			   native = (setup.m_sourceType != HTTP);
-
-	m_streamInfo.m_backup = setup.m_backup;
-	m_streamInfo.m_streamUser = setup.m_streamUser;
-	m_streamInfo.m_allowPublicRelay = setup.m_allowPublicRelay;
-	m_streamInfo.m_streamMaxBitrate = setup.m_maxStreamBitrate;
-	m_streamInfo.m_streamMinBitrate = setup.m_minStreamBitrate;
-	m_streamInfo.m_streamMaxUser = setup.m_maxStreamUser;
-	m_streamInfo.m_streamSampleRate = setup.m_sampleRate;
-	m_streamInfo.m_authHash = setup.m_authHash;
-	m_streamInfo.m_vbr = setup.m_vbr;
-
-	m_streamInfo.m_srcAddr = setup.m_srcAddr;
-	m_streamInfo.m_srcPort = setup.m_srcPort;
-
-	m_streamInfo.m_relayURL = setup.m_relayURL;
-	m_streamInfo.m_backupURL = setup.m_backupURL;
-
-	if (!uvox)
-	{
-		m_streamInfo.m_streamName = mapGet(setup.m_headers, (native ? "icy-name" : "ice-name"), (utf8)"");
-		m_streamInfo.m_streamGenre[0] = mapGet(setup.m_headers, (native ? "icy-genre" : "ice-genre"), utf8("Misc"));
-	}
-	else
-	{
-		m_streamInfo.m_streamName = setup.m_config.m_icyName;
-		m_streamInfo.m_streamGenre[0] = setup.m_config.m_icyGenre;
-	}
-
-	for (int i = 1; i < 5; i++)
-	{
-		m_streamInfo.m_streamGenre[i].clear();
-	}
-
-	if (!uvox)
-	{
-		m_streamInfo.m_streamBitrate = getStreamBitrate(setup.m_headers);
-		m_streamInfo.m_streamSampleRate = getStreamSamplerate(setup.m_headers);
-		m_streamInfo.m_streamURL = mapGet(setup.m_headers, (native ? "icy-url" : "ice-url"), (utf8)"http://www.shoutcast.com");
-		// sanity handling to map things to something which the YP2 will definitely like
-		m_streamInfo.m_contentType = fixMimeType(mapGet(setup.m_headers, "content-type", utf8("audio/mpeg")));
-		m_streamInfo.m_streamPublic = mapGet(setup.m_headers, (native ? "icy-pub" : "ice-pub"), false);
-	}
-	else
-	{
-		m_streamInfo.m_streamBitrate = (setup.m_config.m_avgBitrate / 1000);
-		m_streamInfo.m_streamURL = setup.m_config.m_icyURL;
-		m_streamInfo.m_contentType = setup.m_config.m_mimeType;
-		m_streamInfo.m_streamPublic = (setup.m_config.m_icyPub ? true : false);
-	}
-
-	// see if there's a per-stream option else revert to master
-	utf8 pub = toLower(gOptions.stream_publicServer(setup.m_sid));
-	if (pub.empty())
-	{
-		pub = toLower(gOptions.publicServer());
-	}
-	if (pub == "always")
-	{
-		m_streamInfo.m_streamPublic = true;
-	}
-	else if (pub == "never")
-	{
-		m_streamInfo.m_streamPublic = false;
-	}
-
-	m_streamInfo.m_sourceType = setup.m_sourceType;
-
-	if (!uvox)
-	{
-		m_streamInfo.m_avgBitrate = m_streamInfo.m_minBitrate =
-		m_streamInfo.m_maxBitrate = (m_streamInfo.m_streamBitrate * 1000);
-	}
-	else
-	{
-		m_streamInfo.m_avgBitrate = setup.m_config.m_avgBitrate;
-		m_streamInfo.m_minBitrate = m_streamInfo.m_maxBitrate = setup.m_config.m_maxBitrate;
-	}
-
-	if ((m_streamInfo.m_contentType == "audio/ogg" || m_streamInfo.m_contentType == "application/ogg"))
-	{
-		m_streamInfo.m_uvoxDataType = OGG_DATA;
-		m_streamInfo.m_vbr = true;
-	}
-	else if ((m_streamInfo.m_contentType == "audio/aac") || (m_streamInfo.m_contentType == "audio/aacp"))
-	{
-		m_streamInfo.m_uvoxDataType = AACP_DATA;
-	}
-	else
-	{
-		m_streamInfo.m_uvoxDataType = MP3_DATA;
-	}
-
-	// uvox codes for intro and backup files will be wrong if contentType is empty. This is only a problem
-	// if we are using vanilla uvox 2 which does not send a mime type (uvox 2.1 does, however)
-	if (m_streamInfo.m_contentType.empty())
-	{
-		WLOG("Content type of stream " + tos(m_ID) + " is empty. Intro and backup files may not work.", LOGNAME, m_ID);
-	}
-
-	g_streamUptime[m_ID] = ::time(NULL);
-    delete m_parser;
-    m_parser = NULL;
-}
-
-
-MP3_FrameInfo *streamData::detectMP3 (unsigned int &failureThresh, const unsigned char *buf, unsigned int buflen, unsigned chk)
-{
-    unsigned loop = chk ? chk : 10000, remain = buflen, frames = 0;
-    MP3_FrameInfo info, *parser = NULL;
-    const unsigned char *p = buf;
-    __uint64 samples = 0;
-
-    if (buflen < 3000) // get sufficient data to check, saves failing part way through
-        return NULL;
-    int len = getMP3FrameInfo (p, buflen, info);
-    // check a few frames to see about consistency
-    while (len > 0)
-    {
-        //DLOG ("loop is " + tos(loop));
-        len = info.verifyFrame (p, remain);
-        if (len <= 0 || len > remain)
-            break;
-        samples += info.m_samples;
-        frames++;
-        p += len;
-        remain -= len;
-        loop--;
-        // DLOG("Detecting frames, loop " + tos(loop) + ", remain " + tos(remain));
-    }
-    if (samples > 1000)
-    {
-        failureThresh += 100;
-        parser = new MP3_FrameInfo (buf, buflen);
-        parser->m_inUse = true;
-        parser->m_description += info.getVersionName();
-        parser->m_description += " layer ";
-        parser->m_description += info.getLayerName();
-        parser->m_description += (info.m_mono ? " mono" : " stereo");
-        if (chk == 0 && loop && samples && info.m_samplerate)
-        {
-            parser->m_frameCount = frames;
-            parser->m_duration = ((float)samples / info.m_samplerate);
-            parser->m_description += " duration ";
-            parser->m_description += tos (parser->m_duration);
-            parser->m_description += "s";
-        }
-        if (remain && chk == 0 && loop)
-        {
-            parser->m_description += ", reduced size by ";
-            parser->m_description += tos (remain);
-            parser->m_reduce = remain;
-        }
-    }
-    return parser;
-}
-
-static unsigned long getMSB4 (unsigned long v)
-{
-    unsigned long m = v;
-    int c = 0;
-
-    for (; m > 15; c++, m >>= 1)
-        ;
-    DEBUG_LOG ("bitrate estimate mark " + tos(m));
-    if (m == 0xF)  // binary 1111 is not a normal bit pattern, adjust to 1000
-        m = 0x10;
-    if (m == 0xB)  // binary 1011 is not a normal bit pattern, adjust to 1100
-        m = 0xC;
-    return c ? m << c : m;
-}
-
-AAC_FrameInfo *streamData::detectAAC (unsigned int &failureThresh, const unsigned char *buf, unsigned int buflen, unsigned chk)
-{
-    unsigned int loop = chk ? chk : 10000, remain = buflen;
-    int bytes = 0;
-    float fcount = 0;
-    AAC_FrameInfo info, *parser = NULL;
-    const unsigned char *p = buf;
-
-    if (buflen < 8000) // get sufficient data to check, saves failing part way through
-        return 0;
-    int len = getAACFrameInfo (p, buflen, info);
-
-    // check a few frames to see about consistency
-    while (len > 0)
-    {
-        len = info.verifyFrame (p, remain);
-        if (len == 0 || len > remain) // short
-            break;
-        if (len < 0)    // failed to match
-            break;
-        p += len;
-        remain -= len;
-        bytes += (len - 7); // drop the adts frame header
-        fcount += info.m_blocks;
-        loop--;
-        // DLOG("Detecting frames, loop " + tos(loop) + ", remain " + tos(remain));
-    }
-    if (bytes > 1000)
-    {
-        parser = new AAC_FrameInfo (buf, buflen);
-        failureThresh += 100;
-        parser->m_inUse = true;
-        info.m_description += stringUtil::tos (info.m_samplerate);
-        info.m_description += "hz";
-
-        // increase the average a small amount, just to help rounding, we do tuncate later
-        int r = (int)((bytes * 1.028 / fcount) * (parser->m_samplerate / 1000.0)) * 8;
-
-        parser->m_bitrate = getMSB4 ((r/1024));
-        parser->m_frameCount = fcount;
-
-        parser->m_description += info.getVersionName();
-        parser->m_description += ", ";
-        parser->m_description += info.getAOT();
-        parser->m_description += " (";
-        parser->m_description += stringUtil::tos (info.m_aot);
-        parser->m_description += "), ";
-        parser->m_description += stringUtil::tos (info.m_samplerate);
-        parser->m_description += "hz, estimated ";
-        parser->m_description += tos (parser->m_bitrate);
-        parser->m_description += " kbps";
-        if (remain && chk == 0 && loop)
-        {
-            parser->m_description += ", reduced size by ";
-            parser->m_description += tos (remain);
-            parser->m_reduce = remain;
-        }
-    }
-    return parser;
-}
-
-
-int streamData::getFrameInfo (parserInfo *&parser, unsigned &failureThresh, const unsigned char *buf, unsigned int len, unsigned chk)
-{
-    int ret = 0, loop = 100;
-    do
-    {
-        loop--;
-        if (parser && parser->m_inUse)
-        {
-            ret = parser->verifyFrame (buf, len);
-            if (ret >= 0)
-                break;
-            delete parser;
-            parser = NULL;
-        }
-        if (len < 3000)
-            return 0;
-        parser = detectMP3 (failureThresh, buf, len, chk);
-        if (parser)
-            continue;
-        parser = detectAAC (failureThresh, buf, len, chk);
-        if (parser)
-            continue;
-        return len < 12000 ? 0 : -1;
-    } while (loop);
-
-    // maybe ID3 check?
-    if (failureThresh > 0)
-        --failureThresh;
-    return ret;
-}
-
-
-const bool streamData::syncToStream(short unsigned int& remainderSize, __uint8 *remainder,
-									int amt, int& bitrate, const int type, const char *buf,
-									const utf8& logString)
-{
-	unsigned int samplerate = m_streamInfo.m_streamSampleRate;
-	bool mp3;
-	if (streamData::isAllowedType(type, mp3))
-	{
-		int end = 0;
-
-        //DLOG ("process block of " + tos (amt));
-		for (int i = 0; (i < (amt - 8)) && !iskilled();)
-		{
-			unsigned int read_samplerate = 0;
-			int read_bitrate = 0;
-            const unsigned char* f = (const unsigned char *)&(buf[i]);
-            int remain = amt - i;
-            int restart = m_parser == NULL ? 1 : 0;
-
-            int found = getFrameInfo (m_parser, m_syncFrameCount, f, remain);
-
-            if (found > remain || found == 0)
-            {
-                end = i;
-                // DLOG ("Need more data for " + tos(found) + " , remaining " + tos(remain));
-                break;
-            }
-            // DLOG ("frame size return " + tos (found));
-
-            if (m_parser)
-            {
-                if (restart)
-                {
-                    utf8 msg = logString;
-
-                    msg += "stream detected ";
-                    msg += m_parser->m_description;
-                    ILOG (msg, LOGNAME, ID());
-                }
-                read_samplerate = m_parser->m_samplerate;
-                read_bitrate = m_parser->m_bitrate;
-            }
-
-            // DLOG ("FME: frame size is " + tos (found));
-            if (found > 0)
-            {
-                if (m_streamInfo.m_streamSampleRate == 0 && read_samplerate)
-                {
-                    m_streamInfo.m_streamSampleRate = (samplerate = read_samplerate);
-                }
-                if (m_streamInfo.m_streamBitrate == 0)
-                {
-                    // update everything as we'll have no bitrate if we're calling this...
-                    if (read_bitrate == 0 && bitrate > 0)
-                        m_streamInfo.m_streamBitrate = bitrate;
-                    else
-                        m_streamInfo.m_streamBitrate = (bitrate = read_bitrate);
-                    m_streamInfo.m_avgBitrate = m_streamInfo.m_minBitrate =
-                        m_streamInfo.m_maxBitrate = (bitrate * 1000);
-
-                    DEBUG_LOG ("No bitrate info provided, assuming stream settings at " + tos(bitrate) + "k", LOGNAME, ID());
-
-                    // we need to kick things back into shape at this point...
-                    _setupBuffers(logString, true);
-
-                    _YP2_add();
-                }
-                if (read_bitrate && m_streamInfo.m_streamBitrate && m_streamInfo.m_vbr == false)
-                {
-                    if (m_lastStreamBitrate)
-                    {
-                        if (m_lastStreamBitrate != read_bitrate)
-                        {
-                            m_streamInfo.m_vbr = true;
-                            DEBUG_LOG ("Detected bitrate change (vBR) from " + tos (m_streamInfo.m_streamBitrate) + " to " + tos (read_bitrate), LOGNAME, ID());
-                        }
-                        else
-                        {
-                            if (read_bitrate != m_streamInfo.m_streamBitrate)
-                            {
-                                utf8 msg = "expected bitrate of ";
-                                msg += tos (m_streamInfo.m_streamBitrate);
-                                msg += "k, actually found ";
-                                msg += tos(read_bitrate);
-                                msg += "k, will assume that";
-                                ILOG (msg, LOGNAME, ID());
-                                m_streamInfo.m_streamBitrate = read_bitrate;
-                            }
-                        }
-                    }
-                    else
-                        m_lastStreamBitrate = read_bitrate;
-                }
-#if defined(_DEBUG) || defined(DEBUG)
-                writeSc1((const __uint8 *)&buf[end], found, ID());
-#else
-                writeSc1((const __uint8 *)&buf[end], found);
-#endif
-                end += found;
-                i += found;
-            }
-            else
-            {
-                m_syncFrameCount += 50;
-                if (m_syncFrameCount > 700)  // threshold before dropping stream
-                    return true;
-
-				// otherwise we just need to move on and keep
-				// looking for what is a valid starting frame
-                const void *p = memchr (f+1, 255, remain-1);
-                if (p)
-                {
-                    i = (int)((unsigned char*)p - (unsigned char*)buf);
-                    DEBUG_LOG ("FMK: found marker, searching from " + tos(i) + " in len " + tos(amt) + ", sync " + tos(m_syncFrameCount), LOGNAME, ID());
-                }
-                else
-                {
-                    end = i = amt;
-                    DEBUG_LOG ("FMK: skipping to end " + tos (i), LOGNAME, ID());
-                }
-            }
-        }
-
-        amt = (amt - end);
-        // DLOG ("EOB: remainder " + tos (remainderSize) + ", end " + tos(end) + ", amt " + tos(amt));
-        if ((amt > 0)) // && (samplerate > 0))
-        {
-            memcpy(&(remainder[remainderSize]), &buf[end], amt);
-            remainderSize += amt;
-        }
-    }
-
-    return false;
-}
-
-utf8 streamData::getHTML5Player(const size_t sid) throw()
-{
-    return "<tr><td colspan=\"2\" align=\"center\"><audio "
-        "id=\"audio_" + tos(sid) + "\" controls preload=\"none\" "
-        "style=\"width:16em;padding:0;\"><source src=\"" +
-		   getStreamPath(sid, true) + (getStreamContentType(sid) == "video/nsv" ?
-		   ";stream.nsv" : "") + "?type=http&amp;nocache=" + tos(++gFF_fix) +
-		   "\" type='audio/mpeg'></audio></td></tr>";
-}
-
-utf8 streamData::getStreamMessage(const size_t sid) throw()
-{
-	stackLock sml(g_streamMessageMapLock);
-
-	map<streamID_t,utf8>::const_iterator i = g_streamMessageMap.find(sid);
-	if (i != g_streamMessageMap.end())
-	{
-		return (*i).second;
-	}
- 	return "";
-}
-
-void streamData::updateStreamMessage(const size_t sid, const uniString::utf8& message) throw()
-{
-	stackLock sml(g_streamMessageMapLock);
-
-	if (message.empty() || (message == "<clear>"))
-	{
-		map<streamID_t,utf8>::iterator i = g_streamMessageMap.find(sid);
-		if (i != g_streamMessageMap.end())
-		{
-			(*i).second.clear();
-		}
-	}
-	else
-	{
-		g_streamMessageMap[sid] = message;
-	}
-}
-
-const bool streamData::isSourceCompatible(const streamSetup& setup) const throw()
-{
-	stackLock sml(m_stateLock);
-
-	if (setup.m_sourceType == SHOUTCAST2)
-	{
-		if (m_streamInfo.m_contentType != setup.m_config.m_mimeType)
-		{
-			return false;
-		}
-
-		if (m_streamInfo.m_avgBitrate != setup.m_config.m_avgBitrate)
-		{
-			return false;
-		}
-		if (m_streamInfo.m_maxBitrate != setup.m_config.m_maxBitrate)
-		{
-			return false;
-		}
-		if (m_streamInfo.m_minBitrate != setup.m_config.m_maxBitrate)
-		{
-			return false;
-		}
-		return true;
-	}
-	else
-	{
-		if (m_streamInfo.m_sourceType == SHOUTCAST2)
-		{
-			return false;
-		}
-		if (m_streamInfo.m_contentType != mapGet(setup.m_headers, "content-type", utf8("audio/mpeg")))
-		{
-			return false;
-		}
-		if (!m_streamInfo.m_streamBitrate || (m_streamInfo.m_streamBitrate != getStreamBitrate(setup.m_headers)))
-		{
-			return false;
-		}
-		return true;
-	}
-}
-
-// write data into a ring buffer. if packet_starts is provided, then add an entry to it (and also clean it up as necessary)
-static void writeToRingBuffer(const __uint8 *data, int amt, AOL_namespace::rwLock &bufferLock,
-							  streamData::ringBuffer_t &buffer,
-							  deque<streamData::ringBufferAccess_t> *packet_starts = 0) throw()
-{
-        stackRWLock sl (bufferLock, false);
-	if (packet_starts)
-	{
-
-		const streamData::ringBufferAccess_t ptr = buffer.m_writePtr,
-											 bottom = (ptr - buffer.m_data.size()); // warning this could wrap
-
-		// add new entry
-		packet_starts->push_back(buffer.m_writePtr);
-
-		// cleanup old ones
-		int remove_count = 0;
-		for (deque < streamData::ringBufferAccess_t>::const_iterator i = packet_starts->begin(); i != packet_starts->end(); ++i)
-		{
-			streamData::ringBufferAccess_t v = (*i);
-			// edge case, ptr has rolled over, therefore bottom > ptr
-			if (bottom > ptr)
-			{
-				if ((v < bottom) && (v > ptr))
-				{
-					++remove_count;
-				}
-				else
-				{
-					break;
-				}
-			}
-			else
-			{
-				// normal case
-				if ((v < bottom) || (v > ptr)) // note: (v > ptr) probably not necessary, but can't hurt
-				{
-					++remove_count;
-				}
-				else
-				{
-					break;
-				}
-			}
-		}
-		while ((remove_count--) > 0)
-		{
-			packet_starts->pop_front();
-		}
-	}
-
-	size_t remain = amt;
-
-	while (remain > 0)
-	{
-		// get masked ring offset
-		const streamData::ringBufferAccess_t o = (buffer.m_writePtr & buffer.m_ptrMask);
-		// don't write beyond end of buffer
-		const size_t amt_to_write = min (remain, (buffer.m_data.size() - o));
-
-		memcpy(&(buffer.m_data[o]), data, amt_to_write);
-		// advance pointers
-		data += amt_to_write;
-		remain -= amt_to_write;
-		buffer.m_writePtr += amt_to_write;
-	}
-}
-
-// data is shoutcast1 format WITH NO METADATA. Insert into the two ring buffers
-#if defined(_DEBUG) || defined(DEBUG)
-void streamData::writeSc1(const __uint8 *data, const int amt, const streamID_t)
-#else
-void streamData::writeSc1(const __uint8 *data, const int amt)
-#endif
-{
-    time_t now = ::time(NULL);
-	if (m_insertAdvert)
-	{
-        adTrigger *t = advertGroups.triggers.empty() ? NULL : advertGroups.triggers.front();
-        if (t && t->m_playedAt == (time_t)0)
-        {
-            writeToRingBuffer((const __uint8*)"SCAdvert", 8, m_sc1StreamLock, m_sc1_ring_buffer);
-            writeToRingBuffer((const __uint8*)"SCAdvert", 8, m_sc21StreamLock, m_sc21_ring_buffer);
-            t->m_startPosSC1 = m_sc1_ring_buffer.m_writePtr;
-            t->m_startPosSC2 = m_sc21_ring_buffer.m_writePtr;
-            t->m_returnPtrSC1 = m_sc1_ring_buffer.m_writePtr;
-            t->m_returnPtrSC2 = m_sc21_ring_buffer.m_writePtr;
-            t->m_type = advertGroups.m_type;
-
-            if (t->m_type == ADVERT_MAP_FIXED || t->m_type == ADVERT_MAP_FLEX) // overlay
-            {
-                t->m_returnPtrSC1 += advertGroups.overlaySize (t);
-                t->m_returnPtrSC2 += advertGroups.overlaySize (t, true);
-                DLOG ("overlay of ads, returning to " + tos(t->m_returnPtrSC1), LOGNAME, m_ID);
-            }
-            else
-            {
-                DLOG ("insert of ads, returning to " + tos(t->m_returnPtrSC1), LOGNAME, m_ID);
-            }
-            t->m_playedAt = time(NULL);
-            t->m_duration = m_duration;
-
-            metrics::adSummary summary;
-            summary.id = t->m_id;
-            summary.sid = ID();
-            summary.path = getStreamPath (ID());
-            summary.tstamp = now;
-            summary.count = stats::getUserCount (ID());
-            summary.sd = this;
-
-            metrics::metrics_advert_started (summary);
-        }
-        m_insertAdvert = false;
-    }
-
-    long uptime = now - streamData::getStreamUptime(ID());
-    if ((uptime & 7) == 7)  // check for some things every 8 seconds
-    {
-        advertGroups.purge (m_sc1_ring_buffer);
-
-        if (m_streamInfo.m_allowAllFormats == 0 && m_parser && m_parser->getUvoxType() != MP3_DATA)
-        {
-            WLOG ("Format is not MP3, where only MP3 is allowed", "Licence", ID());
-            throwEx<runtime_error>("");
-        }
-        if (m_streamInfo.m_allowMaxBitrate && m_streamInfo.m_avgBitrate)
-        {
-            int avg = m_streamInfo.m_avgBitrate/1000;
-            if (avg > (m_streamInfo.m_allowMaxBitrate + 5))
-            {
-                string msg = "Dropping as bitrate needs to be " + tos (m_streamInfo.m_allowMaxBitrate) + "k or less, currently " + tos (avg) +"k";
-                WLOG (msg, "Licence", ID());
-                throwEx<runtime_error>("");
-            }
-        }
-    }
-
-	// sc1
-    if (amt > 0)
-    {
-		int len = amt;
-		// put into the sc1 buffer
-		writeToRingBuffer(data, len, m_sc1StreamLock, m_sc1_ring_buffer, &m_sc1_packet_starts);
-#if 0
-		// TODO would be nice to have this as a more formal thing for debugging and / or backup
-		if (!g_streamSaving[id])
-		{
-			g_streamSaving[id] = uniFile::fopen("D:\\Dev\\git_radionomy\\SHOUTcast\\sc_serv3\\test_" + tos(id) + (m_streamInfo.m_uvoxDataType == MP3_DATA ? ".mp3" : ".aac"), "wb");
-		}
-		if (g_streamSaving[id])
-		{
-			fwrite(data, 1, amt, g_streamSaving[id]);
-		}
-		stackLock sml(m_sc1LimitTriggerLock);
-		for_each(m_sc1LimitTriggers.begin(), m_sc1LimitTriggers.end(), mem_fun(&pipeDrivenSignal<AOL_namespace::mutex>::set));
-#endif
-	}
-	// sc1
-
-	// sc21
-	m_sc21MetadataLock.lock();
-	uvoxMetadata_t md = m_sc21MetadataToPutInline;
-	m_sc21MetadataToPutInline.clear();
-	m_sc21MetadataLock.unlock();
-
-	// const bool trigger = ((amt > 0) || (!md.empty()));
-
-	if (!md.empty())
-	{
-		writeToRingBuffer((const __uint8*)&md[0], (int)md.size(), m_sc21StreamLock, m_sc21_ring_buffer);
-	}
-
-	int len = amt;
-	while (len > 0)
-	{
-		__uint8 uvoxBuffer[MAX_MESSAGE_SIZE] = {0};
-		int left_over = formMessage(data, len, m_streamInfo.m_uvoxDataType, uvoxBuffer);
-		writeToRingBuffer((const __uint8*)uvoxBuffer, len - left_over + UV2X_OVERHEAD,
-						  m_sc21StreamLock, m_sc21_ring_buffer, &m_sc21_packet_starts);
-		data += (len - left_over);
-		len = left_over;
-	}
-#if 0
-	if (trigger)
-	{
-		stackLock sml(m_sc21LimitTriggerLock);
-		for_each(m_sc21LimitTriggers.begin(), m_sc21LimitTriggers.end(),
-				 mem_fun(&pipeDrivenSignal<AOL_namespace::mutex>::set));
-	}
-	// sc21
-	YP2_update();
-#endif
-	checkForAdverts();
-    pushMetricsYP (false);
-}
-
-void streamData::writeSc21(const vector<__uint8> &data) throw()
-{
-	if (data.empty())
-	{
-		return;
-	}
-
-	m_sc21MetadataLock.lock();
-	uvoxMetadata_t md = m_sc21MetadataToPutInline;
-	m_sc21MetadataToPutInline.clear();
-	m_sc21MetadataLock.unlock();
-
-	if (!md.empty())
-	{
-		writeToRingBuffer((const __uint8*)&md[0], (int)md.size(),
-						  m_sc21StreamLock, m_sc21_ring_buffer);
-	}
-
-	writeToRingBuffer(&(data[0]), (int)data.size(), m_sc21StreamLock,
-					  m_sc21_ring_buffer, &m_sc21_packet_starts);
-#if 0
-	stackLock sml(m_sc21LimitTriggerLock);
-	for_each(m_sc21LimitTriggers.begin(), m_sc21LimitTriggers.end(),
-			 mem_fun(&pipeDrivenSignal<AOL_namespace::mutex>::set));
-#endif
-}
-
-static streamData::ringBufferAccess_t _getClientStartPosition (const streamData::ringBuffer_t &/*buffer*/,
-	deque<streamData::ringBufferAccess_t> &packet_starts,
-	AOL_namespace::rwLock &streamLock,
-	streamData::ringBufferAccess_t ptr = 0) throw()
-{
-	stackRWLock sl (streamLock);
-
-	const deque<streamData::ringBufferAccess_t>::size_type packet_count = packet_starts.size();
-	if (packet_count < 6)
-	{
-		return 0;
-	}
-
-	streamData::ringBufferAccess_t avail_range = (packet_starts.back() - packet_starts.front());
-
-	if (ptr == 0)
-	{
-        streamData::ringBufferAccess_t avg = avail_range / packet_count;
-        size_t pkts = avg ? (256000/avg) : 0;  // target about 250k burst
-        if (pkts)
-        {
-            if (pkts + 6 > packet_count)
-                pkts = packet_count - 6;
-            return packet_starts [packet_count - pkts];
-        }
-        return packet_starts.front();
-	}
-	deque<streamData::ringBufferAccess_t>::reverse_iterator r = packet_starts.rbegin(), t = r;
-	if (*r < ptr && (ptr - *r) > 60000)
-		ILOG ("[ADVERT] Expected transition point still to come, returning early", ADLOGNAME);
-	for (; r != packet_starts.rend(); ++r)
-	{
-		if (*r < ptr)
-			break;
-		t = r;
-	}
-	// DLOG("start pos, returning " + tos ((long)*t));
-	return *t;
-}
-
-const streamData::ringBufferAccess_t streamData::getClientStartPosition(const bool sc2) throw()
-{ 
-	return _getClientStartPosition((!sc2 ? m_sc1_ring_buffer : m_sc21_ring_buffer),
-								   (!sc2 ? m_sc1_packet_starts : m_sc21_packet_starts),
-								   (!sc2 ? m_sc1StreamLock : m_sc21StreamLock)); 
-}
-
-
-streamData::ringBufferAccess_t streamData::getClientStartPosition (ringBufferAccess_t ptr, bool sc2) throw()
-{
-       return _getClientStartPosition((!sc2 ? m_sc1_ring_buffer : m_sc21_ring_buffer),
-                                                                  (!sc2 ? m_sc1_packet_starts : m_sc21_packet_starts),
-                                                                  (!sc2 ? m_sc1StreamLock : m_sc21StreamLock), ptr);
-}
-
-
-const int streamData::getStreamData(streamData::ringBufferAccess_t& amt, const streamData::ringBufferAccess_t& readPtr,
-									vector<__uint8>& data, const size_t remSize, const bool sc2) throw() /* for readers only */
-{
-	stackRWLock sl ((!sc2 ? m_sc1StreamLock : m_sc21StreamLock));
-
-	const streamData::ringBuffer_t& buffer = (!sc2 ? m_sc1_ring_buffer : m_sc21_ring_buffer);
-
-	amt = (buffer.m_writePtr - readPtr);
-	if ((amt > 0) && (amt > buffer.m_data.size()))
-	{
-		// the pointers are too far apart - underrun
-		// make the listener handler process a reset
-		return -1;
-	}
-
-	const streamData::ringBufferAccess_t offset = (readPtr & buffer.m_ptrMask);
-	// clamp again so we don't read pass the end of the buffer
-	//
-	// if we've got more in remainder than what we're wanting
-	// to send then we'll prioritise the remainder data first
-	// before trying to acquire more new data to try to send.
-	amt = min(amt, min((buffer.m_data.size() - offset),
-			  (streamData::ringBufferAccess_t)max(0, (SEND_SIZE - (int)remSize))));
-
-	int len = (int)amt;
-	if (len > 0)
-	{
-		const vector<__uint8>::const_iterator pos = buffer.m_data.begin();
-		data.insert(data.end(), pos + offset, pos + (offset + len));
-	}
-
-	return len;
-}
-
-#if 0
-void streamData::abandonLimitTrigger(pipeDrivenSignal<AOL_namespace::mutex> *t, const bool sc2) throw()
-{
-	if (!sc2)
-	{
-		stackLock sml(m_sc1LimitTriggerLock);
-		m_sc1LimitTriggers.erase(t);
-	}
-	else
-	{
-		stackLock sml(m_sc21LimitTriggerLock);
-		m_sc21LimitTriggers.erase(t);
-	}
-}
-
-void streamData::_scheduleLimitTrigger(pipeDrivenSignal<AOL_namespace::mutex> *t, const ringBufferAccess_t readPtr,
-									   AOL_namespace::mutex &streamLock, const ringBuffer_t &ringBuffer,
-									   AOL_namespace::mutex &triggerSetLock,
-									   set<pipeDrivenSignal<AOL_namespace::mutex>*> &triggerSet) throw()
-{
-	bool add_to_set = true;
-
-	streamLock.lock();
-	if (ringBuffer.m_writePtr > readPtr)
-	{
-		t->set();
-		add_to_set = false;
-	}
-	streamLock.unlock();
-
-	stackLock sml(triggerSetLock);
-	if (add_to_set)
-	{
-		triggerSet.insert(t);
-	}
-	else
-	{
-		triggerSet.erase(t);
-	}
-}
-		
-void streamData::scheduleLimitTrigger(pipeDrivenSignal<AOL_namespace::mutex> *t,
-									  const ringBufferAccess_t readPtr, const bool sc2) throw()
-{
-	_scheduleLimitTrigger(t, readPtr, (!sc2 ? m_sc1StreamLock : m_sc21StreamLock),
-						  (!sc2 ? m_sc1_ring_buffer : m_sc21_ring_buffer),
-						  (!sc2 ? m_sc1LimitTriggerLock : m_sc21LimitTriggerLock),
-						  (!sc2 ? m_sc1LimitTriggers : m_sc21LimitTriggers));
-}
-#endif
-
-// find the metadata entry that is <= to ptr. 	
-template<typename T>
-typename T::value_type::second_type _getMetadata(const T &metadataTable, AOL_namespace::mutex &metadataLock,
-												 const streamData::ringBufferAccess_t ptr) throw()
-{
-	stackLock sml(metadataLock);
-
-	typename T::value_type::second_type result;
-
-	if (metadataTable.empty())
-	{
-		return result;
-	}
-	streamData::ringBufferAccess_t old_entry = metadataTable.front().first; // "oldest" entry
-	streamData::ringBufferAccess_t new_entry = metadataTable.back().first; // "newest" entry
-
-	if (old_entry <= new_entry)
-	{
-		// normal case. older entries have lower pointers than later ones
-		for (typename T::const_iterator i = metadataTable.begin(); i != metadataTable.end(); ++i)
-		{
-			if ((*i).first <= ptr)
-			{
-				result = (*i).second;
-			}
-			else
-			{
-				break;
-			}
-		}			
-	}
-	else
-	{
-		// wrap case
-		typename T::const_iterator i = metadataTable.begin();
-
-		if (ptr >= old_entry) // "upper half"
-		{
-			for (; i != metadataTable.end(); ++i)
-			{
-				if (((*i).first <= ptr) && ((*i).first >= old_entry))
-				{
-					result = (*i).second;
-				}
-				else
-				{
-					break;
-				}
-			}
-		}
-		else if (ptr > new_entry) // in "gap"
-		{
-			result = metadataTable.back().second;
-		}
-		else // lower half
-		{
-			for (; i != metadataTable.end(); ++i) // skip entries in "upper half"
-			{
-				if ((*i).first < old_entry)
-				{
-					break;
-				}
-			}
-			for (; i != metadataTable.end(); ++i)
-			{
-				if ((*i).first <= ptr)
-				{
-					result = (*i).second;
-				}
-				else
-				{
-					break;
-				}
-			}
-		}
-	}
-	return result;
-}
-
-streamData::sc1MetadataAndExtensionInfo streamData::getSc1Metadata(ringBufferAccess_t ptr) throw()
-{
-	return _getMetadata(m_sc1MetadataTable, m_sc1MetadataLock, ptr);
-}
-
-streamData::uvoxMetadata_t streamData::getSc21Metadata(ringBufferAccess_t ptr) throw()
-{
-	return _getMetadata(m_sc21MetadataTable, m_sc21MetadataLock, ptr);
-}
-
-streamData::uvoxMetadata_t streamData::getSc21StreamAlbumArt(ringBufferAccess_t ptr) throw()
-{
-	return _getMetadata(m_sc21StreamAlbumArtTable, m_sc21StreamAlbumArtLock, ptr);
-}
-
-streamData::uvoxMetadata_t streamData::getSc21PlayingAlbumArt(ringBufferAccess_t ptr) throw()
-{
-	return _getMetadata(m_sc21PlayingAlbumArtTable, m_sc21PlayingAlbumArtLock, ptr);
-}
-
-// remove stale metadata entries by looking for those that are beyond the bottom of the ring buffer.
-// HOWEVER, always keep the bottom one so that clients who enter will have some metadata to work with
-template<typename METATABLE>
-static void _cleanupMetadataEntries(METATABLE &metadataTable,
-									const streamData::ringBufferAccess_t ptr,
-									const streamData::ringBufferAccess_t siz)
-{
-	streamData::ringBufferAccess_t bottom = ptr - siz; // warning this could wrap
-	int remove_count = -1; // always leave bottom entry
-	for (typename METATABLE::const_iterator i = metadataTable.begin(); i != metadataTable.end(); ++i)
-	{
-		streamData::ringBufferAccess_t v = (*i).first;
-		// edge case, ptr has rolled over, therefore bottom > ptr
-		if (bottom > ptr)
-		{
-			if ((v < bottom) && (v > ptr))
-			{
-				++remove_count;
-			}
-			else
-			{
-				break;
-			}
-		}
-		else
-		{
-			// normal case
-			if ((v < bottom) || (v > ptr)) // note: (v > ptr) probably not necessary, but can't hurt
-			{
-				++remove_count;
-			}
-			else
-			{
-				break;
-			}
-		}
-	}
-
-	while ((remove_count--) > 0)
-	{
-		metadataTable.pop_front();
-	}
-}
-
-template<typename METADATA,typename MT>
-static void _addMetadata(AOL_namespace::rwLock &streamLock, const streamData::ringBuffer_t &ringBuffer,
-						 AOL_namespace::mutex &metadataLock, METADATA &metadataTable, const MT &md) throw()
-{
-	// get current position and size of ring buffer
-	streamLock.lock();
-	const streamData::ringBufferAccess_t ptr = ringBuffer.m_writePtr,
-										 siz = ringBuffer.m_data.size();
-	streamLock.unlock();
-
-	// put entry in table
-	metadataLock.lock();
-	metadataTable.push_back(make_pair(ptr, md));
-
-	// remove any stale entries
-	_cleanupMetadataEntries(metadataTable, ptr, siz);
-	metadataLock.unlock();
-}
-
-bool streamData::validateTitle(uniString::utf8 &m_updinfoSong) throw()
-{
-	bool allowed = true;
-
-	m_updinfoSong = stripWhitespace(m_updinfoSong);
-	if (!m_updinfoSong.empty())
-	{
-		// work on lowercase comparison as well as doing a check to see if
-		// after removing white space + punctuation we have a valid title.
-		uniString::utf8 m_checkUpdinfoSong = toLower(m_updinfoSong);
-
-		// exclude weird title updates from being accepted
-		// as no point in giving junk to the user later on
-		if (m_checkUpdinfoSong.find((utf8)"!doctype") != utf8::npos ||
-			m_checkUpdinfoSong.find((utf8)"<script") != utf8::npos ||
-			m_checkUpdinfoSong.find((utf8)"<html") != utf8::npos ||
-			m_checkUpdinfoSong.find((utf8)"<body") != utf8::npos ||
-			m_checkUpdinfoSong.find((utf8)"<div") != utf8::npos ||
-			m_checkUpdinfoSong.find((utf8)"%] ") != utf8::npos ||
-			m_checkUpdinfoSong.find((utf8)"invalid resource") != utf8::npos ||
-			(m_checkUpdinfoSong.find((utf8)"nextsong") != utf8::npos &&
-			 m_checkUpdinfoSong.find((utf8)"sctrans2next") != utf8::npos) ||
-
-			m_checkUpdinfoSong.find((utf8)"radio online") != utf8::npos ||
-
-			m_checkUpdinfoSong.find((utf8)"get /") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"put /") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"post /") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"head /") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"source /") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"track ") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"track0") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"track1") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"stream ") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"no artist ") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"new artist ") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"line-in ") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"inter_") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"jj mckay - ") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"artist - ") == 0 ||
-
-			m_checkUpdinfoSong.find((utf8)"$") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"�") == 0 ||
-			//m_checkUpdinfoSong.find((utf8)"@") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"%") == 0 ||
-			//m_checkUpdinfoSong.find((utf8)"#") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"*") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"+") == 0 ||
-			//m_checkUpdinfoSong.find((utf8)"&") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"[") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"{") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"}") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"(") == 0 ||
-			m_checkUpdinfoSong.find((utf8)")") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"?") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"_") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"~") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"^") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"`") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"�") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"'") == 0 ||
-			m_checkUpdinfoSong.find((utf8)".") == 0 ||
-			m_checkUpdinfoSong.find((utf8)",") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"/") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"!") == 0 ||
-			m_checkUpdinfoSong.find((utf8)":") == 0 ||
-			m_checkUpdinfoSong.find((utf8)";") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"\"") == 0 ||
-			m_checkUpdinfoSong.find((utf8)"- ") == 0 ||
-			m_checkUpdinfoSong.find((utf8)". ") == 0 ||
-
-			m_checkUpdinfoSong == utf8("-") ||
-			m_checkUpdinfoSong == utf8("http://") ||
-			m_checkUpdinfoSong == utf8("https://") ||
-			m_checkUpdinfoSong == utf8("auto dj") ||
-			m_checkUpdinfoSong == utf8("ao vivo") ||
-			m_checkUpdinfoSong == utf8("unknown") ||
-			m_checkUpdinfoSong == utf8("test") ||
-			m_checkUpdinfoSong == utf8("dsp") ||
-			m_checkUpdinfoSong == utf8("demo") ||
-			m_checkUpdinfoSong == utf8("line input") ||
-			m_checkUpdinfoSong == utf8("dj mike llama - llama whippin` intro") ||
-			m_checkUpdinfoSong == utf8("preview"))
-		{
-			allowed = false;
-		}
-	}
-	else
-	{
-		// this allows empty titles (which are sometimes needed)
-		allowed = m_updinfoSong.empty();
-	}
-
-	return allowed;
-}
-
-int streamData::addUvoxMetadataAtCurrentPosition(__uint16 voxMsgType, const vector<__uint8> &data) throw()
-{
-	// convert uvox metadata to sc21, sc2 and sc1
-	utf8 sc21_metadata_s;
-	vector<__uint8> sc21_albumart_data;
-	bool albumart = false;
-
-	sc1MetadataAndExtensionInfo sc1_metadata_and_extension_info;
-
-	if (voxMsgType == MSG_METADATA_XML_NEW) // new shoutcast 2
-	{
-		sc21_metadata_s.insert(sc21_metadata_s.end(), data.begin(), data.end());
-		utf8 meta(sc21_metadata_s.begin(), sc21_metadata_s.end());
-
-		// attempt to get the encoder from the metadata i.e. used to identify the source
-		try
-		{
-			m_streamInfo.m_comingSoon.clear();
-			m_streamInfo.m_nextSongs.clear();
-			m_streamInfo.m_sourceIdent = metadata::get_XX_from_3902("TENC", meta, m_streamInfo.m_sourceIdent);
-			m_streamInfo.m_nextSongs = metadata::get_nextsongs_from_3902(meta, m_streamInfo.m_nextSongs);
-
-			// these allow for updating of information from a source when a DJ
-			// is connected e.g. to sc_trans but is not setup to be listed or
-			// is just sending through a DJ name update for admin tracking, etc
-			m_streamInfo.m_streamUser = metadata::get_XX_from_3902("DJ", meta, m_streamInfo.m_streamUser);
-
-			int addFailIgnore = 0, errorCode = 0;
-			if (!m_streamInfo.m_streamPublic || YP2_addSuccessful(addFailIgnore, errorCode))
-			{
-				if (!m_streamInfo.m_streamPublic || addFailIgnore)
-				{
-					// only update the stream name from metadata if public or pending a YP update
-					m_streamInfo.m_streamName = metadata::get_XX_from_3902("TRSN", meta, m_streamInfo.m_streamName);
-				}
-			}
-		}
-		catch (const exception &ex)
-		{
-			ELOG(ex.what());
-			// abort nicely if there was an error
-			return 0;
-		}
-
-		// attempt to get the next song from the extended information from the metadata
-		utf8 m_checkComingSoon = metadata::get_XX_from_3902("extension/soon", meta, m_streamInfo.m_comingSoon);
-		if (!m_checkComingSoon.empty())
-		{
-			if (validateTitle(m_checkComingSoon))
-			{
-				m_streamInfo.m_comingSoon = m_checkComingSoon;
-			}
-			else
-			{
-				if (!(m_checkComingSoon.find((utf8)"nextsong") != utf8::npos && m_checkComingSoon.find((utf8)"sctrans2next") != utf8::npos))
-				{
-					WLOG("[ADMINCGI sid=" + tos(ID()) + "] Coming soon title rejected - value not allowed: " + m_checkComingSoon, LOGNAME, ID());
-				}
-				m_streamInfo.m_comingSoon.clear();
-			}
-		}
-		else
-		{
-			if (!m_streamInfo.m_comingSoon.empty())
-			{
-				m_streamInfo.m_comingSoon.clear();
-				WLOG("[ADMINCGI sid=" + tos(ID()) + "] Coming soon title cleared", LOGNAME, ID());
-			}
-		}
-
-		// clip out any extension data
-		utf8::size_type pos1 = sc21_metadata_s.find(utf8("<extension>")), // 11 chars
-						pos2 = sc21_metadata_s.find(utf8("</extension>")); // 12 chars
-		if ((pos1 != utf8::npos) && (pos2 != utf8::npos))
-		{
-			// got it, clip it out
-			sc1_metadata_and_extension_info.m_songMetadataForYP2 = 
-																   #ifdef XML_DEBUG
-																   "\t" +
-																   #endif
-																   stripWhitespace(sc21_metadata_s.substr(pos1 + 11, pos2 + 12 - pos1 - 11 - 12));
-		}
-
-		try
-		{
-			utf8 m_checkSongTitle = metadata::convert_3902_to_shoutcast1(sc21_metadata_s, ID());
-			if (sc1_metadata_and_extension_info.m_songTitle != m_checkSongTitle)
-			{
-				sc1_metadata_and_extension_info.m_songTitle = m_checkSongTitle;
-			}
-		}
-		catch (const exception &ex)
-		{
-			ELOG(string("3902 => Shoutcast 1 metadata conversion error. ") + ex.what() + " 3902=" + eol() + sc21_metadata_s, LOGNAME, ID());
-		}
-
-		// if we get a title update, if we've not added then do so as we
-		// changed adding to the YP to wait a while in 2.1+ so that titles
-		// can be obtained to ensure the listing is showing all information
-		//
-		// 2.4.8 disable this as it's causing quick add / removes to the YP
-		// which is ok if the stream is ok, but if there's issues, it's not
-		// and that's then also causing lots of METRICS_RESET_URL messages.
-		/*if (m_yp2SessionKey == 0)
-		{
-			_YP2_add();
-		}*/
-	}
-	// handling albumart as required for station and stream artwork
-	else
-	{
-		__uint16 aaMsgType = (voxMsgType & 0xF000);
-		if (aaMsgType & MSG_METADATA_ALBUMART)
-		{
-			sc21_albumart_data.insert(sc21_albumart_data.end(), data.begin(), data.end());
-			albumart = true;
-		}
-	}
-
-	int ret = 0;
-	// filter things so we're only doing what is needed at the time
-	if (albumart == false)
-	{
-		uvoxMetadata_t sc21_metadata;
-
-		// ultravox 2.1 style xml
-		try
-		{
-			createMetadataPackets(&sc21_metadata_s[0], (int)sc21_metadata_s.size(), MSG_METADATA_XML_NEW, sc21_metadata);
-		}
-		catch (const exception &ex)
-		{
-			ELOG(ex.what(), LOGNAME, ID());
-		}
-
-		if (!sc1_metadata_and_extension_info.m_songTitle.empty())
-		{
-			_addMetadata(m_sc1StreamLock, m_sc1_ring_buffer, m_sc1MetadataLock, m_sc1MetadataTable, sc1_metadata_and_extension_info);
-		}
-		if (!sc21_metadata.empty())
-		{
-			_addMetadata(m_sc21StreamLock, m_sc21_ring_buffer, m_sc21MetadataLock, m_sc21MetadataTable, sc21_metadata);
-
-			m_sc21MetadataLock.lock();
-			m_sc21MetadataToPutInline = sc21_metadata;
-			m_sc21MetadataLock.unlock();
-		}
-
-		// maintain history
-		g_streamSongHistoryMapLock.lock();
-
-		// attempting to use the pre-filled title information based on forum request so
-		// that 'artist - album - title' from sc_trans appears in the history (not client)
-		utf8 metadata(sc21_metadata_s.begin(), sc21_metadata_s.end());
-		const vector<uniString::utf8> m_nextSong = metadata::get_nextsongs_from_3902(metadata, m_streamInfo.m_nextSongs, true);
-		const vector<uniString::utf8>::const_iterator nextSong = m_nextSong.begin();
-
-		utf8 m_checkSongHistory = (((nextSong != m_nextSong.end()) && !(*nextSong).empty()) ?
-								  (*nextSong) : metadata::get_song_title_from_3902(metadata));
-		if (validateTitle(m_checkSongHistory))
-		{
-			map<streamID_t, streamHistory_t>::iterator i = g_streamSongHistoryMap.find(ID());
-			if (i != g_streamSongHistoryMap.end())
-			{
-				if ((*i).second.empty() || ((*i).second.front().m_title != m_checkSongHistory))
-				{
-					(*i).second.push_front(songHistoryInfo(m_checkSongHistory, metadata));
-				}
-			}
-			else
-			{
-				g_streamSongHistoryMap[ID()].push_front(songHistoryInfo(m_checkSongHistory, metadata));
-			}
-		}
-
-		// do conversions as needed to cope with funky v1 titles from relays for example
-		map<streamID_t, streamHistory_t>::iterator i = g_streamSongHistoryMap.find(ID());
-		if (i != g_streamSongHistoryMap.end())
-		{
-			if (!(*i).second.empty())
-			{
-				utf8 m_checkCurrentSong = metadata::toFixedString((*i).second.front().m_title);
-				if (validateTitle(m_checkCurrentSong))
-				{
-					if (m_streamInfo.m_currentSong != m_checkCurrentSong)
-					{
-						m_streamInfo.m_currentSong = m_checkCurrentSong;
-					}
-				}
-			}
-
-			while ((*i).second.size() > gOptions.getSongHistorySize(ID()))
-			{
-				(*i).second.pop_back();
-			}
-		}
-		g_streamSongHistoryMapLock.unlock();
-
-		resetAdvertTriggers(m_streamInfo.m_currentSong);
-	}
-	else
-	{
-		uvoxMetadata_t sc21_albumart;
-
-		// ultravox 2.1 style albumart
-		try
-		{
-			if (!sc21_albumart_data.empty())
-			{
-				createMetadataPackets(&sc21_albumart_data[0], (int)sc21_albumart_data.size(), voxMsgType, sc21_albumart);
-			}
-			else
-			{
-				// indicates we need to clear the cached data
-			}
-		}
-		catch (const exception &ex)
-		{
-			ELOG(ex.what(), LOGNAME, ID());
-		}
-
-		// store a copy of the raw image file and mime type
-		// so it's easier to display on the admin pages, etc
-		__uint16 ArtType = voxMsgType & 0x0F00;
-		if (ArtType & MSG_METADATA_PLAYING_ART)
-		{
-			m_sc21AlbumArtData[1] = sc21_albumart_data;
-			m_sc21AlbumArtMime[1] = (voxMsgType & 0x00FF);
-		}
-		else
-		{
-			m_sc21AlbumArtData[0] = sc21_albumart_data;
-			m_sc21AlbumArtMime[0] = (voxMsgType & 0x00FF);
-		}
-
-		if (!sc21_albumart.empty())
-		{
-			// uvox metadata must also be injected into the stream itself
-			if (ArtType & MSG_METADATA_PLAYING_ART)
-			{
-				m_sc21PlayingAlbumArtLock.lock();
-				m_sc21PlayingAlbumArtToPutInline = sc21_albumart;
-				m_sc21PlayingAlbumArtLock.unlock();
-
-				_addMetadata(m_sc21StreamLock,
-							 m_sc21_ring_buffer,
-							 m_sc21PlayingAlbumArtLock,
-							 m_sc21PlayingAlbumArtTable,
-							 sc21_albumart);
-
-				ret = addSc1MetadataAtCurrentPosition("", m_streamInfo.m_currentSong,
-													  "DNAS/playingart?sid=" + tos(ID()),
-													  m_streamInfo.m_comingSoon);
-
-				// due to how things work, it's easier to do it all this way and
-				// then directly insert as if it's pass-through but keep a copy
-				writeToRingBuffer((const __uint8*)&sc21_albumart[0],
-								  (int)sc21_albumart.size(),
-								  m_sc21StreamLock, m_sc21_ring_buffer);
-			}
-			else
-			{
-				m_sc21StreamAlbumArtLock.lock();
-				m_sc21StreamAlbumArtToPutInline = sc21_albumart;
-				m_sc21StreamAlbumArtLock.unlock();
-
-				_addMetadata(m_sc21StreamLock,
-							 m_sc21_ring_buffer,
-							 m_sc21StreamAlbumArtLock,
-							 m_sc21StreamAlbumArtTable,
-							 sc21_albumart);
-
-				// if we've got playing artwork then we should skip updating this as it's preferred for the client
-				// to provide playing artwork first and then the stream branding so it shows playing on joining
-				if (m_sc21AlbumArtData[1].empty())
-				{
-					ret = addSc1MetadataAtCurrentPosition("", m_streamInfo.m_currentSong,
-														  "DNAS/streamart?sid=" + tos(ID()),
-														  m_streamInfo.m_comingSoon);
-				}
-			}
-		}
-		else
-		{
-			// TODO make sure this is specified if a custom streamart is provided and nothing from the stream
-			ret = addSc1MetadataAtCurrentPosition("", m_streamInfo.m_currentSong,
-												  (!m_sc21AlbumArtData[0].empty() ? "DNAS/streamart?sid=" + tos(ID()) : ""),
-												  m_streamInfo.m_comingSoon);
-		}
-	}
-	return ret;
-}
-
-void streamData::updateSongHistorySize() throw()
-{
-	// maintain history
-	stackLock sml(g_streamSongHistoryMapLock);
-
-	map<streamID_t, streamHistory_t>::iterator i = g_streamSongHistoryMap.find(ID());
-	if (i != g_streamSongHistoryMap.end())
-	{
-		while ((*i).second.size() > gOptions.getSongHistorySize(ID()))
-		{
-			(*i).second.pop_back();
-		}
-	}
-}
-
-void streamData::updateStreamUser(const uniString::utf8& streamUser)
-{
-	m_streamInfo.m_streamUser = streamUser;
-}
-
-void streamData::resetStreamAuthhash()
-{
-	m_streamInfo.m_authHash.clear();
-	_YP2_add();
-}
-
-void streamData::resetAdvertTriggers(const uniString::utf8& m_updinfoSong)
-{
-    if (m_updinfoSong.empty())
-        return;
-
-    unsigned d = 120;     // default
-    const char *p = (const char *)&m_updinfoSong[0];
-    char s[2] = "";
-    int matched = sscanf (p, "Advert%1[!:-]", s);
-
-    if (matched == 1)
-    {
-        if (s[0] == '-')
-        {
-            char pattern[6];
-            matched = ::sscanf (p+7, "%4[0-9]%1[!:]", pattern, s);
-            if (matched == 2)
-            {
-                d = atoi (pattern);
-                if (d < 1 || d > 999)
-                    d = 120;
-            }
-            else
-                p = NULL;
-        }
-        if (p) p = strchr (p+6, s[0]);
-        if (p)
-        {
-            p++;
-            //::memmove (tag, p, strlen (p)+1); ??
-            AD_DEBUG_LOG("[ADVERT sid=" + tos(ID()) + "] " + "Advert trigger detected.", LOGNAME, ID());
-            m_insertAdvert = true;
-        }
-    }
-    m_duration = d;
-    pushMetricsYP();
-}
-
-int streamData::addSc1MetadataAtCurrentPosition(const utf8 &logString, const utf8 &sc1_metadata_raw,
-												const utf8 &sc1_url_raw, const utf8 &sc1_next_raw) throw()
-{
-	const utf8 m_oldCurrentSong = m_streamInfo.m_currentSong;
-	const utf8 m_oldCurrentURL = m_streamInfo.m_currentURL;
-	const utf8 m_oldComingSoon = m_streamInfo.m_comingSoon;
-
-	// maintain history
-	m_stateLock.lock();
-
-	m_streamInfo.m_currentSong = sc1_metadata_raw;
-	m_streamInfo.m_comingSoon = sc1_next_raw;
-
-	if (!sc1_url_raw.empty())
-	{
-		m_streamInfo.m_currentURL = sc1_url_raw;
-	}
-	else
-	{
-		// this allows us to force artwork through for all of the clients when
-		// it's not provided by the connected source on the first title update
-		if (m_sc21AlbumArtData[0].empty() && (!gOptions.m_artworkBody[m_ID].empty() || !gOptions.m_artworkBody[0].empty()))
-		{
-			vector<__uint8> sc21_albumart_data;
-			if (!gOptions.m_artworkBody[m_ID].empty())
-			{
-				sc21_albumart_data.insert(sc21_albumart_data.end(), gOptions.m_artworkBody[m_ID].begin(), gOptions.m_artworkBody[m_ID].end());
-			}
-			else
-			{
-				sc21_albumart_data.insert(sc21_albumart_data.end(), gOptions.m_artworkBody[0].begin(), gOptions.m_artworkBody[0].end());
-			}
-
-			int voxMsgType = 0x4000;
-			uvoxMetadata_t sc21_albumart;
-			if (!sc21_albumart_data.empty())
-			{
-				// try to find the correct mime-type to give the clients a hint
-				utf8::size_type pos = gOptions.artworkFile().rfind((utf8)".");
-				if (pos != utf8::npos)
-				{
-					utf8 ext = gOptions.artworkFile().substr(pos + 1, gOptions.artworkFile().size());
-					if ((ext == "jpeg") || (ext == "jpg"))
-					{
-						voxMsgType = 0x4000;
-					}
-					else if (ext == "png")
-					{
-						voxMsgType = 0x4001;
-					}
-					else if (ext == "bmp")
-					{
-						voxMsgType = 0x4002;
-					}
-					else if (ext == "gif")
-					{
-						voxMsgType = 0x4003;
-					}
-				}
-
-				createMetadataPackets(&sc21_albumart_data[0], (int)sc21_albumart_data.size(), voxMsgType, sc21_albumart);
-			}
-
-			m_sc21AlbumArtData[0] = sc21_albumart_data;
-			m_sc21AlbumArtMime[0] = (voxMsgType & 0x00FF);
-
-			m_sc21StreamAlbumArtLock.lock();
-			m_sc21StreamAlbumArtToPutInline = sc21_albumart;
-			m_sc21StreamAlbumArtLock.unlock();
-
-			_addMetadata(m_sc21StreamLock,
-						 m_sc21_ring_buffer,
-						 m_sc21StreamAlbumArtLock,
-						 m_sc21StreamAlbumArtTable,
-						 sc21_albumart);
-
-			m_streamInfo.m_currentURL = "DNAS/streamart?sid=" + tos(ID());
-		}
-		else
-		{
-			m_streamInfo.m_currentURL.clear();
-		}
-	}
-
-	// changed in 2.4 so it will allow repeated 'Advert:xx'
-	// update through since it's needed for advert triggers
-	// changed in 2.4.8+ so we can provide a 'test' case
-	bool sameTitle = (m_oldCurrentSong == m_streamInfo.m_currentSong),
-		 sameUrl = (m_oldCurrentURL == m_streamInfo.m_currentURL),
-		 sameNext = (m_oldComingSoon == m_streamInfo.m_comingSoon);
-	if ((sameTitle && sameUrl && sameNext &&
-		((m_streamInfo.m_currentSong.find ((utf8)"Advert:") != 0) &&
-		 (m_streamInfo.m_currentSong.find ((utf8)"Test Advert:") != 0))))
-	{
-		// if the same then we might as well skip as it won't add anything
-		// other than filling the song history list with deemed duplicates
-		m_stateLock.unlock();
-		return 0;
-	}
-
-	DEBUG_LOG(logString + "title: " + tos(sameTitle) + " - url: " + tos(sameUrl) + " - next: " + tos(sameNext), LOGNAME, ID());
-
-	// convert sc1 metadata to sc21 metadata
-	utf8 sc21_metadata_s = metadata::toXML_fromFilename(m_streamInfo.m_currentSong, m_streamInfo.m_currentURL, "%N");
-
-	g_streamSongHistoryMapLock.lock();
-	map<streamID_t, streamHistory_t>::iterator i = g_streamSongHistoryMap.find(ID());
-	if (i != g_streamSongHistoryMap.end())
-	{
-		(*i).second.push_front(songHistoryInfo(m_streamInfo.m_currentSong, sc21_metadata_s));
-
-		while ((*i).second.size() > gOptions.getSongHistorySize(ID()))
-		{
-			(*i).second.pop_back();
-		}
-	}
-	else
-	{
-		g_streamSongHistoryMap[ID()].push_front(songHistoryInfo(m_streamInfo.m_currentSong, sc21_metadata_s));;
-	}
-	g_streamSongHistoryMapLock.unlock();
-
-	resetAdvertTriggers(m_streamInfo.m_currentSong);
-
-	m_stateLock.unlock();
-
-	sc1MetadataAndExtensionInfo sc1_metadata_and_extension_info;
-	sc1_metadata_and_extension_info.m_songTitle = "StreamTitle='" + m_streamInfo.m_currentSong + "';";
-
-	if (!m_streamInfo.m_comingSoon.empty())
-	{
-		// added in 2.5 (dunno if any client will use it or not)
-		sc1_metadata_and_extension_info.m_songTitle += "StreamNext='" + m_streamInfo.m_comingSoon + "';";
-	}
-
-	if (!m_streamInfo.m_currentURL.empty())
-	{
-		sc1_metadata_and_extension_info.m_songTitle += "StreamUrl='" + m_streamInfo.m_currentURL + "';";
-	}
-	else
-	{
-		if (!m_sc21AlbumArtData[1].empty())
-		{
-			m_streamInfo.m_currentURL = "DNAS/playingart?sid=" + tos(ID());
-			sc1_metadata_and_extension_info.m_songTitle += "StreamUrl='" + m_streamInfo.m_currentURL + "';";
-		}
-		else
-		{
-			// **** TODO ****
-
-			// this allows us to force artwork through for all of the clients when
-			// it's not provided by the connected source on the first title update
-			if (m_sc21AlbumArtData[0].empty() && !gOptions.m_artworkBody[0].empty())
-			{
-				m_sc21AlbumArtData[0] = vector<__uint8>(&gOptions.m_artworkBody[0][0], &gOptions.m_artworkBody[0][gOptions.m_artworkBody[0].size()]);
-				// TODO
-				//m_sc21AlbumArtMime[0] = (voxMsgType & 0x00FF);
-			}
-
-			if (!m_sc21AlbumArtData[0].empty())
-			{
-				m_streamInfo.m_currentURL = "DNAS/streamart?sid=" + tos(ID());
-				sc1_metadata_and_extension_info.m_songTitle += "StreamUrl='" + m_streamInfo.m_currentURL + "';";
-			}
-		}
-	}
-
-	uvoxMetadata_t sc21_metadata;
-	try
-	{
-		createMetadataPackets(&sc21_metadata_s[0], (int)sc21_metadata_s.size(), MSG_METADATA_XML_NEW, sc21_metadata);
-	}
-	catch(const exception &ex)
-	{
-		ELOG(ex.what(), LOGNAME, ID());
-	}
-
-	if (!sc1_metadata_and_extension_info.m_songTitle.empty())
-	{
-		_addMetadata(m_sc1StreamLock, m_sc1_ring_buffer, m_sc1MetadataLock, m_sc1MetadataTable, sc1_metadata_and_extension_info);
-	}
-
-	if (!sc21_metadata.empty())
-	{
-		_addMetadata(m_sc21StreamLock, m_sc21_ring_buffer, m_sc21MetadataLock, m_sc21MetadataTable, sc21_metadata);
-	}
-
-	// uvox metadata must also be injected into the stream itself
-	if (!sc21_metadata.empty())
-	{
-		m_sc21MetadataLock.lock();
-		m_sc21MetadataToPutInline = sc21_metadata;
-		m_sc21MetadataLock.unlock();
-	}
-
-	return (!sameTitle ? 1 : 0) | (!sameUrl ? 2 : 0) | (!sameNext ? 4 : 0);
-}
-
-
-void streamData::pushMetricsYP (bool force)
-{
-    if (m_dead || m_ID <= 0 || m_streamInfo.m_streamPublic == false)
-        return;
-    time_t now = ::time(NULL);
-    if (force == false && m_nextYPPush > now)
-        return;
-
-    if (m_parser)
-    {
-        metrics::metaInfo meta;
-
-        meta.m_sid = m_ID;
-        meta.m_audience = -1;
-        meta.m_private = m_streamInfo.m_streamPublic ? false : true;
-        meta.m_maxListeners = (m_streamInfo.m_streamMaxUser > 0) ? m_streamInfo.m_streamMaxUser : gOptions.maxUser();
-        meta.m_song = m_streamInfo.m_currentSong;
-        meta.m_format = m_streamInfo.m_contentType;
-        meta.m_bitrate = m_streamInfo.m_streamBitrate;
-        meta.m_samplerate = m_streamInfo.m_streamSampleRate;
-        meta.m_agent = m_streamInfo.m_sourceIdent;
-        meta.m_publicIP = m_streamInfo.m_publicIP;
-        meta.m_sourceIP = m_streamInfo.m_srcAddr;
-        meta.m_version = m_parser->getVersionName();
-        metrics::updateMeta (meta);
-        m_nextYPPush = now + 600;   // make it at most 10 mins.
-    }
-    else
-        m_nextYPPush = now + 20; // no data currently retry again in 20 seconds
-}
-
-
-void streamData::clearCachedMetadata() throw()
-{
-	m_sc1MetadataLock.lock();
-	m_sc1MetadataTable.clear();
-	m_sc1MetadataLock.unlock();
-
-	m_sc21MetadataLock.lock();
-	m_sc21MetadataTable.clear();
-	m_sc21MetadataToPutInline.clear();
-	m_sc21MetadataLock.unlock();
-
-	m_sc21StreamAlbumArtLock.lock();
-	m_sc21StreamAlbumArtTable.clear();
-	m_sc21StreamAlbumArtToPutInline.clear();
-	m_sc21StreamAlbumArtLock.unlock();
-
-	m_sc21PlayingAlbumArtLock.lock();
-	m_sc21PlayingAlbumArtTable.clear();
-	m_sc21PlayingAlbumArtToPutInline.clear();
-	m_sc21PlayingAlbumArtLock.unlock();
-
-	m_sc21AlbumArtData[0].clear();
-	m_sc21AlbumArtData[1].clear();
-
-	m_sc21AlbumArtMime[0] = 0;
-	m_sc21AlbumArtMime[1] = 0;
-}
-
-void streamData::clearCachedArtwork(const size_t index) throw()
-{
-	if (!index)
-	{
-		m_sc21StreamAlbumArtLock.lock();
-		m_sc21StreamAlbumArtTable.clear();
-		m_sc21StreamAlbumArtToPutInline.clear();
-		m_sc21StreamAlbumArtLock.unlock();
-	}
-	else
-	{
-		m_sc21PlayingAlbumArtLock.lock();
-		m_sc21PlayingAlbumArtTable.clear();
-		m_sc21PlayingAlbumArtToPutInline.clear();
-		m_sc21PlayingAlbumArtLock.unlock();
-	}
-
-	m_sc21AlbumArtData[index].clear();
-	m_sc21AlbumArtMime[index] = 0;
-
-	addSc1MetadataAtCurrentPosition("", m_streamInfo.m_currentSong,
-									(!m_sc21AlbumArtData[1].empty() ? "DNAS/playingart?sid=" + tos(ID()) :
-									 !m_sc21AlbumArtData[0].empty() ? "DNAS/streamart?sid=" + tos(ID()) : ""),
-									 m_streamInfo.m_comingSoon);
-}
-
-streamData::streamID_t streamData::getStreamIdFromPath(const uniString::utf8 &url, bool& htmlPage) throw()
-{
-	// look for an exact match against / which is sid=1 since if
-	// we've gotten to here then it's unlikely to be non-client.
-	if ((url == utf8("/")) || (url == utf8("/;")) || url.empty())
-	{
-		return DEFAULT_CLIENT_STREAM_ID;
-	}
-
-	streamData::streamID_t sid = DEFAULT_CLIENT_STREAM_ID;
-	config::streams_t streams;
-	gOptions.getStreamConfigs(streams);
-
-	if (!streams.empty())
-	{
-		for (config::streams_t::const_iterator i = streams.begin(); i != streams.end(); ++i)
-		{
-			// look for an exact match against the streampath
-			if ((*i).second.m_urlPath == url)
-			{
-				sid = (*i).first;
-				break;
-			}
-			else
-			{
-				// otheriwse look for a streampath with additional paramters on it
-				// and then attempt to match things back
-				// e.g. /bob;stream.mp3 or /bob/;stream.mp3
-				// note: /bob/bob checking doesn't want to work...
-				if ((url.find((utf8)";") != utf8::npos) || (url.find((utf8)"/;") != utf8::npos)/* ||
-					(url.find(utf8("/")) != utf8::npos && url.find(utf8("/")) != 0)*/)
-				{
-					utf8 param_free = url.substr(0, (*i).second.m_urlPath.size());
-					if (!param_free.empty() && (*i).second.m_urlPath == param_free)
-					{
-						// we need to treat '/stream' as a special
-						// case and skip it and action it later on
-						if (!(param_free == "/stream"))
-						{
-							sid = (*i).first;
-							break;
-						}
-					}
-				}
-			}
-
-			// otherwise look for the streampath and common values
-			// which are appended to the end of the path e.g. /;
-			if (!(*i).second.m_urlPath.empty())
-			{
-				utf8 stream("/stream");
-				utf8::size_type pos = url.find((*i).second.m_urlPath),
-								pos2 = url.find(stream);
-
-				if ((pos != utf8::npos) && (pos == 0) &&
-					// this helps to check for setting /stream as a streampath and it
-					// causing all streams to be provided as if that stream instead
-					// of the actually requested / expected stream since it's special
-					((pos2 == 0) && ((*i).second.m_urlPath != stream)))
-				{
-					utf8 params = url.substr(pos + (*i).second.m_urlPath.size());
-					if (!params.empty())
-					{
-						if ((params.find(utf8(";")) == 0) || (params.find(utf8("/")) == 0) || (params.find(utf8("/;")) == 0))
-						{
-							sid = (*i).first;
-							break;
-						}
-					}
-				}
-			}
-
-			// and if that fails then we instead base it on /stream/x/
-			utf8::size_type pos = url.find((utf8)"/stream/");
-			if (pos != utf8::npos)
-			{
-				utf8 stream_id = url.substr(8);
-				// look for the raw stream url and if it's not exact then treat as a stream request
-				if (!stream_id.empty() &&
-					(stream_id.find((utf8)"/") == utf8::npos) &&
-					(stream_id.find((utf8)";") == utf8::npos))
-				{
-					htmlPage = true;
-				}
-				sid = atoi((const char *)stream_id.c_str());
-			}
-		}
-	}
-	else
-	{
-		// and if that fails then we instead base it on /stream/x/
-		utf8::size_type pos = url.find((utf8)"/stream/");
-		if (pos != utf8::npos)
-		{
-			utf8 stream_id = url.substr(8);
-			// look for the raw stream url and if it's not exact then treat as a stream request
-			if (!stream_id.empty() &&
-				(stream_id.find((utf8)"/") == utf8::npos) &&
-				(stream_id.find((utf8)";") == utf8::npos))
-			{
-				htmlPage = true;
-			}
-			sid = atoi((const char *)stream_id.c_str());
-		}
-	}
-
-	return sid;
-}
-
-//streamData::streamID_t streamData::getStreamUptime(streamID_t id) throw()
-time_t streamData::getStreamUptime(streamID_t ID) throw()
-{
-	stackLock sml(g_streamMapLock);
-
-	return g_streamUptime[ID];
-}
-
-streamData::source_t streamData::getClientType(streamData::source_t clientType, const uniString::utf8& userAgent)
-{
-	if (!userAgent.empty())
-	{
-		if (isUserAgentRelay(userAgent))
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::RELAY));
-		}
-		if ((userAgent.find((utf8)"winampmpeg/") == 0) || (userAgent.find((utf8)"wafa/") == 0))
-		{
-			// this is a specical case and is unlikely to be any 'real' 5.09
-			if (userAgent.find(utf8("winampmpeg/5.09")) == utf8::npos)
-			{
-				clientType = ((streamData::source_t)(clientType | streamData::WINAMP));
-			}
-			else
-			{
-				clientType = ((streamData::source_t)(clientType | streamData::RADIONOMY));
-			}
-		}
-		if (userAgent.find((utf8)"curl/7.") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::CURL_TOOL));
-		}
-		if (userAgent.find((utf8)"sc_iradio/1.") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::SC_IRADIO));
-		}
-		if (userAgent.find((utf8)"icecast ") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::ICECAST | streamData::RELAY));
-		}
-		if (userAgent.find((utf8)"foobar2000/") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::FB2K));
-		}
-		if ((userAgent.find((utf8)"vlc/") == 0) ||
-			(userAgent.find((utf8)" libvlc/") != utf8::npos))
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::VLC));
-		}
-		if ((userAgent.find((utf8)"windows-media-player/") == 0) ||
-			(userAgent.find((utf8)"nsplayer/") == 0))
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::WMP));
-		}
-		if (userAgent.find((utf8)"roku/dvp") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::ROKU));
-		}
-		if (userAgent.find((utf8)"wiimc/") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::WIIMC));
-		}
-		if (userAgent.find((utf8)"audiostation/") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::SYNOLOGY));
-		}
-		if (userAgent.find((utf8)"itunes/") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::ITUNES));
-		}
-		if ((userAgent.find((utf8)"mplayer/") == 0) ||
-			(userAgent.find((utf8)"mplayer ") == 0))
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::MPLAYER));
-		}
-		if (userAgent.find((utf8)"applecoremedia/1.") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::APPLE));
-		}
-		if (userAgent.find((utf8)"psp-internetradioplayer/") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::PS));
-		}
-		if (userAgent.find((utf8)"radio toolbox/") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::RADIO_TOOLBOX));
-		}
-
-		// rough stream ripper identification
-		if ((userAgent.find((utf8)"rma/1.0 (compatible; realmedia)") == 0) ||
-			(userAgent.find((utf8)"nullsoft winamp3 version 3.0 (compatible)") == 0))
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::WARNING));
-		}
-
-		// rough browser identification
-		if (userAgent.find((utf8)"mozilla/5.0") == 0)
-		{
-			if (userAgent.find((utf8)"trident/") != utf8::npos)	// IE
-			{
-				clientType = ((streamData::source_t)(clientType | streamData::IE));
-			}
-			else if (userAgent.find((utf8)"chrome/") != utf8::npos)
-			{
-				clientType = ((streamData::source_t)(clientType | streamData::CHROME));
-			}
-			else if (userAgent.find((utf8)"safari/") != utf8::npos)
-			{
-				clientType = ((streamData::source_t)(clientType | streamData::SAFARI));
-			}
-			else if (userAgent.find((utf8)"firefox/") != utf8::npos)
-			{
-				clientType = ((streamData::source_t)(clientType | streamData::FIREFOX));
-			}
-		}
-	}
-	return clientType;
-}
-
-streamData::source_t streamData::getClientTypeCompat(streamData::source_t clientType, const uniString::utf8& userAgent)
-{
-	if (!userAgent.empty())
-	{
-		if ((userAgent.find((utf8)"windows-media-player/") == 0) ||
-			(userAgent.find((utf8)"nsplayer/") == 0))
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::WMP));
-		}
-		if (userAgent.find((utf8)"roku/dvp") == 0)
-		{
-			clientType = ((streamData::source_t)(clientType | streamData::ROKU));
-		}
-	}
-	return clientType;
-}
-
-// Advert related code.
-typedef pair<int, streamData::adGroup> idGroup;
-
-void streamData::adEntry::flush(metrics::adSummary &summary)
-{
-    if (ad && (summary.sendRest || upper))
-    {
-        summary.count = (int)upper;
-        summary.name = ad->m_description.c_str();
-        summary.failed = ad->m_failed;
-        summary.missing = ad->m_missing;
-
-        metrics::metrics_advert_stats(summary);
-        summary.sendRest = true;
-    }
-    upper = 0;
-}
-
-
-streamData::adEntry::adEntry (specialFileData *d)
-{
-    upper = 0;
-    ad = d;
-    if (d)
-    {
-        ++d->m_refcount;
-        d->m_lastUsed = ::time (NULL);
-        AD_DEBUG_LOG ("[STREAMDATA] content new, " + d->m_description + " now has " + tos (d->m_refcount));
-    }
-}
-
-
-streamData::adEntry::adEntry (const adEntry &e)
-{
-    upper = 0;
-    ad = e.ad;
-    ++(e.ad->m_refcount);
-    e.ad->m_lastUsed = ::time (NULL);
-    AD_DEBUG_LOG ("[STREAMDATA] content copy, " + e.ad->m_description + " now has " + tos (e.ad->m_refcount));
-}
-
-
-streamData::adGroup::adGroup (adGroup &prev, adTrigger &trig)
-{
-    m_totalSizeSC1 = m_totalSizeSC2 = 0;
-    m_trigger = &trig;
-
-    std::deque <adEntry>::iterator  it = prev.ads.begin();
-    for (; it != prev.ads.end(); ++it)
-    {
-        specialFileData *f = it->ad;
-        ads.push_back (adEntry (f));
-    }
-}
-
-
-void streamData::adGroup::appendAdvert(streamData::specialFileData &s)
-{
-	 ads.push_back (adEntry (&s));
-	 m_totalSizeSC1 += s.m_sc1Buffer.size();
-	 m_totalSizeSC2 += s.m_sc2Buffer.size();
-}
-
-void streamData::adGroup::flushCounts(metrics::adSummary &summary)
-{
-    summary.sendRest = false;
-    summary.tstamp = m_trigger->m_playedAt;
-    for (std::deque<adEntry>::iterator it = ads.begin(); it != ads.end(); ++it)
-    {
-        it->flush(summary);
-    }
-}
-
-streamData::adGroups::adGroups (streamData *sd)
-{
-    m_sd = sd;
-    refcount = 0;
-    m_recheck = 0;
-    nextUpdate = ::time(NULL);
-    m_nextDownloadRun = nextUpdate + 40;
-    m_type = ADVERT_MAP_FIXED;
-    skippedAds = 0;
-    retriever = NULL;
-}
-
-
-streamData::adGroups::~adGroups()
-{
-    while (triggers.empty() == false) // pop each on the triggers list and run release on it
-    {
-        adTrigger *trig = *triggers.begin();
-        triggers.pop_front();
-        releaseTrigger (trig);
-    }
-	if (retriever)
-	{
-		delete retriever;
-		retriever = NULL;
-	}
-}
-
-
-void streamData::adGroups::setType (const uniString::utf8 &s)
-{
-    if (s == "flex")
-        m_type = ADVERT_MAP_FLEX;
-    else if (s == "pause")
-        m_type = ADVERT_MAP_PAUSE;
-    else
-        m_type = ADVERT_MAP_FIXED;
-}
-
-
-#if 0
-streamData::adGroup *streamData::adGroups::insertAdTestFile(const streamData::streamID_t sid, streamData *sd)
-{
-	streamData::adGroup *ret = NULL;
-	for (int i = 0; i < 4; i++)
-	{
-		specialFileData *f = new specialFileData("test advert");
-		if (f)
-		{
-			vector<__uint8> v;
-			sd->getAdTestFile(i).getSc1Data(v);
-			if (!v.empty())
-			{
-				const int uvoxDataType = sd->streamUvoxDataType();
-				unsigned int read_samplerate = sd->streamSampleRate(), samplerate = read_samplerate;
-				// if the bitrate is not known, setting -1 will reject things
-				// as we cannot be sure well insert ok if using '0' otherwise
-				const int read_bitrate = cleanFileData("", v, v.size(), sd->streamBitrate(), samplerate, uvoxDataType,
-													   "[ADVERT sid=" + tos(sid) + "] ", "advert", read_samplerate);
-
-				if (!v.empty())
-				{
-					f->replaceData(v, uvoxDataType, read_bitrate, read_samplerate);
-					AD_DEBUG_LOG("[ADVERT sid=" + tos(sid) + "] Adding to group TEST");
-					ret = addToGroup(-2, f);
-				}
-				else
-				{
-					delete f;
-					WLOG("[ADVERT sid=" + tos(sid) + "] Skipping test advert - "
-						 "does not match the current stream format. Got " +
-						 tos(read_bitrate) + " kbps, " + sampleRateStr(samplerate) +
-						 " (stream) vs " + tos(sd ? sd->streamBitrate() : -1) +
-						 " kbps, " + sampleRateStr(read_samplerate) + " (test advert)");
-				}
-			}
-		}
-	}
-
-	return ret;
-}
-#endif
-
-bool streamData::adGroups::attachGroupQueue (adGroupAccess &ac)
-{
-    if (ac.m_groupQueue == NULL && ac.inAdvertMode() == false)
-    {
-        stackLock sml(m_lock);
-
-        adGroupMap_t::iterator it = mapping.find (ac.group);
-        adGroupQueue *q;
-
-        if (it == mapping.end())
-        {
-            q = new adGroupQueue();
-            mapping [ac.group] = q;
-        }
-        else
-            q = (*it).second;
-        q->listeners++;
-        ac.m_groupQueue = q;
-        return true;
-    }
-    return false;
-}
-
-
-void streamData::adGroups::detachGroupQueue (adGroupAccess &ac)
-{
-     if (ac.m_groupQueue)
-     {
-         stackLock sml(m_lock);
-
-         adGroupQueue *q = ac.m_groupQueue;
-         adGroup *run = ac.cached_ref;
-
-         q->listeners--;
-         AD_DEBUG_LOG ("drop from group " + tos(ac.group) + " referenced, listeners now " + tos(q->listeners), ADLOGNAME, m_sd->ID());
-         if (run)
-         {
-             // admetrics
-             releaseTrigger (run->m_trigger);
-         }
-         ac.m_groupQueue = NULL;
-         ac.cached_ref = NULL;
-     }
-     else
-         AD_DEBUG_LOG ("no group queue referenced from listener", ADLOGNAME, m_sd->ID());
-}
-
-streamData::adGroup *streamData::adGroups::findGroup(adGroupAccess &ac, ringBufferAccess_t pos)
-{
-    adGroupQueue *q = ac.m_groupQueue;
-    list <adGroup *>::iterator it = q->queue.begin();
-
-    for (; it != q->queue.end(); ++it)
-    {
-        adGroup *g = *it;
-        if (g->m_trigger == NULL) return NULL;  // should not happen
-        ringBufferAccess_t tpos = g->m_trigger->getStartPos (ac.m_sc2);
-
-        if (pos == tpos) // found it
-            return g;
-        if (pos > tpos) // past it, jump out
-            break;
-    }
-    return NULL;
-}
-
-#if 0
-streamData::adGroup *streamData::adGroups::findGroup(const streamData::streamID_t sid, const int id)
-{
-	// PSA = -1, TEST = -2
-	if (mapping && ((id > 0) || (id == -2)))
-	{
-		map<int, adGroup>::iterator search = mapping->find(id);
-		if (search == mapping->end())
-		{
-			// if there's no test group, we now
-			streamData::adGroup *ret = NULL;
-			if (id == -2)
-			{
-				streamData *sd = streamData::accessStream(sid);
-				if (sd)
-				{
-					ret = insertAdTestFile(sid, sd);
-					sd->releaseStream();
-				}
-			}
-			return ret;
-		}
-		return &search->second;
-	}
-	// if there's no mapping, we need to create one for the test case
-	else if (!mapping && (id == -2))
-	{
-		streamData::adGroup *ret = NULL;
-		mapping = new map<int, adGroup>;
-		if (mapping)
-		{
-			streamData *sd = streamData::accessStream(sid);
-			if (sd)
-			{
-				ret = insertAdTestFile(sid, sd);
-				sd->releaseStream();
-			}
-		}
-		return ret;
-	}
-	return NULL;
-}
-#endif
-
-void streamData::adGroups::purge (ringBuffer_t &buffer)
-{
-    if ((m_recheck & 31) == 0)
-    {
-        // drop reference when off the ring buffer, loop in case there are a few to purge
-        while (triggers.empty() == false)
-        {
-            adTrigger *t = triggers.back();
-            if (t== NULL)
-                DLOG ("purge trigger NULL");
-            if (t && (t->m_playedAt || triggers.size() > 1))
-            {
-                size_t sz = buffer.m_data.size();
-                //DLOG ("trig " + t->m_id + ", played " + tos((long)t->m_playedAt) + ", ret " + tos((long)t->m_returnPtrSC1) + ", wptr " + tos((long)(buffer.m_writePtr)) + ", sz " + tos(sz));
-                if (buffer.m_writePtr < sz) // for early cases of stream start
-                    break;
-                if (t->m_returnPtrSC1 < (buffer.m_writePtr - sz))
-                {
-                    AD_DEBUG_LOG ("trigger " + t->m_id + " reference off the ring buffer", ADLOGNAME, m_sd->ID());
-                    triggers.remove (t);
-                    releaseTrigger (t);
-                    continue;
-                }
-            }
-            break;
-        }
-    }
-    if ((m_recheck & 255) == 0)
-    {
-        // DLOG("rechecking for group purge");
-        purgeGroups();
-    }
-    ++m_recheck;
-}
-
-
-void streamData::adGroups::createNewTrigger (const string &reqID)
-{
-    string id;
-    if (reqID == "")
-    {
-        stringstream s;
-        s << tos(time_now_ms());
-        id = s.str();
-    }
-    else
-        id = reqID;
-
-    adTrigger *trig = new adTrigger (id, m_sd->ID());
-    triggers.push_front (trig);
-}
-
-
-size_t streamData::adGroups::overlaySize (adTrigger *trigger, bool sc2)
-{
-    int gn = 0;
-
-    if (trigger == NULL) abort();
-    if (sc2)   // assume sc2 is done after sc1
-        return trigger->m_maxSizeSC2;
-
-    adGroupMap_t::iterator it = mapping.begin();
-    for (gn = 0; gn < 8 && it != mapping.end(); ++gn, ++it)  // check so many group queues for filled adverts
-    {
-        adGroupQueue *q = it->second;
-
-        for (list<adGroup*>::iterator it = q->queue.begin(); it != q->queue.end(); ++it)
-        {
-            adGroup *g = *it;
-            if (g->m_trigger == trigger)
-            {
-                if (trigger->m_playedAt == 0)
-                {
-                    g->recalculateTotalSize();
-                }
-                break;
-            }
-        }
-    }
-    if (trigger->m_maxSizeSC1)
-        ILOG ("Trigger " + tos(trigger->m_id) + " size is " + tos(trigger->m_maxSizeSC1) + "/" + tos(trigger->m_maxSizeSC2), ADLOGNAME, m_sd->ID());
-    return trigger->m_maxSizeSC1;
-}
-
-
-streamData::adGroup *streamData::adGroups::addToGroup (const string &id, const int grp, specialFileData *f)
-{
-
-	if ((f == NULL) || !grp)
-	{
-		return NULL;
-	}
-    std::map<size_t, adGroupQueue *>::iterator it = mapping.find (grp);
-    adGroupQueue *q;
-	if (it == mapping.end())
-	{
-	    AD_DEBUG_LOG ("new queue " + tos(grp) + " on " + id, ADLOGNAME, m_sd->ID());
-        mapping [grp] = q = new adGroupQueue();
-	}
-    else
-        q = it->second;
-    adTrigger *cur = NULL; //, *prev = NULL;
-    cur = triggers.empty() ? NULL : triggers.front();
-
-    if (cur == NULL || cur->m_id != id)
-    {
-        //prev = cur;
-        createNewTrigger (id);
-        if (cur && cur->m_playedAt == 0)
-        {
-            triggers.remove (cur);
-            releaseTrigger (cur);
-            return addToGroup (id, grp, f);
-        }
-    }
-    else
-        if (cur->m_playedAt)
-        {
-            AD_DEBUG_LOG ("Trigger " + id + " has already started, skipping", ADLOGNAME, m_sd->ID());
-            return NULL;
-        }
-
-    cur = triggers.front();
-
-    adGroup *g = q->queue.empty() ? NULL : q->queue.front();
-
-    if (g && g->m_trigger != cur)
-        g = NULL;
-    if (g == NULL || g->m_trigger->m_playedAt)
-    {
-        g = new adGroup;
-        g->m_trigger = cur;
-        q->queue.push_front (g);
-    }
-	g->appendAdvert(*f);
-
-	if (cur->m_maxSizeSC1 < g->m_totalSizeSC1)
-		cur->m_maxSizeSC1 = g->m_totalSizeSC1;
-	if (cur->m_maxSizeSC2 < g->m_totalSizeSC2)
-		cur->m_maxSizeSC2 = g->m_totalSizeSC2;
-
-    return NULL;
-}
-
-#if 0
-void streamData::adGroups::queueNewSet(const streamID_t sid, adGroups *qGroups)
-{
-	stackLock sml(m_lock);
-	if (qGroups)
-	{
-		if (queuedGroups)
-		{
-			AD_DEBUG_LOG("[ADVERT sid=" + tos(sid) + "] Replacing queued advert set");
-			delete queuedGroups;
-		}
-		queuedGroups = qGroups;
-		if (queuedGroups->mapping && queuedGroups->adData)
-		{
-			const size_t group_size = queuedGroups->mapping->size(),
-						 adverts_size = queuedGroups->adData->size();
-			ILOG("[ADVERT sid=" + tos(sid) + "] Updated adverts: queued " +
-				 tos(group_size) + " group" + (group_size != 1 ? "s" : "") + ", " +
-				 tos(adverts_size) + " advert" + (adverts_size != 1 ? "s" : "") + ", " +
-				 tos((queuedGroups->skippedAds > 0 ? queuedGroups->skippedAds : 0)) +
-				 " advert file" + (queuedGroups->skippedAds != 1 ? "s" : "") + " skipped,"
-				 " next update in " + tos(queuedGroups->nextUpdate - ::time(NULL)) + " seconds.");
-		}
-	}
-}
-#endif
-
-#if 0
-void streamData::adGroups::flushGroupCounts(const streamData::streamID_t sid)
-{
-	if (mapping.empty() == false)
-	{
-		streamData *sd = streamData::accessStream (sid);
-		if (sd == NULL)
-			return;
-
-		if (sd->radionomyID().empty() && sd->streamAdvertMode())
-		{
-		    metrics::adSummary summary;
-
-		    summary.sid = sid;
-		    summary.path = getStreamPath(sid);
-		    summary.tstamp = playedAt;
-		    summary.sd = sd;
-
-		    for (adGroupMap_t::iterator it = mapping.begin(); it != mapping.end(); ++it)
-            {
-                summary.group = (*it).first;
-                (*it).second->flushStats (summary);
-            }
-		}
-		sd->releaseStream();
-	}
-}
-#endif
-
-#if 0
-// if the increase is set to false then we require the sid
-void streamData::adGroups::join(const bool increase, const streamData::streamID_t sid, const bool testing)
-{
-	stackLock sml(m_lock);
-	if (increase)
-	{
-		if ((refcount == 0) && (playedAt == 0))
-		{
-			AD_DEBUG_LOG("[ADVERT sid=" + tos(sid) + "] Starting " + (testing ? "test " : "") + "advert run");
-			playedAt = ::time(NULL);
-		}
-		++refcount;
-	}
-	else
-	{
-		--refcount;
-		if (refcount == 0)
-		{
-			AD_DEBUG_LOG("[ADVERT sid=" + tos(sid) + "] End of " + (testing ? "test " : "") + "advert run");
-			if (!testing)
-			{
-				flushGroupCounts(sid);
-				nextUpdate = 1; // force new download of adverts
-			}
-			playedAt = 0;
-		}
-	}
-}
-#endif
-
-streamData::adTrigger::~adTrigger ()
-{
-    AD_DEBUG_LOG ("Trigger destroyed, " + m_id, ADLOGNAME, m_sid);
-}
-
-
-void streamData::adGroups::releaseTrigger (adTrigger *trigger)
-{
-    if (trigger == NULL) return;
-
-    AD_DEBUG_LOG ("trigger " + trigger->m_id + " had count " + tos(trigger->m_inUse), ADLOGNAME, trigger->m_sid);
-    if (trigger->m_inUse > 1)
-    {
-        --trigger->m_inUse;
-        return;
-    }
-    if (trigger->m_playedAt)
-        flushStats (trigger);
-
-    adGroupMap_t::iterator it = mapping.begin();
-    unsigned int num = 0;
-
-    while (it != mapping.end())
-    {
-        size_t grp_num = it->first;
-        adGroupQueue *q = it->second;
-
-        ++it;
-        if (q->queue.empty())
-            continue;
-
-        adGroup *g = q->queue.back();
-        if (g->m_trigger == trigger) // should be true
-        {
-            q->queue.pop_back();
-            AD_DEBUG_LOG ("deleting from group " + tos(grp_num) + " matching trigger " + tos(trigger->m_id), ADLOGNAME, trigger->m_sid);
-            delete g;
-            ++num;
-        }
-        else
-            AD_DEBUG_LOG ("trigger unexpected " + tos(g->m_trigger->m_id), ADLOGNAME, trigger->m_sid);
-    }
-    ILOG ("trigger " + tos(trigger->m_id) + " dropped with " + tos(num) + " populated groups", ADLOGNAME, trigger->m_sid);
-    delete trigger;
-}
-
-
-void streamData::adGroups::purgeGroups()
-{
-    adGroupMap_t::iterator it = mapping.begin();
-
-    while (it != mapping.end())
-    {
-        size_t grp_num = it->first;
-        adGroupQueue *q = it->second;
-
-        if (q->listeners == 0)
-        {
-            adGroupMap_t::iterator to_go = it;
-            adGroupQueue *q = to_go->second;
-            ++it;
-            AD_DEBUG_LOG ("Purging group " + tos (grp_num), ADLOGNAME, m_sd->ID());
-            mapping.erase (to_go);
-            delete q;
-            continue;
-        }
-        // DLOG ("[ADVERT] purge group " + tos(grp_num) + "still has " + tos (q->listeners));
-        ++it;
-    }
-}
-
-
-streamData::adGroupQueue::~adGroupQueue()
-{
-    list<adGroup*>::iterator it = queue.begin();
-
-    AD_DEBUG_LOG ("[ADVERT] queue destroyed, blocks remaining " + tos(queue.size()));
-    for (; it != queue.end(); ++it)
-    {
-        AD_DEBUG_LOG ("[ADVERT] Deleting group");
-        delete *it;
-    }
-}
-
-
-void streamData::adGroupQueue::flushStats (metrics::adSummary &summary, adTrigger *trigger)
-{
-    for (list<adGroup*>::iterator it = queue.begin(); it != queue.end(); ++it)
-    {
-        adGroup *g = *it;
-        if (g->m_trigger == trigger && g->m_trigger->m_inUse <= 1)
-        {
-            summary.id = g->m_trigger->m_id;
-            g->flushCounts (summary);
-            break;
-        }
-    }
-}
-
-
-int streamData::adGroup::recalculateTotalSize ()
-{
-    std::deque <adEntry>::iterator it = ads.begin();
-    int missing = 0;
-
-    m_totalSizeSC1 = 0;
-    m_totalSizeSC2 = 0;
-    for (;it != ads.end(); ++it)
-    {
-        adEntry &e = *it;
-        if (e.ad == NULL || e.ad->m_missing)
-        {
-            ++missing;
-            continue;
-        }
-        m_totalSizeSC1 += e.ad->m_sc1Buffer.size();
-        m_totalSizeSC2 += e.ad->m_sc2Buffer.size();
-    }
-    if (m_trigger)
-    {
-        bool updated = false;
-        if (m_trigger->m_maxSizeSC1 < m_totalSizeSC1)
-        {
-            m_trigger->m_maxSizeSC1 = m_totalSizeSC1;
-            updated = true;
-        }
-        if (m_trigger->m_maxSizeSC2 < m_totalSizeSC2)
-        {
-            m_trigger->m_maxSizeSC2 = m_totalSizeSC2;
-            updated = true;
-        }
-        if (updated)
-            AD_DEBUG_LOG ("Group size is " + tos(m_totalSizeSC1) + "/" + tos(m_totalSizeSC2), ADLOGNAME, m_trigger->m_sid);
-    }
-    return missing;
-}
-
-
-void streamData::adGroups::flushStats (adTrigger *trigger)
-{
-    adGroupMap_t::iterator it = mapping.begin();
-    metrics::adSummary summary;
-
-    summary.sid = m_sd->ID();
-    summary.path = getStreamPath(summary.sid);
-    summary.sd = m_sd;
-
-    //DLOG ("FLUSHing stats for metrics");
-    for (; it != mapping.end(); ++it)
-    {
-        adGroupQueue *q = it->second;
-
-        summary.group = (*it).first;
-        q->flushStats (summary, trigger);
-    }
-}
-
-
-streamData::adGroup *adGroupAccess::getGroup(streamData::streamID_t, streamData::adGroups &, const bool)
-{
-    if (cached_ref)
-        return cached_ref; // avoids the traversal of map
-    if (m_groupQueue == NULL)
-        return NULL;
-
-    return cached_ref;
-}
-
-
-bool adGroupAccess::foundNextAdvert (const streamData::streamID_t sid, streamData::adGroups &/*groups*/, streamData::adGroup &g)
-{
-    do
-    {
-        if (idx >= (int)g.ads.size())
-            break;
-        streamData::adEntry *e = &g.ads[idx];
-        if (e == NULL || e->ad == NULL)
-        {
-            AD_DEBUG_LOG("Listener on group " + (group == -2 ? "TEST" : tos(group)) +
-                    ", idx " + tos(idx) + ", content missing", ADLOGNAME, sid);
-            idx++;
-            continue;
-        }
-        utf8 msg = "Listener (grp ";
-        msg += tos (group);
-        msg += ", idx ";
-        msg += tos (idx);
-        msg += ", ad dura ";
-        msg += tos(e->ad->m_duration);
-        msg += ", rem ";
-        msg += tos(m_duration);
-        msg += ")";
-        AD_DEBUG_LOG (msg, LOGNAME, sid);
-
-        unsigned ad_dur = (unsigned)(e->ad->m_duration+0.5);
-        if (g.m_trigger->m_type == ADVERT_MAP_FIXED && ad_dur > m_duration)
-        {
-            idx++;
-            continue;
-        }
-        if (g.m_trigger->m_type == ADVERT_MAP_FLEX)
-            m_duration -= ad_dur;
-        ++g.ads [idx].upper;
-        return true;
-    } while (1);
-    return false;
-}
-
-
-bool adGroupAccess::anotherAd(const streamData::streamID_t sid, streamData::adGroups &groups, const bool testing)
-{
-	streamData::adGroup *g = getGroup(sid, groups, testing);
-	if ((g == NULL) || g->ads.empty())
-	{
-		cached_ref = NULL; 
-		return false;
-	}
-
-    offset = 0;
-    int total = (int)g->ads.size();
-
-    ++idx;
-    if (idx < total)
-    {
-        stackLock sml(groups.m_lock);
-        if (foundNextAdvert (sid, groups, *g))
-        {
-            return true;
-        }
-    }
-    return false;
-}
-
-const bool adGroupAccess::inAdvertMode() const
-{
-	return (cached_ref) ? true : false;
-}
-
-void adGroupAccess::setGroup (size_t id)
-{
-    group = id;
-    m_grpChanged = true;
-}
-
-void adGroupAccess::changedGroup (streamData::adGroups &groups)
-{
-    if (m_grpChanged == false || inAdvertMode())
-        return;
-
-    if (m_groupQueue)
-        groups.detachGroupQueue (*this);
-    groups.attachGroupQueue (*this);
-    m_grpChanged = false;
-}
-
-
-bool adGroupAccess::haveAdverts(const streamData::streamID_t sid, streamData::adGroups &groups, streamData::ringBufferAccess_t pos)
-{
-    if (m_groupQueue == NULL)
-        return false;
-
-    streamData::adGroup *g = groups.findGroup (*this, pos), *prev = cached_ref;
-
-    if ((g == NULL) || (g->ads.size() == 0))
-    {
-        return false;
-    }
-    idx = 0;
-
-    cached_ref = g;
-    stackLock sml(groups.m_lock);
-    ++g->m_trigger->m_inUse;
-    m_duration = g->m_trigger->m_duration;
-    if (m_duration == 0)
-        m_duration = 3600;
-    if (prev)
-        groups.releaseTrigger (prev->m_trigger);
-    if (foundNextAdvert (sid, groups, *g))
-        return true;
-    return false;
-}
-
-streamData::specialFileData *adGroupAccess::getAd(const streamData::streamID_t sid, streamData::adGroups &groups, const bool testing)
-{
-    streamData::adGroup *g = getGroup(sid, groups, testing);
-    do
-    {
-        if (g == NULL) break;
-        if (idx < 0 || idx >= (int)g->ads.size()) break;
-
-        streamData::adEntry *e = &g->ads[idx];
-        return e->ad;
-    } while (1);
-    return NULL;
-}
-
-void adGroupAccess::stopAdRun(const streamData::streamID_t, streamData::adGroups &groups, const bool)
-{
-    if (cached_ref)
-    {
-        if (cached_ref->m_trigger)
-            groups.releaseTrigger (cached_ref->m_trigger);
-        cached_ref = NULL;
-    }
-}
-
-// routine to catch whatever conditions will trigger an advert
-// 
-void streamData::checkForAdverts()
-{
-	// only fire if it's a public stream and the stream has been added to the YP
-	// otherwise we're not going to have the radionomyid from the authhash info.
-	if (!iskilled() && (m_streamInfo.m_streamPublic) &&
-		(!m_dead) && m_ID && m_streamInfo.m_advertMode &&
-		(m_streamInfo.m_avgBitrate > 0) && (m_streamInfo.m_streamSampleRate > 0))
-	{
-		advertGroups.checkForNewAdverts(targetSpotUrl(), ID());
-	}
-}
-
-void streamData::adGroups::checkForNewAdverts(const uniString::utf8& url, const streamData::streamID_t sid)
-{
-    time_t now = ::time (NULL);
-    bool start_map_retrieval = false;
-    do
-    {
-        stackLock sml (adContentLock);
-        if (m_nextDownloadRun && m_nextDownloadRun <= now)
-        {
-            m_nextDownloadRun = 0;
-            SimpleThread (streamData::adGroups::runAdDownload, NULL);
-        }
-
-        // in this case, we should just skip until things
-        // have been processed. when processed then we
-        // can step through and that will allow updates.
-        if (nextUpdate == 0)
-        {
-            if (retriever && retriever->cleanup)
-                break;
-            return;
-        }
-        else if (nextUpdate <= now)
-        {
-            nextUpdate = 0; // disable while this starts up
-            start_map_retrieval = true;
-            break;
-        }
-        return;
-    } while (0);
-
-    if (start_map_retrieval)
-    {
-        loadGroups(url, sid);
-        return;
-    }
-    AD_DEBUG_LOG("Cleanup advert map thread", ADLOGNAME, sid);
-    delete retriever;
-    retriever = NULL;
-}
-
-uniString::utf8 streamData::getAdvertGroup()
-{
-	if (m_streamInfo.m_advertMode)
-	{
-		utf8 groups = "Ad setup is correct, but no adverts / groups are currently assigned to this stream.";
-		// only fire if it's a public stream and the stream has been added to the YP
-		// otherwise we're not going to have the radionomyid from the authhash info.
-		if ((m_streamInfo.m_streamPublic) && (!m_dead) && m_ID && m_streamInfo.m_advertMode)
-		{
-			groups = advertGroups.getAdvertGroup();
-		}
-		else
-		{
-			if (m_dead)
-			{
-				return "Ads cannot be provided without an active stream source.";
-			}
-			else
-			{
-				return "Stream is not configured properly for ads.<br><br>"
-					   "Check that the authhash for this stream is correct, "
-					   "and contact support if the condition persists.";
-			}
-		}
-		return groups;
-	}
-
-	// otherwise, we have to assume that we've
-	// been able to get something or it's just
-	// not configured and so need to register.
-	return "This stream is not configured for adverts.<br><br>" +
-		   utf8(m_streamInfo.m_radionomyID.empty() ? "Please <a target=\"blank\" href=\"https://radiomanager.shoutcast.com\"><b>register</b></a> your stream for the DNAS+ service" :
-													 "Please <a target=\"blank\" href=\"https://radiomanager.shoutcast.com\"><b>upgrade</b></a> your stream to the DNAS+ service") +
-		   " to enable advert support.";
-}
-
-bool streamData::knownAdvertGroup(const streamData::streamID_t &sid, const int group)
-{
-	if (sid > 0)
-	{
-		map<streamID_t,streamData*>::const_iterator i = g_streamMap.find(sid);
-		if (i == g_streamMap.end())
-		{
-			return false;
-		}
-        adGroups &gps = (*i).second->advertGroups;
-        stackLock sml (gps.m_lock);
-		return ((*i).second->advertGroups.findQueue (group) != NULL);
-
-	}
-	return false;
-}
-
-
-streamData::adGroupQueue *streamData::adGroups::findQueue (int grp)
-{
-    std::map<size_t, adGroupQueue *>::iterator it = mapping.find (grp);
-    adGroupQueue *q = NULL;
-    if (it != mapping.end())
-        q = it->second;
-    return q;
-}
-
-
-utf8 streamData::adGroups::getAdvertGroup()
-{
-	stackLock sml(m_lock);
-
-    utf8  groups;
-    unsigned count = 0;
-    for (adGroupMap_t::const_iterator it = mapping.begin(); it != mapping.end(); ++it, ++count)
-    {
-        groups += (count ? ", " : "The following advert groups are currently in use:<br><br><b>") + tos((*it).first);
-    }
-
-    if (count)
-    {
-        groups += "</b>";
-    }
-    else
-        groups +=  "Ad setup is correct, but no adverts / groups are currently assigned to this stream.";
-
-    if (skippedAds > 0)
-    {
-        groups += "<br><br>There are adverts retrieved which do not match the current stream format.<br>"
-            "These will not be played to avoid breaking stream playback.";
-    }
-    return groups;
-}
-
-
-struct ad_dload_info
-{
-     stringstream       ss;
-     int                respcode;
-     int                type;
-     size_t             length;
-
-     ad_dload_info()    { respcode = 0; length = 0; type = 0; }
-};
-
-
-static size_t handle_ad_dload_header (void *ptr, size_t size, size_t nmemb, void *stream)
-{
-    ad_dload_info *info = (ad_dload_info*)stream;
-    size_t length = size * nmemb;
-    char *s = (char*)ptr;
-
-    do
-    {
-        if (length == 0) break;
-
-        s [length] = 0;
-
-        if (length > 12 && strncmp (s, "HTTP", 4) == 0)
-        {
-            unsigned int resp = 0;
-            char eol[5] = "";
-            if (sscanf (s, "%*8s %u %4[^\r]", &resp, eol) == 2 && strcmp (eol, "OK") == 0 && resp > 99 && resp < 600)
-                info->respcode = resp;
-            break;
-        }
-        if (length > 12 && strncasecmp (s, "content-type:", 13) == 0)
-        {
-            char content[40];
-            if (sscanf (s+14, " %40[^\r ]", content) == 1)
-            {
-                if (strcmp (content, "audio/aac") == 0)
-                    info->type = AAC_LC_DATA;
-                else if (strcmp (content, "audio/aacp") == 0)
-                    info->type = AACP_DATA;
-                else if (strcmp (content, "audio/mpeg") == 0)
-                    info->type = MP3_DATA;
-                else if (strcmp (content, "application/octet-stream") == 0)
-                {
-                    AD_DEBUG_LOG("[ADVERT] ad download has default mime, assuming aac");
-                    info->type = AACP_DATA;
-                }
-                else
-                {
-                    WLOG ("[ADVERT] ad download has unexpected mime " + utf8(content));
-                    return 0;
-                }
-                break;
-            }
-        }
-    } while (0);
-    return length;
-}
-
-
-static size_t handle_ad_dload_body (void *ptr, size_t size, size_t nmemb, void *stream)
-{
-    ad_dload_info *info = (ad_dload_info*)stream;
-    size_t length = size * nmemb;
-    if (info->ss)
-    {
-        info->ss.write ((const char*)ptr, length);
-        info->length += length;
-    }
-
-    bandWidth::updateAmount (bandWidth::ADVERTS, length);
-    return length;
-}
-
-
-THREAD_FUNC streamData::adGroups::runAdDownload (void* /*arg*/)
-{
-    int purged = 0, retry = 0, added = 0, count = 0;
-    CURL *curl = NULL;
-    ad_dload_info info;
-    char curl_error [CURL_ERROR_SIZE];
-
-    curl = webClient::setupCurlDefaults (curl, "[ADVERT] ", "", 4, 20L);
-    if (curl == NULL)
-    {
-        // set retry time
-        m_nextDownloadRun = ::time(NULL) + 25;
-        return NULL;
-    }
-    curl_easy_setopt (curl, CURLOPT_HEADERFUNCTION, handle_ad_dload_header);
-    curl_easy_setopt (curl, CURLOPT_HEADERDATA, &info);
-    curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, handle_ad_dload_body);
-    curl_easy_setopt (curl, CURLOPT_WRITEDATA, &info);
-    curl_easy_setopt (curl, CURLOPT_ERRORBUFFER, &(curl_error[0]));
-
-    // use progress/xfer functions to trap for the server kill case
-    curl_easy_setopt (curl, CURLOPT_NOPROGRESS, 0L);
-    curl_easy_setopt (curl, CURLOPT_XFERINFOFUNCTION, xferinfo);
-    curl_easy_setopt (curl, CURLOPT_XFERINFODATA, (long)-1);
-
-#ifdef CURLOPT_PASSWDFUNCTION
-    curl_easy_setopt (curl, CURLOPT_PASSWDFUNCTION, my_getpass);
-#endif
-    // limit to 200 in one run and assume 6 retries is not a good sign and likely to stall things
-    while (count < 200 && retry < 6)
-    {
-        specialFileData *f;
-        if (1)
-        {
-            // grab the oldest
-            stackLock sml (adContentLock);
-            if (iskilled() || adContentPending.empty())
-                break;
-            list<specialFileData*>::iterator it = adContentPending.begin();
-            f = *it;
-            adContentPending.pop_front();
-        }
-        ++count;
-        if (f->m_url == "")
-        {
-            ILOG ("[Advert] download requested but no url specified " + f->m_description);
-            specialFileData::release (f);
-            continue;
-        }
-        // clear old data
-        memset (curl_error, 0, CURL_ERROR_SIZE);
-        info.respcode = 0;
-        info.length = 0;
-        info.type = 0;
-        info.ss.str (string());
-
-        curl_easy_setopt (curl, CURLOPT_URL, f->m_url.c_str());
-        int ret = curl_easy_perform (curl);
-        if (ret != CURLE_OK)
-        {
-            // assume a timeout, add to the end for checking later
-            if (f->m_retried < 2)
-            {
-                ++f->m_retried;
-                ILOG("[ADVERT] failed to get " + f->m_description + ", will retry");
-                ++retry;
-                stackLock sml (adContentLock);
-                adContentPending.push_back (f);
-                continue;
-            }
-            ILOG ("[ADVERT] retried " + f->m_description + " several times, skipping");
-        }
-        else if (info.respcode == 200 && info.length && info.type)
-        {
-            // ok, we have something that initially looks like something
-            vector<__uint8> &v = f->m_sc1Buffer;
-            v.reserve (info.ss.tellp());
-            std::copy (std::istreambuf_iterator<char>( info.ss ), std::istreambuf_iterator<char>(), std::back_inserter(v));
-
-            //unsigned int read_samplerate = 0;
-
-            f->verifyData("[ADVERT]");
-
-            // now we either have nothing left or something valid
-            if (v.size() > 0)
-            {
-                string e = " (" + tos (info.length);
-                if (info.length != v.size())
-                    e += " bytes, processed down to " + tos(v.size());
-
-                added++;
-                specialFileData::release (f);   // from content pending not pool
-                ILOG("[ADVERT] Loaded advert " + f->m_description + e + " bytes), referenced " + tos(f->getRefcount()));
-                continue;
-            }
-            ILOG ("[ADVERT] no useful data returned for " + f->m_description + " so flag for removal");
-        } else {
-           ELOG("[ADVERT] failed to get " + f->m_description + ", resp " + tos(info.respcode) + ", len " + tos(info.length) + ", type " + tos (info.type));
-        }
-        f->m_failed = true;
-        // missing content, need to remove from pool
-        ++purged;
-        specialFileData::release (f);       // from content pending
-        stackLock sml (adContentLock);
-        adData.erase (f->m_description);    // drop entry from pool
-        specialFileData::release (f);       // actually release pool reference
-    }
-    if (added || purged || retry)
-        ILOG("[ADVERT] downloaded " + tos(added) + ", purged " + tos(purged) + ", to be retried " + tos(retry));
-    curl_easy_cleanup (curl);
-
-    time_t expire_advert = ::time(NULL) - 5400; // adverts untouched for 90 mins are dropped
-    stackLock sml (adContentLock);
-
-    unsigned expired_ads = 0;
-
-    map<string, specialFileData*>::iterator it = adData.begin();
-    while (it != adData.end())
-    {
-        specialFileData *f = it->second;
-        map<string, specialFileData*>::iterator to_go = it;
-        ++it;
-        if (f->getRefcount() == 1 && f->m_lastUsed < expire_advert)
-        {
-            DLOG ("[ADVERT] ad " + f->m_description + " unused, dropping");
-            adData.erase (to_go);    // drop entry from pool
-            specialFileData::release (f);       // actually release pool reference
-            ++expired_ads;
-        }
-    }
-    if (expired_ads)
-        ILOG("[ADVERT] " + tos(expired_ads) + " advert(s) expired from pool");
-
-    if (m_nextDownloadRun == 0)
-        m_nextDownloadRun = ::time(NULL) + ((count < 200) ? (retry ? 20 : 60) : 2);
-
-    return NULL;
-}
-
-
-THREAD_FUNC streamData::adGroups::process(void* arg)
-{
-	streamData *sd = 0;
-	try
-	{
-		adGroupsRetriever*& m_retriever = reinterpret_cast<adGroupsRetriever*&>(arg);
-		if (!iskilled() && m_retriever && m_retriever->loaded && m_retriever->m_curl &&
-			streamData::isSourceConnected(m_retriever->m_sid))
-		{
-			AD_DEBUG_LOG ("Trying to retrieve updated advert map", ADLOGNAME, m_retriever->m_sid);
-			memset(m_retriever->m_curl_error, 0, CURL_ERROR_SIZE);
-			CURL *curl = (!iskilled() ? m_retriever->m_curl : NULL);
-
-            struct curl_slist *list = NULL;
-            std::string uuid;
-            if (m_retriever->last_uuid != "")
-            {
-                uuid = "Last-BlueBox-UUID: " + m_retriever->last_uuid;
-                list = curl_slist_append (list, uuid.c_str());
-                curl_easy_setopt (curl, CURLOPT_HTTPHEADER, list);
-            }
-			CURLcode ret = (!iskilled() ? curl_easy_perform(curl) : CURLE_FAILED_INIT);
-
-            if (list)
-                curl_slist_free_all (list);
-
-			map<string, bool> skipped;
-			int duration = 60; // default retry interval
-			bool error = false;
-            string id;
-
-            stringstream s;
-            s << tos(time_now_ms());
-            id = s.str();
-
-			sd = streamData::accessStream (m_retriever->m_sid);
-			do
-			{
-				if (ret != CURLE_OK)
-				{
-					if (ret != CURLE_ABORTED_BY_CALLBACK)
-					{
-						ELOG ("Advert map retrieval failed with code: " +
-							 tos(ret) + " [" + (m_retriever->m_curl_error[0] ?
-							 m_retriever->m_curl_error : curl_easy_strerror(ret)) + "]", ADLOGNAME, m_retriever->m_sid);
-					}
-					else
-					{
-						curl = 0;  // abort this attempt
-						if (sd)
-						{
-							sd->releaseStream();
-							sd = 0;
-						}
-						break;
-					}
-
-					// better to retry in 1 minute than wait 20 minutes for connection
-					// failure issues, etc especially if could not connect on startup
-					duration = 60;
-					break;
-				}
-
-				string tag;
-
-				map<string, specialFileData*> &fileContents = sd->advertGroups.adData;
-
-				string line1;
-				while (!iskilled() && getline(m_retriever->ss, line1))
-				{
-					line1 = stripWhitespace(line1);
-					if (line1.empty())
-					{
-						error = true;
-						AD_DEBUG_LOG("Blank line detected for tag", ADLOGNAME, m_retriever->m_sid);
-						break;
-					}
-
-                    if (gOptions.adMetricsDebug())
-                    {
-                        string outp = line1.substr (0, 40);
-                        if (line1.length() > 40)
-                            outp += "...";
-                        AD_DEBUG_LOG("Retrieved line: " + outp, ADLOGNAME, m_retriever->m_sid);
-                    }
-
-					stringstream line(line1);
-					line >> tag;
-                    if (tag == "NextCall")
-                    {
-                        line >> duration;
-                        if (duration < 5)
-                        {
-                            duration = 120; // filter out silly values.
-                        }
-                        continue;
-                    }
-					if (tag == "ID")
-                    {
-                        line >> id;
-                        continue;
-                    }
-                    if (tag == "G")
-                    {
-                        int group = 0;
-                        string name;
-                        line >> group >> name;
-                        // add to group if name exists in map
-                        map<string, specialFileData*>::const_iterator it = fileContents.find(name);
-                        if (it != fileContents.end())
-                        {
-                            specialFileData *f = it->second;
-                            if (f->m_failed == false)
-                            {
-                                sd->advertGroups.addToGroup (id, group, f);
-                                continue;
-                            }
-                        }
-                        if (skipped.find(name) == skipped.end())
-                        {
-                            WLOG("Missing advert ref " + name + " on group " + tos(group), ADLOGNAME, m_retriever->m_sid);
-                        }
-                        continue;
-                    }
-                    if (tag == "AdURL")
-                    {
-                        string name, url;
-                        line >> name;
-                        AD_DEBUG_LOG("Parse groups: ref " + name, ADLOGNAME, m_retriever->m_sid);
-                        if (line.fail() || name[0] == '\0')
-                            continue;
-
-                        line >> url;
-                        if (url.empty() == false)
-                        {
-                            stackLock sml (adContentLock);
-
-                            map<string, specialFileData*>::const_iterator map_it = fileContents.find(name);
-                            if (map_it != fileContents.end())
-                                continue;   // already loaded
-
-                            std::list<specialFileData*>::iterator it = adContentPending.begin();
-
-                            for (; it != adContentPending.end(); ++it)
-                            {
-                                if ((*it)->m_description == name)
-                                {
-                                    if ((*it)->m_missing)
-                                        AD_DEBUG_LOG("found " + tos(name) + " waiting for retrieval", ADLOGNAME, m_retriever->m_sid);
-                                    break;
-                                }
-                            }
-                            if (it != adContentPending.end())
-                                continue; // already scheduled to be downloaded
-
-                            specialFileData *f = new specialFileData (name, url);
-                            if (f)
-                            {
-                                f->increaseRefcount(); // referenced now in the 2 following places
-                                fileContents [name] = f;
-                                adContentPending.push_back (f);
-                            }
-                        }
-                    }
-					if (tag == "Ad")
-					{
-						bool process_file = true;
-						string name, b64;
-						line >> name;
-						AD_DEBUG_LOG("Parse groups: ref " + name, ADLOGNAME, m_retriever->m_sid);
-                        if (line.fail() || name[0] == '\0')
-                            continue;
-
-// we should allow for replacing an existing advert eventually
-                        line >> b64;
-                        stackLock sml (adContentLock);
-
-						map<string, specialFileData*>::const_iterator it = fileContents.find(name);
-						if (it != fileContents.end())
-						{
-							process_file = false;
-						}
-
-                        if (line.fail())
-                        {
-                            stringstream enc;
-#if 1  // one line per base64 encoded advert
-                            if (getline(m_retriever->ss, line1) && process_file)
-                            {
-                                enc << line1;
-                            }
-#else // multiple lines for base64 content but terminates on blank line
-                            while (getline (ss, line1))
-                            {
-                                if (line1 == "")
-                                {
-                                    break;  //  End of base64 block
-                                }
-                                //AD_DEBUG_LOG("[ADVERT sid=" + tos(SID) + "] Read " + tos(line1.size()));
-                                if (process_file)
-                                {
-                                    enc << line1;
-                                }
-                            }
-#endif
-                            b64 = enc.str();
-                            line.clear();
-                        }
-						if (!b64.empty())
-						{
-							specialFileData *f = new specialFileData(name);
-							if (f)
-							{
-								vector<__uint8> v = base64::decode(b64);
-								size_t original_size = v.size();
-
-
-								int uvoxDataType = (sd ? sd->streamUvoxDataType() : MP3_DATA),
-									bitrate = (sd ? sd->streamBitrate() : -1);
-								unsigned int read_samplerate = (sd ? sd->streamSampleRate() : 0),
-											 samplerate = read_samplerate;
-								// if the bitrate is not known, setting -1 will reject things
-								// as we cannot be sure well insert ok if using '0' otherwise
-								int read_bitrate = cleanFileData("", v, v.size(), bitrate, samplerate, uvoxDataType,
-																 "[ADVERT sid=" + tos(m_retriever->m_sid) + "] ", "advert", read_samplerate);
-								if (!v.empty())
-								{
-									f->replaceData(v, uvoxDataType, read_bitrate, read_samplerate);
-									AD_DEBUG_LOG("Retrieved advert of length " +
-												 tos(original_size) + " bytes" + (original_size != v.size() ? " (processed down to " +
-												 tos(v.size()) + " bytes)" : ""), ADLOGNAME, m_retriever->m_sid);
-									fileContents [name] = f;
-								}
-								else
-								{
-									delete f;
-									AD_DEBUG_LOG("Skipping advert - does not match the current stream format. Got " +
-												 tos(read_bitrate) + " kbps, " + sampleRateStr(read_samplerate) +
-												 " vs " + tos(bitrate) + " kbps, " + sampleRateStr(samplerate), ADLOGNAME, m_retriever->m_sid);
-
-									// this is a special case for when there is no advert
-									// group but we're getting generic fillers (which we
-									// cannot use as we don't know who it's intended for)
-									if (name.find("completions") == string::npos)
-									{
-										skipped[name] = true;
-									}
-								}
-							}
-						}
-						continue;
-					}
-				}
-
-				// if we've got configured 'test' files then we
-				// add them in at this stage though we have the
-				// means to load them on-demand if not done now
-				if (!sd)
-				{
-					sd = streamData::accessStream(m_retriever->m_sid);
-				}
-				if (!skipped.empty())
-				{
-					AD_DEBUG_LOG("Skipped " + tos(skipped.size()) + " adverts not matching the current stream format", ADLOGNAME, m_retriever->m_sid);
-				}
-			} while (iskilled());
-
-			if (!curl)
-			{
-				// abort as there's nothing we can do
-				// that won't otherwise make a crash
-				return 0;
-			}
-			else
-            {
-                stackLock sml (adContentLock);
-                sd->advertGroups.skippedAds = (!error ? (int)skipped.size() : -1);
-                AD_DEBUG_LOG("Advert update interval: " + tos(duration), ADLOGNAME, m_retriever->m_sid);
-                sd->advertGroups.nextUpdate = ::time(NULL) + duration;
-                sd->advertGroups.lastUUID = m_retriever->last_uuid;
-                time_t now = ::time(NULL);
-                if (m_nextDownloadRun && m_nextDownloadRun > (now + 6))
-                    m_nextDownloadRun = now + 4;
-
-                m_retriever->cleanup = 1;
-            }
-			sd->releaseStream();
-			sd = 0;
-		}
-	}
-	catch (...)
-	{
-		adGroupsRetriever*& m_retriever = reinterpret_cast<adGroupsRetriever*&>(arg);
-		if (m_retriever)
-		{
-			m_retriever->cleanup = 1;
-		}
-
-		if (sd)
-		{
-			sd->releaseStream();
-		}
-	}
-	return 0;
-}
-
-void streamData::adGroups::loadGroups(const utf8& url, const streamData::streamID_t sid)
-{
-	if (sid > 0)
-	{
-		stackLock sml(m_lock);
-
-		if (retriever)
-		{
-			if (retriever->cleanup == 0)
-			{
-				AD_DEBUG_LOG("Retriever thread already in progress", ADLOGNAME, sid);
-				nextUpdate = ::time(NULL) + 30; // re-check every so often
-				return;
-			}
-
-			delete retriever;
-			retriever = NULL;
-		}
-
-		retriever = new adGroupsRetriever(url, sid);
-		if (retriever && (retriever->loaded == 1) && (retriever->cleanup == 0) && isSourceConnected(sid))
-		{
-			SimpleThread(streamData::adGroups::process, retriever);
-		}
-		else
-		{
-			if (retriever)
-			{
-				// re-check every so often, but if we needed to re-pull
-				// the stream's information then force a quicker check
-				nextUpdate = ::time(NULL) + (!retriever->loaded ? 10 : 1);
-				delete retriever;
-				retriever = NULL;
-			}
-			else
-			{
-				nextUpdate = ::time(NULL) + 30; // re-check every so often
-			}
-		}
-	}
-}
-
-
-streamData::adTrigger::adTrigger(const string &id, streamID_t sid)
-{
-    m_inUse = 1;
-    m_sid = sid;
-    m_id = id;
-    m_type = ADVERT_MAP_FIXED;
-    m_playedAt = (time_t)0;
-    m_returnPtrSC1 = m_returnPtrSC2 = 0;
-    m_maxSizeSC1 = m_maxSizeSC2 = 0;
-}
-
-
-streamData::adTrigger::adTrigger(const char *id, streamID_t sid)
-{
-    m_inUse = 1;
-    m_sid = sid;
-    m_id = string(id);
-    m_playedAt = (time_t)0;
-    m_type = ADVERT_MAP_FIXED;
-    m_returnPtrSC1 = m_returnPtrSC2 = 0;
-    m_maxSizeSC1 = m_maxSizeSC2 = 0;
-}
-
-streamData::ringBufferAccess_t streamData::adTrigger::getStartPos (bool sc2)
-{
-    return sc2 ? m_startPosSC2 : m_startPosSC1;
-}
-
-
-bool operator==(const streamData::adTrigger &lhs, const streamData::adTrigger &rhs)
-{
-    return (lhs.m_id == rhs.m_id);
-}
-
diff --git a/Src/Plugins/DSP/sc_serv3/streamData.h b/Src/Plugins/DSP/sc_serv3/streamData.h
deleted file mode 100644
index cbad5b29..00000000
--- a/Src/Plugins/DSP/sc_serv3/streamData.h
+++ /dev/null
@@ -1,906 +0,0 @@
-#pragma once
-#ifndef streamData_H_
-#define streamData_H_
-
-#include <map>
-#include <stdexcept>
-#include "threadedRunner.h"
-#include "unicode/uniString.h"
-#include "threading/thread.h"
-#include "yp2.h"
-#include <deque>
-#include "uvox2Common.h"
-#include "auth.h"
-#include "MP3Header.h"
-#include "ADTSHeader.h"
-
-/* 
-	This class encapsulates all the data for a stream. It also includes
-	static methods to manage the collection of streams
-*/
-using namespace std;
-
-#define BUF_SIZE 16384
-#define SEND_SIZE 8192
-
-class adGroupAccess;
-
-class streamData
-{
-public:
-	friend class protocol_shoutcastClient;
-	friend class protocol_shoutcast1Client;
-	friend class protocol_shoutcast2Client;
-	friend class protocol_HTTPClient;
-	friend class protocol_flvClient;
-	friend class protocol_m4aClient;
-
-#if defined(_DEBUG) || defined(DEBUG)
-	friend class protocol_relay_uvox;
-	friend class protocol_relay_shoutcast;
-#endif
-
-#define ADVERT_MAP_FIXED        0
-#define ADVERT_MAP_FLEX         1
-#define ADVERT_MAP_PAUSE        2
-#define ADVERT_MAP_MAGIC        3
-
-	class specialFileData;
-	class adEntry;
-	class adGroup;
-
-	typedef enum
-	{
-		UNKNOWN = 0x0,
-		SHOUTCAST1 = 0x1,
-		SHOUTCAST2 = 0x2,
-		HTML5 = 0x4,
-		RELAY = 0x8,
-		WINAMP = 0x10,
-		ICECAST = 0x20,
-		VLC = 0x40,
-		FB2K = 0x80,
-		WMP = 0x100,
-		ITUNES = 0x200,
-		IE = 0x400,
-		CHROME = 0x800,
-		SAFARI = 0x1000,
-		FIREFOX = 0x2000,
-		SC_CDN_MASTER = 0x4000,
-		SC_CDN_SLAVE = 0x8000,
-		ROKU = 0x10000,
-		APPLE = 0x20000,
-		MPLAYER = 0x40000,
-		WARNING = 0x80000,
-		PS = 0x100000,
-		RADIO_TOOLBOX = 0x200000,
-		SC_IRADIO = 0x400000,
-		FLV = 0x800000,
-		M4A = 0x1000000,
-		HTTP = 0x2000000,
-		RADIONOMY = 0x4000000,
-		CURL_TOOL = 0x8000000,
-		SYNOLOGY = 0x10000000,
-		WIIMC = 0x20000000
-	} source_t;
-
-	typedef size_t streamID_t;
-	typedef std::set<streamData::streamID_t> streamIDs_t;
-	typedef uintptr_t ringBufferAccess_t;	// we use power of 2 and mask trick to access ring buffer
-											// because of this, all related variables must have same type
-	struct ringBuffer_t
-	{
-		std::vector<__uint8>	m_data;
-		ringBufferAccess_t m_writePtr;
-		ringBufferAccess_t m_ptrMask;		// must be same type as m_sc1_write_ptr
-
-		ringBuffer_t() : m_writePtr(0), m_ptrMask(0) {}
-	};
-
-	struct songHistoryInfo
-	{
-		uniString::utf8	m_title;	// general title (or is empty)
-		uniString::utf8	m_metadata;	// full metadata (if provided)
-		time_t			m_when;		// when it was played
-
-		explicit songHistoryInfo(const uniString::utf8 &title, const uniString::utf8 &metadata) throw() :
-								 m_title(title), m_metadata(metadata), m_when(::time(NULL)) {}
-	};
-	typedef std::deque<songHistoryInfo> streamHistory_t;
-
-	struct extraInfo
-	{
-		int ypConnected;
-		int ypErrorCode;
-		uniString::utf8 ypErrorMsg;
-		uniString::utf8 ypErrorMsgExtra;
-		bool isConnected;
-		bool isRelay;
-		bool isBackup;
-
-		extraInfo() : ypConnected(0), ypErrorCode(200), isConnected(false), isRelay(false), isBackup(false) {}
-	};
-
-	struct streamInfo
-	{
-		uniString::utf8 m_streamUser;
-		uniString::utf8	m_streamName;
-		uniString::utf8 m_streamGenre[5];
-		uniString::utf8 m_streamLogo;
-		uniString::utf8 m_streamURL;
-		uniString::utf8 m_radionomyID;
-		uniString::utf8 m_contentType;
-		int				m_streamBitrate; // in kilobits
-		bool			m_streamPublic;
-		bool			m_vbr;			// if it's vbr content and we need to bitrate match
-		bool			m_backup;		// signals if this a backup source being used
-		bool			m_allowPublicRelay;
-		int				m_streamSampleRate; // in Hz
-		int				m_avgBitrate;	// in bits
-		int				m_maxBitrate;	// in bits
-		int				m_minBitrate;	// in bits
-		source_t		m_sourceType;
-		//size_t			m_streamPeakUser;
-		int				m_streamMaxUser;
-		int				m_streamMaxBitrate;
-		int				m_streamMinBitrate;
-		int				m_uvoxDataType;	// sc2 attributes
-		uniString::utf8	m_relayURL;		// set if we are a relay (used in reporting)
-		uniString::utf8	m_backupURL;	// set if we have a backup url for the source
-		uniString::utf8	m_srcAddr;		// where is the source coming from
-		uniString::utf8	m_backupServer;
-
-		// for yp2
-		uniString::utf8	m_authHash;
-		uniString::utf8	m_publicIP;			// the public IP address of the DNAS if returned by the YP
-        uniString::utf8 m_stationID;
-        uniString::utf8 m_serverID;
-		uniString::utf8 m_authUrl;			// overriden url
-		uniString::utf8 m_advertsUrl;		// overriden url
-		uniString::utf8 m_audienceUrl;		// overriden url
-		uniString::utf8	m_tuneinAirApiUrl;	// overriden url
-		uniString::utf8 m_targetSpotUrl;	// overriden url
-		std::vector<uniString::utf8> m_backupServersList;
-
-		uniString::utf8 m_currentURL;	// used by v1 sources to set StreamUrl='%s'; in v1 metadata
-		uniString::utf8 m_currentSong;
-		uniString::utf8 m_comingSoon;
-		uniString::utf8 m_sourceIdent;
-		std::vector<uniString::utf8> m_nextSongs;
-
-        static int      m_allowSSL_global;
-        static int      m_allowAllFormats_global;
-        static int      m_allowMaxBitrate_global;
-        static int      m_allowBackupURL_global;
-
-        int             m_allowSSL;
-        int             m_allowAllFormats;
-        int             m_allowMaxBitrate;
-        int             m_allowBackupURL;
-
-        int             m_ypResponseCode;
-		int				m_advertMode;
-		u_short			m_srcPort;
-
-		streamInfo() : m_streamBitrate(0), m_streamPublic(false), m_vbr(false), m_backup(false),
-					   m_allowPublicRelay(true), m_streamSampleRate(0), m_avgBitrate(0),
-					   m_maxBitrate(0), m_minBitrate(0), m_sourceType(streamData::SHOUTCAST1),
-					   m_streamMaxUser(0), m_streamMaxBitrate(0),
-					   m_streamMinBitrate(0), m_uvoxDataType(MP3_DATA), m_authUrl(DNAS_AUTH_URL),
-					   m_advertsUrl(METRICS_ADVERTS_URL), m_audienceUrl(METRICS_AUDIENCE_URL),
-					   m_targetSpotUrl(TARGETSPOT_URL),
-                       #ifdef LICENCE_FREE
-                       m_allowSSL(1), m_allowAllFormats(1), m_allowMaxBitrate(0), m_allowBackupURL(1),
-                       #else
-					   m_allowSSL(1), m_allowAllFormats(1), m_allowMaxBitrate(0), m_allowBackupURL(1),
-                       #endif
-                       m_advertMode(0), m_srcPort(0) {}
-	};
-
-	struct uvoxConfigData_t //(uvox2 and uvox21)
-	{
-		uniString::utf8	m_mimeType;
-		int				m_avgBitrate; // in bits
-		int				m_maxBitrate; // in bits
-		// buffer size stuff is not actually used in streamData, but is here for completeness.
-		// note that protocol_relay_uvox does not set these (and pretty much can't anyhow)
-		int				m_desiredBufferSize;	// in kilobytes, as requested by broadcaster
-		int				m_minimumBufferSize;	// in kilobytes, as requested by broadcaster
-		/////////////
-		int				m_icyPub;
-		uniString::utf8	m_icyName;
-		uniString::utf8	m_icyGenre;
-		uniString::utf8 m_icyURL;
-
-		uniString::utf8 toLogString() const throw()
-		{
-			return "mimeType=" + m_mimeType + stringUtil::eol() +
-				   "avgBitrate=" + stringUtil::tos(m_avgBitrate) + stringUtil::eol() +
-				   "maxBitrate=" + stringUtil::tos(m_maxBitrate) + stringUtil::eol() +
-				   "desiredBufferSize=" + stringUtil::tos(m_desiredBufferSize) + stringUtil::eol() +
-				   "minimumBufferSize=" + stringUtil::tos(m_minimumBufferSize) + stringUtil::eol() +
-				   "icyName=" + m_icyName + stringUtil::eol() +
-				   "icyGenre=" + m_icyGenre + stringUtil::eol() +
-				   "icyURL=" + m_icyURL + stringUtil::eol() +
-				   "icyPub=" + stringUtil::tos(m_icyPub);
-		}
-
-		uvoxConfigData_t() : m_avgBitrate(0), m_maxBitrate(0), m_desiredBufferSize(0), m_minimumBufferSize(0), m_icyPub(0) {}
-	};
-
-	struct streamSetup
-	{
-		const uniString::utf8& m_logString;
-		const uniString::utf8& m_srcAddr;
-		const uniString::utf8& m_authHash;
-		const uniString::utf8& m_streamUser;
-		const uniString::utf8& m_relayURL;
-		const uniString::utf8& m_backupURL;
-
-		const source_t m_sourceType;
-		const streamID_t m_sid;
-
-		const int m_srcPort;
-		const int m_maxStreamUser;
-		const int m_maxStreamBitrate;
-		const int m_minStreamBitrate;
-		const bool m_allowPublicRelay;
-		const bool m_backup;
-		const unsigned int m_sampleRate;
-		const bool m_vbr;
-
-		httpHeaderMap_t m_headers;
-		uvoxConfigData_t m_config;
-
-		streamSetup(const uniString::utf8 &logString, const uniString::utf8 &srcAddr,
-					const uniString::utf8 &authHash, const uniString::utf8 &streamUser,
-					const uniString::utf8 &relayURL, const uniString::utf8 &backupURL,
-					const source_t sourceType, const streamID_t sid, const int srcPort,
-					const int maxStreamUser, const int maxStreamBitrate,
-					const int minStreamBitrate, const bool allowPublicRelay,
-					const bool backup, const unsigned int sampleRate,
-					const bool vbr, httpHeaderMap_t headers) throw()
-			: m_logString(logString), m_srcAddr(srcAddr), m_authHash(authHash),
-			  m_streamUser(streamUser), m_relayURL(relayURL), m_backupURL(backupURL),
-			  m_sourceType(sourceType), m_sid(sid), m_srcPort(srcPort),
-			  m_maxStreamUser(maxStreamUser), m_maxStreamBitrate(maxStreamBitrate),
-			  m_minStreamBitrate(minStreamBitrate), m_allowPublicRelay(allowPublicRelay),
-			  m_backup(backup), m_sampleRate(sampleRate), m_vbr(vbr), m_headers(headers) {}
-
-		streamSetup(const uniString::utf8 &logString, const uniString::utf8 &srcAddr,
-					const uniString::utf8 &authHash, const uniString::utf8 &streamUser,
-					const uniString::utf8 &relayURL, const uniString::utf8 &backupURL,
-					const source_t sourceType, const streamID_t sid, const int srcPort,
-					const int maxStreamUser, const int maxStreamBitrate,
-					const int minStreamBitrate, const bool allowPublicRelay,
-					const bool backup, const unsigned int sampleRate,
-					const bool vbr, uvoxConfigData_t& config) throw()
-			: m_logString(logString), m_srcAddr(srcAddr), m_authHash(authHash),
-			  m_streamUser(streamUser), m_relayURL(relayURL), m_backupURL(backupURL),
-			  m_sourceType(sourceType), m_sid(sid), m_srcPort(srcPort),
-			  m_maxStreamUser(maxStreamUser), m_maxStreamBitrate(maxStreamBitrate),
-			  m_minStreamBitrate(minStreamBitrate), m_allowPublicRelay(allowPublicRelay),
-			  m_backup(backup), m_sampleRate(sampleRate), m_vbr(vbr), m_config(config) {}
-	};
-
-    typedef pair<string, streamData::specialFileData*> adGroupEntry;  // is the strings needed here?
-
-    class adGroups;
-	class specialFileData
-	{
-        friend class adEntry;
-        friend class adGroups;
-
-	private:
-		unsigned int m_refcount;
-		mutable AOL_namespace::mutex m_lock;
-		std::vector<__uint8> m_sc1Buffer;
-		std::vector<__uint8> m_sc2Buffer;
-		void _replaceData(const std::vector<__uint8> &data, const int uvoxDataType,
-						  const int bitrate, const unsigned int samplerate) throw();
-
-	public:
-        const std::string       m_description;
-        const std::string       m_url;          // these could be offloaded into separate object, only apply initially
-        int                     m_samplerate;
-        int                     m_bitrate;
-        float                   m_duration;
-        bool                    m_failed;
-        bool                    m_missing;
-        unsigned                m_retried;
-        time_t                  m_lastUsed;
-
-        explicit specialFileData(const std::string &description, const std::string &url = "") throw() : m_description(description), m_url(url)
-        {
-            m_failed = false;
-            m_missing = (url == "" ? false : true);
-            m_refcount = 1;
-            m_retried = 0;
-            m_samplerate = 0;
-            m_duration = 0;
-            m_lastUsed = (time_t)0;
-        }
-        ~specialFileData() throw() { m_lock.lock(); m_sc1Buffer.clear(); m_sc2Buffer.clear(); m_lock.unlock(); /*if (m_refcount > 1) abort();*/ }
-
-		int loadFromFile(const uniFile::filenameType &name, const int bitrate, const int uvoxDataType,
-						 const unsigned int samplerate, const uniString::utf8& logString) throw();
-        int verifyData (const uniString::utf8& logString);
-
-		void getSc1Data(std::vector<__uint8> &v) const throw() { stackLock sml(m_lock); v = m_sc1Buffer; }
-		void getSc2Data(std::vector<__uint8> &v) const throw() { stackLock sml(m_lock); v = m_sc2Buffer; }
-
-		void updateUvoxData(const int uvoxDataType, const int bitrate, const unsigned int samplerate) throw();
-		void replaceData(const std::vector<__uint8> &data, const int uvoxDataType,
-						 const int bitrate, const unsigned int samplerate) throw(); 
-		bool gotData(void) const throw() { stackLock sml(m_lock); return (!m_sc2Buffer.empty() && !m_sc1Buffer.empty()); }
-        unsigned int getRefcount () { return m_refcount; }
-        void  increaseRefcount () { stackLock sml(m_lock); ++m_refcount; }
-
-        static void release (specialFileData *f);
-
-		friend class adGroup;
-		friend class protocol_shoutcastClient;
-		friend class protocol_shoutcast1Client;
-		friend class protocol_shoutcast2Client;
-		friend class protocol_HTTPClient;
-		friend class protocol_flvClient;
-		friend class protocol_m4aClient;
-	};
-
-	static int cleanFileData(uniFile::filenameType fn, vector<__uint8> &buffer, size_t siz,
-							 const int bitrate, const unsigned int samplerate,
-							 const int uvoxDataType, const uniString::utf8& logString,
-							 const uniString::utf8& description, unsigned int &read_samplerate);
-
-	class adTrigger;
-	class adGroupQueue;
-
-	class adEntry
-	{
-	public:
-		size_t upper;
-		specialFileData *ad;
-
-		~adEntry() { if (ad) ad->release(ad); }
-
-		explicit adEntry(specialFileData *d);
-        adEntry (const adEntry &e);
-		void flush(metrics::adSummary &summary);
-	};
-
-	class adGroup
-	{
-	    friend class streamData::adGroups;
-	    friend class streamData::adGroupQueue;
-	    friend class adGroupAccess;
-
-	    adTrigger *m_trigger;
-		size_t m_totalSizeSC1;
-		size_t m_totalSizeSC2;
-	public:
-		std::deque <adEntry> ads;
-		adGroup() { m_totalSizeSC1 = m_totalSizeSC2 = 0; m_trigger = NULL; }
-        adGroup(adGroup &, adTrigger &);
-		~adGroup() {;}
-
-        void appendAdvert (specialFileData &d);
-        void flushCounts (metrics::adSummary &summary);
-        int recalculateTotalSize ();
-	};
-
-	class adGroupQueue
-	{
-	    friend class adGroups;
-	    void flushStats (metrics::adSummary &summary, adTrigger *);
-	public:
-		unsigned int 		listeners;
-        list <adGroup*>		queue;
-
-		adGroupQueue()		{ listeners = 0; }
-		~adGroupQueue();
-
-	};
-
-	class adTrigger
-	{
-        friend class adGroupQueue;
-    public:
-        unsigned long                   m_inUse;
-        long                            m_type;             // fixed/flex etc
-        streamData::ringBufferAccess_t  m_startPosSC1;
-        streamData::ringBufferAccess_t  m_startPosSC2;
-        streamData::ringBufferAccess_t  m_returnPtrSC1;
-        streamData::ringBufferAccess_t  m_returnPtrSC2;
-        time_t                          m_playedAt;
-        streamID_t                      m_sid;
-        string                          m_id;
-        size_t                          m_maxSizeSC1;
-        size_t                          m_maxSizeSC2;
-        unsigned                        m_duration;
-
-        adTrigger(const char *id, streamID_t sid);
-        adTrigger(const string &id, streamID_t sid);
-        ~adTrigger();
-		ringBufferAccess_t getStartPos (bool sc2 = true);
-		friend bool operator==(const streamData::adTrigger &lhs, const streamData::adTrigger &rhs);
-	};
-
-	typedef std::map<size_t, adGroupQueue*>	adGroupMap_t;
-
-	class adGroups
-	{
-        friend class adGroupAccess;
-
-        static AOL_namespace::mutex                 adContentLock;
-        // a global map with a custom destructor
-        static struct gpool : map<string, specialFileData*>
-        { ~gpool(); }                               adData;                 // global pool
-        static list<specialFileData*>               adContentPending;       // downloading to global pool
-
-        static time_t                               m_nextDownloadRun;
-
-        streamData                                  *m_sd;
-        string                                      lastUUID;     // last update marker
-        unsigned                                    m_recheck;      // serial count
-
-		adGroup *findGroup (adGroupAccess &ac, ringBufferAccess_t pos);
-		void flushStats (adTrigger *trigger);
-	public:
-        class adGroupsRetriever;
-        adGroupsRetriever *retriever;
-		mutable AOL_namespace::mutex m_lock;
-		streamData::ringBufferAccess_t m_returnPtrSC1;
-		streamData::ringBufferAccess_t m_returnPtrSC2;
-
-		adGroupMap_t			mapping;
-		std::list<adTrigger*> 		triggers;
-
-		unsigned refcount; // prevent update to groups if in use
-		int skippedAds;	// used to help track stream mis-matches
-		time_t nextUpdate;
-        long                            m_type;             // fixed/flex etc
-
-		adGroups (streamData *sd);
-		~adGroups();
-
-		bool attachGroupQueue (adGroupAccess &ac);
-		void detachGroupQueue (adGroupAccess &ac);
-
-        void createNewTrigger (const string &reqID);
-        void purge (streamData::ringBuffer_t &buffer);
-        void purgeGroups();
-        void duplicateTrigger (const string &id);
-        void setType (const uniString::utf8 &s);
-        size_t overlaySize (adTrigger *t, bool sc2 = false);
-
-		adGroup *addToGroup(const string &id, const int grp, specialFileData *f);
-
-		void loadGroups(const uniString::utf8& url, const streamData::streamID_t sid);
-        adGroupQueue *findQueue (int grp);
-		void checkForNewAdverts(const uniString::utf8& url, const streamData::streamID_t sid);
-		uniString::utf8 getAdvertGroup();
-		void queueNewSet(const streamData::streamID_t id, adGroups *newgroups);
-		void flushGroupCounts(const streamData::streamID_t sid);
-		void releaseTrigger (adTrigger *trigger);
-
-        static THREAD_FUNC process(void* arg);
-        static THREAD_FUNC runAdDownload(void* arg);
-	};
-
-private:
-	// streams fall into two groups. Those which are active and usable, and those which are "dead".
-	// dead streams are those which are going away due to a media type change or a uvox terminate stream message.
-	// since the clients cannot go away instantaneously, they are considered "dying" until all references counts go
-	// to zero. Streams that are not dying (including those without a source) are cross referenced in the g_streamMap
-	// table
-	static AOL_namespace::mutex						g_streamMapLock;
-	static std::set<streamData*>					g_streams;		// all the streams, including those that are "dying"
-	static std::map<streamID_t, streamData*>		g_streamMap;	// maps stream IDs to stream objects (active only)
-	static std::map<streamID_t, time_t>				g_streamUptime;	// tracks per-stream uptime (active only)
-	static std::map<streamData*, int>				g_streamReferenceCounts;
-	static std::map<streamData*, bool>				g_streamSourceIsConnected;	// is the source connected
-	static AOL_namespace::mutex						g_sourceRelayMapLock;
-	static std::map<streamData::streamID_t, int>	g_streamSourceRelayIsActive;	// is the source relay active e.g. connected or trying to connect or needs to die?
-	static AOL_namespace::mutex						g_streamSongHistoryMapLock;
-	static std::map<streamID_t, streamHistory_t>	g_streamSongHistoryMap;
-#if defined(_DEBUG) || defined(DEBUG)
-	static map<streamData::streamID_t, FILE*>		g_streamSaving;
-#endif
-	// note: the "source is connected" concept was originally in the streamData object itself.To avoid races, that
-	// flag must be manipulated under the g_streamMapLock. This was confusing, I've moved the flag to the set of tables
-	// above that clearly require that lock to be in place
-
-	// create a new stream object with the given config data and install it in the static global tables above
-	static streamData* _createNewStream(const streamSetup& setup) throw(std::exception);
-
-	static void _reduceReferenceCount(const uniString::utf8& logString, streamData* sd, const streamID_t id);
-	// return null if stream does not exist
-	static streamData* _increaseReferenceCount(const streamID_t ID);
-
-	static void _moveStreamToDeadPool(const streamID_t ID) throw();
-	static void _moveStreamToDeadPool(streamData *sd) throw();
-	static void _moveStreamToDeadPool(std::map<streamID_t,streamData*>::iterator i) throw();
-
-public:
-    static void removeRelayStatus(streamID_t ID);
-
-	static source_t getClientType(source_t clientType, const uniString::utf8& userAgent);
-	static source_t getClientTypeCompat(source_t clientType, const uniString::utf8& userAgent);
-
-	static bool isAllowedType(const int type);
-	static bool isAllowedType(const int type, bool& mp3);
-
-    static int convertRawToUvox (vector<__uint8> &sc2buffer, const vector<__uint8> &buf,
-        const int uvoxDataType, const int bitrate, const unsigned int samplerate) throw();
-
-
-	// permanently stop all sources in preparation for shutdown
-	static void killAllSources() throw();
-	static void killStreamSource(const streamID_t id) throw();
-	static void killSource(const streamID_t id, streamData *sd = 0) throw();
-	static streamIDs_t getStreamIds(const int mode = 0) throw();
-	static size_t totalStreams() throw(); // returns total number of streamData objects including those that are dying
-	static size_t totalActiveStreams(size_t &lastSID) throw(); // returns total number of active streamData objects
-	static streamID_t enumStreams(const size_t index) throw(); // will enumerate the available streams
-	static streamID_t getStreamIdFromPath(const uniString::utf8 &url, bool& htmlPage) throw();
-
-	// Called by sources. create a stream from a type 1 (original shoutcast/http/icecast)
-	// source. If stream exists and is compatible then returns existing stream
-	// otherwise it creates a new one. Returns null if the stream already has a source
-	// this will fetch an existing stream for a source if it exists, or create it if it does not or the source is incompatible
-	static streamData* createStream(const streamSetup& setup) throw(std::exception);
-	//////////////////////////////////
-
-	// when the source goes away
-	static void streamSourceLost(const uniString::utf8& logString, streamData *sd, const streamID_t id);
-	// when a client goes away
-	static void streamClientLost(const uniString::utf8& logString, streamData *sd, const streamID_t id);
-
-	// called by clients to get access to a stream. Null if stream does not exist
-	// isSourceActive flag is false if the source went away or if we are using yp2 and
-	// the yp2::add() function hasn't returned yet.
-	static streamData* accessStream(const streamID_t ID) throw();
-	static streamData* accessStream(const streamID_t ID, bool &isSourceActive) throw();
-	// ensure this is called after calling accessStream(..) otherwise we end up
-	// with references to the objects kept which isn't good for larger streams
-	void releaseStream();
-
-	static bool isSourceConnected(const streamID_t id) throw();
-
-	static int isRelayActive(const streamID_t id, bool &noEntry) throw();
-	static void setRelayActive(const streamID_t id, int state) throw();
-    static int setRelayActiveFlags (streamID_t id, bool &noEntry, int flags, int mask = 0);
-
-	// get a streams content type, return empty string if not found or not set
-	static uniString::utf8 getStreamContentType(const streamID_t ID) throw();
-
-	// get all relevant info about the stream
-	static bool getStreamInfo(const streamID_t id, streamInfo &info, extraInfo &extra) throw();
-
-	static void getStreamSongHistory(const streamID_t id, streamHistory_t& songHistory) throw();
-
-	static bool getStreamNextSongs(const streamID_t id, uniString::utf8& currentSong,
-								   uniString::utf8& comingSoon,
-								   std::vector<uniString::utf8>& nextSongs) throw();
-
-	static time_t getStreamUptime(const streamID_t ID) throw();
-
-	static bool validateTitle(uniString::utf8 &m_updinfoSong) throw();
-
-	
-	static uniString::utf8 getContentType(const streamData::streamInfo &info) throw();
-
-	////////////////////////////////////////////////////////////////////////////////////////////////
-	////////////////////////////////// END OF STATICS //////////////////////////////////////////////
-	////////////////////////////////////////////////////////////////////////////////////////////////
-private:
-	/////////////////////////////////////////////////////////////////////////////////////////
-	mutable AOL_namespace::mutex	m_stateLock; 
-	streamInfo	m_streamInfo;
-
-	const streamID_t	m_ID;
-	time_t			m_startTime;		// when the stream started;
-	//// yp reporting state
-	time_t			m_nextYPPush;		// time we should send another push if not earlier
-	time_t			m_maxYPInterval;	// max seconds between reports
-	uniString::utf8	m_lastTouchTitle;	// last title sent via tchsrv
-	yp2::yp2SessionKey	m_yp2SessionKey;
-	////
-	int				m_creating;	// 1 if in auto-creation state and 2 if completed or was an error
-	int				m_kill;		// 1 or 2 if we need to kill ourselves i.e. when using backup sources
-	short			m_dead;
-	short			m_adTest;		// 1 if the advert trigger is for testing only
-
-	bool			m_insertAdvert;
-    unsigned        m_duration; // for flexbreak;
-	// hole
-
-	unsigned int	m_lastStreamSampleRate; // in Hz (used for tracking samplerates
-											// to ensure we've got a 'good' match
-	int				m_lastStreamBitrate;	// used to detect vbr streams vs cbr/cbr
-    unsigned        m_syncFrameCount;		// used to see if we're failing to sync
-
-	//////////////////// end variables covered by state lock ///////////////////////////////
-
-	specialFileData	m_introFile;
-	specialFileData	m_backupFile;
-	specialFileData	m_adTestFile;
-	specialFileData	m_adTestFile2;
-	specialFileData	m_adTestFile3;
-	specialFileData	m_adTestFile4;
-
-	//////////////////////////////////////////////////////
-	// shoutcast1 ring buffer
-	AOL_namespace::rwLock	m_sc1StreamLock;
-	AOL_namespace::rwLock	m_sc21StreamLock;
-
-	ringBuffer_t	m_sc1_ring_buffer;
-	ringBuffer_t	m_sc21_ring_buffer; // data is uvox encoded
-
-public:
-	adGroups advertGroups;
-
-	void checkForAdverts();
-	uniString::utf8 getAdvertGroup();
-	static bool knownAdvertGroup(const streamData::streamID_t &sid, const int group);
-
-private:
-	// where are the start of packets
-	std::deque<ringBufferAccess_t> m_sc1_packet_starts;// not really important for sc1
-	std::deque<ringBufferAccess_t> m_sc21_packet_starts;
-	/////////////////////////////////////////////////////////////
-
-	// the metadata table for sc1 stores metadata changes and the point in the
-	// buffer where they occur. The metadata is stored in the outgoing format
-	// a.k.a StreamTitle=.....;
-	//
-	// we also store nextTrack and comingSoon info in this table. It's a bit of a hack, but
-	// the code that updates yp2 uses this table to get the track title since it is quicker
-	// to search than the potential binary gunk that makes up uvox data.
-public:
-	struct sc1MetadataAndExtensionInfo
-	{
-		uniString::utf8 m_songTitle; // this is in native shoutcast 1 stream format
-		uniString::utf8 m_songMetadataForYP2; // xml to be inserted directly into yp2 request
-	};
-
-private:
-	AOL_namespace::mutex m_sc1MetadataLock;
-	typedef std::deque<std::pair<ringBufferAccess_t,sc1MetadataAndExtensionInfo> > sc1MetadataTable_t;
-	sc1MetadataTable_t	m_sc1MetadataTable;
-
-	// note that metadata for uvox style streams cannot be the utf8 type directly, because the utf8 type
-	// does sanity checks for valid utf8 codes. The metadata could just be binary junk and we must
-	// accept that. Instead, we use a vector of utf8::value_type which at least makes conversion to utf8
-	// classes easier
-public:
-	typedef std::vector<uniString::utf8::value_type> uvoxMetadata_t;
-
-private:
-	AOL_namespace::mutex	m_sc21MetadataLock;
-	typedef std::deque<std::pair<ringBufferAccess_t,uvoxMetadata_t> > sc21MetadataTable_t;
-	sc21MetadataTable_t		m_sc21MetadataTable;
-	uvoxMetadata_t			m_sc21MetadataToPutInline;	// metadata that must be put inline asap
-
-	AOL_namespace::mutex	m_sc21StreamAlbumArtLock;
-	AOL_namespace::mutex	m_sc21PlayingAlbumArtLock;
-	typedef std::deque<std::pair<ringBufferAccess_t,uvoxMetadata_t> > sc21AlbumArtTable_t;
-	sc21AlbumArtTable_t		m_sc21StreamAlbumArtTable;
-	uvoxMetadata_t			m_sc21StreamAlbumArtToPutInline;	// albumart that must be put inline asap
-	sc21AlbumArtTable_t		m_sc21PlayingAlbumArtTable;
-	uvoxMetadata_t			m_sc21PlayingAlbumArtToPutInline;	// albumart that must be put inline asap
-	std::vector<__uint8>	m_sc21AlbumArtData[2];
-	size_t					m_sc21AlbumArtMime[2];
-#if 0
-	// limit triggers
-	AOL_namespace::mutex	m_sc1LimitTriggerLock;
-	std::set<pipeDrivenSignal<AOL_namespace::mutex>*> m_sc1LimitTriggers;
-
-	AOL_namespace::mutex	m_sc21LimitTriggerLock;
-	std::set<pipeDrivenSignal<AOL_namespace::mutex>*> m_sc21LimitTriggers;
-
-	static void _scheduleLimitTrigger(pipeDrivenSignal<AOL_namespace::mutex> *t, const ringBufferAccess_t readPtr,
-									  AOL_namespace::mutex &streamLock, const ringBuffer_t &ringBuffer,
-									  AOL_namespace::mutex &triggerSetLock,
-									  std::set<pipeDrivenSignal<AOL_namespace::mutex>*> &triggerSet) throw();
-#endif
-	void _setupBuffers(const uniString::utf8& logString, const bool re_init = false) throw();
-
-	const bool updateSourceSampleRate(unsigned int& samplerate, const unsigned int read_samplerate) throw();
-
-	void YP2_add() throw();
-	void _YP2_add() throw();
-	void YP2_remove() throw();
-	void _YP2_remove() throw();
-	void YP2_update() throw();
-
-	// you must remove this streamData object from the g_streamMap immediately before or after calling
-	// this, otherwise you'll corrupt the static structures.
-	// Reason: die will cause the streamData to be removed from g_streams, but since die() causes ID() to return zero,
-	// it will not get removed from g_streamMap
-	void die() throw();
-
-    parserInfo  *m_parser;
-
-public:
-	explicit streamData(const streamSetup& setup) throw(); // create shoutcast 1
-
-	void streamUpdate(const streamID_t ID, const uniString::utf8 &authHash, const int streamMaxUser,
-					  const int streamMaxBitrate, const int streamMinBitrate) throw();
-
-	~streamData() throw();
-
-	void sourceReconnect(const streamSetup& setup) throw(); // reconnect as shoutcast 1
-
-    static MP3_FrameInfo *detectMP3 (unsigned int &failureThresh,const unsigned char *buf, unsigned int len, unsigned chk);
-    int detectMP3 (MP3_FrameInfo *&parser, unsigned int &failureThresh,const unsigned char *buf, unsigned int len, unsigned chk);
-
-    static AAC_FrameInfo *detectAAC (unsigned int &failureThresh,const unsigned char *buf, unsigned int len, unsigned chk);
-    int detectAAC (parserInfo *&parser, unsigned int &failureThresh,const unsigned char *buf, unsigned int len, unsigned chk);
-
-    static int getFrameInfo (parserInfo *&parser, unsigned int &failureThresh,const unsigned char *buf, unsigned int len, unsigned chk = 6);
-
-	const bool syncToStream(short unsigned int& remainderSize, __uint8 *remainder,
-							int amt, int& bitrate, const int type, const char *buf,
-							const uniString::utf8& logString);
-
-	const bool isSourceCompatible(const streamSetup& setup) const throw(); // is this configuration compatible with the existing stream
-
-	static uniString::utf8 getHTML5Player(const size_t sid) throw();
-	static uniString::utf8 getStreamMessage(const size_t sid) throw();
-	static void updateStreamMessage(const size_t sid, const uniString::utf8& message) throw();
-
-	const streamID_t ID() const { return (m_dead ? 0 : m_ID); }
-	const time_t getStartTime() const { return m_startTime; }
-    const streamInfo &getInfo() const { return m_streamInfo; }
-	const uniString::utf8& streamName() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamName; }
-	const uniString::utf8& streamGenre() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamGenre[0]; }
-	const uniString::utf8& streamGenre2() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamGenre[1]; }
-	const uniString::utf8& streamGenre3() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamGenre[2]; }
-	const uniString::utf8& streamGenre4() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamGenre[3]; }
-	const uniString::utf8& streamGenre5() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamGenre[4]; }
-	const uniString::utf8& streamURL() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamURL; }
-	const uniString::utf8& radionomyID() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_radionomyID; }
-	const uniString::utf8& streamContentType() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_contentType; }
-	const int streamBitrate() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamBitrate; }
-	const bool streamPublic() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamPublic; }
-	const bool streamIsVBR() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_vbr; }
-	const bool allowPublicRelay() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_allowPublicRelay; }
-	const int streamSampleRate() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamSampleRate; }
-	const int streamAvgBitrate() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_avgBitrate; }
-	const int streamActualMaxBitrate() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_maxBitrate; }
-	const int streamUvoxDataType() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_uvoxDataType; }
-	const uniString::utf8& streamBackupServer() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_backupServer; }
-	const std::vector<uniString::utf8>& streamBackupServers() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_backupServersList; }
-	const uniString::utf8& streamPublicIP() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_publicIP; }
-	const uniString::utf8& streamAuthhash() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_authHash; }
-	const int streamMaxUser() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamMaxUser; }
-	const int streamMaxBitrate() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamMaxBitrate; }
-	const int streamMinBitrate() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_streamMinBitrate; }
-
-	const int streamAdvertMode() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_advertMode; }
-	const uniString::utf8& authUrl() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_authUrl; }
-	const uniString::utf8& advertsUrl() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_advertsUrl; }
-	const uniString::utf8& audienceUrl() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_audienceUrl; }
-	const uniString::utf8& tuneinAirApiUrl() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_tuneinAirApiUrl; }
-	const uniString::utf8& targetSpotUrl() const throw() { stackLock sml(m_stateLock); return m_streamInfo.m_targetSpotUrl; }
-
-	const std::vector<__uint8>& streamAlbumArt() const throw() { stackLock sml(m_stateLock); return m_sc21AlbumArtData[0]; }
-	const std::vector<__uint8>& streamPlayingAlbumArt() const throw() { stackLock sml(m_stateLock); return m_sc21AlbumArtData[1]; }
-
-	const size_t streamAlbumArtMime() const throw() { stackLock sml(m_stateLock); return m_sc21AlbumArtMime[0]; }
-	const size_t streamPlayingAlbumArtMime() const throw() { stackLock sml(m_stateLock); return m_sc21AlbumArtMime[1]; }
-
-	// streamSetMimeType is only used by uvox 2 since the determination must be delayed until the first data packet
-	void streamSetMimeType(const uniString::utf8 &mt) throw() { stackLock sml(m_stateLock); m_streamInfo.m_contentType = mt; }
-
-	static bool isRelayStream(const streamID_t id) throw();
-	static bool isBackupStream(const streamID_t id) throw();
-	const int isDead() const throw() { stackLock sml(m_stateLock); return m_dead; }
-	void setKill(int kill) throw() { stackLock sml(m_stateLock); m_kill = kill; }
-	const int isKill() const throw() { stackLock sml(m_stateLock); return m_kill; }
-
-	void updateSongHistorySize() throw();
-    void pushMetricsYP (bool force = true);
-
-	void updateSourceIdent(uniString::utf8& sourceIdent, const bool relay = false) throw();
-
-	// write data into ring buffers (sc1 and sc2)
-	#if defined(_DEBUG) || defined(DEBUG)
-	void writeSc1(const __uint8 *data, const int amt, const streamID_t id);
-	#else
-	void writeSc1(const __uint8 *data, const int amt);
-	#endif
-	void writeSc21(const std::vector<__uint8> &data) throw();	// data is exactly one uvox data packet or packet of uvox passthru metadata.
-																// passthru metadata is treated just like regular data, but we obviously
-																// can't pass it to the sc1 buffers since there is no analog for that in sc1
-
-	const int getStreamData(streamData::ringBufferAccess_t& amt, const streamData::ringBufferAccess_t& readPtr,
-							std::vector<__uint8>& data, const size_t remSize, const bool sc2 = false) throw(); /* for readers only */
-
-	// make sure streamData is not holding a reference to this.
-	void abandonLimitTrigger(pipeDrivenSignal<AOL_namespace::mutex> *t, const bool sc2 = false) throw();
-	void scheduleLimitTrigger(pipeDrivenSignal<AOL_namespace::mutex> *t, const ringBufferAccess_t readPtr, const bool sc2 = false) throw();
-
-	// add shoutcast1 metadata at current position. This is just the string
-	int addSc1MetadataAtCurrentPosition(const uniString::utf8& logString, const uniString::utf8& sc1_metadata_raw,
-										const uniString::utf8& sc1_url_raw, const uniString::utf8& sc1_next_raw) throw();
-	int addUvoxMetadataAtCurrentPosition(__uint16 voxMsgType,const std::vector<__uint8> &data) throw();
-
-	// get metadata that is appropriate for the indicated position
-	sc1MetadataAndExtensionInfo getSc1Metadata(const ringBufferAccess_t) throw();
-	uvoxMetadata_t getSc21Metadata(const ringBufferAccess_t) throw();
-	uvoxMetadata_t getSc21StreamAlbumArt(const ringBufferAccess_t) throw();
-	uvoxMetadata_t getSc21PlayingAlbumArt(const ringBufferAccess_t) throw();
-	// 
-	void clearCachedMetadata() throw(); // clear all metadata that is in caches
-	void clearCachedArtwork(const size_t index) throw(); // clears specific artwork
-	//
-	void resetAdvertTriggers(const uniString::utf8& m_updinfoSong);
-
-	// get good places for a client to start
-	const ringBufferAccess_t getClientStartPosition(const bool sc2 = false) throw();
-	ringBufferAccess_t getClientStartPosition(ringBufferAccess_t ptr, bool sc2) throw();
-
-	specialFileData& getIntroFile() throw() { return m_introFile; }
-	specialFileData& getBackupFile() throw() { return m_backupFile; }
-	specialFileData& getAdTestFile(const int num) throw()
-	{
-		switch (num)
-		{
-			case 1: return m_adTestFile2;
-			case 2: return m_adTestFile3;
-			case 3: return m_adTestFile4;
-			default: return m_adTestFile;
-		}
-	}
-
-	static int YP_SrvID(const streamID_t id) throw();
-	static int YP_StnID(const streamID_t id) throw();
-
-	void updateStreamUser(const uniString::utf8& streamUser);
-	void resetStreamAuthhash();
-
-	// get the current title (if there is one) for touches/updates/tunein air api/etc
-	uniString::utf8 getYPStreamTitle() throw();
-
-	void YP2_updateInfo(const yp2::stationInfo &info) throw();
-	bool YP2_addSuccessful(int &addFailIgnore, int &errorCode) throw();
-};
-
-// advert related
-
-class adGroupAccess
-{
-    friend class streamData::adGroups;
-    size_t              group;
-    int                 idx;
-    bool                m_sc2;  // use until the data buffer duplication is fixed
-    bool                m_grpChanged;
-	streamData::adGroup     *cached_ref;
-	streamData::adGroupQueue *m_groupQueue;
-
-    bool foundNextAdvert (const streamData::streamID_t sid, streamData::adGroups &groups, streamData::adGroup &g);
-	streamData::adGroup *getGroup(streamData::streamID_t sid, streamData::adGroups &groups, const bool testing);
-
-public:
-	size_t      offset;
-	size_t      total_processed;
-	time_t	    start_time;
-    unsigned            m_duration;
-
-	explicit adGroupAccess(bool sc2 = false, int id = 0) { group = id; m_sc2 = sc2; idx = 0; cached_ref = NULL; offset = 0; m_grpChanged = false; m_groupQueue = NULL; }
-
-    void setGroup (size_t id);
-    size_t getGroup() const   { return group; }
-	const bool inAdvertMode() const;
-
-	void changedGroup (streamData::adGroups &groups);
-	bool haveAdverts(const streamData::streamID_t sid, streamData::adGroups &groups, streamData::ringBufferAccess_t pos);
-	streamData::specialFileData *getAd(const streamData::streamID_t sid, streamData::adGroups &groups, const bool testing);
-	bool anotherAd(const streamData::streamID_t sid, streamData::adGroups &groups, const bool testing);
-	void stopAdRun(const streamData::streamID_t sid, streamData::adGroups &groups, const bool testing);
-    const streamData::adTrigger *getCurrentTrigger () const { return cached_ref ? cached_ref->m_trigger : NULL; }
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/threadedRunner.cpp b/Src/Plugins/DSP/sc_serv3/threadedRunner.cpp
deleted file mode 100644
index c2e5d94d..00000000
--- a/Src/Plugins/DSP/sc_serv3/threadedRunner.cpp
+++ /dev/null
@@ -1,1135 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <algorithm>
-#include "threadedRunner.h"
-#include <openssl/ssl.h>
-#include "global.h"
-#include "stl/stringUtils.h"
-#include "services/stdServiceImpl.h"
-#include "protocol_HTTPStyle.h"
-#include "protocol_HTTPSource.h"
-#include "protocol_shoutcastSource.h"
-#include "protocol_FlashPolicyServer.h"
-#include "protocol_uvox2Source.h"
-#include "uvox2Common.h"
-#include "banList.h"
-#include "ripList.h"
-#ifdef _MSC_VER
-#define MSG_DONTWAIT    0
-#else
-#include <netinet/tcp.h>
-#include <sys/resource.h>
-#ifndef EPOLLRDHUP
-#define EPOLLRDHUP 0x2000
-#endif
-#endif
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-#define LOGNAME "[THREADRUNNER] "
-#define DEBUG_LOG(...) do { if (gOptions.threadRunnerDebug()) DLOG(__VA_ARGS__); } while (0)
-
-#ifndef SSL_OP_NO_COMPRESSION
-#define SSL_OP_NO_COMPRESSION 0
-#endif
-
-// make standard string for logging address
-inline utf8 addrLogString(const utf8 &addr, const u_short port, const utf8 &xff) throw()
-{
-	const bool use_xff = (gOptions.useXFF() && !xff.empty());
-	return (use_xff ? xff : addr) + ":" + tos(port) + (use_xff ? " (xff)" : "");
-}
-
-// make standard string for logging src address
-utf8 srcAddrLogString(const utf8 &addr, const u_short port, const size_t sid) throw()
-{
-	return "[SRC " + addrLogString(addr, port) + (sid > 0 ? " sid=" + tos(sid) : "") + "] ";
-}
-// make standard string for loggin dst address
-utf8 dstAddrLogString(const utf8 &addr, const u_short port, const utf8 &xff, const size_t sid) throw()
-{
-	return "[DST " + addrLogString(addr, port, xff) + (sid > 0 ? " sid=" + tos(sid) : "") + "] ";
-}
-// make standard string for logging unknown address
-utf8 recvAddrLogString(const utf8 &addr, const u_short port) throw()
-{
-	return "[RECV " + addrLogString(addr, port) + "] ";
-}
-// make standard string for socket error
-string socketErrString(int err) throw() { return "err=" + socketOps::errMsg(err) + "(" + tos(err) + ")"; }
-
-static AOL_namespace::mutex sm_globalRunnerLock;
-static set<threadedRunner*> sm_runners;
-
-SSL_CTX *threadedRunner::m_sslCtx = NULL;
-AOL_namespace::mutex *threadedRunner::m_sslMutexes = NULL;
-
-static bool cmp(threadedRunner* a, threadedRunner* b) throw()
-{
-	return (a->sizeOfRunList() < b->sizeOfRunList());
-}
-
-bool threadedRunner::scheduleRunnable(runnable *r) throw()
-{
-	if (r)
-	{
-		stackLock sml(sm_globalRunnerLock);
-
-		// diagnostics. Print load
-		if (gOptions.threadRunnerDebug())
-		{
-			utf8 msg = LOGNAME;
-			for (set<threadedRunner*>::const_iterator i = sm_runners.begin(); i != sm_runners.end(); ++i)
-			{
-				msg += ((i == sm_runners.begin() ? "Thread " : ", thread ") + (*i)->threadNumber() + " amt=" + tos((*i)->sizeOfRunList()));
-			}
-			DEBUG_LOG(msg);
-		}
-
-		// find least busy
-		set<threadedRunner*>::const_iterator which = min_element(sm_runners.begin(), sm_runners.end(), cmp);
-		if ((which != sm_runners.end()) && (*which)->addRunnable(r))
-		{
-			return true;
-		}
-
-		// didn't work... schedule anywhere
-		DEBUG_LOG(LOGNAME "Schedule failure, trying any thread");
-		for (set<threadedRunner*>::const_iterator i = sm_runners.begin(); i != sm_runners.end(); ++i)
-		{
-			if ((*i)->addRunnable(r))
-			{
-				return true;
-			}
-		}
-	}
-	return false;
-}
-
-void threadedRunner::wakeup() throw()
-{
-	stackLock sml(sm_globalRunnerLock);
-
-	for (set<threadedRunner*>::const_iterator i = sm_runners.begin(); i != sm_runners.end(); ++i)
-	{
-		(*i)->wakeupRunnable();
-	}
-}
-
-uniString::utf8 threadedRunner::getRunnabledetails() throw()
-{
-	stackLock sml(sm_globalRunnerLock);
-
-	utf8 details;
-	for (set<threadedRunner*>::const_iterator i = sm_runners.begin(); i != sm_runners.end(); ++i)
-	{
-		details += (i != sm_runners.begin() ? "<br>" : (utf8)"") + "Thread #" +
-				   (*i)->threadNumber() + ": <b>" + tos((*i)->sizeOfRunList()) +
-				   "</b><div style=\"padding-left:1em;\">";
-
-		map<utf8, size_t> runners;
-		(*i)->enumRunnables(runners);
-		for (map<utf8, size_t>::const_iterator r = runners.begin(); r != runners.end(); ++r)
-		{
-			details += (r != runners.begin() ? "<br>" : "") + (*r).first + " - " + tos((*r).second);
-		}
-		details += "</div>";
-	}
-	return details;
-}
-
-threadedRunner::threadedRunner() throw() : m_stop(false), m_threadNumber((const short)(sm_runners.size() + 1))
-{
-	stackLock sml(sm_globalRunnerLock);
-	sm_runners.insert(this);
-}
-
-threadedRunner::~threadedRunner() throw()
-{
-	stackLock sml(sm_globalRunnerLock);
-	sm_runners.erase(this);
-}
-
-// main loop of thread
-const unsigned threadedRunner::operator()() throw()
-{
-    unsigned result = 1;
-
-    try
-    {
-        m_lock.lock();
-        while (!m_stop)
-        {
-            m_lock.unlock();
-
-            std::set<size_t> readSet, writeSet;
-            int timeout = -1;
-
-            // run everyone (as long as not scheduled) and get their status information, etc
-            set<runnable*>::const_iterator i = m_runList.begin();
-            while (i != m_runList.end())
-            {
-                runnable::timeSliceResult &tsr = (*i)->m_result;
-                __uint64 now = time_now_ms();
-
-                // if we're indicated as being scheduled then we
-                // need to skip doing anything else and look at
-                // checking if it's ok to process or not, etc
-                if (tsr.m_scheduleTime)
-                {
-                    if (now < tsr.m_scheduleTime)
-                    {
-                        int time_diff = (int)(tsr.m_scheduleTime - now);
-                        if (timeout == -1)
-                        {
-                            timeout = time_diff;
-                        }
-                        else
-                        {
-                            timeout = min(timeout, time_diff);
-                        }
-                        ++i;
-                        continue;
-                    }
-                    else
-                    {
-                        // we clear this as we're reached time
-                        // but not the rest as we want what was
-                        // set to now be used in the processing
-                        tsr.m_scheduleTime = 0;
-                    }
-                }
-
-                // make sure to reset otherwise it gets weird but
-                // we're only going to do this if we are able to
-                // run the runnable now (i.e. it's not scheduled)
-                tsr.reset(now);
-
-                bool exception_occured = false;
-                try
-                {
-                    (*i)->timeSlice();
-                }
-                catch (const exception &ex)
-                {
-                    exception_occured = true;
-                    utf8 what = ex.what();
-                    if (!what.empty())
-                    {
-                        ELOG(ex.what());
-                    }
-                }
-
-                if (tsr.m_done || exception_occured)
-                {
-                    set<runnable*>::const_iterator to_go = i;
-                    DEBUG_LOG(LOGNAME "Removing " + (*i)->name() + " [done: " + tos(tsr.m_done) + ", exception: " + tos(exception_occured) + "]");
-                    removeRunnable(*to_go);
-                    ++i;
-                    m_runList.erase (to_go);
-                    continue;
-                }
-                if (!tsr.m_runImmediately)
-                {
-                    if (!tsr.m_scheduleTime)
-                    {
-update_sets:
-                        if (tsr.m_readSet)
-                        {
-                            // filter out anything with an invalid socket
-                            if ((*i)->m_socket != socketOps::cINVALID_SOCKET)
-                            {
-                                readSet.insert(readSet.end(), (*i)->m_socket);
-                            }
-                            if (tsr.m_customSocket != socketOps::cINVALID_SOCKET)
-                            {
-                                readSet.insert(readSet.end(), tsr.m_customSocket);
-                            }
-                        }
-
-                        if (tsr.m_writeSet)
-                        {
-                            // filter out anything with an invalid socket
-                            if ((*i)->m_socket != socketOps::cINVALID_SOCKET)
-                            {
-                                writeSet.insert(writeSet.end(), (*i)->m_socket);
-                            }
-                            if (tsr.m_customSocket != socketOps::cINVALID_SOCKET)
-                            {
-                                writeSet.insert(writeSet.end(), tsr.m_customSocket);
-                            }
-                        }
-
-                        if (tsr.m_timeout != -1)
-                        {
-                            if (timeout == -1)
-                            {
-                                timeout = tsr.m_timeout;
-                            }
-                            else
-                            {
-                                timeout = min(timeout, tsr.m_timeout);
-                            }
-                        }
-                    }
-                    else
-                    {
-                        // if this is to be scheduled then we'll do a
-                        // quick check to see if we're already after
-                        // that time and if it isn't (which is how it
-                        // should be) then we'll abort, else allow it
-                        // and we get the time again to account for
-                        // the time it's taken to process the runnable
-                        now = time_now_ms();
-                        if (now < tsr.m_scheduleTime)
-                        {
-                            int time_diff = (int)(tsr.m_scheduleTime - now);
-                            if (timeout == -1)
-                            {
-                                timeout = time_diff;
-                            }
-                            else
-                            {
-                                timeout = min(timeout, time_diff);
-                            }
-                        }
-                        else
-                        {
-                            // we clear this as we're reached time
-                            // but not the rest as we want what was
-                            // set to now be used in the processing
-                            tsr.m_scheduleTime = 0;
-                            timeout = 50;
-                            goto update_sets;
-                        }
-                    }
-                    ++i;
-                }
-            } // for
-
-            // delete the old guys, no lock required here, only we add to this set
-            int released = 0;
-            while (true)
-            {
-                set<runnable*>::const_iterator it = m_runnablesToRemove.begin();
-                if (it == m_runnablesToRemove.end())
-                    break;
-                if (++released > 300)
-                {
-                    timeout &= 15;   // prevent a large stall but force a quick retry
-                    break;
-                }
-                stlx::delete_fntr<runnable> (*it);
-                m_runnablesToRemove.erase (it);
-            }
-
-            readSet.insert (m_signal.test());
-            if (timeout < 0)
-                timeout = 60000;
-            int n = socketOps::socketSelect(readSet, writeSet, timeout);
-
-            m_lock.lock();
-
-            // add the new guys, requires lock as set can be added from elsewhere
-            m_runList.insert(m_runnablesToAdd.begin(), m_runnablesToAdd.end());
-            m_runnablesToAdd.clear();
-
-            if (n > 0)
-                m_signal.clear();
-        }
-        m_lock.unlock();
-        result = 0;
-    }
-    catch (const exception &ex)
-    {
-        ELOG(LOGNAME  + string(ex.what()));
-    }
-    catch (...)
-    {
-        ELOG(LOGNAME "Unknown exception");
-    }
-
-    // delete runnables in run list, and those that are queued to be added
-    m_lock.lock();
-    for_each(m_runnablesToAdd.begin(), m_runnablesToAdd.end(), stlx::delete_fntr<runnable>);
-    m_lock.unlock();
-
-    for_each(m_runList.begin(), m_runList.end(), stlx::delete_fntr<runnable>);
-
-    return result;
-}
-
-const size_t threadedRunner::sizeOfRunList() throw()
-{
-    stackLock sml(m_lock);
-    const size_t result = (m_runList.size() + m_runnablesToAdd.size());
-    const size_t subtr = m_runnablesToRemove.size();
-    return (subtr > result ? 0 : result - subtr);
-}
-
-const bool threadedRunner::addRunnable(runnable* r) throw()
-{
-	if (!r)
-	{
-		return false;
-	}
-
-	stackLock sml(m_lock);
-	if (m_stop)
-	{
-		return false;
-	}
-
-	m_runnablesToAdd.insert(r);
-	m_signal.set();
-	DEBUG_LOG(LOGNAME "Adding " + r->name() + " to thread " + tos(m_threadNumber));
-
-	return true;
-}
-
-const bool threadedRunner::removeRunnable(runnable *r) throw()
-{
-	if (!r)
-	{
-		return false;
-	}
-
-	m_runnablesToRemove.insert(r);
-	m_signal.set();
-	DEBUG_LOG(LOGNAME "Removing " + r->name() + " from thread " + tos(m_threadNumber));
-	return true;
-}
-
-void threadedRunner::enumRunnables(map<utf8, size_t>& runners) throw()
-{
-	stackLock sml(m_lock);
-
-	for (set<runnable*>::const_iterator i = m_runList.begin(); i != m_runList.end(); ++i)
-	{
-		const utf8::size_type pos = (*i)->name().find((utf8)"protocol_");
-		if (pos != utf8::npos)
-		{
-			++runners[(*i)->name().substr(pos + 9, (*i)->name().length())];
-		}
-		else
-		{
-			++runners[(*i)->name()];
-		}
-	}
-}
-
-void threadedRunner::wakeupRunnable() throw()
-{
-	if (m_lock.timedLock(1000))
-	{
-		m_signal.set();
-		m_lock.unlock();
-	}
-}
-
-void threadedRunner::stop() throw()
-{
-	stackLock sml(m_lock);
-	m_stop = true;
-	m_signal.set();
-}
-
-///////////////////////////
-#ifdef LOGNAME
-#undef LOGNAME
-#endif
-#define LOGNAME "[MICROSERVER] "
-
-#ifdef DEBUG_LOG
-#undef DEBUG_LOG
-#endif
-#define DEBUG_LOG(x) { if (gOptions.microServerDebug()) DLOG((x)); }
-
-microServer::microServer(const string &listenAddr, const u_short listenPort,
-						 const AllowableProtocols_t protocols,
-						 const ListenTypes_t types) throw(exception)
-	: m_protocols(protocols)
-{
-	try
-	{
-		m_socket = socketOps::createTCPSocketTHROW();
-		#ifndef _WIN32
-		{
-			int bflag = 1;
-			setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, &bflag, sizeof(bflag));
-			#if (defined PLATFORM_LINUX || defined PLATFORM_ARMv6 || defined PLATFORM_ARMv7)
-			int wait = 1;
-			setsockopt(m_socket, IPPROTO_TCP, TCP_DEFER_ACCEPT, &wait, sizeof(wait));
-			#endif
-			#ifdef PLATFORM_BSD
-			struct accept_filter_arg af = {"dataready", ""};
-			setsockopt(m_socket, SOL_SOCKET, SO_ACCEPTFILTER, &af, sizeof(af));
-			#endif
-		}
-		#endif
-		socketOps::bindTHROW(m_socket, listenPort, listenAddr);
-		socketOps::listenTHROW(m_socket);
-		socketOps::setNonblockTHROW(m_socket, true);
-
-		bindMessage(types, listenPort);
-	}
-	catch (const exception &ex)
-	{
-		socketOps::forgetTCPSocket(m_socket);
-		string error = ex.what();
-		throw runtime_error(LOGNAME "Error opening port " + tos(listenPort) + " because " + toLower(error));
-	}
-}
-
-void microServer::bindMessage(const ListenTypes_t types, const u_short listenPort) throw()
-{
-	string message = "Listening for connections on port ";
-
-	if ((types & microServer::L_SOURCE) && (types & microServer::L_CLIENT))
-	{
-		message = "Listening for source and client connections on port ";
-	}
-	else if ((types & microServer::L_FLASH))
-	{
-		message = "Listening for flash policy server connection on port ";
-	}
-	else if ((types & microServer::L_SOURCE))
-	{
-		message = "Listening for legacy source connections on port ";
-	}
-	else if ((types & microServer::L_SOURCE2))
-	{
-		message = "Listening for source connections on port ";
-	}
-	else if ((types & microServer::L_CLIENT_ALT))
-	{
-		message = "Listening for client connections on alternate port ";
-	}
-	else if ((types & microServer::L_CLIENT))
-	{
-		message = "Listening for client connections on port ";
-	}
-	ILOG(LOGNAME + message + tos(listenPort));
-}
-
-void microServer::updateProtocols(AllowableProtocols_t protocols, ListenTypes_t types, const u_short listenPort) throw()
-{
-	m_protocols = protocols;
-	bindMessage(types, listenPort);
-}
-
-microServer::~microServer() throw()
-{
-	string addr;
-	u_short port = 0;
-	socketOps::getsockname(m_socket, addr, port);
-	socketOps::forgetTCPSocket(m_socket);
-	if (!iskilled())
-	{
-		ELOG(LOGNAME "Unexpected stop detected for listening for connections on port " + tos(port));
-		ELOG(LOGNAME "This should not happen and prevents the DNAS from working correctly.");
-		ELOG(LOGNAME "DNAS restart is required. If this keeps happening, enable all debugging options and provide the logs to Shoutcast support.");
-	}
-	else
-	{
-		DEBUG_LOG(LOGNAME "Stopped listening for connections on port " + tos(port));
-	}
-}
-
-void microServer::timeSlice() throw(exception)
-{
-	static int repeated = 0;
-
-	// don't allow any new connections when the server is stopping
-	if (!iskilled())
-	{
-		try
-		{
-			string addr;
-			u_short port = 0;
-
-			socketOps::tSOCKET newSock = socketOps::acceptTHROW(m_socket, addr, port, true);
-			if (newSock != socketOps::cSOCKET_ERROR)
-			{
-				socketOps::getpeername(newSock, addr, port);
-
-				string hostName = addr;
-				if (gOptions.nameLookups())
-				{
-					if (socketOps::addressToHostName(addr, port, hostName))
-					{
-						hostName = addr;
-					}
-				}
-
-				socketOps::setNonblockTHROW(newSock, true);
-				DEBUG_LOG(LOGNAME "Connection received from " + addr + ":" + tos(port));
-				threadedRunner::scheduleRunnable(new microConnection(newSock, hostName, addr, port, m_protocols));
-				repeated = 0;
-			}
-		}
-		catch (const tagged_error &ex)
-		{
-			ELOG(ex.what());
-		}
-		catch (const exception &ex)
-		{
-			string msg = ex.what();
-			if (!msg.empty())
-			{
-				if (msg.find("Could not call") == 0)
-				{
-					// serious error, log unless repeated and delay a retry
-					if ((repeated & 255) == 0)
-						ELOG(LOGNAME + msg);
-					++repeated;
-					m_result.schedule (1000);
-					return;
-				}
-				ELOG(LOGNAME + msg);
-			}
-		}
-
-		m_result.read();
-		return;
-	}
-
-	m_result.done();
-}
-
-///////////////////////////////////////////////////
-microConnection::microConnection(const socketOps::tSOCKET s, const string &hostName, const string &addr,
-								 const u_short port, const microServer::AllowableProtocols_t protocols) throw()
-	: runnable(s), m_srcHostName(hostName),
-	  m_srcAddress(addr), m_srcPort(port),
-	  m_protocols(protocols)
-{
-}
-
-microConnection::~microConnection() throw()
-{
-	socketOps::forgetTCPSocket(m_socket);
-}
-
-void microConnection::timeSlice() throw(exception)
-{
-	time_t cur_time;
-	const int autoDumpTime = ::detectAutoDumpTimeout(cur_time, m_lastActivityTime, (recvAddrLogString(m_srcAddress, m_srcPort) +
-												   "Got timeout waiting for data"), gOptions.microServerDebug());
-
-	const int maxHeaderLineSize = gOptions.maxHeaderLineSize();
-	const bool flash_policy = !!(m_protocols & P_FLASHPOLICYFILE);
-	bool uvox_checked = false;
-    runnable *runnable = NULL;
-
-	char buf[MAX_MESSAGE_SIZE] = {0};
-	// if we've got a 1.x source connection then only handle
-	// on a per-byte basis, for everything else, try getting
-	// a few bytes so we can use that as a guide on how then
-	// to try to process things a bit quicker than per-byte.
-    // int amt = (!(m_protocols & P_SHOUTCAST1SOURCE) ? UV2X_HDR_SIZE : 1);
-    int amt = (m_ssl) ? 1 : 4096;
-    ssize_t  rval = 0;
-
-	while (true)
-	{
-		if (iskilled() || (size_t)amt > sizeof(buf))
-		{
-			m_result.done();
-			return;
-		}
-
-        int flags = (m_lineBuffer.size() || m_ssl) ? 0 : MSG_PEEK;  // use PEEK initially as SSL requires bytes in the socket
-        if ((rval = recv (buf, amt, flags|MSG_DONTWAIT)) < 1)
-		{
-			if (rval == 0)
-			{
-				throwEx<runtime_error>((gOptions.microServerDebug() ? (recvAddrLogString(m_srcAddress, m_srcPort) +
-									   "Remote socket closed while waiting for data.") : (utf8)""));
-			}
-			else if (rval < 0)
-			{
-				rval = socketOps::errCode();
-				if (rval != SOCKETOPS_WOULDBLOCK)
-				{
-					throwEx<runtime_error>((gOptions.microServerDebug() ? (recvAddrLogString(m_srcAddress, m_srcPort) +
-										   "Socket error while waiting for data. " + socketErrString(rval)) : (utf8)""));
-				}
-
-				m_result.schedule();
-				m_result.read();
-				m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-				return;
-			}
-		}
-
-		m_lineBuffer.insert (m_lineBuffer.end(), buf, buf + rval);
-		int lineSize = (int)m_lineBuffer.size();
-
-        if (lineSize > maxHeaderLineSize)
-        {
-            throwEx<runtime_error>((gOptions.microServerDebug() ? (recvAddrLogString(m_srcAddress, m_srcPort) +
-                            "Protocol header line is too large - exceeds " + tos(maxHeaderLineSize) +
-                            " bytes") : (utf8)""));
-        }
-        if (m_ssl == NULL && flags && (m_lineBuffer [0] == 0x16)) // SSLv3 / TLSv1.x ?
-        {
-            if (threadedRunner::m_sslCtx == NULL)
-            {
-                throwEx<runtime_error>((gOptions.microServerDebug() ? (recvAddrLogString(m_srcAddress, m_srcPort) +
-                                       "Remote socket closed, no SSL configured.") : (utf8)""));
-            }
-            if (lineSize < 6)
-            {
-				m_result.schedule();
-				m_result.read();
-				m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-				return;
-            }
-            if ((m_lineBuffer [1] == 0x3) && (m_lineBuffer [5] == 0x1))
-            {
-                DLOG ("detected ssl request, checking further");
-                m_ssl = SSL_new (threadedRunner::m_sslCtx);
-                SSL_set_accept_state (m_ssl);
-                SSL_set_fd (m_ssl, (int)m_socket);
-                SSL_set_mode (m_ssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER|SSL_MODE_ENABLE_PARTIAL_WRITE);
-                m_lineBuffer.clear();
-                continue;
-            }
-        }
-        utf8::size_type nl = m_lineBuffer.find ((unsigned char)'\n');
-        if (nl != utf8::npos)
-        {
-            rval = lineSize = (int)nl+1; // 0 offset
-            if (flags) m_lineBuffer.erase (lineSize); // truncate line to maintain parsing
-        }
-
-        if (flags)
-            ::recv (m_socket, buf, rval, MSG_DONTWAIT); // pull bytes from input, passed any PEEK requirement
-
-        if ((lineSize > 0) && (lineSize < UV2X_HDR_SIZE) && (m_lineBuffer [lineSize - 1] != '\n'))
-        {
-			if (m_lineBuffer[0] == UVOX2_SYNC_BYTE)
-			{
-				// if it looks like it might be a uvox
-				// frame then grab more on the next go
-				amt = 3;
-			}
-			else
-			{
-				// no point in doing any of the checks
-				// if there is not enough data to view
-				// e.g. we need to see a valid newline
-				amt = 1;
-			}
-
-			m_lastActivityTime = ::time(NULL);
-			continue;
-		}
-        if ((lineSize >= UV2X_HDR_SIZE) && (uvox_checked == false))
-		{
-			// look at first uvox packet to see if we're running uvox 2 or uvox 2.1
-			// NOTE: This is a protocol change. We need to add a new packet to 2.1 so request cipher key
-			const uv2xHdr *voxhdr = reinterpret_cast<const uv2xHdr*>(m_lineBuffer.c_str());
-			if ((voxhdr->sync == UVOX2_SYNC_BYTE) &&
-				(ntohs(voxhdr->msgType) == (u_short)MSG_CIPHER))
-			{
-				const int wanted = (ntohs(voxhdr->msgLen) + UV2X_OVERHEAD);
-				if (wanted == lineSize)
-				{
-                    // we have uvox 2.1
-                    if (m_protocols & P_SHOUTCAST2SOURCE) // only if allowed
-                    {
-                        runnable = new protocol_uvox2Source (*this, (const __uint8 *)m_lineBuffer.c_str(), lineSize);
-                    }
-                    break;
-				}
-                amt = min(MAX_MESSAGE_SIZE, (wanted - lineSize));
-                m_lastActivityTime = ::time(NULL);
-                continue;
-            }
-            // if we've got enough and there's no sync
-            // byte then there's not point to re-check.
-            uvox_checked = true;
-        }
-
-		if ((lineSize > 0) && (m_lineBuffer[lineSize - 1] == '\n'))
-		{
-			// look at start of line, if it's a GET or POST or some standard HTTP thing, then we
-			// have either a web request or a client connection request. If that is missing, then
-			// we have to assume it's a shoutcast source, and we have just received the password.
-			//
-			// this should be enough to detect absolute and relative requests made to the server
-			// if there's no / for absolute paths then we'll reject the request as a bad access.
-			if ((m_lineBuffer.find((utf8)"GET /") == 0) ||
-				(m_lineBuffer.find((utf8)"GET h") == 0) ||
-				(m_lineBuffer.find((utf8)"POST /") == 0) ||
-				(m_lineBuffer.find((utf8)"POST h") == 0) ||
-				(m_lineBuffer.find((utf8)"HEAD /") == 0) ||
-				(m_lineBuffer.find((utf8)"HEAD h") == 0))
-			{
-				if (m_protocols & (P_SHOUTCAST1CLIENT |
-								   P_SHOUTCAST2CLIENT |
-								   P_WEB | P_WEB_SETUP))
-				{
-					runnable = new protocol_HTTPStyle (*this, stripWhitespace(m_lineBuffer).hideAsString());
-				}
-                break;
-			}
-			else // assume shoutcast source, and this is the password (though do some checks to sanitise)
-			{
-				// and now look for invalid HTTP requests and
-				// reject them as the earlier handling should
-				// allow valid relative and absolute requests
-				if (lineSize > 5)
-				{
-					if ((m_lineBuffer.find((utf8)"GET ") == 0) ||
-						(m_lineBuffer.find((utf8)"POST ") == 0) ||
-						(m_lineBuffer.find((utf8)"SOURCE ") == 0) ||
-						(m_lineBuffer.find((utf8)"PUT ") == 0) ||
-						(m_lineBuffer.find((utf8)"HEAD ") == 0))
-					{
-						throwEx<runtime_error>((gOptions.microServerDebug() ? (recvAddrLogString(m_srcAddress, m_srcPort) +
-											   "Invalid HTTP request detected - only valid relative and absolute paths are allowed.") : (utf8)""));
-					}
-				}
-
-				// if we appear to have a 'PUT' or 'SOURCE' request then we'll need to
-				// do some different handling in-order to get the correct details before
-				// we can then actually process the stream as a valid (icecast?) source
-				if (((m_lineBuffer.find((utf8)"SOURCE ") == 0) ||
-					 (m_lineBuffer.find((utf8)"PUT ") == 0)) &&
-					((m_lineBuffer.find((utf8)"HTTP/1.") != utf8::npos) ||
-					 (m_lineBuffer.find((utf8)"ICE/1.") != utf8::npos)))
-                {
-                    runnable = new protocol_HTTPSource (*this, stripWhitespace(m_lineBuffer).hideAsString());
-                }
-                else
-                {
-                    runnable = new protocol_shoutcastSource (*this, stripWhitespace(m_lineBuffer));
-                }
-            }
-            break;
-		}
-		if (flash_policy && (m_lineBuffer.find((utf8)"<policy-file-request/>") == 0))
-		{
-			runnable = new protocol_FlashPolicyServer (m_socket, dstAddrLogString(m_srcHostName, m_srcPort));
-            break;
-        }
-        amt = 1;
-        m_lastActivityTime = ::time(NULL);
-    } // while
-
-    if (runnable)
-    {
-        threadedRunner::scheduleRunnable (runnable);
-    }
-    m_result.done();
-    return;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
-// return 0 if line is ready, or a timeout in seconds for next select call if we are still waiting
-// lineBuffer and lastActivityTime are updated by this call
-const bool runnable::getHTTPStyleHeaderLine(const size_t sid, utf8 &lineBuffer, const utf8 &logMsgPrefix, int maxLineLength) throw(exception)
-{
-	time_t cur_time;
-        const int autoDumpTime = ::detectAutoDumpTimeout (cur_time, m_lastActivityTime,
-                (logMsgPrefix + "Timeout waiting for data"), gOptions.microServerDebug(), sid);
-
-        const int maxHeaderLineSize = maxLineLength > 0 ? maxLineLength : gOptions.maxHeaderLineSize();
-        int count = 0;
-        bool ret = true;
-
-        while (true) 
-        {
-            int rval = 0;
-            char buf[2] = {0};
-            if ((rval = recv(buf, 1, 0x0)) < 1)
-            {
-                if (rval == 0)
-                {
-                    if (gOptions.microServerDebug())
-                        ELOG (logMsgPrefix + "Remote socket closed while waiting for data.", LOGNAME, sid);
-                    throwEx<runtime_error>((utf8)"");
-                }
-                rval = socketOps::errCode();
-                if (rval != SOCKETOPS_WOULDBLOCK)
-                {
-                    if (gOptions.microServerDebug())
-                        ELOG (logMsgPrefix + "Socket error while waiting for data. " + socketErrString(rval), LOGNAME, sid);
-                    throwEx<runtime_error>((utf8)"");
-                }
-
-                // if we've read something then it's likely to be from a POST response
-                if (lineBuffer.empty() == false)
-                {
-                    ret = false;
-                    if (count) break;
-                }
-
-                // try again but wait a bit
-                // so we don't overload it.
-                m_result.schedule(30);
-                m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-                return false;
-            }
-            ++count;
-
-            lineBuffer.insert (lineBuffer.end(), buf, buf + rval);
-
-            const int lineSize = (int)lineBuffer.size();
-            if (lineSize == maxLineLength) break;
-            if (lineSize > maxHeaderLineSize)
-            {
-                ELOG (logMsgPrefix + "Protocol header line is too large - exceeds "
-                        + tos(maxHeaderLineSize) + " bytes", LOGNAME, sid);
-                throwEx<runtime_error> ((utf8)"");
-            }
-            if ((lineSize > 0) && lineBuffer [lineSize - 1] == '\n')
-            {
-                break;
-            }
-        }
-        m_result.run();
-        m_lastActivityTime = ::time(NULL);
-        return ret;
-}
-
-// send a hunk of data out a socket - returns true if send is complete,
-// outBuffer and outBufferSize should be initially set to point to the
-// data and the size of the data - these values are moved and updated.
-const bool runnable::sendDataBuffer(const size_t sid, const uniString::utf8::value_type *&outBuffer,
-									int &outBufferSize, const uniString::utf8 &logMsgPrefix) throw(std::exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(logMsgPrefix + __FUNCTION__ + " " + tos(outBufferSize));
-#endif
-
-	if (outBufferSize > 0) // done
-	{
-		time_t cur_time;
-		const int autoDumpTime = ::detectAutoDumpTimeout(cur_time, m_lastActivityTime,
-													   (logMsgPrefix + "Timeout waiting to send data"),
-													   gOptions.microServerDebug(), sid);
-
-			int rval = send ((const char *)outBuffer, outBufferSize, 0);
-			if (rval == 0)
-			{
-				throwEx<std::runtime_error>((gOptions.microServerDebug() ? (logMsgPrefix +
-											"Remote socket closed while sending data") :
-											(uniString::utf8)""));
-			}
-			else if (rval < 0)
-			{
-				rval = socketOps::errCode();
-				if (rval != SOCKETOPS_WOULDBLOCK)
-				{
-					throwEx<std::runtime_error>((gOptions.microServerDebug() ? (((
-												  #ifdef _WIN32
-												  rval == WSAECONNABORTED || rval == WSAECONNRESET
-												  #else
-												  rval == ECONNABORTED || rval == ECONNRESET || rval == EPIPE
-												  #endif
-												  ) ? (uniString::utf8)"" : logMsgPrefix +
-												  "Socket error while waiting to send data. " +
-												  socketErrString(rval))) : (uniString::utf8)""));
-				}
-
-				// try again but wait a bit
-				// so we don't overload it.
-				m_result.schedule();
-				m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-				return false;
-			}
-
-			// move pointers
-			outBufferSize -= rval;
-			outBuffer += rval;
-
-			// update time
-			m_lastActivityTime = ::time(NULL);
-			m_result.timeout((autoDumpTime - (int)(cur_time - m_lastActivityTime)));
-
-			if (outBufferSize == 0) // done
-			{
-				m_result.schedule();
-				return true;
-			}
-			m_result.schedule (160);
-			return false;
-	}
-
-	m_result.write();
-	m_result.schedule();
-	m_result.timeoutSID(sid);
-	return true;
-}
-
-
-runnable::runnable (runnable &r) throw()
-{
-    m_socket = r.m_socket;
-    m_ssl = r.m_ssl;
-    m_lastActivityTime = ::time (NULL);
-    // the following are handed off to this sub-protocol, so make sure they cannot affect them
-    r.m_socket = socketOps::cINVALID_SOCKET;
-    r.m_ssl = NULL;
-}
-
-
-ssize_t runnable::recv (void *buf, size_t len, int flags)
-{
-    if (m_ssl)
-    {
-        ssize_t bytes = SSL_read (m_ssl, buf, len);
-        int code = SSL_get_error (m_ssl, bytes);
-        // char err[128];
-
-        switch (code)
-        {
-            case SSL_ERROR_NONE:
-            case SSL_ERROR_ZERO_RETURN:
-                break;
-            case SSL_ERROR_WANT_READ:
-            case SSL_ERROR_WANT_WRITE:
-                return -1;
-            default:
-                bytes = 0;
-        }
-        return bytes;
-    }
-    return (ssize_t)::recv (m_socket, (char*)buf, len, flags);
-}
-
-
-ssize_t runnable::send(const void *buf, size_t len, int flags)
-{
-    if (m_ssl)
-    {
-        ssize_t bytes = SSL_write (m_ssl, buf, len);
-        int code = SSL_get_error (m_ssl, bytes);
-        // char err[128];
-
-        switch (code)
-        {
-            case SSL_ERROR_NONE:
-            case SSL_ERROR_ZERO_RETURN:
-                break;
-            case SSL_ERROR_WANT_READ:
-            case SSL_ERROR_WANT_WRITE:
-                return -1;
-            default:
-                return -1;
-        }
-        return bytes;
-    }
-    return (ssize_t)::send(m_socket, (char*)buf, len, flags);
-}
-
-// This pick the dump time for sources, as there is no general class for that yet, unlike listeners
-int runnable::detectAutoDumpTimeout (time_t &cur_time, const size_t streamID, const utf8 &msg) throw(runtime_error)
-{
-    const int autoDumpTime = gOptions.stream_autoDumpSourceTime(streamID);
-
-    cur_time = ::time(NULL);
-    if ((autoDumpTime > 0) && ((cur_time - m_lastActivityTime) >= autoDumpTime))
-    {
-        WLOG (msg, LOGNAME, streamID);
-        throwEx<runtime_error>("");
-    }
-    return autoDumpTime;
-}
-
-
-unsigned long threadedRunner::SSL_idFunction (void)
-{
-    return threadedRunner::getCurrentThreadID();
-}
-
-void threadedRunner::SSL_lockingFunction (int mode, int n, const char * /*file*/, int /*line*/)
-{
-    if (mode & CRYPTO_LOCK)
-        m_sslMutexes[n].lock();
-    else
-        m_sslMutexes[n].unlock();
-}
-
-
-void threadedRunner::SSL_shutdown ()
-{
-#if !defined(WIN32) && OPENSSL_VERSION_NUMBER < 0x10000000
-    CRYPTO_set_id_callback (NULL);
-#endif
-    CRYPTO_set_locking_callback (NULL);
-    if (m_sslCtx)
-    {
-        ::SSL_CTX_free (m_sslCtx);
-        m_sslCtx = NULL;
-    }
-    if (m_sslMutexes)
-        delete [] m_sslMutexes;
-    m_sslMutexes = NULL;
-}
-
-void threadedRunner::SSL_init ()
-{
-    SSL_load_error_strings();
-    SSL_library_init ();
-    utf8 cert_file = gOptions.sslCertificateFile();
-    utf8 key_file = gOptions.sslCertificateKeyFile();
-
-    do {
-        if (cert_file == "") break;
-
-        CRYPTO_set_id_callback (&threadedRunner::SSL_idFunction);
-#if !defined(WIN32) && OPENSSL_VERSION_NUMBER < 0x10000000
-        CRYPTO_set_locking_callback (&threadedRunner::SSL_lockingFunction);
-#endif
-
-        m_sslMutexes = new AOL_namespace::mutex [CRYPTO_num_locks()];
-        if (m_sslMutexes == NULL)
-            break;
-
-        m_sslCtx = ::SSL_CTX_new (::SSLv23_server_method());
-
-        long ssl_opts = ::SSL_CTX_get_options (m_sslCtx);
-        ::SSL_CTX_set_options (m_sslCtx, ssl_opts|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_COMPRESSION);
-
-        if (::SSL_CTX_use_certificate_chain_file (m_sslCtx, (char*)cert_file.c_str()) <= 0)
-        {
-            WLOG ("[MAIN] Invalid certificate file " + cert_file);
-            break;
-        }
-
-        utf8 &pkfile = key_file.empty() ? cert_file : key_file;
-        if (::SSL_CTX_use_PrivateKey_file (m_sslCtx, (char*)pkfile.c_str(), SSL_FILETYPE_PEM) <= 0)
-        {
-            WLOG ("[MAIN] Invalid private key file " + pkfile);
-            break;
-        }
-        if (! SSL_CTX_check_private_key (m_sslCtx))
-        {
-            WLOG ("[MAIN] Invalid, private key does not match public key, " + pkfile);
-            break;
-        }
-        ILOG ("[MAIN] SSL keys installed");
-        return;
-
-    } while (0);
-    if (m_sslCtx)
-    {
-        WLOG ("[MAIN] failed to set up SSL, " + utf8(::ERR_reason_error_string (::ERR_peek_last_error())));
-        ::SSL_CTX_free (m_sslCtx);
-        m_sslCtx = NULL;
-    }
-    CRYPTO_set_id_callback (NULL);
-    CRYPTO_set_locking_callback (NULL);
-    if (m_sslMutexes)
-        delete [] m_sslMutexes;
-    m_sslMutexes = NULL;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/threadedRunner.h b/Src/Plugins/DSP/sc_serv3/threadedRunner.h
deleted file mode 100644
index 155b8983..00000000
--- a/Src/Plugins/DSP/sc_serv3/threadedRunner.h
+++ /dev/null
@@ -1,428 +0,0 @@
-#pragma once
-#ifndef threadedRunner_H_
-#define threadedRunner_H_
-
-#include "openssl/ssl.h"
-#include "openssl/err.h"
-#include "threading/thread.h"
-#include "webNet/socketOps.h"
-#include "unicode/uniString.h"
-#include "stl/stringUtils.h"
-#include <set>
-#include <queue>
-#include <map>
-#include <stdexcept>
-#include "global.h"
-
-#ifdef _MSC_VER
-#define ssize_t int
-#endif
-/*
-
-threadedRunner - (and everything that is related to it).
-
-Based my work on the webNet module and the microServer class (in sc_trans), it
-seems to me that there is a generic model that underlies all of this. At the top level
-is a thread which manages a pool of objects (runnables). These runnables offer up
-sets of sockets which the threadRunner incorporates into a select() call. When the select
-exists, the runnables associated with the sockets are called.
-
-This makes good sense for a server like senario, where you have connections that must
-wait for read/write ability on a socket. This can, however, be extended to any object
-that must wait for something. Using a pipe, you can simulate wait events that can also
-offer up a socket like object. You can then create an object that fits this model that
-is waiting for messages or some other type of signal.
-
-*/
-
-// class that has a mutex's interface but does nothing
-class nullLock { public: static void lock() throw(){} static void unlock() throw(){}};
-
-// implements a signal based on a pipe. Access to set/clear should be locked,
-// but since this class is usually included in another class that already has a lock, we
-// make the lock optional by templatizing it. Pass AOL_namespace::mutex as the LOCKABLE parameter
-// if you want locking, otherwise pass nullLock.
-#pragma pack(push, 1)
-template<typename LOCKABLE>
-class pipeDrivenSignal
-{
-private:
-	int					m_signalPipe[3];
-	LOCKABLE			m_lock;
-
-public:
-	pipeDrivenSignal() throw(std::exception)
-	{
-		m_signalPipe[0] = -1;
-		m_signalPipe[1] = -1;
-		m_signalPipe[2] = 0;
-		if (pgpipe(m_signalPipe))
-		{
-			if (socketOps::errCode())
-			{
-				#ifdef _WIN32
-				throw std::runtime_error("[MICROSERVER] Could not create signal pipe "
-										 "[Too many file handles have been opened, "
-										 "code: " + stringUtil::tos(socketOps::errCode()) +
-										 " - reason: " + socketOps::errMsg() + "]");
-				#else
-				throw std::runtime_error("[MICROSERVER] Could not create signal pipe "
-										 "[Increase the open files (ulimit -n) limit, "
-										 "code: " + stringUtil::tos(socketOps::errCode()) +
-										 " - reason: " + socketOps::errMsg() + "]");
-				#endif
-			}
-			else
-			{
-				throw std::runtime_error("");
-			}
-		}
-	        socketOps::setNonblock (m_signalPipe[0], true);
-	        socketOps::setNonblock (m_signalPipe[1], true);
-	}
-
-	~pipeDrivenSignal() throw()
-	{
-		if (m_signalPipe[0] != -1)
-		{
-			pipeclose(m_signalPipe[0]);
-			m_signalPipe[0] = -1;
-		}
-
-		if (m_signalPipe[1] != -1)
-		{
-			pipeclose(m_signalPipe[1]);
-			m_signalPipe[1] = -1;
-		}
-
-		m_signalPipe[2] = 0;
-	}
-
-	// set the signal
-	void set() throw()
-	{
-		if (m_signalPipe[1] != -1)
-		{
-			static char buf[2] = {19, 64}; // any data will do
-			pipewrite(m_signalPipe[1], buf, 1);
-		}
-	}
-
-	// clear the signal
-	void clear() throw()
-	{
-		if (m_signalPipe[0] != -1)
-		{
-			// clear pipe
-			char buf[35];
-			piperead(m_signalPipe[0], buf, sizeof(buf));
-		}
-	}
-
-	// return file descriptor to test with select(). This is a read descriptor
-	const int test() const throw()
-	{
-		return m_signalPipe[0];
-	}
-};
-#pragma pack(pop)
-
-// make standard string for socket error
-extern std::string socketErrString(int err) throw();
-
-// abstract base for classes than can be run by the threadRunner class
-class runnable
-{
-	friend class threadedRunner;
-public:
-	#pragma pack(push, 1)
-	struct timeSliceResult
-	{
-		bool				m_readSet;			// read socket for poll(..) / select(..) call
-		bool				m_writeSet;			// write socket for poll(..) / select(..) call
-		bool				m_done;				// runnable is done and can be dispose
-		bool				m_runImmediately;	// must be re-run immediately
-		int					m_timeout;			// must be run after an interval of time regardless. if zero, then no timeout
-												// if not set (-1) then will pick an appropriate timeout to keep it ticking over
-		__uint64			m_scheduleTime;		// time from which we're going to allow this to run. if zero thnn no scheduling
-		__uint64			m_currentTime;		// time at which the runnable is being tried
-
-		socketOps::tSOCKET	m_customSocket;		// used for providing a custom case if needed
-
-		timeSliceResult() throw() : m_readSet(false), m_writeSet(false), m_done(false),
-									m_runImmediately(false), m_timeout(-1),
-									m_scheduleTime(0), m_currentTime(0),
-									m_customSocket(socketOps::cINVALID_SOCKET) {}
-
-		~timeSliceResult() throw()
-		{
-			reset(0);
-		}
-
-		void reset(__uint64 current_ms) throw()
-		{
-			m_customSocket = socketOps::cINVALID_SOCKET;
-			m_readSet = false;
-			m_writeSet = false;
-			m_done = false;
-			m_runImmediately = false;
-			m_timeout = -1;
-			m_scheduleTime = 0;
-			m_currentTime = current_ms;
-		}
-
-		void done() throw()
-		{
-			m_done = true;
-		}
-
-		void run() throw()
-		{
-			m_runImmediately = true;
-		}
-
-		void read(socketOps::tSOCKET customSocket = socketOps::cINVALID_SOCKET) throw()
-		{
-			m_readSet = true;
-			m_customSocket = customSocket;
-		}
-
-		void write() throw()
-		{
-			m_writeSet = true;
-		}
-
-		const int timeout(int sec, int ms_sec = 0)
-		{
-			m_timeout = (sec > 0 ? (sec * 1000) : 0) +
-						 (ms_sec > 0 ? ms_sec : 0);
-			return sec;
-		}
-
-		const int timeoutSID(const size_t sid = 1)
-		{
-			int sec = gOptions.getAutoDumpTime(sid);
-			m_timeout = (sec > 0 ? (sec * 1000) : 0);
-			return sec;
-		}
-
-		const __uint64 schedule(int ms_sec = 10)
-		{
-			// get the current time and schedule on from
-			// there so the usage just adds the duration
-			return (m_scheduleTime = time_now_ms() + (ms_sec > 0 ? ms_sec : 0));
-		}
-	};
-	#pragma pack(pop)
-
-	virtual void timeSlice() throw(std::exception) = 0; // you override this to take action
-	virtual uniString::utf8	name() const throw() = 0;	// object name for diagnostics
-
-    explicit runnable (runnable &r) throw();
-
-    explicit runnable(socketOps::tSOCKET socket = socketOps::cINVALID_SOCKET) throw()
-        : m_ssl(NULL), m_socket(socket), m_lastActivityTime(::time(NULL)) {}
-
-    virtual ~runnable() throw() { if (m_ssl) { SSL_shutdown (m_ssl); SSL_free (m_ssl); } }
-
-	// utility to read an HTTP style header line off a socket. Used in most protocols
-	// returns zero if lineBuffer is ready, otherwise it returns a timeout in seconds that
-	// should be used to wait in a select
-	const bool getHTTPStyleHeaderLine(const size_t sid, uniString::utf8 &lineBuffer,
-									  const uniString::utf8 &logMsgPrefix, int maxLineLength = 0) throw(std::exception);
-
-	// send a hunk of data out a socket - returns true if send is complete,
-	// outBuffer and outBufferSize should be initially set to point to the
-	// data and the size of the data - these values are moved and updated.
-	const bool sendDataBuffer(const size_t sid, const uniString::utf8::value_type *&outBuffer,
-							  int &outBufferSize, const uniString::utf8 &logMsgPrefix) throw(std::exception);
-
-    ssize_t send (const void *buf, size_t len, int flags = 0);
-    ssize_t recv (void *buf, size_t len, int flags = 0);
-
-    virtual int detectAutoDumpTimeout (time_t &cur_time, const size_t streamID, const uniString::utf8 &msg) throw(runtime_error);
-
-protected:
-    timeSliceResult     m_result;               // for tracking response
-    SSL                 *m_ssl;                 // SSL handler
-    socketOps::tSOCKET  m_socket;               // we'll need this for read / write handling so
-                                                // is easier to hold a copy of it here than do
-                                                // it at the higher class levels
-    time_t              m_lastActivityTime;     // for tracking timeouts
-};
-
-#pragma pack(push, 1)
-class threadedRunner : public Vthread
-{
-///// static for managing collection of these guys
-private:
-	pipeDrivenSignal<nullLock>	m_signal;			// we must add/remove runnables, or stop, or some other sort of message
-	bool						m_stop;				// if true then this thread must shut down
-	const short					m_threadNumber;		// for diagnostics only
-
-	// list of runnables to be added or removed from this thread controller
-	std::set<runnable*> m_runnablesToAdd;
-	std::set<runnable*> m_runnablesToRemove;
-	std::set<runnable*> m_runList; // things to run
-
-	AOL_namespace::mutex m_lock;
-
-    friend class microConnection;
-
-    static SSL_CTX *m_sslCtx;
-    static AOL_namespace::mutex *m_sslMutexes;
-    static unsigned long SSL_idFunction (void);
-    static void SSL_lockingFunction (int mode, int n, const char *file, int line);
-
-	const unsigned operator()() throw();
-
-	// add new runnables to the thread. returns false if the runnable could not be queued to this thread object
-	// False usually means that the thread is going away and can no longer accept runnables
-	const bool addRunnable(runnable*) throw();
-
-	// these runnables will be removed at the next opportunity (does not happen immediately)
-	// false means the runnable was not associated with that thread
-	const bool removeRunnable(runnable*) throw();
-
-	void enumRunnables(map<uniString::utf8, size_t>& runners) throw();
-
-	void wakeupRunnable() throw();
-		
-public:
-	threadedRunner() throw();
-	virtual ~threadedRunner() throw();
-
-	static bool scheduleRunnable(runnable *r) throw();
-
-	static uniString::utf8 getRunnabledetails() throw();
-
-	static void wakeup() throw();
-
-	void stop() throw();
-	const size_t sizeOfRunList() throw();
-	const uniString::utf8 threadNumber() const throw() { return stringUtil::tos(m_threadNumber); } // for diagnostics only
-
-    static bool isSSLCapable()  { return m_sslCtx ? true : false; }
-    static void SSL_init ();
-    static void SSL_shutdown ();
-};
-#pragma pack(pop)
-
-// microserver is a runnable object that implements basic server functionality.
-// it listens on a socket. When a connection occurs it creates a microConnection
-// object to handle it
-class microServer: public runnable
-{
-public:
-	// what stuff we will accept
-	typedef u_short AllowableProtocols_t;
-	#define P_WEB 1
-	#define P_SHOUTCAST1CLIENT 2
-	#define P_SHOUTCAST2CLIENT 4
-	#define P_SHOUTCAST1SOURCE 8
-	#define P_SHOUTCAST2SOURCE 16
-	#define P_FLASHPOLICYFILE 64
-	#define P_WEB_SETUP 128
-
-	// what stuff we will listen for
-	typedef enum { 
-		L_MISC = 0,
-		L_CLIENT = 1,
-		L_SOURCE = 2,
-		L_FLASH = 4,
-		L_SOURCE2 = 8,
-		L_CLIENT_ALT = 16
-	} ListenTypes_t;
-
-private:
-	AllowableProtocols_t	m_protocols;
-
-	void bindMessage(const ListenTypes_t types, const u_short listenPort) throw();
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8 name() const throw() { return "microServer"; }
-
-public:
-	microServer(const std::string &listenAddr, const u_short listenPort, const AllowableProtocols_t protocols, const ListenTypes_t types) throw(std::exception);
-	void updateProtocols(AllowableProtocols_t protocols, ListenTypes_t types, const u_short listenPort) throw();
-	virtual ~microServer() throw();
-};
-
-// this class receives a connection and starts processing it until it knows
-// what to do with it. When it has figured that out, it creates a protocol object
-// and forwards all commands to that object from now on.	
-class microConnection: public runnable
-{
-    friend class protocol_HTTPStyle;
-    friend class protocol_uvox2Source;
-    friend class protocol_HTTPSource;
-    friend class protocol_shoutcastSource;
-
-private:
-	std::string			m_srcHostName;
-	std::string			m_srcAddress;
-	uniString::utf8		m_lineBuffer;
-	const u_short		m_srcPort;
-	const microServer::AllowableProtocols_t	m_protocols; // what protocols I accept
-
-protected:
-	virtual void timeSlice() throw(std::exception);
-	virtual uniString::utf8	name() const throw() { return "microConnection"; }
-
-public:
-	microConnection(const socketOps::tSOCKET s, const std::string &hostName,
-					const std::string &addr, const u_short port,
-					const microServer::AllowableProtocols_t protocols) throw();
-	virtual ~microConnection() throw();
-};
-
-///////////// Utilities that are used often in related components /////////////////////////
-
-// common base used for kicking clients and general bookkeeping
-class clientProtocol
-{
-protected:
-	clientProtocol() throw() {}
-	virtual ~clientProtocol() throw(){}
-
-public:
-	virtual void kickNextRound() throw() {}
-	virtual void setGroup(int /*group*/) throw() {}
-};
-
-// make standard string for loggin address
-extern uniString::utf8 addrLogString(const uniString::utf8 &addr, const u_short port, const uniString::utf8 &xff = "") throw();
-// make standard string for logging src address
-extern uniString::utf8 srcAddrLogString(const uniString::utf8 &addr, const u_short port, const size_t sid = 0) throw();
-// make standard string for loggin dst address	
-extern uniString::utf8 dstAddrLogString(const uniString::utf8 &addr, const u_short port, const uniString::utf8 &xff = "", const size_t sid = 0) throw();
-
-// get value from map. Return default if doesn't exist
-template<typename T> inline T stringToType(const uniString::utf8 &s) throw();
-template<> inline uniString::utf8 stringToType(const uniString::utf8 &s) throw() { return s; }
-template<> inline int stringToType(const uniString::utf8 &s) throw() { return atoi((const char *)s.c_str()); }
-template<> inline u_short stringToType(const uniString::utf8 &s) throw() { return (u_short)atoi((const char *)s.c_str()); }
-template<> inline std::string stringToType(const uniString::utf8 &s) throw() { return s.hideAsString(); }
-template<> inline bool stringToType(const uniString::utf8 &s) throw()
-{
-	if (s.empty())
-	{
-		return false;
-	}
-	uniString::utf8::value_type v = *(s.begin());
-	if (v == 'f' || v == 'F' || v == 'n' || v == 'N' || v == '0')
-	{
-		return false;
-	}
-	return true;
-}
-
-template<typename T>
-inline T mapGet(const httpHeaderMap_t &m, const uniString::utf8 &key, const T deflt) throw()
-{
-	httpHeaderMap_t::const_iterator i = m.find(key);
-	return (i == m.end() ? deflt : stringToType<T>((*i).second));
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/updater.cpp b/Src/Plugins/DSP/sc_serv3/updater.cpp
deleted file mode 100644
index 3833f88e..00000000
--- a/Src/Plugins/DSP/sc_serv3/updater.cpp
+++ /dev/null
@@ -1,354 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <stdio.h>
-#include "updater.h"
-#include "file/fileUtils.h"
-#include "stl/stringUtils.h"
-#include "aolxml/aolxml.h"
-#include "bandwidth.h"
-#include "services/stdServiceImpl.h"
-#include "./versions.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-static AOL_namespace::mutex g_UpdaterLock;
-static updater *g_Updater = 0;
-
-#define DEBUG_LOG(...)  do { if (gOptions.yp2Debug()) DLOG(__VA_ARGS__); } while (0)
-
-///////////////////////////////////////////////////////////////////////////////////////////
-
-void updater::updaterBandWidthSent(webClient::request r) throw()
-{
-	// this effectively works out the size in the same manner
-	// as webclient::toRequest(..) does to build the request.
-	size_t total = r.m_content.size() + r.m_contentType.size() +
-				   // 'POST' or 'GET' with '?' on the front
-				   (r.m_method == webClient::request::POST ? 4 : 3) +
-				   64 + r.m_addr.size() + g_userAgent.size() +
-				   (!r.m_content.empty() ? r.m_content.size() : 0);
-
-	for (httpHeaderMap_t::const_iterator i = r.m_queryVariables.begin(); i != r.m_queryVariables.end(); ++i)
-	{
-		if (i != r.m_queryVariables.begin())
-		{
-			++total;
-		}
-		total += urlUtils::escapeURI_RFC3986((*i).first).size();
-		if (!(*i).second.empty())
-		{
-			total += 1 + urlUtils::escapeURI_RFC3986((*i).second).size();
-		}
-	}
-
-	if (!r.m_XFF.empty())
-	{
-		total += 18 + r.m_XFF.size();
-	}
-
-	if ((r.m_method == webClient::request::POST) && r.m_content.empty())
-	{
-		total += 48;
-	}
-	else if (!r.m_contentType.empty())
-	{
-		total += 15 + r.m_contentType.size();
-	}
-
-	bandWidth::updateAmount(bandWidth::PRIVATE_WEB, total);
-}
-
-void updater::updaterBandWidthReceived(const response r) throw()
-{
-	size_t total = r.m_body.size();
-
-	for (httpHeaderMap_t::const_iterator i = r.m_headers.begin(); i != r.m_headers.end(); ++i)
-	{
-		total += (*i).first.size() + 1 + (*i).second.size() + eol().size();
-	}
-
-	bandWidth::updateAmount(bandWidth::PRIVATE_WEB, total);
-}
-
-size_t updater::requestsInQueue() throw()
-{
-	stackLock sml(g_UpdaterLock);
-
-	return (g_Updater ? g_Updater->queueEntries() : 0);
-}
-
-updater::updater() throw() : webClient(UPDATER_LOGNAME)
-{
-	stackLock sml(g_UpdaterLock);
-
-	g_Updater = this;
-	m_running = false;
-}
-
-updater::~updater() throw() 
-{
-	stackLock sml(g_UpdaterLock);
-
-	g_Updater = 0;
-}
-
-/////////// response handling //////////////
-// handle response. retry_exceptions do just that. otherwise retry occurs in yptimeout seconds
-
-void updater::response_updater(const request & /*q*/, const response &r) throw(exception)
-{
-	FILE *f = uniFile::fopen(g_Updater->m_verInfo.fn, "wb");
-	if (f)
-	{
-		if (fwrite(&(r.m_body[0]),1,r.m_body.size(),f) == r.m_body.size())
-		{
-			ILOG(UPDATER_LOGNAME "Downloaded update to `" + g_Updater->m_verInfo.fn + "' [" + tos(r.m_body.size()) + " bytes]");
-			g_Updater->m_verInfo.downloaded = 1;
-			g_Updater->m_verInfo.needsUpdating = 0;
-		}
-		else
-		{
-			ILOG(UPDATER_LOGNAME "Error saving the update to `" + g_Updater->m_verInfo.fn + "' [" + tos(r.m_body.size()) + " bytes]");
-			g_Updater->m_verInfo.fn.clear();
-			g_Updater->m_verInfo.needsUpdating = 1;
-		}
-		::fclose(f);
-	}
-	else
-	{
-		FILE *f = uniFile::fopen(g_Updater->m_verInfo.fn_alt, "wb");
-		if (f)
-		{
-			if (fwrite(&(r.m_body[0]),1,r.m_body.size(),f) == r.m_body.size())
-			{
-				g_Updater->m_verInfo.fn = g_Updater->m_verInfo.fn_alt;
-				ILOG(UPDATER_LOGNAME "Downloaded update to `" + g_Updater->m_verInfo.fn + "' [" + tos(r.m_body.size()) + " bytes]");
-				g_Updater->m_verInfo.downloaded = 1;
-				g_Updater->m_verInfo.needsUpdating = 0;
-			}
-			else
-			{
-				ILOG(UPDATER_LOGNAME "Error saving the update to `" + g_Updater->m_verInfo.fn_alt + "' [" + tos(r.m_body.size()) + " bytes]");
-				g_Updater->m_verInfo.fn.clear();
-				g_Updater->m_verInfo.fn_alt.clear();
-				g_Updater->m_verInfo.needsUpdating = 1;
-			}
-			::fclose(f);
-		}
-		else
-		{
-			ELOG(UPDATER_LOGNAME "Error creating file: " + errMessage());
-			g_Updater->m_verInfo.fn.clear();
-			g_Updater->m_verInfo.fn_alt.clear();
-			g_Updater->m_verInfo.needsUpdating = 1;
-		}
-	}
-}
-
-void updater::gotResponse(const request &q, const response &r) throw(exception)
-{
-	stackLock sml(m_serverMapLock);
-
-	DEBUG_LOG(UPDATER_LOGNAME + string(__FUNCTION__) + eol() +
-			  "Response body=[" + eol() + utf8(r.m_body.begin(),r.m_body.end()) + "]" +
-			  eol() + "Response code=[" + tos(r.m_resultCode) + "]");
-
-	updaterBandWidthReceived(r);
-	response_updater(q, r);
-	m_running = false;
-}
-
-void updater::gotFailure(const request &/*q*/) throw(std::exception)
-{
-	stackLock sml(g_UpdaterLock);
-
-	DEBUG_LOG(UPDATER_LOGNAME + string(__FUNCTION__));
-	m_running = false;
-}
-
-void updater::updateVersion() throw()
-{
-	if (g_Updater)
-	{
-		// make sure we've got it and also an url
-		if (g_Updater->m_verInfo.needsUpdating && !g_Updater->m_verInfo.url.empty() &&
-			!g_Updater->m_verInfo.fn.empty() && !g_Updater->m_verInfo.fn_alt.empty())
-		{
-			try
-			{
-				g_Updater->pvt_downloadUpdate();
-			}
-			catch(...)
-			{
-			}
-		}
-	}
-}
-
-void updater::pvt_downloadUpdate() throw(exception)
-{
-	if (!m_running)
-	{
-		m_running = true;
-		ILOG(UPDATER_LOGNAME "Preparing to download update package...");
-
-		// build request
-		webClient::request r;
-		r.m_method = webClient::request::GET;
-
-		config::streamConfig::urlObj downloadUrl(g_Updater->m_verInfo.url.hideAsString());
-
-		r.m_addr = downloadUrl.server();
-		r.m_port = downloadUrl.port();
-		r.m_path = downloadUrl.path();
-		r.m_nonBlocking = 1;
-
-		updaterBandWidthSent(r);
-		queueRequest(r);
-	}
-}
-
-bool updater::getNewVersion(verInfo &ver) throw()
-{
-	stackLock sml(g_UpdaterLock);
-
-	if (g_Updater)
-	{
-		// double-check that we've got things correctly
-		// before we provide the current update status.
-		bool ret = g_Updater->setNewVersion(g_Updater->m_verInfo, true);
-		ver = g_Updater->m_verInfo;
-		return ret;
- 	}
-	return false;
-}
-
-bool updater::setNewVersion(verInfo &ver, bool no_lock) throw()
-{
-	if (!no_lock)
-	{
-		stackLock sml(g_UpdaterLock);
-	}
-
-	if (g_Updater)
-	{
-		if (g_Updater->m_verInfo.ver != ver.ver ||
-			g_Updater->m_verInfo.url != ver.url ||
-			g_Updater->m_verInfo.log != ver.log)
-		{
-			g_Updater->m_verInfo = ver;
-
-			if (!g_Updater->m_verInfo.ver.empty())
-			{
-				const std::vector<uniString::utf8> newVerStr = tokenizer(g_Updater->m_verInfo.ver,'.'),
-												   curVerStr = tokenizer(gOptions.getVersionBuildStrings(),'.');
-				int newVer[] = {newVerStr[0].toInt(), newVerStr[1].toInt(), newVerStr[2].toInt(), newVerStr[3].toInt()},
-					curVer[] = {curVerStr[0].toInt(), curVerStr[1].toInt(), curVerStr[2].toInt(), curVerStr[3].toInt()};
-
-				g_Updater->m_verInfo.needsUpdating = 0;
-
-				// look to compare from major to minor parts of the version strings
-				// 2.x.x.x vs 3.x.x.x
-				if (newVer[0] > curVer[0])
-				{
-					g_Updater->m_verInfo.needsUpdating = 1;
-				}
-				// 2.0.x.x vs 2.2.x.x
-				else if ((newVer[0] == curVer[0]) && (newVer[1] > curVer[1]))
-				{
-					g_Updater->m_verInfo.needsUpdating = 1;
-				}
-				// 2.0.0.x vs 2.0.1.x
-				else if ((newVer[0] == curVer[0]) && (newVer[1] == curVer[1]) && (newVer[2] > curVer[2]))
-				{
-					g_Updater->m_verInfo.needsUpdating = 1;
-				}
-				// 2.0.0.29 vs 2.0.0.30
-				else if ((newVer[0] == curVer[0]) && (newVer[1] == curVer[1]) && (newVer[2] == curVer[2]) && (newVer[3] > curVer[3]))
-				{
-					g_Updater->m_verInfo.needsUpdating = 1;
-				}
-
-				if (g_Updater->m_verInfo.needsUpdating)
-				{
-					#ifdef _WIN32
-					g_Updater->m_verInfo.fn = gStartupDirectory + "sc_serv_update_" SERV_UPDATE_NAME "_" + tos(newVer[0]) + "_" + tos(newVer[1]) + "_" + tos(newVer[2]) + "_" + tos(newVer[3]) + ".exe";
-					wchar_t m_fileName[MAX_PATH] = {0};
-					uniString::utf32 u32("%temp%\\sc_serv_update_" SERV_UPDATE_NAME "_" + tos(newVer[0]) + "_" + tos(newVer[1]) + "_" + tos(newVer[2]) + "_" + tos(newVer[3]) + ".exe");
-					std::wstring u16;
-					u32.toUtf16(u16);
-					ExpandEnvironmentStringsW(u16.c_str(), m_fileName, MAX_PATH);
-					g_Updater->m_verInfo.fn_alt = utf32(m_fileName).toUtf8();
-					#else
-					g_Updater->m_verInfo.fn = gStartupDirectory + "sc_serv_update_" SERV_UPDATE_NAME"_" + tos(newVer[0]) + "_" + tos(newVer[1]) + "_" + tos(newVer[2]) + "_" + tos(newVer[3]) + ".tar.gz";
-					g_Updater->m_verInfo.fn_alt = "/tmp/sc_serv_update_" SERV_UPDATE_NAME"_" + tos(newVer[0]) + "_" + tos(newVer[1]) + "_" + tos(newVer[2]) + "_" + tos(newVer[3]) + ".tar.gz";
-					#endif
-
-					g_Updater->m_verInfo.downloaded = uniFile::fileExists(g_Updater->m_verInfo.fn);
-					// if the main file cannot be found, look for the alternate file
-					if (!g_Updater->m_verInfo.downloaded)
-					{
-						g_Updater->m_verInfo.downloaded = uniFile::fileExists(g_Updater->m_verInfo.fn_alt);
-						if (g_Updater->m_verInfo.downloaded)
-						{
-							g_Updater->m_verInfo.fn = g_Updater->m_verInfo.fn_alt;
-						}
-					}
-				}
-
-				ULOG(string(YP2_LOGNAME) + "A new DNAS version is now available: " + g_Updater->m_verInfo.ver);
-				ULOG(string(YP2_LOGNAME) + "The suggested download for your setup is: " + g_Updater->m_verInfo.url);
-				ULOG(string(YP2_LOGNAME) + "See " + g_Updater->m_verInfo.log + " for more information about this update and alternative download links");
-
-				if (!g_Updater->m_verInfo.downloaded && !g_Updater->m_verInfo.fn.empty() && !g_Updater->m_verInfo.fn_alt.empty())
-				{
-					g_Updater->updateVersion();
-				}
-			}
-		}
-		else
-		{
-			std::vector<uniString::utf8> newVerStr = tokenizer(g_Updater->m_verInfo.ver,'.');
-			if (newVerStr.size() == 4)
-			{
-				int newVer[] = {newVerStr[0].toInt(), newVerStr[1].toInt(), newVerStr[2].toInt(), newVerStr[3].toInt()};
-
-				#ifdef _WIN32
-				g_Updater->m_verInfo.fn = gStartupDirectory + "sc_serv_update_" SERV_UPDATE_NAME "_" + tos(newVer[0]) + "_" + tos(newVer[1]) + "_" + tos(newVer[2]) + "_" + tos(newVer[3]) + ".exe";
-				wchar_t m_fileName[MAX_PATH] = {0};
-				uniString::utf32 u32("%temp%\\sc_serv_update_" SERV_UPDATE_NAME "_" + tos(newVer[0]) + "_" + tos(newVer[1]) + "_" + tos(newVer[2]) + "_" + tos(newVer[3]) + ".exe");
-				std::wstring u16;
-				u32.toUtf16(u16);
-				ExpandEnvironmentStringsW(u16.c_str(), m_fileName, MAX_PATH);
-				g_Updater->m_verInfo.fn_alt = utf32(m_fileName).toUtf8();
-				#else
-				g_Updater->m_verInfo.fn = gStartupDirectory + "sc_serv_update_" SERV_UPDATE_NAME"_" + tos(newVer[0]) + "_" + tos(newVer[1]) + "_" + tos(newVer[2]) + "_" + tos(newVer[3]) + ".tar.gz";
-				g_Updater->m_verInfo.fn_alt = "/tmp/sc_serv_update_" SERV_UPDATE_NAME"_" + tos(newVer[0]) + "_" + tos(newVer[1]) + "_" + tos(newVer[2]) + "_" + tos(newVer[3]) + ".tar.gz";
-				#endif
-
-				g_Updater->m_verInfo.downloaded = uniFile::fileExists(g_Updater->m_verInfo.fn);
-				// if the main file cannot be found, look for the alternate file
-				if (!g_Updater->m_verInfo.downloaded)
-				{
-					g_Updater->m_verInfo.downloaded = uniFile::fileExists(g_Updater->m_verInfo.fn_alt);
-					if (g_Updater->m_verInfo.downloaded)
-					{
-						g_Updater->m_verInfo.fn = g_Updater->m_verInfo.fn_alt;
-					}
-				}
-				g_Updater->m_verInfo.needsUpdating = 1;
-
-				if (!g_Updater->m_verInfo.downloaded && !g_Updater->m_verInfo.fn.empty())
-				{
-					g_Updater->updateVersion();
-				}
-			}
-		}
-
-		return (!g_Updater->m_verInfo.ver.empty() && (g_Updater->m_verInfo.needsUpdating || (g_Updater->m_verInfo.downloaded && !g_Updater->m_verInfo.fn.empty())));
-	}
-	return false;
-}
diff --git a/Src/Plugins/DSP/sc_serv3/updater.h b/Src/Plugins/DSP/sc_serv3/updater.h
deleted file mode 100644
index 26e53502..00000000
--- a/Src/Plugins/DSP/sc_serv3/updater.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#pragma once
-#ifndef download_H_
-#define download_H_
-
-#include "webClient.h"
-#include "webNet/urlUtils.h"
-#include "yp2.h"
-
-#define UPDATER_LOGNAME "[UPDATER] " 
-class updater: public webClient
-{
-public:
-	struct verInfo
-	{
-		int needsUpdating;
-		int downloaded;
-		uniString::utf8 ver;
-		uniString::utf8 url;
-		uniString::utf8 log;
-		uniString::utf8 info;
-		uniString::utf8 message;
-		uniString::utf8 slimmsg;
-		uniFile::filenameType fn;
-		uniFile::filenameType fn_alt;
-		verInfo() : needsUpdating(0), downloaded(0) {}
-	};
-
-	updater() throw();
-	~updater() throw();
-
-	// used in main during shutdown to wait for request queue to clear out
-	static size_t requestsInQueue() throw();
-
-	static bool getNewVersion(verInfo &ver) throw();
-	static bool setNewVersion(verInfo &ver, bool no_lock = false) throw();
-
-private:
-	AOL_namespace::mutex	m_serverMapLock;
-
-	verInfo m_verInfo;
-	bool m_running;
-
-	virtual uniString::utf8 name() const throw() { return "updater"; }
-
-	virtual void gotResponse(const request &q, const response &r) throw(std::exception);
-	virtual	void gotFailure(const request &q) throw(std::exception);
-
-	static void response_updater(const request &q,const response &r) throw(std::exception);
-	void failure_updater(const request &q) throw();
-
-	static void updaterBandWidthSent(webClient::request r) throw();
-	static void updaterBandWidthReceived(const response r) throw();
-
-	void pvt_downloadUpdate() throw(std::exception);
-	static void updateVersion() throw();
-};
-	
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/uvox2Common.cpp b/Src/Plugins/DSP/sc_serv3/uvox2Common.cpp
deleted file mode 100644
index a24df4f0..00000000
--- a/Src/Plugins/DSP/sc_serv3/uvox2Common.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#else
-#include <arpa/inet.h>
-#include <sys/types.h>
-#endif
-
-#include <string.h>
-#include <stdio.h>
-#include "uvox2Common.h"
-#include "stl/stringUtils.h"
-#include <sstream>
-#include <iomanip>
-#include <assert.h>
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-// from wikipedia. Slightly modified to be 32/64 bit clean
-static void XTEA_encipher(__uint32* v, __uint32* k, unsigned int num_rounds = 32) 
-{
-	__uint32 v0 = v[0], v1 = v[1], sum = 0;
-	for (unsigned int i = 0; i < num_rounds; i++) 
-	{
-		v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
-		sum += 0x9E3779B9;
-		v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]);
-	}
-	v[0] = v0;
-	v[1] = v1;
-}
-
-static void XTEA_decipher(__uint32* v, __uint32* k, unsigned int num_rounds = 32) 
-{
-	__uint32 v0 = v[0], v1 = v[1], sum = 0x9E3779B9 * num_rounds;
-	for (unsigned int i = 0; i < num_rounds; i++) 
-	{
-		v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]);
-		sum -= 0x9E3779B9;
-		v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
-	}
-	v[0] = v0;
-	v[1] = v1;
-}
-/////
-
-static __uint32 fourCharsToLong(__uint8 *s)
-{
-	__uint32 l = 0;
-	l |= s[0]; l <<= 8;
-	l |= s[1]; l <<= 8;
-	l |= s[2]; l <<= 8;
-	l |= s[3];
-	return l;
-}
-
-static void longToFourChars(__uint32 l, __uint8 *r)
-{
-	r[3] = l & 0xff; l >>= 8;
-	r[2] = l & 0xff; l >>= 8;
-	r[1] = l & 0xff; l >>= 8;
-	r[0] = l & 0xff; l >>= 8;
-}
-
-#define XTEA_KEY_PAD 0
-#define XTEA_DATA_PAD 0
-
-string XTEA_encipher(const __uint8* c_data, const size_t c_data_cnt,
-					 const __uint8* c_key, const size_t c_key_cnt) throw()
-{
-	vector<__uint8> key(c_key, c_key + c_key_cnt);
-	vector<__uint8> data(c_data, c_data + c_data_cnt);
-
-	// key is always 128 bits
-	while (key.size() < 16)
-	{
-		key.push_back(XTEA_KEY_PAD); // pad key with zero
-	}
-	__uint32 k[4] = {fourCharsToLong(&key[0]), fourCharsToLong(&key[4]),
-					 fourCharsToLong(&key[8]), fourCharsToLong(&key[12])};
-
-	// data is multiple of 64 bits
-	size_t siz = data.size();
-	while (siz % 8)
-	{
-		++siz;
-		data.push_back(XTEA_DATA_PAD);
-	} // pad data with zero
-
-	ostringstream oss;
-	for (size_t x = 0; x < siz; x += 8)
-	{
-		__uint32 v[2] = {fourCharsToLong(&data[x]), fourCharsToLong(&data[x+4])};
-		XTEA_encipher(v, k);
-		oss << setw(8) << setfill('0') << hex << v[0];
-		oss << setw(8) << setfill('0') << hex << v[1];
-		// hex values. uvox uses colon as seperator so
-		// we can't use chars for fear of collision
-	}
-
-	return oss.str();
-}
-
-utf8 XTEA_decipher(const __uint8* c_data, const size_t c_data_cnt,
-				   const __uint8* c_key, const size_t c_key_cnt) throw()
-{
-	utf8 result;
-
-	vector<__uint8> key(c_key, c_key + c_key_cnt);
-	vector<__uint8> data(c_data, c_data + c_data_cnt);
-
-	// key is always 128 bits
-	while (key.size() < 16)
-	{
-		key.push_back(XTEA_KEY_PAD); // pad key with zero
-	}
-	__uint32 k[4] = {fourCharsToLong(&key[0]), fourCharsToLong(&key[4]),
-					 fourCharsToLong(&key[8]), fourCharsToLong(&key[12])};
-
-	// data is multiple of 16 hex digits
-	size_t siz = data.size();
-	//assert(!(siz % 16)); // should never happen if data is good
-	while (siz % 16)
-	{
-		++siz;
-		data.push_back('0');
-	} // pad data with zero
-
-	for (size_t x = 0; x < siz; x += 16)
-	{
-		__uint32 v[2];
-		sscanf((const char *)&data[x], "%8x", &v[0]);
-		sscanf((const char *)&data[x+8], "%8x", &v[1]);
-
-		XTEA_decipher(v, k);
-		__uint8 ur[5] = {0};
-		longToFourChars(v[0], ur);
-		result += ur;
-		longToFourChars(v[1], ur);
-		result += ur;
-	}
-	return result;
-}
-
-// take data and create a uvox message appended to "v". Limit by MAX_PAYLOAD_SIZE.
-// return amount of data UNconsumed
-int formMessage(const __uint8 *data, const int len, const int type, vector<__uint8> &v) throw(runtime_error)
-{
-	if (len > MAX_PAYLOAD_SIZE)
-	{
-		throw runtime_error(string(__FUNCTION__) + " message payload " + tos(len) + " is too big");
-	}
-
-	const int amt = min(len, MAX_PAYLOAD_SIZE);
-	uv2xHdr hdr2 = {UVOX2_SYNC_BYTE, 0, (u_short)htons(type), (u_short)htons((u_short)amt)};
-	v.insert(v.end(), (const __uint8 *)(&hdr2), ((const __uint8 *)(&hdr2)) + sizeof(hdr2));
-	v.insert(v.end(), data, data + amt);
-	v.push_back(UV2X_EOM);
-	return (len - amt);
-}
-
-// similar to above, except it writes data into a buffer pointed to by v
-int formMessage(const __uint8 *data, const int len, const int type, __uint8 *v) throw(runtime_error)
-{
-	if (len > MAX_PAYLOAD_SIZE)
-	{
-		throw runtime_error(string(__FUNCTION__) + " message payload " + tos(len) + " is too big");
-	}
-
-	const int amt = min(len, MAX_PAYLOAD_SIZE);
-	uv2xHdr hdr2 = {UVOX2_SYNC_BYTE, 0, (u_short)htons(type), (u_short)htons((u_short)amt)};
-	memcpy(v, &hdr2, sizeof(hdr2));
-	v += sizeof(hdr2);
-	memcpy(v, data, amt);
-	v += amt;
-	v[0] = UV2X_EOM;
-	return (len - amt);
-}
-
-// load vector v up with metadata packets.
-void createMetadataPackets(const __uint8 *data, const int _len, const int type,
-						   vector<__uint8> &v, const __uint16 metadataID) throw(runtime_error)
-{
-	const int amtPerPacket = (MAX_PAYLOAD_SIZE - UV2X_META_HDR_SIZE);
-
-	// subdivide and load
-	__uint16 total_segments = (__uint16)(_len / amtPerPacket) + ((_len % amtPerPacket) ? 1 : 0), segment = 1;
-	int len = _len;
-	while (len > 0)
-	{
-		uv2xMetadataHdr h = {(u_short)htons(metadataID), (u_short)htons(total_segments), (u_short)htons(segment)};
-		const int amt = min(len, amtPerPacket);
-		vector<__uint8> m((const __uint8 *)&h, ((const __uint8 *)&h) + sizeof(h));
-		m.insert(m.end(), data, data + amt);
-		formMessage(&m[0], (int)m.size(), type, v);
-		data += amt;
-		len -= amt;
-		++segment;
-	}
-}
diff --git a/Src/Plugins/DSP/sc_serv3/uvox2Common.h b/Src/Plugins/DSP/sc_serv3/uvox2Common.h
deleted file mode 100644
index 648a368e..00000000
--- a/Src/Plugins/DSP/sc_serv3/uvox2Common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-#pragma once
-#ifndef uvox2Common_H_
-#define uvox2Common_H_
-
-#include "unicode/uniString.h"
-
-std::string XTEA_encipher(const __uint8* c_data, const size_t c_data_cnt, const __uint8* c_key, const size_t c_key_cnt) throw();
-uniString::utf8 XTEA_decipher(const __uint8* c_data, const size_t c_data_cnt, const __uint8* c_key, const size_t c_key_cnt) throw();
-
-#pragma pack(push,1)
-
-struct uv2xHdr
-{ // uvox2 message
-	__uint8  sync;
-	__uint8  qos;
-	__uint16 msgType;
-	__uint16 msgLen; 
-};
-
-struct uv2xMetadataHdr 
-{   /* uvox 2 metadata header */
-	__uint16 id;   /* ID (cookie) identifying a metadata package */
-	__uint16 span; /* Span of messages in the metadata package being assembled */
-	__uint16 index;/* Index of the message in the metadata package being assembled */
-};
-
-#pragma pack(pop)
-
-static const int MAX_MESSAGE_SIZE = (16 * 1024);
-static const int MAX_CIPHER_KEY_SIZE = 256;
-
-static const char UV2X_EOM = 0;
-static const int UV2X_HDR_SIZE = sizeof(uv2xHdr);
-static const int UV2X_OVERHEAD = (UV2X_HDR_SIZE + 1);  /* header+end_of_msg */
-static const int UV2X_META_HDR_SIZE = sizeof(uv2xMetadataHdr);
-static const int MAX_PAYLOAD_SIZE = MAX_MESSAGE_SIZE - UV2X_OVERHEAD;
-
-#define UVOX2_SYNC_BYTE 0X5A
-
-static const int MSG_AUTH					= 0x1001;
-static const int MSG_BROADCAST_SETUP		= 0x1002;
-static const int MSG_NEGOTIATE_BUFFER_SIZE	= 0x1003;
-static const int MSG_STANDBY				= 0x1004;
-static const int MSG_TERMINATE				= 0x1005;
-static const int MSG_FLUSH_CACHED_METADATA	= 0x1006;
-static const int MSG_LISTENER_AUTHENTICATION= 0x1007;
-static const int MSG_MAX_PAYLOAD_SIZE		= 0x1008;
-static const int MSG_CIPHER					= 0x1009; // cipher request for uvox 2.1
-static const int MSG_MIME_TYPE				= 0x1040;
-static const int MSG_FILE_TRANSFER_BEGIN	= 0x1050;
-static const int MSG_FILE_TRANSFER_DATA		= 0x1051;
-
-static const int MSG_BROADCAST_INTERRUPTION	= 0x2001;
-static const int MSG_BROADCAST_TERMINATE	= 0x2002;
-
-static const int MSG_ICYNAME				= 0x1100;
-static const int MSG_ICYGENRE				= 0x1101;
-static const int MSG_ICYURL					= 0x1102;
-static const int MSG_ICYPUB					= 0x1103;
-
-static const int MSG_METADATA_CONTENTINFO	= 0x3000;
-static const int MSG_METADATA_URL			= 0x3001;
-//static const int MSG_METADATA_XML			= 0x3901;
-static const int MSG_METADATA_XML_NEW		= 0x3902;
-
-// only id the start of the album art type as it's variable
-static const int MSG_METADATA_ALBUMART		= 0x4000;
-static const int MSG_METADATA_STATION_ART	= 0x0000;
-static const int MSG_METADATA_PLAYING_ART	= 0x0100;
-/*
-	0x4    0x0xx    Station logo
-	0x4    0x1xx    Album art
-
-	00 = image/jpeg
-	01 = image/png
-	02 = image/bmp
-	03 = image/gif
-*/
-
-static const int MSG_METADATA_TIMEREMAINING	= 0x5001;
-
-static const int MP3_DATA					= 0x7000;
-static const int VLB_DATA					= 0x8000;
-static const int AAC_LC_DATA				= 0x8001;
-static const int AACP_DATA					= 0x8003;
-static const int OGG_DATA					= 0x8004;
-
-/// these are the same
-static const int MAX_METADATA_SEGMENTS		= 32;
-#define MAX_METADATA_FRAGMENTS 32
-///////
-
-static const int MAX_METADATA_TIME(300); // five minutes
-
-// take data and create a uvox message appended to "v". Limit by MAX_PAYLOAD_SIZE.
-// return amount of data UNconsumed
-int formMessage(const __uint8 *data, const int len, const int type, std::vector<__uint8> &v) throw(std::runtime_error);
-
-// similar to above, except it writes data into a buffer pointed to by v
-int formMessage(const __uint8 *data, const int len, const int type, __uint8 *v) throw(std::runtime_error);
-
-// this one also returns actual full message size in msgSize
-inline int formMessage(const std::string &dataIn, const int type, __uint8 *v, int &msgSize) throw(std::runtime_error)
-{ 
-	msgSize = (int)(dataIn.size() + 1); // include null
-
-	int amt_left = formMessage((const __uint8 *)dataIn.c_str(), msgSize /* include null */, type, v); 
-	msgSize += UV2X_OVERHEAD;
-	return amt_left;
-}
-
-// load vector v up with metadata packets.
-void createMetadataPackets(const __uint8 *data, const int len, const int type,
-						   std::vector<__uint8> &v, const __uint16 metadataID = 1) throw(std::runtime_error);
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/versions.h b/Src/Plugins/DSP/sc_serv3/versions.h
deleted file mode 100644
index bd4fbbbc..00000000
--- a/Src/Plugins/DSP/sc_serv3/versions.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#pragma once
-#ifndef versions_H_
-#define versions_H_
-
-#define SERV_OSNAME "posix"
-
-#ifdef _WIN32
-	#undef SERV_OSNAME
-	#ifndef _WIN64
-		#define SERV_OSNAME "win32"
-		#define SERV_UPDATE_NAME "win32"
-	#else
-		#define SERV_OSNAME "win64"
-		#define SERV_UPDATE_NAME "win64"
-	#endif
-#endif
-
-#ifdef __APPLE_CC__
-	#undef SERV_OSNAME
-	#define SERV_OSNAME "mac"
-#endif
-
-#ifdef PLATFORM_LINUX
-	#undef SERV_OSNAME
-	#ifndef __LP64__
-		#define SERV_OSNAME "posix(linux x86)"
-		#define SERV_UPDATE_NAME "linux_x86"
-	#else
-		#define SERV_OSNAME "posix(linux x64)"
-		#define SERV_UPDATE_NAME "linux_x64"
-	#endif
-#endif
-
-#ifdef PLATFORM_BSD
-	#undef SERV_OSNAME
-	#define SERV_OSNAME "posix(bsd)"
-	#define SERV_UPDATE_NAME "bsd"
-#endif
-
-#ifdef PLATFORM_ARMv6
-	#undef SERV_OSNAME
-	#define SERV_OSNAME "armv6(rpi)"
-	#define SERV_UPDATE_NAME "rpi"
-#endif
-
-#ifdef PLATFORM_ARMv7
-	#undef SERV_OSNAME
-	#define SERV_OSNAME "armv7(rpi2)"
-	#define SERV_UPDATE_NAME "rpi2"
-#endif
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/w3cLog.cpp b/Src/Plugins/DSP/sc_serv3/w3cLog.cpp
deleted file mode 100644
index a81cf7b4..00000000
--- a/Src/Plugins/DSP/sc_serv3/w3cLog.cpp
+++ /dev/null
@@ -1,319 +0,0 @@
-#include "w3cLog.h"
-#include "webNet/urlUtils.h"
-#include "threading/thread.h"
-#include "global.h"
-#include "file/fileUtils.h"
-#include "stl/stringUtils.h"
-#include "services/stdServiceImpl.h"
-#include <stdio.h>
-
-#ifndef _WIN32
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <fcntl.h>
-#endif
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-std::map<size_t,FILE *> s_w3cFileHandle;
-
-static AOL_namespace::mutex s_w3cLock;
-
-void w3cLog::open(const uniFile::filenameType &fn, size_t streamID) throw()
-{
-	rotate_log(fn, streamID);
-
-	stackLock sml(s_w3cLock);
-
-	if (!s_w3cFileHandle[streamID])
-	{
-		s_w3cFileHandle[streamID] = uniFile::fopen(fn,"wb");
-		if (!s_w3cFileHandle[streamID])
-		{
-			ELOG("[W3C] Could not open file " + fn + " (" + errMessage() + ")");
-		}
-		else
-		{
-			header(s_w3cFileHandle[streamID]);
-		}
-	}
-}
-
-void w3cLog::header(FILE *w3cFileHandle) throw()
-{
-	// output header like done in the v1 DNAS for tool compatibility
-	utf8 version = gOptions.getVersionBuildStrings();
-	utf8 s = "#Software: SHOUTcast" + eol() + "#Version: " + version + eol() +
-			 "#Fields: c-ip c-dns date time cs-uri-stem c-status cs(User-Agent) sc-bytes x-duration avgbandwidth" + eol();
-	size_t amt = ::fwrite(s.c_str(), 1, s.size(), w3cFileHandle);
-	if (amt != s.size())
-	{
-		ELOG("[W3C] Write error");
-	}
-	::fflush(w3cFileHandle);
-}
-
-void w3cLog::close(size_t streamID) throw()
-{
-	stackLock sml(s_w3cLock);
-
-	if (s_w3cFileHandle[streamID])
-	{
-		::fclose(s_w3cFileHandle[streamID]);
-		s_w3cFileHandle[streamID] = 0;
-	}
-}
-
-inline uniFile::filenameType make_backup_log(const uniFile::filenameType &filename, int which) throw()
-{
-	// 2.4.8+ we now ensure that this is giving a 'full path' to avoid issues
-	return fileUtil::getFullFilePath((fileUtil::stripSuffix(filename) + "_" +
-									 tobs<uniFile::filenameType>(which) + "." +
-									 fileUtil::getSuffix(filename)));
-}
-
-uniFile::filenameType make_archive_log() throw()
-{
-#ifdef _WIN32
-	SYSTEMTIME sysTime = {0};
-	::GetLocalTime(&sysTime);
-	wchar_t d[100] = {0}, t[100] = {0};
-	::GetDateFormatW(LOCALE_SYSTEM_DEFAULT,0,&sysTime,_T("yyyy'_'MM'_'dd"),d,99);
-	::GetTimeFormatW(LOCALE_SYSTEM_DEFAULT,0,&sysTime,_T("HH'_'mm'_'ss"),t,99);
-	return tos((const wchar_t *)d) + "_" + tos((const wchar_t *)t);
-#else
-	char buf[256] = {0};
-	struct tm ttm;
-	time_t ttt;
-	::time(&ttt);
-	::strftime(buf, 255, "%Y_%m_%d_%H_%M_%S", ::localtime_r(&ttt, &ttm));
-	return buf;
-#endif
-}
-
-void w3cLog::rotate_log(const uniFile::filenameType &fn, size_t streamID) throw()
-{
-	stackLock sml(s_w3cLock);
-
-	if (s_w3cFileHandle[streamID])
-	{
-		::fclose(s_w3cFileHandle[streamID]);
-		s_w3cFileHandle[streamID] = 0;
-	}
-
-	int numFileBackups = gOptions.logRotates();
-	for (int x = numFileBackups; x > 0; --x)
-	{
-		uniFile::filenameType dest = make_backup_log(fn, x);
-		// archive the log file about to be removed into a gz file
-		if (x > 0 && x == gOptions.logRotates())
-		{
-			#ifdef _WIN32
-			uniFile::filenameType archive = dest;
-			utf8::size_type pos = archive.rfind(utf8("_" + tos(numFileBackups)));
-			if ((pos != utf8::npos) && (uniFile::fileSize(dest) > 0))
-			{
-				archive = (dest.substr(0, pos) + utf8("_" + make_archive_log() + "_w3c.gz"));
-
-				HANDLE m_archive = ::CreateFileW(archive.toWString().c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-				if (m_archive != INVALID_HANDLE_VALUE)
-				{
-					DWORD written(0);
-					utf8 out;
-					z_stream m_stream = {0};
-
-					FILE* m_logFile = uniFile::fopen(dest, "rb");
-					if (m_logFile != NULL)
-					{
-						bool started = false;
-						while (!feof(m_logFile))
-						{
-							std::vector<uniString::utf8::value_type> m_logFileBuffer;
-							const size_t BUFSIZE(1024*16);
-							m_logFileBuffer.clear();
-							m_logFileBuffer.resize(BUFSIZE + 1);
-							size_t amt = fread(&(m_logFileBuffer[0]), 1, BUFSIZE, m_logFile);
-							if (amt > 0)
-							{
-								out = utf8(&(m_logFileBuffer[0]), amt);
-								if (started == false)
-								{
-									compressDataStart(out, &m_stream, (Bytef*)"sc_w3c.log\0");
-									started = true;
-								}
-								else
-								{
-									compressDataCont(out, &m_stream);
-								}
-								::WriteFile(m_archive, out.c_str(), (DWORD)out.size(), &written, NULL);
-							}
-						}
-
-						if (out.size() > 0)
-						{
-							compressDataFinish(out, &m_stream);
-						}
-						::WriteFile(m_archive, out.c_str(), (DWORD)out.size(), &written, NULL);
-
-						compressDataEnd(&m_stream);
-
-						::fclose(m_logFile);
-						forgetHandleInvalid(m_archive);
-
-						// no need to keep any 0-byte files
-						// this is just incase of weirdness
-						if (!uniFile::fileSize(archive))
-						{
-							uniFile::unlink(archive);
-						}
-					}
-					else
-					{
-						forgetHandleInvalid(m_archive);
-						uniFile::unlink(archive);
-					}
-				}
-			}
-			#else
-			uniFile::filenameType archive = dest;
-			utf8::size_type pos = archive.rfind(utf8("_" + tos(numFileBackups)));
-			if ((pos != utf8::npos) && (uniFile::fileSize(dest) > 0))
-			{
-				archive = (dest.substr(0, pos) + utf8("_" + make_archive_log() + "_w3c.gz"));
-				int m_archive = ::open(archive.hideAsString().c_str(), O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-				if (m_archive != -1)
-				{
-					utf8 out;
-					z_stream m_stream = {0};
-					FILE* m_logFile = uniFile::fopen(dest, "rb");
-					if (m_logFile != NULL)
-					{
-						bool started = false;
-						while (!feof(m_logFile))
-						{
-							std::vector<uniString::utf8::value_type> m_logFileBuffer;
-							const size_t BUFSIZE(1024*16);
-							m_logFileBuffer.clear();
-							m_logFileBuffer.resize(BUFSIZE + 1);
-							size_t amt = fread(&(m_logFileBuffer[0]), 1, BUFSIZE, m_logFile);
-							if (amt > 0)
-							{
-								out = utf8(&(m_logFileBuffer[0]), amt);
-								if (started == false)
-								{
-									compressDataStart(out, &m_stream, (Bytef*)"sc_w3c.log\0");
-									started = true;
-								}
-								else
-								{
-									compressDataCont(out, &m_stream);
-								}
-								::write(m_archive, out.c_str(), out.size());
-							}
-						}
-
-						if (out.size() > 0)
-						{
-							compressDataFinish(out, &m_stream);
-						}
-
-						::write(m_archive, out.c_str(), out.size());
-
-						compressDataEnd(&m_stream);
-
-						::fclose(m_logFile);
-						::close(m_archive);
-
-						// no need to keep any 0-byte files
-						// this is just incase of weirdness
-						if (!uniFile::fileSize(archive))
-						{
-							uniFile::unlink(archive);
-						}
-					}
-					else
-					{
-						::close(m_archive);
-						uniFile::unlink(archive);
-					}
-				}
-			}
-			#endif
-		}
-
-		uniFile::unlink(dest);
-		#ifdef _WIN32
-		::MoveFileW(((x - 1) ? make_backup_log(fn, (x - 1)).toWString().c_str() : fn.toWString().c_str()), dest.toWString().c_str());
-		#else
-		::rename(((x - 1) ? make_backup_log(fn, (x - 1)).hideAsString().c_str() : fn.hideAsString().c_str()), dest.hideAsString().c_str());
-		#endif
-	}
-
-	s_w3cFileHandle[streamID] = uniFile::fopen(fn,"wb");
-	if (!s_w3cFileHandle[streamID])
-	{
-		ELOG("[W3C] Could not open file " + fn);
-	}
-	else
-	{
-		header(s_w3cFileHandle[streamID]);
-	}
-}
-
-void w3cLog::log(const size_t streamID, const uniString::utf8 &ipAddr,
-				 const uniString::utf8 &hostName, const uniString::utf8 &songName,
-				 const uniString::utf8 &userAgent, __uint64 bytesSent,
-				 time_t timeInSeconds, int bitrate)
-{
-	// to prevent some of the stats / logs getting skewed
-	// then we filter out the SHOUTcast site 'test' users
-	if (isUserAgentOfficial(toLower(userAgent)))
-	{
-		return;
-	}
-
-	stackLock sml(s_w3cLock);
-
-	FILE *w3cFileHandle = s_w3cFileHandle[streamID];
-	if (!w3cFileHandle && streamID)
-	{
-		w3cFileHandle = s_w3cFileHandle[0];
-	}
-
-	if (!w3cFileHandle)
-	{
-		return;
-	}
-
-	static time_t last_t;
-	static utf8 w3c_buf;
-	time_t t = ::time(NULL);
-	if (last_t != t)
-	{
-		struct tm lt = {0};
-		::localtime_s(&lt, &t);
-
-		char buf[1024] = {0};
-		snprintf(buf, sizeof(buf), "%04d-%02d-%02d %02d:%02d:%02d",
-				 (lt.tm_year % 100) + 2000, lt.tm_mon + 1,
-				 lt.tm_mday, lt.tm_hour, lt.tm_min, lt.tm_sec);
-		w3c_buf = buf;
-	}
-
-	// http://forums.shoutcast.com/showthread.php?t=355063
-	// http://forums.shoutcast.com/showthread.php?t=358805
-	utf8 s = ipAddr + " " + hostName + " " + w3c_buf + " /stream?title=" +
-			 (songName.empty() ? utf8("Unknown") : urlUtils::escapeURI_RFC3986(songName)) +
-			 " 200 " + urlUtils::escapeURI_RFC3986(userAgent) + " " + tos(bytesSent) + " " +
-			 tos(timeInSeconds) + " " + tos(bitrate) + eol();
-
-	size_t amt = ::fwrite(s.c_str(), 1, s.size(), w3cFileHandle);
-	if (amt != s.size())
-	{
-		ELOG("[W3C] Write error");
-	}
-	::fflush(w3cFileHandle);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/w3cLog.h b/Src/Plugins/DSP/sc_serv3/w3cLog.h
deleted file mode 100644
index 13ab6a0f..00000000
--- a/Src/Plugins/DSP/sc_serv3/w3cLog.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-#ifndef w3cLog_H_
-#define w3cLog_H_
-
-#include "unicode/uniString.h"
-#include "unicode/uniFile.h"
-
-class w3cLog
-{
-public:
-	static void open(const uniFile::filenameType &fn, const size_t streamID = 0) throw();
-	static void header(FILE *w3cFileHandle) throw();
-	static void close(const size_t streamID) throw();
-	static void rotate_log(const uniFile::filenameType &fn, const size_t streamID = 0) throw();
-	static void log(const size_t streamID, const uniString::utf8 &ipAddr, const uniString::utf8 &hostName,
-					const uniString::utf8 &songName, const uniString::utf8 &userAgent, __uint64 bytesSent,
-					time_t timeInSeconds, const int bitrate);
-};
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/webClient.cpp b/Src/Plugins/DSP/sc_serv3/webClient.cpp
deleted file mode 100644
index 3006d6b9..00000000
--- a/Src/Plugins/DSP/sc_serv3/webClient.cpp
+++ /dev/null
@@ -1,619 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-
-#include <stdio.h>
-#include "webClient.h"
-#include "webNet/urlUtils.h"
-#include "stl/stringUtils.h"
-#include "file/fileUtils.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace stringUtil;
-using namespace uniString;
-
-#define DEBUG_LOG(...)  do { if (gOptions.webClientDebug()) DLOG(__VA_ARGS__); } while (0)
-
-////////////////// utils
-
-static utf8 toLogString(const webClient::request &r) throw()
-{
-	// using this to ensure the default YP connection is via HTTPS
-	// though if there is a config issue then attempt to handle it
-	// by reverting to the pre-HTTPS mode so we can still work-ish
-	const bool https = ((r.m_addr == DEFAULT_YP_ADDRESS) && uniFile::fileExists(gOptions.m_certPath));
-	if (r.m_port == 80)
-	{
-		return utf8(https ? "https://" : "http://") + r.m_addr + r.m_path;
-	}
-	else
-	{
-		return utf8(https ? "https://" : "http://") + r.m_addr + ":" + tos(r.m_port) + r.m_path;
-	}
-}
-
-utf8 encodeVariables(const httpHeaderMap_t &m) throw()
-{
-	utf8 result;
-
-	if (!m.empty())
-	{
-		for (httpHeaderMap_t::const_iterator i = m.begin(); i != m.end(); ++i)
-		{
-			if (i != m.begin())
-			{
-				result += "&";
-			}
-			result += urlUtils::escapeURI_RFC3986((*i).first) + "=";
-			if (!(*i).second.empty())
-			{
-				result += urlUtils::escapeURI_RFC3986((*i).second);
-			}
-		}
-	}
-	return result;
-}
-
-static utf8 toLogString(const httpHeaderMap_t &m) throw()
-{
-	utf8 result = "headers=[" + eol();
-	for (httpHeaderMap_t::const_iterator i = m.begin(); i != m.end(); ++i)
-	{
-		result += "    " + (*i).first + " : " + (*i).second + eol();
-	}
-	result += "]" + eol();
-	return result;
-}
-
-static utf8 toLogString(const webClient::response &r) throw()
-{
-	utf8 result = "code=" + tos(r.m_resultCode) + " reason=" + r.m_resultText + eol();
-	result += toLogString(r.m_headers);
-	result += "body=[" + eol();
-	result += r.m_body + eol() + "]";
-	return result;
-}
-
-////////////////////////
-
-webClient::webClient(const uniString::utf8 &logPrefix) throw()
-	: m_logPrefix(logPrefix), m_state(&webClient::state_Idle),
-	  m_nextState(0), m_nonBlockingID(0), m_response()
-{
-	m_curl_error = new char[CURL_ERROR_SIZE];
-	memset(m_curl_error, 0, CURL_ERROR_SIZE);
-}
-
-webClient::~webClient() throw()
-{
-	for (curlMap_t::const_iterator i = m_curl.begin(); i != m_curl.end(); ++i)
-	{
-		if (i->second != NULL)
-		{
-			curl_easy_cleanup(i->second);
-		}
-	}
-	for (curlHeadersMap_t::const_iterator i = m_curl_headers.begin(); i != m_curl_headers.end(); ++i)
-	{
-		if (i->second != NULL)
-		{
-			curl_slist_free_all(i->second);
-		}
-	}
-	m_curl.clear();
-	forgetArray(m_curl_error);
-}
-
-///////////////////////////////////////////////////////////////////
-
-void webClient::queueRequest(const request &req) throw()
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_logPrefix + __FUNCTION__);
-#endif
-
-	stackLock sml(m_requestQueueLock);
-
-	m_requestQueue.push(req);
-	m_requestSignal.set();
-}
-
-void webClient::timeSlice() throw(exception)
-{
-	try
-	{
-		if (this->m_state)
-		{
-			return (this->*m_state)();
-		}
-	}
-	catch (const webClient::retry_exception &ex)
-	{
-		// increase failure counter
-		m_requestQueueLock.lock();
-		if (!m_requestQueue.empty())
-		{
-			++m_requestQueue.front().m_retryCounter;
-		}
-		m_requestQueueLock.unlock();
-
-		m_state = &webClient::state_Wait;
-		m_nextState = &webClient::state_SendRequest;
-		m_lastActivityTime = ::time(NULL);
-		m_result.timeout(gOptions.ypTimeout());
-
-		utf8 what = ex.what();
-		WLOG(((what.find(m_logPrefix) == utf8::npos) ? m_logPrefix : "") +
-			 what + (!what.empty() ? " - " : "") +
-			 "Retrying in " + tos(gOptions.ypTimeout()) + " seconds.");
-	}
-	catch (const exception &ex)
-	{
-		// increase failure counter
-		m_requestQueueLock.lock();
-		if (!m_requestQueue.empty())
-		{
-			++m_requestQueue.front().m_retryCounter;
-		}
-		m_requestQueueLock.unlock();
-
-		m_state = &webClient::state_Wait;
-		m_nextState = &webClient::state_SendRequest;
-		m_lastActivityTime = ::time(NULL);
-		m_result.timeout(gOptions.ypTimeout());
-
-		utf8 what = ex.what();
-		ELOG(((what.find(m_logPrefix) == utf8::npos) ? m_logPrefix : "") +
-			 what + (!what.empty() ? " - " : "") +
-			 "Restarting in " + tos(gOptions.ypTimeout()) + " seconds.");
-	}
-	catch(...)
-	{
-		ELOG(m_logPrefix + "Fatal error. Cannot recover.");
-		throw;
-	}
-}
-
-// waiting for a request to be queued
-void webClient::state_Idle() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_logPrefix + __FUNCTION__);
-#endif
-
-	stackLock sml(m_requestQueueLock);
-	m_requestSignal.clear();
-	if (m_requestQueue.empty())
-	{
-		m_result.schedule(1000);
-		m_result.read(m_requestSignal.test());
-		m_result.timeout(gOptions.ypTimeout());
-	}
-	else
-	{
-		m_result.run();
-		m_state = &webClient::state_SendRequest;
-	}
-}
-
-// TODO can we instead change this to be scheduled?
-void webClient::state_Wait() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_logPrefix + __FUNCTION__);
-#endif
-
-	time_t t = ::time(NULL);
-	stackLock sml(m_requestQueueLock);
-	if (t < m_lastActivityTime) // rollover?
-	{
-		m_lastActivityTime = t;
-	}
-
-	if (m_state != m_nextState)
-	{
-		m_state = m_nextState;
-		// this is needed to ensure that we'll not
-		// block on some of the YP async requests.
-		m_result.timeout(0, 10);
-	}
-	else
-	{
-		// we'll add this back to be tested for...
-		m_result.schedule (50);
-		m_result.timeout((gOptions.ypTimeout() - (int)(t - m_lastActivityTime)));
-	}
-}
-
-size_t webClient::ParseReplyHeaders(void *buffer, size_t size, size_t count, FILE *stream) throw(runtime_error)
-{
-	webClient *client = reinterpret_cast<webClient*>(stream);
-	if (!client)
-	{
-		throwEx<runtime_error>("ParseReplyHeaders parameter failure");
-	}
-
-	utf8 s = stripWhitespace(utf8((char*)buffer, (size * count)));
-	if (!s.empty())
-	{
-		DEBUG_LOG(client->m_logPrefix + "HTTP header: " + s);
-
-		if (client->m_response.m_resultCode == 0)	// waiting for first line or something other than HTTP/1.1 100 Continue
-		{
-			utf8::size_type pos = s.find(utf8(" "));
-			if (pos == utf8::npos)
-			{
-				throwEx<runtime_error>(client->m_logPrefix + "Badly formed HTTP response [" + s + "]");
-			}
-			s = stripWhitespace(s.substr(pos));
-			pos = s.find(utf8(" "));
-			if (pos == utf8::npos)
-			{
-				throwEx<runtime_error>(client->m_logPrefix + "Badly formed HTTP response [" + s + "]");
-			}
-			client->m_response.m_resultCode = utf8(s.substr(0,pos)).toInt();
-			if (client->m_response.m_resultCode != 100)
-			{
-				s = stripWhitespace(s.substr(pos));
-				client->m_response.m_resultText = s;
-			}
-			else
-			{
-				client->m_response.m_resultCode = 0;
-			}
-		}
-		else
-		{
-			// header lines
-			utf8::size_type pos = s.find(utf8(":"));
-			if (pos == utf8::npos)
-			{
-				throwEx<runtime_error>(client->m_logPrefix + "Badly formed HTTP header line [" + s + "]");
-			}
-			if ((int)client->m_response.m_headers.size() > gOptions.maxHeaderLineCount())
-			{
-				throwEx<runtime_error>(client->m_logPrefix + "Badly formed HTTP response. Max header lines exceeded.");
-			}
-
-			utf8 key = toLower(stripWhitespace(s.substr(0,pos)));
-			utf8 value = stripWhitespace(s.substr(pos+1));
-			// allow empty values. (for urls and what-not)
-			if (key.empty())
-			{
-				throwEx<runtime_error>(client->m_logPrefix + "Bad HTTP header string [" + s + "]");
-			}
-			client->m_response.m_headers[key] = value;
-		}
-	}
-
-	size_t received = (size * count);
-	client->m_response.m_received += received;
-	return received;
-}
-
-size_t webClient::GetBody(void *buffer, size_t size, size_t count, FILE *stream)
-{
-	webClient *client = reinterpret_cast<webClient*>(stream);
-	size_t received = (size * count);
-	unsigned char *arr = (unsigned char *)buffer;
-
-	if (gOptions.webClientDebug())
-	{
-		// skip outputting the DNAS download updates
-		DLOG(client->m_logPrefix + "HTTP body: " + arr);
-	}
-	client->m_requestQueueLock.lock();
-	client->m_response.m_body.insert(client->m_response.m_body.end(), arr, &arr[received]);
-	client->m_lastActivityTime = ::time(NULL);
-
-	client->m_response.m_received += received;
-	client->m_requestQueueLock.unlock();
-	return received;
-}
-
-void webClient::gotCurlRespose()
-{
-	this->m_nextState = &webClient::state_RequestComplete;
-	this->m_lastActivityTime = ::time(NULL);
-}
-
-// will still need to set certain aspects like the error buffer or any of the header / processing options
-CURL* webClient::setupCurlDefaults(CURL* oldCurl, const char *logPrefix, const utf8& requestUrl,
-        const int timeout, const int connnectTimeout, size_t SID)
-{
-	CURL *curl = (oldCurl == NULL ? curl_easy_init() : oldCurl);
-	if (curl)
-	{
-        if (requestUrl != utf8(""))
-        {
-            if (oldCurl)
-            {
-                curl_easy_reset(curl);
-                DEBUG_LOG ("Recycling curl handle for: " + requestUrl, logPrefix, SID);
-            }
-            else
-            {
-                DEBUG_LOG ("Creating new curl handle for: " + requestUrl, logPrefix, SID);
-            }
-            curl_easy_setopt(curl, CURLOPT_URL, requestUrl.hideAsString().c_str());
-        }
-
-		curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
-		curl_easy_setopt(curl, CURLOPT_USERAGENT, g_userAgent.c_str());
-		curl_easy_setopt(curl, CURLOPT_TIMEOUT, (timeout == -1 ? gOptions.ypTimeout() : timeout));
-		curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, (connnectTimeout == -1 ? 3L : connnectTimeout));
-		curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
-		curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
-		curl_easy_setopt(curl, CURLOPT_MAXREDIRS, gOptions.maxHTTPRedirects());
-		curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "");
-
-/*#if defined(_DEBUG) || defined(DEBUG)
-		if (gOptions.webClientDebug())
-		{
-			curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-		}
-#endif*/
-
-		// this is needed (mainly for the Windows builds) so things will work with SSL and also
-		// self-signed certificates as we appear to be using (as CURLOPT_SSL_VERIFYPEER = FALSE
-		// is an absolute no-no due to the man in the middle attack which it allows to succeed.
-		//DEBUG_LOG(logPrefix + "Certificate path: `" + gOptions.m_certPath + "'");
-		if (!gOptions.m_certPath.empty())
-		{
-			curl_easy_setopt(curl, CURLOPT_CAINFO, gOptions.m_certPath.hideAsString().c_str());
-		}
-		else
-		{
-			WLOG ("Certificate path is invalid - cacert.pem location not known", logPrefix, SID);
-		}
-	}
-	return curl;
-}
-
-// build the entire web request, and send it
-void webClient::state_SendRequest() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-    DEBUG_LOG(m_logPrefix + __FUNCTION__);
-#endif
-
-    do
-    {
-        m_requestQueueLock.lock();
-
-        if (m_requestQueue.empty())
-        {
-            // queue is empty, move to idle state
-            m_requestSignal.clear();
-            m_state = &webClient::state_Idle;
-            m_requestQueueLock.unlock();
-            break;
-        }
-        // construct request
-        request &r = m_requestQueue.front(); // leave it in the queue until request succeeds
-        struct curl_slist *header = m_curl_headers[r.m_sid];
-
-        if (r.m_retryCounter < gOptions.ypMaxRetries())
-        {
-            m_curl_path.clear();
-            m_curl_path = toLogString(r);
-
-            if (r.m_method == webClient::request::GET && !r.m_queryVariables.empty())
-            {
-                m_curl_path += utf8("?") + encodeVariables(r.m_queryVariables);
-            }
-
-            // create or re-use the handle as needed (doing a reset to avoid some quirks with authhash vs general YP usage)
-            CURL* curl = setupCurlDefaults(m_curl[r.m_sid], (char *)m_logPrefix.c_str(), m_curl_path);
-            if (curl)
-            {
-                if (r.m_method == webClient::request::POST)
-                {
-                    utf8 contentType = "";
-                    if (r.m_content.empty())
-                    {
-                        utf8 u8 = encodeVariables(r.m_queryVariables);
-                        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, u8.size());
-                        curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, &u8[0]);
-                    }
-                    else
-                    {
-                        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, r.m_content.size());
-                        curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, &r.m_content[0]);
-                    }
-                    if (r.m_contentType.empty() == false)
-                    {
-                        string contentType = "Content-Type:" + r.m_contentType.hideAsString();
-                        header = curl_slist_append (header, contentType.c_str());
-                    }
-                }
-                else
-                    curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
-
-                utf8 m_XFF = "";
-                if (!r.m_XFF.empty())
-                {
-                    m_XFF = "X-Forwarded-For:" + r.m_XFF;
-                    header = curl_slist_append(header, m_XFF.hideAsString().c_str());
-                }
-
-                curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header);
-
-                // send it, then get ready to receive the reply
-                m_lastActivityTime = ::time(NULL);
-                m_response.clear();
-                r.m_content.clear();
-
-                DEBUG_LOG(m_logPrefix + "Request URL: " + m_curl_path);
-                curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, &this->ParseReplyHeaders);
-                curl_easy_setopt(curl, CURLOPT_HEADERDATA, this);
-                curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &this->GetBody);
-                curl_easy_setopt(curl, CURLOPT_WRITEDATA, this);
-                curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, &(m_curl_error[0]));
-
-                if (r.m_nonBlocking)
-                {
-                    m_nonBlockingID = r.m_sid;
-                    m_curl_headers[r.m_sid] = header;
-                    m_curl[r.m_sid] = curl;
-
-                    m_state = m_nextState = &webClient::state_Wait;
-                    m_requestQueueLock.unlock();
-                    SimpleThread (webClient::process, this);
-                }
-                else
-                {
-                    m_requestQueueLock.unlock();
-                    CURLcode ret = curl_easy_perform(curl);
-                    m_requestQueueLock.lock();
-                    if (ret != CURLE_OK)
-                    {
-                        getCurlError(curl, ret);
-                    }
-                    else
-                    {
-                        m_state = &webClient::state_RequestComplete;
-                    }
-
-                    if (header)
-                    {
-                        curl_slist_free_all(header);
-                        m_curl_headers[r.m_sid] = NULL;
-                    }
-                    m_requestQueueLock.unlock();
-                }
-            }
-            break;
-        }
-        ELOG(m_logPrefix + "Request [" + toLogString(r) + "] failed. Retries exceeded.");
-        gotFailure(r);
-        m_requestQueue.pop();
-        m_requestQueueLock.unlock();
-    } while (0);
-
-    m_result.run();
-}
-
-void webClient::getCurlError(CURL* curl, const CURLcode ret) throw(exception)
-{
-	if (!m_requestQueue.empty())
-	{
-		webClient::request &r = m_requestQueue.front();
-		r.m_received = 0;
-		if (curl)
-		{
-			curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &r.m_received);
-			curl_easy_cleanup(curl);
-		}
-		m_curl[r.m_sid] = NULL;
-
-		ELOG(m_logPrefix + "Request [" + toLogString(r) + "] failed, code: " + tos(ret) +
-			 " [" + (m_curl_error[0] ? m_curl_error : curl_easy_strerror(ret)) + "]");
-		gotFailure(r);
-		m_requestQueue.pop();
-
-		m_lastActivityTime = ::time(NULL);
-		m_state = m_nextState = &webClient::state_Idle;
-	}
-}
-
-THREAD_FUNC webClient::process(void* arg)
-{
-	try
-	{
-		webClient* m_client = reinterpret_cast<webClient*>(arg);
-		if (m_client)
-		{
-			if (!iskilled())
-			{
-				m_client->m_requestQueueLock.lock();
-
-				CURL* curl = m_client->getCurlHandle();
-				m_client->m_requestQueueLock.unlock();
-
-				CURLcode ret = (curl ? curl_easy_perform(curl) : CURLE_READ_ERROR);
-				if (!iskilled())
-				{
-					stackLock sml(m_client->m_requestQueueLock);
-
-					if (ret != CURLE_OK)
-					{
-						m_client->getCurlError(curl, ret);
-					}
-					else
-					{
-						m_client->gotCurlRespose();
-					}
-
-					m_client->clearCurlHeader();
-				}
-			}
-		}
-	}
-	catch (...)
-	{
-	}
-	return 0;
-} 
-
-// need to let things run in the background so sit and spin and wait...
-void webClient::state_Send() throw(std::exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_logPrefix + __FUNCTION__);
-#endif
-
-	SimpleThread(webClient::process, this);
-
-	m_state = m_nextState = &webClient::state_Wait;
-	m_result.run();
-}
-
-// request complete. Issue virtual callback, pop request, then move to idle
-// state and wait for next request
-void webClient::state_RequestComplete() throw(exception)
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_logPrefix + __FUNCTION__);
-#endif
-
-	m_requestQueueLock.lock();
-	if (!m_requestQueue.empty())
-	{
-			request &r = m_requestQueue.front();
-			m_requestQueueLock.unlock();
-			gotResponse(r, m_response); // could throw
-
-			m_requestQueueLock.lock();
-			m_requestQueue.pop();
-	}
-
-	m_lastActivityTime = ::time(NULL);
-	m_state = m_nextState = &webClient::state_Idle;
-	m_result.run();
-	m_requestQueueLock.unlock();
-}
-
-// this method should be overridden. The base class here just dumps diagnostics	
-// throw an exception if you want to treat the result as a retryable error
-void webClient::gotResponse(const request &/*q*/, const response &r) throw(exception)
-{
-	DEBUG_LOG(m_logPrefix + toLogString(r));
-}
-
-void webClient::gotFailure(const request &q) throw(exception)
-{
-	DEBUG_LOG(m_logPrefix + toLogString(q));
-}
-
-const size_t webClient::queueEntries() throw()
-{
-#if defined(_DEBUG) || defined(DEBUG)
-	DEBUG_LOG(m_logPrefix + __FUNCTION__);
-#endif
-
-	stackLock sml(m_requestQueueLock);
-
-	return !m_requestQueue.empty();
-}
diff --git a/Src/Plugins/DSP/sc_serv3/webClient.h b/Src/Plugins/DSP/sc_serv3/webClient.h
deleted file mode 100644
index 1a3d178a..00000000
--- a/Src/Plugins/DSP/sc_serv3/webClient.h
+++ /dev/null
@@ -1,153 +0,0 @@
-#pragma once
-#ifndef webClient_H_
-#define webClient_H_
-
-#include "threadedRunner.h"
-#include "curl/curl.h"
-#include <stdio.h>
-
-// runnable that provides generic web client functionality to a single host
-// you can subclass this to provide specific behaviour
-#pragma pack(push, 1)
-class webClient: public runnable
-{
-public:
-	struct request
-	{
-		typedef enum { GET,POST } method_t;
-
-		uniString::utf8 m_addr;
-		uniString::utf8 m_path;
-
-		// content
-		std::vector<__uint8> m_content;
-		uniString::utf8 m_contentType;
-
-		// used for the setting the 'X-Forwarded-For' header field which
-		// is a bit of a fiddle to allow destip to be different so the YP
-		// can test an alternative external IP from that it auto detects
-		uniString::utf8 m_XFF;
-
-		httpHeaderMap_t	m_queryVariables;
-		method_t m_method;
-
-		int m_port;
-		size_t m_sid;
-		int m_retryCounter;
-
-		int m_userData_i;
-
-		size_t m_received;	// size of data got
-		int m_nonBlocking;	// do on an additional thread e.g. the YP add needs
-							// this else it blocks the YP test exists connetion
-
-		// two random pieces of user data
-		unsigned m_userData_u;
-		void* m_userData_p;
-
-		request() : m_path(uniString::utf8("/")), m_method(GET), m_port(80),
-					m_sid(0), m_retryCounter(0), m_userData_i(0), m_received(0),
-					m_nonBlocking(0), m_userData_u(0), m_userData_p(0) {}
-	};
-
-	struct response
-	{
-		uniString::utf8	m_resultText;
-		uniString::utf8	m_body;		// body of response
-		httpHeaderMap_t	m_headers;	// response headers
-		size_t m_resultCode;		// HTTP result code
-		size_t m_received;			// size of data got
-
-		response() : m_resultCode(0), m_received(0) {}
-
-		void clear() throw()
-		{
-			m_resultCode = 0;
-			m_received = 0;
-			m_headers.clear();
-			m_body.clear();
-			m_resultText.clear();
-		}
-	};
-
-	static size_t ParseReplyHeaders(void *buffer, size_t size, size_t count, FILE *stream) throw(std::runtime_error);
-	static size_t GetBody(void *buffer, size_t size, size_t count, FILE *stream);
-
-	CURL* getCurlHandle(const size_t SID = 0) { return m_curl[(!SID ? m_nonBlockingID : SID)]; }
-	void clearCurlHeader(const size_t SID = 0)
-	{
-		size_t id = (!SID ? m_nonBlockingID : SID);
-		struct curl_slist *header = m_curl_headers[id];
-		if (header)
-		{
-			curl_slist_free_all(header);
-			m_curl_headers[id] = 0;
-		}
-	}
-	void gotCurlRespose();
-	void getCurlError(CURL* curl, const CURLcode ret) throw(std::exception);
-
-	static CURL* setupCurlDefaults(CURL* oldCurl, const char *logPrefix, const uniString::utf8& requestUrl,
-								   const int timeout = -1, const int connnectTimeout = -1, size_t SID = 0);
-
-	static THREAD_FUNC process(void* arg);
-
-protected:
-	class retry_exception : public std::runtime_error
-	{
-	public:
-		explicit retry_exception(const uniString::utf8 &msg) : runtime_error(msg.hideAsString()){}
-	};
-
-private:
-	typedef void (webClient::*state_t)();
-	const uniString::utf8	m_logPrefix;
-
-	state_t	m_state;
-	state_t m_nextState;
-
-	// curl specific parts
-	typedef std::map<size_t, CURL*> curlMap_t;
-	curlMap_t m_curl;
-
-	size_t m_nonBlockingID;
-	uniString::utf8 m_curl_path;
-
-	typedef std::map<size_t, struct curl_slist*> curlHeadersMap_t;
-	curlHeadersMap_t m_curl_headers;
-
-	response	m_response;
-	char*		m_curl_error;
-
-	AOL_namespace::mutex		m_requestQueueLock;
-	std::queue<request>			m_requestQueue;
-	pipeDrivenSignal<nullLock>	m_requestSignal;
-
-	void state_Idle() throw(std::exception);
-	void state_Wait() throw(std::exception);
-	void state_ResolveServer() throw(std::exception);
-	void state_Connect() throw(std::exception);
-	void state_ConnectWait() throw(std::exception);
-	void state_Send() throw(std::exception);
-	void state_Get() throw(std::exception);
-	void state_SendRequest() throw(std::exception);
-	void state_RequestComplete() throw(std::exception);
-
-	virtual void timeSlice() throw(std::exception);
-
-protected:
-	explicit webClient(const uniString::utf8 &logPrefix) throw();
-	virtual ~webClient() throw();
-
-	void queueRequest(const request &req) throw();
-	// throw to treat as an error and retry entire request
-	virtual void gotResponse(const request &q, const response &r) throw(std::exception); // called when response is received
-	virtual	void gotFailure(const request &q) throw(std::exception); // called when retries are exhausted
-
-	const size_t queueEntries() throw();
-};
-#pragma pack(pop)
-
-uniString::utf8 encodeVariables(const httpHeaderMap_t &m) throw();
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/webNet/socketOps.cpp b/Src/Plugins/DSP/sc_serv3/webNet/socketOps.cpp
deleted file mode 100644
index 59587b39..00000000
--- a/Src/Plugins/DSP/sc_serv3/webNet/socketOps.cpp
+++ /dev/null
@@ -1,716 +0,0 @@
-#ifdef _WIN32
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0601
-#include "socketOps.h"
-#include <Ws2tcpip.h>
-#include <Mswsock.h>
-#include <map>
-#include "stl/stringUtils.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace stringUtil;
-
-static std::map<int,std::string> s_errMsgs;
-
-const SOCKET socketOps::cINVALID_SOCKET = INVALID_SOCKET;
-const SOCKET socketOps::cSOCKET_ERROR = (SOCKET)SOCKET_ERROR;
-
-class win32_socket_init
-{
-public:
-	~win32_socket_init() { ::WSACleanup(); }
-	win32_socket_init()
-	{
-		WORD wVersion = MAKEWORD( 1, 1 );
-		WSADATA wsaData = {0};
-
-		::WSAStartup(wVersion, &wsaData);
-
-		s_errMsgs[WSAEINTR]			= "Interrupted function call: A blocking operation was interrupted by a call to WSACancelBlockingCall.";
-		s_errMsgs[WSAEFAULT]		= "Bad address: The system detected an invalid pointer address in attempting to use a pointer argument of a call.";
-		s_errMsgs[WSAEINVAL]		= "Invalid argument: Some invalid argument was supplied.";
-		s_errMsgs[WSAEMFILE]		= "Too many open descriptors: No more socket descriptors are available.";
-		s_errMsgs[WSAEWOULDBLOCK]	= "Call would block: Non-blocking call will block.";
-		s_errMsgs[WSAEINPROGRESS]	= "Operation now in progress: A blocking operation is currently executing.";
-		s_errMsgs[WSAEALREADY]		= "Operation already in progress: An operation was attempted on a nonblocking socket with an operation already in progress.";
-		s_errMsgs[WSAENOTSOCK]		= "Socket operation on non socket: An operation was attempted on something that is not a socket.";
-		s_errMsgs[WSAEDESTADDRREQ]	= "Destination address required: A required address was omitted from an operation on a socket.";
-		s_errMsgs[WSAEMSGSIZE]		= "Message too long: A message sent on a datagram socket was larger than the internal message buffer.";
-		s_errMsgs[WSAEPROTOTYPE]	= "The specified protocol is the wrong type for this socket.";
-		s_errMsgs[WSAENOPROTOOPT]	= "Bad Protocol option.";
-		s_errMsgs[WSAEPROTONOSUPPORT]	= "The specified protocol is not supported.";
-		s_errMsgs[WSAESOCKTNOSUPPORT]	= "The specified socket type is not supported in this address family.";
-		s_errMsgs[WSAEOPNOTSUPP]		= "Socket operation not supported.";
-		s_errMsgs[WSAEPFNOSUPPORT]	= "Protocol family not supported.";
-		s_errMsgs[WSAEAFNOSUPPORT]	= "The specified address family is not supported";
-		s_errMsgs[WSAEADDRINUSE]	= "Address already in use.";
-		s_errMsgs[WSAEADDRNOTAVAIL]	= "Cannot assign requested address.";
-		s_errMsgs[WSAENETDOWN]		= "A network subsystem or the associated service provider has failed";
-		s_errMsgs[WSAENETUNREACH]	= "Nework is unreachable.";
-		s_errMsgs[WSAENETRESET]		= "Network dropped connection on reset.";
-		s_errMsgs[WSAECONNABORTED]	= "Software caused connection abort.";
-		s_errMsgs[WSAECONNRESET]	= "Connection reset by peer.";
-		s_errMsgs[WSAENOBUFS]		= "No buffer space is available. The socket cannot be created.";
-		s_errMsgs[WSAEISCONN]		= "Socket is already connected.";
-		s_errMsgs[WSAENOTCONN]		= "Socket is not connected.";
-		s_errMsgs[WSAESHUTDOWN]		= "Cannot send after socket shutdown.";
-		s_errMsgs[WSAETIMEDOUT]		= "Connection timed out.";
-		s_errMsgs[WSAECONNREFUSED]	= "Connection refused.";
-		s_errMsgs[WSAEHOSTDOWN]		= "Host is down.";
-		s_errMsgs[WSAEHOSTUNREACH]	= "No route to host.";
-		s_errMsgs[WSAEPROCLIM]		= "Too many processes.";
-	}
-};
-
-static win32_socket_init win32_socket_init_force;
-
-std::string socketOps::errMsg(int errCode) throw()
-{
-	std::map<int,std::string>::const_iterator i = s_errMsgs.find(errCode);
-	return (i == s_errMsgs.end() ? "error code " + tos(errCode) : (*i).second);
-}
-
-int socketOps::errCode() throw() { return ::WSAGetLastError(); }
-
-#else
-
-#include <poll.h>
-#include "socketOps.h"
-#include "stl/stringUtils.h"
-#include <string.h>
-
-using namespace std;
-using namespace stringUtil;
-
-const int socketOps::cINVALID_SOCKET = -1;
-const int socketOps::cSOCKET_ERROR = -1;
-
-int socketOps::errCode() throw() { return errno; }
-
-std::string socketOps::errMsg(int errCode) throw()
-{
-	std::string result = "error code " + tos(errCode);
-
-	char *e = strerror(errCode);
-	if (e)
-	{
-		result = e;
-	}
-	return result;
-}
-#endif
-
-std::string socketOps::endpoint::toString() const throw()
-{
-	return m_address + ":" + tos(m_port);
-}
-
-socketOps::tSOCKET socketOps::createTCPSocket() throw()
-{
-	return ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-}
-
-socketOps::tSOCKET socketOps::createTCPSocketTHROW() throw(std::runtime_error)
-{
-	tSOCKET result = socketOps::createTCPSocket();
-	if (result == socketOps::cINVALID_SOCKET)
-	{
-		throw std::runtime_error("socketOps::createTCPSocketTHROW() - Could not create socket because " + socketOps::errMsg());
-	}
-	return result;
-}
-
-int	socketOps::setNonblock(const socketOps::tSOCKET s, bool nonBlock) throw()
-{
-#ifdef _WIN32
-	unsigned long i = (nonBlock ? 1 : 0);
-	return ioctlsocket(s, FIONBIO, &i);
-#else
-	int flags, err;
-
-	if ((flags = fcntl(s, F_GETFL, 0)) == socketOps::cSOCKET_ERROR)
-	{
-		return flags;
-	}
-
-	if (nonBlock)
-	{
-		flags |= O_NONBLOCK;
-	}
-	else 
-	{
-		flags &= ~O_NONBLOCK;
-	}
-
-	if ((err = fcntl(s, F_SETFL, flags)) == socketOps::cSOCKET_ERROR)
-	{
-		return err;
-	}
-	return 0;
-#endif
-}
-
-void socketOps::setNonblockTHROW(const socketOps::tSOCKET s, const bool nonblock) throw(std::runtime_error)
-{
-	int err = socketOps::setNonblock(s, nonblock);
-	if (err == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error("socketOps::setNonblockTHROW() - Could not get socket flags because " + socketOps::errMsg());
-	}
-}
-
-void socketOps::closeTCPSocket(socketOps::tSOCKET s) throw()
-{
-#ifdef _WIN32
-	::shutdown(s, SD_BOTH);
-	::closesocket(s);
-#else
-	::shutdown(s, SHUT_RDWR);
-	::close(s);
-#endif
-}
-
-void socketOps::forgetTCPSocket(tSOCKET &s) throw()
-{
-	if (s != socketOps::cINVALID_SOCKET)
-	{
-		socketOps::closeTCPSocket(s);
-		s = socketOps::cINVALID_SOCKET;
-	}
-}
-
-int	socketOps::connect(const socketOps::tSOCKET s, const std::string &address, const u_short port) throw()
-{
-	unsigned long iaddr = inet_addr(address.c_str());
-	struct sockaddr_in addr = {0};
-
-	addr.sin_family = AF_INET;
-	addr.sin_port = htons(port);
-	memcpy(&(addr.sin_addr), &iaddr, 4);
-
-	return ::connect(s, (struct sockaddr *)&addr, sizeof(struct sockaddr));
-}
-
-int	socketOps::connect(tSOCKET s,const endpoint &e) throw()
-{
-	return socketOps::connect(s, e.m_address, e.m_port);
-}
-
-void socketOps::connectTHROW(const socketOps::tSOCKET s, const std::string &address, const u_short port) throw(std::runtime_error)
-{
-	if (socketOps::connect(s, address, port) == socketOps::cSOCKET_ERROR)
-    {
-        int err = socketOps::errCode();
-#ifdef _WIN32
-        if ((err == WSAEINPROGRESS) || (err == WSAEWOULDBLOCK))
-#else
-        if ((err == EINPROGRESS) || (err == EWOULDBLOCK) || (err == ECONNABORTED) || (err == EINTR))
-#endif
-            return;
-
-        throw std::runtime_error("Could not connect to " + address + ":" + tos(port) + " because " + socketOps::errMsg());
-	}
-}
-
-void socketOps::connectTHROW(tSOCKET s, const endpoint &e) throw(std::runtime_error)
-{
-	if (socketOps::connect(s, e) == socketOps::cSOCKET_ERROR)
-    {
-        int err = socketOps::errCode();
-#ifdef _WIN32
-        if ((err == WSAEINPROGRESS) || (err == WSAEWOULDBLOCK))
-#else
-        if ((err == EINPROGRESS) || (err == EWOULDBLOCK) || (err == ECONNABORTED) || (err == EINTR))
-#endif
-            return;
-
-        throw std::runtime_error("Could not connect to " + e.toString() + " because " + socketOps::errMsg());
-    }
-}
-
-socketOps::nonBlockConnect_t socketOps::nonBlockingConnectWait(const socketOps::tSOCKET s, std::string &errorString) throw()
-{
-	try
-	{
-#ifdef _WIN32
-		// non-blocking connects suck
-		fd_set rset, wset, eset;
-		struct timeval tval;
-
-		FD_ZERO(&rset); FD_ZERO(&wset); FD_ZERO(&eset);
-		FD_SET(s,&rset);
-		FD_SET(s,&wset);
-		FD_SET(s,&eset);
-
-		tval.tv_sec = 0;
-		tval.tv_usec = 1;
-
-		int n = ::select(((int)s)+1,&rset,&wset,&eset,&tval);
-
-		// if n == 0 then we timed out, and must stay in this state
-		if (n == 0)
-		{
-			return socketOps::NBC_INPROGRESS;
-		}
-
-		if (n < 0) // fatal select error
-		{
-			try
-			{
-				errorString = socketOps::errMsg();
-			}
-			catch(...)
-			{
-				errorString = "Impossible connection failure. (1)";
-			}
-			return socketOps::NBC_ERROR;
-		}
-
-		// detecting when a non-blocking connect is ready (or has errored)
-		// is highly platform dependent. Microsoft docs specify one way, Stevens
-		// (2nd edition page 411) specifies another way to cover various Unix flavors
-		if (FD_ISSET(s,&eset))
-		{
-			errorString = "Connection failure.";
-			return socketOps::NBC_ERROR;
-		}
-		else if (FD_ISSET(s,&wset))
-		{
-			return socketOps::NBC_CONNECTED;
-		}
-		else
-		{
-			errorString = "Impossible connection failure. (2)";
-			return socketOps::NBC_ERROR;
-		}
-#else
-        struct pollfd check;
-        int val = -1;
-        socklen_t size = sizeof val;
-        check.fd = s;
-        check.events = POLLOUT;
-        switch (poll (&check, 1, 0))
-        {
-			case 0:
-			{
-				return socketOps::NBC_INPROGRESS;
-			}
-			default:
-			{
-				if (getsockopt (s, SOL_SOCKET, SO_ERROR, (void*) &val, &size) == 0)
-				{
-					if (val == 0)
-					{
-						return socketOps::NBC_CONNECTED;
-					}
-					errno = val;
-				}
-                // fall thru
-			}
-			case -1:
-			{
-				if (errno == EINTR)
-				{
-					return socketOps::NBC_INPROGRESS;
-				}
-                throw std::runtime_error("");
-			}
-		}
-#endif
-    }
-    catch(...)
-    {
-#ifdef _WIN32
-        errorString = "Impossible connection failure. (3)";
-#else
-		errorString = "Connection failure.";
-#endif
-        return socketOps::NBC_ERROR;
-	}
-}
-
-socketOps::tSOCKET socketOps::bind(tSOCKET s, u_short port, const std::string &address) throw()
-{
-	struct sockaddr_in servaddr = {0};
-	servaddr.sin_family = AF_INET;
-
-	if (address == "")
-	{
-		servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
-	}
-	else
-	{
-		unsigned long iaddr = inet_addr(address.c_str());
-		memcpy(&(servaddr.sin_addr), &iaddr, 4);
-	}
-
-	servaddr.sin_port = htons(port);
-	return ::bind(s, (const sockaddr *)&servaddr, sizeof(servaddr));
-}
-
-socketOps::tSOCKET socketOps::bind(tSOCKET s, const socketOps::endpoint &e) throw()
-{
-	return socketOps::bind(s,e.m_port,e.m_address);
-}
-
-void socketOps::bindTHROW(tSOCKET s, u_short port, const std::string &address) throw(std::runtime_error)
-{
-	if (socketOps::bind(s,port,address) == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error("Could not bind to " + (!address.empty() ? address + ":" : "") + tos(port) + " because " + socketOps::errMsg());
-	}
-}
-
-void socketOps::bindTHROW(tSOCKET s,const endpoint &e) throw(std::runtime_error)
-{
-	if (socketOps::bind(s,e) == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error("Could not bind to " + e.toString() + " because " + socketOps::errMsg());
-	}
-}
-
-int	socketOps::accept(tSOCKET s, std::string &address, u_short &port) throw()
-{
-	struct sockaddr_in client_addr = {0};
-#ifdef _WIN32
-	int len = sizeof(client_addr);
-#else
-	socklen_t len = sizeof(client_addr);
-#endif
-
-	socketOps::tSOCKET sC = ::accept(s, (sockaddr*)&client_addr, &len);
-	if (sC != socketOps::cSOCKET_ERROR)
-	{
-		port = ntohs(client_addr.sin_port);
-		address = inet_ntoa(client_addr.sin_addr);
-	}
-	return (int)sC;
-}
-
-int	socketOps::accept(tSOCKET s,endpoint &e) throw()
-{
-	return socketOps::accept(s,e.m_address,e.m_port);
-}
-
-int	socketOps::acceptTHROW(tSOCKET s, std::string &address, u_short &port, bool nonblocking) throw(std::runtime_error)
-{
-	socketOps::tSOCKET sC = socketOps::accept(s, address, port);
-	if (sC == socketOps::cSOCKET_ERROR)
-	{
-		if (!nonblocking)
-		{
-			throw std::runtime_error(socketOps::errMsg());
-		}
-
-		int e = socketOps::errCode();
-#ifdef _WIN32
-		if ((e == WSAEINPROGRESS) || (e == WSAEWOULDBLOCK))
-		{
-			return (int)socketOps::cSOCKET_ERROR;
-		}
-#else
-		if ((e == EWOULDBLOCK) || (e == ECONNABORTED) || (e == EINTR))
-		{
-			return socketOps::cSOCKET_ERROR;
-		}
-#endif
-		throw std::runtime_error("Could not call accept() on socket because " + socketOps::errMsg(e));
-	}
-
-	return (int)sC;
-}
-
-int	socketOps::acceptTHROW(tSOCKET s, endpoint &e, bool nonblocking) throw(std::runtime_error)
-{
-	return socketOps::acceptTHROW(s, e.m_address, e.m_port, nonblocking);
-}
-
-void socketOps::listenTHROW(tSOCKET s, int backlog) throw(std::runtime_error)
-{
-	if (::listen(s, backlog) == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error("Could not call listen() on socket because " + socketOps::errMsg());
-	}
-}
-
-int socketOps::getsockname(tSOCKET s, std::string &address, u_short &port) throw()
-{
-	sockaddr_in in4 = {0};
-#ifdef _WIN32
-	int in4len = sizeof(in4);
-#else
-	socklen_t in4len = sizeof(in4);
-#endif
-
-	int result = ::getsockname(s,(sockaddr*)&in4,&in4len);	
-	if (result != socketOps::cSOCKET_ERROR)
-	{
-		port = ntohs(in4.sin_port);
-		address = inet_ntoa(in4.sin_addr);
-	}
-	return result;
-}
-
-int socketOps::getsockname(tSOCKET s,endpoint &e) throw()
-{
-	return socketOps::getsockname(s, e.m_address, e.m_port);
-}
-
-void socketOps::getsocknameTHROW(tSOCKET s, endpoint &e) throw(std::runtime_error)
-{
-	if (socketOps::getsockname(s, e) == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error(socketOps::errMsg());
-	}
-}
-
-void socketOps::getsocknameTHROW(tSOCKET s, std::string &address, u_short &port) throw(std::runtime_error)
-{
-	if (socketOps::getsockname(s, address, port) == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error(socketOps::errMsg());
-	}
-}
-
-int socketOps::getpeername(tSOCKET s, std::string &address, u_short &port) throw()
-{
-	address = "";
-	port = 0;
-	sockaddr_in in4 = {0};
-#ifdef _WIN32
-	int in4len = sizeof(in4);
-#else
-	socklen_t in4len = sizeof(in4);
-#endif
-
-	int result = ::getpeername(s, (sockaddr*)&in4,&in4len);	
-	if (result != socketOps::cSOCKET_ERROR)
-	{
-		port = ntohs(in4.sin_port);
-		address = inet_ntoa(in4.sin_addr);
-	}
-	return result;
-}
-
-int socketOps::getpeername(tSOCKET s, endpoint &e) throw()
-{
-	return socketOps::getpeername(s, e.m_address, e.m_port);
-}
-
-void socketOps::getpeernameTHROW(tSOCKET s, endpoint &e) throw(std::runtime_error)
-{
-	if (socketOps::getpeername(s, e) == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error(socketOps::errMsg());
-	}
-}
-
-void socketOps::getpeernameTHROW(tSOCKET s, std::string &address, u_short &port) throw(std::runtime_error)
-{
-	if (socketOps::getpeername(s, address, port) == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error(socketOps::errMsg());
-	}
-}
-
-// accepts IPv4 or IPv6
-int socketOps::addressToHostName(const std::string &address, u_short port, std::string &hostname) throw()
-{
-	struct addrinfo *result/*, hints = {AI_PASSIVE | AI_CANONNAME, AF_INET, SOCK_STREAM}*/;
-
-	std::string portS = tos(port);
-	int err = ::getaddrinfo(address.c_str(),portS.c_str(),0,&result);
-	if ((!err) && result)
-	{
-		char h[NI_MAXHOST + 1] = {0};
-		err = ::getnameinfo(result->ai_addr, (int)result->ai_addrlen, h, NI_MAXHOST, 0, 0, 0);
-		hostname = h;
-		::freeaddrinfo(result);
-	}
-	return err;
-}
-
-int socketOps::addressToHostName(const endpoint &e, std::string &hostname) throw()
-{
-	return socketOps::addressToHostName(e.m_address, e.m_port, hostname);
-}
-
-void socketOps::addressToHostNameTHROW(const std::string &address, u_short port, std::string &hostname) throw(std::runtime_error)
-{
-	if (socketOps::addressToHostName(address, port, hostname) == socketOps::cSOCKET_ERROR)
-	{
-		throw std::runtime_error(socketOps::errMsg());
-	}
-}
-
-void socketOps::addressToHostNameTHROW(const endpoint &e, std::string &hostname) throw(std::runtime_error)
-{
-	socketOps::addressToHostNameTHROW(e.m_address, e.m_port, hostname);
-}
-
-int socketOps::hostNameToAddress(std::string &address, const std::string &hostname, u_short port) throw(std::runtime_error)
-{
-	struct addrinfo *result, hints = {AI_PASSIVE | AI_CANONNAME, AF_INET, SOCK_STREAM};
-	address = "";
-
-	std::string portS = tos(port);
-	int err = ::getaddrinfo(hostname.c_str(), (port ? portS.c_str() : 0), &hints, &result);
-	if ((!err) && result)
-	{
-		address = ::inet_ntoa(((sockaddr_in*)(result->ai_addr))->sin_addr);
-		if (!address.empty() && address.find("0.") == 0)
-		{
-			address = "";
-		}
-		::freeaddrinfo(result);
-	}
-	return err;
-}
-
-std::string socketOps::hostNameToAddress(const std::string &hostname, u_short port) throw(std::runtime_error)
-{
-	std::string address;
-	hostNameToAddress(address, hostname, port);
-	return address;
-}
-
-std::string socketOps::hostNameToAddressTHROW(const std::string &hostname, u_short port) throw(std::runtime_error)
-{
-	std::string address;
-	if (hostNameToAddress(address, hostname, port))
-	{
-		throw std::runtime_error(socketOps::errMsg());
-	}
-	return address;
-}
-
-#ifdef _WIN32
-LPFN_WSAPOLL fnWSAPoll = NULL;
-typedef unsigned long nfds_t;
-
-static void add_to_fd_set_fntr(const socketOps::tSOCKET s, fd_set *fdset) throw()
-{
-	FD_SET(s, fdset);
-}
-#else
-#define fnWSAPoll poll
-#endif
-
-#include <stdio.h>
-int socketOps::socketSelect(std::set<size_t> &readSockets, std::set<size_t> writeSockets, const int timeout) throw()
-{
-	//ELOG("socketSelect: " + tos(readSet.size()) + " - " + tos(writeSet.size()) + " - " + tos(timeout));
-
-#ifdef _WIN32
-	if (!fnWSAPoll)
-	{
-		fd_set readSet;
-		fd_set writeSet;
-		fd_set excepSet;
-		FD_ZERO(&readSet);
-		FD_ZERO(&writeSet);
-		FD_ZERO(&excepSet);
-		for_each(readSockets.begin(), readSockets.end(), std::bind2nd(std::ptr_fun(add_to_fd_set_fntr), &readSet));
-		for_each(writeSockets.begin(), writeSockets.end(), std::bind2nd(std::ptr_fun(add_to_fd_set_fntr), &writeSet));
-		for_each(readSockets.begin(), readSockets.end(), std::bind2nd(std::ptr_fun(add_to_fd_set_fntr), &excepSet));
-		for_each(writeSockets.begin(), writeSockets.end(), std::bind2nd(std::ptr_fun(add_to_fd_set_fntr), &excepSet));
-
-		// as we're workig in milliseconds then we need to convert to
-		// provide select the timeout that is wanted as a timeval
-		struct timeval tm = {(timeout / 1000), ((timeout % 1000) * 1000)};
-		// The Windows version ignores the first arg, no need to calculate it
-		return ::select(0, &readSet, &writeSet, &excepSet, &tm);
-	}
-#endif
-
-	size_t i = 0;
-	nfds_t length = (nfds_t)(readSockets.size() + writeSockets.size());
-        std::vector <struct pollfd>	dataSet (length);
-
-	for (std::set<size_t>::iterator it = readSockets.begin(); it != readSockets.end(); ++it)
-	{
-		dataSet[i].events = POLLIN;
-		dataSet[i++].fd = *it;
-	}
-
-	for (std::set<size_t>::iterator it = writeSockets.begin(); it != writeSockets.end(); ++it)
-	{
-		dataSet[i].events = POLLOUT;
-		dataSet[i++].fd = *it;
-	}
-
-	return fnWSAPoll (&dataSet[0], length, timeout);
-}
-
-#ifdef _WIN32
-/*-------------------------------------------------------------------------
- *
- *      This is a replacement version of pipe for Win32 which allows
- *      returned handles to be used in select(). Note that read/write calls
- *      must be replaced with recv/send.
- *
- *
- *-------------------------------------------------------------------------
- */
-
-int pgpipe(int handles[2])
-{
-	SOCKET s = {0};
-	struct sockaddr_in serv_addr = {0};
-    int len = sizeof(serv_addr);
-
-	handles[0] = handles[1] = (int)INVALID_SOCKET;
-
-	if ((s = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
-	{
-		return -1;
-	}
-
-    serv_addr.sin_family = AF_INET;
-    serv_addr.sin_port = htons(0);
-    serv_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-
-    if (::bind(s, (SOCKADDR *)&serv_addr, len) == SOCKET_ERROR)
-	{
-		::closesocket(s);
-        return -1;
-	}
-
-    if (::listen(s, 1) == SOCKET_ERROR)
-	{
-		::closesocket(s);
-        return -1;
-	}
-
-    if (::getsockname(s, (SOCKADDR *)&serv_addr, &len) == SOCKET_ERROR)
-	{
-		::closesocket(s);
-        return -1;
-	}
-
-    if ((handles[1] = (int)::socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
-	{
-		::closesocket(s);
-        return -1;
-    }
-
-	if (::connect(handles[1], (SOCKADDR *)&serv_addr, len) == socketOps::cSOCKET_ERROR)
-	{
-		::closesocket(s);
-        return -1;
-	}
-
-	if ((handles[0] = (int)::accept(s, (SOCKADDR *)&serv_addr, &len)) == INVALID_SOCKET)
-	{
-		::closesocket(handles[1]);
-		handles[1] = (int)INVALID_SOCKET;
-		::closesocket(s);
-		return -1;
-    }
-
-	::closesocket(s);
-	return 0;
-}
-	
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/webNet/socketOps.h b/Src/Plugins/DSP/sc_serv3/webNet/socketOps.h
deleted file mode 100644
index 10ea2124..00000000
--- a/Src/Plugins/DSP/sc_serv3/webNet/socketOps.h
+++ /dev/null
@@ -1,182 +0,0 @@
-#pragma once
-#ifndef _socketOps_H_
-#define _socketOps_H_
-
-#ifdef _WIN32
-#include <winsock2.h>
-#else
-#include <poll.h>
-#include <string.h>
-#include <netdb.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <errno.h>
-#endif
-#include <set>
-#include "stl/stringUtils.h"
-#include <string>
-#include <stdexcept>
-#include <vector>
-#include <functional>
-#include <algorithm>
-
-using namespace std;
-
-/*
-	socketOps namespace
-
-	Encased in this namespace is a collection of constants, types and functions
-	to help bridge the gap between Win32 and Unix socket implementations, and also
-	to simplify some socket coding.
-
-	Since the Win32 and Unix berkeley socket implementations are extremely similar, I
-	felt that a collection of helper functions were of more use, and more flexible, than
-	full blown socket wrapper classes.
-*/
-
-namespace socketOps
-{
-#ifdef _WIN32
-	typedef SOCKET tSOCKET;
-	extern const SOCKET cINVALID_SOCKET;
-	extern const SOCKET cSOCKET_ERROR;
-	//#define EINPROGRESS WSAEINPROGRESS
-	//#define EWOULDBLOCK WSAEWOULDBLOCK
-	#define SOCKETOPS_WOULDBLOCK	WSAEWOULDBLOCK
-#else
-	typedef int tSOCKET;
-	extern const int cINVALID_SOCKET;
-	extern const int cSOCKET_ERROR;
-	#define WSAEINPROGRESS	EINPROGRESS
-	#define WSAEWOULDBLOCK	EWOULDBLOCK	
-	#define SOCKETOPS_WOULDBLOCK	EWOULDBLOCK
-#endif
-
-	// socket endpoint
-	struct endpoint
-	{
-		std::string m_address;
-		u_short		m_port;
-
-		endpoint() : m_port(0) {}
-		endpoint(const std::string &address, u_short port) : m_address(address), m_port(port) {}
-
-		bool operator==(const endpoint &e) const throw()
-		{
-			return ((m_address == e.m_address) && (m_port == e.m_port));
-		}
-
-		bool operator<(const endpoint &e) const throw()
-		{
-			if (m_address < e.m_address) return true;
-			if (m_address > e.m_address) return false;
-			if (m_port < e.m_port) return true;
-			if (m_port > e.m_port) return false;
-			return false;
-		}
-
-		std::string toString() const throw(); // for messages
-	};
-
-	std::string errMsg(int code) throw();
-	int errCode() throw();
-	inline std::string errMsg() throw() { return socketOps::errMsg(socketOps::errCode()); }
-
-	// createTCPSocket: creates a standard TCP/IP stream socket. The "throw" version
-	//    will throw an exception if an error occurs instead of returning cSOCKET_ERROR
-	tSOCKET createTCPSocket() throw();
-	tSOCKET createTCPSocketTHROW() throw(std::runtime_error);
-
-	// setNonblock: non blocking is set different under unix and windows. These calls
-	//		hide the different. First version returns the typical cSOCKET_ERROR when
-	//		there is a problem. Second will throw an exception instead
-	int setNonblock(tSOCKET s,bool nonblock) throw();
-	void setNonblockTHROW(tSOCKET s,bool nonblock) throw(std::runtime_error);
-
-	// closeTCPSocket: does a blocking shutdown() and close()
-	void closeTCPSocket(tSOCKET s) throw();
-	void forgetTCPSocket(tSOCKET &s) throw(); // similar, but checks s first and then clear it
-	
-	// connect: connects are the same across platforms. These just simplify the calls
-	// addresses for these calls most be #.#.#.#
-	int connect(tSOCKET s, const std::string &address, u_short port) throw();
-	int connect(tSOCKET s, const endpoint &e) throw();
-	void connectTHROW(tSOCKET s, const std::string &address, u_short port) throw(std::runtime_error);
-	void connectTHROW(tSOCKET s, const endpoint &e) throw(std::runtime_error);
-
-	// bind: binds are the same across platforms. These just simplify the calls
-	tSOCKET bind(tSOCKET s, u_short port, const std::string &address = "") throw();
-	tSOCKET bind(tSOCKET s, const endpoint &e) throw();
-	void bindTHROW(tSOCKET s, u_short port, const std::string &address = "") throw(std::runtime_error);
-	void bindTHROW(tSOCKET s, const endpoint &e) throw(std::runtime_error);
-
-	// note: for non-blocking accepts, the various "errno" errors can be different
-	//   under different OS's. If you use the calls that do not throw exception you
-	//   will have to handle these differences yourself. If you call the ones that
-	//   throw, I try to handle it for you. In these calls, if the nonblocking parameter
-	//   is true, the call will return cSOCKET_ERROR if accept has nothing to do (returns
-	//   EWOULDBLOCK or similar). If a REAL error occurs, then it throws an exception.
-	int accept(tSOCKET s, endpoint &e) throw();
-	int accept(tSOCKET s, std::string &address, u_short &port) throw();
-	int acceptTHROW(tSOCKET s, endpoint &e, bool nonblocking) throw(std::runtime_error);
-	int acceptTHROW(tSOCKET s, std::string &address, u_short &port, bool nonblocking) throw(std::runtime_error);
-	
-	// listen: helper func that throws an exception instead of returning an error code
-	void listenTHROW(tSOCKET s, int backlog = SOMAXCONN) throw(std::runtime_error);
-
-	// waiting on a non-blocking connect call is messy. Use this call to avoid
-	// the muck	
-	typedef enum { NBC_ERROR, NBC_INPROGRESS, NBC_CONNECTED } nonBlockConnect_t;
-	nonBlockConnect_t nonBlockingConnectWait(tSOCKET s, std::string &error) throw();
-
-	int  socketSelect(std::set<size_t> &readSockets, std::set<size_t> writeSockets, const int timeout) throw();
-
-	int getsockname(tSOCKET s, endpoint &e) throw();
-	int getsockname(tSOCKET s, std::string &address, u_short &port) throw();
-	void getsocknameTHROW(tSOCKET s, endpoint &e) throw(std::runtime_error);
-	void getsocknameTHROW(tSOCKET s, std::string &address, u_short &port) throw(std::runtime_error);
-
-	int getpeername(tSOCKET s, endpoint &e) throw();
-	int getpeername(tSOCKET s, std::string &address, u_short &port) throw();
-	void getpeernameTHROW(tSOCKET s, endpoint &e) throw(std::runtime_error);
-	void getpeernameTHROW(tSOCKET s, std::string &address, u_short &port) throw(std::runtime_error);
-
-	int addressToHostName(const endpoint &e, std::string &hostname) throw();
-	int addressToHostName(const std::string &address, u_short port, std::string &hostname) throw();
-	void addressToHostNameTHROW(const endpoint &e, std::string &hostname) throw(std::runtime_error);
-	void addressToHostNameTHROW(const std::string &address, u_short port, std::string &hostname) throw(std::runtime_error);
-
-	int hostNameToAddress(std::string &address, const std::string &hostname, u_short port = 0) throw(std::runtime_error);
-	std::string hostNameToAddress(const std::string &hostname, u_short port = 0) throw(std::runtime_error);
-	std::string hostNameToAddressTHROW(const std::string &hostname, u_short port = 0) throw(std::runtime_error);
-}
-
-#ifdef _WIN32
-/*-------------------------------------------------------------------------
- *
- *      This is a replacement version of pipe for Win32 which allows
- *      returned handles to be used in select(). Note that read/write calls
- *      must be replaced with recv/send.
- *
- *
- *-------------------------------------------------------------------------
- */
-int pgpipe(int handles[2]);
-#endif
-
-#ifndef _WIN32
-#define pgpipe(a)				pipe(a)
-#define piperead(a,b,c)			read(a,b,c)
-#define pipewrite(a,b,c)		write(a,b,c)
-#define pipeclose(a)			{ ::shutdown(a,2); ::close(a);}
-#else
-#define piperead(a,b,c)			recv(a,b,c,0)
-#define pipewrite(a,b,c)		send(a,b,c,0)
-#define pipeclose(a)			 { ::shutdown(a,SD_BOTH); ::closesocket(a); }
-#endif
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/webNet/urlUtils.cpp b/Src/Plugins/DSP/sc_serv3/webNet/urlUtils.cpp
deleted file mode 100644
index 75c0d492..00000000
--- a/Src/Plugins/DSP/sc_serv3/webNet/urlUtils.cpp
+++ /dev/null
@@ -1,240 +0,0 @@
-#include "urlUtils.h"
-#include "stl/stringUtils.h"
-#include <set>
-#include <ctype.h>
-#ifdef _WIN32
-#include <crtdbg.h>
-#define snprintf _snprintf
-#define unused_attribute
-#else
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#define _ASSERTE assert
-#define unused_attribute __attribute__((unused))
-#endif
-
-using namespace std;
-using namespace stringUtil;
-
-static string gExcluded = " <>#%\"{}|\\^[]`";
-static string gReserved = ";/?:@&=+$,";
-static string gMark = "-_.!~*'()";
-static string gDigit = "0123456789";
-static string gLowAlpha = "abcdefghijklmnopqrstuvwxyz";
-static string gHiAlpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-static string gUnreserved_RFC3986 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~";
-static string gReserved_RFC3986 = "!*'();:@&=+$,/?%#[]";
-
-template<class T>
-static set<T> setunion(const set<T> &s1, const set<T> &s2)
-{
-	set<T> result(s1);
-	result.insert(s2.begin(), s2.end());
-	return result;
-}
-
-static set<char> gSetExcluded(gExcluded.begin(), gExcluded.end());
-static set<char> gSetReserved(gReserved.begin(), gReserved.end());
-static set<char> gSetExcludedAndReserved(setunion(gSetExcluded, gSetReserved));
-static set<char> gSetMark(gMark.begin(), gMark.end());
-static set<char> gSetLowAlpha(gLowAlpha.begin(), gLowAlpha.end());
-static set<char> gSetHiAlpha(gHiAlpha.begin(), gHiAlpha.end());
-static set<char> gSetDigit(gDigit.begin(), gDigit.end());
-static set<char> gSetAlpha(setunion(gSetLowAlpha, gSetHiAlpha));
-static set<char> gSetAlphanum(setunion(gSetAlpha, gSetDigit));
-static set<char> gSetUnreserved(setunion(gSetAlphanum, gSetMark));
-static set<char> gSetUnreserved_RFC3986(gUnreserved_RFC3986.begin(), gUnreserved_RFC3986.end());
-static set<char> gSetReserved_RFC3986(gReserved_RFC3986.begin(), gReserved_RFC3986.end());
-
-////////////////////////////////////////////////
-////////// Escaping Funcs //////////////////////
-///////////////////////////////////////////////
-
-// convert a character to its hex representation
-static string escapeChar(__uint8 c) throw()
-{
-	char buf[8] = {0};
-	int len unused_attribute = snprintf(buf, sizeof(buf), "%%%02X", (int)c);
-	_ASSERTE(len == 3);
-	return buf;
-}
-
-// convert the char if it's in the set
-static string escapeIfInSet(char c,const set<char> &st) throw()
-{
-	return (st.find(c) == st.end() ? string(1, c) : escapeChar(c)); 
-}
-
-static string escapeIfNotInSet(char c, const set<char> &st) throw()
-{
-	return (st.find(c) == st.end() ? escapeChar(c) : string(1, c));
-}
-
-template<typename ESC,typename STYPE>
-static string escapeString(const STYPE &s, const set<char> &st, ESC func) throw()
-{
-	string result;
-	for (typename STYPE::const_iterator i = s.begin(); i != s.end(); ++i)
-	{
-		result += func(*i,st);
-	}
-	return result;
-}
-
-string urlUtils::escape(const std::string &s) throw()
-{
-	return escapeString(s, gSetExcludedAndReserved, escapeIfInSet);
-}
-
-string urlUtils::escapeURI_RFC3986(const uniString::utf8 &s) throw()
-{
-	return escapeString(s, gSetUnreserved_RFC3986, escapeIfNotInSet);
-}
-
-/////////////////////////////////////////////////////
-//////////// Unescaping funcs //////////////////////
-////////////////////////////////////////////////////
-
-// convert %xx to a character
-inline char unescapeSequence(const string &s) throw()
-{
-	_ASSERTE(s.size() == 3);
-	_ASSERTE(s[0] == '%' && isxdigit(s[1]) && isxdigit(s[2]));
-	unsigned int v = 0;
-	sscanf(s.c_str(), "%%%02x", &v);
-	return (char)v;
-}
-
-uniString::utf8 urlUtils::unescapeString(const string &s) throw()
-{
-	string result;
-	string escTok;
-	int ccnt(0);
-
-	for (string::const_iterator i = s.begin(); i != s.end(); ++i)
-	{
-		bool escChar(false);
-		switch (ccnt)
-		{
-			case 0:
-			{
-				escChar = ((*i) == '%');
-				break;
-			}
-			case 1:
-			{
-				escChar = (isxdigit(*i) ? true : false);
-				break;
-			}
-			case 2:
-			{
-				escChar = (isxdigit(*i) ? true : false);
-				break;
-			}
-		}
-
-		if (escChar)
-		{
-			escTok += (*i);
-			++ccnt;
-		}
-		else
-		{
-			result += escTok;
-			ccnt = 0;
-			if ((*i) == '+')
-			{
-				result += " ";
-			}
-			else
-			{
-				result += (*i);
-			}
-		}
-		if (ccnt == 3)
-		{
-			result += unescapeSequence(escTok);
-			escTok = "";
-			ccnt = 0;
-		}
-	}
-
-	result += escTok;
-	return uniString::utf8(result);
-}
-
-////////////////////////////////////////////
-/////////// Classes ////////////////////////
-string urlUtils::urlQueryEntry::escape() const throw()
-{
-	string result(escapeString(m_entry.first, gSetExcludedAndReserved, escapeIfInSet));
-
-	if (!m_entry.second.empty())
-	{
-		result += "=" + escapeString(m_entry.second, gSetExcludedAndReserved, escapeIfInSet);
-	}
-
-	return result;
-}
-
-urlUtils::urlQueryEntry urlUtils::urlQueryEntry::parse(const string &s) throw()
-{
-	urlUtils::urlQueryEntry result;
-
-	if (!s.empty())
-	{
-		string::size_type pos = s.find("=");
-		result.m_entry.first = unescapeString(s.substr(0,pos));
-		result.m_entry.second = (pos == string::npos ? "" : unescapeString(s.substr(pos+1)));
-	}
-
-	return result;
-}
-
-string urlUtils::urlQuery::escape() const throw()
-{
-	string result;
-
-	for (vector<urlQueryEntry>::const_iterator i = m_query.begin(); i != m_query.end(); ++i)
-	{
-		result += (*i).escape();
-		if (i + 1 != m_query.end())
-		{
-			result += "&";
-		}
-	}
-
-	return result;
-}
-
-urlUtils::urlQuery urlUtils::urlQuery::parse(const std::string &sin) throw()
-{
-	urlUtils::urlQuery result;
-	parse(sin, result);
-	return result;
-}
-
-void urlUtils::urlQuery::parse(const std::string &sin, urlQuery &q) throw()
-{
-	q.clear();
-	string s(sin);
-
-	while (s != "")
-	{
-		if (!s.empty())
-		{
-			string::size_type pos = s.find("&");
-			q.m_query.push_back(urlUtils::urlQueryEntry::parse(s.substr(0, pos)));
-			if (pos == string::npos)
-			{
-				break;
-			}
-			s = s.substr(pos + 1);
-		}
-		else
-		{
-			break;
-		}
-	}
-}
diff --git a/Src/Plugins/DSP/sc_serv3/webNet/urlUtils.h b/Src/Plugins/DSP/sc_serv3/webNet/urlUtils.h
deleted file mode 100644
index 0dfa344e..00000000
--- a/Src/Plugins/DSP/sc_serv3/webNet/urlUtils.h
+++ /dev/null
@@ -1,196 +0,0 @@
-#pragma once
-#ifndef _urlUtils_H_
-#define _urlUtils_H_
-
-#include <string.h>
-#include <stdlib.h>
-#include <string>
-#include <vector>
-#include <stdexcept>
-#include "unicode/uniString.h"
-#include "stl/stringUtils.h"
-
-//*************************************************************************//
-/*  urlUtils
-
-	Collection of classes to help create properly escaped URLs, and to
-	parse out and convert escaped URLs (see RFC 2396).
-
-	1) Creating a properly escaped url
-
-		Create an urlBuilder object. Add the query data to it. Call escape() to
-		retrieve the entire URL as a properly escaped string.
-
-		urlBuilder ub("http",urlAuthority("127.0.0.1","80","neil%%%radisch"),"/this/is/a/test");
-		ub.addQueryEntry(urlQueryEntry("full name","Neil Mark Radisch"));
-		ub.addQueryEntry(urlQueryEntry("flag",""));
-		ub.addQueryEntry(urlQueryEntry("wierd_stuff","!@#$%^&&&===\"\'*()"));
-		cout << ub.escape() << endl; // print escaped url to screen
-
-	2) Parse out query data from an escaped url
-
-		These utilities do not parse out a complete url. They were designed
-		to work in conjunction with the mclib webserver utility which
-		takes care of parsing out everything up to the query string. As such,
-		the parsing here is limited to the query.
-
-		urlQuery uq(urlQuery::parse(getEscapedQueryString())); // parse the query string
-		// now walk through the results and print to screen
-		for (urlQuery::const_iterator i = uq.begin(); i != uq.end(); ++i)
-		{
-			cout << "key = " << (*i).getKey() << endl;
-			cout << "value = " << (*i).getValue() << endl;
-			cout << endl;
-		}
-*/
-//*************************************************************************//
-
-namespace urlUtils {
-
-	class urlQueryEntry
-	{
-		std::pair<uniString::utf8, uniString::utf8> m_entry;
-	public:
-		urlQueryEntry(){}
-		template<typename KEY, typename VALUE> // can be string or utf8
-		urlQueryEntry(const KEY &key, const VALUE &value)
-			:m_entry(key, value){}
-		urlQueryEntry(const urlQueryEntry &uqe)
-			:m_entry(uqe.m_entry){}
-		urlQueryEntry& operator = (const urlQueryEntry &uqe)
-			{ m_entry = uqe.m_entry; return *this; }
-		bool operator == (const urlQueryEntry &uqe) const throw() { return m_entry == uqe.m_entry; }
-
-		// set with unescaped data
-		template<typename KEY,typename VALUE> // string or utf8
-		void set(const KEY &key, const VALUE &value)
-			{ m_entry = std::pair<uniString::utf8, uniString::utf8>(key, value); }
-
-		// return query as escaped string
-		std::string escape() const throw();
-
-		// parse from escaped data
-		static urlQueryEntry parse(const std::string &s) throw();
-
-		// get unescaped values
-		std::pair<uniString::utf8, uniString::utf8> get() const throw() { return m_entry; }
-		uniString::utf8 getKey() const throw()	{ return m_entry.first; }
-		uniString::utf8 getValue() const throw() { return m_entry.second; }
-	};
-
-	class urlQuery
-	{
-		std::vector<urlQueryEntry>	m_query;
-	public:
-		typedef std::vector<urlQueryEntry>::iterator iterator;
-		typedef std::vector<urlQueryEntry>::const_iterator const_iterator;
-
-		urlQuery(){}
-		bool operator==(const urlQuery &uq) const throw() { return m_query == uq.m_query; }
-
-		void addQueryEntry(const urlQueryEntry &uqe) { m_query.push_back(uqe); }
-		void addQueryEntry(const std::string &key, const std::string &value) { m_query.push_back(urlQueryEntry(key, value)); }
-		void addQueryEntry(const uniString::utf8 &key, const uniString::utf8 &value) { m_query.push_back(urlQueryEntry(key, value)); }
-		std::string escape() const throw();
-		bool empty() const throw()	{ return m_query.empty(); }
-		size_t size() const throw() { return m_query.size(); }
-		urlQueryEntry& operator[](size_t index) { return m_query[index]; }
-		iterator begin() throw() { return m_query.begin(); }
-		iterator end() throw() { return m_query.end(); }
-		const_iterator begin() const throw() { return m_query.begin(); }
-		const_iterator end() const throw() { return m_query.end(); }
-		void clear() throw() { m_query.clear(); }
-
-		static urlQuery parse(const std::string &s) throw();
-		static void parse(const std::string &s, urlQuery &q) throw();
-
-		void parseString(const std::string &s) throw() { parse(s,*this); }
-
-		urlQuery::const_iterator findKey(const uniString::utf8 &key) const throw()
-		{
-			for (std::vector<urlQueryEntry>::const_iterator i = m_query.begin(); i != m_query.end(); ++i)
-			{
-				if ((*i).getKey() == key)
-					return i;
-			}
-			return m_query.end();
-		}
-
-		bool hasKey(const uniString::utf8 &key) const throw() { return (findKey(key) != m_query.end()); }
-
-		template<typename T>
-		T keyValue(const uniString::utf8 &key,const T &deflt) const throw()
-		{
-			urlQuery::const_iterator i = findKey(key);
-			return (i != m_query.end() ? (*i).getValue() : deflt);
-		}
-		template<typename T>
-		T keyValue(const uniString::utf8 &key) const throw()
-		{
-			return keyValue(key,T());
-		}
-	};
-
-	template<>
-	inline bool urlQuery::keyValue(const uniString::utf8 &key, const bool &deflt) const throw()
-	{
-		urlQuery::const_iterator i = findKey(key);
-		if (i == m_query.end())
-		{
-			return deflt;
-		}
-
-		uniString::utf8 v = (*i).getValue();
-		while (!v.empty() && stringUtil::safe_is_space(v[0]))
-		{
-			v = v.substr(1);
-		}
-		if (v.empty())
-		{
-			return deflt;
-		}
-		return (v[0] == 't' || v[0] == 'T' || v[0] == '1' || v[0] == 'y' || v[0] == 'Y');
-	}
-
-	template<>
-	inline int urlQuery::keyValue(const uniString::utf8 &key, const int &deflt) const throw()
-	{
-		urlQuery::const_iterator i = findKey(key);
-		return (i != m_query.end() ? atoi((const char *)(*i).getValue().c_str()) : deflt);
-	}
-
-	template<>
-	inline long urlQuery::keyValue(const uniString::utf8 &key, const long &deflt) const throw()
-	{
-		urlQuery::const_iterator i = findKey(key);
-		return (i != m_query.end() ? atol((const char *)(*i).getValue().c_str()) : deflt);
-	}
-
-	template<>
-	inline unsigned int urlQuery::keyValue(const uniString::utf8 &key, const unsigned int &deflt) const throw()
-	{
-		urlQuery::const_iterator i = findKey(key);
-		return (i != m_query.end() ? (unsigned int)atol((const char *)(*i).getValue().c_str()) : deflt);
-	}
-
-#ifdef _WIN32
-	template<>
-	inline __int64 urlQuery::keyValue(const uniString::utf8 &key, const __int64 &deflt) const throw()
-	{
-		urlQuery::const_iterator i = findKey(key);
-		return (i != m_query.end() ? _atoi64((const char *)(*i).getValue().c_str()) : deflt);
-	}
-#endif
-
-	template<>
-	inline bool urlQuery::keyValue<bool>(const uniString::utf8 &key) const throw()
-	{
-		return keyValue(key, false);
-	}
-
-	std::string escape(const std::string &s) throw();
-	uniString::utf8 unescapeString(const std::string &s) throw();
-	std::string escapeURI_RFC3986(const uniString::utf8 &s) throw();
-}
-
-#endif
diff --git a/Src/Plugins/DSP/sc_serv3/yp2.cpp b/Src/Plugins/DSP/sc_serv3/yp2.cpp
deleted file mode 100644
index 8e7fd5d0..00000000
--- a/Src/Plugins/DSP/sc_serv3/yp2.cpp
+++ /dev/null
@@ -1,1233 +0,0 @@
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-#include <assert.h>
-#include "cpucount.h"
-#include "yp2.h"
-#include "updater.h"
-#include "stl/stringUtils.h"
-#include "file/fileUtils.h"
-#include "aolxml/aolxml.h"
-#include "bandwidth.h"
-#include "streamData.h"
-#include "stats.h"
-#include "metadata.h"
-#include "services/stdServiceImpl.h"
-
-using namespace std;
-using namespace uniString;
-using namespace stringUtil;
-
-static AOL_namespace::mutex g_YP2Lock;
-static yp2 *gYP2 = 0;
-extern int auth_enabled;
-
-// for production we don't need to prettify the xml for the YP
-#ifdef XML_DEBUG
-#define EOL "\n"
-#else
-#define EOL ""
-#endif
-
-#define DEBUG_LOG(...) do { if (gOptions.yp2Debug()) DLOG(__VA_ARGS__); } while (0)
-
-#define ADD_CMD 0
-#define REM_CMD 1
-#define UPD_CMD 2
-
-#define REQUEST_KEY			m_userData_u
-#define REQUEST_CMD			m_userData_i
-#define REQUEST_USR			m_userData_p
-
-uniString::utf8 yp2::logString(const yp2::yp2SessionKey &key) throw() { return "key=" + tos(key); }
-
-yp2::stationInfo::stationInfo() throw() : m_updateFrequency(gOptions.ypReportInterval()), m_advertMode(0)
-{
-    m_allowSSL = -1;
-    m_allowAllFormats = -1;
-    m_allowMaxBitrate = 0;
-    m_allowBackupURL = -1;
-}
-
-
-///////////////////////////////////////////////////////////////////////////////////////////
-void yp2::updateYPBandWidthSent(webClient::request r) throw()
-{
-	// this effectively works out the size in the same manner
-	// as webclient::toRequest(..) does to build the request.
-	size_t total = r.m_content.size() + r.m_contentType.size() +
-				   // 'POST' or 'GET' with '?' on the front
-				   (r.m_method == webClient::request::POST ? 4 : 3) +
-				   64 + r.m_addr.size() + g_userAgent.size() +
-				   (!r.m_content.empty() ? r.m_content.size() : 0);
-
-	for (httpHeaderMap_t::const_iterator i = r.m_queryVariables.begin(); i != r.m_queryVariables.end(); ++i)
-	{
-		if (i != r.m_queryVariables.begin())
-		{
-			++total;
-		}
-		total += urlUtils::escapeURI_RFC3986((*i).first).size();
-		if (!(*i).second.empty())
-		{
-			total += 1 + urlUtils::escapeURI_RFC3986((*i).second).size();
-		}
-	}
-
-	if (!r.m_XFF.empty())
-	{
-		total += 18 + r.m_XFF.size();
-	}
-
-	if ((r.m_method == webClient::request::POST) && r.m_content.empty())
-	{
-		total += 48;
-	}
-	else if (!r.m_contentType.empty())
-	{
-		total += 15 + r.m_contentType.size();
-	}
-
-	bandWidth::updateAmount(bandWidth::YP_SENT, total);
-}
-
-size_t yp2::requestsInQueue() throw()
-{
-	stackLock sml(g_YP2Lock);
-
-	return (gYP2 ? gYP2->queueEntries() : 0);
-}
-
-yp2::yp2() throw() : webClient(YP2_LOGNAME)
-{
-	stackLock sml(g_YP2Lock);
-
-	gYP2 = this;
-	m_addFailed = false;
-	m_ignoreAdd = false;
-	m_errorCode = 200;
-	m_errorMsg = "";
-	m_errorMsgExtra = "";
-	m_sessionKeyCounter = 1;
-}
-
-yp2::~yp2() throw() 
-{
-	stackLock sml(g_YP2Lock);
-
-	gYP2 = 0;
-}
-
-void yp2::getAddUpdateBody(webClient::request& r, const ypInfo& info, const bool update) throw()
-{
-	r.m_method = webClient::request::POST;
-	r.m_addr = gOptions.ypAddr();
-	r.m_port = gOptions.ypPort();
-	r.m_path = gOptions.ypPath();
-	r.m_nonBlocking = 1;
-	r.m_contentType = "text/xml;charset=utf-8";
-	r.REQUEST_KEY = info.key;
-	r.REQUEST_CMD = (!update ? ADD_CMD : UPD_CMD);
-	r.REQUEST_USR = reinterpret_cast<void*>(info.streamPublic);
-	r.m_sid = (!info.sid ? DEFAULT_CLIENT_STREAM_ID : info.sid);
-	r.m_XFF = metrics::metrics_verifyDestIP(gOptions);
-
-	utf8 id;
-	if (update)
-	{
-		yp2_server_state &yp2ss = m_serverMap[info.key];
-		id = ("<id>" + yp2ss.m_serverID.escapeXML() + "</id>");
-	}
-
-	const utf8 xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" EOL\
-					 "<yp version=\"2\">" EOL\
-					 "<cmd op=\"" + utf8(!update ? "add" : "update") + "\" seq=\"1\">" EOL\
-					 "<tstamp>" + tos(::time(NULL)) + "</tstamp>" EOL\
-					 "<url>" EOL\
-					 "<port>" + tos(g_portForClients) + "</port>" EOL\
-					 "<path>" + getStreamPath(info.sid).escapeXML() + "</path>" EOL\
-					 "<sid>" + tos(r.m_sid) + "</sid>" EOL\
-					 "<alt>" + gOptions.m_usedAlternatePorts + "</alt>" EOL\
-					 "</url>" EOL\
-					 + ((!info.streamPublic && !gOptions.cdn().empty()) ? "<cdn>1</cdn>" : "") + EOL\
-					 "<bitrate>" + tos(info.bitrate) + "</bitrate>" EOL\
-					 "<samplerate>" + tos(info.samplerate) + "</samplerate>" EOL\
-					 "<vbr>" + tos(info.vbr) + "</vbr>" EOL\
-					 "<mimetype>" + info.mimeType.escapeXML() + "</mimetype>" EOL\
-					 + (update ? id : "") + EOL\
-					 "<sa>" + tos(info.streamArtwork) + "</sa>" EOL\
-					 "<pa>" + tos(info.playingArtwork) + "</pa>" EOL\
-					 "<peak>" + tos(info.peakClientConnections) + "</peak>" EOL\
-					 "<maxclients>" + (info.maxClientConnections > 0 ? tos(info.maxClientConnections) : "unlimited") + "</maxclients>" EOL\
-					 "<authhash>" + info.authhash.escapeXML() + "</authhash>" EOL\
-					 "<dj>" + info.sourceUser.escapeXML() + "</dj>" EOL\
-					 "<source>" + (!info.sourceIdent.empty() ? info.sourceIdent.escapeXML() : "Legacy / Unknown") + "</source>" EOL\
-					 "<dnas>" + gOptions.getVersionBuildStrings().c_str() + "/" SERV_OSNAME"</dnas>" EOL\
-					 "<cpu>" + tos(gOptions.getCPUCount()) + "/" + tos(cpucount()) + "</cpu>" EOL\
-					 + (!info.relayURL.empty() ? "<relayurl>" + info.relayURL.escapeXML() + "</relayurl>" : "") + EOL\
-					 + (update ? "<stats>" EOL\
-					 "<listeners>" + tos(info.numListeners) + "</listeners>" EOL\
-					 "<uniquelisteners>" + tos(info.numUniqueListeners) + "</uniquelisteners>" EOL\
-					 "<avglistentime>" + tos(info.avgUserListenTime) + "</avglistentime>" EOL\
-					 "<newsessions>" + tos(info.numberOfClientsConnectedMoreThanFiveMinutes) + "</newsessions>" EOL\
-					 "<connects>" + tos(info.numberOfClientConnectsSinceLastUpdate) + "</connects>" EOL\
-					 "</stats>" : "") + EOL\
-					 + (!info.songMetadataForYP2.empty() ? METADATA + EOL +
-						info.songMetadataForYP2 + EOL + E_METADATA : "") + EOL\
-					 "</cmd>" EOL"</yp>";
-
-	r.m_content.insert(r.m_content.end(), xml.begin(), xml.end());
-	updateYPBandWidthSent(r);
-
-	if (!update)
-	{
-		yp2_server_state &yp2ss = m_serverMap[info.key];
-		DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " add for " + logString(info.key) +
-				  " [" + tos(yp2ss.m_addRetries) +  "]" + eol() + xml);
-
-		++yp2ss.m_addRetries;
-		yp2ss.m_addState = ADD_PENDING;
-		yp2ss.m_lastOperationTime = ::time(NULL);
-
-		queueRequest((yp2ss.m_lastRequest = r));
-	}
-	else
-	{
-		DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " " + logString(info.key) + eol() + xml);
-		queueRequest(r);
-	}
-}
-
-/*
-	It is called before each update to confirm that the connection to yp is still good.
-	Normally this wouldn't really be necessary, but if yp goes down, we want to re-establish
-	without having to restart sc_serv
-*/
-yp2::yp2SessionKey yp2::pvt_add(ypInfo& info) throw(exception)
-{
-	if (info.key == INVALID_SESSION_KEY)
-	{
-		info.key = m_sessionKeyCounter;
-		while (++m_sessionKeyCounter == INVALID_SESSION_KEY) {;}
-	}
-
-	stackLock sml(m_serverMapLock);
-
-	if (gOptions.yp2Debug())
-	{
-		// either is okay since this is called continuouslly
-		serverMap_t::const_iterator i = m_serverMap.find(info.key);
-		if (i == m_serverMap.end())
-		{
-			DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " No entry for " + logString(info.key));
-		}
-	}
-
-	yp2_server_state &yp2ss = m_serverMap[info.key];
-	yp2ss.m_authHash = info.authhash;
-	yp2ss.m_sessionKey = info.key;
-	yp2ss.m_streamID = info.sid;
-
-	assert(yp2ss.m_addState != ADD_REMOVEISSUED);
-
-	bool must_delay_add = false;
-	if (yp2ss.m_addState == ADD_FAILED)
-	{
-		must_delay_add = true;
-
-		static time_t ADD_RETRY_INTERVAL(gOptions.ypTimeout());
-		time_t t = ::time(NULL);
-		if (t < yp2ss.m_lastOperationTime) // rollover compensation
-		{
-			yp2ss.m_lastOperationTime = t;
-		}
-		if (t - yp2ss.m_lastOperationTime >= ADD_RETRY_INTERVAL)
-		{
-			must_delay_add = false;
-		}
-	}
-
-	// if state is NONE (just created) or failed, we try again
-	if (((yp2ss.m_addState == ADD_NONE) || (yp2ss.m_addState == ADD_FAILED) ||
-		 (yp2ss.m_addState == UPDATE_FAILED)) && (!must_delay_add))
-	{	
-		webClient::request r;
-		getAddUpdateBody(r, info, false);
-		return info.key;
-	}
-	return INVALID_SESSION_KEY;
-}
-
-/*
-	remove() is called when a stream is destroyed, and this can lead to a number of cases
-	that interact with add
-
-	1) ADD_NONE - no problem here. Nothing has been done, nothing needs to be done. just remove table entry
-	2) ADD_FAILED - again no problem. remove table entry
-	3) ADD_SUCCEDED - again no problem. Send remove to yp(). Response function will remove table entry
-	4) ADD_PENDING - This is trouble. We cannot queue a remove() because we don't have the
-			serverID yet. We also don't know what will happen with the pending add.
-			To deal with this we transition to the ADD_REMOVEISSUED state.
-			If add() succeeds and finds this state, we assume that
-			remove() occured, and then we post the actual remove to yp. If the subsequent add fails, it must
-			remove the table entry
-*/	
-void yp2::pvt_queue_remove(const ypInfo& info) throw()
-{
-	if (info.key != INVALID_SESSION_KEY)
-	{
-		webClient::request r;
-		r.m_method = webClient::request::POST;
-		r.m_addr = gOptions.ypAddr();
-		r.m_port = gOptions.ypPort();
-		r.m_path = gOptions.ypPath();
-		r.m_nonBlocking = 0;
-		r.m_contentType = "text/xml;charset=utf-8";
-		r.REQUEST_KEY = info.key;
-		r.REQUEST_CMD = REM_CMD;
-		r.REQUEST_USR = reinterpret_cast<void*>(info.streamPublic);
-		r.m_sid = (!info.sid ? DEFAULT_CLIENT_STREAM_ID : info.sid);
-
-		yp2_server_state &yp2ss = m_serverMap[info.key];
-		assert(yp2ss.m_sessionKey == info.key);
-
-		utf8 cdn = ((!info.streamPublic && !gOptions.cdn().empty()) ? "<cdn>1</cdn>" EOL : "");
-		utf8 xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" EOL\
-				   "<yp version=\"2\">" EOL\
-				   "<cmd op=\"remove\" seq=\"1\">" EOL\
-				   "<tstamp>" + tos(::time(NULL)) + "</tstamp>" EOL\
-				   "<url>" EOL\
-				   "<port>" + tos(g_portForClients) + "</port>" EOL\
-				   "<path>" + getStreamPath(info.sid).escapeXML() + "</path>" EOL\
-				   "<sid>" + tos(r.m_sid) + "</sid>" EOL\
-				   "<alt>" + gOptions.m_usedAlternatePorts + "</alt>" EOL\
-				   "</url>" EOL\
-				   + cdn +\
-				   "<id>" + yp2ss.m_serverID.escapeXML() + "</id>" EOL\
-				   + (info.peakClientConnections != (size_t)-1 ? "<peak>" + tos(info.peakClientConnections) + "</peak>" : "") + EOL\
-				   + (info.maxClientConnections != (size_t)-1 ? "<maxclients>" +
-					 (info.maxClientConnections > 0 ? tos(info.maxClientConnections) : "unlimited") + "</maxclients>" : "") + EOL\
-				   "<authhash>" + info.authhash.escapeXML() + "</authhash>" EOL\
-				   "</cmd>" EOL\
-				   "</yp>";
-
-		DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " " + logString(info.key) + eol() + xml);
-
-		r.m_content.insert(r.m_content.end(),xml.begin(),xml.end());
-
-		updateYPBandWidthSent(r);
-		queueRequest(r);
-	}
-}
-
-void yp2::pvt_remove(ypInfo& info) throw(exception)
-{
-	assert(info.key != INVALID_SESSION_KEY);
-
-	stackLock sml(m_serverMapLock);
-
-	serverMap_t::iterator i = m_serverMap.find(info.key);
-	if (i == m_serverMap.end())
-	{
-		throwEx<runtime_error>("Internal error. " + logString(info.key) +
-							   " does not exist in server map.");
-	}
-
-	yp2_server_state &yp2ss = (*i).second;
-
-	assert(yp2ss.m_authHash == info.authhash);
-	assert(yp2ss.m_sessionKey == info.key);
-
-	metrics::metrics_stream_down (yp2ss.m_streamID, yp2ss.m_stationInfo.m_radionomyID,
-		yp2ss.m_serverID, yp2ss.m_stationInfo.m_publicIP, info.streamStartTime);
-
-	switch (yp2ss.m_addState)
-	{
-		case ADD_NONE:
-		case ADD_FAILED:
-		case UPDATE_FAILED:
-		{
-			DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " erasing map entry for key=" + tos(info.key));
-			m_serverMap.erase(info.key);
-			break;
-		}
-
-		case ADD_PENDING:
-		{
-			yp2ss.m_addState = ADD_REMOVEISSUED;
-			break;
-		}
-
-		case ADD_SUCCEEDED:
-		{
-			if (yp2ss.m_serverID.empty())
-			{
-				throwEx<runtime_error>("Internal error. serverID for " +
-									   logString(info.key) + " is empty.");
-			}
-
-			DEBUG_LOG(YP2_LOGNAME "Sending remove for " + (*i).second.logString());
-			pvt_queue_remove(info);
-			break;
-		}
-
-		case ADD_REMOVEISSUED:
-		default:
-		{
-			throwEx<runtime_error>(YP2_LOGNAME + string(__FUNCTION__) + " Internal error. Bad state");
-			break;
-		}
-	}
-}
-
-// only send an update if everything is ok (ADD_SUCCEEDED)
-yp2::updateResult yp2::pvt_update(const ypInfo& info) throw(exception)
-{
-	assert(info.key != INVALID_SESSION_KEY);
-
-	stackLock sml(m_serverMapLock);
-
-	serverMap_t::const_iterator i = m_serverMap.find(info.key);
-	if (i == m_serverMap.end())
-	{
-		throwEx<runtime_error>("Internal error. " + logString(info.key) + " does not exist in server map.");
-	}
-
-	yp2::updateResult result;
-	if ((*i).second.m_addState == ADD_SUCCEEDED)
-	{
-		if ((*i).second.m_serverID.empty())
-		{
-			throwEx<runtime_error>("Internal error. serverID for " + logString(info.key) + " is empty.");
-		}
-
-		webClient::request r;
-		getAddUpdateBody(r, info, true);
-		result.m_requestQueued = 1;
-	}
-	else
-	{
-		// tinkered this after build 10 to prevent a mass of debug spam when we have an
-		// add fail so we will keep a track of the previous state and if it's different
-		assert(m_serverMap.find(info.key) != m_serverMap.end());
-		yp2_server_state &yp2ss = m_serverMap[info.key];
-		assert(yp2ss.m_sessionKey == info.key);
-
-		static time_t ADD_RETRY_INTERVAL(gOptions.ypTimeout());
-		time_t t = ::time(NULL);
-		if (t - yp2ss.m_lastOperationTime >= ADD_RETRY_INTERVAL)
-		{
-			DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " add still pending for " + logString(info.key) +
-					  " [" + tos((int)(*i).second.m_addState) + "] [" + tos((*i).second.m_addRetries)+  "]");
-
-			webClient::request r = yp2ss.m_lastRequest;
-			yp2ss.m_lastOperationTime = t;
-			++yp2ss.m_addRetries;
-
-			r.m_addr = gOptions.ypAddr();
-			r.m_port = gOptions.ypPort();
-			r.m_path = gOptions.ypPath();
-
-			r.m_XFF = metrics::metrics_verifyDestIP(gOptions);
-
-			yp2ss.m_addState = ADD_PENDING;
-			yp2ss.m_lastOperationTime = ::time(NULL);
-
-			updateYPBandWidthSent(r);
-			queueRequest((yp2ss.m_lastRequest = r));
-			result.m_requestQueued = 1;
-			return result;
-		}
-	}
-
-	result.m_maxYPInterval = (*i).second.m_stationInfo.m_updateFrequency;
-
-	return result;
-}
-
-yp2::addState_t yp2::pvt_addStatus(yp2SessionKey key, int &addFailIgnore, int &errorCode) throw()
-{
-	stackLock sml(m_serverMapLock);
-
-	serverMap_t::const_iterator i = m_serverMap.find(key);
-	bool updateFail = false;
-	// if the YP cannot be resolved then allow clients to connect by faking a success
-	if (i != m_serverMap.end() && ((*i).second.m_addState == ADD_SUCCEEDED || (*i).second.m_addState == UPDATE_FAILED))
-	{
-		updateFail = ((*i).second.m_addState == UPDATE_FAILED);
-	}
-	// allow clients if there was a YP failure or it's down for maintenance
-	addFailIgnore = (updateFail ? 2 : m_addFailed || (m_errorCode == YP_MAINTENANCE_CODE));
-	errorCode = m_errorCode;
-
-	return (i != m_serverMap.end() ? (*i).second.m_addState : ADD_NONE);
-}
-
-/////////// response handling //////////////
-// handle response. retry_exceptions do just that. otherwise retry occurs in yptimeout seconds
-
-// what kind of response we get is unimportant, but we will log it if it's an error
-void yp2::response_remove(const request &q, const response &r) throw(exception)
-{
-	yp2SessionKey key = q.REQUEST_KEY;
-
-	serverMap_t::const_iterator i = m_serverMap.find(key);
-	if (i == m_serverMap.end())
-	{
-		throwEx<runtime_error>("Internal error in " + string(__FUNCTION__) +
-							   " serverMap entry missing for " + logString(key));
-	}
-
-	const yp2_server_state &yp2ss = (*i).second;
-	size_t streamID = yp2ss.m_streamID;
-
-	DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " Erasing serverMap entry for " + logString(key));
-	assert(m_serverMap.find(key) != m_serverMap.end());
-	m_serverMap.erase(key);
-
-	aolxml::node *n = 0;
-
-	try
-	{
-		n = aolxml::node::parse(&(r.m_body[0]),r.m_body.size());
-
-		int code = aolxml::subNodeText(n, "/yp/resp/status/statuscode", 200);
-		utf8 msg = aolxml::subNodeText(n, "/yp/resp/status/statustext", (utf8)"");
-		if (code != 200)
-		{
-			throwEx<runtime_error>("Remove error. " + logString(key) +
-								   " code=" + tos(code) + " text=" + msg);
-		}
-		else
-		{
-			int error = aolxml::subNodeText(n, "/yp/resp/error/code", -1);
-			if (error != -1)
-			{
-				ELOG(YP2_LOGNAME "De-listing stream #" + tos(streamID) + " failed. YP2 error code is " +
-								 tos(error) + " [" + aolxml::subNodeText(n, "/yp/resp/error/message", (utf8)"") + "]");
-				utf8 detailed = aolxml::subNodeText(n, "/yp/resp/error/messagedetail", (utf8)"");
-				if (!detailed.empty())
-				{
-					ELOG(YP2_LOGNAME + detailed);
-				}
-			}
-			else
-			{
-				if (q.REQUEST_USR)
-				{
-					ILOG(YP2_LOGNAME "Stream #" + tos(streamID) + " has been removed from the Shoutcast Directory.");
-				}
-			}
-		}
-	}
-	catch(const exception &ex)
-	{
-		ELOG(string(YP2_LOGNAME) + ex.what());
-	}
-
-	forget(n);
-}
-
-void updateDetail(aolxml::node *n, string path, utf8 &original)
-{
-	utf8 value = aolxml::subNodeText(n, path, (utf8)"");
-	if (!value.empty())
-	{
-		original = value;
-		DEBUG_LOG ("changing setting " + path + " to " + value);
-	}
-}
-
-// we generally don't care about the result here (from a state machine standpoint), except that
-// a bad serverID error means we should probably re-add ourselves. We rely on the fact that streamData
-// will initiate an add before every touch if things have failed, so we enter a failed state		
-void yp2::response_update(const request &q, const response &r) throw(exception)
-{
-	yp2SessionKey key = q.REQUEST_KEY;
-
-	assert(m_serverMap.find(key) != m_serverMap.end());
-	yp2_server_state &yp2ss = m_serverMap[key];
-	assert(yp2ss.m_sessionKey == key);
-
-	aolxml::node *n = 0;
-
-	try
-	{
-		// we must check our state, to avoid going berserk if we've queued up a lot of updates
-		// and they are failing. This will cause addState to transition to ADD_FAILED, which causes
-		// "add" to be reposted and state to become ADD_PENDING. In this situation we don't want our
-		// queued updates to fail because that will force the state to ADD_FAILED which will queue up
-		// even more "adds"
-		if (yp2ss.m_addState == yp2::ADD_SUCCEEDED)
-		{
-			m_errorCode = 200;
-			m_errorMsg = "";
-			m_errorMsgExtra = "";
-
-			n = aolxml::node::parse(&(r.m_body[0]),r.m_body.size());
-			int code = aolxml::subNodeText(n, "/yp/resp/status/statuscode", 200);
-			utf8 msg = aolxml::subNodeText(n, "/yp/resp/status/statustext", (utf8)"");
-			if (code != 200)
-			{
-				throwEx<runtime_error>("Update error. " + logString(key) +
-									   " code=" + tos(code) + " msg=" + msg);
-			}
-
-			int error = aolxml::subNodeText(n, "/yp/resp/error/code", -1);
-			if (error != -1)
-			{
-				ELOG(YP2_LOGNAME "Updating listing details for stream #" + tos(yp2ss.m_streamID) +
-					 " failed. YP2 error code is " + tos(error) + " [" +
-					 aolxml::subNodeText(n, "/yp/resp/error/message", (utf8)"") + "]");
-				utf8 detailed = aolxml::subNodeText(n, "/yp/resp/error/messagedetail", (utf8)"");
-				if (!detailed.empty())
-				{
-					ELOG(YP2_LOGNAME + detailed);
-				}
-
-				yp2ss.m_addState = UPDATE_FAILED;
-			}
-			else
-			{
-				updateDetail(n, "/yp/resp/id", yp2ss.m_serverID);
-				updateDetail(n, "/yp/resp/stnid", yp2ss.m_stationID);
-
-				yp2ss.m_stationInfo.m_updateFrequency = aolxml::subNodeText(n, "/yp/resp/updatefreq", yp2ss.m_stationInfo.m_updateFrequency);
-
-				updateDetail(n, "/yp/resp/backupserver", yp2ss.m_stationInfo.m_backupServer);
-				yp2ss.m_stationInfo.m_backupServersList.clear();
-				aolxml::node::nodeList_t nodes = aolxml::node::findNodes(n,"/yp/resp/backupservers/server");
-				if (!nodes.empty())
-				{
-					for (aolxml::node::nodeList_t::const_iterator b = nodes.begin(); b != nodes.end(); ++b)
-					{
-						yp2ss.m_stationInfo.m_backupServersList.push_back((*b)->pcdata());
-					}
-				}
-				else
-				{
-					yp2ss.m_stationInfo.m_backupServersList.clear();
-				}
-				updateDetail(n, "/yp/resp/publicip", yp2ss.m_stationInfo.m_publicIP);
-				updateDetail(n, "/yp/resp/station/name", yp2ss.m_stationInfo.m_streamTitle);
-				updateDetail(n, "/yp/resp/station/genre", yp2ss.m_stationInfo.m_streamGenre[0]);
-				updateDetail(n, "/yp/resp/station/genre2", yp2ss.m_stationInfo.m_streamGenre[1]);
-				updateDetail(n, "/yp/resp/station/genre3", yp2ss.m_stationInfo.m_streamGenre[2]);
-				updateDetail(n, "/yp/resp/station/genre4", yp2ss.m_stationInfo.m_streamGenre[3]);
-				updateDetail(n, "/yp/resp/station/genre5", yp2ss.m_stationInfo.m_streamGenre[4]);
-				updateDetail(n, "/yp/resp/station/logo", yp2ss.m_stationInfo.m_streamLogo);
-				updateDetail(n, "/yp/resp/station/url", yp2ss.m_stationInfo.m_broadcasterURL);
-				updateDetail(n, "/yp/resp/station/callsign", yp2ss.m_stationInfo.m_radionomyID);
-				yp2ss.m_stationInfo.m_advertMode = aolxml::subNodeText(n, "/yp/resp/station/admode", yp2ss.m_stationInfo.m_advertMode);
-                yp2ss.m_stationInfo.m_allowSSL = aolxml::subNodeText(n, "/yp/resp/station/allowssl", -1);
-                yp2ss.m_stationInfo.m_allowMaxBitrate = aolxml::subNodeText(n, "/yp/resp/station/allowmaxbitrate", 0);
-                yp2ss.m_stationInfo.m_allowBackupURL = aolxml::subNodeText(n, "/yp/resp/station/allowbackupurl", -1);
-                yp2ss.m_stationInfo.m_allowAllFormats = aolxml::subNodeText(n, "/yp/resp/station/allowallformats", -1);
-
-				if (q.REQUEST_USR)
-				{
-					ILOG(YP2_LOGNAME "Updating listing details for stream #" + tos(yp2ss.m_streamID) + " succeeded.");
-				}
-
-				// we get notified of updated DNAS via this on add and update (for long running instances)
-				updater::verInfo m_verInfo;
-				updater::getNewVersion(m_verInfo);
-				m_verInfo.ver = aolxml::subNodeText(n, "/yp/resp/dnas/ver", m_verInfo.ver);
-				m_verInfo.url = aolxml::subNodeText(n, "/yp/resp/dnas/url", m_verInfo.url);
-				m_verInfo.log = aolxml::subNodeText(n, "/yp/resp/dnas/log", m_verInfo.log);
-				m_verInfo.info = aolxml::subNodeText(n, "/yp/resp/dnas/info", m_verInfo.info);
-				m_verInfo.message = aolxml::subNodeText(n, "/yp/resp/dnas/msg", m_verInfo.message);
-				m_verInfo.slimmsg = aolxml::subNodeText(n, "/yp/resp/dnas/slim", m_verInfo.slimmsg);
-				updater::setNewVersion(m_verInfo);
-
-				// YP overridable urls for anything to do with metrics, adverts, etc
-				updateDetail(n, "/yp/resp/meu", yp2ss.m_stationInfo.m_metrics_audience_url);
-				updateDetail(n, "/yp/resp/adu", yp2ss.m_stationInfo.m_metrics_adverts_url);
-				updateDetail(n, "/yp/resp/mer", yp2ss.m_stationInfo.m_metrics_reset_url);
-				updateDetail(n, "/yp/resp/aut", yp2ss.m_stationInfo.m_metrics_auth_url);
-				updateDetail(n, "/yp/resp/air", yp2ss.m_stationInfo.m_tunein_air_api_url);
-				updateDetail(n, "/yp/resp/tsu", yp2ss.m_stationInfo.m_targetspot_url);
-
-				// this will ensure that the info from the update
-				// is set asap as this is needed for advert mode.
-				streamData *sd = streamData::accessStream(yp2ss.m_streamID);
-				if (sd)
-				{
-					sd->YP2_updateInfo(yp2ss.m_stationInfo);
-					sd->releaseStream();
-				}
-			}
-		}
-	}
-	catch (const exception &)
-	{
-		m_errorCode = aolxml::subNodeText(n, "/yp/resp/error/code", -1);
-		if (m_errorCode != -1)
-		{
-			m_errorMsg = aolxml::subNodeText(n, "/yp/resp/error/message", (utf8)"");
-			m_errorMsgExtra = aolxml::subNodeText(n, "/yp/resp/error/messagedetail", (utf8)"");
-		}
-		else
-		{
-			m_errorCode = aolxml::subNodeText(n, "/yp/resp/status/statuscode", 400);
-			m_errorMsg = aolxml::subNodeText(n, "/yp/resp/status/statustext", utf8("Generic Error"));
-			m_errorMsgExtra = "";
-		}
-
-		ELOG(YP2_LOGNAME "Updating listing details for stream #" + tos(yp2ss.m_streamID) + " failed. YP2 error code is " +
-						 tos(m_errorCode) + " [" + m_errorMsg + "]");
-		if (!m_errorMsgExtra.empty())
-		{
-			ELOG(YP2_LOGNAME + m_errorMsgExtra);
-		}
-
-		yp2ss.m_addState = UPDATE_FAILED;
-	}
-
-	forget(n);
-}
-
-/*
-	We have a special case if state of ADD_REMOVEISSUED. The streamData object called
-	yp2::remove() while the add was still pending. If we fail, then it doesn't matter, but if
-	we succeed, we have to post the remove command to yp to make sure we clean up after ourselves
-*/
-void yp2::response_add(const request &q, const response &r) throw(exception)
-{
-	yp2SessionKey key = q.REQUEST_KEY;
-
-	serverMap_t::iterator i = m_serverMap.find(key);
-	if (i == m_serverMap.end())
-	{
-		throwEx<runtime_error>("Internal error in " + string(__FUNCTION__) +
-							   " serverMap entry missing for " + logString(key));
-	}
-
-	yp2_server_state &yp2ss = (*i).second;
-	aolxml::node *n = 0;
-
-	try
-	{
-		n = aolxml::node::parse(&(r.m_body[0]),r.m_body.size());
-
-		int code = aolxml::subNodeText(n, "/yp/resp/status/statuscode", 200);
-		utf8 msg = aolxml::subNodeText(n, "/yp/resp/status/statustext", (utf8)"");
-
-		if (code != 200)
-		{
-			throwEx<runtime_error>("Add error. " + logString(key) +
-								   " code=" + tos(code) + " text=" + msg);
-		}
-
-		// success case. Again there are two scenarios. If the serverMap state is ADD_REMOVEISSUED
-		// then remove() was called. We need to repost the remove since yp2::remove() won't actually
-		// issue it when the add has not succeeded. Otherwise, life is normal
-		if (yp2ss.m_addState != ADD_REMOVEISSUED)
-		{
-			aolxml::subNodeTextTHROW(n, "/yp/resp/id", yp2ss.m_serverID);
-			aolxml::subNodeTextTHROW(n, "/yp/resp/stnid", yp2ss.m_stationID);
-
-			yp2ss.m_stationInfo.m_updateFrequency = aolxml::subNodeText(n, "/yp/resp/updatefreq", yp2ss.m_stationInfo.m_updateFrequency);
-			yp2ss.m_stationInfo.m_backupServer = aolxml::subNodeText(n, "/yp/resp/backupserver", (utf8)"");
-			yp2ss.m_stationInfo.m_backupServersList.clear();
-			aolxml::node::nodeList_t nodes = aolxml::node::findNodes(n, "/yp/resp/backupservers/server");
-			if (!nodes.empty())
-			{
-				for (aolxml::node::nodeList_t::iterator b = nodes.begin(); b != nodes.end(); ++b)
-				{
-					yp2ss.m_stationInfo.m_backupServersList.push_back((*b)->pcdata());
-				}
-			}
-			yp2ss.m_stationInfo.m_publicIP = aolxml::subNodeText(n, "/yp/resp/publicip", (utf8)"");
-			aolxml::subNodeTextTHROW(n, "/yp/resp/station/name", yp2ss.m_stationInfo.m_streamTitle);
-			aolxml::subNodeTextTHROW(n, "/yp/resp/station/genre", yp2ss.m_stationInfo.m_streamGenre[0]);
-
-			for (int i = 1; i < 5; i++)
-			{
-				yp2ss.m_stationInfo.m_streamGenre[i] = aolxml::subNodeText(n, "/yp/resp/station/genre" + tos(i + 1), yp2ss.m_stationInfo.m_streamGenre[i]);
-			}
-
-			yp2ss.m_stationInfo.m_streamLogo = aolxml::subNodeText(n, "/yp/resp/station/logo", yp2ss.m_stationInfo.m_streamLogo);
-			yp2ss.m_stationInfo.m_broadcasterURL = aolxml::subNodeText(n, "/yp/resp/station/url", (utf8)"");
-			yp2ss.m_stationInfo.m_radionomyID = aolxml::subNodeText(n, "/yp/resp/station/callsign", (utf8)"");
-			yp2ss.m_stationInfo.m_advertMode = aolxml::subNodeText(n, "/yp/resp/station/admode", yp2ss.m_stationInfo.m_advertMode);
-            yp2ss.m_stationInfo.m_allowSSL = aolxml::subNodeText(n, "/yp/resp/station/allowssl", -1);
-            yp2ss.m_stationInfo.m_allowMaxBitrate = aolxml::subNodeText(n, "/yp/resp/station/allowmaxbitrate", 0);
-            yp2ss.m_stationInfo.m_allowBackupURL = aolxml::subNodeText(n, "/yp/resp/station/allowbackupurl", -1);
-            yp2ss.m_stationInfo.m_allowAllFormats = aolxml::subNodeText(n, "/yp/resp/station/allowallformats", -1);
-
-			int peak = aolxml::subNodeText(n, "/yp/resp/peak", -1);
-			if (peak > 0)
-			{
-				stats::updatePeak(yp2ss.m_streamID, peak);
-			}
-
-			yp2ss.m_addRetries = 0;
-			m_errorCode = 200;
-			m_errorMsg = "";
-			m_errorMsgExtra = "";
-
-			yp2ss.m_addState = ADD_SUCCEEDED;
-			if (q.REQUEST_USR)
-			{
-				ILOG(YP2_LOGNAME "Stream #" + tos(yp2ss.m_streamID) + " has been added to the Shoutcast Directory.");
-			}
-
-			// we get notified of updated DNAS via this on add and update (for long running instances)
-			updater::verInfo m_verInfo;
-			updater::getNewVersion(m_verInfo);
-			m_verInfo.ver = aolxml::subNodeText(n, "/yp/resp/dnas/ver", m_verInfo.ver);
-			m_verInfo.url = aolxml::subNodeText(n, "/yp/resp/dnas/url", m_verInfo.url);
-			m_verInfo.log = aolxml::subNodeText(n, "/yp/resp/dnas/log", m_verInfo.log);
-			m_verInfo.info = aolxml::subNodeText(n, "/yp/resp/dnas/info", m_verInfo.info);
-			m_verInfo.message = aolxml::subNodeText(n, "/yp/resp/dnas/msg", m_verInfo.message);
-			m_verInfo.slimmsg = aolxml::subNodeText(n, "/yp/resp/dnas/slim", m_verInfo.slimmsg);
-			updater::setNewVersion(m_verInfo);
-
-			// YP overridable urls for anything to do with metrics, adverts, etc
-			yp2ss.m_stationInfo.m_metrics_audience_url = aolxml::subNodeText(n, "/yp/resp/meu", (utf8)METRICS_AUDIENCE_URL);
-			yp2ss.m_stationInfo.m_metrics_adverts_url = aolxml::subNodeText(n, "/yp/resp/adu", (utf8)METRICS_ADVERTS_URL);
-			yp2ss.m_stationInfo.m_metrics_reset_url = aolxml::subNodeText(n, "/yp/resp/mer", (utf8)METRICS_RESET_URL);
-			yp2ss.m_stationInfo.m_metrics_auth_url = aolxml::subNodeText(n, "/yp/resp/aut", (utf8)DNAS_AUTH_URL);
-			yp2ss.m_stationInfo.m_targetspot_url = aolxml::subNodeText(n, "/yp/resp/tsu", (utf8)TARGETSPOT_URL);
-
-			// this will ensure that the info from the update
-			// is set asap as this is needed for advert mode.
-			// as well as only doing metrics if the stream is
-			// still determined to be accessible at the time.
-			streamData *sd = streamData::accessStream(yp2ss.m_streamID);
-			if (sd)
-			{
-				metrics::metrics_stream_up (yp2ss.m_streamID, yp2ss.m_stationInfo.m_radionomyID,
-					yp2ss.m_serverID, yp2ss.m_stationInfo.m_publicIP, sd->getStartTime());
-
-				sd->YP2_updateInfo(yp2ss.m_stationInfo);
-				sd->releaseStream();
-			}
-
-			// we use this to look at the existing listeners and if
-			// any have m_group = -1 then we'll 'add' them to the
-			// metrics since they will otherwise not be known about
-			stats::catchPreAddClients(yp2ss.m_streamID);
-		}
-		else
-		{
-			// we're done but have to issue the actual remove command to YP
-			if (!iskilled())
-			{
-				WLOG(YP2_LOGNAME "Remove called while add was pending. Re-issuing remove. " + logString(key));
-			}
-			yp2ss.m_serverID = aolxml::subNodeText(n, "/yp/resp/id", (utf8)"");
-
-			ypInfo info(key, yp2ss.m_streamID, yp2ss.m_authHash);
-			info.peakClientConnections = (size_t)-1;
-			info.maxClientConnections = (size_t)-1;
-			pvt_queue_remove(info);
-		}
-	}
-	catch(const exception &ex)
-	{
-		bool missing = false;
-		utf8 message = ex.what();
-		// skip missing xml response entries to avoid user confusion
-		if (message.rfind(utf8(" missing")) == utf8::npos)
-		{
-			ELOG(string(YP2_LOGNAME) + message);
-		}
-		else
-		{
-			missing = true;
-		}
-
-		// if failure occurs and the state was ADD_REMOVEISSUED, we have to delete the entry from the serverMap
-		if (yp2ss.m_addState == ADD_REMOVEISSUED)
-		{
-			m_serverMap.erase(key);
-			WLOG(YP2_LOGNAME "Remove called while add was pending. Deleting serverMap entry " + logString(key)); 
-		}
-		else
-		{
-			yp2ss.m_addState = ADD_FAILED;
-
-			m_errorCode = aolxml::subNodeText(n, "/yp/resp/error/code", -1);
-			if (m_errorCode != -1)
-			{
-				m_errorMsg = aolxml::subNodeText(n, "/yp/resp/error/message", (utf8)"");
-				m_errorMsgExtra = aolxml::subNodeText(n, "/yp/resp/error/messagedetail", (utf8)"");
-			}
-			else
-			{
-				if (!missing)
-				{
-					m_errorCode = aolxml::subNodeText(n, "/yp/resp/status/statuscode", 400);
-					m_errorMsg = aolxml::subNodeText(n, "/yp/resp/status/statustext", utf8("Generic Error"));
-					m_errorMsgExtra = "";
-				}
-				else
-				{
-					m_errorCode = YP_AUTH_ISSUE_CODE;
-					m_errorMsg = "Required authhash parameter is missing, please contact support to resolve this issue";
-					m_errorMsgExtra = "";
-				}
-			}
-
-			ELOG(YP2_LOGNAME "Stream #" + tos(yp2ss.m_streamID) + " connection attempt " +
-							 (m_errorCode == YP_MAINTENANCE_CODE ? "ignored" : "failed") + ". YP2 error code is " +
-							 tos(m_errorCode) + " [" + m_errorMsg + "]");
-			if (!m_errorMsgExtra.empty())
-			{
-				ELOG(YP2_LOGNAME + m_errorMsgExtra);
-			}
-		}
-	}
-
-	forget(n);
-}
-
-void yp2::gotResponse(const request &q, const response &r) throw(exception)
-{
-	// if we've got a response then clear the pass-through flag
-	gYP2->m_addFailed = false;
-
-	DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " Request " + logString(q.REQUEST_KEY) +
-			  " cmd=" + tos(q.REQUEST_CMD) + eol() + 
-			  "Response body=[" + eol() + r.m_body + "]" +
-			  eol() + "Response code=[" + tos(r.m_resultCode) + "]");
-
-	bandWidth::updateAmount(bandWidth::YP_RECV, r.m_received);
-
-	switch (q.REQUEST_CMD)
-	{
-		case ADD_CMD:
-		{
-			response_add(q, r);
-			break;
-		}
-		case REM_CMD:
-		{
-			response_remove(q, r);
-			break;
-		}
-		case UPD_CMD:
-		{
-			response_update(q, r);
-			break;
-		}
-		case CHECK_AUTH:
-		{
-			// store the response in a sanitised format for when it is then queried
-			authhashMap_t::iterator i = m_authhashMap.find(q.REQUEST_KEY);
-			if (i != m_authhashMap.end())
-			{
-				(*i).second.m_response = r.m_body;
-				(*i).second.m_status = r.m_resultCode;
-				DEBUG_LOG(YP2_LOGNAME + (*i).second.m_response + " " + tos((*i).second.m_status));
-			}
-			break;
-		}
-		case VER_CHECK:
-		{
-			aolxml::node *n = 0;
-
-			try
-			{
-				n = aolxml::node::parse(&(r.m_body[0]), r.m_body.size());
-
-				int code = aolxml::subNodeText(n, "/yp/resp/status/statuscode", 200);
-				utf8 msg = aolxml::subNodeText(n, "/yp/resp/status/statustext", (utf8)"");
-				if (code != 200)
-				{
-					throwEx<runtime_error>("version check error. " + logString(q.REQUEST_KEY) +
-										   " code=" + tos(code) + " text=" + msg);
-				}
-				else
-				{
-					// we get notified of updated DNAS via this on add and update (for long running instances)
-					updater::verInfo m_verInfo;
-					updater::getNewVersion(m_verInfo);
-					m_verInfo.ver = aolxml::subNodeText(n, "/yp/resp/dnas/ver", m_verInfo.ver);
-					m_verInfo.url = aolxml::subNodeText(n, "/yp/resp/dnas/url", m_verInfo.url);
-					m_verInfo.log = aolxml::subNodeText(n, "/yp/resp/dnas/log", m_verInfo.log);
-					m_verInfo.info = aolxml::subNodeText(n, "/yp/resp/dnas/info", m_verInfo.info);
-					m_verInfo.message = aolxml::subNodeText(n, "/yp/resp/dnas/msg", m_verInfo.message);
-					m_verInfo.slimmsg = aolxml::subNodeText(n, "/yp/resp/dnas/slim", m_verInfo.slimmsg);
-					updater::setNewVersion(m_verInfo);
-				}
-			}
-			catch(const exception &)
-			{
-			}
-
-			forget(n);
-			break;
-			{
-			}
-
-			forget(n);
-			break;
-		}
-		default:
-		{
-			ELOG(YP2_LOGNAME "Internal error. Unknown cmd value in response (" + tos(q.REQUEST_CMD) + ")");
-			break;
-		}
-	}
-}
-
-void yp2::gotFailure(const request &q) throw(exception)
-{
-	DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " Request " +
-			  logString(q.REQUEST_KEY) + " cmd=" + tos(q.REQUEST_CMD));
-
-	bandWidth::updateAmount(bandWidth::YP_RECV, q.m_received);
-
-	switch (q.REQUEST_CMD)
-	{
-		case ADD_CMD:
-		case REM_CMD:
-		case UPD_CMD:
-		{
-			gYP2->m_errorCode = -1;
-			gYP2->m_addFailed = true;
-			break;
-		}
-		case CHECK_AUTH:
-		{
-			// we cannot assume we got anything back in the request if it failed
-			// so if we've got a pending action then we need to get it cancelled
-			// and direct people to the log for the cause as too messy otherwise
-			authhashMap_t::iterator i = m_authhashMap.find(q.REQUEST_KEY);
-			if (i != m_authhashMap.end())
-			{
-				(*i).second.m_response = utf8("Unable to process the request. Check the server logs for more details.");
-				(*i).second.m_status = 669;
-				DEBUG_LOG(YP2_LOGNAME + (*i).second.m_response + " " + tos((*i).second.m_status));
-			}
-			break;
-		}
-		default:
-		{
-			ELOG(YP2_LOGNAME "Internal error. Unknown cmd value in response (" + tos(q.REQUEST_CMD) + ")");
-			break;
-		}
-	}
-}
-
-yp2::yp2SessionKey yp2::add(ypInfo& info, const int creating) throw()
-{
-	stackLock sml(g_YP2Lock);
-
-	yp2SessionKey result = INVALID_SESSION_KEY;
-
-	try
-	{
-		// abort asap if there is no authhash present
-		if (info.authhash.empty())
-		{
-			if (gYP2 && !gYP2->m_ignoreAdd)
-			{
-				gYP2->m_ignoreAdd = true;
-				throwEx<runtime_error>((creating == 2 ? "Manual authhash creation for stream #" +
-									   tos(info.sid) + " is required. Aborting listing the "
-									   "stream in the Shoutcast Directory." : "No authhash "
-									   "specified for stream #" + tos(info.sid) + ". Aborting "
-									   "listing the stream in the Shoutcast Directory. "));
-			}
-		}
-		else if (!isValidAuthhash(info.authhash))
-		{
-			if (gYP2 && !gYP2->m_ignoreAdd)
-			{
-				gYP2->m_ignoreAdd = true;
-				throwEx<runtime_error>("Invalid authhash specified for stream #" + tos(info.sid) +
-									   ". Aborting listing the stream in the Shoutcast Directory.");
-			}
-		}
-		else
-		{
-			if (gYP2)
-			{
-				gYP2->m_ignoreAdd = false;
-			}
-		}
-
-		if (!iskilled() && gYP2 && !gYP2->m_ignoreAdd)
-		{
-			result = gYP2->pvt_add(info);
-		}
-	}
-	catch(const exception &ex)
-	{
-		ELOG(string(YP2_LOGNAME) + ex.what());
-	}
-	return result;
-}
-
-void yp2::remove(ypInfo& info) throw()
-{
-	stackLock sml(g_YP2Lock);
-
-	try
-	{
-		if (gYP2)
-		{
-			gYP2->pvt_remove(info);
-		}
-	}
-	catch(const exception &ex)
-	{
-		ELOG(string(YP2_LOGNAME) + ex.what());
-	}
-}
-
-yp2::updateResult yp2::update(ypInfo& info)
-{
-	stackLock sml(g_YP2Lock);
-
-	yp2::updateResult result;
-	result.m_maxYPInterval = gOptions.ypReportInterval();
-	try
-	{
-		if (gYP2)
-		{
-			result = gYP2->pvt_update(info);
-		}
-	}
-	catch(const exception &ex)
-	{
-		ELOG(string(YP2_LOGNAME) + ex.what());
-	}
-	return result;
-}
-
-yp2::addState_t yp2::addStatus(yp2SessionKey key, int &addFailIgnore, int &errorCode) throw()
-{
-	stackLock sml(g_YP2Lock);
-
-	return (gYP2 ? gYP2->pvt_addStatus(key, addFailIgnore, errorCode) : ADD_NONE);
-}
-
-void yp2::pvt_runAuthHashAction(const uniString::utf8 &tempId, const int action,
-							    const uniString::utf8 &urlPath,
-							    const httpHeaderMap_t &queryParameters,
-								const uniString::utf8 &content) throw()
-{
-	int actionId = tempId.toInt();
-	yp2::authhashResult authhash;
-	authhash.m_action = action;
-	m_authhashMap[actionId] = authhash;
-
-	webClient::request r;
-	r.m_method = webClient::request::POST;
-	r.m_addr = gOptions.ypAddr();
-	r.m_port = gOptions.ypPort();
-	// adjust the YP path if using non-standard urls so authhash ones work
-	r.m_path = ((gOptions.ypPath() != utf8("/yp2")) ? "/yp" : "") + urlPath;
-	r.m_queryVariables = queryParameters;
-	r.REQUEST_KEY = actionId;
-	r.REQUEST_CMD = action;
-
-	if (!content.empty())
-	{
-		r.m_content.insert(r.m_content.end(), content.begin(), content.end());
-	}
-
-	DEBUG_LOG(YP2_LOGNAME + string(__FUNCTION__) + " Request " +
-			  logString(r.REQUEST_KEY) + " cmd=" + tos(r.REQUEST_CMD));
-
-	updateYPBandWidthSent(r);
-	queueRequest(r);
-}
-
-void yp2::runAuthHashAction(const uniString::utf8 &tempId, const int action,
-						    const uniString::utf8 &urlPath,
-							const httpHeaderMap_t &queryParameters,
-							const uniString::utf8 &content) throw()
-{
-	stackLock sml(g_YP2Lock);
-
-	try
-	{
-		if (gYP2 && !queryParameters.empty() && !tempId.empty())
-		{
-			gYP2->pvt_runAuthHashAction(tempId, action, urlPath, queryParameters, content);
-		}
-	}
-	catch(const exception &ex)
-	{
-		ELOG(string(YP2_LOGNAME) + ex.what());
-	}
-}
-
-bool yp2::pvt_authHashActionStatus(const uniString::utf8& tempId, authhashResult &info, const bool remove) throw()
-{
-	if (!tempId.empty())
-	{
-		size_t actionId = tempId.toInt();
-		authhashMap_t::const_iterator i = m_authhashMap.find(actionId);
-		if (i != m_authhashMap.end())
-		{
-			// copy to the passed structure
-			info = (*i).second;
-			// and then remove from the map
-			if(remove)
-			{
-				m_authhashMap.erase(actionId);
-			}
-			return true;
-		}
-	}
-	return false;
-}
-
-bool yp2::authHashActionStatus(const uniString::utf8& tempId, authhashResult &info, const bool remove) throw()
-{
-	stackLock sml(g_YP2Lock);
-
-	return (gYP2 ? gYP2->pvt_authHashActionStatus(tempId, info, remove) : false);
-}
-
-bool yp2::isValidAuthhash(uniString::utf8 authhash)
-{
-    if (authhash.empty() || (authhash.size() != 20 && authhash.size() != 36))
-        return false;
-
-    // check the authhash only contains
-    int n = -1;
-    const char *s = (char*)authhash.c_str();
-    if (sscanf (s, "%*36[a-fA-F0-9-]%n", &n) == 0 && n == 36 && s[36] == '\0')      // match 36-char GUID only
-        return true;
-    if (sscanf (s, "%*20[a-zA-Z0-9]%n", &n) == 0 && n == 20 && s[20] == '\0')       // match 20-char Hash only
-        return true;
-    return false;
-}
-
-int yp2::pvt_getSrvID(yp2SessionKey key) throw()
-{
-	stackLock sml(m_serverMapLock);
-
-	serverMap_t::const_iterator i = m_serverMap.find(key);
-	return (i != m_serverMap.end() ? (*i).second.m_serverID.toInt() : 0);
-}
-
-int yp2::getSrvID(yp2SessionKey key) throw()
-{
-	stackLock sml(g_YP2Lock);
-
-	return (gYP2 ? gYP2->pvt_getSrvID(key) : 0);
-}
-
-int yp2::pvt_getStnID(yp2SessionKey key) throw()
-{
-	stackLock sml(m_serverMapLock);
-
-	serverMap_t::const_iterator i = m_serverMap.find(key);
-	return (i != m_serverMap.end() ? (*i).second.m_stationID.toInt() : 0);
-}
-
-int yp2::getStnID(yp2SessionKey key) throw()
-{
-	stackLock sml(g_YP2Lock);
-
-	return (gYP2 ? gYP2->pvt_getStnID(key) : 0);
-}
diff --git a/Src/Plugins/DSP/sc_serv3/yp2.h b/Src/Plugins/DSP/sc_serv3/yp2.h
deleted file mode 100644
index d0111d94..00000000
--- a/Src/Plugins/DSP/sc_serv3/yp2.h
+++ /dev/null
@@ -1,270 +0,0 @@
-#pragma once
-#ifndef yp2_H_
-#define yp2_H_
-
-#include "webClient.h"
-
-/*
-	The operational model for yp2 is somewhat different from that of yp1.
-	In yp1, there is no reason for the core of sc_serv to wait for result. The
-	only bit of information that is truly required for correct operation is the serverID
-	returned by addserv in yp1. This, however, is handled internally by the code dealing with
-	yp1 since any subsequent yp requests cannot be cleared until the addsrv succeeds and the
-	serverID is obtained.
-	
-	In yp2, the actual streaming to the client cannot proceed until the addition of the server
-	is complete, since some information like stream title and genre must be obtained from the
-	database. Therefore, we need to build some sort of waiting mechanism, but one that obviously
-	does not block processing since the responses from yp2 may not come as fast as required for
-	code that blocks.
-
-*/
-
-#define YP2_LOGNAME "[YP] "
-#define YP_MAINTENANCE_CODE 503
-#define YP_AUTH_ISSUE_CODE 123
-#define YP_NOT_VISIBLE 480
-#define YP_COMMS_FAILURE -1
-
-class yp2: public webClient
-{
-public:
-	// stationInfo data gets returned from YP in response to "add" request
-	struct stationInfo
-	{
-		int				m_updateFrequency;
-		int				m_advertMode;
-        int             m_allowSSL;
-        int             m_allowAllFormats;
-        int             m_allowMaxBitrate;
-        int             m_allowBackupURL;
-        int             m_responseCode;
-        uniString::utf8 m_stationID;
-        uniString::utf8 m_serverID;
-		uniString::utf8	m_streamTitle;
-		uniString::utf8 m_streamGenre[5];
-		uniString::utf8 m_streamLogo;
-		uniString::utf8	m_radionomyID;
-		uniString::utf8	m_advertType;
-		uniString::utf8	m_advertTrigger;
-		uniString::utf8	m_metrics_audience_url;
-		uniString::utf8	m_metrics_adverts_url;
-		uniString::utf8	m_metrics_reset_url;
-		uniString::utf8	m_metrics_auth_url;
-		uniString::utf8	m_tunein_air_api_url;
-		uniString::utf8	m_targetspot_url;
-		uniString::utf8	m_broadcasterURL;
-		uniString::utf8	m_backupServer;
-		std::vector<uniString::utf8> m_backupServersList;
-		uniString::utf8	m_publicIP;
-
-		uniString::utf8 logString() const throw()
-		{
-			return "title=" + m_streamTitle + " genre=" + m_streamGenre[0] +
-				   " genre2=" + m_streamGenre[1] + " genre3=" + m_streamGenre[2] +
-				   " genre4=" + m_streamGenre[3] + " genre5=" + m_streamGenre[4] +
-				   " logo=" + m_streamLogo;
-		}
-		stationInfo() throw();
-	};
-
-	typedef unsigned yp2SessionKey;
-	static const yp2SessionKey INVALID_SESSION_KEY=0;
-
-	static uniString::utf8 logString(const yp2SessionKey &key) throw();
-
-	enum addState_t
-	{ 
-		ADD_NONE = 0,
-		ADD_PENDING = 1,
-		ADD_SUCCEEDED = 2,
-		ADD_FAILED = 3,
-		ADD_REMOVEISSUED = 4, // we issued a remove
-		UPDATE_FAILED = 5
-	};
-
-	struct ypInfo
-	{
-		yp2SessionKey key;
-
-		bool streamPublic;
-		bool streamArtwork;
-		bool playingArtwork;
-		bool vbr;
-
-		size_t sid;
-		uniString::utf8 authhash;
-
-		int bitrate;
-		int samplerate;
-		uniString::utf8 mimeType;
-		uniString::utf8 relayURL;
-
-		size_t peakClientConnections;
-		size_t maxClientConnections;
-
-		size_t numListeners;									// update only
-		size_t numUniqueListeners;								// update only
-		time_t avgUserListenTime;								// update only
-		time_t streamStartTime;
-		size_t numberOfClientsConnectedMoreThanFiveMinutes;		// update only
-		size_t numberOfClientConnectsSinceLastUpdate;			// update only
-
-		uniString::utf8 songMetadataForYP2;
-		uniString::utf8 sourceIdent;
-		uniString::utf8 sourceUser;
-
-		ypInfo(const yp2SessionKey _key, const size_t _sid, const uniString::utf8& _authhash,
-			   const bool _vbr = false, const bool _streamPublic = true,
-			   const bool _streamArtwork = false, const bool _playingArtwork = false) :
-				key(_key), streamPublic(_streamPublic), streamArtwork(_streamArtwork),
-				playingArtwork(_playingArtwork), vbr(_vbr), sid(_sid),
-				authhash(_authhash), bitrate(0), samplerate(0),
-				peakClientConnections(0), maxClientConnections(0),
-				numListeners(0), numUniqueListeners(0), avgUserListenTime(0),
-				numberOfClientsConnectedMoreThanFiveMinutes(0),
-				numberOfClientConnectsSinceLastUpdate(0) { streamStartTime = 0; }
-	};
-
-	typedef enum
-	{ 
-		CREATE_AUTH = 3,
-		CHECK_AUTH = 4,
-		UPDATE_AUTH = 5,
-		//REMOVE_AUTH = 6,
-		ALLOW_AUTH = 7,
-		VER_CHECK = 8
-	} authMethodState_t;
-
-	// function result from call to update	
-	struct updateResult
-	{
-		int	m_maxYPInterval;	// touch interval if no title change
-		int	m_requestQueued;	// if false, then "add" has not finished so this request was ignored
-
-		updateResult() throw() : m_maxYPInterval(0), m_requestQueued(0) {}
-	};
-
-	// structures for handling the authhash management requests
-	struct authhashResult
-	{
-		int				m_action;	// action - create, check, update, remove
-		int				m_restart;	// should we restart the stream
-		size_t			m_status;	// status code from response
-		uniString::utf8	m_response;	// response body back from the YP request
-
-		authhashResult() throw() : m_action(0), m_restart(0), m_status(0), m_response("") {}
-	};
-
-	typedef std::map<size_t, authhashResult> authhashMap_t;
-	authhashMap_t m_authhashMap;
-
-private:
-	struct yp2_server_state
-	{
-		yp2::stationInfo	m_stationInfo;
-
-		yp2SessionKey		m_sessionKey;
-
-		addState_t			m_addState;
-
-		uniString::utf8		m_serverID;	// as assigne by YP
-		uniString::utf8		m_stationID; // as assigne by YP
-
-		uniString::utf8		m_authHash; // needed for reposting removes
-
-		size_t				m_streamID;
-
-		time_t				m_lastOperationTime; // for error delays
-
-		webClient::request	m_lastRequest;	// keep a copy of the last request incase it needs to be resent
-
-		size_t				m_addRetries;
-
-		yp2_server_state() : m_sessionKey(INVALID_SESSION_KEY), m_addState(ADD_NONE), m_streamID(1), m_lastOperationTime(0), m_addRetries(0) {}
-		explicit yp2_server_state(const yp2SessionKey &key) : m_sessionKey(key), m_addState(ADD_NONE), m_streamID(1), m_lastOperationTime(0), m_addRetries(0) {}
-
-		uniString::utf8 logString() const throw()
-		{
-			return yp2::logString(m_sessionKey) + " state=" + stringUtil::tos((int)m_addState) + " serverId=" + m_serverID + " " + m_stationInfo.logString();
-		}
-	};
-
-	yp2SessionKey m_sessionKeyCounter;
-	int m_errorCode; // keeps a copy of the last YP response code (good or bad)
-
-	typedef std::map<yp2SessionKey,yp2_server_state> serverMap_t;
-	serverMap_t	m_serverMap;
-	uniString::utf8 m_errorMsg;
-	uniString::utf8 m_errorMsgExtra;
-
-	AOL_namespace::mutex	m_serverMapLock;
-
-	bool m_addFailed;
-	bool m_ignoreAdd;
-
-	virtual void gotResponse(const request &q, const response &r) throw(std::exception);
-	virtual	void gotFailure(const request &q) throw(std::exception);
-
-	void response_add(const request &q, const response &r) throw(std::exception);
-	void response_remove(const request &q, const response &r) throw(std::exception);
-	void response_update(const request &q, const response &r) throw(std::exception);
-
-	void getAddUpdateBody(webClient::request& r, const ypInfo& info, const bool update) throw();
-
-	yp2SessionKey pvt_add(ypInfo& info) throw(std::exception);
-
-	void pvt_queue_remove(const ypInfo& info) throw();
-
-	void pvt_remove(ypInfo& info) throw(std::exception);
-
-	updateResult pvt_update(const ypInfo& info) throw(std::exception);
-
-	addState_t pvt_addStatus(yp2SessionKey key, int &addFailIgnore, int &errorCode) throw();
-
-	virtual uniString::utf8 name() const throw() { return "yp2"; }
-
-	void pvt_runAuthHashAction(const uniString::utf8 &tempId, const int action,
-							   const uniString::utf8 &urlPath,
-							   const httpHeaderMap_t &queryParameters,
-							   const uniString::utf8 &content) throw();
-
-	bool pvt_authHashActionStatus(const uniString::utf8 &tempId, authhashResult &info, const bool remove) throw();
-
-	int pvt_getSrvID(yp2SessionKey key) throw();
-	int pvt_getStnID(yp2SessionKey key) throw();
-
-	static void updateYPBandWidthSent(webClient::request r) throw();
-
-public:
-	yp2() throw();
-	~yp2() throw();
-
-	// return new key if yp2_server_state_key == YP2_UNDEFINED_SERVER_STATE_KEY
-	static yp2SessionKey add(ypInfo& info, const int creating) throw();
-
-	// return true if add has succeeded
-	static addState_t addStatus(yp2SessionKey key, int &addFailIgnore, int &errorCode) throw();
-
-	static void remove(ypInfo& info) throw();
-
-	static updateResult update(ypInfo& info);
-
-	// used in main during shutdown to wait for request queue to clear out
-	static size_t requestsInQueue() throw();
-
-	// used for managing authhashes within the dnas
-	static void runAuthHashAction(const uniString::utf8 &tempId, const int action,
-								  const uniString::utf8 &urlPath,
-								  const httpHeaderMap_t &queryParameters,
-								  const uniString::utf8 &content = "") throw();
-
-	static bool authHashActionStatus(const uniString::utf8& tempId, authhashResult &info, bool remove) throw();
-
-	static bool isValidAuthhash(uniString::utf8 authhash);
-
-	static int getSrvID(yp2SessionKey key) throw();
-	static int getStnID(yp2SessionKey key) throw();
-};
-	
-#endif